Мультиязычность - язык в url

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Alex.Sh
Сообщения: 80
Зарегистрирован: 2011.08.05, 12:38
Контактная информация:

Мультиязычность - язык в url

Сообщение Alex.Sh »

Добрый день

Как можно реализовать мультиязычность в yii 2 для адресов вида:
domain.com/page (ru)
domain.com/en/page
domain.com/de/page

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

Re: Мультиязычность - язык в url

Сообщение samdark »

Что именно подразумевается по мультиязычностью?
Alex.Sh
Сообщения: 80
Зарегистрирован: 2011.08.05, 12:38
Контактная информация:

Re: Мультиязычность - язык в url

Сообщение Alex.Sh »

Выбирать язык приложения для i18n и локаль в зависимости от языка полученного из URL
В yii1 реализовывалось с помощью экстенда UrlManager и необходимости дописывать языки в правила роутинга.
Что-то типо этого (не самая красивая реализация):
http://www.yiiframework.com/wiki/294/se ... dget-i18n/

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

Re: Мультиязычность - язык в url

Сообщение samdark »

Подобным есть, красивее нет.
de1phi
Сообщения: 145
Зарегистрирован: 2013.12.23, 20:02

Re: Мультиязычность - язык в url

Сообщение de1phi »

извиняюсь, что подниму старую тему.

как раз делаю мультиязычность. Я так понял, что можно сделать обработку запросов в отдельном классе.

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

['class' => 'app\components\CarUrlRule', 'connectionID' => 'db', /* ... */],
но нигде не написано в какой папке создавать фаил CarUrlRule.php. Шаблон basic.

по логике вещей в корневой папке нужно создать папку components и там уже его?
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Мультиязычность - язык в url

Сообщение maleks »

de1phi писал(а): по логике вещей в корневой папке нужно создать папку components и там уже его?
да, app - это алиас для корневой папки, той в которой controllers, web, config папки.
Напишите в index.php в конце файла:

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

var_dump(Yii::$aliases); 
и можете просмотреть какие алиасы у вас в системе.
xmana
Сообщения: 3
Зарегистрирован: 2014.10.15, 16:45
Откуда: Украина, Львов

Re: Мультиязычность - язык в url

Сообщение xmana »

