понедельник, 3 марта 2008 г.

О перекодировке или русификация groupoffice

Копая groupoffice (http://group-office.com/) столкнулся с такой проблемой. Официально русский язык там не влючен, хотя присутствует c комментарием в language/languages.inc

//Needs UTF-8 Conversion

Т.е конвертировать надо;)


Если вам лень, можно ничего не конвертировать и спокойно работать с koi8r. Для этого раскомментируйте строки вида

$languages['ru']

в language/languages.inc и если хотите сделать Великий и Могучий по умолчанию добавьте в config.php

$config['language']='ru';

Но могут быть неприятные моменты, например у меня локаль utf8 и в модуле Email меня ждало разочарование в виде поломанной кодировки сообщений. Меня это не устроило, поэтому было решено перекодировать.

Сразу огорчу, на русский переведено не все, так что кому хочеться полного перевода, все в ваших руках.

Итак, за локализацию у нас отвечают файлы language/чтото/lang.inc и modules/какойтомодуль/language/lang.inc ( где lang локализация).

Это командой мы внесем небольшую автоматизацию в процесс перевода ( спасибо ti.eugene;)
Делать соответственно в корневой директории вашего groupoffice.


$ for i in `find . -name ru.inc`; do echo $i; enca $i; done
cat ./modules/groups/language/ru.inc | iconv -f utf-8 -t iso-8859-1| iconv -f koi8-r -t utf-8 > ru.tmp && mv ru.tmp modules/groups/language/ru.inc
cat ./modules/users/language/ru.inc | iconv -f utf-8 -t iso-8859-1| iconv -f koi8-r -t utf-8 > ru.tmp && mv -f ru.tmp modules/users/language/ru.inc
for i in `find . -name ru.inc`; do enconv $i; done


Проверка нужна из-за того, что мне встретились несколько файлов на которые enca сказала

$ enca ru.inc
Universal transformation format 8 bits; UTF-8
Doubly-encoded to UTF-8 from ISO-8859-5

О_о ..О как.

Такие файлы нужно кодировать по другому.

Последний штрих:

head -n 3 language/common/ru.inc

get_fallback_base_language_file('common'));
[root@rick1 groupoffice]# head -n 10 language/common/ru.inc
get_fallback_base_language_file('common'));

#$charset = 'UTF-8';
$charset = 'utf-8';
//$charset = 'KOI-8';

Вроде все.


PS: Добавлю еще, что groupoffice по моему мнению самый эргономичноый из php-base groupware, но в связи с политикой двойного лицензирования самые вкусные вещи ( например syncml синронизация) доступны только в Pro версии, которая платная и имеет проприетарную часть кода. Поэтому это решение подойдет тем кому нужен минимальный функционал ( по ссылке сравнение community и prof версии).