我有一个门户网站和几个社区(LR 6.1 - 网站)。社区分配了几个不同语言的地区,因此我想为每个社区设置不同的默认语言。
是否可以按网站设置默认语言?
我需要它来满足CMS要求:每个站点都有自己的内容默认语言。例如,德国的网站必须将德国作为默认语言,而西班牙的网站则使用西班牙语作为默认语言等等。
答案 0 :(得分:4)
我不知道每个站点的默认语言配置设置(如果您的意思是社区/组织......)。
对于整个门户网站,您在
下有“默认语言”选项Control panel -> Portal settings -> Display settings
但如果您没有语言,或者想删除/添加某些语言,可以在portal-ext.properties
中配置。例如
locales=hr_HR,en_US
编辑(有关评论中提到的错误的更多信息)
如果你看一下 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
。
注意从首选项(数据库)String oldLocales = preferences.getValue(PropsKeys.LOCALES, StringPool.BLANK);
读取oldLocales
并针对portal.properties/portal-ext.properties if (!ArrayUtil.contains(PropsValues.LOCALES, locale)) { ...
PropsValues.LOCALES => public static String[] LOCALES = PropsUtil.getArray(PropsKeys.LOCALES);
如评论中所述,如果(并且仅当)您添加不在portal.properties中的新区域设置(在GUI中),则会发生此行为
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中修改了locales
,而不是在portal-ext.properties中修改locales=en_GB
。
例如,如果您有portal-ext.properties
{{1}}
您将无法从GUI unles添加任何其他语言环境,您首先将新的语言环境添加到portal-ext.properties然后转到Portal设置的显示页面并再次将其添加到那里。
答案 1 :(得分:1)
可能存在一种基于组织编辑器的方式:Web内容的默认语言基于用户的当前语言(例如默认语言)。通常德国用户可能将他们的语言设置为德语,以便阅读德语内容版本,不是吗?
或者,您必须自定义Liferay(例如webcontent编辑器)并根据当前站点中的某些属性手动设置默认语言 - 这可能会存储为自定义字段aka expando。这样,它将真正基于正在创建内容的网站,但这可能与当前用户的期望相冲突:当编辑器不遵守此规定时,他们为默认语言设置了什么?
仍然 - 在你的情况下,期望甚至可能是你所描述的,所以这是一个有效的选择。
这个细节水平够吗?