переводы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: переводы

Сообщение lancedevnull »

https://github.com/yiisoft/yii2/blob/ma ... rm.php#L42

надо обернуть фразу в Yii::t('filename', 'Incorect....');
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: переводы

Сообщение zelenin »

Romero писал(а):
Sam Dark писал(а):https://github.com/yiisoft/yii2/blob/ma ... lations.md

Сообщения для Русского уже переведены, но буду рад корректировкам.
Привет.

Я так понимаю, еще не все валидационные сообщения переведены? В частности: Incorrect username or password. Можно на пальцах объяснить на примере этого сообщения, как сделать его перевод? Добавил соответствующий элемент в vendor/yiisoft/yii2/messages/ru/yii.php - не помогло ('language' => 'ru-RU' в настройках прописан).
нашел только одно употребление этой фразы в модели LoginForm

$this->addError('password', 'Incorrect username or password.'); - тут оно захардкодено на английском. Исправьте на $this->addError('password', Yii::t('app','Incorrect username or password.')); и переведите используя документацию.
Romero
Сообщения: 40
Зарегистрирован: 2013.01.16, 14:35

Re: переводы

Сообщение Romero »

lancedevnull писал(а):https://github.com/yiisoft/yii2/blob/ma ... rm.php#L42

надо обернуть фразу в Yii::t('filename', 'Incorect....');
Спасибо. Вот так работает:

Код: Выделить всё

$this->addError('password', Yii::t('yii', 'Incorrect username or password.')); 
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: переводы

Сообщение VaNnOrus »

Поставил в настройках language и sourceLanguage на ru_RU, настроил компонент i18n:

Код: Выделить всё

i18n => [
 translations => [
  yii => [
   class => yii\i18n\PhpMessageSource,
   basePath => @common/message, 
   sourceLanguage => en_US,
   fileMap => [
    yii => yii.php
   ]
  ]
 ]
] 
Но "перевода из коробки" нет.

Что не так?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: переводы

Сообщение zelenin »

зачем вам что-то переводить, если у вас язык-источник - русский, и приложение переводить надо на русский. С русского на русский переводить?
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: переводы

Сообщение VaNnOrus »

