Есть ли способ получить текущий используемый язык в контроллере (без $translateProvider
)?
В $translate
сервисе ничего не нашел .
angularjs
angular-translate
Jviotti
источник
источник
{ "LANG_CODE": "en" }
и использоватьtranslate
фильтр вид как обычно, например:<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>
Ответы:
$translate.use()
является геттером и сеттером.См. Эту демонстрацию в ссылках на документы:
http://jsfiddle.net/PascalPrecht/eUGWJ/7/
источник
$translate.use()
это путь. Кроме того, когда выполняется асинхронный загрузчик, вы можете использовать,$translate.proposedLanguage()
который возвращает ключ языка для языка, который в настоящее время загружен, но еще не завершен.источник
$translate.use()
не установил.$translate.proposedLanguage()
дал мне правильный язык.$translate.proposedLanguage()
в app.config? У меня есть только $ translateProvider, и мне нужно найти результат этой функции В конфигурации, а не позже в контроллере. У тебя есть идея? Большое спасибоproposedLanguage()
При использовании angular-translate-loader-static-files я заметил, что он
$translate.proposedLanguage()
возвращаетсяundefined
при использовании языка по умолчанию, в то время как$translate.use()
всегда возвращается предлагаемый язык.Поэтому я исправил это, используя:
var currentLang = $translate.proposedLanguage() || $translate.use();
источник
$translate.use()
похоже, не работает при начальной загрузке приложения, чтобы получить последний выбранный язык из хранилища:$translate.storage().get( $translate.storageKey() )
или просто$translate.proposedLanguage();
источник
У
$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(); }; }])
источник
translate.currentLang используется для проверки текущего выбранного языка в i18n
источник
Я думаю, что это лучший способ определить язык -
$window.navigator.language || $window.navigator.userLanguage
источник
Может быть, не связано, но может быть полезно. В angular2 + способ доступа к текущему языку
... import { TranslateService } from '@ngx-translate/core'; export class MyComponent implements OnInit { constructor(private translate: TranslateService) {} ngOnInit() { translate.use('it'); const currentLang = this.translate.currentLang; } }
источник