首先我们需要中文与英文的properties文件
lang_zh.properties内容,name=\u5F20\u4E09 因为properties中输入中文他会自动转换,这里name是张三
lang_en.properties内容,name=zhangsan
注意:配置文件的命名需要带上语言种类的即:文件名_语言种类.properties,并且不同语言的相同消息的文件名应该一样,例如ang_zh.properties和lang_en.properties就表示中文和英语
语言种类不知道该怎么写的可以在程序中输出,System.out.println(Locale.CHINESE);即可
接着我们就是在spring配置文件中配置:
config/properties/lang
这里需要注意几点:
①在basenames中输入的相对路径
②文件不需要文件类型比如:我的语言文件是lang_zh.properties和lang_en.properties在这里我就只需要输入lang
③大家也看到了,不同语言的文件不需要全部都导入,只需要写文件名即可,看我的配置就知道了
最后就是应用了,
在程序中我们需要得到spring中配置的这个bean,可以通过注入,也可以通过beanUtil获取,我的代码如下:
MessageSource ms = (MessageSource) BeanUtil.getBeanByName("configProperties") ; System.out.println(ms.getMessage("name",new Object[]{} , Locale.CHINESE)); System.out.println(ms.getMessage("name",new Object[]{} , Locale.ENGLISH));
输出结果是:
张三
zhangsan
在这里的ms.getMessage中有两个三个方法,我只研究了三个参数的和四个参数的
lang_zh.properties内容,name=\u5F20\u4E09 {0}
lang_en.properties内容,name=zhangsan{0}
MessageSource ms = (MessageSource) BeanUtil.getBeanByName("configProperties") ; System.out.println(ms.getMessage("name",new Object[]{"年龄:20"} , Locale.CHINESE)); System.out.println(ms.getMessage("name",new Object[]{"age:20"} , Locale.ENGLISH));
张三年龄20
zhangsanage20
不过也有注意的地方:
如果你的文件中的消息有占位符,同时又有单引号就需要注意了,有占位符的时候,单引号需要转义,只需要在单引号前再加一个单引号就可以了,
例如:
name='dengwei'{0}
我就需要写成:name=''dengwei‘’{0}记得是两个单引号,而不是双引号