Перейти к контенту

[2.3.x]Морфологическая обработка числительных


DINI

Рекомендуемые сообщения

DINI:

Хочу внести свою лепту :D

Можно добавить в мод такую "фичу" (правда это уже немного не относится к числительным):

Файл sources/action_public/calendar.php

В функции get_mini_calendar($month, $year) текст:

$cal_output .= $this->ipsclass->compiled_templates['skin_calendar']->mini_cal_day_bit( substr($day,0,1) );

Заменить на:

	  if( ( $this->member['id'] and $this->member['language'] == 2 ) or ( !$this->member['id'] and $this->vars['default_language'] == 2 ) )
  {
		$ShDay = array ('Понедельник' => 'Пн', 'Вторник' => 'Вт', 'Среда' => 'Ср', 'Четверг' => 'Чт', 'Пятница' => 'Пт', 'Суббота' => 'Сб', 'Воскресенье' => 'Вс');
		$cal_output .= $this->ipsclass->compiled_templates['skin_calendar']->mini_cal_day_bit($ShDay[$day]);
	unset($ShDay);
  } else {
	$cal_output .= $this->ipsclass->compiled_templates['skin_calendar']->mini_cal_day_bit( substr($day,0,1) );
  }

При этом названия дней недели в файле cashe/lang_cashe/lang_global.php должны иметь вид:

$lang['D_0']					= "Воскресенье";
$lang['D_1']					= "Понедельник";
$lang['D_2']					= "Вторник";
$lang['D_3']					= "Среда";
$lang['D_4']					= "Четверг";
$lang['D_5']					= "Пятница";
$lang['D_6']					= "Суббота";

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 113
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Загружено фотографий

Не уверен, что эта фича действительно имеет отношение к моду. Но ничего против не имею :D

 

Единственное, что мне не понятно, так это смысл изменений. Судя по всему, новый код позволяет выводить сокращенные названия дней недели всместо полных. Но зачем это надо?

Ссылка на комментарий
Поделиться на других сайтах

Нет, идея несколько в другом :D

Без этого изменения в Календаре (может быть и ещё где-то, я не уверен) в текущем месяце названия дней недели отображаются полностью "Понедельник", "Вторник" и т.д., а вот в соседних месяцах - сокращенные, т.е. "П", "В", "С". В официальном варианте перевода для IPB 2.1.6 они отображаются ещё веселее: "Пон", "Вто", "Сре" и т.п., т.к. в calendar.php заменяемая строка в их версии выглядит так:

$cal_output .= $this->ipsclass->compiled_templates['skin_calendar']->mini_cal_day_bit( substr($day,0,3) );

А это изменение отображает общепринятые сокращения дней недели для русского языка номальным образом.

Только я ещё не придумал, как привязать его к Morph - в принципе, оно может быть использовано и отдельно ;)

 

Кстати, будут ли обновлены инструкции по установке Morph для модификации Who Was Online (d1pro) под IPB 2.1.x?

 

Пардон, совсем забыл сказать - это изменение я делал под IPB 2.1.x, как нужно будет заменять код в других версиях я не знаю :)

Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

Для тех, кто использует блоги.

 

Правим файл

modules/blog/lib/lib_blogfunctions.php

Найти:

			$msg_data['TEXT'] = sprintf( $this->ipsclass->lang['msg_new'], $this->ipsclass->member['new_msg']);

Ниже добавить:

			if( ( $this->ipsclass->member['id'] and $this->ipsclass->member['language'] == 'en' ) or ( !$this->ipsclass->member['id'] and $this->ipsclass->vars['default_language'] == 'en' ) )
		{
			require_once( ROOT_PATH.'sources/action_public/morph.php' );
			$morph = new morph;
			$morph->ipsclass =& $this->ipsclass;

			$msg_data['TEXT'] = $morph->pms( $this->ipsclass->member['new_msg'], $msg_data['TEXT'] );
		}

Ссылка на комментарий
Поделиться на других сайтах

Кстати, будут ли обновлены инструкции по установке Morph для модификации Who Was Online (d1pro) под IPB 2.1.x?
Вряд ли, т.к. этот мод я забросил. Если будет время и желание им заняться, то тогда напишу инструкции под новую версию...

 

Vabank, поясните мне, непонятливому: зачем применять мод для английского языка (судя по приведенному Вами коду, работать он будет именно для английского, а не русского языка)?

Ссылка на комментарий
Поделиться на других сайтах

Vabank, поясните мне, непонятливому: зачем применять мод для английского языка (судя по приведенному Вами коду, работать он будет именно для английского, а не русского языка)?

