5

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

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

谢谢你的帮助。

4

1 回答 1

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
    });
    
  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:我更新了上面的内容以在 main.js 文件中而不是在 shell.js 模块中初始化语言环境,因为由于某种原因,在 shell 中加载包时没有正确使用语言环境模块。认为无论如何都应该尽快配置它。

于 2013-03-28T13:04:24.693 回答