0 votos
¡Hola!

He leído el libro, y gracias a Dios y a ustedes estoy terminando de desarrollar mi App.

Pero, tengo ahora un pequeño inconveniente que no tengo la idea de cómo resolverlo. Si Dios quiere la pienso internacionalizar a más de 90 idiomas; y he creado hasta el momento 2 strings con idiomas.

Pero, no quisiera que la App solamente cambie de idiomas al encontrar el que trae por defecto el móvil, sino que quiero hacerlo también mediante un botón; donde la persona, al presionar el idioma elegido; pueda cambiar el idioma de la App desde dentro de esta, sin que esto implique cambiarle el idioma al móvil; y que la App cambie totalmente al idioma seleccionado sin que la persona tenga que salir de la misma, o que tenga que hacer cosas adicionales.

En fin, quiero saber como puedo buscar el recurso de la carpeta del idioma que desee, y colocárselo al adaptador que le ponga al arreglo que cree con la lista de idiomas.

Creo que se entiende bien claro, y espero que me puedan ayudar a hacerlo, ya que he visto en algunas aplicaciones que se puede.

¡Saludos!
por en Android
editado por

1 Respuesta

0 votos

Me alegro que te haya sido útil y ¡Enhorabuena por terminar la App! :D

Puedes hacer lo que necesitas con la clase Locale (http://developer.android.com/intl/es/reference/java/util/Locale.html). Un ejemplo, para cambiar el idioma al Español:

Locale localizacion = new Locale("es", "ES");

Locale.setDefault(localizacion);
Configuration config = new Configuration();
config.locale = localizacion;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

 

por
¡Hola!

Gracias, lo probaré.

Por cierto, en esta web pongo espacios en los párrafos, pero aún así veo todo junto.

¡Saludos!
Gracias por el feedback :)

He comprobado los espacios entre palabras delos párrafos y de momento funcionan correctamente; y veo tus comentarios bien. Prueba a refrescar la web con el navegador (Ctrl+F5) o a cambiar de navegador.

¡Hola!

Con relación a lo de esta publicación; te digo que estaba en mi móvil, y ahora estoy en un PC de un Ciber, y se sigue viendo igual. Te dejo la captura de pantalla:

Con relación al tema del "botón", te digo que mas bien es un Item del menú, al que le he colocado un listView, para que controlar la lista de idiomas. Pero, aún así no funciona.

En primer lugar me dio error, y no se porqué, porque estoy usando ese mismo Array en otro sitio. Te dejo la captura:

Y mira que lo tengo en otro sitio y sí me funciona. Te dejo la captura de pantalla:

Y al final usé la corrección que ellos colocan en el Android Studio y como quiera no me funciona, sino que hace que la App se salga cuando le doy clic al item. Te dejo la captura de pantalla:

Ahora terminando de escribir, me acordé que posiblemente tenga que llamar al listView desde el Item, porque creo que así me funcionaría. Solo coloqué un listView en el XML que llama la clase que está asociada al Item, y creo que ahí está el error.

En cualquier caso agradecería una sugerencia de como hacerlo, y que sea fácil. Gracias de antemano y que Dios te bendiga.

¡Saludos!

Cuando te pasen errores en tiempo de desarrollo, la mejor pista es o poner el cursor encima o directamente mirar en la consola de error al compilar (en Android Studio salta solo al compilar, en Eclipse hay que ir a la consola de Error, en ambos te indican el porqué del error de compilación).

Prueba a refrescar la actividad después de realizar el cambio de idioma con el típico:

Intent refrescar = new Intent(this, MiActivity.class); 
startActivity(refrescar); 
finish();

Para "Locale" es preferible el uso de las constantes que trae como:

new Locale (Locale.ENGLISH)

Solo que algunos idiomas no están (como el Español que hay que hacerlo como lo has hecho).

Para reducir código sugiero sacar el código repetido del case y ponerlo detrás de este, dentro del case solo el "new Locale()".

