0

我正在尝试向应用程序添加多语言支持。是否可以在运行时添加语言,通过在运行时创建新的属性文件,提取所有英文文本并调用谷歌翻译 api 创建等效值并使用 native2ascii 转换器更改值并将其放入属性文件中?

有没有更好的方法可以在运行时添加语言?

谢谢

4

2 回答 2

1

您可以使用自定义ResourceBundle实现来做到这一点,其中您反过来提供自定义ResourceBundle.Control,您可以在其中管理加载并自己提供值。您甚至可以从数据库中提供它们。

ResourceBundle然后,要使用它,只需在<resource-bundle><base-name>or中指定自定义的 FQN <f:loadBundle baseName>

也可以看看:

于 2012-07-13T02:49:34.533 回答
0

java 的 i18n 支持存在一些问题。首先,ResourceBundle.getBundle() 只能在两个地方寻找语言支持:

  1. 类路径中的属性文件
  2. 类路径上的类

在任何一种情况下,如果您想动态地提供不同的语言(根据要求),您很可能要么必须:

  1. 创建一个自定义类加载器,以便 loadClass 和 getResource 可以动态创建它们。
  2. 使用 aspectJ 拦截 getBundle() 方法调用并在其上放置一些之前的建议以执行您想要的操作。

相比之下,spring 的 MessageSource 框架可扩展性更高,因为 MessageSource 是一个接口,您可以提供自己的实现并将它们注册到 spring 上下文中,或者将它们嵌套在其他消息源中等等。

于 2012-07-12T20:46:23.280 回答