致力于国际化Web应用程序,我有点受阻,因为我不知道如何使我的.properties dinamic。我的意思是,从应用程序中自动获取静态文本。例如,我有一个MessageBundle_de_DE.properties:
greetings=Hallo!
inquiry=Wie geth's?
farewell=Tchüs!
但这是静态的,我写了三对情侣(关键,价值) 我怎么能根据我的申请制作我的钥匙?我想这是可能的,关于documentation。
使用Spring framework和JSP技术。
在此先感谢,我知道这可能是一个太普遍的问题。
答案 0 :(得分:2)
由于您使用的是spring,请将以下bean添加到您的应用程序上下文中:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages/messages" />
<property name="cacheSeconds" value="0" />
</bean>
在/ WEB-INF / messages文件夹中,创建所需的所有messages.properties文件,即messages_en_GB.properties,messages_DE.properties等。
然后在你的jsps中,使用以下spring提供的标签:
<spring:message code="some.property.name" />
默认情况下,区域设置应该是您的用户在其浏览器中设置的区域设置。要允许他们选择不同的Locale(以及正确的语言),您还可以将其添加到您的应用程序上下文中:
<!-- Saves a locale change using a cookie -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
<mvc:interceptors>
<!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
</mvc:interceptors>
然后,您只需要包含/?local=de
等语言环境属性的链接即可更改为德语翻译。
答案 1 :(得分:1)
如果您没有使用Web应用程序框架,我建议使用Spring Framework,它为Web应用程序提供有用的功能,包括国际化。
答案 2 :(得分:0)
如果不使用任何框架,内部化应用程序的最佳方法是使用数据库存储所有翻译。只是一个简单的类,它将通过密钥加载db的翻译,并解决您的问题。
答案 3 :(得分:0)
寻找一种简单有效的国际化应用方式?试试gettext:http://www.gnu.org/software/gettext/manual/gettext.html它被Linux的大多数开源软件使用,但它也适用于Java。步骤很简单:
您可以非常轻松地将本地化添加到任何应用程序(无论是用Java,C,Python等编写)。
答案 4 :(得分:0)
为了国际化应用程序,我实现了Message Compiler,它创建了资源包文件和常量定义,作为来自单个源文件的密钥的Java枚举或静态最终字符串。因此,常量可以在Java源代码中使用,这比使用普通字符串更安全。消息编译器不仅可以用于Java。它还为Objective-C或Swift创建资源文件和常量,并可以扩展到其他编程环境。