Мультиязычность - язык в url
Мультиязычность - язык в url
Добрый день
Как можно реализовать мультиязычность в yii 2 для адресов вида:
domain.com/page (ru)
domain.com/en/page
domain.com/de/page
Спаcибо!
Как можно реализовать мультиязычность в yii 2 для адресов вида:
domain.com/page (ru)
domain.com/en/page
domain.com/de/page
Спаcибо!
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Мультиязычность - язык в url
Что именно подразумевается по мультиязычностью?
Нравится Yii? Давайте сделаем его лучше!.
Re: Мультиязычность - язык в url
Выбирать язык приложения для i18n и локаль в зависимости от языка полученного из URL
В yii1 реализовывалось с помощью экстенда UrlManager и необходимости дописывать языки в правила роутинга.
Что-то типо этого (не самая красивая реализация):
http://www.yiiframework.com/wiki/294/se ... dget-i18n/
Есть ли в yii2 возможность сделать это красивее или хотя-бы подобным образом?
В yii1 реализовывалось с помощью экстенда UrlManager и необходимости дописывать языки в правила роутинга.
Что-то типо этого (не самая красивая реализация):
http://www.yiiframework.com/wiki/294/se ... dget-i18n/
Есть ли в yii2 возможность сделать это красивее или хотя-бы подобным образом?
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Мультиязычность - язык в url
Подобным есть, красивее нет.
Нравится Yii? Давайте сделаем его лучше!.
Re: Мультиязычность - язык в url
извиняюсь, что подниму старую тему.
как раз делаю мультиязычность. Я так понял, что можно сделать обработку запросов в отдельном классе.
но нигде не написано в какой папке создавать фаил CarUrlRule.php. Шаблон basic.
по логике вещей в корневой папке нужно создать папку components и там уже его?
как раз делаю мультиязычность. Я так понял, что можно сделать обработку запросов в отдельном классе.
Код: Выделить всё
['class' => 'app\components\CarUrlRule', 'connectionID' => 'db', /* ... */],
по логике вещей в корневой папке нужно создать папку components и там уже его?
Re: Мультиязычность - язык в url
да, app - это алиас для корневой папки, той в которой controllers, web, config папки.de1phi писал(а): по логике вещей в корневой папке нужно создать папку components и там уже его?
Напишите в index.php в конце файла:
Код: Выделить всё
var_dump(Yii::$aliases);
Re: Мультиязычность - язык в url
Как раз столкнулся с необходимостью мультиязычности в проекте. Поскольку я в yii новичек, застрял на этом вопросе:(
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
Re: Мультиязычность - язык в url
http://habrahabr.ru/post/226931/xmana писал(а):Как раз столкнулся с необходимостью мультиязычности в проекте. Поскольку я в yii новичек, застрял на этом вопросе:(
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
Re: Мультиязычность - язык в url
в статье конечно все очень коряво и в общем нерабоче, т.к. работать только будет при определенных настройках и урлах. Хорошо, если заведется, но новичок вряд ли сможет допилить.MrArthur писал(а):http://habrahabr.ru/post/226931/xmana писал(а):Как раз столкнулся с необходимостью мультиязычности в проекте. Поскольку я в yii новичек, застрял на этом вопросе:(
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
Re: Мультиязычность - язык в url
недопилил:(zelenin писал(а):в статье конечно все очень коряво и в общем нерабоче, т.к. работать только будет при определенных настройках и урлах. Хорошо, если заведется, но новичок вряд ли сможет допилить.MrArthur писал(а):http://habrahabr.ru/post/226931/xmana писал(а):Как раз столкнулся с необходимостью мультиязычности в проекте. Поскольку я в yii новичек, застрял на этом вопросе:(
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
застрял на том, что в урл добавляется язык, и по концовке на все 404:(. ошибок нет....
Помогите, плиз, кто может! stardock777@skype.com, xmana777@jabber.ru...
Re: Мультиязычность - язык в url
в yii2 уже есть поддержка хранения языков(хоть в файлах, хоть в базе), незаморачиваемся, осталось сделать нормальный интерфейс, читаем тут общую схему(все очень просто и понятно)
http://www.yiiframework.com/wiki/294/se ... dget-i18n/
в конфиге для поддержки языков пишем что-то вроде такого правила, может с какими-то изменениями:
обновленные файлы для второй версии yii берем тут:
https://github.com/AstRonin/yii2_improv ... components
Controller.php, UrlManager.php
и дальше используешь через Yii:t
http://www.yiiframework.com/doc-2.0/gui ... -i18n.html
http://www.yiiframework.com/wiki/294/se ... dget-i18n/
в конфиге для поддержки языков пишем что-то вроде такого правила, может с какими-то изменениями:
Код: Выделить всё
'<language:(est|ru|en)>/<module:\w+>/<controller:\w+>/<action:\w+>/*'
https://github.com/AstRonin/yii2_improv ... components
Controller.php, UrlManager.php
и дальше используешь через Yii:t
http://www.yiiframework.com/doc-2.0/gui ... -i18n.html
Re: Мультиязычность - язык в url
зачем для всего лепить базовый контроллер? невсегда есть возможность, а главное желание наследоваться от чего-то. Делай более гибко.
Да и прописывать языки во все правила - сомнительное удовольствие. Поэтому фейл.
Лучше допилить тот код, что в статье на хабре. Я кстати видел вариации на гитхабе, но не ревьюировал на предмет "кошерности".
Да и прописывать языки во все правила - сомнительное удовольствие. Поэтому фейл.
Лучше допилить тот код, что в статье на хабре. Я кстати видел вариации на гитхабе, но не ревьюировал на предмет "кошерности".
Re: Мультиязычность - язык в url
потому что для новичка это гораздо проще
Re: Мультиязычность - язык в url
вам это зачем, а не новичку? это использовать можно только в частных случаях, а создавать нужно универсальные решения.astronin писал(а):потому что для новичка это гораздо проще
Re: Мультиязычность - язык в url
По-моему это общий случай для быстрого поднятия мультиязычности на сайте без головоломки. Можно и не через Controller, вариантов много разных. Такой схемы с различными дополнениями в зависимости от требований мне хватает с головой.zelenin писал(а):вам это зачем, а не новичку? это использовать можно только в частных случаях, а создавать нужно универсальные решения.astronin писал(а):потому что для новичка это гораздо проще
А на счет универсальности, так это должно решаться на уровне фреймворка(хоть убейте не пойму, почему этого там нет, это же базовая вещь...), а не писаний велосипедов каждым программером отдельно.
Re: Мультиязычность - язык в url
Не сочтите за спам, но буквально неделю назад бился над этой проблемой.
В результате вышло довольно неплохо (на мой взгляд)
Если ещё актуально, то можете посмотреть мой велосипед здесь - http://lavrik-v.ru/info/254/Yii_Framewo ... _sajt.html
Именно необходимым топикстартеру методом (передача префикса языка в url-е)
В результате вышло довольно неплохо (на мой взгляд)
Если ещё актуально, то можете посмотреть мой велосипед здесь - http://lavrik-v.ru/info/254/Yii_Framewo ... _sajt.html
Именно необходимым топикстартеру методом (передача префикса языка в url-е)
lavrik-v.ru - моя напоминалка по php.
Re: Мультиязычность - язык в url
здесь о yii2lavrik писал(а):Не сочтите за спам, но буквально неделю назад бился над этой проблемой.
В результате вышло довольно неплохо (на мой взгляд)
Если ещё актуально, то можете посмотреть мой велосипед здесь - http://lavrik-v.ru/info/254/Yii_Framewo ... _sajt.html
Именно необходимым топикстартеру методом (передача префикса языка в url-е)
Re: Мультиязычность - язык в url
Мы сделали такое для уии2.
Получилось довольно гибко, я статью напишу на хабрик через недели 3 когда будет отпуск.
Можете подождать.
Получилось довольно гибко, я статью напишу на хабрик через недели 3 когда будет отпуск.
Можете подождать.
Re: Мультиязычность - язык в url
Если будете делать сами.
1. удобно белать в OnBeforeRequest
2. когда из УРЛа будете удалять язык для получения правильного роута делать это так
3. Ни в коем случае не менять
4. учесть что в yii2 при аяксовом запросе редирект сделает reload на стороне клиента
1. удобно белать в OnBeforeRequest
2. когда из УРЛа будете удалять язык для получения правильного роута делать это так
Код: Выделить всё
class Request extends \yii\web\Request
{
protected function resolvePathInfo()
{
return MultiLingualTool::removeLangFromUrl(parent::resolvePathInfo());
}
}
Код: Выделить всё
$request->_url
Re: Мультиязычность - язык в url
Только начал работу с Yii
И сразу возник вопрос с локализацией. Как использовать Yii:t() я понял. Но вот еще я понял что брать язык из url`а это целая проблема и не все так просто как в silex`е(или symfony).
Решения так и нет? Для базового приложения. Для расширенного я нашел, и то... Язык только из базы, а мне бы из PhpMessageSource для базового.
И сразу возник вопрос с локализацией. Как использовать Yii:t() я понял. Но вот еще я понял что брать язык из url`а это целая проблема и не все так просто как в silex`е(или symfony).
Решения так и нет? Для базового приложения. Для расширенного я нашел, и то... Язык только из базы, а мне бы из PhpMessageSource для базового.