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

0. 使用 spring 提供的消息源,简单示例
  1. 资源包路径结构如下(项目结构)(资源包文件编码统一为 UTF-8 编码,这里仅仅使用 language-code 作为资源文件划分,即 文件名中的 zh 和 en)(资源包中,至少要提供 my_message_source.properties 这个基础版本的资源,当请求 en 或 zh 版本不存在时,会回退到这个基础版本的资源)
    Spring基本使用(消息源MessageSource的使用/国际化)_第1张图片
    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


<beans>
	
	<bean id="messageSource" 
		class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basenames">
			<list>
				
				<value>my_message_sourcevalue>
			list>
		property>
		
		<property name="defaultEncoding">
			<value>UTF-8value>
		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 日志打印
...

你可能感兴趣的:(Spring)