0

我们有一个 15 年前构建的遗留应用程序系统,我们仍在使用它。我们的系统只支持英文。但是,现在我们正在开发一个新项目,该项目应该使用现有系统的某些部分,但还需要具有显示其他语言的功能。

对于这个项目 web 项目,我们使用 Spring MVC、Java 7 和 MySql。我们从未使用过它,但听说过资源包。我们是否应该定义要在属性文件中显示的每件事(每种语言 1 个文件)并在运行时根据语言使用此属性文件。我们有很多枚举需要在用户界面上显示。

您建议我们使用什么来支持英语以外的语言?它可以是资源包或任何其他方法。

我感谢您的帮助。

更新我们现在只支持 2 种语言,包括英语。

4

1 回答 1

1

现有系统,满足资源束。资源包,满足现有系统...

除了所有的笑话,解决方案将取决于您的应用程序。它是基于 Web 的 JSP 应用程序、Swing 客户端还是其他什么?

对于简单的非 Web 应用程序,这里是一个使用 Spring 的ResourceBundleMessageSource的简单示例。这是一个相当老的例子,但基本思想是你设置一些MessageSource,然后使用 MessageSource 来获取消息。

如果这是一个使用 JSP 的 Web 应用程序,那么您将更改所有 JSP 以使用 Spring JSTL 标记 spring:message(或非弹簧 fmt:message,但我认为这会限制您的选择)在任何需要使用的地方国际化字符串。同样,您需要一些 MessageSource 设置,Spring 会自动神奇地找到您的 MessageSource 并使用它。它仍然遵循相同的模式:定义 MessageSource,向 MessageSource 请求消息……它只是使用 JSTL 标记来完成繁重的工作。

有几个 MessageSource 选项可用。最简单的方法是像上面的示例一样使用 .properties 文件。我发现这很难维护,所以在我们的应用程序中,我们用我们自己的实现替换了 MessageSource,我们称之为 JdbcMessageSource,它扩展了AbstractMessageSource。基本上,它使用一个表来读取消息并提供这些消息的缓存。

于 2013-04-23T12:12:19.107 回答