JSF应用程序中的多语言支持

时间:2012-07-12 20:26:58

标签: java jsf

我正在尝试为应用程序添加多种语言支持。是否可以在运行时添加语言,在运行时创建新的属性文件,拉动所有英文文本并调用google translator api创建等效值并使用native2ascii转换器更改值并将其放在属性文件中?

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

由于

2 个答案:

答案 0 :(得分:1)

您可以使用自定义ResourceBundle实施来执行此操作,其中您又提供自定义ResourceBundle.Control,其中您自己管理加载并提供值。您甚至可以从数据库中提供它们。

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

另见:

答案 1 :(得分:0)

java的i18n支持存在一些问题。首先,ResourceBundle.getBundle()只能查看两个语言支持位置:

  1. 类路径中的属性文件
  2. 类路径上的类
  3. 在任何一种情况下,如果你想动态地动态提供不同的语言(因为它们是被要求的),你很可能要么:

    1. 创建一个自定义类加载器,以便loadClass和getResource可以动态创建它们。
    2. 使用aspectJ来拦截getBundle()方法调用,并在它之前加上一些建议来做你想做的事。
    3. 相比之下,Spring的MessageSource框架更具可扩展性,因为MessageSource是一个接口,您可以提供自己的实现并使用spring上下文注册它们,或者将它们嵌套在其他消息源中等等。