Приветствую вас дорогие читатели! Сегодня я представляю вашему вниманию скрипт, способный обеспечить мультиязычность приложениям, написанным на JavaScript. Сам скрипт создан с использованием jQuery, однако при желании, его можно легко переделать на чистые JavaScript функции или под другую библиотеку – Mootols, Prototype и т.п.
Суть работы скрипта заключается в том, что стандартный объект String расширяется двумя функциями для переключения языков. Функция String.localize() возвращает перевод текущей строки, а String.localize_with_args() возвращает перевод строки с заменой указанных в параметрах фраз. Обе эти переменные имеют псевдонимы String.l() и String.l_with_args() соответственно.
Собственно языковые переменные хранятся в виде пары “ключ” – “значение” в объектах отдельно для каждого языка.
Пример инициализации языковых переменных:
Globalite.language("en", {
welcome: "Hello world",
goodbye: "Good bye",
how_are_you: "How are you",
see_you: "See you later"
});
Пример применения функции localize():
"welcome".l()
"welcome".l("Hello world") // Показывает "Hello World" если ключ "welcome" не найден
Пример применения функции localize_with_args():
Globalite.language("ru", {
welcome: "Привет {name}"
});
Globalite.language("en", {
welcome: "Hi {name}"
});
"welcome".l_with_args({ name: "Dima" })
"welcome".l_with_args({ name: "Dima" }, "Hi Dima") // возвращает Hi Dima если ключ не найден
Текущее значения языка установлено в виде атрибута lang тега html:
<html lang="ru">
Для того, чтобы изменить текущий язык, нужно воспользоваться функцией Globalite.setLang():
Globalite.setLang("en"); // переключаем язык на английский
Теперь можно без перезагрузки страницы перевести любой кусок текста. Чтобы продемонстрировать скрипт в работе, я создал демо приложение – простая програмка для обучения иностранным языкам (вернее сказать для разучивания четырех простейших словосочетаний). Программа показывает четыре блока, в которых высвечивается фраза на русском языке. Под блоками расположены три кнопки, при нажатии на которые текст в блоке переводится на английский и французский.
Ну и в конце хочу выразить признательность Nicolas Merouze за этот скрипт.
