5

Durandal と Breeze を使用して ASP.NET MVC ソリューションを開発しています。フロントエンドをフランス語とオランダ語に翻訳する必要があります。デュランダル・ノックアウトの進め方は?

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

ご協力いただきありがとうございます。

4

1 に答える 1

7

require.js 用の i18n.js プラグインを試すという Rob の回答を拡張するために、私が従った手順を次に示します (私は Visual Studio で Durandal スターター テンプレートを使用しています)。

  1. i18n.js プラグインをダウンロードし、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、以下でちょっとしたことです ( を le :D に変更しました)。

    define({
        "displayName": "Welcome to le Durandal Starter Project!"
    });
    
  4. require.js は最初にロケールで構成する必要があります (動的に行うことはできません)。そのため、main.js ファイルで、次のgetLocale()関数を宣言します。これを使用して、require.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. 次に、welcome.js モジュールでバンドルをロードし、それを displayName プロパティに使用します。

    define(function(require) {
        var bundle = require('i18n!nls/welcomeBundle');
        return {
            displayName: bundle.displayName,
            ...
        }
    });
    
  6. 次に、ロケールをフランス語に設定し、JavaScript を介してページをリロードします。

     localStorage.setItem('locale', 'fr-fr');
     location.reload();
    

それが役立つことを願っています:)

編集: 2013-04-04: shell.js モジュールではなく main.js ファイルでロケールを初期化するように上記を更新しました。何らかの理由で、バンドルをシェルにロードするときにロケールが正しく使用されていなかったからです。モジュール。とにかく、できるだけ早く構成する必要があると考えてください。

于 2013-03-28T13:04:24.693 に答える