I18N by Spring

本文介绍如何利用Spring消息源组件在Velocity模板引擎中访问存储于数据库的国际资源,包括配置Maven依赖、应用上下文、以及通过消息源访问资源文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值