春季休息国际化

Das*_*oot 3 rest spring internationalization

如果我想从特定用户票证解析参数setLocale,有没有办法将Spring国际化实现到休息服务?

工作流程如下所示:用户单击链接.服务获取用户特定的票证和设置.服务解析故障单并获取区域设置应该相应地设置此区域设置,然后服务以特定语言返回响应.

我发现的所有内容都只是简单地将语言环境与请求一起转移.另外,我并没有明白Spring如何映射所有这些名称.我是否必须给他变量,然后他用给定的语言来源映射这些名称?

Pau*_*nis 7

您必须创建应用程序本地化属性文件并将它们放入类路径中,因此例如,您有两个文件:

application_en.properties
application_lt.properties
Run Code Online (Sandbox Code Playgroud)

一个用于英语,另一个用于立陶宛语.让我们说它们包含一个属性:

en:
application.name=Example

lt:
application.name=Pavyzdys
Run Code Online (Sandbox Code Playgroud)

然后,您必须在spring配置文件中定义消息源:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="application"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

请注意,basename是application以及超出下划线的内容:在我们的示例中en,lt您需要为消息源提供本地化以获取本地化属性.

例如:

假设你在某些bean中成功自动装配了spring的消息源:

@Autowired
private MessageSource messageSource;
Run Code Online (Sandbox Code Playgroud)

你有一个方法:

public String getMessage(String code, String locale) {
    return messageSource.getMessage(code, null, new Locale(locale));
}
Run Code Online (Sandbox Code Playgroud)

所以当你打电话时:

getMessage("application.name", "en") - 它将为您返回英语语言的"示例".

getMessage("application.name", "lt") - 它会让你回到"Pavyzdys"的立陶宛语.

希望这是有道理的.