¿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é?
- String-array dentro de string-array
- StringBuilder perdió datos al convertir a String
- Donde usar StringBuffer / StringBuilder que String
- Ellipsize sólo una sección en un TextView
- Cómo agregar recursos de cadena en Eclipse?
EDIT: Gracias por la ayuda. Lo aprecio.
- Android: ¿dividido en un salto de línea en String? (Párrafos)
- ¿Cómo puedo obtener una cadena de mi respuesta http android?
- Cómo leer / escribir cadena de un archivo en Android
- Byte array -> String -> Conjunto de bytes
- Android (cambio de cadena en código java)
- ¿Por qué la marquesina no funciona en Widget?
- Conversión de TextView a String (tipo de) Android
- Quitar el prefijo de URL de String (http: /, www, etc.)
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.
Mira esto, lo obtendrás.
- ¿El tema de Holo trabaja con la barra de título de encargo?
- Java – java.lang.IllegalStateException: No se pudo leer la fila 0, col -1 de CursorWindow