Multilingual site on Rails
Friday, August 29th, 2008Задавался давно уже вопросом о том, как сделать многоязычный сайт на рельсах. Сначала нехватало знаний, потом времени.
Недавно понадобилось таки реализовать такой сайт. Сразу скажу, получилось.
Задавался давно уже вопросом о том, как сделать многоязычный сайт на рельсах. Сначала нехватало знаний, потом времени.
Недавно понадобилось таки реализовать такой сайт. Сразу скажу, получилось.
Сайт работает в cp1251. Не моя прихоть, так сложилось.
И вот в него вкручивается gettext. Все было бы неплохо, только из трех языков ru, en, uk – для последнего отсутствует локаль uk_UA.cp1251.
Я пол-дня мучался, пока добрый Rubik не направил в сторону localedef.
Итак, вот что вышло:
sudo localedef -f CP1251 -i en_US en_US.cp1251
sudo localedef -f CP1251 -i uk_UA [...]
Возникла задача – подружить gettext и кириллицу. Да к тому же еще и кириллицу в cp1251. И, что самое главное, оригинальные строки для перевода в кириллице.
Попробовав Zend_Translate ощутил несоответствие идее:
<?php
require_once("Zend/Translate.php");
$translate = new Zend_Translate(’gettext’, ‘/my/path/source-de.mo’, ‘de’);
print $translate->_("Example")."\n";
Вот что должно произойти если нет /my/path/source-de.mo? Правильно, должно отобразиться “Example”. На самом же деле отображаются матюки об отсутствии .mo. [...]