2012-03-16 67 views
2

我有一个门户网站和几个社区(LR 6.1 - 网站)。社区分配几个不同语言的地区,因此我想为每个社区设置不同的默认语言。Liferay:按网站默认语言

是否可以按网站设置默认语言?

我需要它的CMS要求:每个网站都有自己的内容默认语言。例如,德国的网站必须将德国作为默认语言,而西班牙网站则使用西班牙语作为默认语言,等等。

Web Content Default Language

+0

你想一次达到什么目标? – 2012-04-25 18:36:45

+0

看到我的问题,我已经更新了。 – Mark 2012-04-25 18:43:24

+0

我不知道你现在是否已经找到了你的问题的答案,但是你不需要为每个站点版本设置默认语言,以便使用该语言的CMS。例如,当您更改为某种语言时,控制面板会更改为该语言。 – Adia 2012-05-23 12:33:05

回答

1

根据组织编辑者的方式,可能有一种方法:Web内容的默认语言基于用户的当前语言(例如默认语言)。通常德国用户可能会将他们的语言设置为德语,以便阅读德语内容版本,不是吗?

或者,您必须自定义Liferay(例如webcontent编辑器)并根据当前站点中的某些属性手动设置默认语言 - 这可能会存储为自定义字段aka expando。通过这种方式,它将真正基于正在创建内容的网站,但这可能会与当前用户的期望相冲突:当编辑人员不履行此义务时,他们将其默认语言设置为什么?

仍然 - 在你的情况下,期望甚至可能是你所描述的,所以这是一个有效的选择。

这个级别的细节足够了吗?

4

我不知道该配置设置每个站点的默认语言(如果你的意思是社区/组织......)的存在。

对于整个门户网站你有下

Control panel -> Portal settings -> Display settings 

“默认语言”选项,但是如果你没有你的语言出现,或要删除/在portal-ext.properties添加一些语言,你可以配置。例如

locales=hr_HR,en_US 

EDIT(约错误的详细信息在评论中提及)

如果您在看看com.liferay.portal.service.impl.CompanyLocalServiceImpl

public void updatePreferences(long companyId, UnicodeProperties properties) 
    throws PortalException, SystemException { 

    PortletPreferences preferences = PrefsPropsUtil.getPreferences(
     companyId); 

    try { 
     String newLocales = properties.getProperty(PropsKeys.LOCALES); 

     if (newLocales != null) { 
      String oldLocales = preferences.getValue(
       PropsKeys.LOCALES, StringPool.BLANK); 

      if (!Validator.equals(oldLocales, newLocales)) { 
       validateLocales(newLocales); 

       LanguageUtil.resetAvailableLocales(companyId); 
      } 
     } 

    ... 
} 


protected void validateLocales(String locales) throws PortalException { 
    String[] localesArray = StringUtil.split(locales, StringPool.COMMA); 

    for (String locale : localesArray) { 
     if (!ArrayUtil.contains(PropsValues.LOCALES, locale)) { 
      throw new LocaleException(); 
     } 
    } 
} 

你将看到“newLocales”对

if (!ArrayUtil.contains(PropsValues.LOCALES, locale)) { 
    throw new LocaleException(); 
} 

因此,如果添加新的区域设置密钥,则在Portal-设置的显示页面中,该页面不在portal-ext.properties或portal.properties中,您将获得LocaleException。这oldLocales从首选项(数据库)读取

注重String oldLocales = preferences.getValue(PropsKeys.LOCALES, StringPool.BLANK); 和反对portal.properties/portal-ext.properties验证if (!ArrayUtil.contains(PropsValues.LOCALES, locale)) { ...

PropsValues.LOCALES =>public static String[] LOCALES = PropsUtil.getArray(PropsKeys.LOCALES);

正如评论这种行为说明如果(且仅当)你添加新的地区(以GUI)会发生,是不是在portal.properties

locales=ar_SA,eu_ES,bg_BG,ca_AD,ca_ES,zh_CN,zh_TW,hr_HR,cs_CZ,da_DK,nl_NL,nl_BE,en_US,en_GB,et_EE,fi_FI,fr_FR,gl_ES,de_DE,el_GR,iw_IL,hi_IN,hu_HU,in_ID,it_IT,ja_JP,ko_KR,lo_LA,nb_NO,fa_IR,pl_PL,pt_BR,pt_PT,ro_RO,ru_RU,sr_RS,sr_RS_latin,sl_SI,sk_SK,es_ES,sv_SE,tr_TR,uk_UA,vi_VN 

,或者如果你修改portal-ext.properties中的比不在portal-ext.properties中。

例如,如果你在portal-ext.properties

locales=en_GB 

,你将无法从GUI添加任何其他区域unles先添加新的语言环境portal-ext.properties然后去有显示门户网站设置页面并再次添加。

+0

此外,您可以在URL中指定语言(例如,在英文中添加'/ en /') – emesx 2012-03-17 10:04:02

+0

我有一个门户和多个社区(LR 6.1 - 站点)。社区分配几个不同语言的地区,因此我想为每个社区设置不同的默认语言。 – Mark 2012-03-20 09:13:56

+0

什么设置可能会覆盖该portal-ext.properties设置?我尝试在其中添加一个选项,但它没有任何作用 – Nenotlep 2015-09-15 06:32:02