Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 05.01.2011, 21:13   #1
savao
Новенький
 
Регистрация: 26.12.2010
Сообщений: 26
По умолчанию Проблема с руссификацией Calendar Base

Добрый день.
Возникла проблема с руссификацией расширения Calendar Base.
До сих пор я сталкивался с двумя ситуациями:
1. Либо расширение сразу пишет по русски (у меня прописано что язык русский)
2. Либо расширение пишет по английски, но проблема оказывается в том что в файле locallang.xml в секции русского языка стоят английские слова. Меняешь их на русские аналоги и все работает отлично.
А тут возникла проблема, расширение пишет по английски. Нашел файл locallang.xml и еще 3 с подобными названиями, но они все относятся к BE. А мне надо FE руссифицировать, сам то я как-нить с аглицким справлюсь. Пробовал уже поиском по всей папке плагина искать слова из FE, и менял их по очереди, но в FE все так по английски и осталось.
Может кто подскажет что делать...
savao вне форума   Ответить с цитированием
Старый 06.01.2011, 00:57   #2
reva2
Senior Member
 
Аватар для reva2
 
Регистрация: 31.08.2007
Адрес: Ростов-на-Дону
Сообщений: 206
По умолчанию

Воспользуйтесь расширением llxml
reva2 вне форума   Ответить с цитированием
Старый 06.01.2011, 01:17   #3
savao
Новенький
 
Регистрация: 26.12.2010
Сообщений: 26
По умолчанию

А нет какой нибудь возможности для руссификации без дополнительніх расширений. Просто сталкивался на форуме не раз с сообщениями что некоторіе расширения конфликтуют друг с другом. Поєтому не хочется ставить лишних.
savao вне форума   Ответить с цитированием
Старый 06.01.2011, 16:06   #4
savao
Новенький
 
Регистрация: 26.12.2010
Сообщений: 26
По умолчанию

Я посмотрел это расширение. Оно для перевода localleng.xml файлов, а это я могу и вручную сделать, но это эффекта не дает.
savao вне форума   Ответить с цитированием
Старый 06.01.2011, 18:59   #5
savao
Новенький
 
Регистрация: 26.12.2010
Сообщений: 26
По умолчанию

Проблему решил, нашел что все нужные слова находятся в файле /cal/controller/locallang.xml Там все попереводил.
Осталась одна проблема. Там нет названий месяцев и дней недели. Плагин их берет из системы. Сделал так чтобы они стали русскими, но они почему-то не в именительном падеже. К примеру название текущего месяца не "январь", а "января" и названия дней недели вообще как-то кривовато выглядят. Не подскажите где их найти?
savao вне форума   Ответить с цитированием
Старый 12.01.2011, 18:46   #6
savao
Новенький
 
Регистрация: 26.12.2010
Сообщений: 26
По умолчанию

Проблема нашла свое решение.
Calendar Base берет эти названия из локали на сервере. Поэтому есть два варианта, поменять значения в локали, но это черевато большими проблемами, либо переписать сами функции плагина которые выдают даты. Я пошел вторым путем, изменил функции в файле /cal/res/PEAR/Date/Calc.php там нужно поменять всего две функции по сути. Так как названия дней недели берутся то правильно, просто их обрезание делается с ошибкой(когда отображаются укороченные названия дней недели). В первой функции
PHP код:
    function getMonthNames()
    {
        
$months = array();
        
$months[1] = "Январь";
        
$months[2] = "Февраль";
        
$months[3] = "Март";
        
$months[4] = "Апрель";
        
$months[5] = "Май";
        
$months[6] = "Июнь";
        
$months[7] = "Июль";
        
$months[8] = "Август";
        
$months[9] = "Сентябрь";
        
$months[10] = "Октябрь";
        
$months[11] = "Ноябрь";
        
$months[12] = "Декабрь";
 
//       for ($i = 1; $i < 13; $i++) {
 //           $months[$i] = strftime('%B', mktime(0, 0, 0, $i, 1, 2001));
 //       }
        
return $months;
    } 
Здесь закоменчено то что нужно убрать(то что было в исходном файле).
Вторая функция:
PHP код:
    function getWeekDays()
    {
        
$weekdays = array();
        
$weekdays[1] = "Понедельник";
        
$weekdays[2] = "Вторник";
        
$weekdays[3] = "Среда";
        
$weekdays[4] = "Четверг";
        
$weekdays[5] = "Пятница";
        
$weekdays[6] = "Суббота";
        
$weekdays[0] = "Воскресенье";
//        for ($i = 0; $i < 7; $i++) {
//            $weekdays[$i] = strftime('%A', mktime(0, 0, 0, 1, $i, 2001));
//        }
        
return $weekdays;
    } 
