Spring3文件夹国际化
我想使用Spring的i18n实用程序,使所有语言都由文件夹分隔。我计划使用这种文件夹结构使事情比将所有内容都放在一个文件夹中更有条理:Spring3文件夹国际化,spring,properties,internationalization,Spring,Properties,Internationalization,我想使用Spring的i18n实用程序,使所有语言都由文件夹分隔。我计划使用这种文件夹结构使事情比将所有内容都放在一个文件夹中更有条理: i18n 嗯 messages.properties 应用程序属性 fr messages.properties 应用程序属性 这可能吗 这可能吗 是的 我最初想到的一个简单解决方案是使用属性设置消息源,如下所示: <bean id="messageSource" class="org.springframework.co
- i18n
- 嗯
- messages.properties
- 应用程序属性
- fr
- messages.properties
- 应用程序属性
- 嗯
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="useCodeAsDefaultMessage" value="true" />
<property name="basenames">
<list>
<value>i18n.en.messages</value>
<value>i18n.en.application</value>
<value>i18n.fr.messages</value>
<value>i18n.fr.application</value>
</list>
</property>
</bean>
package pack.age;
import java.util.Locale;
import java.util.ResourceBundle;
import org.springframework.context.support.ResourceBundleMessageSource;
public class ByFolderResourceBundleMessageSource extends ResourceBundleMessageSource {
private String rootFolder;
@Override
protected ResourceBundle getResourceBundle(String basename, Locale locale) {
String langCode = locale.getLanguage().toLowerCase();
String fullBaseName = this.rootFolder + "." + langCode + "." + basename;
ResourceBundle bundle = super.getResourceBundle(fullBaseName, locale);
if (bundle == null) {
String defaultBaseName = this.rootFolder + ".Default." + basename;
bundle = super.getResourceBundle(defaultBaseName, locale);
}
return bundle;
}
public void setRootFolder(String rootFolder) {
this.rootFolder = rootFolder;
}
}
配置如下:
<bean id="messageSource"
class="pack.age.ByFolderResourceBundleMessageSource">
<property name="useCodeAsDefaultMessage" value="true" />
<property name="rootFolder" value="i18n" />
<property name="basenames">
<list>
<value>messages</value>
<value>application</value>
</list>
</property>
</bean>
i18n
├───Default
│ ├─── application.properties
│ └─── messages.properties
│
├─── en
│ ├─── application.properties
│ └─── messages.properties
│
└─── fr
├─── application.properties
└─── messages.properties