¿Cómo comprobar el idioma de un dispositivo en android?

Quiero que mi aplicación compruebe el idioma que está usando el teléfono. Esta sentencia if se supone que debe hacer eso:

if (Locale.getDefault().getLanguage().equals("en")) { yourYesResponse = "That is great " + usersName + "!"; } else if (Locale.getDefault().getLanguage().equals("fr")) { yourYesResponse = "C\'est bon " + usersName + "!"; } 

Pero incluso si mi dispositivo está configurado en francés todavía muestra el inglés. ¿Hay algo malo con esto si la declaración y si sí, entonces qué?

EDIT: Gracias por la ayuda. Lo aprecio.

Puede solucionar esto declarando un archivo de recursos de cadena para cada idioma.

Cree carpetas de recursos denominadas valores-fr y valores-es y añada un archivo llamado strings.xml a ambas carpetas.

El archivo string.xml en valores-es:

 <resources> <string name="good">That is great </string> </resources> 

Y carga el recurso de esta manera:

 yourYesResponse = getResources().getText(R.string.good) + usersName + "!"; 

Niek fue más rápido …

Para tener el lenguaje del sistema:

 Locale.getDefault().getDisplayLanguage(); 

Utilizar :

  Locale.getDefault().getLanguage().contentEquals("en") 

El String#equals() no sólo compara el contenido de la cadena, sino que también comprueba si el otro objeto es también una instancia de una String . Los métodos String#contentEquals() sólo comparan el contenido (la secuencia de caracteres) y no comprueban si el otro objeto es también una instancia de String . Puede ser cualquier cosa, siempre y cuando sea una implementación de CharSequence o una instancia de StringBuffer .

Para obtener el idioma del dispositivo, puede utilizarlo:

 Locale.getDefault().getDisplayLanguage(); 

o,

 Locale.getDefault().getLanguage(); //to get usual language code 

Normalmente la configuración regional se proporciona con el siguiente formato fr_FR donde primero fr es el código del idioma y el segundo es el código del país, es por eso que debería usar

 Locale.getDefault().getLanguage().startsWith("fr") 

Pero Android forma es utilizar los recursos

 getString(R.string.hello, userName); 

Editado: Ok, la vergüenza en mí, no me di cuenta de que usted llama getLanguage (), pero la segunda parte es correcta.

Como todo el mundo ya explica que i18N (String XMLs en diferentes idiomas) tiene que ser utilizado para lograr esta cosa simple, pero si usted está buscando lenguaje de usuario para algún otro propósito, a continuación, utilice uno de esto.

 Locale.getDefault().getLanguage(); 

Esto le dará al lenguaje código iso ie "de", "ru".

O

 Resources.getSystem().getConfiguration().locale; 

Esto devuelve objeto de recursos compartidos globales que proporciona acceso sólo a recursos del sistema.

La forma de Android de hacer esto, está utilizando recursos xml, como se explica en Localizando con recursos .

Values ​​/ strings.xml :

 <resources> <string name="yes_response">That is great, %s!</string> </resources> 

Valores-fr / strings.xml :

 <resources> <string name="yes_response">C\'est bon, %s!</string> </resources> 

Código:

 yourYesResponse = context.getString(R.string.yes_response, usersName); 

Motivación:

Es una buena práctica usar el marco de recursos de Android para separar los aspectos localizados de su aplicación tanto como sea posible de la funcionalidad básica de Java:

  • Puede poner la mayor parte o la totalidad del contenido de la interfaz de usuario de su aplicación en archivos de recursos, tal como se describe en este documento y en Proporcionar recursos.
  • El comportamiento de la interfaz de usuario, por otra parte, es impulsado por su código Java. Por ejemplo, si los usuarios introducen datos que deben formatearse o clasificarse de forma diferente dependiendo de la configuración regional, utilizarían Java para manejar los datos mediante programación. Este documento no cubre cómo localizar su código Java.
  • ¿Cómo referenciar una cadena de otro paquete en una biblioteca usando XML en Android?
  • Android, ¿Cómo puedo convertir la cadena a la fecha?
  • Android: ¿Cómo url de la tienda en el archivo de recursos string.xml?
  • Android Preferences error, "String no se puede convertir en int"
  • ¿Cómo inserto un salto de línea en una cadena para mostrarlo en un widget Android TextView?
  • Alternativa de DatatypeConverter.printHexBinary (byte array) y DatatypeConverter.parseHexBinary (String str) en Android
  • Android StringBuilder vs Concatenación de cadenas
  • Escribir archivo .json y leer ese archivo en Android
  • Android: evita romper la línea en las partes TextView String
  • Excepción OutOfMemory en la conversión de ByteArray a String?
  • Quiero dividir mi cadena con los siguientes símbolos: +, -, *, / pero la función .split sólo acepta una
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.