コンテンツにスキップ

ロケール検出

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]

優先順位

ロケール検出器は以下の順序でユーザーのロケールを解決します:

  1. アカウントロケール — ユーザーに保存された設定がある場合
  2. デバイスロケールPlatform.localeName(例:pt_BR
  3. ブラウザ言語navigator.language(Webのみ)
  4. フォールバック — 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エンドポイント

GET /api/v1/config/locale/:locale

レスポンス:

{
  "locale": "pt-BR",
  "defaultLanguages": ["pt", "en", "es"],
  "availableLanguages": ["pt", "en", "es", "fr", "it", "de", "ca"],
  "showAllOption": true
}

管理者による管理

ロケール設定は管理ダッシュボードを通じて管理されます:

  • ユーザーの需要に応じて新しいロケールを追加
  • 地域分析に基づいて言語リストを調整
  • サービスが不十分なロケールを特定するために地域トラフィックを表示

設定管理についてはPOST /api/v1/admin/localesの管理APIを参照してください。