数据库支持的i18n(适用于Java Web应用)
我想使用数据库存储i18n键/值对,以便我们可以在运行时修改/重新加载i18n数据。有人做过吗?还是有人对如何实现这一点有想法?我已经阅读了几个相关的主题,但是还没有看到可行的解决方案。
我专门指的是可以与jstl标记一起使用的东西,例如
<fmt:setlocale><fmt:bundle>
<fmt:setBundle>
<fmt:message>
我认为这将涉及扩展ResourceBundle,但是当我尝试这样做时,我遇到了与jstl标记获取资源包的方式有关的问题。
回答:
您是否只是问如何在数据库中存储UTF-8 /
16字符?在mysql中,只需确保您使用UTF8支持进行构建并将其设置为默认值,或者在列或表级别进行指定即可。我以前在oracle和mysql中完成过此操作。创建一个表并将其剪切并粘贴一些i18n数据,然后看看会发生什么……您可能已经设置好了。
还是我完全想念你的意思?
编辑:
更明确地说…我通常实现一个三列表…语言,键,值…其中“值”包含潜在的外语单词或短语…“语言”包含一些语言键和“键”是英文密钥(即login.error.password.dup)…语言和密钥已编入索引…
然后,我在这样的结构上构建了接口,该接口显示了每个键及其所有的转换(值)…它可以很漂亮,并且包括审计跟踪和“脏”标记以及启用翻译器和数据所需的所有其他内容入门人员可以利用它。
编辑2:
现在,您已经添加了有关JSTL标记的信息,我了解了更多…我自己从来没有做过..但是我在服务器端找到了这个旧信息…
HttpSession session = .. [get hold of the session] ResourceBundle bundle = new PropertyResourceBundle(toInputStream(myOwnProperties)) [toInputStream just stores the properties into an inputstream]
Locale locale = .. [get hold of the locale]
javax.servlet.jsp.jstl.core.Config.set(session, Config.FMT_LOCALIZATION_CONTEXT, new LocalizationContext(bundle ,locale));
以上是 数据库支持的i18n(适用于Java Web应用) 的全部内容, 来源链接: utcz.com/qa/405299.html