国际化(Internationalization,简称i18m):指软件开发应当具备支持多种语言和地区的功能。也就是说能够具备切换页面显示语言的功能。
i18n,其中“I”和“n”分别为首末字符,18 则为中间的字符数
在 Spring Boot 实现国际化的步骤如下:
资源文件格式:基本名_语言代码_国家或地区代码
我们需要的资源文件包括:
messages_zh_CN.properties
中文messages_en_US.properties
英文1️⃣ Step1:在 resources
目录下新建一个 i18n
目录;
2️⃣ Step2:在 i18n
目录下新建一个默认的资源文件,比如 massgaes.properties
;
3️⃣ Step3:在 i18n
目录下新建一个中文资源文件:massages_zh_CN.properties
;
⚠️ 注意:当我们建完这个我呢见我们发现,IDEA自动为我们将配置文件放在 Resource Bundle 目录中,且名为 massages。
4️⃣ Step4:在 Resource Bundle 目录上右键点击 Add Property Files…
5️⃣ Step5:添加 en_US
6️⃣ Step6:编写配置的语句,一共写三版:默认显示、中文显示、英文显示,这里就默认显示中文。
有的版本的IDAE在窗口的左下角会有 Text
、Resource Bundle
,选择 Resource Bundle
进行配置也是一项,我的IDEA版本的2021.2,没找到这个点。
利用 thymeleaf 将每条语句绑定在一起。
1️⃣ Step1:在html中加入thymeleaf;
2️⃣ Step2:在标签中添加thymeleaf语句
th:text="#{massages.xxx}"
[[#{massages.xxx}]]
利用 a 标签实现中英文的切换。利用thymeleaf指定要调转的页面以及传递的参数。
<a th:href="@{SignUp.html(language='zh_CN')}">中文a>
<a th:href="@{SignUp.html(language='en_US')}">Englisha>
区域化信息配置时实现 LocaleResolver 接口。
LocaleResolver:该组件提供国际化支持,是本地化解析器。
1️⃣ Step1:在项目的Java目录下的 xxxApplication
的同级目录下新建 Config 目录;
2️⃣ Step2:在 Config 目录下新建 MassagesLocalResolver 类,并实现 LocalResolver 接口;
Locale resolveLocale(HttpServletRequest request);
void setLocale(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable Locale locale);
3️⃣ Step3:实现 resolveLocale
方法;
@Override
public Locale resolveLocale(HttpServletRequest request) {
// 获取请求中的语言参数来链接
String language = request.getParameter("language");
Locale locale = Locale.getDefault();
if (!StringUtils.isEmpty(language)) {
String[] strings = language.split("_");
locale = new Locale(strings[0], strings[1]);
}
return locale;
}
4️⃣ Step4:在Config目录下新建一个配置类:Boot_Config,实现 WebMvcConfigurer 接口,并实现 localeResolver
方法。
@Configuration
public class Boot_Config implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver(){
return new MassagesLocalResolver();
}
实现的接口包括:LocalResolver 、WebMvcConfigurer