Я уже упоминал, что зависимость Maven в pom.xml неверна. Это должно быть
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
Когда я создал многоязычные сайты прежде (не очень большие, таким образом, это не могло бы масштабироваться слишком хорошо), я сохраняю серию файлов "языка":
Каждый из файлов объявляет объект, который является в основном просто картой от ключевого слова до фразы языка:
// lang.en.js
lang = {
greeting : "Hello"
};
// lang.fr.js
lang = {
greeting : "Bonjour"
};
Динамично загружают один из тех файлов и затем всего, что необходимо сделать, ссылка ключ из карты:
document.onload = function() {
alert(lang.greeting);
};
существуют, конечно, много других способов сделать это и много способов сделать этот стиль, но лучше: инкапсуляция всего этого в функцию так, чтобы недостающая фраза из Вашего "словаря" могла быть обработана корректно, или даже сделать все это с помощью ООП, и позволяют ему управлять динамическим включая файлов, это могло, возможно, даже потянуть селекторы языка для Вас, и т.д.
var l = new Language('en');
l.get('greeting');
Просто найденный хорошей статьей о i18n в JavaScript:
http://24ways.org/2007/javascript-internationalisation
, Хотя простой поиск Google с i18n + JavaScript показывает много альтернатив.
В конце, это зависит от того, как глубокий Вы хотите, чтобы он был. Для нескольких языков единственный файл достаточно.
Вы могли использовать платформу как Jquery, использовать промежуток, чтобы отождествить текст (с классом) и затем использовать идентификатор каждого промежутка для нахождения соответствующего текста на выбранном языке.
1 Строка JQuery, сделанного.
Существуют, несколько вещей, которые необходимо иметь в виду при разработке многоязыковой поддержки:
1 - Отдельный код от данных (т.е. делают правильно не строки твердого кода в Ваши функции)
2 - создают функцию рычага форматирования для контакта с различиями в локализации. Разрешение formattable строк (" {0} ") лучше, чем конкатенация ( "Добро пожаловать в" + значение ) по большому количеству причин:
3 - Удостоверяются, что Вы можете на самом деле строки формата после выполнения рычага перевода, таким образом, можно снова использовать ключи.
4 - не Делают, ни под каким circunstance, сцепляют выводы базы данных с утилитой переводчика. Если Вы имеете многоязычные данные, составляете отдельные таблицы / строки в Вашей базе данных. Я видел, что люди понимают эту легкую задачу превратно справедливо часто (обычно для стран и состояний/областей в формах).
5 - Создают явные правила методов кодирования для создания ключей. Функция утилиты средства форматирования (который посмотрит что-то как [1 118], переводят ("привет мир") , возьмет ключ в качестве параметра, и ключи с небольшими изменениями делают maintainance очень раздражающий. Например, Вы могли бы закончить с тремя ключами в следующем примере: "введите Вас имя", "вводят Ваше имя": "вводят Ваше имя":. выберите один формат (например, никакое двоеточие, обрезанное), и поймайте несоответствия в обзорах кода. Не делайте этой фильтрации программно, поскольку она может инициировать ложные положительные стороны.
6 - Быть внимательным, что разметка HTML могла потенциально быть необходима в таблице преобразования (например, если Вы нуждаетесь к полужирному в слове в предложении или имеете сноску медицинские ссылки). Тест для этого экстенсивно.
7 - существует несколько способов импортировать строки языка. Идеально, Вы должны иметь несколько версий language.lang.js файла, переключателя между ними с серверным кодом, и сослаться на файл от нижней части файла HTML. Получение по запросу файла через Ajax является также альтернативой, но могло представить задержки. Слияние language.js в Ваш основной файл кода не желательно, так как Вы теряете преимущества кэширования файлов.
8 - Тест с Вашими выходными языками. Это звучит глупым, но я видел серьезную ошибку однажды, потому что программист не потрудился проверять на существование "Г©" в ключе.
Необходимо изучить то, что было сделано в классических компонентах JS - берут вещи как Dojo, Расширение, FCKEditor, TinyMCE, и т.д. Вы найдете много хороших идей.
Обычно это заканчивает тем, что было некоторыми атрибутами, которые Вы устанавливаете на тегах, и затем Вы заменяете содержание тега с переводом, найденным в Вашем файле перевода, на основе значения атрибута.
Одна вещь иметь в виду, эволюция набора языка (когда Ваш код развивается, будете, необходимо снова перевести все это или не). Мы сохраняем переводы в Файлах ПО (Гну Gettext), и у нас есть сценарий, который преобразовывает Файл ПО в готовый для использования Файлов JS.
, Кроме того: