[Moscow.pm] gettext Который Maketext и плюрализм для него.

Ruslan Zakirov ruslan.zakirov на gmail.com
Ср Дек 24 07:26:36 PST 2008


Я не знаю как заставить распознавать po'шный "Plural-Forms:"

Вот сейчас сделал у нас вот так:

package RT::I18N::ru;
sub quant {
    my($handle, $num, @forms) = @_;

    return $num unless @forms;
    return $forms[3] if !$num && $forms[3];

    return $num .' '. $handle->numerate($num, @forms);
}
sub numerate {
    my($handle, $n, @forms) = @_;

    my $form = 0;
    if ( $n%10 == 1 && $n%100 != 11 ) {
        $form = 0;
    } elsif ( $n%10 <=4 && ($n%100 < 10 || $n%100 >= 20) ) {
        $form = 1;
    } else {
        $form = 2;
    }
    return $forms[$form];
}
1;


У тебя есть базовый класс, который наследуется от Locale::Maketext.
Вот когда дергается get_handle на базовом классе, то он автоматом
пыется загрузить <базовый класс>::<язык>. У нас базовый класс
RT::I18N.

Соответственно выглдит строчка так:

loc("[quant,_1,hour]", $hours);

Помогло?

2008/12/23 Vany Serezhkin <ivan на serezhkin.com>:
> Привет.
> Делаю так:
>
> ru.po
> ...
> "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
> "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
> ...
> msgid "Store %1 days"
> msgstr "Хранить %*(%1, день, дня, дней)"
>
> Но подцыпляется квантификатор от англицкого языка.
> Это на самом деле Locale::Maketext::Simple, который Catalyst::Plugin::I18N.
> Кто нибудь умеет правильно работать с мейктекстовскими квантификаторами ?
>
> --
> Ivan B. Serezhkin
> Spamooborona, Yandex. http://so.yandex.ru/
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>



-- 
Best regards, Ruslan.


Подробная информация о списке рассылки Moscow-pm