Android: ¿Cómo mantener la configuración local de la aplicación independiente de System Locale?
Tengo problemas relacionados con el idioma de visualización. Puedo cambiar el idioma dentro de la aplicación ("en" para el inglés y "ja" para el japonés) independientemente del sistema del OS.
Sin embargo, el problema es que cuando la aplicación está en "ja" si los usuarios cambian el idioma del sistema manualmente (no "en" o "ja") que mi aplicación cambie automáticamente el idioma a "default". Quiero que el entorno local de mi aplicación sea independiente, independientemente del idioma que cambien los usuarios manualmente, el idioma de aplicación sigue siendo el mismo que cuando se desconectan.
- Usando COLLATE en Android SQLite - Locales se ignora en la instrucción LIKE
- Android: cambia la programación del sistema del dispositivo mediante programación
- Cambiar la configuración regional en el emulador de Android
- Android 7.0 Nougat recoge cadenas predeterminadas cuando el idioma del dispositivo es en_US
- Android: Cómo obtener una cadena en una configuración específica SIN cambiar la configuración actual
EDITAR
Hay algunos enlaces útiles, pero todavía no pueden resolver mi problema. Por ejemplo: Cambiar el idioma de forma programática en Android
¿Podría dar mi sugerencia para hacerlo?
¡Gracias de antemano!
- Configuración de idioma turco e inglés: traducir caracteres turcos a equivalentes latinos
- Aplicación de Android con ActionBar NullPointerException con configuración regional no predeterminada
- ¿Por qué Android tiene su propia manera de obtener la configuración actual?
- Localización de Android
- Cambiar la configuración regional, pero mantener orientaciones de izquierda a derecha y de otros teléfonos
- ¿Cómo mostrar la casilla de verificación a la izquierda cuando cambie el idioma de la aplicación de Android al árabe?
- ¿Se ha construido SQLite en Android con el tokenizador ICU habilitado para FTS?
- Obtener la variante de la configuración regional para el chino simplificado
Intente esto :
import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import android.util.DisplayMetrics; 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(); }
ADICIONAL:
@Override public void onConfigurationChanged(Configuration newConfig) { newConfig.setLocale(yourLocale); super.onConfigurationChanged(newConfig); }
AGREGADO (2):
Tienes que configurar android:configChanges="layoutDirection|locale"
para desencadenar onConfigurationChanged()
cuando cambies Locale
.
No puedo entender por qué esto sucede, tal vez hay algunos idiomas RTL
…
- Actualizar Android APK de la arquitectura nativa a la no nativa conduce a fallos en dispositivos de 64 bits
- Implementar Youtube Subscribe Button en Android