2017-02-21 11 views
3

私のアプリではローカライゼーションにhttps://github.com/angular-translate/angular-translateを使用しています。しかし、私は私のコントローラでdictの値を変換する方法を理解cant't:私が使用している場合angle-translate translate dict in controller

<md-select placeholder="Receiver Port" ng-model="RFDump.set.rx_usart"> 
    <md-option ng-repeat="option in rx_usart_names" ng-value="option.val"> 
    {{ option.name }} 
    </md-option> 
</md-select> 

$scope.rx_usart_names = [ 
    {'val': 0, 'name': 'UART 1'}, 
    {'val': 2, 'name': 'UART 3'}, 
    {'val': 3, 'name': 'UART 4'}, 
    {'val': 5, 'name': 'UART 6'} 
]; 

は、その後、私は次のようにテンプレートでそれを示して $translate.instant('UART 1')その後、私は、言語を変更すると、私の値は変更されません。

$translate('UART 1')を使用すると約束を返します。

例:

http://jsfiddle.net/ayqoeuyy/6/

+0

あなたの 'app.config()'に '$ translateProvider'でいくつかのキーを定義しましたか? [i18n docs](https://angular-translate.github.io/)を確認してください –

+0

ここでは[JsFiddle](http://jsfiddle.net/ayqoeuyy/4/)の例です。 –

+0

私はhttp://jsfiddle.net/ayqoeuyy/5/ – Arti

答えて

1

あなたは...変換フィルタを使用することができます

translateフィルタソリューション:JsFiddle

HTML:

<md-select> 
    <md-option ng-repeat="option in vm.rx_usart_names"> 
    {{ option.name | translate }} 
    </md-option> 
</md-select> 

APP CONFIG:

app.config(function($translateProvider) { 
    $translateProvider.translations('en', { 
    UART1: 'UART1 (English)', 
    UART2: 'UART2 (English)' 
    }); 
    $translateProvider.translations('de', { 
    UART1: 'UART1 (German)', 
    UART2: 'UART2 (German)' 
    }); 
    $translateProvider.preferredLanguage('en'); 
}); 

CONTROLLER:

function MyCtrl($translate) { 

    var vm = this; 

    vm.rx_usart_names= [{ 
    'val': 0, 
    'name': 'UART1' 
    }, { 
    'val': 2, 
    'name': 'UART2' 
    }]; 

    vm.changeLanguage = function(langKey) { 
    $translate.use(langKey); 
    }; 
} 

私はそれはあなたが翻訳する多くのキーを持っている場合、フィルタを使用するための最速の方法ではないですけど、でもangular i18n docsの例では、彼らはそれを使用しています。これは純粋なコントローラソリューションではありませんが、少なくともそれはうまく機能します。誰かがそれを行う良い方法を投稿してくれることを祈っています。幸運