【发布时间】:2011-12-08 16:05:24
【问题描述】:
到目前为止,我将Globalize 用于我的 JavaScript 应用程序(使用 jQuery UI 构建)的 i18n 和 l10n。这可行,但它将我的代码与另一个特定的库联系起来。现在我正在寻找一种方法来克服这个问题,因为我现在重用了一些不支持 i18n 的源,我不想改变它。我不是在谈论为 i18n 使用全局接口,我可以在其中插入任何实现。总结一下:如何在不更改其源代码的情况下向现有应用程序添加 i18n 和 l10n 支持?我不是在问这是否是一个好主意,我是在问这是否可能以及如何实现。
到目前为止,我已经提出了这些方法,但都存在缺陷:
如果我依赖使用 jQuery(在我的情况下我可以),我可以替换 text/val/append 等方法,即所有操纵 DOM 的方法。但是其中有很多,每个人的行为都有点不同。我还可以更进一步,替换 DOM 方法。
遍历 DOM 并替换文本节点和表单值。这可行,但代价高昂,而且动态变化很难检测,因为没有标准化的方法来做到这一点。
这些为 i18n 问题提供了部分解决方案,但对于 l10n,这两种方法都不起作用。
您将如何解决向现有应用添加 i18n 和 l10n 支持的问题?
【问题讨论】:
-
页面上使用的语言不仅仅针对数字(除了一些非常具体的例外),它适用于页面上的所有内容。因此,仅将数字格式转换为特定语言是没有意义的,您需要翻译整个页面。例如。如果您的页面是英文的,并且您检测到用户的浏览器设置为德语,您真的会将“价格为 €1,200.00”更改为“价格为 €1.200,00”,即更改数字格式而不翻译周围的文本吗?阅读英文页面的人会期望使用英文数字格式。
标签: javascript localization internationalization