![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Планируется написать сайт на нескольких языках. Соответственно очень хочется иметь максимально удобный способ вывода строк на нужном языке (на кнопках, в меню и т.д.) просто указывая ее уникальный код. Было бы любопытно узнать о решении проблемы у того кто ее решал (возможно в PHP есть какие-то подводные камни). Строк будет достаточно много поэтому было бы здорово найти способ, который бы не сильно влиял на загрузку сервера.
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
vasac |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 1 Всего: 36 |
||||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 8 Всего: 260 |
Поделюсь своим решением, может, кто подскажет, как его можно оптимизировать...
У меня три справочника: страниц, слов и языков(фактически они нужны только для генерации автоинкрементного ключа, но я добавил для удобства поле имени на русском языке: для языков - название языка, для слова - написание на русском, для страниц - краткое описание, чтоб не забыть). А ещё - две таблицы с отношениями многие-ко-многим: связь слов со страницами(idслова + idстраницы) перевод слова на разные языки в unicode(idслова + idязыка + написание слова на этом языке) В начале скрипта я вызываю функцию, которая загружает мне в массив слова по idстраницы и idязыка. Доступ получаю по числовому идентификатору(впрочем, для наглядности можно использовать в качестве ассоциативных ключей то самое написание в русском языке из справочника слов). И в скрипте вывожу:
Возможно, я описал то, что реализовано в getText, упомянутом vasac, но я не плагиатор ![]() |
|||
|
||||
ZlojEzh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 2 Всего: 15 |
хочу предложить еще одно решение, как альтернативу динамическим переводам:
генерирация уже переведенных версий стриптов очень помогает при большой нагрузке на сервер - убиваются лишние запросы к БД и уменьшается объем используемой памяти в кратце: имеется главная версия всех скриптов сайта, в которой все непереведенные фразы записываются в виде:
имеется также скрипт, который собственно и переводит все эти скрипты на нужные языки достоинства подхода: - меньше запросов к БД при выводе страниц пользователю - легче вводить различия междй версиями сайта на разных языках (я, например, использую теги <lng=ru>...</lng> или <lng!=de>...</lng>) - если UTF не подходит - легче реализовать различные кодировки для разных языков, не приходится ничего перекодировать налету недостатки: - не слишком удобно при передаче id'шника языка через GET - призодится во всех скриптах инклудить переведенную версию |
|||
|
||||
shurale |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 31.8.2006 Где: Израиль Репутация: нет Всего: нет |
У меня сделано почти так, как описал skyboy
Есть директория для языковых файлов, есть файл на каждый язык, в котором находится массив с фразами, вверху каждой страницы инклюдится функция на проверку куки и сессии, в куку и сессию соответственно заносится язык (ru,en,de,.....) При выборе языка (достаточно один раз выбрать язык - index.php?lang=en ) , автоматом записывается кука и сессия. Все, теперь пользователь всегда будет видеть на нужном ему языке, и не нужно указывать переменную в строке броузера, что приятно пользователю. ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 8 Всего: 260 |
||||
|
||||
ZlojEzh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 2 Всего: 15 |
||||
|
||||
ewolf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 15.8.2006 Где: г. Москва Репутация: 4 Всего: 18 |
Не совсем согласен. Так как на сайте будут ссылки на все языковые версии, то поисковик посетит их все. Конечно, при этом не будет возможности использовать для хранения сессий информацию из cookies, но php спокойно работает, передавая параметры через url
|
|||
|
||||
ZlojEzh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 2 Всего: 15 |
||||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Тексты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |