Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.09.2011, 17:47
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Условие поставить:
if (langArr[key])
   value = langArr[key];
else
   value = 'Not found';
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #12 (permalink)  
Старый 27.09.2011, 22:26
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 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')
]);
Ответить с цитированием
  #13 (permalink)  
Старый 28.09.2011, 21:56
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от with-love-from-siberia Посмотреть сообщение
Для обычного сайта так делать смысла нет.
а что, если сайт на народе, и больше сделать ну никак не получится?
Ответить с цитированием
  #14 (permalink)  
Старый 01.10.2011, 21:46
Аватар для aiky
Аспирант
Отправить личное сообщение для aiky Посмотреть профиль Найти все сообщения от aiky
 
Регистрация: 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.
Ответить с цитированием
  #15 (permalink)  
Старый 01.10.2011, 21:55
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

нет возможности запомнить язык (например, я хочу сидеть на английском).

lc.base сильно ударит по памяти, если фраз будет около девяти тысяч.
Ответить с цитированием
  #16 (permalink)  
Старый 01.10.2011, 22:09
Аватар для aiky
Аспирант
Отправить личное сообщение для aiky Посмотреть профиль Найти все сообщения от aiky
 
Регистрация: 06.04.2010
Сообщений: 90

Сообщение от melky
нет возможности запомнить язык (например, я хочу сидеть на английском).
Что мешает изменять lc.cur?

Сообщение от melky
lc.base сильно ударит по памяти, если фраз будет около девяти тысяч.
Сообщение от melky
а что, если сайт на народе, и больше сделать ну никак не получится?
Разве эти 2 фразы не противоречат друг другу?
Где-то память все равно придется выкусывать, чудес не бывает.
Ответить с цитированием
  #17 (permalink)  
Старый 01.10.2011, 22:28
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от aiky Посмотреть сообщение
Что мешает изменять lc.cur?
Разве эти 2 фразы не противоречат друг другу?
Где-то память все равно придется выкусывать, чудес не бывает.
неа. я о другом говорил

для каждого слова будут храниться переводы для каждого языка?
lc.base = {
  'ru':['Русский','Russian'],
  'en':['Английский','English'],
  ...
}

можно просто хранить переводы только для текущего языка, и заменять существующий объект другим при обновлении значения языка
Ответить с цитированием
  #18 (permalink)  
Старый 01.10.2011, 22:33
Аватар для aiky
Аспирант
Отправить личное сообщение для aiky Посмотреть профиль Найти все сообщения от aiky
 
Регистрация: 06.04.2010
Сообщений: 90

Сообщение от melky
можно просто хранить переводы только для текущего языка, и заменять существующий объект другим при обновлении значения языка
Так можно вообще не заморачиваться и подгружать асинхронно словарь при смене языка неважно из БД или файла, но речь ведь шла о полной реализации на стороне клиента.
Ответить с цитированием
  #19 (permalink)  
Старый 01.10.2011, 22:57
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от aiky Посмотреть сообщение
Так можно вообще не заморачиваться и подгружать асинхронно словарь при смене языка неважно из БД или файла, но речь ведь шла о полной реализации на стороне клиента.
бд в файле на языке JS - чем вам не реализация?
Ответить с цитированием
  #20 (permalink)  
Старый 01.10.2011, 23:02
Аватар для aiky
Аспирант
Отправить личное сообщение для aiky Посмотреть профиль Найти все сообщения от aiky
 
Регистрация: 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.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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