java后台返回前端页面的提示消息的中英日三国语配置
java后台返回前端页面的提示消息的中英日三国语配置
步骤:
- 配置文件:application.yml
spring:
messages:
encoding: UTF-8
basename: i18n/messages
server:port: 8082session-timeout: 30tomcat.max-threads: 0tomcat.uri-encoding: UTF-8#DB接続
spring:datasource:druid:
#qianyong数据库信息url: jdbc:sqlserver://localhost:1433;databasename=thermometerdriverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriverusername: xxpassword: xxxxinitialSize: 5max-active: 50min-idle: 5max-wait: 60000pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20validation-query: SELECT 1validation-query-timeout: 60000test-on-borrow: falsetest-on-return: falsetest-while-idle: truetime-between-eviction-runs-millis: 60000min-evictable-idle-time-millis: 100000#redisキャッシュredis:host: 127.0.0.1port: 6379password:timeout: 100000000msdatabase: 0lettuce:pool:max-active: 8max-wait: -1msmax-idle: 8min-idle: 0servlet:multipart:max-file-size: 200MBfile-size-threshold: 200MB#言語の国際化messages:encoding: UTF-8basename: i18n/messagesdata:solr:host: http://127.0.0.1:8080/solrcore: baidu#分页プラグイン
pagehelper:helper-dialect: SQLServerreasonable: truesupport-methods-arguments: trueparams: count=countSqlmybatis:type-aliases-package: com.monitor.domainmapper-locations: classpath:mapper/*.xmlconfiguration:map-underscore-to-camel-case: truemapper:not-empty: falseidentity: SQLServerweb:ignore:uri: /output/**#ログレベル
logging:level:root: info
2.写入国际化文件
根据上面的配置,在resouces-i18n下面加入Resource Bundle类型文件:
名称为messages,然后加入以下三种类型:
zh_CN 中文
en_US 英文
ja_Jp 日文
完成之后会生成下面三个文件:
【默认】messages.properties
【英文】messages_en_US.properties
【中文】messages_zh_CN.properties
【日文】messages_ja_JP.properties
在里面写入同样的字段:
HelloEveryone=祝大家2020年天天开心
具体过程
新建文件夹i18n







**各个文件内容:messages.properties**
banner.charset=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.messages.encoding=UTF-8
HelloEveryone=祝大家2020年天天开心**messages_en_US.properties:**
banner.charset=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.messages.encoding=UTF-8
HelloEveryone=Happy every day in 2020**messages_ja_JP.properties**
banner.charset=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.messages.encoding=UTF-8
HelloEveryone=みんなが2020年毎日楽しいことを祈ります。**messages_zh_CN.properties**
banner.charset=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.messages.encoding=UTF-8
HelloEveryone=祝大家2020年天天开心
3.新建类
用底层的方法用了4个参数,这4个参数对应的都是地理位置等信息,但这类参数每次在Controller调用的时候都要放一遍,确实很不方便,因为我们只要传进的是code。和语言标识language
我们可以考虑让包装一个类去屏蔽这些参数。
当然,下面的例子是忽略地理位置信息的,如果需要带上地理位置信息,可以考虑使用拦截器方式通过前端传回语言信息,再去对应的地方拿对应的信息。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.stereotype.Component;@Component
public class MessageSourceUtil {@Autowiredprivate MessageSource messageSource;public String getMessage(String code, String language) {if ("en".equals(language)){return messageSource.getMessage(code, null, "", Locale.US);} else if("cn".equals(language)){return messageSource.getMessage(code, null, "", Locale.CHINA);} else if ("ja".equals(language)){return messageSource.getMessage(code, null, "", Locale.JAPAN);}return messageSource.getMessage(code, null, "", Locale.JAPAN);}
}
4.demo演示代码
import com.monitor.config.MessageSourceUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class ManyLanguageDemo {@Autowiredprivate MessageSourceUtil messageSourceUtil;@ResponseBody@PostMapping("/ManyLanguageDemo")public String ManyLanguageDemo(String language){String message = messageSourceUtil.getMessage("HelloEveryone", language);System.out.println(message);return message;}
}
5.postman演示效果图:



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
