Лучшая практика JavaScript и многоязычный

Я уже упоминал, что зависимость Maven в pom.xml неверна. Это должно быть

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
62
задан Ken 24 October 2008 в 11:45
поделиться

4 ответа

Когда я создал многоязычные сайты прежде (не очень большие, таким образом, это не могло бы масштабироваться слишком хорошо), я сохраняю серию файлов "языка":

  • lang.en.js
  • lang.it.js
  • lang.fr.js

Каждый из файлов объявляет объект, который является в основном просто картой от ключевого слова до фразы языка:

// 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');
70
ответ дан Community 7 November 2019 в 13:03
поделиться

Просто найденный хорошей статьей о i18n в JavaScript:
http://24ways.org/2007/javascript-internationalisation

, Хотя простой поиск Google с i18n + JavaScript показывает много альтернатив.

В конце, это зависит от того, как глубокий Вы хотите, чтобы он был. Для нескольких языков единственный файл достаточно.

Вы могли использовать платформу как Jquery, использовать промежуток, чтобы отождествить текст (с классом) и затем использовать идентификатор каждого промежутка для нахождения соответствующего текста на выбранном языке.
1 Строка JQuery, сделанного.

5
ответ дан Berzemus 7 November 2019 в 13:03
поделиться

Существуют, несколько вещей, которые необходимо иметь в виду при разработке многоязыковой поддержки:

1 - Отдельный код от данных (т.е. делают правильно не строки твердого кода в Ваши функции)

2 - создают функцию рычага форматирования для контакта с различиями в локализации. Разрешение formattable строк (" {0} ") лучше, чем конкатенация ( "Добро пожаловать в" + значение ) по большому количеству причин:

  • на некоторых языках, число отформатировано как 1.234.678,00 вместо 1 234 567,00
  • , плюрализация часто не так проста как добавление "s" в конце исключительного
  • , грамматические правила отличаются и могут влиять на порядок вещей, таким образом, необходимо позволить динамическим данным быть добавленными после рычага перевода: например, "Добро пожаловать в {0} " превращается " {0} он youkoso" на японском языке (это происходит на в значительной степени каждом языке, возражайте против Вас).

3 - Удостоверяются, что Вы можете на самом деле строки формата после выполнения рычага перевода, таким образом, можно снова использовать ключи.

4 - не Делают, ни под каким circunstance, сцепляют выводы базы данных с утилитой переводчика. Если Вы имеете многоязычные данные, составляете отдельные таблицы / строки в Вашей базе данных. Я видел, что люди понимают эту легкую задачу превратно справедливо часто (обычно для стран и состояний/областей в формах).

5 - Создают явные правила методов кодирования для создания ключей. Функция утилиты средства форматирования (который посмотрит что-то как [1 118], переводят ("привет мир") , возьмет ключ в качестве параметра, и ключи с небольшими изменениями делают maintainance очень раздражающий. Например, Вы могли бы закончить с тремя ключами в следующем примере: "введите Вас имя", "вводят Ваше имя": "вводят Ваше имя":. выберите один формат (например, никакое двоеточие, обрезанное), и поймайте несоответствия в обзорах кода. Не делайте этой фильтрации программно, поскольку она может инициировать ложные положительные стороны.

6 - Быть внимательным, что разметка HTML могла потенциально быть необходима в таблице преобразования (например, если Вы нуждаетесь к полужирному в слове в предложении или имеете сноску медицинские ссылки). Тест для этого экстенсивно.

7 - существует несколько способов импортировать строки языка. Идеально, Вы должны иметь несколько версий language.lang.js файла, переключателя между ними с серверным кодом, и сослаться на файл от нижней части файла HTML. Получение по запросу файла через Ajax является также альтернативой, но могло представить задержки. Слияние language.js в Ваш основной файл кода не желательно, так как Вы теряете преимущества кэширования файлов.

8 - Тест с Вашими выходными языками. Это звучит глупым, но я видел серьезную ошибку однажды, потому что программист не потрудился проверять на существование "Г©" в ключе.

51
ответ дан Leo 7 November 2019 в 13:03
поделиться

Необходимо изучить то, что было сделано в классических компонентах JS - берут вещи как Dojo, Расширение, FCKEditor, TinyMCE, и т.д. Вы найдете много хороших идей.

Обычно это заканчивает тем, что было некоторыми атрибутами, которые Вы устанавливаете на тегах, и затем Вы заменяете содержание тега с переводом, найденным в Вашем файле перевода, на основе значения атрибута.

Одна вещь иметь в виду, эволюция набора языка (когда Ваш код развивается, будете, необходимо снова перевести все это или не). Мы сохраняем переводы в Файлах ПО (Гну Gettext), и у нас есть сценарий, который преобразовывает Файл ПО в готовый для использования Файлов JS.

, Кроме того:

  • Всегда использование UTF-8 - это звучит глупым, но если Вы не будете в utf-8 от запуска (голова HTML + JS, кодирующий), Вы будете промахом быстро.
  • Использование английская строка как ключ к Вашим переводам - этот путь Вы не закончите с вещами как: Ленг. Приветствие = 'Привет мир' - но Ленг ['Привет мир'] = 'Привет мир';
1
ответ дан Matt 7 November 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: