我正在尝试向应用程序添加多语言支持。是否可以在运行时添加语言,通过在运行时创建新的属性文件,提取所有英文文本并调用谷歌翻译 api 创建等效值并使用 native2ascii 转换器更改值并将其放入属性文件中?
有没有更好的方法可以在运行时添加语言?
谢谢
您可以使用自定义ResourceBundle
实现来做到这一点,其中您反过来提供自定义ResourceBundle.Control
,您可以在其中管理加载并自己提供值。您甚至可以从数据库中提供它们。
ResourceBundle
然后,要使用它,只需在<resource-bundle><base-name>
or中指定自定义的 FQN <f:loadBundle baseName>
。
java 的 i18n 支持存在一些问题。首先,ResourceBundle.getBundle() 只能在两个地方寻找语言支持:
在任何一种情况下,如果您想动态地提供不同的语言(根据要求),您很可能要么必须:
相比之下,spring 的 MessageSource 框架可扩展性更高,因为 MessageSource 是一个接口,您可以提供自己的实现并将它们注册到 spring 上下文中,或者将它们嵌套在其他消息源中等等。