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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многоязыковой сайт - как наиболее эффективно, печатать строки в зависимости от языка? 
:(
    Опции темы
Royan
Дата 11.7.2006, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

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



Планируется написать сайт на нескольких языках. Соответственно очень хочется иметь максимально удобный способ вывода строк на нужном языке (на кнопках, в меню и т.д.) просто указывая ее уникальный код. Было бы любопытно узнать о решении проблемы у того кто ее решал (возможно в PHP есть какие-то подводные камни). Строк будет достаточно много поэтому было бы здорово найти способ, который бы не сильно влиял на загрузку сервера.  


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
vasac
Дата 11.7.2006, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



Вот статья может быть полезной:
php и gettext 
PM WWW   Вверх
skyboy
Дата 11.7.2006, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Поделюсь своим решением, может, кто подскажет, как его можно оптимизировать... 
У меня три справочника: страниц, слов и языков(фактически они нужны только для генерации автоинкрементного ключа, но я добавил для удобства поле имени на русском языке: для языков - название языка, для слова - написание на русском, для страниц - краткое описание, чтоб не забыть). А ещё - две таблицы с отношениями многие-ко-многим:
связь слов со страницами(idслова + idстраницы)
перевод слова на разные языки в unicode(idслова + idязыка + написание слова на этом языке)
В начале скрипта я вызываю функцию, которая загружает мне в массив слова по idстраницы и idязыка. Доступ получаю по числовому идентификатору(впрочем, для наглядности можно использовать в качестве ассоциативных ключей то самое написание в русском языке из справочника слов). И в скрипте вывожу: 
Код

echo $words[125];
...
// или 
...
echo $words['Добро пожаловать!'];
 
Возможно, я описал то, что реализовано в getText, упомянутом vasac, но я не плагиатор smile 
PM MAIL   Вверх
ZlojEzh
Дата 12.7.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

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



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

<trans page='_razdel_slovarja_'>русская фраза</trans>

имеется также скрипт, который собственно и переводит все эти скрипты на нужные языки
достоинства подхода:
- меньше запросов к БД при выводе страниц пользователю
- легче вводить различия междй версиями сайта на разных языках (я, например, использую теги <lng=ru>...</lng> или <lng!=de>...</lng>)
- если UTF не подходит - легче реализовать различные кодировки для разных языков, не приходится ничего перекодировать налету
недостатки:
- не слишком удобно при передаче id'шника языка через GET - призодится во всех скриптах инклудить переведенную версию
 
PM MAIL ICQ   Вверх
shurale
Дата 2.9.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня сделано почти так, как описал skyboy
Есть директория для языковых файлов, есть файл на каждый язык, в котором находится массив с фразами, вверху каждой страницы инклюдится функция на проверку куки и сессии, в куку и сессию соответственно заносится  язык (ru,en,de,.....)

При выборе языка (достаточно один раз выбрать язык - index.php?lang=en ) , автоматом записывается кука и сессия. Все, теперь пользователь всегда будет видеть на нужном ему языке, и не нужно указывать переменную в строке броузера, что приятно пользователю.  smile 
PM MAIL   Вверх
skyboy
Дата 2.9.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


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

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



Цитата(shurale @  2.9.2006,  17:47 Найти цитируемый пост)
и не нужно указывать переменную в строке броузера, что приятно пользователю

... ради чего, собственно, сессии и задумывались... smile
PM MAIL   Вверх
ZlojEzh
Дата 4.9.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

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



Цитата(shurale @  2.9.2006,  18:47 Найти цитируемый пост)
и не нужно указывать переменную в строке броузера, что приятно пользователю

и совсем не приятно поисковому роботу
при таком подходе проиндексируется только одна версия сайта

PM MAIL ICQ   Вверх
ewolf
Дата 4.9.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

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



Не совсем согласен. Так как на сайте будут ссылки на все языковые версии, то поисковик посетит их все. Конечно, при этом не будет возможности использовать для хранения сессий информацию из cookies, но php спокойно работает, передавая параметры через url
PM MAIL ICQ   Вверх
ZlojEzh
Дата 4.9.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

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



в принципе согласен...
НО, читаем
конкретно - раздел Technical guidelines, пункт 2
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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