|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Traduccion datos almacenados en Sqlite
Buenas,estoy pensado en localizar mi app a varios idiomas,ingles y aleman.El tema de botones y menus se como solucionarlo,a traves de archivos strings,el problema reside en que mi aplicacion funciona a base de datos que obtengo de un bd sqlite,y los datos que tengo alli solo estan en español. ¿alguna idea de traducirlos a otro idioma? Tengo la idea de crear una nueva bd enteramente en el otro idioma,y buscar la manera de cargarla si detecta otro idioma diferente,pero no se por donde empezar....
Saludos! |
|
#2
|
||||
|
||||
Lo suyo es localizarlo en las tablas, y no en la BD entera, así si cambias el idioma del móvil no pierdes los datos y empiezas desde 0. Para luego encima volverlo a cambiar y que te aparezcan los datos antiguos. O si los datos son estáticos y no los vas cambiando (¿para qué necesitas una BD SQLite entonces?) no tener duplicados todos los datos que no tienen relación con el idioma.
Si aún así lo quieres hacer con BDs distintas, es fácil, en el SQLiteOpenHelper pasas como nombre el idioma en el que está el móvil: "nombre_de_mi_app_"+Locale.getDefault().getLanguag e()+".db" Para hacerlo a nivel de tablas, en las tablas que están localizadas añades una columna extra llamada idioma, y pones cada cadena de texto en su idioma correspondiente. Ya lo único que tienes que hacer cuando haces el Query es pasar el idioma a su columna: Locale.getDefault().getLanguage() |
#3
|
||||
|
||||
Para que te hagas una idea,uso la bd de sqlite para almacenar monumentos,restaurantes,hoteles,con muchos datos y obviamente si quiero que extranjeros la utilicen tengo que localizarla si o si....por eso la uso vaya jeje
Creo que mas o menos tengo una idea de como hacerla tras leerte,asi se me ocurre: Creo en la bd dos tablas,por ejemplo de monumentos y monumentos,con sus respectivas columnas,cada una en su idioma (español e ingles respectivamente) y añadiendo una extra llamada idioma con el string ES y EN respectivos. Despues en el getcursor del adaptador que tengo para manejar esa tabla deberia de obtener el idioma del movil con el getlanguage y almacenarlo en una variable para hacer: Select * from monumentos where idioma =(variable del getlanguage). mas o menos asi?pero como cambio la tabla segun el idioma?o creo esas columnas en la misma tabla....menudo lio.. Saludos! |
#4
|
||||
|
||||
No tienes que crear una tabla por cada idioma (aunque se podría hacer también así).
Tienes la tabla monumentos y tienes por ejemplo estas columnas: ID, Idioma, Nombre, Descripción En este caso la Primary Key es ID, Idioma, ya que tendrás el mismo ID repetido por cada idioma. Si quieres sacar el ID 3 en el idioma correspondiente, pues será: Select * from monumentos where ID= 3 AND Idioma =(variable del getlanguage). |
#5
|
||||
|
||||
Gracias por la ayuda kriogen,me esta sirviendo de mucho!!
Esto es lo que he usado al final: String idioma=Locale.getDefault().getLanguage(); Cursor c =db.rawQuery(" SELECT * FROM Monumento WHERE hip_idioma ='"+idioma+"'", null); Segun cambio el idioma del sistema me salen los datos perfectamente en cada idioma.Ahora quiero ir un paso mas alla,dar una opcion de elegir el idioma y que se cargue,reiniciando la app en ese idioma.Ideas?Algo asi como una variable global para aplicarla tanto al query como a los values string de la app? Saludos! |
#6
|
||||
|
||||
Gracias por la ayuda kriogen,me esta sirviendo de mucho!!
Esto es lo que he usado al final: String idioma=Locale.getDefault().getLanguage(); Cursor c =db.rawQuery(" SELECT * FROM Monumento WHERE hip_idioma ='"+idioma+"'", null); Segun cambio el idioma del sistema me salen los datos perfectamente en cada idioma.Ahora quiero ir un paso mas alla,dar una opcion de elegir el idioma y que se cargue,reiniciando la app en ese idioma.Ideas?Algo asi como una variable global para aplicarla tanto al query como a los values string de la app? Saludos! ![]() public void CambiarIdioma(View v) { String languageToLoad = "en"; Locale locale = new Locale(languageToLoad); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguratio n(config, null); //Toast.makeText(this, "Idioma cambiado a Ingles", Toast.LENGTH_LONG).show(); super.onRestart(); Intent i = new Intent(MenuPrincipal.this, PantallaSplash.class); //your class startActivity(i); finish(); } |
![]() |
![]() |
||||||
|