Доброго времени суток.
Хочу продемонстрировать способ смены языков на стороне клиента. В качестве фреймворка выбран jQuery.
К примеру, имеем следующий код:
и нам необходимо красиво подменять текст без перезагрузки страницы, используя следующий дропдаун:
имея два языковых файла в формате JSON:
languages/eng.json
и languages/rus.json
ну и сама функция смены языков:
и для случая, которому пригодиться переменная LANGUAGE — код ниже
он будет нужен для того, что бы иметь возможность в произвольном месте с помощью javascript вынуть нужную строку, текущего языка, например:
Хочу продемонстрировать способ смены языков на стороне клиента. В качестве фреймворка выбран jQuery.
К примеру, имеем следующий код:
Привет Мир
Некоторый текст
и нам необходимо красиво подменять текст без перезагрузки страницы, используя следующий дропдаун:
English
Русский
имея два языковых файла в формате JSON:
languages/eng.json
{
"hello_world":"Hello World",
"some_text":"Some Text"
}
и languages/rus.json
{
"hello_world":"Привет Мир",
"some_text":"Некоторый текст"
}
ну и сама функция смены языков:
var LANGUAGE;
$.redrawLanguage = function (lang) {
$.ajax({
url : 'languages/' + lang + '.json', //тянем файл с языком
dataType : 'json',
success : function (response) {
LANGUAGE = response; //записываем в глобальную переменную, а вдруг пригодиться
$('body').find("[lng]").each(function () //ищем все элементы с атрибутом
{
var lng = LANGUAGE[ $(this).attr('lng') ]; //берем нужное значение по атрибуту lng
var tag = $(this)[0].tagName.toLowerCase();
switch (tag) //узнаем название тега
{
case "input":
$(this).val(lng);
break;
default:
$(this).html(lng);
break;
}
});
}
});
}
и для случая, которому пригодиться переменная LANGUAGE — код ниже
$.getLanguage = function (key) {
if (typeof(LANGUAGE[key]) != 'undefined') //если есть переменная
{
return LANGUAGE[key]; //возвращаем значение
}
return key; //если нет, тогда ключ
}
он будет нужен для того, что бы иметь возможность в произвольном месте с помощью javascript вынуть нужную строку, текущего языка, например:
Посмотреть в действии можно здесь.
Спасибо за внимание.