Перевод модулей

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Перевод модулей

Сообщение VaNnOrus »

Не могу понять что-то как использовать для перевода модуля файлы в самом модуле без правки общих настроек приложения.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Перевод модулей

Сообщение maleks »

Если перевод страниц которые будут открываться внутри этого модуля, то в init() класса модуля надо настраивать i18n компонент.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: Перевод модулей

Сообщение VaNnOrus »

А поконкретнее? В init в return отдавать

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

return [
    'components' => [
        'i18n' => [
            'translations' => [
                'commonInterface' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                    'basePath' => 'messages',
                    'sourceLanguage' => 'en_US',
                ],
            ],
        ],
    ],
];
 
что ль?
И как писать basePath?
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: Перевод модулей

Сообщение chungachguk »

По конкретнее вот так
https://github.com/yiisoft/yii2/blob/ma ... e-messages

В свою очередь хотелось бы узнать как подключить файлы перевода модуля для всей системы без правки основного конфига и инициализации самого модуля. Может это как-то решается через bootstrap, но я не понял что там к чему.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перевод модулей

Сообщение zelenin »

chungachguk писал(а):По конкретнее вот так
https://github.com/yiisoft/yii2/blob/ma ... e-messages

В свою очередь хотелось бы узнать как подключить файлы перевода модуля для всей системы без правки основного конфига и инициализации самого модуля. Может это как-то решается через bootstrap, но я не понял что там к чему.
в Bootstrap::bootstrap($app) передается инстанс приложения, в котором вы можете изменить все что хотите, в том числе и настройки i18n
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: Перевод модулей

Сообщение VaNnOrus »

chungachguk писал(а):По конкретнее вот так
https://github.com/yiisoft/yii2/blob/ma ... e-messages
Спасибо :)

И еще вопрос - как "на лету" сменить язык приложения? Вернее даже где. Очевидно, это где-то до рендеринга делать нужно..
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перевод модулей

Сообщение zelenin »

VaNnOrus писал(а):
chungachguk писал(а):По конкретнее вот так
https://github.com/yiisoft/yii2/blob/ma ... e-messages
Спасибо :)

И еще вопрос - как "на лету" сменить язык приложения? Вернее даже где. Очевидно, это где-то до рендеринга делать нужно..
в том же бутстрапе
Аватара пользователя
chungachguk
Сообщения: 435
Зарегистрирован: 2012.07.17, 11:52

Re: Перевод модулей

Сообщение chungachguk »

zelenin писал(а):
chungachguk писал(а):По конкретнее вот так
https://github.com/yiisoft/yii2/blob/ma ... e-messages

В свою очередь хотелось бы узнать как подключить файлы перевода модуля для всей системы без правки основного конфига и инициализации самого модуля. Может это как-то решается через bootstrap, но я не понял что там к чему.
в Bootstrap::bootstrap($app) передается инстанс приложения, в котором вы можете изменить все что хотите, в том числе и настройки i18n
Т.е. получается, что я должен создать класс Bootstrap реализующий BootstrapInterface, разместить его у себя в модуле, в методе bootstrap этого класа прописать добавление маппинга переводов своего модуля к основному приложению, и указать этот класс в конфиге приложения в разделе bootstrap=>array(...). Так?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перевод модулей

Сообщение zelenin »

chungachguk писал(а):
zelenin писал(а):
chungachguk писал(а):По конкретнее вот так
https://github.com/yiisoft/yii2/blob/ma ... e-messages

В свою очередь хотелось бы узнать как подключить файлы перевода модуля для всей системы без правки основного конфига и инициализации самого модуля. Может это как-то решается через bootstrap, но я не понял что там к чему.
в Bootstrap::bootstrap($app) передается инстанс приложения, в котором вы можете изменить все что хотите, в том числе и настройки i18n
Т.е. получается, что я должен создать класс Bootstrap реализующий BootstrapInterface, разместить его у себя в модуле, в методе bootstrap этого класа прописать добавление маппинга переводов своего модуля к основному приложению, и указать этот класс в конфиге приложения в разделе bootstrap=>array(...). Так?
все верно.
если модуль будете распространять через композер, то в раздел bootstratp указывать не нужно, а только подправить composer.json
Аватара пользователя
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 »

zelenin писал(а):
VaNnOrus писал(а):
А, к слову, перевод Вашего модуля не подхватывается. Сообщения появляются в базе для перевода. По идее так и должно быть, ведь отказ от файлов смысл модуля, но тогда нужно в миграции сразу перевод модуля дописать
а вы нашли в моем модуле перевод? его там нет.
А это что?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перевод модулей

Сообщение zelenin »

VaNnOrus писал(а): А это что?
а, ну да. Прошу прощения )
для этого есть этот инструмент, хотя наверное нужна миграция.
https://github.com/zelenin/yii2-i18n-mo ... -db-import
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: Перевод модулей

Сообщение VaNnOrus »

zelenin писал(а):
VaNnOrus писал(а): А это что?
а, ну да. Прошу прощения )
для этого есть этот инструмент, хотя наверное нужна миграция.
https://github.com/zelenin/yii2-i18n-mo ... -db-import
Да миграция нужна. Инструмент-то для импорта в бд переводов приложения. Логично, что модуль перевода итак должен быть переведен :)
Аватара пользователя
VaNnOrus
Сообщения: 96
Зарегистрирован: 2014.10.09, 12:50

Re: Перевод модулей

Сообщение VaNnOrus »

zelenin писал(а):
VaNnOrus писал(а):
chungachguk писал(а):По конкретнее вот так
https://github.com/yiisoft/yii2/blob/ma ... e-messages
Спасибо :)

И еще вопрос - как "на лету" сменить язык приложения? Вернее даже где. Очевидно, это где-то до рендеринга делать нужно..
в том же бутстрапе
А из виджета можно такое сделать? Что-то даже не представляю с какой стороны подойти :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перевод модулей

Сообщение zelenin »

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

Re: Перевод модулей

Сообщение VaNnOrus »

zelenin писал(а):
VaNnOrus писал(а): А из виджета можно такое сделать? Что-то даже не представляю с какой стороны подойти :)
язык должен быть сменен в классе, загружаемом в бутстрапе. Либо создаете такой класс внутри своего приложения, либо, как я показал, в расширении.
О как. Нашел в документации:
This event is triggered before an application handles a request. The actual event name is beforeRequest.

When this event is triggered, the application instance has been configured and initialized. So it is a good place to insert your custom code via the event mechanism to intercept the request handling process. For example, in the event handler, you may dynamically set the yii\base\Application::$language property based on some parameters.
Вопрос только где ловить этот эвент. Не в конфиге же? :?

Upd. В index.php что ль делать это?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перевод модулей

Сообщение zelenin »

VaNnOrus писал(а):
zelenin писал(а):
VaNnOrus писал(а): А из виджета можно такое сделать? Что-то даже не представляю с какой стороны подойти :)
язык должен быть сменен в классе, загружаемом в бутстрапе. Либо создаете такой класс внутри своего приложения, либо, как я показал, в расширении.
О как. Нашел в документации:
This event is triggered before an application handles a request. The actual event name is beforeRequest.

When this event is triggered, the application instance has been configured and initialized. So it is a good place to insert your custom code via the event mechanism to intercept the request handling process. For example, in the event handler, you may dynamically set the yii\base\Application::$language property based on some parameters.
Вопрос только где ловить этот эвент. Не в конфиге же? :?

Upd. В index.php что ль делать это?
вы же процитировали мой ответ.
Ответить