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

Angular Поддержка js для локализации

Я попытался найти документацию в AngularJS для поддержки нескольких языков без успеха. Поддерживается ли локализация?

4b9b3361

Ответ 1

Взгляните на angular -translate: https://github.com/angular-translate/angular-translate

для всех пользователей DIY:

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

Эти файлы помогут вам со встроенными фильтрами angular: date, currency и number. Удивительно... до сих пор.

Теперь вы хотите использовать свои собственные тексты, чем все, что вам нужно, это сила angular.js инъекции зависимостей. Создайте новый файл, например: "myTexts_en_us.js", и используйте $offer.value следующим образом:

$provide.value("myTexts", {firstText : "This is my localized text"});

Подробнее:
http://jsfiddle.net/4tRBY/24/

Для использования в реальном мире вы должны добавить фильтр: http://jsfiddle.net/4tRBY/41/

Советов:

  • Обязательно вставьте новый файл локализации в свой html вручную, JS или Server. (Сервер - лучший выбор здесь!)
  • Если вы включите один из angular -local файлов, вам не нужно его настраивать в вашем модуле приложения. (у вас будет $locale автоматически - см. скрипку)
  • добавьте ключ id к вашему $offer-значению - и установите значение для кода языка, который вы используете в своем файле, - это будет полезно для тестирования.

Ответ 2

То, что вы ищете, это $locale.

На самом деле есть пример на полпути вниз по странице angularjs.

Отрывок из их примера:

function BeerCounter($scope, $locale) {
  $scope.beers = [0, 1, 2, 3, 4, 5, 6];
  if ($locale.id == 'en-us') {
    $scope.beerForms = {
      0: 'no beers',
      one: '{} beer',
      other: '{} beers'
    };
  } else {
    $scope.beerForms = {
      0: 'žiadne pivo',
      one: '{} pivo',
      few: '{} pivá',
      other: '{} pív'
    };
  }
}

Я не уверен, что это "стандарт" для каждого... но это начало. Если бы у вас было много локализации, я бы просто создал сервис для ввода в мои контроллеры... что-то вроде этого psuedo-code:

app.service('myLocalization', ['$locale', function($locale) {
    var res = {
       'help' : { 
           'en-us': 'help',
           'es-mx': 'ayudame'
       },
       'beer' : {
            'en-us': 'beer',
            'es-mx': 'cerveza'
       }
    }

    return {
       getString: function(key) {
          return res[key][$locale.id];
       }
    }
});

Ответ 3

Я создал модуль специально для целей локализации - https://github.com/4vanger/angular-l10n Он поддерживает локализацию сообщений, замену параметров, изменение локали в полете и предоставляет множество удобных способов ее использования - фильтры, директивы и т.д.

Ответ 4

Только для полноты информации, начиная с где-то внутри потока AngularJS 1.4, будет реализована другая реализация i18n прямо из ядра. Пожалуйста, посмотрите https://github.com/angular/i18n

Ответ 5

вы также можете проверить это:

https://github.com/angular-ui/ui-utils/pull/173

производительность лучше, чем любая другая библиотека i18n, доступная для angular на данный момент.

Ответ 6

Если вы ищете поддержку i18n, вы можете обратиться к ниже представленному проекту, который обладает полной многоязычной возможностью и также легко реализуется. Взгляните на проект github

angularjs-localizationservice