VitalyLiber
@VitalyLiber
web-developer

Как русифировать сообщения валидации и др. на Yii2?

Создал приложение на Yii2. Прочитал документацию по поводу локализации. Однако, чтобы вникнуть в процесс, необходимо увидеть локализацию на примере.

Есть ли у кого-нибудь пример локализации приложения на русский язык.

Требуется перевести, к примеру, сообщения об ошибках валидации.
  • Вопрос задан
  • 6302 просмотра
Пригласить эксперта
Ответы на вопрос 5
@PapaStifflera
Родился, вырос...
В конфиге приложения пропишите русский язык.
Ответ написан
Комментировать
mitaichik
@mitaichik
Если лейблы - то у моделей есть поле attributeLabels - там пишешь имена с помощью Yii::t

Сообщения о валидации - то у каждого валидатора есть поле message (настравиается в rules модели для каждого валидатора отдельно), куда тоже пишешь сообщение с помощью Yii::t. У некоторых валидаторов есть много полей на разные случаи (например, для StringValidator - tooShort, tooLong, notEqual) - их тоже надо указывать при конфгурации валидатора (если используешь эти возможности валидации, например, проверку на минимальную длину строки).

Ну и естествнно, в конфиге приложения прописать русский язык
Ответ написан
Комментировать
@Akellacom
CTO
Как вам выше ответили, используйте Yii::t

В конфиге
'language' => 'ru-RU',

'components' => [
'i18n' => [
            'translations' => [
                '*' => [
                    'sourceLanguage' => 'ru-RU',
                    'class' => 'yii\i18n\PhpMessageSource',
                    'basePath' => '@app/messages',
                    'fileMap' => [
                        'app' => 'app.php',
                        'app/error' => 'error.php',
                    ],
                ],
            ],
        ],
]


messages/ru-RU/app.php

<?php
return [
	'Create' => 'Добавить',
	'Update' => 'Обновить',
	'Delete' => 'Удалить',
	'Create {modelClass}' => 'Добавить {modelClass}',
	'Update {modelClass}' => 'Обновить {modelClass}',
]


И вот так использовать
Yii::t('app', 'Create');

www.yiiframework.com/doc-2.0/guide-tutorial-i18n.html
rmcreative.ru/blog/post/yii2-perevod-soobscheniy
Ответ написан
VitalyLiber
@VitalyLiber Автор вопроса
web-developer
Ок. Это понятно.

Как перевести на русский поле activeform?

Например, username в меню авторизации?
Ответ написан
Комментировать
@lebedyncrs
public function rules() {
return [
['crmSegment_Id', 'required', 'message' => 'сообщение об ошибке'],
['AssignedTo', 'required', 'message' => 'сообщение об ошибке'],
];
}
не самый удачный способ но можно так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы