Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> многоязычность на сайте 
:(
    Опции темы
DimaSiK
Дата 2.6.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Подскажите, как правильно проектировать  сайт, который будет представлен сети на нескольких языках?, какие существуют нюансы, где хранить все языковую информацию сайта, как быстро подключатьб требуемый язык.


--------------------
Мы не стараемся быть первыми, мы стараемся быть лучшими.

PM MAIL   Вверх
rMaveric
Дата 2.6.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: 3
Всего: 6



Как организовать структуру - твои личные проблемы. Как хочешь так и хранишь всю информацию. Если в БД, то можешь просто добавить поле язык и при выборке требуемых данных использовать именно его. Если хранишь инфу в файле, то самый простой способ - папка с кодом языка в тимплейтах и контенте.

Нюанс в принципе только один, как предложить пользователю использовать Язык. Я лично предпочитаю следующий алгоритм

1. Если у человека установлены предпочтения, то выставить язык согласно предпочтениям
2. Если у человека предпочтений нет, то посмотреть с какой он страны и выбрать наиболее подходящий для этой страны.
3. Если такого языка нет в качестве поддерживаемых сайтом, то ставим дефаултный (желательно английский или в некоторых случаях французский)
4. Не забыть в дизайне предусмотреть механизм смены языка.

Это для первого захода. А для последующих проще.
Отображать человеку на том языке, на котором он смотрел, когда заходил последний раз.

Еще ньюанс. Если хочешь делать хорошо, то ссылки у тебя должны быть все с указанием языка. Так например, когда человек заходит на индексную страницу например http://domain.com/, то скрипт определяет язык и сразу перенаправляет раздел этого языка, например http://domain.com/ru/

Это делается для того, чтобы поисковые системы видели нормально твой сайт на разных языках, а не путались, что сегодня им на этом адресе показали русский текст, на через неделю немецкий. Также такая схема позваолит делать линки людям с цитатами, т.к. они будут указывать у себя прямую ссылку с указанием языка всегда и не будет путаницы.

Ну а технически, повторюсь, делай как тебе нравится.


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
DimaSiK
Дата 2.6.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Цитата

Если у человека предпочтений нет, то посмотреть с какой он страны и выбрать наиболее подходящий для этой страны.

У меня намечается максимум три языка - рус,укр и eng. Предложение очень хорошее насчет автоматического выбора языка, сразу же заинтересовало. Определение откуда человек приходит делается с помощью geoip?

Цитата

Как организовать структуру - твои личные проблемы.

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


--------------------
Мы не стараемся быть первыми, мы стараемся быть лучшими.

PM MAIL   Вверх
Golda
Дата 2.6.2007, 20:45 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



rMaveric, добавлю к Вашему алгоритму еще один пункт. Кроме geoip, возможно, перед ним, можно использовать приоритеты броузера (Accept-Language header)). Спасибо за мысли о удобствах/неудобствах автоматического определения языка для поисковиков. Не думала об этом.


DimaSiK, вопрос организации многоязыкового сайта - это во многом, вопрос выбора шаблонов. Возможно, Вам будет интересно взглянуть на недавний опрос http://forum.vingrad.ru/forum/topic-153482.html.
Я предпочитаю вариант XML/XSL, при котором одному XSL-темплейту соответствуют несколько XML, отличающиеся языками. А подводные камни при работе с языками - как всегда - кодировки. Меньше проблем, если работать с UTF-8.


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
rMaveric
Дата 2.6.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: 3
Всего: 6



Цитата(DimaSiK @  2.6.2007,  20:02 Найти цитируемый пост)
У меня намечается максимум три языка - рус,укр и eng. Предложение очень хорошее насчет автоматического выбора языка, сразу же заинтересовало. Определение откуда человек приходит делается с помощью geoip?

много модулей есть, которые определяют нахождение человека, но далеко не все установлены у провайдеров, возможно прийдется использовать какое нибуть решение на php, если у прова не установлено ничего. А в общем geoip или mod_geo удовлетворят полностью.


