IPB

Здравствуйте, Гость ( Вход | Регистрация )

 
Ответить в этой темеОткрыть новую тему
> Перевод Дней и Месяцев
Relaks
сообщение Apr 1 2007, 10:41 AM
Сообщение #1


Advanced Member
***

Группа: User
Сообщений: 36
Регистрация:
30-March 07
Из: Nederland
Пользователь №: 1,476



Всю тему (скин) перевел, а вот дни и месяца не знаю как. У меня стоят еще два плагина это Часы и Календарь, их тоже нужно перевести. Прошу рассказать как это сделать. unsure.gif


--------------------
Ибо Нефиг !
К началу страницы
 
+Цитировать Сообщение
Suvoroff
сообщение Apr 1 2007, 12:09 PM
Сообщение #2


Support Staff
***

Группа: Admin
Сообщений: 1,170
Регистрация:
16-July 05
Из: nucleus.com.ru
Пользователь №: 1



Дни и месяцы перводятся настройкой локали (в шаблонах)
Настройки зависят от хостинга (кстати говоря, на многих иностранных хостингах перевести не удастся).
Для русского языка в большинстве случаев подходит
ru_RU.CP1251 (иногда просто ru_RU)


--------------------
К началу страницы
 
+Цитировать Сообщение
Supermonster
сообщение Apr 13 2007, 04:45 AM
Сообщение #3


Newbie
*

Группа: User
Сообщений: 1
Регистрация:
13-April 07
Пользователь №: 1,490



ЦИТАТА(Suvoroff @ Apr 1 2007, 12:09 PM) [snapback]2132[/snapback]
Дни и месяцы перводятся настройкой локали (в шаблонах)
Настройки зависят от хостинга (кстати говоря, на многих иностранных хостингах перевести не удастся).
Для русского языка в большинстве случаев подходит
ru_RU.CP1251 (иногда просто ru_RU)


Можно подробнее: что за локаль, в каких шаблонах, куда подходит ru_RU.CP1251?
Спасибо.
К началу страницы
 
+Цитировать Сообщение
Suvoroff
сообщение Apr 13 2007, 06:19 PM
Сообщение #4


Support Staff
***

Группа: Admin
Сообщений: 1,170
Регистрация:
16-July 05
Из: nucleus.com.ru
Пользователь №: 1



Админка - Шаблоны
Что не понятно?
Что значит куда подходит?


--------------------
К началу страницы
 
+Цитировать Сообщение
buzia
сообщение Oct 5 2010, 12:50 PM
Сообщение #5


Newbie
*

Группа: User
Сообщений: 2
Регистрация:
5-October 10
Пользователь №: 1,974



ЦИТАТА(Suvoroff @ Apr 1 2007, 02:09 PM) [snapback]2132[/snapback]
Дни и месяцы перводятся настройкой локали (в шаблонах)
Настройки зависят от хостинга (кстати говоря, на многих иностранных хостингах перевести не удастся).
Для русского языка в большинстве случаев подходит
ru_RU.CP1251 (иногда просто ru_RU)



Мне к сожалению не повезло smile.gif

Чтоб народ не наступал на те же грабли, расскажу чего нарыл и как справился с задачей.

Нижеописанное справедливо для Nucleus v3.51 (скорее всего и любых других версий)

Во первых, отмечу, что у меня Nucleus в UTF-8 (+ Unix хостинг), по этому и locale будет ru_RU.UTF-8.
Использую дефолтный скин (желтенький такой)))

