 
			
				27.09.2011, 17:47
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.11.2009 
					
					
					
						Сообщений: 1,101
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Условие поставить: 
if (langArr[key])
   value = langArr[key];
else
   value = 'Not found';
  
		
	
		
		
		
		
		
			
				__________________ 
				"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."   
Мой сертификат :-D клацай
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.09.2011, 22:26
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.12.2009 
					
					
					
						Сообщений: 155
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Для обычного сайта так делать смысла нет. А вот для самостоятельных приложений (HTA, XUL) так делать имеет смысл. 
	
 
	| 
		
			Сообщение от fiw
			
		
	 | 
 
	| 
		А если этого значения нету в массиве?
	 | 
 
	
 
 Лучше так сделайте:
 
var texts = {
    'Yes': 'Да', 
    'No': 'Нет', 
    'Cancel': 'Отмена'
};
function translate(value)
{
    return texts[value] || value;
};
alert([
    translate('Delete this file?'), 
    translate('Yes'), 
    translate('No')
]);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.09.2011, 21:56
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 sinistral 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2011 
					
					
					
						Сообщений: 5,418
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от with-love-from-siberia
			 
		
	 | 
 
	| 
		Для обычного сайта так делать смысла нет.
	 | 
 
	
 
 а что, если сайт на народе, и больше сделать ну никак не получится?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2011, 21:46
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.04.2010 
					
					
					
						Сообщений: 90
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var lc = function(id){
  if(!lc.base[id] || !lc.base[id][lc.is[lc.cur]]) return id;
  return lc.base[id][lc.is[lc.cur]];
};
lc.is = {
  'ru':0,
  'en':1
};
lc.cur = 'en';
lc.init = function(){
  var lc = navigator.browserLanguage;
  if(!lc) lc = navigator.language;
  lc = lc.substring(0,2).toLowerCase();
  if(typeof(lc.is[lc]) != 'undefined') this.cur = lc;
};
lc.base = {
  'ru':['Русский','Russian'],
  'en':['Английский','English'],
  ...
}
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось aiky, 01.10.2011 в 22:18.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2011, 21:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 sinistral 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2011 
					
					
					
						Сообщений: 5,418
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 нет возможности запомнить язык (например, я хочу сидеть на английском). 
 
lc.base сильно ударит по памяти, если фраз будет около девяти тысяч. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2011, 22:09
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.04.2010 
					
					
					
						Сообщений: 90
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от melky
			
		
	 | 
 
	| 
		нет возможности запомнить язык (например, я хочу сидеть на английском).
	 | 
 
	
 
 Что мешает изменять lc.cur?
 
	
 
	| 
		
			Сообщение от melky
			
		
	 | 
 
	| 
		lc.base сильно ударит по памяти, если фраз будет около девяти тысяч.
	 | 
 
	
 
 
	
 
	| 
		
			Сообщение от melky
			
		
	 | 
 
	| 
		а что, если сайт на народе, и больше сделать ну никак не получится?
	 | 
 
	
 
 Разве эти 2 фразы не противоречат друг другу? 
Где-то память все равно придется выкусывать, чудес не бывает.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2011, 22:28
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 sinistral 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2011 
					
					
					
						Сообщений: 5,418
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от aiky
			 
		
	 | 
 
	
		Что мешает изменять lc.cur? 
Разве эти 2 фразы не противоречат друг другу? 
Где-то память все равно придется выкусывать, чудес не бывает.
	 | 
 
	
 
 неа. я о другом говорил
 
для каждого слова будут храниться переводы для каждого языка?
 
lc.base = {
  'ru':['Русский','Russian'],
  'en':['Английский','English'],
  ...
}
можно просто хранить переводы только для текущего языка, и заменять существующий объект другим при обновлении значения языка  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2011, 22:33
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.04.2010 
					
					
					
						Сообщений: 90
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от melky
			
		
	 | 
 
	| 
		можно просто хранить переводы только для текущего языка, и заменять существующий объект другим при обновлении значения языка
	 | 
 
	
 
 Так можно вообще не заморачиваться и подгружать асинхронно словарь при смене языка неважно из БД или файла, но речь ведь шла о полной реализации на стороне клиента.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2011, 22:57
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 sinistral 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2011 
					
					
					
						Сообщений: 5,418
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от aiky
			 
		
	 | 
 
	| 
		Так можно вообще не заморачиваться и подгружать асинхронно словарь при смене языка неважно из БД или файла, но речь ведь шла о полной реализации на стороне клиента.
	 | 
 
	
 
 бд в файле на языке JS - чем вам не реализация?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.10.2011, 23:02
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.04.2010 
					
					
					
						Сообщений: 90
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от melky
			
		
	 | 
 
	| 
		бд в файле на языке JS - чем вам не реализация?
	 | 
 
	
 
 чем это отличается от lc.base?
 
..ессно можно сделать подмену lc.base с необходимым словарем при смене языка, несколько увеличив при этом общий размер словарей за счет дублирования ключей, но этот вопрос скорее технический чем принципиальный:
 
ru.js:
 
lc.base = {
  'ru':'Русский',
  'en':'Английский',
  ...
}
en.js:
 
lc.base = {
  'ru':'Russian',
  'en':'English',
  ...
}
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось aiky, 02.10.2011 в 09:12.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |