2013-03-22 11 views
5

でビューを翻訳するDurandalとBreezeを使用してASP.NET MVCソリューションを開発します。私はフロントエンドをフランス語とオランダ語に翻訳する必要があります。 Durandal/knockoutを進めるには?HotTowel(Durandalフレームワーク)+ VS2012

従来のASP.NET MVCソリューションでは、ビューをサーバー側にレンダリングする機会があります(面倒なので)。

ありがとうございました。私はあなたが見てみましょうすることをお勧めします

答えて

7

require.js用版のi18n.jsプラグインをしようとするロブの答えに展開するには、ここで私は、その後の手順は、(私がオフに働いているのですVisual StudioのDurandalスターターテンプレート)。

  1. i18n.js pluginをダウンロードしてAppフォルダに入れます。
  2. App/nlsフォルダを作成します。ここにrequire.jsリソースバンドルを配置します。 App/nls/welcomeBundle.js

    define({ 
        "root": { 
         "displayName": "Welcome to the Durandal Starter Project!" 
        }, 
        "fr-fr": true 
    }); 
    
  3. あなたは、私が利用可能フランス語版があることをrequire.jsを伝えるために行を追加して表示されます。これは私がちょっと下にやったApp/nls/fr-fr/welcomeBundle.js、中に作成されます(ルに変更:D)

    define({ 
        "displayName": "Welcome to le Durandal Starter Project!" 
    }); 
    
  4. require.jsロケールで最初に(動的に行うことができない)に設定する必要があります。私はその後、バンドルをロードし、それを使用welcome.jsモジュールで

    function getLocale() { 
        var locale = 'en-us'; 
        if (localStorage) { 
         var storedLocale = localStorage.getItem('locale'); 
         locale = storedLocale || locale; 
        } 
        return locale; 
    } 
    
    requirejs.config({ 
        paths: { 
         'text': 'durandal/amd/text' 
        }, 
        locale: getLocale() 
    }); 
    
  5. :だからmain.jsファイルで、私はrequire.jsのロケールを設定するために使用する以下のgetLocale()機能を宣言しますDisplayNameプロパティ:

    define(function(require) { 
        var bundle = require('i18n!nls/welcomeBundle'); 
        return { 
         displayName: bundle.displayName, 
         ... 
        } 
    }); 
    
  6. は、私はその後、フランスにロケールを設定し、JavaScriptでページをリロード:

    localStorage.setItem('locale', 'fr-fr'); 
    location.reload(); 
    
を助け:)

希望

編集:2013年4月4日:私はいくつかの理由のためとして、main.jsファイル内のロケールを初期化するために上記を更新していないshell.jsモジュールでバンドルをシェルモジュールにロードするときに、ロケールが正しく使用されていませんでした。とにかくそれができるだけ早く設定されるべきであることを示す。

関連する問題