Попробую объяснить я :D

У многих русификация форума установлена просто путём замены соответствующих файлов в папке cashe/lang_cashe/en

У меня, например, другой случай: русский - единственный язык форума и стоит по умолчанию (т.е. vars['default_language'] == 0, member['language'] == 0).

Ссылка на комментарий
Поделиться на других сайтах

Vabank, поясните мне, непонятливому: зачем применять мод для английского языка (судя по приведенному Вами коду, работать он будет именно для английского, а не русского языка)?

Конечно название папки должно быть 'ru', либо таким, в которой лежат файлы для русского языка.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

у меня 2.1.4

 

поставил все...

 

получается вот такое..

 

 

0 <#guests#>, 1 <#users#> и 0 <#anon#>

 

это при заходе на форум..

 

прошу сильно не бить... :D

Ссылка на комментарий
Поделиться на других сайтах

Ответов может быть только два:

1. Указана неверная папка для русского языка.

2. Неверно отредактированы файлы.

Ссылка на комментарий
Поделиться на других сайтах

папка 'ru' ... возможно второй вариант..

 

 

менять ведь нужно в этом месте ? правильно ?

 

'topic_attach' => '<#attaches#> (показать список)',

 

=============

 

У меня почему-то ленг фалы полубитые...

 

'guests'					=>	"<#guests#>",
'posts'					=>	"сообщений",
'total_of'					=>	"всего",
'browser_user_list'					=>	"Полный список",

forum_leader					=>	"Модераторы: ",
birth_user					=>	"пользователь празднует свой день рождения",
forum_users					=>	"Пользователей в этом форуме",
forums					=>	"Форумов",

 

во многих местах нет одинарных кавычек... :D

 

это нормально ? ;):)

Ссылка на комментарий
Поделиться на других сайтах

Отсутствие одинарных кавычек в объявлении индекса - это нормально (происходит от лени программиста), в значении индекса - уже нет :-)

Проблема в другом - в редактировании файлов. Попробуй писать не

vars['default_language'] == 'ru', member['language'] == 'ru'

а

vars['default_language'] == N, member['language'] == N

где N - цифра, перепробуй от 0 до 3 :-)

Например если что-то начнет отображаться при

if( ( $this->member['id'] and $this->member['language'] == 1 ) or ( !$this->member['id'] and $this->vars['default_language'] == 1 ) )

то в остальных случаях тоже пиши единицу

Ссылка на комментарий
Поделиться на других сайтах

Отсутствие одинарных кавычек в объявлении индекса - это нормально (происходит от лени программиста)
Попрошу без намеков. В оригинальных файлах все кавычки присутствуют ;)

Update: Пардон, только сейчас дошло, что речь идет не о моих ланг. файлах :D

 

я понять не могу.. цифру 2 нужно менять везде, где она предстает в таком виде как в инструкции ?
Цитата из инструкции:
//=======================================================================

// ВНИМАНИЕ!

//

// В инструкции папка с файлами русского языка имеет название '2'. Такое название присваивается папке

// по умолчанию при добавлении нового языка в Admin CP.

// Пожалуйста, удостоверьтесь, что название вашей папки соответствует названию папки в данной инструкции.

//

// Если ваша папка имеет другое название, при редактировании файлов вам необходимо будет заменять цифру 2

// на название вашей папки в следующих местах:

// -----------------------------------------------

// $ibforums->member['language'] == 2

// $ibforums->vars['default_language'] == 2

// -----------------------------------------------

// Название папки, если оно не является цифрой, НЕОБХОДИМО УКАЗЫВАТЬ В ОДИНАРНЫХ КАВЫЧКАХ.

//

// ПРИМЕР: Ваша папка называется 'ru'.

// В указанных выше местах после замены названия папки должно получиться следующее:

// -----------------------------------------------

// $ibforums->member['language'] == 'ru'

// $ibforums->vars['default_language'] == 'ru'

// -----------------------------------------------

// Обратите внимание на наличие кавычек, в которые заключено название папки!

//

//============================================================================

Тыкните, пожалуйста, пальцем, что здесь не понятно? Изменено пользователем DINI
Ссылка на комментарий
Поделиться на других сайтах

как идиот заменял одну цифру с 1 до 3 ... в результате фиг!

 

про ноль молчу.. :D

 

Update: Пардон, только сейчас дошло, что речь идет не о моих ланг. файлах :)

 

вот именно =)

 

может быть из-за этого у меня проблемы ?

 

когда у меня была версия 2.1.3 я ставил старый морф, все прекрасно работало.

 

