Autore Topic: SQLite multilingua  (Letto 319 volte)

Offline astro87

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    motorola moto g
  • Sistema operativo:
    windows 7
SQLite multilingua
« il: 03 Dicembre 2014, 13:50:38 CET »
0
salve a tutti avrei bisogno di un consiglio .ho realizzato la mia app in italiano e va ad interrogare il database interno di Android. ora ho la necessità di renderla multilinguaho trasformato tutte le stringhe ma come funziona con il database, devo creare un database per ogni lingua ed inserirlo nelle apposite cartelle?

iClaude

  • Visitatore
Re:SQLite multilingua
« Risposta #1 il: 04 Dicembre 2014, 10:34:38 CET »
0
No, il database è unico.
Il database dovrebbe contenere dati inseriti dall'utente, quindi già nella lingua corretta.
Se tu hai già inserito come programmatore delle stringhe di default in italiano, alllora devi cambiarle, non c'è altra soluzione.

Offline francodace

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung i5500
  • Sistema operativo:
    frojo 2.2
Re:SQLite multilingua
« Risposta #2 il: 13 Dicembre 2014, 19:12:03 CET »
0
Io sono alle prime armi con Android e sto cercando di risolvere lo stesso problema,
sono giunto a questo:

1) nella cartella assets ho messo 3 database, chiamandoli rispettivamente db_it, db_es e db_en.
2) In ognuno di questi ho provveduto ad inserire i dati nelle rispettive lingue.

La gestione della creazione, apertura, ecc.. avviene nella classe MySQLiteHelper.java e mi succede che:

se dichiaro all'interno di questa classe, una per volta, le stringhe:
Codice: [Seleziona]
static String my_db = "db_it";
oppure
Codice: [Seleziona]
static String my_db = "db_es";
oppure
Codice: [Seleziona]
static String my_db = "db_es";
quindi
Codice: [Seleziona]
public static String DB_PATH = "/data/data/it.myname.myapp/databases/";
e
Codice: [Seleziona]
static String DB_NAME = my_db;
l'app funziona regolarmente ed in base al nome assegnato alla stringa my_db mi legge il db relativo alla lingua che ho nella cartella assets.

se invece cerco di prendere dal file string.xml i rispettivi nomi del db in funzione del linguaggio settato

con il comando
Codice: [Seleziona]
String my_db = getString(R.string.my_str_db);
va in errore e nel logcat ho il valore null del nome db.

se questo stesso comando lo inserisco nella activity main la stringa viene prelevata regolarmente.

Non so se la strada intrapresa è giusta, ma come logica sembrava fattibile.

Potete aiutarmi a risolvere

Grazie a tutti

Offline tonno16

  • Utente storico
  • *****
  • Post: 1187
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:SQLite multilingua
« Risposta #3 il: 14 Dicembre 2014, 00:06:54 CET »
0
In effetti anche io me lo chiedo come si possa fare.
Mi viene in mente di avere più record per la stessa parola. In aggiunta un campo al record con nome lingua. Così nella query aggiungi and lingua=it.


Offline francodace

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung i5500
  • Sistema operativo:
    frojo 2.2
Re:SQLite multilingua
« Risposta #4 il: 14 Dicembre 2014, 00:44:34 CET »
0
Io non capisco perchè nel
Codice: [Seleziona]
MySQLiteHelper.java non mi legge l'istruzione
Codice: [Seleziona]
String dOrtodb = getString(R.string.ddOrtodb); ovvero la legge perchè in fase di compilazione non da nessun errore, ma mi ritorna il valore null, mentre se la stessa istruzione la metto nella
Codice: [Seleziona]
MainActivity.java la legge è mi ritorna la stringa.
Per me questa sarebbe la strada migliore perchè ho gia i 3 file
Codice: [Seleziona]
string.xml string-es.xml e string-en.xmlnei quali ci sono già tutte le traduzioni.