Entry tags:
Йаду не хватило
Снова задумался о применении геттекста в Mojolicious — существующий метод, когда вместо написания отдельных геттекстовых po--файлов прямо в перловый код засовывается что-то такое:
Написал на annocpan коммент, хотя сомневаюсь, что авторы получит его и пойдёт читать мануал по Locale::TextDomain. Похоже, процитированная в Locale::Maketext::TPJ13 статья вышла очень давно (first appeared in The Perl Journal #13 and is copyright 1999) и авторы о ней забыли.
our %Lexicon = (
'Add' => 'Добавить',
'Remove' => 'Удалить'
);
никоим образом не может считаться достойным. Порывшись по CPAN, добрёл по ссылкам до Locale::Maketext::TPJ13, где авторы ругают геттекст, приводя корявые якобы геттекстовые примеры обслуживания множественных чисел, надеясь оправдать этим существование собственного других модулей, которые не лучше.Написал на annocpan коммент, хотя сомневаюсь, что авторы получит его и пойдёт читать мануал по Locale::TextDomain. Похоже, процитированная в Locale::Maketext::TPJ13 статья вышла очень давно (first appeared in The Perl Journal #13 and is copyright 1999) и авторы о ней забыли.
no subject
#gettext в отрыве от #mojolicious
Не знаю, правильно ли, но оно работает. И переводит на нужный язык, и подбирает соответствующее число в зависимости от переданной цифры (в русском кое-где встречаются остатки двойственного числа). В геттекстовом мануале описаны правила подбора числа для 36 языков.
Как использовать пример:
- mkdir example locale po
- кладём скрипт в
- cd po; make
- cd ../example
- запустить можно двумя способами:
- при изменении текста в скрипте надо обновить исходные файлы переводов (*.po) — проще всего через cd po; make up (вместо up можно писать update), а затем, отредактировав в случае необходимости po-файлы, перекомпилять их — перейди на шаг 3.
Получается, что тут переводы отделены от исходного кода скриптов — можно поручить перевод людям, мало понимающим в программировании, но разбирающимся в иностранных языках.example
(у меня он назывался 1.pl), остальное — вpo
env LANGUAGE=ru ./1.pl
или
./1.pl ru
Вместо
ru
можно писать любой другой код. Если найдётся файл переводов — скрипт будет писать на выбранном языке, если на найдётся — на английской.Re: #gettext в отрыве от #mojolicious
Получить свежий пример можно с git://gist.github.com/737400.git — там уже всё разложено куда надо и добавлен маленький README.
no subject
Я недавно делал проект и у меня получилось нечто рабочее, но жутко корявое, использующее gettext_pp (pure perl) имплементацию.
Пока нет
Re: Пока нет
Re: Пока нет
Re: Пока нет
только ещё доку не начал писать, буду рад любым предложениям переделать :)
предполагается использовать в бридже на /, где делать что-то типа
ну или брать язык не с сессии, а с урла.
Re: Пока нет
Пока удалось перевести обычный текст, а с множественным числом пока не очень получается.
Re: Пока нет
Запускаю:
env LANGUAGE=ru ./2_td.pl daemon
или
env LANG=ru_RU.UTF-8 ./2_td.pl daemon
Выводит: Форму множественного числа, вроде, подбирает (то есть, иногда пишет 1 apple), но не переводит на русский.
Re: Пока нет
Осталось придумать, как xgettext научить брать из скрипта подлежащий переводу текст. Потому что сейчас он справляется только с обычными перловыми скриптами, а в шаблонах на epl пока бессилен. Могляжу мануал, может, найду.
Re: Пока нет
вообще - попробуйте закомментировать строку в тестах с установкой pp - некоторые тесты сразу упадут.
pp
я закомментировал
Locale::Messages->select_package('gettext_pp');
— ничего не поменялось.no subject
(Anonymous) 2010-12-11 05:15 pm (UTC)(link)our %Lexicon плох
То, что его пока нет в Mojolicious'е — не беда. Можно, в конце концов, потратить какое-то время и написать плагин (если к тому моменту ещё кто-нибудь не напишет) — это лучше, чем использовать %Lexicon.
Предлагаемые в Mojolicious методы (с %Lexicon) плохи хотя бы тем, что там нет поддержки множественного числа (или я не нашёл). Писать «2 файл(ов)» в своих программах, как мне кажется, не следует.
Или так
Но в случае, когда никакая система ещё не используется — лучше сразу поставить более правильную.
mojowka сейчас не переведена на другие языки (хотя надо бы перевести): я ещё несколько месяцев назад наткнулся на статью Вячеслава Тихановского Building a multilingual website with Mojolicious, но до сих пор не внёс предложенный там код в свою систему — мне не понравился %Lexicon.
Про эту проблему
Re: Про эту проблему
Не понял про "русский" русский.
1 файл_, 2-4 файлА, 5-20 файлОВ и далее по малому циклу (0-9) с числами больше 20.
Есть CPAN решение, нормально руссифицируещее сообщения?
Re: Не понял про "русский" русский.
На CPAN было дофига вариантов. Как и в этом журнале: и на перле, и на пхп.
Но если планируете использовать в своей программе несколько языков, лучше всё-таки использовать геттекст. А если пока не планируете, всё равно не помешает заглянуть на http://www.gnu.org/software/hello/manual/gettext/Plural-forms.html — там, помимо руководства на геттекст, перечислены правила вычисления множественных чисел почти для сорока языков. Есть и достаточно компактное выражение (на C) для русского.
Re: Не понял про "русский" русский.
Что до множественного числа - у Зализняка А.А. есть очень верное определение данной словоформы как "ограниченное число" или там же "множественное число малого количества" - "от полутора до четырех". (книга «Русское именное словоизменение»)
ngettext