Bro*_*ato 5 asp.net asp.net-mvc breeze durandal hottowel
我用Durandal和Breeze开发了一个ASP.NET MVC解决方案.我需要将前端翻译成法语和荷兰语.如何进行Durandal /淘汰赛?
在经典的ASP.NET MVC解决方案中,我们有机会将视图呈现在服务器端(感谢razor).
谢谢你的帮助.
为了扩展Rob在为require.js尝试i18n.js插件的答案,这里是我遵循的步骤(我正在使用Visual Studio中的Durandal启动器模板).
App文件夹中.创建一个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)你会看到我添加了一行来告诉require.js有一个法语版本可用.这将创建App/nls/fr-fr/welcomeBundle.js,我有点在下面做了(改为le:D)
define({
"displayName": "Welcome to le Durandal Starter Project!"
});
Run Code Online (Sandbox Code Playgroud)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)在welcome.js模块中,我然后加载bundle并将其用于displayName属性:
define(function(require) {
var bundle = require('i18n!nls/welcomeBundle');
return {
displayName: bundle.displayName,
...
}
});
Run Code Online (Sandbox Code Playgroud)然后我将语言环境设置为法语并通过JavaScript重新加载页面:
localStorage.setItem('locale', 'fr-fr');
location.reload();
Run Code Online (Sandbox Code Playgroud)希望有帮助:)
编辑:2013-04-04:我更新了上面的内容来初始化main.js文件中的语言环境,而不是shell.js模块中的语言环境,因为在shell中加载bundle时,语言环境没有被正确使用模块.无论如何应该尽快配置它.