繁体   English   中英

在Java Spring中使用资源包中的语言环境

[英]Using Locale from Resource Bundle in Java Spring

我正在学习使用resouce包在我的项目中打印与语言环境相关的消息。

application.xml中:

<bean class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="ru.bpc.svat.svnr.integration.banking.messages" />
</bean>
<bean class="ru.bpc.svat.svnr.integration.banking.application.SpringContextMessageFactory"  />

目录src \\ main \\ resources \\ ru \\ bpc \\ svat \\ svnr \\ integration \\ banking包含文件:

messages.properties
messages_ru.properties
messages_ru_RU.properties

每个都有一行:

test = testmessage

在测试类中,我获得了消息工厂的实例,并尝试获得消息:

@Autowired private MessageFactory messageFactory;
...
messageFactory.getMessage("test", new Object[]{}, Locale.getDefault());

然后我得到一个例外:

No message found under code 'test' for locale 'ru_RU'.

它出什么问题了? 这可能是一个愚蠢的问题,但这是我的第一次经验。 谢谢您的回答。

<bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename">
            <value>locale\customer\messages</value>
        </property>
    </bean>

</beans>

最后使用SpringContext context.getMessage()方法读取您的值。

注意:假定您的属性文件位于“ resources \\ locale \\ customer \\”文件夹中,如上面的值标签所述。 基本上,这些文件必须位于项目的类路径中。

让我知道它是否可以解决您的问题,请接受我的回答!

如果将文件直接放置到src / main / resources中(而不是src / main / resources的子目录中,该怎么办?)只是一个想法。通常,如果文件在类路径中,该文件应该可以找到。

尝试更换:

<bean class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="ru.bpc.svat.svnr.integration.banking.messages" />
</bean>

<bean class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="ru\bpc\svat\svnr\integration\banking\messages" />
</bean>

确保与您班级相对的路径。 在其他情况下,将资源放在src / main / resources中,并使用classpath:\\后缀

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM