0

$2.105,10€ - +異なるセパレータ後のユーロ記号 - I18N angular-locale_de-de.jsを含むことによって達成することができますバリアント。複数マイ角度アプリは、例えば異なる形式で通貨を表示する必要I18N(ユーロ、DE)を用いAngularJS通貨フォーマット、

問題は、JSONのロケール値に基づいた形式を表示する必要があります。これは、アプリケーションが初期化されると発生します。そのため、JSONが何を言っていても、通貨を - $12,000 + i18n docsと表示するには、ロケールを1つしか使用できないとします。

インデックスファイルでangular-locale- + $localevar +.jsを使用するのが普通ですが、私のアプリはajaxレスポンスまでロケールを知らず、gruntを使ってアプリをビルドしています。どのようにこの問題に取り組んでいますか?

私が使用できる代替ライブラリはありますか?さまざまなフォーマットを処理するのが困難な角度に本当に不満を抱いていました。

あなたはわずか数のロケールを処理し、オーバーヘッドを気にしない場合はここでは単に必要なすべてのロケールファイルが含まれており、あなたが実行してAJAXの応答を受信したら、言語をリロードするプラグインangular-dynamic-localeを使用し、フィドルhttp://jsfiddle.net/awsd2s5r/

答えて

1

です何かのように:

tmhDynamicLocale.set(ajax_reply.locale) 

あなたが本当にパフォーマンスを気にしない場合は、さらに、この1のようなフィルタを使用して、その場で必要なロケールを読み込むことができます:

(function() { 
    'use strict'; 

    angular.module('app.filter').filter('loadScript', [ '$q', function($q) { 
     var loaded = []; 
     return function get(link) { 
      if (loaded.indexOf(link) !== -1) 
       return {}; 
      loaded.push(link); 

      var deferred = $q.defer(); 

      var s = document.createElement('script'); 
      s.type = 'text/javascript'; 
      s.src = link; 
      s.async = true; 
      s.onreadystatechange = s.onload = function() { 
       var state = s.readyState; 
       if (!state) 
        deferred.resolve(); 
       else 
        deferred.reject(); 
      }; 

      document.body.appendChild(s); 

      return deferred.promise; 
     }; 
    }]); 

})(); 
+0

絶対伝説、ありがとう、そのプラグインを私に指摘! :D – SinSync

+0

すべてのロケールを1つのファイルにまとめる唯一の問題は、最後のロケールだけがロードされ、そのファイルから動的に変更できないことです。新しいファイルを読み込むことができます。とにかく1つのファイルにそれらをロードさせるには? – SinSync

+0

すべてのロケールを1つのファイルに入れないでください。必要なすべてのロケールをロードしてください:http://lgalfaso.github.io/angular-dynamic-locale/app.jsの例を参照してください。 –

関連する問題