Как создать мультиязычный ярлык в Yii - PullRequest
6 голосов
/ 09 декабря 2010

Мне интересно, использует ли среда Yii определенные атрибуты Labels в мультиязычном процессе.

Так что, если у меня будет

 public function attributeLabels() {
        return array(
            'email' => 'Email address',
            'rememberMe' => 'Remember me next time',
            'password' => 'Password'
        );
    }

Будет ли это переведено на какой-либо другой язык?Или мне нужно что-то делать вручную, чтобы работать?

Ответы [ 3 ]

15 голосов
/ 10 декабря 2010

Yii не переводит это автоматически. Вам необходимо использовать встроенный в Yii i18n, вручную добавить переводы и изменить метки следующим образом:

 public function attributeLabels() {
    return array(
        'email' => Yii::t('account','Email address'),
        'rememberMe' => Yii::t('account','Remember me next time'),
        'password' => Yii::t('account','Password')
    );
}

Более подробную информацию об интернационализации вашего приложения вы можете получить на Краткое руководство по интернационализации вашего приложения в Yii Framework

1 голос
/ 20 июня 2011

Я предполагал, что Yii AR будет запускать getAttributeLabel через Yii :: t.Не желая делать все это копирование и вставку на десятках моделей, я добавил эту функцию в свой промежуточный класс AR:

public function getAttributeLabel($attribute)
{
    $baseLabel = parent::getAttributeLabel($attribute);
    return Yii::t(get_called_class(), $baseLabel);
}

Теперь, чтобы написать команду оболочки, которая перебирает модели и добавляет их меткифайл сообщения.

1 голос
/ 10 декабря 2010

Ну, вы можете использовать встроенную систему перевода для перевода меток ваших атрибутов, например:

 public function attributeLabels() {
    return array(
        'email' => Yii::t('myapp','Email address'),
    );
}

, а затем в папке сообщений создайте каталог для вашего языка, например:

messages\dk\myapp.php

myapp.php должен вернуть перевод, например:

return array('Email address' => 'TRANSLATION...');

Далее вам нужно установить язык вашего приложения, например, в файле конфигурации.

'language' => 'dk',
...