角度翻訳で現在の言語を取得する


86

コントローラーで現在使用されている言語を取得する方法はありますか( $translateProvider)ますか?

$translateサービスに何も見つかりませんでした。


1
なんらかの理由でそれをビューでグローバルに直接使用する必要がある場合、おそらく最も手間がかからない方法は、翻訳プロバイダー(つまり、実際の翻訳ファイル)で言語コードを定義し{ "LANG_CODE": "en" }translateフィルターを使用することです。以下のように、いつものように表示します<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>
ヤリKeinänen

$ window.navigatorを使用しない理由
Aleksandr Golovatyi 2018年

回答:


155

$translate.use() ゲッターとセッターです。

ドキュメントのリンクにあるこのデモを参照してください。

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


現在のブラウザ言語を取得するには、このサービスをその単一の機能にのみ使用する必要がありますか?私が翻訳をするつもりがなくても
2015

5
これは私に現在の言語ではなくデフォルトの言語を与えました。$ translate.proposedLanguage()は、質問に従ってコントローラーで現在使用されている言語を教えてくれました
Joan-Diego Rodriguez

41

$translate.use()行く方法です。また、非同期ローダーが実行されるときに、$translate.proposedLanguage()現在ロードされているがまだロードが完了していない言語の言語キーを返すを使用したい場合があります。


2
翻訳が読み込まれる前に言語を判別しようとしました$translate.use()が、設定されませんでした。$translate.proposedLanguage()正しい言語を教えてくれました。
ncabral 2014年

3
$translate.proposedLanguage()app.configでこれを使用することは可能ですか?私は$ translateProviderしか持っておらず、後でコントローラーでではなく、構成でこの関数の結果を見つける必要があります。アイデアはありますか?
どうも

2
+ forproposedLanguage()
Herr Derb 2016

38

angle-translate-loader-static-filesを使用しているとき、私はそれに気づきました $translate.proposedLanguage()undefined使用すると、デフォルトの言語を使用する返される、$translate.use()常に提案された言語返される。

したがって、次を使用して修正しました。

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

3
これは、すべての状況で現在の言語を取得できる唯一の方法です。
Samuli Pahaoja 2015

8

$translate.use()アプリの初期ロードでは機能しないようです。ストレージから最後に選択した言語を取得します。$translate.storage().get( $translate.storageKey() ) または単に $translate.proposedLanguage();


8

この$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();
   };
}])

2
これにより、必ずしも選択された「現在の」言語ではなく、「優先」言語が提供されます。言語を切り替える場合、私の理解では、これは同じようにはなりません。
arcseldon 2014年

2
var currentLanguage = $ translate.use(); charlietflによる回答に従って、変更をオンにします
arcseldon

1

translate.currentLangは、i18nで現在選択されている言語を確認するために使用されます


0

これが言語を決定するためのより良い方法だと思います-

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

0

たぶん関係はありませんが、役に立つかもしれません。angle2 +では、現在の言語にアクセスする方法は次のとおりです。

...
import { TranslateService } from '@ngx-translate/core';

export class MyComponent implements OnInit {
  constructor(private translate: TranslateService) {}

  ngOnInit() {
   translate.use('it');
   const currentLang = this.translate.currentLang;
  }
 }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.