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
  • Establecer la configuración regional mediante programación
  • Cambiar el idioma de las cadenas en la actividad de Android
  • Los números arábigos con ar-ae y ar-sa locale en Android
  • Configuración de idioma turco e inglés: traducir caracteres turcos a equivalentes latinos
  • Obtener locales disponibles para tts
  • Cómo restaurar la configuración regional predeterminada de una aplicación para Android
  • Internacionalización del problema string.xml
  • ¿Cuál es el código de configuración regional adecuado para Android para chino simplificado y portugués-Brasil?
  • OnConfigurationChange no se llama después de cambiar la configuración regional
  • Android obtiene el idioma del dispositivo
  • Android: ¿Cómo mantener la configuración local de la aplicación independiente de System Locale?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.