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?

¿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
  • Configuración de la configuración regional en Android
  • Aplicación de varios idiomas androide?
  • (ANDROID) que controla el idioma del usuario
  • Forzar locale para Android con resConfig
  • Cómo getResources (). GetString () funciona android
  • ¿Cómo puedo obtener mi código de país del dispositivo android sin usar GPS?
  • Localización de Android
  • ¿Puedo acceder a recursos de diferentes idiomas de Android?
  • ¿Por qué Locale.getDefault (). GetLanguage () en Android devuelve el nombre para mostrar en lugar del código de idioma?
  • Cambiar la configuración regional en el emulador de Android
  • Cómo configurar el texto del cuadro de diálogo de google api en el idioma predeterminado de la aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.