Liferay 常用基础类 —— com.liferay.portal.language.LanguageUtil

来源:互联网 发布:大宅门知乎 编辑:程序博客网 时间:2024/04/30 13:15
位置:com.liferay.portal.language.LanguageUtil

作用:
在从request 里获取当前页面的语言信息,用于网页的国际化处理。

常用方法的解析:
  • 获取当前页的语言类型
通常服务端,从Web 获取参数,当实现页面跳转或者请求转发时,会传送一个LanguageId 用于标识当前的页面是应用于那种语言。通常会应用到以下方法。

public static String getLanguageId( ActionRequest req )
        throws PortalException, SystemException
{
        ActionRequestImpl reqImpl = ( ActionRequestImpl ) req;
        return getLanguageId( reqImpl.getHttpServletRequest() );
}

public static String getLanguageId( RenderRequest req )
        throws PortalException, SystemException
{
        RenderRequestImpl reqImpl = ( RenderRequestImpl )req;
        return getLanguageId( reqImpl.getHttpServletRequest() );
}

public static String getLanguageId( HttpServletRequest req )
 {
        String languageId = ParamUtil.getString(req, "languageId");
        if ( Validator.isNotNull( languageId ) )
        {
            return languageId;
        }

        Locale locale = ( Locale ) req.getSession().getAttribute( Globals.LOCALE_KEY );

        if (locale == null)
       {
            languageId = CookieUtil.get( req.getCookies(), CookieKeys.GUEST_LANGUAGE_ID );
            if ( Validator.isNotNull( languageId ) )
            {
                locale = LocaleUtil.fromLanguageId( languageId );
            }
        }

        return LocaleUtil.toLanguageId( locale );
 }



  • 获取当前可用的语言类型
public static Locale[ ] getAvailableLocales()
由于LanguageUtil 类中的实例 _locales 存放了当前可用的语言类型,调用该函数将返回当前可用的Locale 数组。Liferay 的Language UI 以及实现国际化Portlet 开发时使用到该方法,如language 选择的下拉菜单的实现:

<select name = "<portlet:namespace />languageId"
              onChange="<portlet:namespace/>changeLanguageView();" >
              <%
                     Locale[] locales = LanguageUtil.getAvailableLocales();
                     for ( int i = 0; i < locales.length; i++ ) {
              %>

             <option <%= ( languageId.equals( LocaleUtil.toLanguageId( locales[i] ) ) ) ? "selected" : "" %>
                                     value="<%= LocaleUtil.toLanguageId( locales[i] ) %>" >
                    <%= locales[i].getDisplayName( locales[i] ) %>
             </option>

              <%
                      }
              %>
</select>
原创粉丝点击