вместо 2 стоял 'ru'

 

Вот то, что сейчас видно на форуме. ;)

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 

Я понял в чем дело!!!

 

У меня стоит 2 мода. Репа и этот.

 

так вот, если заглянуть в файл profile.php , то можно обнаружить, что после одной и той же строчки идут сразу 2 кода.

 

пример:

 

$info['posts'] = $this->ipsclass->do_number_format($info['posts']);

 

в обоих модах НУЖНО прописать код сразу под этой строкой.

 

if( ( $this->ipsclass->member['id'] and $this->ipsclass->member['language'] == 3 ) or ( !$this->ipsclass->member['id'] and $this->ipsclass->vars['default_language'] == 3 ) )
{
	require_once( ROOT_PATH.'sources/action_public/morph.php' );
	$morph = new morph;
	$morph->ipsclass =& $this->ipsclass;

	$this->ipsclass->lang['fav_posts'] = $morph->posts_fav( $info['fav_posts'], $this->ipsclass->lang['fav_posts'] );
	$this->ipsclass->lang['posts_per_day'] = $morph->posts_day( $info['posts_day'], $this->ipsclass->lang['posts_per_day'] );
}

 

для этого мода

 

и

 

//-----------------------------------------
		// Reputation
		//-----------------------------------------

		$info['reputation_text'] = $this->ipsclass->lang['reputation'];
		if (($this->ipsclass->member['id'] != $member['id']) && ($this->ipsclass->member['posts'] >= $this->ipsclass->vars['rep_posts']))
		{
			$info['reputation_minus'] = "<a href='java script:rep_change_window_open(\"{$this->ipsclass->base_url}act=rep&type=win_minus&mid={$member['id']}\");' title='{$this->ipsclass->lang['rep_dec']}'>{$this->ipsclass->lang['minus']}</a>";
			$info['reputation_add'] = "<a href='java script:rep_change_window_open(\"{$this->ipsclass->base_url}act=rep&type=win_add&mid={$member['id']}\");' title='{$this->ipsclass->lang['rep_inc']}'>{$this->ipsclass->lang['plus']}</a>";
		}
		else
		{
			$info['reputation_minus'] = "{$this->ipsclass->lang['minus_disabled']}";
			$info['reputation_add'] = "{$this->ipsclass->lang['plus_disabled']}";
		}
		$info['reputation_scores'] = "<a href='{$this->ipsclass->base_url}act=rep&type=history&mid={$member['id']}' title='{$this->ipsclass->lang['view_rep']}'>{$member['reputation']}</a>";

 

для репы...

 

объясните что за нах ? и как быть чтобы работало все?!?!?!

 

у меня из-за морфо мода слетела репутация.. :)

 

Уберите автодобавление в один пост! в течении суток... или сколько у вас там часов стоит...

Ссылка на комментарий
Поделиться на других сайтах

объясните что за нах ? и как быть чтобы работало все?!?!?!

у меня из-за морфо мода слетела репутация..

 

Я тестировал Morph вместе с Extended Rep. System и ещё десятком других хаков на IPB 2.1.6 и 2.1.7. Могу уверенно сказать, что все вместе работало отлично и устанавливалось с первого раза. Только Morph у меня полностью заработал не сразу - по причине моей лени :D - была такая же ситуация, как на вашем скриншоте. Когда я поставил vars['default_language'] == 0, member['language'] == 0, заработал и он. Репутация и другие хаки от этого не слетали.

В profile.php код Morph'а идет сразу ПОСЛЕ кода из хака репутации.

Ссылка на комментарий
Поделиться на других сайтах

объясните что за нах ? и как быть чтобы работало все?!?!?!

у меня из-за морфо мода слетела репутация..

 

Я тестировал Morph вместе с Extended Rep. System и ещё десятком других хаков на IPB 2.1.6 и 2.1.7. Могу уверенно сказать, что все вместе работало отлично и устанавливалось с первого раза. Только Morph у меня полностью заработал не сразу - по причине моей лени :D - была такая же ситуация, как на вашем скриншоте. Когда я поставил vars['default_language'] == 0, member['language'] == 0, заработал и он. Репутация и другие хаки от этого не слетали.

В profile.php код Morph'а идет сразу ПОСЛЕ кода из хака репутации.

 

ага. вот оно как... ок , попробую.

Ссылка на комментарий
Поделиться на других сайтах

Vabank, поясните мне, непонятливому: зачем применять мод для английского языка (судя по приведенному Вами коду, работать он будет именно для английского, а не русского языка)?

