我刚刚开始学习道场用于个人用途和体验。到目前为止,我一直在做各种dojo的教程(在他们的网站和网络上),我一直在“努力”实现更复杂的应用程序(或良好实践)的具体基础设施。我找到了一个有趣的项目(https://github.com/csnover/dojo-boilerplate)和文章(http://www.sitepen.com/blog/2011/05/04/what-is-the-best-way-to-start-a-dojo-project/)。有了这个,我认为我的第一个问题已经解决了。如果我错了,请纠正我。
我觉得i18n上的教程缺少具体的实现。例如,我想在样板项目的对话框中添加i18n。
define([ 'dojo/_base/declare', 'dijit/Dialog' ], function (declare, Dialog) {
return declare(Dialog, {
title: 'Hello World',
content: 'Loaded successfully!'
});
});
在这里,我的项目层次结构是:
如您所见,我为我的应用程序创建了自己的nls文件夹,并为不同的(lang-locale)我的“字符串”存储。现在,如何在上面的对话框代码中为标题或内容指定区域设置内容。我最近在ruby on rails上做了i18n(使用MVC的概念)并且根据我的观点,我必须为这个特定视图创建一个用于本地化的文件(.yml)。我知道RoR和Dojo真的不是同一个东西,但做了一个小部件(可以与我的视图进行比较),所以每个小部件都需要有自己的本地化...我已经来过两个教程,first和second。也许,我读错了。
我现在有类似的东西,但它不起作用..我错过了什么?
dojo.requireLocalization("app", "dialog");
define([ 'dojo/_base/declare', 'dijit/i18n' 'dijit/Dialog' ], function (declare, Dialog) {
i18n: dojo.i18n.getLocalization("app", "dialog"),
return declare(Dialog, {
title: i18n.title,
content: i18n.content
});
});
谢谢。
修改
define([ 'dojo/_base/declare', 'dojo/i18n!app/nls/labels', 'dijit/Dialog' ], function (declare, labels, Dialog) {
return declare(Dialog, {
title: labels.title,
content: labels.content
});
});
我现在没有错误,但我的labels.title是空的??
编辑(1):我忘了在默认的nls文件夹中添加root。
答案 0 :(得分:4)
以下是我如何使用本地化构建一些对话框的示例。
目录结构
myApp\
dialog\
myDialog.js
nls\
dialog.js
fr-ca\
dialog.js
myDialog.js
define("myApp/dialog/myDialog", [
"dojo", "dijit/Dialog", "dojo/i18n",
"dojo/i18n!./nls/dialog" // this is a relative path to the
// dialog.js from myDialog.js
], function(dojo, Dialog) {
var i18n = dojo.i18n.getLocalization(
"myApp.dialog", // this is the directory path to the nls folder
"dialog" // this is the file
);
return declare(Dialog, {
title: i18n.title,
content: i18n.content
});
});