Это можно не делать, так как из локали берутся правильные названия дней недели, но я добавил чтобы дни недели были с большой буквы.
Третья функция:
PHP код:
    function getWeekdayAbbrname($day 0$month 0$year 0$length 3)
    {
        if (empty(
$year)) {
            
$year Date_Calc::dateNow('%Y');
        }
        if (empty(
$month)) {
            
$month Date_Calc::dateNow('%m');
        }
        if (empty(
$day)) {
            
$day Date_Calc::dateNow('%d');
        }
        switch(
Date_Calc::getWeekdayFullname($day$month$year)) {
                    case 
'Понедельник':
                        return 
'Пн';
                        break;
                    case 
'Вторник':
                        return 
'Вт';
                        break;
                    case 
'Среда':
                        return 
'Ср';
                        break;
                    case 
'Четверг':
                        return 
'Чт';
                        break;
                    case 
'Пятница':
                        return 
'Пт';
                        break;
                    case 
'Суббота':
                        return 
'Сб';
                        break;
                    case 
'Воскресенье':
                        return 
'Вс';
                        break;
                    default:
                     return 
substr(Date_Calc::getWeekdayFullname($day$month$year),04);
        }
    } 
Это как раз для того чтобы сокращенные названия дней недели выводились корректно.
savao вне форума   Ответить с цитированием
Старый 03.02.2011, 19:26   #7
_3AMnoTEX_
Новенький
 
Регистрация: 31.01.2011
Сообщений: 15
По умолчанию

savao, спасибо большое!!!
у меня была похожая проблема, но только с сокращениями. Он мне писАл дни недели: П?, В? и т.д, месяцы - тоже: Я?, Ф? и т.д.
У себя исправил только 2 функции: Date_Calc::getWeekdayAbbrname и Date_Calc::getMonthAbbrname. Код Date_Calc::getMonthAbbrname тоже по аналогии:
Код:
    function getMonthAbbrname($month, $length = 3)
    {
        $month = (int)$month;
        if (empty($month)) {
            $month = Date_Calc::dateNow('%m');
        }
		switch(Date_Calc::getMonthFullname($month)) {
			case 'Январь':
				return 'Янв';
                break;
            case 'Февраль':
                return 'Фев';
                break;
            case 'Март':
                return 'Мар';
                break;
			case 'Апрель':
				return 'Апр';
				break;
			case 'Май':
				return 'Май';
				break;
			case 'Июнь':
				return 'Июн';
				break;
			case 'Июль':
				return 'Июл';
				break;
			case 'Август':
				return 'Авг';
				break;
			case 'Сентябрь':
				return 'Сен';
				break;
			case 'Октябрь':
				return 'Окт';
				break;
			case 'Ноябрь':
				return 'Ноя';
				break;
			case 'Декабрь':
				return 'Дек';
				break;
			default:
			   return substr(Date_Calc::getMonthFullname($month), 0, $length);
			}
    }
теперь календарик выглядит по-человечески
_3AMnoTEX_ вне форума   Ответить с цитированием
Старый 03.02.2011, 21:26   #8
savao
Новенький
 
Регистрация: 26.12.2010
Сообщений: 26
По умолчанию

Ну да, проблема в том что по умолчанию он обрезает, оставляя только первые 3 символа. И для английского варианта все хорошо работает. А вот для русского получается косяк, у нас же используется UTF-8 где на каждый символ по 2 байта, а он оставляет только 3. И получается что в названии месяца остается только 1,5 буквы... Я там несколько по другому поступил, просто указал оставлять не 3 буквы, а 6. Это как раз получается 3 2ухбайтовые буквы. Но можно и так как вы сделали...
savao вне форума   Ответить с цитированием
Старый 04.02.2011, 10:37   #9
_3AMnoTEX_
Новенький
 
Регистрация: 31.01.2011
Сообщений: 15
По умолчанию

6 байт оставлять... для русскоязычного сайта, конечно, вариант, а если я захочу сделать мультиязычный сайт? На инглише он будет писать Januar, Februa, и т.д.?
Я UTF-8 плохо знаю, в других языках, например в немецком, обычные буквы - по одному байту, а дополнительные, с точками например, он по 2 байта делает?
_3AMnoTEX_ вне форума   Ответить с цитированием
Старый 04.02.2011, 15:24   #10
savao
Новенький
 
Регистрация: 26.12.2010
Сообщений: 26
По умолчанию

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

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Calendar Base настройка margol Общие вопросы 11 24.04.2013 17:39
Проблема с календарем FrontEnd Event Calendar. chiefff Общие вопросы 0 06.07.2009 18:58
Настройка. Calendar Base 1.0 Nikolay Общие вопросы 1 17.07.2008 17:33
EXT: Calendar Base m_admin Общие вопросы 0 03.12.2007 15:19
Calendar Base и minicalendar OpTi Общие вопросы 3 28.11.2006 22:37


Часовой пояс GMT +4, время: 20:16.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория