私は現在、ユーザーがデバイスでいくつかのイベントメッセージを取得できるようにするAPIに取り組んでいます。ユーザーは自分のAPIを呼び出して、好みのロケールを指定します(たとえばfr_FR
)。
バックオフィスでは、管理者はサポートする言語を選択できます。彼らが英語と中国語を選んだとしましょう。したがって、彼らはフランス語をサポートしていません。
私はすべての翻訳を処理するためにPropelI18Nの動作を使用しています。私のリクエストでは、現在次のことを行っています。
SystemMessageQuery::create()
->joinWithI18N('fr_FR')
->findOne();
既存のロケールを指定すると正しく機能します。ただし、翻訳が利用できない場合は、nullを返します。論理的に聞こえます。
en_US
私の質問は、提供されたロケールが管理者によって計画されていない場合、デフォルトのロケール(この場合)でユーザーをフォールバックできますか?はいの場合、どうすれば続行できますか?
ロケールが存在するかどうかを確認するために、事前のリクエストを送信することを考えました。しかし、パフォーマンス上の理由から(特にAPIの場合)、これは良い方法ではないと思います。
何か案が?