2012-06-02 3 views
2

Я реализую многоязычную поддержку на своей веб-странице. Я хотел бы минимизировать мигание страницы, вызванное перезагрузкой страницы, и я пришел к идее изменить язык страницы, не заставляя всю страницу перезагружать. Для достижения этой цели, единственно возможный путь, который приходит на мой взгляд, с использованием JavaScript:JavaScript: изменение языка без страницы Перезагрузка

  1. Я динамически загружать соответствующий язык .js файл с соответствующими переводами
  2. я вручную пройти через каждый текстовый объект на странице и обновить его, повторно отправив соответствующее новое текстовое значение

Чтобы предоставить вам пример кода, я вставляю код, который будет обновлять только кнопки отправки. При изменении языка я вызываю функцию, которая динамически загружает соответствующий языковой файл .js.

var fileRef = LoadJsCssFile("Language/svk.js", "js", UpdateLanguage); 

После полной загрузки файла средства языка .js, я вызываю функцию, которая обновляет каждый элемент, содержащий текст на веб-странице:

function UpdateLanguage() 
{ 
    var buttons = document.getElementsByClassName("submit_button"); 
    for (buttonID in buttons) 
    {   
      buttons[buttonID].innerHTML = lang.SUBMIT; 
    }     
}; 

вручную обновляя каждый текстовый объект в веб-страницы является сложной и ошибок склонный. Поскольку я еще не очень разбираюсь в JavaScript, я думал, если есть способ просто обновить все ключевые элементы веб-страницы с помощью одной команды JavaScript без обтекания веб-страницы?

Если у вас есть какая-либо другая идея, как эффективно реализовать изменение языка без мигания страницы, мне интересно узнать. :-)

+1

Лучше использовать AJAX, чтобы просто загрузить новую страницу, а затем заменить HTML в текущем теле документа. – diolemo

+2

Возможно, вы захотите заменить текст «предложение по предложению» вместо использования одного слова в качестве единицы, поскольку переводы чаще всего касаются всего контекста предложения, а не просто замены отдельных слов, иначе смысл может быть потерян , –

+1

@mattb В противном случае значение * будет * потеряно. – Hassan

ответ

0

Я нашел решение по моему:

  1. Я готовлю несколько файлы JavaScript языка, содержащие строки на каждое ключевое слово
  2. На кнопке выбора языка, импортировать соответствующий языковой файл для языка Я хочу использовать
  3. Я вручную обновляю каждый текст на веб-странице через javascript.

Вышеупомянутое решение подходит для небольших объектов. для больших, это было бы большой работой, чтобы обновлять каждую текстовую строку через javascript.

Смежные вопросы