Функция поддержки мультиязычности.
Сегодня написал функцию, на входе она получает идентификатор фразы, и доп. переменные, на выходе возвращает готовую фразу.
Вопрос: Как этот код приспособить к поддержки других языков? Желательно хранить фразы в отдельных внешних файлах. И подгружать их в зависимости от установленного у пользователя языка. Отрывок кода: // Массив содержащий все фразы используемые сайтом var language = { // ---- тут их может быть сколь угодно. photos_count: 'Фото %l из %l' }; function getFrase(langKey){ var value, langArr = language, key = langKey, a = arguments, l = a.length; for (var k in langArr) { if (k === key){ value = langArr[k]; if (l>=2){ for(var i = 1; i < l; ++i) { value = (value || '%l').replace('%l', a[i]); } } } } return value; } document.getElementById('div_photos_count').innerHTML = '<b>'+getFrase('photos_count',1,20)+'</b>'; Мы получаем: <div id="div_photos_count">Фото 1 из 20</div> |
fiw, мультиязычность, как правило, делают на сервере... Не на клиенте... Оно так сподручнее. :)
|
ksa,
А почему бы не на клиенте сделать? Я вот к примеру, хочу чтобы в зависимости от языка, подгружался тот или иной lang.js В котором массив, содержащий все по текущему языку. |
Цитата:
и выводятся в зависимости от выбранного языка.. Какой такой потайной эротический смысл в том, чтобы подгружать разные js-скрипты в зависимости от языка??? Почему не сделать эти скрипты языконезависимыми? ;) |
Так в том то и прикол, чтобы не делать запросы в БД за этими языками, пускай фразы будут в JS храниться.
А в зависимости от языка используется тот или иной файл. Тем более если учесть что большая часть сайта динамическая. |
Цитата:
|
Цитата:
А насчет вашей функции, зачем в цикле проходить по массиву для того что бы найти ключ, а не просто сразу обратится ? value = langArr[key]; |
Если я правильно понимаю. То поисковики будут индексировать сайт очень криво, так как javascript они не интерпритируют. Короче вместо сайта они покажут шаблон для подстановки слов.
|
Цитата:
Это как рабочая программа) Там индексировать ничего не нужно. |
Цитата:
|
Часовой пояс GMT +3, время: 01:30. |