問題
ウェブページの言語設定には、複数の異なる設定があります。 ユーザーがサイトを訪れたとき、最終的にどのような言葉を使うのでしょうか?
環境
- Liferay DXP 7.0+
解決
匿名ユーザーの場合
- URLに言語コード(例: /en, /esなど)が含まれている場合、使用される言語はweb.xmlで定義されているI18nサーブレットから取得されます。
- URLに言語コードが含まれていない場合、デフォルトのポータルプロパティ
locale.default.request=falseのため、インスタンス設定 > デフォルト言語 の値が使用されます。
portal-ext.propertiesに locale.default.request=true が設定されている場合、Liferayは設定された順序に従ってユーザーのブラウザで定義された優先言語を使用し、現在のサイトで利用可能な最初の言語を選択します。 例えば、ユーザーのブラウザは、チェコ語とスペイン語の2つの言語を選択しています。 サイトで利用可能な言語にチェコ語が含まれていない場合は、スペイン語が使用されます。 ブラウザがあなたのサイトで利用できない言語(この例ではチェコ語)を1つしか選択していない場合、インスタンス設定で定義されているデフォルト言語に直接ジャンプします。
認証済みユーザーの場合
- 使用する言語は、ユーザーの アカウント設定 > 言語 で設定された値を使用します。
- ユーザーがアカウント設定で設定した優先言語とは異なる言語コードを含むURLにアクセスした場合、ページが異なる言語で表示されていることを知らせるメッセージがポップアップ表示され、次のオプションが表示されます。
- ユーザーのアカウント設定で設定した言語を含むページにユーザーをリダイレクトするためのリンクです。
- ユーザーのアカウント設定で言語設定を現在のページで使用されている言語に直接変更するためのリンクです。
追加情報
使用されている言語は、ブラウザのクッキーのGUEST_LANGUAGE_IDに保存されていますのでご注意ください。 手動で削除しない限り、その後のリクエストに使用されます。