internationalization - 如何使用 r.js 和 hbs.js 使用多个语言环境

标签 internationalization requirejs locale handlebars.js require

我有一个项目,其中使用了 require.js 和 hbs.js(require-handlebars-plugin)等。在我的开发环境中一切正常,但在我使用 r.js(requirejs 优化)优化项目后,我遇到了问题。

也就是说;因为 hbs.js 只预编译一个语言环境,所以整个 i18n 逻辑都被破坏了,不再可能更改语言环境。我怀疑我必须以某种方式为每个语言环境做优化过程,但我看不出如何做。如果有人可以分享他们对这个问题的解决方案,那就太好了

谢谢!

最佳答案

好的,我是这样解决的:

首先,我为每种语言创建了一个 require.js Bootstrap 文件。然后我修改了我的 maven pom.xml 以执行两次 javascript 优化,每个区域设置一次。我使用了带有两个执行元素的 requirejs-maven-plugin,一个用于每个语言环境。每个元素都有一个指向相应 r.js 构建文件的 configFile 值。 (每种语言一个)。然后,语言环境的构建文件指向该语言的 Bootstrap 文件。

运行优化后,您现在将拥有每个语言环境的丑化 js 文件。但很可能这些都没有包含在最终的 war 文件中。您必须将 r.js build_out 文件夹中的丑化文件复制到 war 中。我通过向 maven-war-plugin 添加配置元素来做到这一点; warSourceDirectory 和 webResources 复制我的两个语言环境。我还使用 webSourceInclude 和 webSourceExlude 删除了我不需要的文件。

最后一步是在加载站点时加载正确的 require bootstrap 文件。要做到这一点,只需在您的 index.html 中创建一个 javascript 片段,它首先确定您的语言环境(例如来自 cookie),然后动态加载引导文件

document.write("<script data-main='bootstrap_" + getLocaleString() + "' src='/js/lib/require.js'><\/script>");

感谢https://github.com/SlexAxton/require-handlebars-plugin的作者|帮助我解决这个问题。

关于internationalization - 如何使用 r.js 和 hbs.js 使用多个语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16251771/

相关文章:

spring - Spring MessageSource 属性文件中的内部引用

javascript - 使用 requireJS 异步插件和 requireJS jsonp 格式有区别吗

javascript - 使用 requireJS 提供的 javascript 语言文件时,如何调整外文字符?

java - 检查提供的语言环境是否存在

javascript - 多种 AngularJS 货币格式,使用 i18n(欧元、德国)

node.js - 如何在不重新启动 Node 服务器的情况下反射(reflect)语言环境更改 - i18n?

java - 将 Java .properties 文件添加到 Pootle

javascript - require.js - 未定义的模块作为参数传递以定义回调

在法国机器上执行时出现 java.lang.NumberFormatException

android - 哪些是新的 Android N 语言?