Pull to refresh

Смена языков на стороне клиента — JavaScript (jQuery)

Доброго времени суток.

Хочу продемонстрировать способ смены языков на стороне клиента. В качестве фреймворка выбран 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 вынуть нужную строку, текущего языка, например:


Посмотреть в действии можно здесь
.

Спасибо за внимание.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.