コントローラーで現在使用されている言語を取得する方法はありますか( $translateProvider
)ますか?
$translate
サービスに何も見つかりませんでした。
コントローラーで現在使用されている言語を取得する方法はありますか( $translateProvider
)ますか?
$translate
サービスに何も見つかりませんでした。
回答:
$translate.use()
行く方法です。また、非同期ローダーが実行されるときに、$translate.proposedLanguage()
現在ロードされているがまだロードが完了していない言語の言語キーを返すを使用したい場合があります。
$translate.use()
が、設定されませんでした。$translate.proposedLanguage()
正しい言語を教えてくれました。
$translate.proposedLanguage()
app.configでこれを使用することは可能ですか?私は$ translateProviderしか持っておらず、後でコントローラーでではなく、構成でこの関数の結果を見つける必要があります。アイデアはありますか?
proposedLanguage()
angle-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();
};
}])
これが言語を決定するためのより良い方法だと思います-
$window.navigator.language || $window.navigator.userLanguage
たぶん関係はありませんが、役に立つかもしれません。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;
}
}
{ "LANG_CODE": "en" }
、translate
フィルターを使用することです。以下のように、いつものように表示します<video controls poster="img/poster-{{ 'LANG_CODE' | translate }}.png"> […] </video>