RESTful 服务的国际化2025 年 1 月 17 日 | 阅读 5 分钟 在本节中,我们将讨论 RESTful Web 服务的国际化。 国际化国际化是指设计 Web 应用程序或服务,使其能够自动支持不同的国家和语言,而无需更改应用程序。它也称为 I18N,因为 internationalization 这个词共有 18 个字符,从 I 开始到 N 结束。 本地化是通过添加特定区域设置的组件(如翻译文本、描述特定区域设置行为的数据等)来执行的。它支持与提供语言或文化相关功能的类和包的完全集成。 Java 为桌面和服务器应用程序的国际化提供了基础。以下是重要的国际化功能领域。
我们需要配置两件事来使服务国际化。
默认区域设置为 Locale.US。如果有人未指定区域设置,则返回默认区域设置。我们还需要自定义 ResourceBundle。它有一个要国际化的属性列表。我们将把属性存储在 ResourceBundle 中。ResourceBundleMessageSource 是 Spring MVC 中用于处理属性的概念。之后,我们将使用 MessageSource 和一个名为 Accept-Language 的请求头。 让我们配置国际化。 步骤 1:打开 RestfulWebServicesApplication.java 文件。 步骤 2:为 默认 区域设置配置一个 Bean。 注意:导入 import org.springframework.web.servlet.LocaleResolver 包,同时导入 LocaleResolver。步骤 3:现在,我们将把属性存储在一个名为 messages.properties 的特定文件中。 右键单击 src/main/resources 文件夹 -> 新建 -> 文件 -> 提供文件名:messages.properties。它包含默认区域设置的消息。 messages.properties 步骤 4:创建一个名为 messages_fr.properties 的另一个属性文件,用于法语区域设置。它包含一条法语区域设置的消息。 messages_fr.properties 步骤 5:读取属性并根据输入的 Accept-Language 请求头进行自定义。打开 RestfulWebServicesApplication.java 并为 ResourceBundle 配置另一个 Bean。 RestfulWebServicesApplication.java 步骤 6:更新服务以使用这些源。打开 HelloWorldController.java 并自动装配 MessageSource。 HelloWorldController.java 步骤 7:打开 REST 客户端 Postman 并执行以下更改
![]()
![]() 它返回美国区域设置的消息 Good Morning。 现在我们更改 RequestHeader us 为 fr 并再次发送 GET 请求。 ![]() ![]() 它返回法语区域设置的消息 Bonjour。 再次,将 RequestHeader fr 更改为其他 RequestHeader,例如 nl。它返回默认区域设置(美国)的消息 Good Morning。 ![]() 让我们为 RequestHeader nl 创建一个属性文件 message_nl.properties。它包含 荷兰语 的消息 Goede Morgen。 messages_nl.properties 再次发送 GET 请求,它返回消息 Goede Morgen。 ![]() 简化国际化现在我们将简化上面完成的国际化实现。在之前的实现中,我们已将区域设置(RequestHeader)作为参数传递给 REST 控制器方法。如果我们将此添加到每个需要国际化的方法中,成本会增加。Spring 提供了一种从 LocaleContextHolder 获取它的替代方法。 让我们实现 LocaleContextHolder 而不是 RequestHeader。 步骤 1:打开 HelloWorldController.java 并更改 helloWorldInternationalized() 方法的返回类型。 HelloWorldController.java 步骤 2:打开 RestfulWebServicesApplication.java 并将 SessionLocaleResolver 更改为 AcceptHeaderLocaleResolver。LocaleResolver 实现使用 HTTP 请求的“accept-language”头中指定的主要区域设置(客户端浏览器发送的区域设置)。 RestfulWebServicesApplication.java AcceptHeaderLocaleResolver 的优点是,我们无需将请求头配置为每个控制器方法中的参数。 步骤 3:打开 REST 客户端 Postman 并通过设置键为 Accept-Language,值为 fr 来发送 GET 请求。它返回消息 Bonjour。 现在取消选中 RequestHeader,将值 fr 更改为 en。它返回默认区域设置(美国)的消息 Good Morning。 步骤 4:转到 RestfulWebServicesApplication.java。删除 ResourceBundleMessageSource() 方法,并将其配置在 application.properties 文件中。 步骤 5:打开 application.properties 文件,配置消息基础名称,而不是在 RestfulWebServicesApplication.java 中创建单独的 Bean。 application.properties 步骤 6:重复步骤 3。 下一主题内容协商实现 XML 支持 |
我们请求您订阅我们的新闻通讯以获取最新更新。