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

Respuesta
 
Herramientas
  #1  
Viejo 02/04/14, 10:27:33
Array

[xs_avatar]
Napster87 Napster87 no está en línea
Miembro del foro
 
Fecha de registro: may 2013
Mensajes: 74
Tu operador: Movistar

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!
Responder Con Cita


  #2  
Viejo 02/04/14, 10:43:59
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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()
Responder Con Cita
  #3  
Viejo 03/04/14, 09:21:10
Array

[xs_avatar]
Napster87 Napster87 no está en línea
Miembro del foro
 
Fecha de registro: may 2013
Mensajes: 74
Tu operador: Movistar

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!
Responder Con Cita
  #4  
Viejo 03/04/14, 10:15:16
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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).
Responder Con Cita
  #5  
Viejo 07/04/14, 10:03:51
Array

[xs_avatar]
Napster87 Napster87 no está en línea
Miembro del foro
 
Fecha de registro: may 2013
Mensajes: 74
Tu operador: Movistar

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!
Responder Con Cita
  #6  
Viejo 07/04/14, 11:45:13
Array

[xs_avatar]
Napster87 Napster87 no está en línea
Miembro del foro
 
Fecha de registro: may 2013
Mensajes: 74
Tu operador: Movistar

 Cita: Originalmente Escrito por Napster87 Ver Mensaje
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!
Me respondo a mi mismo:

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();
}
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 16:23:14 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /