La mejor manera de determinar automáticamente el idioma del usuario

Estoy desarrollando un proyecto en el que necesito determinar automáticamente cuál es el idioma de usuario utilizado para crear el contenido.

En realidad estamos usando Locale.getDefault().getLanguage() pero esto no puede ser la elección correcta porque, por istance, vivo en Italia, escribo contenido en italiano, pero mi configuración por defecto en mi teléfono es en_US.

Así que pensé que tal vez podría determinarlo desde el país de SIM (y de retorno a la configuración de usuario cuando el dispositivo no tiene uno), pero no hay una relación de uno a uno de un país a un idioma. Por suerte, US tiene en_US y es_US.

¿Tienes alguna sugerencia? ¿Debería preguntar al usuario por la configuración regional de su contenido actual?

One Solution collect form web for “La mejor manera de determinar automáticamente el idioma del usuario”

¿Por qué necesita el idioma del usuario?

Yo también tengo mi configuración local en en_US, y tengo que porque prefiero tener menús, etc en inglés. (La traducción de los menús y ajustes, etc se siente tenso en mi lengua materna.)

Lo más probable es que tus usuarios se molesten (sé que lo haría) si utilizas cualquier cosa que no sea Locale.getDefault().getLanguage() para lo que estás usando el lenguaje para.

Dicho esto, si realmente quieres usar un idioma local, te sugiero que averigües el código del país por algunas heurísticas basadas en

  • Configuración predeterminada
  • País SIM
  • País actual de la red

Y utilice una tabla de búsqueda codificada de código de país a uno de los códigos de idioma oficial. Hay bases de datos abiertas con esta información, vea por ejemplo estos recursos:

  • Lista de códigos de idiomas por país
  • Códigos de país / códigos de idioma en el wiki de OpenStreetMap
  • Código de configuración local para hebreo / Referencia a otros códigos de configuración regional?
  • Cómo restaurar la configuración regional predeterminada de una aplicación para Android
  • Número en árabe en texto árabe en Android
  • Android Cómo instalar los locales instalados del sistema
  • ¿Cómo puedo obtener mi código de país del dispositivo android sin usar GPS?
  • Cambiar la configuración regional, pero mantener orientaciones de izquierda a derecha y de otros teléfonos
  • ¿Se ha construido SQLite en Android con el tokenizador ICU habilitado para FTS?
  • Texto de Android a voz en diferentes idiomas
  • Cómo obtener el código de idioma IETF BCP47 en la API de Android <21
  • Comprobación de configuración regional de la matriz de cadenas de Android
  • Aplicación de varios idiomas androide?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.