Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.09.2011, 14:58
fiw fiw вне форума
Аспирант
Отправить личное сообщение для fiw Посмотреть профиль Найти все сообщения от fiw
 
Регистрация: 18.08.2011
Сообщений: 23

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

Вопрос: Как этот код приспособить к поддержки других языков?
Желательно хранить фразы в отдельных внешних файлах.
И подгружать их в зависимости от установленного у пользователя языка.

Отрывок кода:
// Массив содержащий все фразы используемые сайтом
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, 26.09.2011 в 15:01.
Ответить с цитированием
  #2 (permalink)  
Старый 26.09.2011, 15:14
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

fiw, мультиязычность, как правило, делают на сервере... Не на клиенте... Оно так сподручнее.
Ответить с цитированием
  #3 (permalink)  
Старый 26.09.2011, 15:20
fiw fiw вне форума
Аспирант
Отправить личное сообщение для fiw Посмотреть профиль Найти все сообщения от fiw
 
Регистрация: 18.08.2011
Сообщений: 23

ksa,
А почему бы не на клиенте сделать?
Я вот к примеру, хочу чтобы в зависимости от языка, подгружался тот или иной lang.js
В котором массив, содержащий все по текущему языку.
Ответить с цитированием
  #4 (permalink)  
Старый 26.09.2011, 15:49
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Сообщение от fiw Посмотреть сообщение
ksa,
А почему бы не на клиенте сделать?
Потому что данные хранятся на сервере в базе на разных языках
и выводятся в зависимости от выбранного языка..
Какой такой потайной эротический смысл в том,
чтобы подгружать разные js-скрипты в зависимости от языка???
Почему не сделать эти скрипты языконезависимыми?
Ответить с цитированием
  #5 (permalink)  
Старый 27.09.2011, 04:24
fiw fiw вне форума
Аспирант
Отправить личное сообщение для fiw Посмотреть профиль Найти все сообщения от fiw
 
Регистрация: 18.08.2011
Сообщений: 23

Так в том то и прикол, чтобы не делать запросы в БД за этими языками, пускай фразы будут в JS храниться.
А в зависимости от языка используется тот или иной файл.
Тем более если учесть что большая часть сайта динамическая.
Ответить с цитированием
  #6 (permalink)  
Старый 27.09.2011, 09:19
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от fiw
Так в том то и прикол
В работе "приколы" не лучший помошник... А вот работа с БД как нельзя кстати.
Ответить с цитированием
  #7 (permalink)  
Старый 27.09.2011, 13:57
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от fiw
чтобы не делать запросы в БД за этими языками
Можно и не только в БД это делать, можно и в файлах хранить, и подключать нужный.

А насчет вашей функции, зачем в цикле проходить по массиву для того что бы найти ключ, а не просто сразу обратится ?
value = langArr[key];
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #8 (permalink)  
Старый 27.09.2011, 14:31
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Если я правильно понимаю. То поисковики будут индексировать сайт очень криво, так как javascript они не интерпритируют. Короче вместо сайта они покажут шаблон для подстановки слов.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Ответить с цитированием
  #9 (permalink)  
Старый 27.09.2011, 15:48
fiw fiw вне форума
Аспирант
Отправить личное сообщение для fiw Посмотреть профиль Найти все сообщения от fiw
 
Регистрация: 18.08.2011
Сообщений: 23

Сообщение от DjDiablo Посмотреть сообщение
Если я правильно понимаю. То поисковики будут индексировать сайт очень криво, так как javascript они не интерпритируют. Короче вместо сайта они покажут шаблон для подстановки слов.
Ну это не новостной сайт )
Это как рабочая программа) Там индексировать ничего не нужно.
Ответить с цитированием
  #10 (permalink)  
Старый 27.09.2011, 15:49
fiw fiw вне форума
Аспирант
Отправить личное сообщение для fiw Посмотреть профиль Найти все сообщения от fiw
 
Регистрация: 18.08.2011
Сообщений: 23

Сообщение от walik Посмотреть сообщение
А насчет вашей функции, зачем в цикле проходить по массиву для того что бы найти ключ, а не просто сразу обратится ?
value = langArr[key];
А если этого значения нету в массиве? Как быть?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery - объект или функция? jazzz13 jQuery 8 16.08.2011 04:01
Универсальная функция Ajax запроса Finesse AJAX и COMET 21 15.06.2011 17:17
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 13:47
Mootools функция periodical не работает по id Jumong Общие вопросы Javascript 2 11.09.2010 16:42
Функция меняющая значение input type text. Value не подходит( Sundog Общие вопросы Javascript 1 25.09.2009 15:06