Показать сообщение отдельно
  #2 (permalink)  
Старый 28.09.2011, 15:29
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

я бы сделал так :


Чтобы различать языки, необходимо создать таблицу(-ы), в которой для каждого ID([lang12345]) будет храниться значение языка(ru,en), которому соответствует фраза, и сама фраза.

примерная структура таблицы. с типами уже разобрались.

Код:
|ID | фраза | язык|
|123|"hello"|"en" |
|123|"прива"|"ru" |
теперь надо разобраться, какой язык использовать

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

При желании можно использовать хранилище Flash

Приоритет использования такой :
Цитата:
localStorage -> Cookies -> Data Base
в стораге всё просто, у кукисов тоже. рассмотрим базу :

конечно, должна быть ещё одна таблица.

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


это домашнее задание. Но как МНЕ кажется, это можно делать через IP и юзерагента.


В таблице будет чуть колонок.
у меня кончается фантазия

Код:
| IP        | lang |
| 127.0.0.1 | "ru" |
Если IP не совпадает - исп-ся язык по-умолчанию

______________
это насчёт сервака.

а чо делать с модальными окнами на сайте, сособенно, если они создаются динамически ?

В модальных окнах ставить тайтл такого вида
modal({     title : *!*lang[ 123 ]*/!*     });


то бишь, тайтл выбирается из объекта lang

а вот БД для скрипта %)
lang = {  "123" : "Hello, user"   }


Теперь надо определиться, какой файл где брать.


пусть в папке будет лежать 2 файла - lang-ru.js и lang-en.js

в зависимости от запомненного языка будет загружаться или ru, или en.


если текст внутри модалей делается так, то беспокоиться о том, "чо там, прогрузилось или нет" не надо - каждый файл языка заменит свойства у объекта на свои.


как запоминать ? Так как мы решили не использовать хранилище , потому что значение языка в хранилище надо передать php скрипту, а это - запрос, а это - время., то используем "продуманную" схему про куки и БД, описанную выше.

т.е. если есть кука - используем куку, иначе - бд. Если эже ни там, ни там нету - используем язык по умолчанию.
___________________

насчёт запоминания. При клике на кнопку "поменять язык" скрипт будет устанавливать значение в куке ( то бишь одновременно запоминает для себя и для php )и перезагружать страницу ( то бишь применять изменения. перезагрузка страницы нужна для локализации через php. можно в принципе только часть страницы перезагрузить. )
Ответить с цитированием