studio spanish languages language idioma forlanguagetag configuracion colombia chile change cambiar app android locale

spanish - ¿Por qué Android tiene su propia manera de obtener la configuración regional actual?



locale chile android studio (1)

Estoy de acuerdo en que es confuso y, aunque no lo estoy atacando ni lo estoy defendiendo, puedo verlo permitiéndote hacer algunas cosas.

Vamos a empezar desde el principio.

java.util.Locale.getDefault() está definido por el tiempo de ejecución de java. Es el local del teléfono / dispositivo. Es lo que impulsa cosas como DateFormats (ISO Dateformat standard, US format standard, etc), NumberFormats (commas o decimales, agrupaciones de 3 o 4, etc.) y CurrenyFormats (parece un $ o un CAD) cuando no hay una configuración regional dado. Para estos casos, probablemente sea mejor especificar la configuración regional para estos tipos de objetos de todos modos.

context.getResources().getConfiguration().locale es la configuración regional que se registra con el paquete de recursos actual en el Contexto dado. Puede incluir el valor de configuración regional que respetará todo el contenido del recurso para el par de contexto / recursos actual. La configuración puede ser similar al estado actual del dispositivo que mejor se filtra a los recursos actuales. No necesariamente tiene que especificar ningún contenido que cambie según la configuración regional, pero es una opción.

Los recursos utilizan un conjunto de discriminadores en la Configuración, como orientación, ancho de pantalla, configuración regional, etc. Por lo tanto, dentro de su aplicación puede permitir anular los Recursos actuales () con otros simplemente cambiando la configuración de la aplicación de configuración regional a una configuración regional diferente. Como por ejemplo, estabas haciendo un diseño para una dirección. Es posible que desee que ciertos campos se modifiquen según el país seleccionado. (No estoy diciendo que este sea el comportamiento correcto para una aplicación de este tipo, pero es lo más simple de pensar en este momento). Si tuvieras que confiar simplemente en Locale.getDefault (), sería un restablecimiento incómodo de las aplicaciones del sistema y el estado en el que querías hacer algo como acabo de describir.

Básicamente, se le solicitará que modifique la configuración regional para todo el dispositivo (esto no es necesariamente seguro, ni tampoco es algo que ningún otro usuario pueda disfrutar). Incluso si ignoramos los problemas del administrador de seguridad que serían duplicados por el host vm; en la mayoría de los dispositivos hay muchos estados que se almacenan en caché para el kit de país. Por lo tanto, habría un retraso considerable y, probablemente, mucha inestabilidad al cambiar este valor (si alguien pudiera hacerlo así). La otra alternativa sería siempre especificar la configuración regional para todo. Podrías ver lo molesto que sería eso. Así que está dentro de la configuración del contexto.

Entonces, si bien es incómodo, proporciona un grado adicional de libertad, protección y conveniencia. La mayoría de las veces será Locale.getDefault (), ya que su aplicación se inició desde un proceso en el que el contexto base se inicializó en Locale.getDefault (). En general, me abstendría de usar el valor Locale.getDefault () demasiado. No hay demasiadas veces en el desarrollo de aplicaciones para el consumidor cuando sería algo en lo que se debería confiar.

Una vez más, no se basa en hechos, ya que no soy un desarrollador de sistemas operativos, sino que se basa principalmente en analizar los pros y los contras del sistema. Creo que la configuración regional en la configuración es completamente razonable.

La documentación de Android aquí http://developer.android.com/guide/topics/resources/localization.html explica que puede obtener la configuración regional actual con este método:

context.getResources().getConfiguration().locale

Parece que Java ya proporciona esta información en la forma de este método:

java.util.Locale.getDefault()

Entonces, ¿por qué los desarrolladores de Android introdujeron otra forma de obtener la configuración regional? ¿Las dos líneas de código anteriores producirán resultados diferentes cuando se ejecuten lado a lado al mismo tiempo?