Existe uma maneira de obter o idioma usado atualmente em um controlador (sem $translateProvider
)?
Não foi possível encontrar nada no $translate
serviço.
angularjs
angular-translate
jviotti
fonte
fonte
{ "LANG_CODE": "en" }
e usar otranslate
filtro no veja como de costume, como:<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>
Respostas:
$translate.use()
é um getter e setter.Veja esta demonstração encontrada nos links dos documentos:
http://jsfiddle.net/PascalPrecht/eUGWJ/7/
fonte
$translate.use()
é o caminho a percorrer. Além disso, quando um carregador assíncrono é executado, você pode querer usar o$translate.proposedLanguage()
que retorna a chave de idioma do idioma que está carregado atualmente, mas ainda não terminou de carregar.fonte
$translate.use()
não foram definidas.$translate.proposedLanguage()
me deu o idioma correto.$translate.proposedLanguage()
em app.config? eu só tenho $ translateProvider e preciso encontrar o resultado dessa função IN config, não mais tarde no controlador. Você tem alguma ideia ? Muito obrigadoproposedLanguage()
Ao usar angular-translate-loader-static-files, percebi que
$translate.proposedLanguage()
retornavaundefined
ao usar o idioma padrão, mas$translate.use()
sempre retornava o idioma proposto.Portanto, eu corrigi usando:
var currentLang = $translate.proposedLanguage() || $translate.use();
fonte
$translate.use()
parece não funcionar no carregamento inicial do aplicativo, para obter o último idioma selecionado do armazenamento:$translate.storage().get( $translate.storageKey() )
ou apenas$translate.proposedLanguage();
fonte
O
$translate
serviço possui um método chamadopreferredLanguage()
que retorna o que você deseja. O retorno desta função é a string da linguagem, como 'en'.Aqui, eu escrevi um exemplo para você:
angular.module('traslateApp').controller('myController', ['$scope', '$translate', function($scope,$translate){ $scope.changeLanguage = function (langKey) { $translate.use(langKey); }; $scope.getCurrentLanguage = function () { $translate.preferredLanguage(); }; }])
fonte
translate.currentLang é usado para verificar o idioma selecionado atualmente em i18n
fonte
Acho que esta é a melhor maneira de determinar o idioma -
$window.navigator.language || $window.navigator.userLanguage
fonte
Talvez não esteja relacionado, mas pode ser útil. No angular2 + a forma de acessar o idioma atual é
... import { TranslateService } from '@ngx-translate/core'; export class MyComponent implements OnInit { constructor(private translate: TranslateService) {} ngOnInit() { translate.use('it'); const currentLang = this.translate.currentLang; } }
fonte