Интернационализация
Возможность замены языковых переменных пригодится при создании сайтов на разных языках. О синтаксисе файлов локализации было написано ранее.
Панель управления интернационализацией позволяет контролировать список языков, разделы перевода, тексты в разделах, а также импортировать и экспортировать данные в языковые файлы.
Панель управления интернационализацией позволяет контролировать список языков, разделы перевода, тексты в разделах, а также импортировать и экспортировать данные в языковые файлы.
Использование интернационализации
// Обычный способ
echo $this->i18n->translate('gears mail');
// Простой способ
t('gears mail');
/*
* Определим раздел перевода
*/
d('gears');
// Теперь его можно не указывать явно
t('mail');
/*
* Еще один пример указания разделов перевода.
*/
// Раздел -- user.
d('user');
echo t('name'); // Аналогично t('user name'), если user не является текущим.
/*
* Внимание! Запись
*/
echo t('%success');
/*
* равно сильна записи
*/
echo t('global success');
/*
* потому что "%" есть указатель на глобальный раздел. "%" = "!global"
*/
/*
* В то время как раздел определен, никто не мешает нам узнать
* значение переменной из другого раздела.
*/
echo t('mail subject');
// Текущий раздел все еще -- user.
// Перейдем в другой раздел -- form.
d('form');
echo t('edit'); // Аналогично t('form edit'), если form не является текущим.
echo t('name'); // Если в form переменной name нет -- выведет просто 'name'.
/*
* Вернемся в прошлый раздел.
* Можно вызвать d('user') или просто d(),
* что вернет нас к предыдущему разделу, который был указан ранее.
*/
d();
echo t('name'); // Выведет значение переменной name в разделе user.
Работа с аргументами
Если в локальной переменной определены описатели преобразований, можно использовать аргументы функции, которые займут их место.
/*
* раздел user
* переменная lost_password
* [user]
* lost_password = "Письмо с новым паролем было отправлено на ваш почтовый ящик (%s).";
* new_password = "Уважаемый <b>%s</b>, ваш новый пароль -- <b>%s</b>.";
*
*/
d('user');
echo t('lost_password',$user->email);
echo t('new_password',$user->name,$new_password);
Альтернативная форма записи.
/*
* раздел user
* переменная lost_password
* [user]
* lost_password = "Письмо с новым паролем было отправлено на ваш почтовый ящик (%s).";
* new_password = "Уважаемый <b>%s</b>, ваш новый пароль -- <b>%s</b>.";
*
*/
d('user');
echo t('lost_password@'.$user->email);
echo t('new_password@'.$user->name.'@'.$new_password);
Работа с шаблонами
Можно использовать локализованные переменные в шаблонах.<h1>Привет, {_user name}!</h1>Можно использовать альтернативную форму записи языковых переменных для передачи аргументов в шаблоне.<p>{_user new_password@$user->name@$new_password}</p>
Склонение числительных
/*
* [mail]
* new_pm = "Вам пришло %d (новое сообщение|новых сообщения|новых сообщений)."
*
*/
echo t('mail new_pm',$pm_num);
// Вам пришло 1 новое сообщение | Вам пришло 3 новых сообщения | Вам пришло 5 новых сообщений
Если вы не хотите, чтобы число выводилось, можно сделать так.
/*
* [mail]
* new_pm = "(новое сообщение|новых сообщения|новых сообщений)."
*
*/
echo t('mail new_pm',$pm_num);
// новое сообщение | новых сообщения | новых сообщений
