Saltar a contenido

Detección de locale

KanjiIQ detecta automáticamente la región del usuario y presenta un subconjunto curado de idiomas relevantes para su locale. Esto evita abrumar a los usuarios con un desplegable de 51 idiomas mientras mantiene todos los idiomas accesibles.

Cadena de detección

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]

Orden de prioridad

El detector de locale resuelve la locale del usuario a través de:

  1. Locale de la cuenta — Si el usuario tiene una preferencia guardada
  2. Locale del dispositivoPlatform.localeName (ej., pt_BR)
  3. Idioma del navegadornavigator.language (solo web)
  4. Respaldo — English (en)

Locales preconfiguradas

La tabla de base de datos locale_configs almacena 30 mapeos de locale preconfigurados:

Locale Idiomas por defecto Total disponibles
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
... ... ...

Cada locale define:

  • Idiomas por defecto: Mostrados inicialmente (3-5 más relevantes)
  • Idiomas disponibles: Conjunto regional completo (7-17 idiomas)

Interruptor "Mostrar todos los idiomas"

Los usuarios siempre pueden anular la detección de locale:

  • Un interruptor etiquetado "Mostrar los 51 idiomas" expande el selector de idiomas a la lista completa
  • Esta preferencia se guarda en SharedPreferences
  • Una vez habilitado, anula el filtrado basado en locale para ese dispositivo

Endpoint de la API

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

Respuesta:

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

Gestión de administración

Las configuraciones de locale se gestionan a través del panel de administración:

  • Añadir nuevas locales según surja la demanda de usuarios
  • Ajustar listas de idiomas basándose en la analítica regional
  • Ver tráfico regional para identificar locales desatendidas

Consulta la API de administración en POST /api/v1/admin/locales para la gestión de configuraciones.