的NLS文件夹,通常是用来存放你的翻译字符串,通常是一个子目录旁边的小部件使用。
即。如果你的widget被存储在myWidget.js一个名为应用文件夹中,然后myWidget.js你的翻译字符串存储在具有相同名称的文件(myWidget.js)目录应用/ nls。
这只是惯例,但可能是值得跟随,因为它使你的目录结构的逻辑。
这里是myWidget.js的例子部件:
define([
"dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
"dojo/i18n!./nls/myWidget"
], function(
declare, _widget, _templated, strings, domAttr
){
"use strict";
var construct = declare([_widget, _templated], {
"i18n": strings,
"templateString": "<div>${i18n.hello}</div>"
});
return construct;
});
这是创建了一个非常简单的小部件<DIV>(见templateString属性)在屏幕上。该<DIV>应包含翻译文件加载并分配给你好属性中的文本。
小部件将需要nls目录创建在与相同的目录myWidget.js。在NLS目录中创建一个名为myWidget.js(即同名的母公司)其他JavaScript文件。该文件是你的根翻译文件,看起来像这样:
define({
root: ({
"hello": "Hello"
})
});
在这里您已经分配的字符串,“你好”向物业你好。这不是非常有用,因为没有提供翻译。如果你想有一个挪威的翻译,那么你将修改它是这样的:你说
define({
root: ({
"hello": "Hello"
}) ,
"no": true
});
这里说的还有根翻译字符串你也有一个挪威的翻译。然后您需要创建您的挪威语翻译文件并将其放置在nls的子目录否。所以,你创建一个名为myWidget.js另一个文件,并将其放置在NLS/NO:
define({
"hello": "Hei"
});
的翻译文件的格式是根文件略有不同。使用默认字符串,除非在当前浏览器语言中给定字符串的翻译可用(即,您不需要翻译每个字符串,只需要翻译那些字符串即可)。
加载翻译串插件之外:
上述实施例表明如何加载翻译文本以下的正常约定的窗口小部件。您可以在任何小部件或任何require语句中加载您想要的任何字符串集。 dojo/i18n类可以加载您指定的任何一组字符串。
eg:
require([
"dojo/i18n!<PATH TO TRANSLATION ROOT FILE YOU WANT TO LOAD>"
], function(string) {
// translation-string are stored in the 'strings' variable for the
// current browser language
});
感谢您的回复。我有我的main.js包含所需的项目。然后,在js/app/nls中,我有sample.js,它保存了根指定的定义。在这里,我没有如此真实。然后在js/app/nls/no中,我使用挪威语中的规范定义了sample.js。我已经指定我的区域设置为否,但没有任何反应。我试图修改的头文件保留了它在HTML中指定的默认值,并且不会更改为我在任何sample.js文件中的内容。我很茫然。你有一个样本项目或知道任何我可以看到一个实例吗? Dojo文档没有帮助。 – Creights
我已经快速地将上述项目发布到Bitbucket(https://bitbucket.org/ssimpo/stackoverflow-13702818/src)。我已经使用Firefox 17.0.1在我的机器上测试过了。注意:我正在使用Dojo 1.8.1,不确定你使用的是哪个版本,但是认为代码应该可以在旧版本上工作(除了在data-dojo类型中将斜线改为点)。如果将浏览器语言设置为英语,则应显示Hello,如果设置为挪威语,则应显示Hei。您可以通过将Dojo SDK降级并获得更多提示,并通过您的评论来了解核心dijits(https://dojotoolkit.org/download/) –
中的i18n如何判断,我认为您需要require/define行为“ dojo/i18n!./ nls/sample“(因为你称之为sample.js),假设代码正在运行,就像dojo可以正确映射relative-url一样。尝试一个完整的路径到你的根文件并从那里向后工作(例如“dojo/i18n!http://www.myserver.com/js/app/nls/sample.js”) –