使用NLS /本地化的Dojo定制构建
在Dojo中实现跨域定制构建时遇到问题。 的情况如下:我有一个相当大的应用,具有良好的数字定位束,所以basicly目录结构就像是
核心\(我的模块)
NLS \
FR \
EN \
....
构建我的模块时,结果是一个很大的core.js/core.xd.js文件,它不包含本地化。在本地化的nls目录(en/fr/etc)中,我发现构建每个包建立/缩小后,每个语言core_fr.js/core_en.fs只包含Dojo/Dijit相关字符串。使用NLS /本地化的Dojo定制构建
所以我的构建脚本是
layers: [
{
resourceName: "core",
name: "../core/trusted.js",
dependencies: [
"dojo.i18n",
//data
"dojox.data.JsonRestStore",
"dojox.data.XmlStore",
"dojox.rpc.Service",
"dojox.form.FileInput",
...
"core.controller.Fusebox"
],
prefixes: [
["dijit","../dijit"],
["dojox","../dojox"],
["core", "../core"]
]
在core.controller.Fusebox类我尝试加载1个NLS
dojo["requireLocalization"]("core", "FuseboxContent");
这里会死,但与
availableFlatLocales is undefined
[Break on this error] var locales = availableFlatLocales.split(",");\r\n
我在html文件中的配置是:
// version build
var djConfig = {
baseUrl: 'https://..../',
modulePaths: { 'core': 'core'},
useXDomain: true,
xdWaitSeconds: 10,
parseOnLoad: true,
afterOnLoad: true,
// debugAtAllCosts: true,
isDebug: true,
locale: "fr"
};
然后
<script type="text/javascript" src="http://xd.woopic.com/dojoroot/1.3.2-xd/dojo/dojo.xd.js.uncompressed.js"></script>
<script type="text/javascript" src="https://..../core/trusted.js.uncompressed.js"></script>
我用了未压缩的调试,当然。 问题是,在运行时,Dojo尝试加载我的包并找不到它们,我想将它们嵌入到我的图层文件中,因此不需要额外的加载。 这可以实现吗?虽然我们在这里,是否有任何工作网站/跨域本地化的例子? 更新:我继续我的分析,问题似乎在于我动态加载nls,所以构建分析器无法找到requireLocalization()调用。因此项目的nls文件只包含dojo/dijit相关的内容。但是,我在一个虚拟文件中添加了一些bundle加载,并且构建器仍然忽略了core/nls的内容。
感谢您的任何信息,我几乎在我的搜索结束时,网上没有太多关于这个问题。
几天前我有类似的问题。首先,您可以通过将可用语言环境设置为requireLocalization调用的第四个参数来解决错误。
例如
dojo.requireLocalization("core", "FuseboxContent", null, "en,fr");
虽然你不应该那样做。
你有没有尝试包括本地化如下?
dojo.requireLocalization("core", "FuseboxContent"); // and not dojo["require..."]
嗯,我这样做是因为我无法加载nls文件,所以通过这种方式我不会进入builder的方式。我锁定了这个问题,因为构建器没有合并[modulename] _fr.xd.js文件中的bundle,他在那里合并了dojo/dijit localisations。因此,在xd阶段,当他在图层的末尾执行preloadLocalisation时,我的本地化不会被加载。 我创建了一个虚拟文件,它需要所有的本地化来查看是否以这种方式“看到”它们并构建它们,但无济于事。 – aciobanu 2009-11-02 09:35:32
我不是xd问题的专家,但我很好奇看到modulePaths中的nls条目。他们不应该是必要的。你在使用它们吗?如果你消除它们,它会产生什么影响? – peller 2009-10-29 18:32:19
我删除了它们,没有更改,本地化仍未加载。我认为他们在那里因为一些遗留原因......但是你说的是对的。我相应地更新了这篇文章。 – aciobanu 2009-10-30 08:38:38