2017-02-21 5 views
3

В моем приложении я использую https://github.com/angular-translate/angular-translate для локализации. Но я cant't понять, как перевести значения Dict в мой контроллер:angular-translate translate dict in controller

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

Тогда я показываю его в шаблоне, как:

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

Если я использую: $translate.instant('UART 1') тогда, когда я изменить язык, мой значение не изменено.

Если я использую $translate('UART 1'), тогда он возвращает обещание.

Пример:

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

+0

Вы определили некоторые ключи с '$ translateProvider' в своем' app.config() '? Проверьте [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 они используют его. Это не чистое решение для контроллера, но, по крайней мере, оно работает хорошо. Я надеюсь, что кто-то опубликует лучший способ сделать это ... Удачи