Как раз столкнулся с необходимостью мультиязычности в проекте. Поскольку я в yii новичек, застрял на этом вопросе:(
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

Re: Мультиязычность - язык в url

Сообщение Faenir »

xmana писал(а):Как раз столкнулся с необходимостью мультиязычности в проекте. Поскольку я в yii новичек, застрял на этом вопросе:(
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
http://habrahabr.ru/post/226931/
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Мультиязычность - язык в url

Сообщение zelenin »

MrArthur писал(а):
xmana писал(а):Как раз столкнулся с необходимостью мультиязычности в проекте. Поскольку я в yii новичек, застрял на этом вопросе:(
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
http://habrahabr.ru/post/226931/
в статье конечно все очень коряво и в общем нерабоче, т.к. работать только будет при определенных настройках и урлах. Хорошо, если заведется, но новичок вряд ли сможет допилить.
xmana
Сообщения: 3
Зарегистрирован: 2014.10.15, 16:45
Откуда: Украина, Львов

Re: Мультиязычность - язык в url

Сообщение xmana »

zelenin писал(а):
MrArthur писал(а):
xmana писал(а):Как раз столкнулся с необходимостью мультиязычности в проекте. Поскольку я в yii новичек, застрял на этом вопросе:(
Подскажите пожалуйста, желательно на примере, как организвать мультиязычность на сайте, с хранением данных в базе.
yii2, шаблон advanced.
http://habrahabr.ru/post/226931/
в статье конечно все очень коряво и в общем нерабоче, т.к. работать только будет при определенных настройках и урлах. Хорошо, если заведется, но новичок вряд ли сможет допилить.
недопилил:(
застрял на том, что в урл добавляется язык, и по концовке на все 404:(. ошибок нет....
Помогите, плиз, кто может! stardock777@skype.com, xmana777@jabber.ru...
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Мультиязычность - язык в url

Сообщение astronin »

в yii2 уже есть поддержка хранения языков(хоть в файлах, хоть в базе), незаморачиваемся, осталось сделать нормальный интерфейс, читаем тут общую схему(все очень просто и понятно)
http://www.yiiframework.com/wiki/294/se ... dget-i18n/
в конфиге для поддержки языков пишем что-то вроде такого правила, может с какими-то изменениями:

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

'<language:(est|ru|en)>/<module:\w+>/<controller:\w+>/<action:\w+>/*'
обновленные файлы для второй версии yii берем тут:
https://github.com/AstRonin/yii2_improv ... components
Controller.php, UrlManager.php

и дальше используешь через Yii:t
http://www.yiiframework.com/doc-2.0/gui ... -i18n.html
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Мультиязычность - язык в url

Сообщение zelenin »

зачем для всего лепить базовый контроллер? невсегда есть возможность, а главное желание наследоваться от чего-то. Делай более гибко.
Да и прописывать языки во все правила - сомнительное удовольствие. Поэтому фейл.
Лучше допилить тот код, что в статье на хабре. Я кстати видел вариации на гитхабе, но не ревьюировал на предмет "кошерности".
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Мультиязычность - язык в url

Сообщение astronin »

потому что для новичка это гораздо проще
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Мультиязычность - язык в url

Сообщение zelenin »

astronin писал(а):потому что для новичка это гораздо проще
вам это зачем, а не новичку? это использовать можно только в частных случаях, а создавать нужно универсальные решения.
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Мультиязычность - язык в url

Сообщение astronin »

zelenin писал(а):
astronin писал(а):потому что для новичка это гораздо проще
вам это зачем, а не новичку? это использовать можно только в частных случаях, а создавать нужно универсальные решения.
По-моему это общий случай для быстрого поднятия мультиязычности на сайте без головоломки. Можно и не через Controller, вариантов много разных. Такой схемы с различными дополнениями в зависимости от требований мне хватает с головой.
А на счет универсальности, так это должно решаться на уровне фреймворка(хоть убейте не пойму, почему этого там нет, это же базовая вещь...), а не писаний велосипедов каждым программером отдельно.
lavrik
Сообщения: 110
Зарегистрирован: 2013.03.02, 21:41
Контактная информация:

Re: Мультиязычность - язык в url

Сообщение lavrik »

Не сочтите за спам, но буквально неделю назад бился над этой проблемой.
В результате вышло довольно неплохо (на мой взгляд)
Если ещё актуально, то можете посмотреть мой велосипед здесь - http://lavrik-v.ru/info/254/Yii_Framewo ... _sajt.html

Именно необходимым топикстартеру методом (передача префикса языка в url-е)
lavrik-v.ru - моя напоминалка по php.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Мультиязычность - язык в url

Сообщение zelenin »

lavrik писал(а):Не сочтите за спам, но буквально неделю назад бился над этой проблемой.
В результате вышло довольно неплохо (на мой взгляд)
Если ещё актуально, то можете посмотреть мой велосипед здесь - http://lavrik-v.ru/info/254/Yii_Framewo ... _sajt.html

Именно необходимым топикстартеру методом (передача префикса языка в url-е)
здесь о yii2
vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Мультиязычность - язык в url

Сообщение vismut »

Мы сделали такое для уии2.
Получилось довольно гибко, я статью напишу на хабрик через недели 3 когда будет отпуск.
Можете подождать.
vismut
Сообщения: 64
Зарегистрирован: 2014.10.01, 16:46

Re: Мультиязычность - язык в url

Сообщение vismut »

Если будете делать сами.
1. удобно белать в OnBeforeRequest
2. когда из УРЛа будете удалять язык для получения правильного роута делать это так

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

class Request extends \yii\web\Request
{
    protected function resolvePathInfo()
    {
        return MultiLingualTool::removeLangFromUrl(parent::resolvePathInfo());
    }


}
3. Ни в коем случае не менять

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

$request->_url
4. учесть что в yii2 при аяксовом запросе редирект сделает reload на стороне клиента
Assada
Сообщения: 8
Зарегистрирован: 2015.01.16, 18:52

Re: Мультиязычность - язык в url

Сообщение Assada »

Только начал работу с Yii
И сразу возник вопрос с локализацией. Как использовать Yii:t() я понял. Но вот еще я понял что брать язык из url`а это целая проблема и не все так просто как в silex`е(или symfony).

Решения так и нет? Для базового приложения. Для расширенного я нашел, и то... Язык только из базы, а мне бы из PhpMessageSource для базового.
Ответить