Цитата(DimaSiK @  2.6.2007,  20:02 Найти цитируемый пост)
Всетаки хотелось узнать как правильно и как легче будет организовать многоязычность, высмысле легче для последующих и нежелательных изменений в структуре сайта. 

Заставляешь повторяться. Все зависит от структуры, какую ты выберешь для сайта. Если будешь использовать БД, то достаточно просто внести дополнительное поле указывающее язык. Можно создать отдельные таблицы для каждого языка, но смысла в этом не вижу. Эти два метода будут быстрыми, но тяжело будет делать перевод (учитывать все фразы). Можно таблицы контента сразу делать под несколько языков например
Код

|id|ru|ua|en|

А если БД использовать не хочешь (сайт более статистический, чем динамический или предполагаемый хостер не дает БД), то лучше всего создать папку для контента, а в ней подпапки для локализаций. Выбор за тобой... И до полного анализа задания определить что будет лучше невозможно.

Добавлено через 6 минут и 26 секунд
Цитата(Golda @  2.6.2007,  20:45 Найти цитируемый пост)
rMaveric, добавлю к Вашему алгоритму еще один пункт. Кроме geoip, возможно, перед ним, можно использовать приоритеты броузера (Accept-Language header)).


Цитата(rMaveric @  2.6.2007,  19:17 Найти цитируемый пост)
1. Если у человека установлены предпочтения, то выставить язык согласно предпочтениям

Первый пункт о предпочтениях и был о Accept-Language 


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Golda
Дата 2.6.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Цитата(rMaveric @  2.6.2007,  20:52 Найти цитируемый пост)
Цитата(rMaveric @  2.6.2007,  19:17 Найти цитируемый пост)
1. Если у человека установлены предпочтения, то выставить язык согласно предпочтениям

Первый пункт о предпочтениях и был о Accept-Language  


А ok, я думала, Вы имели ввиду какой-то вариант профиля пользовтеля, где он сам может указать свои предпочтения явно


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
DimaSiK
Дата 6.6.2007, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Страница ведь имеет два вида контента: контент - наполняющая сайт информация и контент - имена конпок, ссылки и так далее. Каким образом мне их разграничить по языкам?, стоит ли допустим все что касается кнопок, ссылок храняить как описание  в xml файлах, допустим rus_xml, eng_xml, а данные распределить в БД учитывая языки? 


--------------------
Мы не стараемся быть первыми, мы стараемся быть лучшими.

PM MAIL   Вверх
Golda
Дата 6.6.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Если контент предполагается обширный, будет быстро добваляться, статьи относительно независимы, важна возможность поиска... Вам к базам данных, и тот вариант, что Вы предложили, вполне нормален. Но продумайте, что именно будет единицами хранения в ячейках базы, как отделить контент от его оформления. Если важнее возможность добавления/редактирования страниц непрофессионалами, разделение труда между контенщиками и web-мастерами, страниц относительно немного, но они требуют принципиально разного оформления, выбирайте файловую систему и, как посоветовал rMaveric, лучше разделите контент по языковым папкам.


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
DimaSiK
Дата 6.6.2007, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Вот какое решение я надумал:
Значит существует директория language, в ней соответственно /eng /rus, в данных директориях лежат xml файлы описывающие все кнопки, ссылки, одним словом весь функционал. Причем каждый файл описывает одну страницу - main_eng.xml описывает main.php и так далее. БД реализована так же для поддержки языков. При первом заходе на main.php выбирается язык по умолчанию, например rus, далее топаем в нужную языковую директорию и загружаем нужный xml с помощью DOM - main_rus.xml. После этого выбираем нужные языковые данные из ДБ  и выставляем их в структуру загруженного xml. Последний этам это уже наложение XSLT на XML и отдача страницы в браузер. Помоему все получается все очень даже хорошо. Для добовления нового языка и новой страницы нужно добавить языковую директорию и xml файл, описывающий функционал страницы, а далее все описано выше. Скажите минусы моей затеи?  

