我用 Durandal 和 Breeze 开发了一个 ASP.NET MVC 解决方案。我需要将前端翻译成法语和荷兰语。如何进行 Durandal/淘汰赛?
在经典的 ASP.NET MVC 解决方案中,我们有机会将视图呈现在服务器端(感谢 razor)。
谢谢你的帮助。
我用 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
});
你会看到我添加了一行来告诉 require.js 有一个法语版本可用。这将在 中创建App/nls/fr-fr/welcomeBundle.js
,我在下面做了一些(更改为 le :D)
define({
"displayName": "Welcome to le Durandal Starter Project!"
});
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()
});
然后在welcome.js 模块中加载包并将其用于displayName 属性:
define(function(require) {
var bundle = require('i18n!nls/welcomeBundle');
return {
displayName: bundle.displayName,
...
}
});
然后我将语言环境设置为法语并通过 JavaScript 重新加载页面:
localStorage.setItem('locale', 'fr-fr');
location.reload();
希望有帮助:)
编辑:2013-04-04:我更新了上面的内容以在 main.js 文件中而不是在 shell.js 模块中初始化语言环境,因为由于某种原因,在 shell 中加载包时没有正确使用语言环境模块。认为无论如何都应该尽快配置它。