<rmcreative>

RSS

GetText и Yii

29 июня 2010

Возможности для создания многоязычных приложений в Yii довольно широки. В том числе реализована поддержка переводов в формате GNU GetText. Для этого используется CGettextMessageSource.

Для использования GetText надо настроить соответствующий компонент в main.php:

'components' => array(
  'messages' => array(
    'class' => 'CGettextMessageSource',
    //
  )
)

Плюсы самого GetText, думаю, описывать не стоит. Вместо этого лучше дать ссылку на старую, но до сих пор актуальную статью на phpclub: «Многоязычные приложения. Профессиональная работа».

Утилита для редактирования и компиляции переводов переехала на http://www.poedit.net/.

Комментарии RSS

  1. №2668
    Tokolist
    Tokolist 30 июня 2010 г., 1:22:11

    По моему CPhpMessageSource плюс команда message ничем не хуже :)

    Или я ошибаюсь?

  2. №2675
    Sam
    Sam 30 июня 2010 г., 12:59:15

    Производительность у gettext будет побольше.

  3. №2681
    hybroid
    hybroid 02 июля 2010 г., 16:45:12

    Когда я последний раз смотрел сорцы этого класса, то я был в шоке от того, что Yii использует не gettext. С этом классе реализован тупой разбор файла перевода в формате GNU gettext (.po, либо .mo) в массив и дальнейшая замена строк при помощи той же ф-ии Yii::t().

    Разочаровало меня это несказанно =) Честно говоря, до сих пор не понимаю данного решения. В таком случае выгоднее использование CPHPMessageSource (с точки зрения производительности).

    В то время задумался о расширении для Yii, реализовывающего именно поддержку gettext. Хотя бы из-за ngettext, т.к. текущая альтернатива Yii для вывода сообщений, зависимых от числа - это полный %$#@!& (видели, что нужно написать в каждой строке для перевода, исходя из численных форм для русского языка?)

    Итог: на данный момент данный класс имеет лишь одно преимущество - это формат .mo/.po, что позволяет использовать специализированный софт для локализации вашего приложения (poEdit, например).

  4. №2688
    Sam
    Sam 02 июля 2010 г., 22:57:45

    hybroid

    Спасибо. Забыл глянуть в исходник. Действительно реализовано при помощи аналога Pear.

    видели, что нужно написать в каждой строке для перевода, исходя из численных форм для русского языка?
    

    Да, не радует.

    Займусь этими вопросами после релиза.

  5. №2692
    hybroid
    hybroid 05 июля 2010 г., 3:20:51

    Я тоже задумался этим вопросом. Займусь в ближайшее время. После поделюсь своей реализацией. Может почерпнёте что-то..

    Меня ещё задевает за живое использование Yii::t() =) Это жесть какая-то, ИМХО. По-моему использование __() - это почти стандарт.

    Я вообще недавно стал посматривать на Yii. У вас, разработчиков, есть какой-то issue-трекер? Что-то в первого взгляда не нашёл. Или искал плохо.

    PS: Подписывание на комменты кажется не сработало.

  6. №2693
    hybroid
    hybroid 05 июля 2010 г., 3:25:09

    Пардон, как-то не заметил Google Code =)

  7. №3196
    Тормоз
    Тормоз 08 окт. 2010 г., 18:54:03

    Спасибо за ссылку на PHP FAQ по gettext, сейчас очень актуально для меня.

  8. №8695
    summ3r
    summ3r 18 дек. 2013 г., 19:25:37

    Добрый день! Если Вы заинтересованы в локализации web-ПО, ПО для персональных компьютеров, ПО для мобильных устройств либо иного вида программного обеспечения, я рекомендую Вам использовать этот инструмент на базе web: poeditor.com/ POEditor является интуитивным, хорошо проработанным инструментом, обладающим рядом полезных свойств, которые помогают организовать процесс управления переводом. Он поддерживает множество популярных форматов файлов и обладает собственным API, что обеспечивает лучшую автоматизацию. Желаю Вам больших успехов в Ваших проектах!

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.