Один из подходов — тот, который вы используете: пусть пользователь выбирает язык для приложения. Вы можете сохранить выбор пользователя где-нибудь в приложении (например, localStorage) и при загрузке страницы проверить значение языка и выполнить соответствующие действия, чтобы отобразить весь текст на этом языке. Чтобы реализовать это без использования внешней библиотеки, вы можете иметь глобальный объект со всеми переводами:
var translations = new Object();
translations.en = {
text1: 'The first text',
text2: 'The second text'
};
translations.es = {
text1: 'El primer texto',
text2: 'El segundo texto'
};
И ваша страница выглядит так:
<span data-translate="text1"></span>
<span data-translate="text2"></span>
Итак, после загрузки страницы и выбора языка пользователем в переменной (скажем, lang
), вы выполняете итерацию по всем элементам, имеющим атрибут data-translate
, и динамически устанавливаете их содержимое.
var items = document.querySelectorAll('[data-translate]');
for (var i = 0; i < items.length; ++i) {
var index = items[i].getAttribute('data-translate');
items[i].innerHTML = translations[lang][index];
}
Другой подход заключается в использовании библиотеки, которая автоматически определяет язык пользователя (из языка системы) и заменяет все переводимые элементы со страницы (вы отмечаете их) соответствующими значениями (которые хранятся в отдельном файле). Например, проверьте webL10n.
Я считаю, что первый подход проще реализовать с помощью webL10n.
person
lufte
schedule
08.12.2014