Spring基本使用(消息源MessageSource的使用/国际化)

0. 使用 spring 提供的消息源,简单示例
  1. 资源包路径结构如下(项目结构)(资源包文件编码统一为 UTF-8 编码,这里仅仅使用 language-code 作为资源文件划分,即 文件名中的 zh 和 en)(资源包中,至少要提供 my_message_source.properties 这个基础版本的资源,当请求 en 或 zh 版本不存在时,会回退到这个基础版本的资源)
    项目结构图
    1.1 文件 my_message_source_zh.properties 和 my_message_source_en.properties 的内容分别为:
	// zh版本(中文版) 文件的内容
	application-name=应用名称
	author=作者
	version=版本

	// en版本(英文版) 文件的内容
	application-name=application name
	author=author
	version=version
  1. spring 配置文件中,定义消息源 bean 即 messageSource bean
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans SYSTEM "spring-beans.dtd">
<beans>
	<!-- 使用该实现类的一个理由是:可以设置文件编码,从而避免中文乱码。还可以动态刷新资源 -->
	<bean id="messageSource" 
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basenames">
			<list>
				<!-- the family of resource bundles -->
				<value>my_message_source</value>
			</list>
		</property>
		<!-- 避免中文乱码 -->
		<property name="defaultEncoding">
			<value>UTF-8</value>
		</property>
		</bean>
</beans>
  1. 简单测试
package com.willhonor.test.useMessageSource;

import java.util.Locale;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test_use_message_source_i18n {
	@Test
	public void test_use_1() throws Exception {
		String pathA = "com/willhonor/test/configs/application.j.xml";
		String[] path = new String[] {pathA};
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(path);
		// ch
		String can = context.getMessage("application-name", new Object[] {}, Locale.CHINESE);
		System.out.println(can);
		String ca = context.getMessage("author", new Object[] {}, Locale.CHINESE);
		System.out.println(ca);
		String cv = context.getMessage("version", new Object[] {}, Locale.CHINESE);
		System.out.println(cv);
		// en
		String ean = context.getMessage("application-name", new Object[] {}, Locale.ENGLISH);
		System.out.println(ean);
		String ea = context.getMessage("author", new Object[] {}, Locale.ENGLISH);
		System.out.println(ea);
		String ev = context.getMessage("version", new Object[] {}, Locale.ENGLISH);
		System.out.println(ev);
		//
		context.close();
	}
	
	@Test
	public void test_use_locale() throws Exception {
		System.out.println(Locale.ENGLISH.getLanguage()); // en, language
		System.out.println(Locale.CHINESE.getLanguage()); // ch, language
		System.out.println(Locale.CHINA.getCountry()); // cn, country
	}
}
  1. 测试执行结果如下(结果达到预期)
...
# 省略 spring 日志打印
...
应用名称
作者
版本
application name
author
version
...
# 省略 spring 日志打印
...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值