2014-05-20 24 views
9

Próbuję przetłumaczyć wybrane menu rozwijane i nie podoba mi się sposób, w jaki to robię, ponieważ jest to uciążliwe i pomija cały framework z angularnym tłumaczeniem.opcje reklam w tekście kątowym

Dane locale wyglądają jak {"język": {"etykieta": "tekst", "wybierz": {"k1": "zmienna1", "k2": "zmienna2"}}} i jeśli plonuję element "wybierz" w zakresie kontrolera, mogę napisać coś w stylu "k jako v dla (k, v) w scopedvar" w opcjach opcji selekcji.

Zasadniczo chciałbym przetłumaczyć, aby rozwiązać problem z językiem, a następnie zejść z drogi i zwrócić mapę lokalizacji dla moich opcji. Jeśli ma to sens, coś w stylu: "k jako v dla (k, v) w" wybierz "| tłumaczyć", ale oczywiście tak nie jest.

Czy ktoś wcześniej napotkał (i rozwiązał) ten problem?

TIA, Edoardo

Odpowiedz

23

nie całkowicie pozbyć się tego, co starasz się osiągnąć, ale będę umieścić jakiś kod, który działa dobrze dla przeładunku tłumaczenia opcje z | przetłumacz filtr.

Zakładając, że ten JSON jako klucz/wartość dla swoich tłumaczeniach:

var english = {"lang": { 
       "label": "text", 
       "select": { 
        "k1": "var1", 
        "k2": "var2" 
       }} 
       }; 

i kontroler tworzy listę opcji takiego:

$scope.optionsList = [ 
    {val: 'var1', translationKey: 'lang.select.k1'}, 
    {val: 'var2', translationKey: 'lang.select.k2'} 
]; 

powinno być dobrze iść włożeniem przetłumacz filtr po etykiecie opcji w wyrażeniu ng-options:

<select ng-model="selectedOpt" 
     ng-options="opt.val as opt.translationKey | translate for opt in optionsList"> 
</select> 

Mam nadzieję, że to pomoże!