Target:
In velocity files, we visite international resource which was stored in DB by used some methods!
Key Words:
Velocity , Spring , messagesource , Synyx Messagesource for Spring
Reference:
http://redmine.synyx.org/projects/messagesource/wiki
Getting Start:
configure in Maven(down related package):
<repositories>
.......
<repository>
<id>nexus.synyx.org</id>
<name>Synyx OpenSource Repository</name>
<url>http://repo.synyx.org</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.synyx</groupId>
<artifactId>messagesource</artifactId>
<version>0.6.1</version>
</dependency>
</dependencies>
Configue in application context:
<bean id="messageSource" class="org.synyx.messagesource.InitializableMessageSource">
<property name="defaultLocale" value="en_US" />
<property name="messageProvider">
<bean class="org.synyx.messagesource.jdbc.JdbcMessageProvider">
<property name="dataSource" ref="dataSource" />
<property name="delimiter">
<value>"</value>
</property>
</bean>
</property>
</bean>
Read reource by messageSourceAccessor:
MessageSource messageSource = (MessageSource) applicationContext.getBean("messageSource");
MessageSourceAccessor messageSourceAccessor = new MessageSourceAccessor(messageSource);
Create a helper class to read resource for DB
calss MessageTool {
..........................
public String get(String code) {
return messageSourceAccessor.getMessage(code, locale);
}
public String get(String code, String s1) {
return messageSourceAccessor.getMessage(code, s1, locale);
}
public String get(String code, Object[] args) {
return messageSourceAccessor.getMessage(code, args, locale);
}
public String get(String code, Object[] args, String defaultMsg) {
return messageSourceAccessor.getMessage(code, args, defaultMsg, locale);
}
public String get(String code, List args) {
return this.get(code, args.toArray());
}
public String get(String s, String s1, List list) {
return this.get(s, list.toArray(), s1);
}
}
Finnally, we can use following writing to read resource file:
$messageTool.get('VELOCITY')
if current locale is en_US, the tool will query special message by follow conditions: language=en and country=US and key=VELOCITY!