2017-05-18 8 views
0

データモデルには、翻訳のための異なるキーにマップする状態の名前がたくさんあります。翻訳のためのコンボボックスオプションのマップ

  • オープン - > state_open
  • 新 - 承認のための> state_new
  • 待ち - 現在、私のコンボボックスは、このように移入され

> state_wait_for_approval:

<select class="form-control select" id="client" 
    ng-model="statusType" 
    ng-change="setStatusType(statusType)" 
    ng-options="statusType.name for statusType in statusTypes track by statusType.id"> 
    <option value="">-</option> 
</select> 

私が持っているのこのようにして翻訳を実装できることを読んでください:

ng-options="statusType.name | translate for statusType in statusTypes track by statusType.id"> 

ただし、これは翻訳キーが状態名と等しいとみなします。むしろ私の州の名前を上記の翻訳キーにマップしたいと思っています。

どのようにこの機能をAngularで実装できますか?おそらく何らかのカスタムディレクティブ(?)が必要でしょう。私はAngularの新作ですので、すべてのヒントは大歓迎です。

私のようなものを考えています:https://angular-translate.github.io/docs/#/guide、このリンクから

mapStateToTranslationKey(statusType.name) -> return "status_" + toLowerCase(replaceSpacesWithUnderscores(statusType.name)) 

答えて

0

私は自分自身で問題を解決することができました。基本的に、私は自分のコントローラにこの機能を追加する必要がありました:

$scope.mapStateToTranslationKey = function(stateName) { 
    return "state_" + stateName.toLowerCase().split(' ').join('_'); 
}; 

この関数は、小文字に状態名を変換アンダースコアすべてのスペースを交換し、最終的には、文字列state_を付加します。最終的に鍵を返し、角翻訳で翻訳に使用できます。

ビューでは、まず関数を呼び出してからパイプシンボルの後にtranslateキーワードを使用する必要があります。このようにして、実際の状態名の代わりに翻訳キーが使用されます。

<select class="form-control select" id="client" 
    ng-model="statusType" 
    ng-change="setStatusType(statusType)" 
    ng-options="mapStateToTranslationKey(statusType.name) | translate for statusType in statusTypes track by statusType.id"> 
    <option value="">-</option> 
</select> 
0

、私の仮定は角度が何を翻訳していないということです、あなたは角ねえ、とき」という告げるコードを記述する必要がありますあなたはこの言葉を見て、それをこの言葉に翻訳してください。

存在しない機能が必要な場合があります。私は変換機能では、JavaScriptとAngular関数 ".translations()"を使用して、名前とキーの両方を明示的に変換する必要があると書いておく必要があると思います。そして、期待している単一の値を返します。

+0

私が使用している角度回転角度**があります:https://angular-translate.github.io – user1438038

関連する問題