ロケール検出¶
KanjiIQはユーザーの地域を自動検出し、そのロケールに関連する言語のキュレーションされたサブセットを提示します。これにより、すべての言語にアクセス可能でありながら、51言語のドロップダウンでユーザーを圧倒することを避けます。
検出チェーン¶
graph TD
A[New User Visit] --> B[Read device locale<br/>Platform.localeName]
B --> C[Extract locale code<br/>e.g., pt-BR, en-US, ja-JP]
C --> D{Cached config<br/>available?}
D -->|Yes, < 7 days| E[Use cached config]
D -->|No| F[API call:<br/>GET /api/v1/config/locale/:locale]
F --> G{Locale<br/>recognized?}
G -->|Yes| H[Return locale config<br/>7-17 languages]
G -->|No| I[Return default config<br/>12 major languages]
H --> J[Cache in SharedPreferences<br/>TTL: 7 days]
I --> J
J --> K[Display language selector]
優先順位¶
ロケール検出器は以下の順序でユーザーのロケールを解決します:
- アカウントロケール — ユーザーに保存された設定がある場合
- デバイスロケール —
Platform.localeName(例:pt_BR) - ブラウザ言語 —
navigator.language(Webのみ) - フォールバック — English(
en)
事前設定されたロケール¶
locale_configsデータベーステーブルには30の事前設定されたロケールマッピングが保存されています:
| ロケール | デフォルト言語 | 利用可能な合計数 |
|---|---|---|
pt-BR |
Portuguese, English, Spanish | 7 |
ja-JP |
Japanese, English, Chinese (Simplified), Korean | 17 |
en-US |
English, Spanish, French | 12 |
fr-FR |
French, English, Spanish, German | 10 |
de-DE |
German, English, French, Dutch | 10 |
ar-SA |
Arabic, English, French | 8 |
hi-IN |
Hindi, English, Bengali, Tamil, Telugu, Punjabi | 12 |
| ... | ... | ... |
各ロケールは以下を定義します:
- デフォルト言語:最初に表示(最も関連性の高い3〜5言語)
- 利用可能な言語:完全な地域セット(7〜17言語)
「すべての言語を表示」トグル¶
ユーザーはいつでもロケール検出をオーバーライドできます:
- 「51言語すべてを表示」というトグルが言語セレクターを完全なリストに展開
- この設定は
SharedPreferencesに永続化 - 有効にすると、そのデバイスではロケールベースのフィルタリングをオーバーライド
APIエンドポイント¶
レスポンス:
{
"locale": "pt-BR",
"defaultLanguages": ["pt", "en", "es"],
"availableLanguages": ["pt", "en", "es", "fr", "it", "de", "ca"],
"showAllOption": true
}
管理者による管理¶
ロケール設定は管理ダッシュボードを通じて管理されます:
- ユーザーの需要に応じて新しいロケールを追加
- 地域分析に基づいて言語リストを調整
- サービスが不十分なロケールを特定するために地域トラフィックを表示
設定管理についてはPOST /api/v1/admin/localesの管理APIを参照してください。