<rmcreative>

RSS

Все заметки с тегами «yii, t»

Можно уточнить:

    (3)
  1. Yii::t и исходный язык для сообщений

    16 мая 2011

    При выборе исходного языка для сообщений, а именно того, который используется в Yii::t('app', 'message'), стоит задуматься о будущем.

    Выбрав Русский вы изначально усложняете себе жизнь: над переводами смогут работать только те, кто знает Русский. С Английским дела обстоят намного лучше: вторым языком его изучают почти во всём мире.

    5 комментариев
  2. Yii::t и перевод множественных форм слова по CLDR 2

    16 января 2011

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

    Подстановка параметров, число передаётся как {n}

    Yii::t('test', '{username} has a cucumber|{username} has {n} cucumbers',
    array(5, '{username}' => 'samdark'));

    Получим:

    samdark has 5 cucumbers
    

    Замена параметра {n}

    function convertNumber($number)
    {
        // число прописью
        return $number;
    }
     
    Yii::t('test', '{n} cucumber|{n} cucumbers',
    array(5, '{n}' => convertNumber(5)));

    Получим:

    five cucumbers
    

    Дробные числа

    Yii::t('app', 'cucumber|cucumbers', 1.5);

    В файле перевода за дроби в Русском отвечает четвёртый параметр:

    'cucumber|cucumbers' => 'огурец|огурца|огурцов|огурца',

    На выходе:

    огурца
    

    Полное описание можно найти на странице «Интернационализация» полного руководства.

    10 комментариев
  3. Yii::t и перевод множественных форм слова по CLDR

    13 января 2011

    В транк Yii попала ещё одна интересная возможность, которая облегчит жизнь всем, кто имеет дело с мультиязычными проектами, а именно поддержка перевода множественных форм слова по правилам CLDR в Yii::t.

    Теперь для человеческого перевода строк вроде «10 яблок», «51 яблоко» не нужно писать страшные правила, а процесс будет выглядеть как показано ниже.

    В коде делаем всё как обычно:

    echo '10 '.Yii::t('app', 'apple', array(10));
    echo '51 '.Yii::t('app', 'apple', array(51));

    В файле перевода для Русского записываем:

    return array(
        'apple' => 'яблоко|яблока|яблок',
    );

    Для Английского, соответственно будет:

    return array(
        'apple' => 'apple|apples',
    );

    Полный список правил доступен на сайте CLDR.

    17 комментариев