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

Получить текущий язык с помощью angular -трансляции

Есть ли способ получить текущий используемый язык в контроллере (без $translateProvider)?

Не удалось найти что-либо в службе $translate.

4b9b3361

Ответ 1

$translate.use() - это геттер и сеттер.

См. эту демонстрацию, найденную в ссылках документов:

http://jsfiddle.net/PascalPrecht/eUGWJ/7/

Ответ 2

$translate.use() - путь. Кроме того, когда выполняется асинхронный загрузчик, вы можете использовать $translate.proposedLanguage(), который возвращает языковой ключ для языка, который в настоящее время загружен, но еще не загружен.

Ответ 3

При использовании angular -translate-loader-static-files я заметил, что $translate.proposedLanguage() возвратил undefined при использовании языка по умолчанию, в то время как $translate.use() всегда возвращал предлагаемый язык.

Поэтому я исправил его, используя:

var currentLang = $translate.proposedLanguage() || $translate.use();

Ответ 4

Служба $translate имеет метод preferredLanguage(), который возвращает то, что вы хотите. Возврат этой функции - это строка языка, например 'en'.

Здесь я написал вам пример:

angular.module('traslateApp').controller('myController', ['$scope', '$translate', function($scope,$translate){
   $scope.changeLanguage = function (langKey) {
      $translate.use(langKey);
   };
   $scope.getCurrentLanguage = function () {
       $translate.preferredLanguage();
   };
}])

Ответ 5

$translate.use() похоже, не работает при начальной загрузке приложения, чтобы получить последний выбранный язык из хранилища: $translate.storage().get( $translate.storageKey() ) или просто $translate.proposedLanguage();

Ответ 6

Я думаю, что это лучший способ определить язык -

$window.navigator.language || $window.navigator.userLanguage