Подтвердить что ты не робот

Локализация с помощью JQuery?

Я понятия не имею, как обрабатывать локализацию с помощью JQuery. Я хочу установить innerHTML с немецким текстом, но если браузер настроен на использование английского языка, тогда я хочу установить английский текст.

В PHP я использую gettext для таких вещей, но как это сделать в JavaScript/jQuery?

4b9b3361

Ответ 1

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

Пример:

// your script logic
myscript.js

// language texts
myscript.en.js
myscript.de.js
myscript.it.js
...

Вы можете определить все языковые файлы:

LANG = {
    txt1: 'English text1',
    txt2: 'English text2'
    ...
};

Убедитесь, что вы включили только один из них в свой HTML и обязательно включите файл языка в первую очередь.

<script type="text/javascript" src="myscript.de.js"></script>
<script type="text/javascript" src="myscript.js"></script>

Затем вы можете использовать эти локализованные тексты в своем основном script, например:

$(document).ready(function () {
    alert(LANG.txt1);
});

Что лучше всего в том, что ваша логика (myscript.js в этом примере) не должна беспокоиться о локализации, и вам не придется ее менять, если вы хотите добавить новый языковой файл.

Ответ 2

Я еще не использовал его, но я думаю об использовании jquery-localize для проекта. Если вы не возражаете использовать перевод атрибутов 'rel', определенных на ваших элементах, тогда он выглядит как хороший вариант.

Пример из README:

HTML

<p rel="localize[title]">Tracker Pro XT Deluxe</p>
<p rel="localize[search.placeholder]">Search...</p>
<p rel="localize[search.button]">Go!</p>
<p rel="localize[footer.disclaimer]">Use at your own risk.</p>
<p rel="localize[menu.dashboard]">Dashboard</p>
<p rel="localize[menu.list]">Bug List</p>
<p rel="localize[menu.logout]">Logout</p>

приложения es.json

{
  title: "Tracker Pro XT Deluxo",
  search: {
     placeholder: "Searcho...",
     button: "Vamos!"
  },
  footer: {
    disclaimer: "Bewaro."
  },
  menu: {
    dashboard: "Dashboardo",
    list: "Bug Listo",
    logout: "Exito"
  }
}

Локализовать его!

$("rel*=localize").localize("application", { language: "es" })

Ответ 3

Вам вообще не нужен JQuery.

Объект навигатора в javascript (http://www.comptechdoc.org/independent/web/cgi/javamanual/javanavigator.html) содержит свойство userLanguage (IE) и языка (Netscape/Firefox), которое установлено по текущему языку браузера.

Чтобы решить ваш пример, вы можете использовать что-то вроде:

   
  var textToSet = null;
  var userLang = null;

  /*
  -if userLanguage exists they're in IE, else firefox
  -get the first two letters in lowercase to guarantee 
   an easily evaluated base language
  */
  if(navigator.userLanguage) baseLang = substring(navigator.userLanguage,0,2).toLowerCase();
  else baseLang = substring(navigator.language,0,2).toLowerCase();

  //check languages
  switch(baseLang)
  {
    case "de":
      //German
      textToSet = "german text";
      break;
    default:
      textToSet = "english text";
  }
  document.getElementById('elementToSetTextInto').innerHTML = textToSet;


Имейте в виду, что вам может понадобиться другой текст, основанный на базовом языке и локали. В этом случае ищите "en-us", "de-de". Сайты для кодов культуры легко доступны для поиска в googled (1 ссылка только на первый пост;))

Надеюсь, что это сработает для вас.

Ответ 4

Поскольку вы уже используете gettext с вашим php-приложением, вам следует изучить эту реализацию javascript gettext

Он не использует скомпилированные файлы .mo, но он будет использовать ваши файлы .po, которые у вас уже есть.

Этот метод имеет то преимущество, что управляет всеми вашими переводами в одном месте.

Ответ 5

Попробуйте. Кнопка TranslateThis - это легкий виджет перевода Javascript. Он быстро переводит любую страницу с помощью AJAX и API Google Language.

Здесь...

Ответ 6

Еще один вариант, который вы могли бы изучить, - предлагаемый Microsoft jquery-global плагин. Это все еще в бета-версии.