Skip to content
Anton edited this page May 14, 2018 · 7 revisions

Описание

На данном этапе, Translate являет собой лишь оболочкой для настройки gettext, хотя использования адаптеров типа array и(или) Db я не исключаю, но пока это лишь в планах.

В фреймворке используются функции _n() и __() как враперы для Translate, хотя как бы в фреймворке появлений функций не комильфо - но кто нам тут указ - создать функцию в NS можно, но использовать неудобно, проще статический класс с набором функций, но тоже много буков, так что встречайте +2 функции в глобальной области видимости:

  • __($text[, $params]) - обёртка над функцией gettext + sprintf
  • _n($text1, $text2, int $n [, $params]) - обёртка над функцией ngettext + sprintf

Настройки

// config file translator.php
return array(
    // call inside: 
    //    setlocale(LC_MESSAGES, $locale)
    //    putenv('LC_ALL=' . $locale);
    //    putenv('LANG=' . $locale);
    //    putenv('LANGUAGE=' . $locale);
    "locale" => "ru_RU",
    // call inside: 
    //    bindtextdomain($locale, $path)
    //    textdomain($locale)
    //    bind_textdomain_codeset($this->domain, 'UTF-8');
    "domain" => "messages",
    "path" => PATH_DATA .'/locale'
)

Если ваша локаль не подтягивается - убедитесь, что она доступна в вашей системе с использованием команды locale -a. Для установки локали на ubuntu:

sudo locale-gen ru_RU
sudo locale-gen ru_RU.UTF-8
sudo locale-gen uk_UA
sudo locale-gen uk_UA.UTF-8
sudo update-locale
# and restart web server
sudo service apache2 restart

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

Функция-враппер для gettext:

// simple
// equal to gettext('Message')
__('Message');

// simple replace of one or more argument(s)
// equal to sprintf(gettext('Message to %s'), 'Username')
__('Message to %s', 'Username');

Ну и для ngettext:

// plural form + sprintf
// equal to sprintf(ngettext('%d comment', '%d comments', 4), 4)
_n('%d comment', '%d comments', 4, 4)

// plural form + sprintf
// equal to sprintf(ngettext('%d comment', '%d comments', 4), 4, 'Topic')
_n('%d comment to %s', '%d comments to %s', 4, 4, 'Topic')
Clone this wiki locally