Попробую объяснить я ;)

У многих русификация форума установлена просто путём замены соответствующих файлов в папке cashe/lang_cashe/en

У меня, например, другой случай: русский - единственный язык форума и стоит по умолчанию (т.е. vars['default_language'] == 0, member['language'] == 0).

 

+1 :D

 

Действительно! все пашет! :)

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Огромное спасибо за модуль, все поставил и все заработало.

Только вот у меня один вопрос есть. У тебя в мануале написано

Измените строку с идентификатором 'total_word_string' на следующую:
-----------------

На конференции <b><#posts#></b> <#messages#><br /><#registered#> <b><#reg#></b> <#users#><br />Приветствуем новичка по имени <b><a href='<#link#>'><#mem#></a></b>

А уменя нет такого, я просто ставил модуль какойто и у меня теперь так

$lang['total_word_string'] =  <<<EOF
<div style="border-bottom: 1px solid #FFF; padding-bottom: 6px; margin-bottom: 3px;">
<table cellspacing=0 cellpadding=0 border=0><tr><td class="nopad"><img src='html/forumstats/topics.jpg' alt='' style="vertical-align: top;" title="статистика по новым темам" /></td><td>Топиков<br /><b><#topics#></b></td><td> </td><td class="nopad"><img src='html/forumstats/posts.jpg' alt=''  style="vertical-align: top;" title="статистика по сообщениям" /></td><td>Сообщений<br /><b><#posts#></b></td><td> </td><td class="nopad"><img src='html/forumstats/members.jpg' border=0 alt='' style="vertical-align: top;" title="статистика по регистрациям" /></td><td>Пользователей<br /><b><#reg#></b></td></tr></table>
</div>
Приветствуем новичка, <b><a href='<#link#>'><#mem#></a></b>
EOF;

Как мне сделать чтобы и тут тоже работал твой модуль?

Заранее спасибо за помощь.

Ссылка на комментарий
Поделиться на других сайтах

Здесь можно поставить на обработку только количество тем, сообщений и пользователей:
$lang['total_word_string'] =  <<<EOF
<div style="border-bottom: 1px solid #FFF; padding-bottom: 6px; margin-bottom: 3px;">
<table cellspacing=0 cellpadding=0 border=0><tr><td class="nopad"><img src='html/forumstats/topics.jpg' alt='' style="vertical-align: top;" title="статистика по новым темам" /></td><td>Топиков<br /><b><#topics#></b></td><td> </td><td class="nopad"><img src='html/forumstats/posts.jpg' alt=''  style="vertical-align: top;" title="статистика по сообщениям" /></td><td><b><#posts#></b> <#messages#></td><td> </td><td class="nopad"><img src='html/forumstats/members.jpg' border=0 alt='' style="vertical-align: top;" title="статистика по регистрациям" /></td><#registered#> <b><#reg#></b> <#users#></td></tr></table>
</div>
Приветствуем новичка, <b><a href='<#link#>'><#mem#></a></b>
EOF;

Количество тем обрабатываться не будет. Также немного изменится внешний вид таблицы со статистикой...

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
можно вопрос, нет ли случайно изменений в коде для mjournal 2.0.7
У мода нет поддержки mjournal.
Ссылка на комментарий
Поделиться на других сайтах

  • 5 недель спустя...

Поставил для 2.1.7 - вроде все ок, однако пропущена настройка в lang_global

$lang['time_seconds_ago']  = "%s секунд назад";

Также загадочным оказался файл Fix.txt. Беглый просмот рпоказал, что все что там есть уже есть и в Install.txt. Детальный осмотр показал, что в фиксе есть строки, которых нет в инстале:

'%s <#minutes#> назад'
'%s <#hours#> назад'
'%s <#days#> назад'
'%s <#weeks#> назад'

Ссылка на комментарий
Поделиться на других сайтах

Поставил для 2.1.7 - вроде все ок, однако пропущена настройка в lang_global
Я просто решил, что можно обойтись и без отдельной функции для обработки секунд.

 

Беглый просмот рпоказал, что все что там есть уже есть и в Install.txt.
Fix - это исправление. Install - это установка. Соответственно, те, кто еще ничего не устанавливал, должны читать Install.txt. Те же, кто уже установил мод ранее, должны читать Fix.txt (см. это сообщение).

 

Детальный осмотр показал, что в фиксе есть строки, которых нет в инстале
А вот за это наблюдение спасибо. Действительно, эти строки в описании установки были пропущены.
Ссылка на комментарий
Поделиться на других сайтах

  • 10 месяцев спустя...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.