Хм. Поставил язык кода en_US - сообщения валидатора русифицировались, но ведь если не ставить сурсленгвич на русский, то не работают конструкции: Здесь {n, plural, =0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# кота}}!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: переводы

Сообщение zelenin »

VaNnOrus писал(а):Хм. Поставил язык кода en_US - сообщения валидатора русифицировались, но ведь если не ставить сурсленгвич на русский, то не работают конструкции: Здесь {n, plural, =0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# кота}}!
источник должен быть английский. Примите как данность, если хочется делать серьезно.
А дальше разбирайтесь почему и что у вас не работает.
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: переводы

Сообщение VaNnOrus »

Я и не против английского источника, но в какой-то теме был вопрос почему не работает эта конструкция для подстановки окончания и товарищ Сэм Дарк сказал поставить источник русский - действительно все заработало.
Пока писал сообщение дошло, что эта штука будет работать на русском только через файл перевода, да?

И еще вопрос - не перевелись лейблы форм входа/регистрации (по сути вообще любых форм). Как их перевести?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: переводы

Сообщение zelenin »

VaNnOrus писал(а):Пока писал сообщение дошло, что эта штука будет работать на русском только через файл перевода, да?
в коде приложения у вас должно быть на английском. Все английские фразы должны быть переведены в файлах переводов.
VaNnOrus писал(а):И еще вопрос - не перевелись лейблы форм входа/регистрации (по сути вообще любых форм). Как их перевести?
это не стандартные фразы фреймворка, поэтому не переводятся.
Почитайте документацию
Можно использовать http://www.yiiframework.ru/forum/viewto ... =9&t=18380
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: переводы

Сообщение VaNnOrus »

Поставил Ваш модуль, поигрался с ним. Как все-таки перевести лэйблы актив форм?
Не дело ведь, что все по-русски выводится, кроме названий полей.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: переводы

Сообщение zelenin »

VaNnOrus писал(а):Поставил Ваш модуль, поигрался с ним. Как все-таки перевести лэйблы актив форм?
Не дело ведь, что все по-русски выводится, кроме названий полей.
если фраза не переведена, то она выводится в моем модуле и ее можно перевести. если настроили по инструкции то все будет работать
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: переводы

Сообщение VaNnOrus »

Так ведь поля у актив форм видимо не обернуты в yii::t, то что я оборачивал естественно появилось как не переведенное.
Я говорю о переводе $form-> field ($ model,'name').
А какие там настройки? Добавить в конфиг и применить миграцию. Модуль работает.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: переводы

Сообщение zelenin »

VaNnOrus писал(а):Так ведь поля у актив форм видимо не обернуты в yii::t, то что я оборачивал естественно появилось как не переведенное.
Я говорю о переводе $form-> field ($ model,'name').
А какие там настройки? Добавить в конфиг и применить миграцию. Модуль работает.
в $form->field выводятся лейблы из $model->attributeLabels(). Вот тут их и нужно обернуть в Yii::t
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: переводы

Сообщение VaNnOrus »

zelenin писал(а):
VaNnOrus писал(а):Так ведь поля у актив форм видимо не обернуты в yii::t, то что я оборачивал естественно появилось как не переведенное.
Я говорю о переводе $form-> field ($ model,'name').
А какие там настройки? Добавить в конфиг и применить миграцию. Модуль работает.
в $form->field выводятся лейблы из $model->attributeLabels(). Вот тут их и нужно обернуть в Yii::t
Спасибо, совсем забыл про attributeLabels :)
С yii особо не работал, видел только как проект один писали.

Кстати, чтоб уж тему отдельную не поднимать: в чем разница между и ?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: переводы

Сообщение zelenin »

VaNnOrus писал(а):Кстати, чтоб уж тему отдельную не поднимать: в чем разница между и ?
php-namespaces. Лучше в документацию на php.net
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: переводы

Сообщение VaNnOrus »

Просто в том же сайтКонтроллере в адвансед приложении и со слешем используется и без. И какой-то логики в этом не вижу (да и работает и то, и другое).
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: переводы

Сообщение zelenin »

VaNnOrus писал(а):Просто в том же сайтКонтроллере в адвансед приложении и со слешем используется и без. И какой-то логики в этом не вижу (да и работает и то, и другое).
\Yii означает что класс в корневом неймспейсе. Yii означает, что класс либо в том же неймспейсе либо импортирован через use Yii;
Some Guy
Сообщения: 9
Зарегистрирован: 2014.10.12, 02:38

Re: переводы

Сообщение Some Guy »

Здравствуйте, товарищи.

Случай №1:

Код: Выделить всё

//в конфиге:
    'sourceLanguage' => 'ru-RU',
    'language' => 'ru-RU',

Код: Выделить всё

//в коде view:
            foreach(range(5,0) as $n)
                echo '<br>' . \Yii::t('app',
                        'Здесь {n, plural, =0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# кота}}!',
                        ['n' => $n]);
Случай №2:

Код: Выделить всё

//в конфиге:
    'sourceLanguage' => 'en-US',
    'language' => 'ru-RU',

Код: Выделить всё

//в коде view:
            foreach(range(5,0) as $n)
                echo '<br>' . \Yii::t('app',
                        'There are {n} cat(s)!',
                        ['n' => $n]);

Код: Выделить всё

//в файле messages\ru-RU\app.php :
    'There are {n} cat(s)!' =>
        'Здесь {n, plural, =0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# кота}}!',
В обоих случаях выводит следующее:

Код: Выделить всё

Здесь 5 кота!
Здесь 4 кота!
Здесь 3 кота!
Здесь 2 кота!
Здесь 1 кот!
Здесь котов нет! 
То есть применяется логика английского языка.

Кто прав, кто виноват, как быть?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: переводы

Сообщение samdark »

А переводы как настроены?
Some Guy
Сообщения: 9
Зарегистрирован: 2014.10.12, 02:38

Re: переводы

Сообщение Some Guy »

Sam Dark писал(а):А переводы как настроены?
В общем-то, самым стандартным образом:

Код: Выделить всё

        'i18n' => [
            'translations' => [
                'app*' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                    'basePath' => '@app/messages',
                    'sourceLanguage' => 'en-US',
//                    'sourceLanguage' => 'ru-RU',
                    'fileMap' => [
                        'app' => 'app.php',
//                    'app/error' => 'error.php',
                    ],
                ],
            ],
        ],
Ответить