Liferay: Язык по умолчанию для сайта - PullRequest
2 голосов
/ 16 марта 2012

У меня есть один портал и несколько сообществ (LR 6.1 - сайты). Сообщества выделяют несколько регионов на разных языках, поэтому я хотел бы установить разные языки по умолчанию для каждого сообщества.

Можно ли установить язык по умолчанию для сайта?

Мне это нужно для требований CMS: у каждого сайта есть свой язык по умолчанию для контента. Например, сайт в Германии должен иметь немецкий язык в качестве языка по умолчанию, а сайт в Испании должен иметь испанский язык в качестве языка по умолчанию и т. Д.

Web Content Default Language

Ответы [ 2 ]

4 голосов
/ 16 марта 2012

Я не знаю, существует ли параметр конфигурации для языка по умолчанию для сайта (если вы имеете в виду сообщество / организацию ...).

Для всего портала у вас есть опция "Язык по умолчанию" в

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-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);

Как указано в комментарии, такое поведение произойдет, если (и только если) вы добавите новую локаль (в графическом интерфейсе), которой нет в 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

или если вы изменили locales в portal-ext.properties, чем если бы не в portal-ext.properties.

Например, если у вас есть в portal-ext.properties

locales=en_GB

, вы не сможете добавить любую другую локаль из графического интерфейса, если вы сначала не добавите новую локаль в portal-ext.propertiesИ затем перейдите на страницу отображения настроек портала и добавьте ее туда снова.

1 голос
/ 10 октября 2012

может быть способ, основанный на том, как вы организуете свои редакторы: язык по умолчанию для веб-контента основан на текущем языке (например, языке по умолчанию) пользователя.Обычно для немецких пользователей язык может быть установлен на немецкий, чтобы прочитать версию контента на немецком, нет?

В качестве альтернативы вам придется настроить Liferay (например, редактор веб-контента) и вручную установить язык по умолчанию на основе какого-либо свойства на текущем сайте - это может быть сохранено как настраиваемое поле, также называемое expando.Таким образом, он действительно будет основан на сайте, на котором создается контент, но это может противоречить ожиданиям текущего пользователя: для чего они устанавливают язык по умолчанию, если редактор этого не соблюдает?

Тем не менее - в вашем случае ожидание может быть даже тем, что вы описываете, поэтому это допустимый вариант.

Достаточно ли этого уровня детализации?

...