Мультиязычность на сайте!!!
Добавлено: 2015.03.16, 13:15
Здравствуйте, форумчане! Помогите пожалуйста справиться с задачей а то я уже весь гугл обласил=) ну нечего так и не получилось найти, я сам с Yii работаю совсем не давно и очень уж не хочется делать какие нибудь топорные вещи на старте. Так что помогите кто чем сможет. Задача: нужно сделать многоязычный сайт с неограниченным количеством языков.
Url типа:
http://site.ru/ru/page
http://site.ru/en/page
Сделал все работает норм! Ну вот сейчас начал делать админу и встал вопрос как добавить материалы с разными языками в базу. Варианты с добавлением новых столбцов в таблицах типа text_ru, text_en и т.д. точно не подходит. Вариант который описан в документации с хранением переводов в отдельной таблицы тоже не нравится. Самый подходящий это хранить все в одной таблицы с использованием составного первичного ключа. То есть будут поля:
id - int auto_increment
language - char
title - varchar
alias - varchar
text - text
primary key ('id','language')
В админки должна быть форма разделенная табами в первом поля формы для Русского языка во втором для Английского также должно быть поле с общими настройками где в данном примере указывается alias. Но я не знаю как можно перехватить данные из формы отсортировать как нужно и записать все поля в базу. В результате отправки формы должно записаться в базу столько полей сколько у нас языков к примеру.
id language title alias text
1 ru Страница 1 stranica_1 текст страницы 1
1 en Page 1 stranica_1 text page 1
2 ru Страница 2 stranica_2 текст страницы 2
2 en Page 2 stranica_2 text page 2
Url типа:
http://site.ru/ru/page
http://site.ru/en/page
Сделал все работает норм! Ну вот сейчас начал делать админу и встал вопрос как добавить материалы с разными языками в базу. Варианты с добавлением новых столбцов в таблицах типа text_ru, text_en и т.д. точно не подходит. Вариант который описан в документации с хранением переводов в отдельной таблицы тоже не нравится. Самый подходящий это хранить все в одной таблицы с использованием составного первичного ключа. То есть будут поля:
id - int auto_increment
language - char
title - varchar
alias - varchar
text - text
primary key ('id','language')
В админки должна быть форма разделенная табами в первом поля формы для Русского языка во втором для Английского также должно быть поле с общими настройками где в данном примере указывается alias. Но я не знаю как можно перехватить данные из формы отсортировать как нужно и записать все поля в базу. В результате отправки формы должно записаться в базу столько полей сколько у нас языков к примеру.
id language title alias text
1 ru Страница 1 stranica_1 текст страницы 1
1 en Page 1 stranica_1 text page 1
2 ru Страница 2 stranica_2 текст страницы 2
2 en Page 2 stranica_2 text page 2