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

Интернационализация с угловыми

Я подумываю о переносе моего сайта на angularjs, и я хочу начать очень мало, перемещая все мои статические серверные шаблоны с открытым текстом от django до angular (в противном случае возникнут проблемы с синтаксисом, {{}} ').

Кажется, что лучший способ сделать это будет одним из двух вариантов:

  • Для вызова ajax, который возвращает JSON со всеми текстами моего сайта. Тексты будут сохранены в переменной, привязанной к моим HTML-элементам, поэтому angular обновит все.
  • Чтобы сохранить статический файл js со словарем и включить его в мой HTML и связать словарь с угловыми символами.

Обе опции позволят мне переключаться между языками без перезагрузки страницы.

Какой из них лучше? В общем, это хороший подход или есть более правильный способ?

4b9b3361

Ответ 1

Прежде всего, есть способ изменить разделители angular на другие символы, как указано здесь: Angular Пользовательский разделитель JS

Опция 2. проще. Вы включаете его один раз, и у вас есть все переводы на загрузку страницы. Нет асинхронных вызовов, нет promises, приятно и легко.

И все же я бы пошел первым. Такие услуги, как $translate, действительно облегчат вашу жизнь после варианта 1. Кроме того, у него есть много вариантов загрузки и хранения загруженных данных в LocalStorage и куки, поэтому есть много места для расширения и настройки. Затем вы можете перевести свой контент с помощью услуги $translate, директивы или фильтра.

И не забывайте, что опция 2 отключает любые опции кэшированных запросов. При каждом запросе вашей стартовой страницы сервер должен прочитать статический файл и включить его в html. С первым вариантом пользовательский браузер может кэшировать .json столько, сколько захотите.

Ответ 2

Я опробовал несколько различных вариантов, в том числе Angular Translate, но мне понравилось Angular-gettext.

Одна вещь, которая очень помогла, заключается в том, что там есть рабочая демонстрация, где они i18n TodoMVC, называемые angular-gettext-example.

Рабочий процесс прост:

  • Добавьте директиву "translate" к вашим шаблонам
  • Запустите grunt, чтобы извлечь шаблон шаблона.
  • Отправляйте свой дескриптор поставщику перевода или DIY с помощью POEdit или аналогичного программного обеспечения.
  • Отбросьте файлы перевода .po обратно в свой проект
  • Запустите grunt для компиляции файлов .po
  • Задайте язык по умолчанию в своей области
  • Посмотрите на волшебство!

Я уверен, что другие решения, размещенные здесь, также хороши, но я не видел сквозного примера, который хорошо организован как angular -gettext-example.

Cheers, JD

Ответ 3

AngularJS поддерживает только il8n/L10n для фильтров только для валюты, даты и номеров. Согласно этой книге:

Book-shot! (извините за низкое качество камеры сотового телефона)

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

Ответ 4

Посмотрите angular-translate:)

Он решает оба сценария!