Cambiar el idioma de las cadenas en la actividad de Android
Estoy haciendo una aplicación con multilenguaje. Entiendo el concepto de string.xml para tener el idioma de la aplicación establecido en lo que es el predeterminado para el teléfono. ¿Hay alguna manera de anular esto? Por ejemplo, si tengo un teléfono español que uso en España, pero todavía quiero tener la aplicación en inglés?
- (ANDROID) que controla el idioma del usuario
- ¿Por qué Android tiene su propia manera de obtener la configuración actual?
- ¿Cuál es el código de configuración regional adecuado para Android para chino simplificado y portugués-Brasil?
- Internacionalización del problema string.xml
- Zona horaria de carga de Android demasiado larga: Nombres de zona horaria cargados para en_US
- Configuración regional: onConfigurationChanged not called
- Código de configuración local para hebreo / Referencia a otros códigos de configuración regional?
- La mejor manera de determinar automáticamente el idioma del usuario
- Configuración de la configuración regional en Android
- Android - El idioma de WebView cambia abruptamente en Android N
- ¿Por qué Locale.getDefault (). GetLanguage () en Android devuelve el nombre para mostrar en lugar del código de idioma?
- Cómo configurar el texto del cuadro de diálogo de google api en el idioma predeterminado de la aplicación
- Cómo restaurar la configuración regional predeterminada de una aplicación para Android
Puede cambiar el idioma (locale) de su aplicación mediante programación con una función simple. Sólo tiene que implementar un método similar al que tiene a continuación, que recibe una cadena como parámetro (como 'en' para inglés, 'es' para español), donde puede configurar la configuración regional para su aplicación y actualizar su actividad actual para reflejar los cambios. La configuración regional que aplicó no cambiará hasta que la cambie manualmente de nuevo.
public void setLocale(String lang) { myLocale = new Locale(lang); Resources res = getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfiguration(); conf.locale = myLocale; res.updateConfiguration(conf, dm); Intent refresh = new Intent(this, AndroidLocalize.class); startActivity(refresh); finish(); }
Asegúrese de importar los siguientes paquetes:
import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.DisplayMetrics; import android.content.res.Resources; import android.content.res.Configuration;
Agregue también en el manifiesto dentro de su etiqueta de actividad android:configChanges="locale|orientation"
EDITAR como se mencionó correctamente no es lo que preguntó el OP, todavía lo dejaré aquí por si alguien acaba aquí tratando de resolver lo que respondí.
Desde la página de desarrolladores de Android:
Cómo crear recursos alternativos
Una gran parte de la localización de una aplicación proporciona texto alternativo para diferentes idiomas. En algunos casos, también proporcionará gráficos, sonidos, diseños y otros recursos específicos de la configuración regional.
Una aplicación puede especificar muchos res // directorios, cada uno con calificadores diferentes. Para crear un recurso alternativo para una configuración regional diferente, utilice un calificador que especifique un idioma o una combinación de idioma y región. (El nombre de un directorio de recursos debe cumplir con el esquema de nomenclatura descrito en Proporcionar recursos alternativos, o bien no se compilará.)
Ejemplo:
Suponga que el idioma predeterminado de su aplicación es el inglés. Suponga también que desea localizar todo el texto de su aplicación en francés y la mayor parte del texto de su aplicación (todo excepto el título de la aplicación) en japonés. En este caso, puede crear tres archivos strings.xml alternativos, cada uno almacenado en un directorio de recursos específico de la configuración regional:
res/values/strings.xml Contains English text for all the strings that the application uses, including text for a string named title. res/values-fr/strings.xml Contain French text for all the strings, including title. res/values-ja/strings.xml Contain Japanese text for all the strings except title.
Si su código Java se refiere a R.string.title, esto es lo que sucederá en tiempo de ejecución:
If the device is set to any language other than French, Android will load title from the res/values/strings.xml file. If the device is set to French, Android will load title from the res/values-fr/strings.xml file.
Tenga en cuenta que si el dispositivo está configurado en japonés, Android buscará título en el archivo res / values-ja / strings.xml. Pero como no se incluye ninguna cadena en ese archivo, Android volverá al valor predeterminado y cargará el título en inglés desde el archivo res / values / strings.xml.
aquí está también el acoplamiento original para la referencia: http://developer.android.com/guide/topics/resources/localization.html
- Android: ¿Cómo pasar la información de la versión durante la construcción de línea de comandos de hormigas?
- TextView y color de fondo