簡體   English   中英

使用角度翻譯獲取當前語言

[英]Get current language with angular-translate

有沒有辦法在 controller (沒有$translateProvider )中獲取當前使用的語言?

$translate服務中找不到任何內容。

$translate.use()是一個getter和setter。

請參閱文檔鏈接中的此演示:

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

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM