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.
|
|
|
|