「デフォルトロケール」は何をするものですか?

またしても101レベルの質問です。app.ymlで、デフォルトロケールをfiに設定しています。しかし、これは単にすべてとすべての人のためのデフォルトを設定する以上のことをするのでしょうか?

そして、もしそうなら、ユーザーはAllow user localeが変更されるまで、すべてがそのデフォルト言語(ここではfi)で表示されるのでしょうか?

では、Set locale from accept language headerはどうでしょうか?誰かがen_USを持っていれば、英語版が提供されるのでしょうか?そして、それはデフォルトロケールが単なる提案であり、Accept-Languageが別のものなら上書きされるという意味でしょうか?

そして、私がこれを質問している理由は、私の新しいサイトがアメリカを強くターゲットにしており、フォーラムが必要だからです。しかし、フォーラムを始めるのに必要なすべての作業をするだけの価値があるほど注目を集めるとは思えません。そこで、アメリカやグローバルの訪問者を、目的別に作られたカテゴリに誘導する解決策を検討しています。

しかし、私のフォーラムはそれ以外はすべてフィンランド語であり、Accept-Languageがデフォルトロケールを変更しなければ、それはうまくいきません。

(そして、一部には翻訳機能がいつかうまくいくことを願っています😏)。

これが本物のサポートの質問ではないことは承知していますが、Generalを避けています…

「いいね!」 1

これについてはあまり詳しくないのですが、今のところ他に返信がないので…

app.yml にデフォルトロケールを追加すると、サイト設定の default locale で設定した内容を上書きする(そして設定ページからも削除する)と思います。しかし、それはあくまでデフォルトであり、ユーザーが自分に適した別のロケールを選択できるようにする(またはブラウザに選択させる)ことができます。

もし関連性があれば幸いです。そうでなければ、より知識のある人の返信を促すための役立つ上げコメントとしてください。 :slight_smile: :crossed_fingers:

ApplicationController#with_resolved_locale には、ログインユーザーとログアウトユーザーの 2 つのロジックがあります。

ログアウトユーザーは、(1) リクエストからロケールを設定し、(2) 検出されなかった場合は「デフォルトロケール」サイト設定を使用します。

優先順位は、URL の ?lang=、次に locale クッキー、次に Accept-Language です。各設定が有効になっている場合。

ログインロジックはよりシンプルです。ユーザー設定、次にユーザー設定が禁止されている場合は「デフォルトロケール」です。

すべての場合において、解決されたロケールが Discourse サーバーからアンロードされている場合、en が使用されます。(これは主に単体テストと統合テスト中にトリガーされます。)

locale = SiteSettings::DefaultsProvider::DEFAULT_LOCALE if !I18n.locale_available?(locale)

したがって、要約すると、次のようになります。

  • Accept-Language ヘッダーがない匿名リクエストの言語です。
    • 特にアカウント登録プロセスが含まれます。
  • ユーザーが自分の言語を選択できないように設定した場合、またはユーザーが優先ロケールを設定していない場合に常に使用される言語です。
「いいね!」 3