Поддержка нескольких языков - PullRequest
9 голосов
/ 02 сентября 2011

Я разрабатываю приложение HTML5, которое использует jQuery. Я хочу сделать его многоязычным: определение языка пользователя и изменение всех литералов на язык пользователя.

Я думаю, что один из подходов заключается в использовании одного HTML-файла для каждого поддерживаемого языка, но это пустая трата пространства.

Другим подходом может быть использование jQuery для изменения всех литералов на язык пользователя. Но я не уверен, как это сделать.

Что ты думаешь? Есть ли лучший подход?

UPDATE:

Я забыл сказать, что у меня тоже есть некоторые литералы в JavaScript.

Ответы [ 4 ]

2 голосов
/ 02 сентября 2011

Не можете ли вы выполнить какой-либо запрос на стороне сервера к языку пользователя, а затем автоматически загрузить соответствующий текст? Может быть, здесь подходит даже CMS.

Для всего кода Javascript я бы использовал строковые литералы в качестве переменной. Таким образом, вы можете загрузить другой языковой файл, соответствующий языку пользователя.

Файл english.js:

var messages_siteA1 = "This is an alert.";
var messages_siteA2 = "...";
// ...

Файл german.js:

var messages_siteA1 = "Dies ist eine Warnung.";
var messages_siteA2 = "...";
// ...

А в вашем Javascript:

alert(messages_siteA1);

Или я здесь упускаю смысл? ;)

1 голос
/ 23 сентября 2011

Если вам абсолютно необходимо сделать это на стороне клиента, как насчет использования файла json или xml для хранения ваших переводов? Это позволяет избежать проблем при создании копий одной и той же страницы. Например, в вашем JSON. у вас будут "welcome_eng": "welcome" и "welcome_fr": "bienvenue" и т. д. Затем вы загружаете соответствующий файл, используя javascript, например, получаете переменные, подобные этой: блаблабла = [ "Добро пожаловать _" + язык]

Или, если вы хотите еще меньше работы, div вашего текста приветствия будет иметь идентификатор "welcome", тогда ваш javascript получит идентификатор и добавит соответствующий контент.

1 голос
/ 02 сентября 2011

В моей демонстрации HTML5 "Облака слов HTML5",

http://timc.idv.tw/wordcloud/

(исходный код можно найти по адресу https://github.com/timdream/wordcloud)

Я написал отдельный HTML для разных языков и включает в себя один набор файлов Javascript. Для буквенных строк в сценарии я собираю их в объект (с именем T) и помещаю его в блок <script> каждого файла HTML.

Это дает мне возможность настраивать страницы для каждого языка; как видите, я перечислил CNN как пример в английской версии, но перечислил другие источники в китайской версии.

0 голосов
/ 02 сентября 2011

Это в основном зависит от того, насколько динамичны или статичны ваши страницы: если они содержат много текста, легче будет продублировать страницу для каждого языка. В этом случае очень важно тщательно изолировать HTML от CSS и скриптов. Все CSS и сценарии должны храниться на отдельных страницах, чтобы не приходилось обновлять все переводы при обновлении стиля или сценария.

OTOH, если он в основном динамический, то имеет смысл заменить фрагменты текста их переводом при создании страницы. Но я бы не стал заменять текст на стороне клиента (jQuery). Это работа на стороне сервера.

Редактировать: Если у вас есть литералы javascript, вы, конечно, должны хранить их рядом с HTML, либо в файле HTML, либо в отдельном файле .js. Но серверу остается доставить содержимое на правильном языке.

...