puede - Agregar/Eliminar las entradas de idioma en la "Configuración"-> "Seleccionar configuración regional" del teléfono Android
se puede cambiar el idioma a android studio (6)
Mi pregunta:
¿Cómo puedo agregar o eliminar las entradas de idioma en "Configuración" -> "Configuración de idioma y teclado" -> "Seleccionar configuración regional" (o "Seleccionar idioma") en el teléfono Android desde el nivel del código fuente ?
Proporcionaré más detalles sobre lo que quiero y lo que he hecho. Disculpe si presento algún tipo de comprensión o información tonta. Soy bastante nuevo en el desarrollo de Android, comencé a aprenderlo hace varios días. Todavía hay mucho que no sé.
Más información sobre lo que quiero:
Recientemente estoy trabajando en una tarea para localizar todo el producto del teléfono con nuevos idiomas (es decir, no estoy trabajando en una aplicación específica . Es por eso que necesito agregar una nueva configuración regional). Cuando obtuve el teléfono de desarrollo, descubrí que solo hay varias entradas de idioma disponibles en "Seleccionar configuración regional", como "inglés", "francés" y "España". Primero que nada, necesito agregar y mostrar algunas entradas de nuevos idiomas a esta lista, como "Japonés", "Chino", "Coreano".
Tengo todo el código fuente de la plataforma Android y mi propio código, por lo que creo que esta tarea puede realizarse modificando el código fuente o los archivos de recursos en algún lugar . Lamentablemente, no sé dónde están el código y los archivos.
El tutorial " Hola, L10N " muestra una manera de agregar una nueva configuración regional desde "Configuración regional personalizada" en tiempo de ejecución. Pero lo que quiero es agregar las nuevas configuraciones regionales en el momento de la compilación para que cuando se inicie el teléfono, las nuevas configuraciones regionales se muestren directamente en "Seleccionar configuración regional" sin ninguna otra acción.
Que he hecho:
Investigué mucho en internet antes de venir aquí. Esto es lo que encontré:
Sinkiru in Stackoverflow hizo una pregunta sobre lo que estoy buscando exactamente. Véalo here . Sin embargo, nadie más le respondió. Su propia respuesta solo dice dónde consultar la configuración de idioma ACTUAL, que no es lo que quiero. Yo personalmente le envié un correo electrónico para esta pregunta, pero no recibí su respuesta.
Busqué mucho en Stackoverflow, con las palabras clave "locale android", "lenguaje android", "locale new android" y algo similar. La mayoría de las preguntas en este sitio preguntan cómo cambiar la configuración regional de una aplicación, cómo agregar soporte en varios idiomas para una aplicación, etc. NO son lo que quiero.
Busqué mucho en el grupo de Google de la plataforma Android ( http://groups.google.com/group/android-platform ). Algunas personas hacen mi pregunta, pero después de leer los mensajes todavía no recibo mi respuesta ... :-( Aquí hay una lista de las publicaciones que leo en el grupo (y no obtengo lo que quiero de ellas) :
" Localización de SO " - Hablaré más abajo.
" Cómo agregar una nueva configuración regional y su fuente asociada en la fuente de Android "
Regrese a la entrada "(a)" listada arriba. En el hilo de mensajes de "localización de SO", Dianne Hackborn, una ingeniera de marco de Android, dijo lo siguiente:
"La aplicación de configuración solo muestra todas las configuraciones regionales que están disponibles en los recursos de la plataforma. Agregar cadenas para una nueva configuración regional debe tener las que se muestran en la configuración . Le indica al sistema de compilación qué recursos de configuración regional debe incluir cuando realice la compilación . . Desafortunadamente no puedo ayudarte en esa parte, pero tal vez alguien más pueda ".
Sus palabras en negrita sugieren que mi tarea podría realizarse automáticamente agregando un nuevo recurso de configuración regional al código fuente y configurando o cambiando algo en el sistema de compilación. Me pregunto si alguien aquí alguna vez ha hecho algo similar antes. Voy a intentarlo mañana.
Por último, busqué en el sitio oficial para desarrolladores de Android. En la sección "Ejecutar y probar la aplicación localizada" del tutorial " Hola, L10N ", se dice algo sobre las configuraciones regionales disponibles en la aplicación "Configuración", pero básicamente se trata de qué hacer en el emulador y esto no debería ser. lo que necesito. Quiero que se haga en un teléfono real.
También había buceado en el código fuente de la plataforma Android tratando de descubrir algo. Comencé en $ (ANDR_SRC_ROOT) / Packages / app / Settings / src /.../ LocalePicker.java. En el método LocalePicker :: onCreate (), noté esta línea de código:
String [] locales = getAssets (). GetLocales ();
El código debajo de esta línea trata de establecer todos los nombres de la configuración regional obtenidos en un ArrayAdapter y luego establecer el adaptador en la vista de lista para que se muestre. Por lo tanto, creo que el método "getLocales ()" es la clave de la solución.
Luego busqué en el código getLocales (). getLocales () es un método miembro de AssetManager y se declara como nativo, por lo que entré en el $ (ANDR_SRC_ROOT) /frameworks/base/libs/utils/AssetManager.cpp, que GUESS debería ser la implementación real de java getLocales () método. C ++ AssetManager :: getLocales () finalmente me lleva al método C ++ ResTable :: getConfigurations () en el que se escanea una variable miembro " mPackageGroups " para recuperar todos los elementos ResTable_config disponibles. Por lo tanto, creo que todas las configuraciones regionales disponibles deberían agregarse a este mPackageGroups durante el inicio del sistema. Sin embargo, perdí el código por fin y no pude encontrar dónde se agregaron las configuraciones regionales a los mPackageGroups.
Creo que tienes que editar el
PRODUCT_LOCALES
Presente en build / target / product / languages_full.mk, y agregue y elimine las cadenas asignadas a esto.
Puede definir su cadena personalizada como zz_zz y agregar la carpeta values_zz_zz en cada una de sus carpetas de resolución.
No he probado esto, pero esto podría funcionar.
Nota: PRODUCT_LOCALES puede anularse en otro lugar dependiendo de su sistema de compilación
Creo que una aplicación normal no debería agregar ubicaciones al teléfono. Hay paquetes especiales como MoreLocale 2 para ese propósito. Si agregaría una configuración regional, sería responsable no solo de proporcionar localización para su propia aplicación, sino de todo el sistema.
Para crear o agregar múltiples idiomas a su aplicación, primero debe definir todos los valores de cadena en string.xml en la carpeta de valores en lugar de codificarlos en su programa. Entonces también debe tener diferentes carpetas de valores para diferentes idiomas, por ejemplo, Value-es para español y Value-fr para francés. Esto debería hacer el trabajo. No creo que la aplicación pueda cambiar la configuración regional de forma predeterminada.
Para eliminar idiomas, si eliminamos la cadena de localización de PRODUCT_LOCALES, funcionará.
También estoy buscando una forma de agregar nuevos idiomas, pero simplemente agregar esto no ayuda. Creo que debemos actualizar algunos archivos o bibliotecas de bajo nivel para agregar nuevos idiomas.
en los teléfonos HTC también debe modificar /system/customize/CID/default.xml ... Ese es el archivo que usan para especificar las configuraciones regionales en sus roms de stock. Si la rom es una WWE, supuestamente la edición de CID es todo lo que hay que hacer, pero esto no siempre es cierto.
tienes que crear la carpeta "valores" en la carpeta "res" del paquete framework-res de android. El nombre de esa nueva carpeta debe contener el código de país de su necesidad, es decir. values-pl-rPL (se requiere la parte rPL ) para el idioma polaco (para inglés británico: en-rGB , etc.), eso debería ser suficiente, si no, crear el archivo strings.xml en esa carpeta, y agregar recursos vacíos "nodo.