使用HotTowel(Durandal框架)+ VS2012翻译视图

Bro*_*ato 5 asp.net asp.net-mvc breeze durandal hottowel

我用Durandal和Breeze开发了一个ASP.NET MVC解决方案.我需要将前端翻译成法语和荷兰语.如何进行Durandal /淘汰赛?

在经典的ASP.NET MVC解决方案中,我们有机会将视图呈现在服务器端(感谢razor).

谢谢你的帮助.

jam*_*row 7

为了扩展Rob在为require.js尝试i18n.js插件的答案,这里是我遵循的步骤(我正在使用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
    });
    
    Run Code Online (Sandbox Code Playgroud)
  3. 你会看到我添加了一行来告诉require.js有一个法语版本可用.这将创建App/nls/fr-fr/welcomeBundle.js,我有点在下面做了(改为le:D)

    define({
        "displayName": "Welcome to le Durandal Starter Project!"
    });
    
    Run Code Online (Sandbox Code Playgroud)
  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()
    });
    
    Run Code Online (Sandbox Code Playgroud)
  5. 在welcome.js模块中,我然后加载bundle并将其用于displayName属性:

    define(function(require) {
        var bundle = require('i18n!nls/welcomeBundle');
        return {
            displayName: bundle.displayName,
            ...
        }
    });
    
    Run Code Online (Sandbox Code Playgroud)
  6. 然后我将语言环境设置为法语并通过JavaScript重新加载页面:

     localStorage.setItem('locale', 'fr-fr');
     location.reload();
    
    Run Code Online (Sandbox Code Playgroud)

希望有帮助:)

编辑:2013-04-04:我更新了上面的内容来初始化main.js文件中的语言环境,而不是shell.js模块中的语言环境,因为在shell中加载bundle时,语言环境没有被正确使用模块.无论如何应该尽快配置它.