Powered by CodeIgniter

Интернационализация

Возможность замены языковых переменных пригодится при создании сайтов на разных языках. О синтаксисе файлов локализации было написано ранее.
Панель управления интернационализацией позволяет контролировать список языков, разделы перевода, тексты в разделах, а также импортировать и экспортировать данные в языковые файлы.

Использование интернационализации

// Обычный способ 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); // новое сообщение | новых сообщения | новых сообщений