目录
什么是国际化?
2.创建存放文字的文件
3.编辑文件
4.编写页面代码
5.实现中英文的切换
什么是国际化?
国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。
1.创建一个springboot工程加入依赖
org.thymeleaf
thymeleaf-spring5
org.thymeleaf.extras
thymeleaf-extras-java8time
创建完成后打开设置
确保图片中的都是UTF-8
2.创建存放文字的文件在resources文件夹下创建i18n的包,然后在i18n的包下创建login.propertis与login_zh_CN.properties文件(代表中文的意思),在创建login_zh_CN.properties文件时会发现他们合并成了一个文件:Resources Bundle 'login'。
Resources Bundle 'login'可以右键创建文件。
接着在创建一个en_US文件,他会自动识别为英语。
3.编辑文件
文件打开后,点击左下角有的可视化编辑。
右键login点击New Property
添加login.tip
然后如图所示进行补充
然后在多添加几条。
文本模式如下:
4.编写页面代码在 application.properties中添加如下代码:
# 文件的真实位置
spring.messages.basename=i18n.login
然后在templates文件夹下面创建index.html文件,代码如下:
登录界面
Please Sign in
中文
English
运行后输入地址:http://localhost:8080/
可以看到显示的文字是英文的。
然后改造成如下代码:
登录界面
Please Sign in
中文
English
运行后界面:
发现英文变成了中文。
5.实现中英文的切换在创建config文件夹--->创建MyLocalResolver代码如下:
package com.li.config;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
public class MyLocalResolver implements LocaleResolver {
//解析请求
@Override
public Locale resolveLocale(HttpServletRequest request) {
//获取请求参数
String lang = request.getParameter("l");
Locale locale = Locale.getDefault();//如果没有就用默认的
//如果请求链接携带了国际化的参数
if (!StringUtils.isEmpty(lang)){
//zh_CN
String[] split = lang.split("_");
//国家,地区
locale= new Locale(split[0], split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
}
}
MyLocalResolver类创建好后需要将他放到spring中,在config中创建MyConfig类
代码如下:
package com.li.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
}
//自定义国际化主键就生效了
@Bean
public LocaleResolver localeResolver(){
return new MyLocalResolver();
}
}
然后运行,此时点击a标签就可以实现中英文的切换了。
总结:
国际化可以切换文字,在创建properties文件的时候需要注意命名,Thymeleaf中#{}可以获取文件中的值,@{}里面放的是路径,@{index.html(l='zh_CN')}其中括号里面的是传递的参数,要想传递多个参数就在后面加上逗号即可,例如:@{index.html(l='zh_CN',username=${username},password='123456')}。
编写MyConfig类时配置视图解析器,addViewControllers()不然路径错误无法访问。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)