Java JSF应用中的多语言支持

Java JSF应用中的多语言支持,java,jsf,Java,Jsf,我正在尝试向应用程序添加多语言支持。是否可以在运行时添加语言,方法是:在运行时创建新的属性文件,提取所有英文文本,调用google translator api创建等效值,并使用native2ascii转换器更改值并将其放入属性文件中 有没有更好的方法可以在运行时添加语言 谢谢java的i18n支持存在一些问题。首先,ResourceBundle.getBundle()只能查看两个地方的语言支持: 类路径中的属性文件 类路径上的类 在任何一种情况下,如果您想动态地提供不同的语言(根据请求),您很

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

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


谢谢

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

  • 类路径中的属性文件
  • 类路径上的类
  • 在任何一种情况下,如果您想动态地提供不同的语言(根据请求),您很可能必须:

  • 创建自定义类加载器,以便loadClass和getResource可以动态创建这些类
  • 使用aspectJ拦截getBundle()方法调用,并在其上放置一些before建议,以执行您想要的操作

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

    您可以通过自定义实现来实现这一点,在自定义实现中,您可以提供一个自定义,在自定义实现中,您可以自己管理加载并提供值。您甚至可以从数据库中提供它们

    然后,要使用它,只需在
    中指定自定义
    资源束的FQN即可

    另见: