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:
- Locale de la cuenta — Si el usuario tiene una preferencia guardada
- Locale del dispositivo —
Platform.localeName(ej.,pt_BR) - Idioma del navegador —
navigator.language(solo web) - 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¶
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.