Это сообщение отредактировал(а) DimaSiK - 6.6.2007, 23:47


--------------------
Мы не стараемся быть первыми, мы стараемся быть лучшими.

PM MAIL   Вверх
Daevaorn
Дата 7.6.2007, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



А в библиотеке php есть gettext? Если, есть то многие проблемы интернационализации пропадают.
PM MAIL WWW   Вверх
DimaSiK
Дата 7.6.2007, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



Нет, gettext не хочу пробовать!


--------------------
Мы не стараемся быть первыми, мы стараемся быть лучшими.

PM MAIL   Вверх
rMaveric
Дата 7.6.2007, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: 3
Всего: 6



1. Медленно
2. Для каждой страницы грузить отдельный файл необосновано слишком много повторений будет


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Golda
Дата 7.6.2007, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



DimaSiK, не очень поняла, зачем база данных, если для каждой страницы и так предполагается отдельный XML. Почему бы в нем же не хранить, кроме текстов элементов оформления, еще и сам контент? Я бы отделяла оформление от контента секциями в одном XML. Зачем морочить себе голову, поддерживая дополнительно еще и базу и замедляя формирование страниц (ведь при таком подходе нужно еще потратить время на формирования XML), уменьшая надежность (база данных - дополнительный элемент, за рабочим состоянием которого нужно следить), а возможно, и добавляя проблем с безопасностью. 

Впрочем, возможно, для Вас из каких-то соображений важно мпксимальное разделение контента и оформления. Например, важны возможности поиска, предоставляемые базой, изменением контента и оформления занимаются разные люди, часть страниц на самом деле задает не единственный варинт страницы, а целый класс, где содержимое меняется, а оформление остается... 

В общем, без анализа Вашей конкретной задачи правильность решения оценить нельзя. Но если принять за аксиому, что база данных нужна, описание звучит неплохо. Но сответую еще добавить какой-нибудь общий XML для каждого языка, чтобы не дублировать общие элементы оформления (текст копирайта, title илм его общая часть, текст пунктов меню... что-нибудь найдется). Также для системы в целом может понадобиться разделяемый XML для общих настроек (URL пунктов меню, непереводимые элементы оформления...) В принципе есть выбор, общие настройки можно хранить и в php-файле конфигурации, и в базе данных. Но на мой взгляд, настройкам, связанным с UI самое место в XML.

(Прочитала сообщение rMaveric).
1. Проблемы со скоростью можно решать кешированием на стороне сервера
2. Да, для XSL тоже часто получаются общие подключаемые файлы с темплейтами, а иногда имеет смысл создать дефолтовый XSL для самого распространенного варианта страниц

Это сообщение отредактировал(а) Golda - 7.6.2007, 09:05


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
DimaSiK
Дата 7.6.2007, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 390
Регистрация: 20.8.2006

Репутация: нет
Всего: нет



2Golda Представь, если у меня будет хотя бы 100 новосетй, как думаешь лучше их хранить в БД или же в xml файлах, хотя бы если организовывать поиск по новостям?  Так как контентное наполнение будет довольно таки большим, я и решил, что лучше его хранить в БД, тем более оно будет на разных языках, не создавать же мне десятки xml файлов для этого, а потом смотреть где что находиться, выйдет путаница и в связи с количесвом даннм разростуться xml файлы.   

Это сообщение отредактировал(а) DimaSiK - 8.6.2007, 07:52


--------------------
Мы не стараемся быть первыми, мы стараемся быть лучшими.

PM MAIL   Вверх
Golda
Дата 9.6.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Согласна, лучше в базе. Соответсвенно xml и xsl-файлы должны определяться типом страницы (для каждой новости отдельный xml и xsl не нужен).



Это сообщение отредактировал(а) Golda - 9.6.2007, 19:10


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1254 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.