![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
подскажите как сделать красиво многоязычный сайт? нужно это добавить к существующему движку....
тема - баян наверное но как в Catalysє'у это красиво и удобно можно сделать? |
|||
|
||||
| sir_nuf_nuf |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
Многоязычный сайт это:
1) Соответсвующая кодировка страницы. Тут все просто: храните в сессии языковые настройки юзера и взависимости от них - выставляете кодировку в каком-нть action. 2) Локализация данных: Вам придется хранить данные в utf8. Иначе придется использовать разные базы, что кошмарно =) 2.1) Динамические данные (которые генерят юзеры и т.п.) Эти данные просто хранятся так как их создали пользователи. Т.е. если у вас есть объявление на украинском языке - то оно будет всегда видно на украинском (и как я подозреваю только для украинцев). Т.е. с точки зрения динамических данных (объявления, новости, комментарии, анкеты) - у вас будут совершенно независимые сайты для каждого языка. 2.2) Статические данные (названия пунктов меню, сообщений об ошибках, элементы дизайна и т.п.) Я вижу два варианта: - делать копии шаблонов на разных языках - это просто ужасно! - хранить все данные требующие локализации отдельно, например в базе. Или в текстовом файле. И во всех местах где вы хотите вывести какую-либо фразу на каком-нть языке - вам нужно выбирать эту фразу в зависимости от языка. Приведу привет на Template-Toolkit: Без локализации:
С локализацией:
здесь: localization - структуру (дерево) данных которая содержит все локализованные сообщения для конкретного языка. Ваш контроллер при передачи данных в шаблонизатор должен в зависимости от языка загрузить правильное дерево. P.S. сами локализованные данные на раннем этапе можно хранить в JSON. Потом наверно лучше переложить в базу... Как видите шаблоны придется жестко перелопатить Это сообщение отредактировал(а) sir_nuf_nuf - 13.11.2009, 16:08 |
||||
|
|||||
| DEER |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 2 Всего: 13 |
можно и эти данные делать многоязычными (хотя бы те, который вводит администрация) я пользуюсь такой структурой
dictionary - набор словарей (заголовок новости, тело новости и т.п.) dictionary_data - данные словарей dic_id - номер словаря foreign_id - номер объекта (новости, объявления и т.п.) Какой то язык должен быть "по умолчанию", то есть обязательным. При внесении данных, валидируем, то внесены данные для языка по умолчанию. Далее, все как написал sir_nuf_nuf. в шаблоне пишем
фyнкция title у объекта "Новость" смотрит выбранный язык пользователя. Берет заголовки(словарь "заголовки новостей") из таблицы dictionary_data для данной новости. Если есть значение для выбранного языка - возвращает его. Если нету, возвращает значения для языка "по умолчанию" -------------------- |
||||||
|
|||||||
| gcc |
|
||||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
извините, забыл написать что HTML::Template
ut8 использую
ну тогда нужно CSS для разных языков поставить разные, если слово будет большое или маленькое на разных языках, то тогда будет не красиво и может съежатся, праивльно? хотя я люблю писть CSS в HTML (ну и в отдельном файле, смешивать)
точно
в HTML::Template мне кажется что что будет очень и очень не красиво и если оно еще будет в базе, тот кто будет смотреть - он же ничего не поймет и очень много дополнительных тэгов будет, очень много, вот в HTML::Templateс циклам можно решить, весь шаблон взять в цикл с одной интеграцией есть может быть вариант для HTML::Template написать дополнительный шаблон и в нем русские словосочения заменить на дргой язык...!? ==== тут тогда наверное лучше отделить в разные файлы... Это сообщение отредактировал(а) gcc - 12.11.2009, 17:19 |
||||||||
|
|||||||||
| DEER |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 2 Всего: 13 |
я не очень понял то, что ты написал редактирование выглядит примерно так ![]() для плашек написана спец либа на js можно загружать данные в кеш изначально и не мучить базу. и про циклы не понял. загружается такая конструкция с хеш и очень удобно ей пользоваться Добавлено через 1 минуту и 53 секунды могу присалть код на мыло. посмотришь Это сообщение отредактировал(а) DEER - 12.11.2009, 17:27 -------------------- |
||||
|
|||||
| gcc |
|
||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
DEER, если есть массив хэшей
и если нужно добавить внутрь, например, <TMPL_VAR NAME=BLA2>, то нужно всю структуру перебрать и в каждный хэш вствить BLA2
т.е. если слова будут разной длинной, то проблем не будет, я так понял тогда попробую так... Это сообщение отредактировал(а) gcc - 12.11.2009, 17:39 |
||||
|
|||||
| DEER |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: 2 Всего: 13 |
gcc, перечитай первое сообщение мое в той теме. выглядеть будет так
а уже внутри этих функций пиши что хочешь. ты на каталист пользуешься динамической генерацией классов - моделей? надо будет перейти на статическую. тогда метод title будет выглядеть примерно так
Это сообщение отредактировал(а) DEER - 12.11.2009, 18:00 -------------------- |
||||||
|
|||||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
ok, сделаю
просто картину портит HTML::Template, я всегда его использую прейдется на Template-Toolkit перейти или посмотрю варианты - подковырять внутри в HTML::Template или дополнения к нету на cpan.org .... Это сообщение отредактировал(а) gcc - 13.11.2009, 00:59 |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
а чем вас ваш шаблонизатор не устраивает ? по моему вы намереваетесь сделать какую-то ошибку сейчас... Все это можно решить нормально в рамках HTML::Template, главное в своих контроллерах определяйте язык юзера и скармливаете шаблонизатору локализованные данные |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
gcc, кстати, я немного поправил свой пост - теперь код шаблона стал еще проще, без вызова функции - такой можно реализовать даже на HTML::Template.
Вам нужно только при передачи данных шаблону передать нужную структуру с сообщениями локализации. Это можно делать в том же месте где и выставляете кодировку страницы. |
|||
|
||||
| gcc |
|
||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
можно всё, а как быть с вот этим вот ?
если нужно внутрь EMPLOYEE_INFO вставить <TMPL_VAR NAME=NAME222>, то нужно будет перебирать всю структуру!! и если там двухмерный или трехмерный с разветлением массив хэшей? это будет черезвычайно криво... нужно будет перебирать всё ЗЫ: или нормально? Это сообщение отредактировал(а) gcc - 13.11.2009, 20:08 |
||||||
|
|||||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 2 Всего: 31 |
П.С. Мда HTML::Template поражает воображение... Возможно опция 'global_vars' спасет мир ? |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
sir_nuf_nuf, спасибо не увидел
Добавлено через 1 минуту и 3 секунды там вон еще разные дополнения есть http://search.cpan.org/search?m=all&q=...mplate&s=11 |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |