我正在尝试为应用程序添加多种语言支持。是否可以在运行时添加语言,在运行时创建新的属性文件,拉动所有英文文本并调用google translator api创建等效值并使用native2ascii转换器更改值并将其放在属性文件中?
可以在运行时添加语言的更好方法吗?
由于
答案 0 :(得分:1)
您可以使用自定义ResourceBundle
实施来执行此操作,其中您又提供自定义ResourceBundle.Control
,其中您自己管理加载并提供值。您甚至可以从数据库中提供它们。
然后,要使用它,只需在ResourceBundle
或<resource-bundle><base-name>
中指定自定义<f:loadBundle baseName>
的FQN。
答案 1 :(得分:0)
java的i18n支持存在一些问题。首先,ResourceBundle.getBundle()只能查看两个语言支持位置:
在任何一种情况下,如果你想动态地动态提供不同的语言(因为它们是被要求的),你很可能要么:
相比之下,Spring的MessageSource框架更具可扩展性,因为MessageSource是一个接口,您可以提供自己的实现并使用spring上下文注册它们,或者将它们嵌套在其他消息源中等等。