[英]Get current language with angular-translate
有沒有辦法在 controller (沒有$translateProvider
)中獲取當前使用的語言?
在$translate
服務中找不到任何內容。
$translate.use()
是要走的路。 此外,當執行異步加載器時,您可能希望使用$translate.proposedLanguage()
,它返回當前加載但尚未完成加載的語言的語言鍵。
當使用angular-translate-loader-static-files時,我注意到$translate.proposedLanguage()
在使用默認語言時返回undefined
,而$translate.use()
總是返回建議的語言。
因此,我使用以下方法修復它:
var currentLang = $translate.proposedLanguage() || $translate.use();
$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.use()
似乎不適用於應用程序的初始加載,從存儲中獲取最后選擇的語言: $translate.storage().get( $translate.storageKey() )
或只是$translate.proposedLanguage();
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;
}
}
`從'@ngx-translate/core'導入{翻譯服務};
導出 class MyComponent 實現 OnInit { 構造函數(私有翻譯:TranslateService) { translate.setDefaultLang('en'); }`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.