Sobre el formato del post, lo veo igual que la imagen que has adjuntado, al editar deja cambiar correctamente los párrafos, puede que estuvieras en modo "Fuente HTML" que quita los espacios de más y los retornos de carro (Intro).

Gracias por las bendiciones, que Dios te bendiga también y muchos ánimos con la programación :)

¡Hola de nuevo!

Ya resolví el asunto; se trataba de que estaba poniendo el nombre del ListView en vez de el del String, si te fijas te podrás dar cuenta también; y procuré cambiarle el nombre para que no fuesen tan parecidos y así evitar errores futuros. Incluso estaba pensando ponerte una captura del Logcat, pero gracias a Dios no fue necesario.

Con relación a la llamada de la clase estaba todo bien, solo fue en algo que pensé mientras escribía.

Con relación a lo que dices del cursor; procuro a veces usar las sugerencias que ellos ponen. Pero, ahora tengo otro asunto en el mismo tema; y es que ahora me cambia todo al tocarlo, con la excepción de la actividad principal y los items del menú; y solo al salir y entrar de la App es que se actualizan estos.

Aproveché y le agregué un "Toast" a cada uno :). Estuve probando varios metodos que vi, a ver si alguno me funcionaba y nada.

Me gustaría alguno que haga que al pulsar la lista, haga como que la actividad principal y los Items se refresquen o algo así.

Tomaré tu sugerencia del ahorro de códigos y la probaré si Dios quiere esta noche.

Muchas gracias por todo, y más bendiciones de parte del Altísimo.

¡Saludos!

¡Hola!

Gracias por lo del “Intent”, ya que eso me resolvió el problema del cambio de Idiomas.

Le quité el “Toast”, ya que las personas podrían ver directamente el cambio del idioma sin ser notificados.

Tuve un pequeño inconveniente que lo resolví volviéndole a dar una ojeada al libro, y gracias a Dios encontré una buena solución al mismo; y se trataba de que al ir cambiando de idiomas sin salir de la App, se me estaban apilando las actividades, por lo que usé un fragmento de código que vi que usaste en el libro para corregir ese asunto; y ya gracias a Dios todo funciona bien con relación a ese tema.

Pero, con relación a la sugerencia de “Locale”, te cuento que no me funcionó como me dijiste; te dejaré una captura para que veas que me da error y que tampoco funciona la sugerencia/ayuda que ellos ofrecen; y de paso también verás lo del código que le puse al Intent:

Luego usé el modo “normal” con el mismo código acortado, y no me daba errores al compilar, pero no me hace los cambios en la App. Te dejo una captura:

Luego usé el mismo código acortado (a menos que lo esté poniendo mal) que me dijiste, dentro de “New Locale” pero con el resto del código de abajo, y me daba error como cuando está solo. Te dejo la captura de pantalla:

Bueno, eso es lo único que me falta para resolver el asunto de ahorrar código. Espero que me sigas dando soporte hasta acabarlo, y en verdad no tengo como agradecerte por el momento; pero eso cambiará si Dios lo permite.

¡Saludos!

Me alegro que se solucionara :)

Y cualquier cosa que te podamos ayudar, te ayudaremos encantados.
¡Hola! Gracias, pero aún me falta el asunto de acortar el código; que no logro como hacerlo. ¡Saludos!
Muy bien por minimizar el código. En este caso no te preocupes por ello, será debido a la versión de la biblioteca Android que estás utilizando (hay veces que no merece la pena ni preocuparse por las versiones, aunque siempre recomiendo utilizar la más nueva, en este caso es tan escasa la mejora que es uno de esos casos). Poner ("en", "EN") es lo mismo que poner (Locale.ENGLISH).
Ok. Muchas gracias por todo de todas formas, ya casi subo la App al Play Store, por lo que también te estaré contactando para el asunto del diploma que leí en el libro que ustedes entregan; me servirá bastante para lo del curriculum y más allá. Saludos