【问题标题】:Translating views with HotTowel (Durandal framework) + VS2012使用 HotTowel(Durandal 框架)+ VS2012 翻译视图
【发布时间】:2013-03-12 05:26:37
【问题描述】:

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

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

感谢您的帮助。

【问题讨论】:

标签: asp.net asp.net-mvc breeze durandal hottowel


【解决方案1】:

为了扩展 Rob 尝试为 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 中创建,我在下面做了一些(更改为 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-05-30
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2013-05-04
    • 2013-03-18
    相关资源
    最近更新 更多