internationalization详解
国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。
数据国际化
** 从请求作用域获取locale,然后查询对应的数据**
中文语言数据页面:只有中文数据
英文语言数据页面:只有英文数据
浏览器切换中文,英文
模型对象User
@Entity
@Table(name = "t_user")
public class User {@Id@GeneratedValueprivate Long id;private String name;private Integer age;private String locale;//通过此字段查询对应的数据
初始化类InitApplicationListener
package com.jege.spring.boot.controller;import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;import com.jege.spring.boot.data.jpa.entity.User;
import com.jege.spring.boot.data.jpa.repository.UserRepository;/*** spring的事件监听器的处理机制:在启动服务器的时候,插入默认数据*/
@Component
public class InitApplicationListener implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {ApplicationContext context = event.getApplicationContext();UserRepository userRepository = context.getBean("userRepository", UserRepository.class);User user;for (int i = 1; i < 21; i++) {if (i % 2 == 0) {user = new User("小明" + i, 25 + i);user.setLocale("zh");} else {user = new User("zh-ge" + i, 25 + i);user.setLocale("en");}userRepository.save(user);}}}
控制器类UserController
// 从user.jsp列表页面由easyui-datagrid发出ajax请求获取json数据@RequestMapping("/json")@ResponseBodypublic Map<String, Object> json(@RequestParam(name = "page", defaultValue = "1") int page,@RequestParam(name = "rows", defaultValue = "10") int rows, final String q, HttpServletRequest request) {// 按照id降序Sort sort = new Sort(Sort.Direction.DESC, "id");// 封装分页查询条件Pageable pageable = new PageRequest(page - 1, rows, sort);// 拼接查询条件Specification<User> specification = new Specification<User>() {@Overridepublic Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {List<Predicate> list = new ArrayList<Predicate>();if (!StringUtils.isEmpty(q)) {list.add(cb.like(root.get("name").as(String.class), "%" + q + "%"));}if (request.getLocale().toString().contains("en")) {list.add(cb.like(root.get("locale").as(String.class), "%en%"));} else {list.add(cb.like(root.get("locale").as(String.class), "%zh%"));}Predicate[] p = new Predicate[list.size()];return cb.and(list.toArray(p));}};return findEasyUIData(userRepository.findAll(specification, pageable));}
如果感觉不错记得点赞哟!!!