Localization Dojo本地化-不';不翻译和/或不';t载荷
我正在尝试使用dojo设置本地化,但无法使其工作 我的文件夹结构如下:Localization Dojo本地化-不';不翻译和/或不';t载荷,localization,dojo,Localization,Dojo,我正在尝试使用dojo设置本地化,但无法使其工作 我的文件夹结构如下: Folder: locale - about.html - Folder: nls - about.js - Folder fr - about.js define({ root: ({ //Whatever object you want }), "en": false, "en-gb": false,
Folder: locale
- about.html
- Folder: nls
- about.js
- Folder fr
- about.js
define({
root: ({
//Whatever object you want
}),
"en": false,
"en-gb": false,
"en-us": true,
"fr": false,
});
这是应该本地化的文件
<html>
<head>
<script type="text/javascript">
var dojoConfig = {
locale: 'fr'
};
</script>
<script src="//servicesbeta.esri.com/jsapi/arcgis/3.4/js/dojo/dojo/dojo.js"></script>
<script>
require([
"dojo/i18n",
"dojo/i18n!./nls/about"
],function(
i18n,
nls
){
console.log("Good Morning");
console.log(dojoConfig);
console.log(nls['hello']);
});
</script>
</head>
<body></body>
</html>
致:
我得到这个输出:
不太清楚这里发生了什么
为什么第一个例子找不到法语本地化?正在加载该文件,并正在设置本地文件
第二个示例与我看到的大多数dojo示例更为一致。这是怎么回事
任何帮助都将不胜感激。谢谢
为完整起见,nls/about.js:
define({
root: {
hello: "English Hello"
},
"fr":true
});
define({
root: {
hello: "French Hello"
}
});
和nls/fr/about.js:
define({
root: {
hello: "English Hello"
},
"fr":true
});
define({
root: {
hello: "French Hello"
}
});
根据我在本地化方面的经验,我一直在这样做 因此,您所做的基本上是正确的,但是调用
dojo/i18n./nls/about“
文件对我来说是一种陌生的选择,因此这是另一种方法
var my_localization_object=i18n.getLocalization(“locale”,“about”)
您需要将包添加到dojoconfig:
var dojoConfig = {
locale: 'fr',
packages: [
//location should be a full qualified location.
{ name: "locale", location: "/JS/locale" }
],
};
通过这种方式,您将在my\u localization\u object
变量中获得一个对象,但不使用法语区域设置,因此您可以使用该对象填充任何您想要的内容
而您about.js应该是这样的:
Folder: locale
- about.html
- Folder: nls
- about.js
- Folder fr
- about.js
define({
root: ({
//Whatever object you want
}),
"en": false,
"en-gb": false,
"en-us": true,
"fr": false,
});
从nls/fr/about.js中删除根对象。它只在根文件中需要,因为如果找不到特定于语言环境的文件,将使用这些字符串 因此,特定于区域设置的文件应如下所示:
define({
hello: "French Hello"
});
关于第二个问题:当您引用文件“about.js”时,您使用了一个有效的文件路径。当您引用“nls/about”时,您引用的是AMD模块,因此根据您的包定义使用有效的模块路径。这两种语法都可以,但如果要使用包路径,请尝试在dojoConfig中添加包定义,如下所示:
packages: [{
name: "nls",
location: "/nls"
}]
没错!删除根元素有效。还感谢您对模块路径和文件路径之间的说明。