Условие поставить:
if (langArr[key]) value = langArr[key]; else value = 'Not found'; |
Для обычного сайта так делать смысла нет. А вот для самостоятельных приложений (HTA, XUL) так делать имеет смысл.
Цитата:
var texts = {
'Yes': 'Да',
'No': 'Нет',
'Cancel': 'Отмена'
};
function translate(value)
{
return texts[value] || value;
};
alert([
translate('Delete this file?'),
translate('Yes'),
translate('No')
]);
|
Цитата:
|
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'],
...
}
|
нет возможности запомнить язык (например, я хочу сидеть на английском).
lc.base сильно ударит по памяти, если фраз будет около девяти тысяч. |
Цитата:
Цитата:
Цитата:
Где-то память все равно придется выкусывать, чудес не бывает. |
Цитата:
для каждого слова будут храниться переводы для каждого языка?
lc.base = {
'ru':['Русский','Russian'],
'en':['Английский','English'],
...
}
можно просто хранить переводы только для текущего языка, и заменять существующий объект другим при обновлении значения языка |
Цитата:
|
Цитата:
|
Цитата:
..ессно можно сделать подмену lc.base с необходимым словарем при смене языка, несколько увеличив при этом общий размер словарей за счет дублирования ключей, но этот вопрос скорее технический чем принципиальный: ru.js:
lc.base = {
'ru':'Русский',
'en':'Английский',
...
}
en.js:
lc.base = {
'ru':'Russian',
'en':'English',
...
}
|
| Часовой пояс GMT +3, время: 12:38. |