2013-03-22 74 views
5

我使用Durandal和Breeze开发ASP.NET MVC解决方案。我需要将前端翻译成法语和荷兰语。如何继续Durandal /淘汰赛?用HotTowel(Durandal框架)翻译视图+ VS2012

在传统的ASP.NET MVC解决方案中,我们有机会将视图呈现在服务器端(感谢剃须刀)。

感谢您的帮助。

回答

7

要上的尝试i18n.js罗布的回答扩展插件的require.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需要与区域设置初始配置(不能动态完成)。所以在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年4月4日:我更新了上面初始化在main.js文件中的语言环境,而不是在shell.js模块,如因某种原因在外壳模块中加载软件包时,语言环境未被正确使用。尽管如此,应该尽快配置它。