言語の判定と選択

Events happening in the community are now at Drupal community events on www.drupal.org.
s-jack's picture

D8で、ホーム>管理 >環境設定>地域と言語>言語>判定と選択で、
インターフェーステキスト言語の判定と
コンテンツ言語の判定
がありますが、それぞれの検出方法しかり、違いを作った場合の挙動がいまいち理解できません。
詳しい方教えていただけませんでしょうか?

初めてサイトにアクセスした順で考えるのか。。。
設定されていく逆で並び替えた方が良いのか。。。
など。

よろしくお願いします。

Comments

混乱中

s-jack's picture

言語セレクタという機能があると思います。
この機能は、ブロックにて実現されています。

ブロックの設定では、
言語の値を選択することができ、「インターフェース」、「コンテンツ」を選ぶことができます。

これは、このブロック自体が、インターフェースの言語に合わせて変化するのか、コンテンツに合わせて変化するのか、を設定するのか?

または、

このブロックの機能が、
インターフェースの言語をどれに切り替えるのか、コンテンツの言語をどれに変えるのか?

どっちの設定なんでしょうか?
挙動を試しても、言語の判定と選択の絡みもあって、よく理解できません。

どなたか教えてください、宜しくお願いします。

追記です:
言語スイッチャーでないブロックも同じ設定項目があるのが解せません。
やはりブロックの中身の言語をインターフェース、コンテンツのどっちの言語に合わせるか?ということでしょうか?

s-jack's picture

インターフェーステキストの言語設定項目で6つのうち3つ
*選択された言語:ユーザーが選択した言語
*ユーザー:ユーザーの優先言語に従う
*アカウントの管理ページ:アカウントの管理ページの言語設定

コンテンツの言語設定項目の7つのうちの
*選択された言語:ユーザーが選択した言語
*ユーザー:ユーザーの優先言語に従う

があります。3種類です。
そもそも何の違いがあるのでしょうか?日本語訳がちょっと違うのかな?

参考情報

hagi's picture

ストレートな答えでなくて恐縮ですが、QuickTabsが多国語対応していないために、日本語と英語の2つのブロックを作成し、同じURLで表示させるが、言語で英語の時と日本語の時に表示されるものを変えています。
個人的には、ブロック側の設定は使いたくないのですが、しょうがなく使っています。

ちなみに、言語の「判定と選択」は難しいです。ログインしていない時の言語切り替えがIEとChromeで挙動が違います。
「言語コードのパス接頭語」の日本語(デフォルト)を空にしているのが、いけないのかも知れませんが、Chromeでブラウザが英語の設定だとだまって/xxxとURLで指定しても、勝手に/en/xxxに置き換えられてしまいます。そのコンテンツで日本語を指定してもやっぱり/en/xxxに回されてしまいます。

そのうちに、徹底調査しようと思っているのですが、とりあえず支障が出ていないので放置中。

s-jack's picture

hagiさん、参考情報ありがとうございます。

ログインしてる時、してない時という切り分けで整理する必要があるかと思います。
この2つの優先は、ログインしてない時が先で、その後ログインする、さらにログアウトする、でしょうからログインしてないが先だと思います。
D7ですと、言語の判定と選択でのステップの種類が、
URL
セッション
ユーザー
ブラウザ
デフォルト
となってますので、ログインしてるかしてないか関係ないものを優先順位を上にされたらいかがでしょうか?
URL
セッション(言語セレクタで選択した値を保存しているのかな?ログアウト後もクッキーは有効?)
となるのでしょうか、またはその逆かな。

せっかくですのでこの際、徹底調査しましょう!(笑)

hagi's picture

調べてみました。
やはり問題は、「言語コードのパス接頭語」を空にしたところにありました。

ブラウザの言語設定を英語
コンテンツのデフォルト言語は日本語で接頭語は空

とすると、日本語は表示できません。
パスが空のリクエストが来ると、ブラウザの言語設定を見て、英語ページを出します。
例えば、xxx.xxx/news160606を指定するとxxx.xxx/en/news160606がでます。
言語セレクターで日本語を選ぶと、飛び先はxxx.xxx/news160606になって、結局en/news160606に飛ばされてしまうのです。
パス接頭語をjaに設定すると、言語セレクターで日本語を選ぶと飛び先がxxx.xxx/ja/news160606になって無事に日本語が表示されます。

よく考えると結構深刻です。日本語も読める英語の人の普通の環境で日本語が出ないって事ですから、どうやらパス接頭語は空にするべきではないと言えそうです。ただ、その結果、urlが美しくなくなるようにも感じます。
コンテンツのリンクを通知する場合は、/news160606とパス接頭語を取り去って送れば、日本語環境の人には日本語のコンテンツが、英語の人には英語のコンテンツが表示されますが、/ja/news160606とすると、英語の人でも日本語のコンテンツが表示されてしまいます。言語セレクターで切り替えられるとしても、嫌な感じがします。

とはいえ、まさか、日本語のサイトを見たいなら、ブラウザの設定を日本語に直して出直してこいとは言えないので、接頭語を入れる事で手を打つのが現実的な気がしてきました。

s-jack's picture

なるほど。。。
人の行動はブラウザの設定は意図的にしてないとすると、やはりパス接頭辞を明示することは必須かもしれません。

日本語が主で、英語がサブ的なように、翻訳のプライオリティ的に考えちゃうと、日本語は接頭辞なし、英語は接頭辞ありとなるのかも。
翻訳の精度と量は別として、日本語も英語も同じレベルで考えれば、両方接頭辞を入れるということでしょうか。

ふと感じたのですが、
まずブラウザの言語判定って必要なのか?
自国語の翻訳を持ってない場合、他の判定がない場合はデフォルト言語に触れるわけですから、自分がわからない言語でもすぐにセレクタで選べれば良いわけですよね。

ブラウザの言語判定は、訪ずれた人の初動だけ、かなと思いますが、間違ってますでしょうか?
言語セレクタのように言語を選ばせる機能がある場合は、ブラウザ判定が必要な場合他にありますでしょうか?

ブラウザ判定は必要か?

hagi's picture

ブラウザ判定は必要か?という問いはセレクタがあれば不要という考え方はありでしょう。
しかしながら、私の経験ではブラウザ設定を英語にしていて、ヨーロッパのサイトを見に行くと英語で表示してくれるところがあり、おおっと思います。まあセレクタがあれば大丈夫といえばそうですが、ぱっと英語で出てくるかどうかで印象は大分違います。

サイトとしての国際化対応成熟度という観点に立てば、ブラウザ言語判定は重要だと思います。

私自身は、Macでは、サファリとクロームでブラウザ言語を変えて、使い分けています。

s-jack's picture

そうですね、海外のサイトを見に行った時に、いきなり日本語表示されたら、おおお、とやっぱり思いますね。
ブラウザの言語設定変えて、色々と見てみようと思います。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: