NAME
Pcore::Core::I18N - P internationalization subsystem.
SYNOPSIS
GO->I18N->add_location($ENV->{I18N_DIR});
GO->I18N->locale('ru_RU');
Config strings internationalization
Интернационализация в inline конфиге (конфиге в блоке BEGIN скрипта) не поддерживается.
Для интернационализации строк в остальных конфигах использовать вызов i18n с одним или двумя параметрами:
{
string => i18n('text'),
plural_string => i18n('text', 'plural form')
}
Для ресолвинга интернациональных строк в конфиге использовать вызов:
i18n($ENV->{string});
i18n($ENV->{plural_string}, $plural_value); $plural_value - числовое значение множественной формы
Template toolkit templates internationalization
Поддерживаемые форматы нитернационализации для использования в шаблонах:
[% i18n('text') %]
[% i18n('text', 'plural form', $plural_value) %]
Performance
Locale::gettext_xs: timethis 1000000: 10 wallclock secs ( 9,68 usr + 0,03 sys = 9,71 CPU) @ 102986,61/s (n=1000000)
Pcore::Core::GO::I18N: timethis 1000000: 10 wallclock secs ( 9,40 usr + 0,01 sys = 9,41 CPU) @ 106269,93/s (n=1000000)
По результатам тестов видно, что производительность сохраняется на уровне XS кода.