Локаль устанавливается на выбор:
1. в начале обработки php скрипта (например, в файле config.php, как сделал я)
2. в конкретном месте вывода в шаблоне а админке (для вывода Архива блога) благодаря встроенной в Nucleus функции (переменной) <%archivedate%> (см хелп у себя на сайте documentation/help.html#skinvar-archivedate )

Второй вариант подходит только если хочется сменить вывод даты только в конкретном месте.
Вдоволь наигравшись со вторым вариантом, посмотрев на результаты, понял что не катит, т.к. локаль выставляется, но в силу русско-морфологических причин получается следующее: "5 октября 2010", что вполне нормально, но как только тыкаешь на архив за месяц (где дата выводится без числа, т.е. "месяц год"), видишь неадекватную надпись "Архив за октября 2010" ("Архив за" переводится в шаблоне в админке), что совсем не катит.

Замечание: если у вас месяцы показываются не русскими буквами, значит локаль выбрана неверно, дерзайте, эксперементируйте. Далеенаписаное имеет смысл, если вы видите русские буквы в названии месяцев.

Бороться решил кардинально, используя способ 1, т.к. текстовые месяцы выводятся в некоторых местах.

0. Сделал бэкап smile.gif

1. Открыл config.php
Перед строками

[codebox]// include libs
include($DIR_LIBS.'globalfunctions.php');[/codebox]

2. вставляю строку
[codebox]setlocale(LC_TIME,'ru_RU.UTF-8');[/codebox]

сохраняю, закрываю.

3. Открываю /nucleus/libs/ACTIONS.php (НЕ ACTION.php)
нахожу комментарий

[codebox]* %archivedate(locale,date format)%[/codebox]

далее функция

[codebox]function parse_archivedate($locale = '-def-')[/codebox]

4. в этой функции нахожу строчку

[codebox]} elseif ($d == 0 && $m !=0) {[/codebox]

5. под ней вместо

[codebox]$format = '%B %Y';[/codebox]

пишу

[codebox]$format = '%Y';[/codebox]

6. нахожу строчку

[codebox]echo strftime($format,mktime(0,0,0,$m?$m:1,$d?$d:1,$y));[/codebox]

вместо нее пишу

[codebox]
if($d == 0 && $m !=0)
{
$russian_month_array=array("январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь");
$russian_month=$russian_month_array[$m-1];

echo $russian_month." ".strftime($format,mktime(0,0,0,$m?$m:1,$d?$d:1,$y));
}else{
echo strftime($format,mktime(0,0,0,$m?$m:1,$d?$d:1,$y));
}
[/codebox]

Все. Теперь на странице архива за месяц пишется "Архив за октябрь 2010".

"За месяц" отметил жирным, т.к. есть еще и страница "Список архивов", на которой написано "Список архивов по месяцам" (и снова: перевел в шаблоне).
Сейчас, если открыть эту страницу, то будет написано примерно следующее:

"Список архивов по месяцам
октября, 2010
сентября, 2010",

где "октября" и "сентября" являются ссылками на страницу с архивом, которую я уже поправил.

Для правки открыл BLOG.php

1. ищу строку

[codebox]echo strftime($temp,$current->itime);[/codebox]

2. вместо неё пишу

[codebox]
$date_html=strftime($temp,$current->itime);

if($date_html=str_replace("Архив за января,","Архив за январь,",$date_html)){
$date_html=str_replace(">января, 2010<",">январь, 2010<",$date_html);
}
if($date_html=str_replace("Архив за февраля,","Архив за февраль,",$date_html)){
$date_html=str_replace(">февраля, 2010<",">февраль, 2010<",$date_html);
}
if($date_html=str_replace("Архив за марта,","Архив за март,",$date_html)){
$date_html=str_replace(">марта, 2010<",">март, 2010<",$date_html);
}
if($date_html=str_replace("Архив за апреля,","Архив за апрель,",$date_html)){
$date_html=str_replace(">апреля, 2010<",">апрель, 2010<",$date_html);
}
if($date_html=str_replace("Архив за мая,","Архив за май,",$date_html)){
$date_html=str_replace(">мая, 2010<",">май, 2010<",$date_html);
}
if($date_html=str_replace("Архив за июня,","Архив за июнь,",$date_html)){
$date_html=str_replace(">июня, 2010<",">июнь, 2010<",$date_html);
}
if($date_html=str_replace("Архив за июля,","Архив за июль,",$date_html)){
$date_html=str_replace(">июля, 2010<",">июль, 2010<",$date_html);
}
if($date_html=str_replace("Архив за августа,","Архив за август,",$date_html)){
$date_html=str_replace(">августа, 2010<",">август, 2010<",$date_html);
}
if($date_html=str_replace("Архив за сентября,","Архив за сентябрь,",$date_html)){
$date_html=str_replace(">сентября, 2010<",">сентябрь, 2010<",$date_html);
}
if($date_html=str_replace("Архив за октября,","Архив за октябрь,",$date_html)){
$date_html=str_replace(">октября, 2010<",">октябрь, 2010<",$date_html);
}
if($date_html=str_replace("Архив за ноября,","Архив за ноябрь,",$date_html)){
$date_html=str_replace(">ноября, 2010<",">ноябрь, 2010<",$date_html);
}
if($date_html=str_replace("Архив за декабря,","Архив за декабрь,",$date_html)){
$date_html=str_replace(">декабря, 2010<",">декабрь, 2010<",$date_html);
}

echo $date_html;
[/codebox]

Да, очень некрасиво. Кому важна эстетика. можете написать цикл с 2-мя массивами - мне ща лень smile.gif

Теперь видим долгожданную картину:

"
Список архивов по месяцам
октябрь, 2010
сентябрь, 2010
"

Также я установил себе плагин NP_Calendar, который также неадекватно себя вел. Правил так:

1. Открыл NP_Calendar.php

2. ищу строчки (примерно строка 224)

[codebox] // draw header
$currentdate = getDate();
if ($next_month > $currentdate['mon'] && $year == $currentdate['year']) {
$future = false;
} else {
$future = true;
}[/codebox]

3. после них пишу

[codebox]$russian_month_array=array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
$russian_month=$russian_month_array[$date['mon']-1];[/codebox]

4. далее ищу строчку

[codebox]<a href="<?php echo createArchiveLink($blogid, strftime('%Y-%m',$timestamp))?>"><?php echo strftime('%B %Y',$timestamp)?></a>[/codebox]

5. вместо неё пишу
[codebox]<a href="<?php echo createArchiveLink($blogid, strftime('%Y-%m',$timestamp))?>"><?php echo $russian_month." ".strftime('%Y',$timestamp)?></a>[/codebox]

Ну вот собственно и всё, теперь всё показывается как надо.

Не претендую на HOW TO, но полезным, надеюсь, будет smile.gif
К началу страницы
 
+Цитировать Сообщение
Suvoroff
сообщение Oct 6 2010, 12:07 PM
Сообщение #6


Support Staff
***

Группа: Admin
Сообщений: 1,170
Регистрация:
16-July 05
Из: nucleus.com.ru
Пользователь №: 1



buzia, спасибо за подробные инструкции!


--------------------
К началу страницы
 
+Цитировать Сообщение
buzia
сообщение Oct 8 2010, 06:21 AM
Сообщение #7


Newbie
*

Группа: User
Сообщений: 2
Регистрация:
5-October 10
Пользователь №: 1,974



Всегда пожалуйста smile.gif
К началу страницы
 
+Цитировать Сообщение
dariushbabri
сообщение Dec 3 2017, 07:53 AM
Сообщение #8


Newbie
*

Группа: User
Сообщений: 4
Регистрация:
3-December 17
Пользователь №: 2,102



The whole topic (skin) translated, but the days and months I do not know how. I have two more plug-ins that are Clock and Calendar, they also need to be translated. Please tell me how to do thi طراحی سایت
К началу страницы
 
+Цитировать Сообщение

Ответить в этой темеОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 15th December 2017 - 06:07 AM
Рецепты - Скачать программы - Scripts