3

私のアプリケーションでは、AngularJS モジュールの Pascal Precht (翻訳モジュール) を使用しています。翻訳キーの私の方法myApp.Runで取得できないので、あなたに来ます。app.jsコントローラーまたはビューで実行できます。ただし、プロジェクトの初期化時に取得することはできません。対応ではなく鍵を見せてくれます。

解決策はありますか?

これが私のコードです:

var myApp = angular.module('myApp', ['ngRoute', 'ngAnimate', 'myApp.filters', 'myApp.services', 'myApp.directives', 'pascalprecht.translate']);

// Declare routeProvider
myApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/', {templateUrl:'partials/connectView.html', controller:'ConnectController'});
    $routeProvider.when('/homeView', {templateUrl:'partials/homeView.html', controller:'HomeController'});
}]);

// Declare translateProvider
myApp.config(['$translateProvider', function($translateProvider) {        
    $translateProvider.useStaticFilesLoader({
        prefix: 'res/localization/lang-',
        suffix: '.json'
    });

    $translateProvider.preferredLanguage('fr_FR');
    //$translateProvider.preferredLanguage('en_US');
}]);

// Declare Global variables
myApp.run(['$rootScope', '$filter', function($rootScope, $filter) {
    $rootScope.list = false;
    etc....

    //I'm trying to get translate Key but it doesn't work
    console.log($filter('translate')('MY_KEY'));
}]);

私の AngularJS のバージョンは 1.2.16 (最新の安定バージョン) です。どうも

4

4 に答える 4

8

$translateにサービスを注入してみてくださいapp.run()

angular-translate バージョン 1.1.1 以下

myApp.run(['$rootScope', '$translate', '$log', function ($rootScope, $translate, $log) {
    $log.debug($translate('MY_KEY'));
}]);

Pascal Precht のangular-translateの最新バージョンにアップグレードすることもお勧めします。新しいバージョンではいくつかの変更があります。

angular-translate バージョン 2.0.0 以降

myApp.run(['$rootScope', '$translate', '$log', function ($rootScope, $translate, $log) {
    // translate via promises (recommended way)
    $translate(['MY_KEY', 'MY_OTHER_KEY'])
            .then(function (translation) {
                $log.debug(translation.MY_KEY);
            });
    // translate instantly from the internal state of loaded translation
    $log.debug($translate.instant('MY_KEY'));
}]);

この役立つ移行ガイドを参照してください。

于 2014-06-01T23:37:24.607 に答える
0

レピュテーションの問題のためコメントできないようです。あなたが経験している可能性のある何かに遭遇しました。ロケール ファイルは angular の構成部分でのみダウンロードされるため、呼び出すときに (まだ) 利用できない可能性があります。翻訳します。

すべてのロケール ファイルを前もって追加することでこれを解決し (多くはなく、サイズも小さい)、初期化時に正しいファイルを選択するだけで、問題を回避できます。

(繰り返しますが、これはおそらく回答よりもコメントのほうが多いはずですが、コメントすることはできません...)

于 2014-05-28T12:16:46.407 に答える
0

$translate サービスを run セクションに挿入してから、フィルターを使用する代わりにそれを呼び出してみませんか?!

console.log($translate('MY_KEY'));
于 2014-05-27T10:04:12.857 に答える