2012-03-16 7 views
2

私は1つのポータルといくつかのコミュニティ(LR 6.1 - サイト)を持っています。コミュニティは言語が異なる複数の地域を割り当てているため、コミュニティごとに異なるデフォルト言語を設定したいと思います。Liferay:サイトごとのデフォルト言語

サイトごとにデフォルト言語を設定することはできますか?

CMSの要件には、すべてのサイトにコンテンツ用の独自のデフォルト言語があります。たとえば、ドイツのサイトにはドイツ語がデフォルト言語として、スペインのサイトにはデフォルト言語としてスペイン語が設定されている必要があります。

Web Content Default Language

+0

一度に達成したいことはありますか? –

+0

私の質問を参照して、私はそれを更新しています。 – Mark

+0

あなたはあなたの質問に対する答えを今までに見つけたかどうかはわかりませんが、CMSをその言語にするために、すべてのサイトバージョンにデフォルト言語を設定する必要はありません。たとえば、言語を変更すると、コントロールパネルがその言語に変更されます。 – Adia

答えて

1

編集者の編成方法に基づいている可能性があります。ウェブコンテンツのデフォルト言語は、ユーザーの現在の言語(デフォルト言語など)に基づいています。通常、ドイツ語ユーザーは、ドイツ語のコンテンツバージョンを読むために、ドイツ語に設定された言語を使用している可能性があります。

また、Liferay(ウェブ​​コンテンツエディタなど)をカスタマイズして、現在のサイトの一部のプロパティに基づいてデフォルトの言語を手動で設定する必要があります。これはカスタムフィールドaka expandoとして保存されます。この方法では、コンテンツが作成されているサイトに本当に基づいていますが、これは現在のユーザーの期待と矛盾する可能性があります。エディタがこれを尊重しないと、デフォルトの言語は何に設定されますか?

あなたのケースでは、あなたの説明があなたのものであるかもしれないので、それは有効なオプションです。

この詳細レベルは十分ですか?

4

私は(あなたがコミュニティ/団体を意味している場合...)サイトごとにデフォルト言語の構成設定が存在することを認識していませんよ。ポータル全体のために

あなたは

Control panel -> Portal settings -> Display settings 

下の「デフォルトの言語」オプションを持っているしかし、あなたはそこにあなたの言語を持っていない、または削除したい場合は/あなたがportal-ext.propertiesでそれを設定することができ、いくつかの言語を追加します。例えば

locales=hr_HR,en_US 

EDIT(コメントで述べたバグについての詳細情報)

あなたは

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

com.liferay.portal.service.impl.CompanyLocalServiceImplを見てみる場合「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);

コメントこの動作で述べたようにあなたは(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 

を持っている場合は、あなたが最初のportal-ext.propertiesに新しいロケールを追加し、その後に行くGUIのunlesから、他のロケールを追加することはできませんポータル設定のページを表示し、もう一度追加します。

+0

また、URLに言語を指定することもできます(たとえば、英語の場合は/ en /を追加します) – emesx

+0

私は1つのポータルといくつかのコミュニティ(LR 6.1サイト)を持っています。コミュニティは言語が異なる複数の地域を割り当てているため、コミュニティごとに異なるデフォルト言語を設定したいと思います。 – Mark

+0

どのような設定がそのportal-ext.properties設定を上書きする可能性がありますか?私はそこに1つだけのオプションを追加しようとしましたが、効果がありませんでした。 – Nenotlep

関連する問題