[Liferay] Liferay 国际化 - 使用 LanguageUtil

遇到一个问题一直没有察觉

在自己编写的 portlet 插件中,java 类里使用 LanauageUtil.get(locale, 'hello-world') 无法返回国际化字符串,而是返回 'hello-world'.


使用国际化有 4 种方式:

1. jsp 页面中调用,这个最简单,使用如下标签就行

<liferay-ui:message key="hello-world" />

通俗易懂 随掉随用


2. jsp 页面中套嵌 java 代码

<%= LanguageUtil.get(pageContext,"hello-world") %>

pageContext 为 jsp 的隐含对象


3. 在 controller 中调用 LanguageUtil 类的 get 方法,我在代码里就是这么写

LanguageUtil.get(themeDisplay.getLocale(), "hello-world");

却发现根本没有返回国际化字符串,深入代码发现上行代码只是在 Portal 中的 language.properties 搜寻 'hello-world',所以搜寻不到。


结果是 LanguageUtil.get() 方法缺少了 PortletConfig 参数,修改代码如下

PortletConfig portletConfig = (PortletConfig)request.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG);

String message = LanguageUtil.get(portletConfig, themeDisplay.getLocale(), "hello-world");

成功返回经过国际化的字符串。


4. 上述都是使用 Liferay 提供的公共类,当然还能使用 java.util.ResourceBundle 完成国际化工作

PortletConfig portletConfig = (PortletConfig) request.getAttribute(JavaConstants.JAVAX_PORTLET_CONFIG);

ResourceBundle res = portletConfig.getResourceBundle(request.getLocale());
	     	
String message = res.getString("hello-world");


与 3 是类似的,就是多了一行代码。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值