Autore Topic: Data Base multilingua  (Letto 204 volte)

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Data Base multilingua
« il: 07 Giugno 2016, 11:33:10 CEST »
0
Ciao a tutti,

sto realizzando una APP multilingua. Fino a qui tutto ok dato che ho suddiviso i file strings.xml nelle varie lingue. Il problema è che una bella mole di dati viene presa da un DB sqlite e anch'esso deve essere multilingua. Al momento della cerazione del DB ho visto che posso utilizzare il file strings.xml per popolarlo (ad esempio:
Codice: [Seleziona]
db.insertProduct(getString(R.string.prod_name), 400);), quindi al primo avvio se setto EN come lingua il DB mi si popola con le stringhe in inglese. Se in seguito cambio lingua (passo a italiano) il DB mi rimane in inglese oppure cambia automaticamente?
Non so come comportarmi.
Ah tengo a precisare che le operazioni sul DB sono solamente modifiche dei valori di tipo INT e nient'altro. Quindi lettura e modifica (no eliminazione, no aggiunta).

Grazie a chi risponde!!!!

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:Data Base multilingua
« Risposta #1 il: 07 Giugno 2016, 12:54:17 CEST »
0
Nel database ti registra la stringa nella lingua del dispositivo, ma tu puoi aggiungere un campo con l'ID della risorsa ed usarlo per mostrare la stringa nella lingua corretta, sempre che questo non venga modificato nelle successive modifiche (al momento ignoro come android gestisce il file R.).

Ciao,
Marco
Se sbaglio, correggetemi.

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 580
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Data Base multilingua
« Risposta #2 il: 07 Giugno 2016, 12:54:54 CEST »
+1
Se inserisci i dati solo al primo avvio, ovviamente se si cambia lingua i dati del DB restano invariati.

Quello che potresti fare è salvarti da qualche parte (nel DB o nei settings) la lingua che hai usato per popolare il DB; ad ogni riavvio controlli se quella lingua corrisponde a quella di sistema. Se è differente ripopoli il database e salvi la nuova impostazione.

Post unito: 07 Giugno 2016, 12:57:40 CEST
Citazione
ma tu puoi aggiungere un campo con l'ID della risorsa ed usarlo per mostrare la stringa nella lingua corretta

Avevo pensato anche io a questa alternativa, ma se svoa89 salva i dati nel DB è perché probabilmente deve fare delle ricerche o comunque ha bisogno del testo nel DB. Usando la tua soluzione (oltre al problema che indichi) se deve effettuare delle ricerche o filtri verrebbero fatti sui testi del DB, che in caso di cambio lingua non corrispondono a quelli delle risorse.
« Ultima modifica: 07 Giugno 2016, 12:57:40 CEST da Ohmnibus, Reason: Merged DoublePost »
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline svoa89

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Nexus 7
  • Sistema operativo:
    Ubuntu 13.10
Re:Data Base multilingua
« Risposta #3 il: 07 Giugno 2016, 14:16:01 CEST »
0
Ottima idea Ohmnibus!!! Grazie mille.

Domanda, ma posso ripopolare il db sostituendo solamente i valori delle risorse lasciando invariati (senza riscrivere) quelli degli interi?
Mi spiego meglio con un esempio: ho una tabella così strutturata: "nome_prodotto" "prezzo" "quantità".
L'utente usa l'app in italiano e quindi il db si è popolato con: "scarpe" "30€" "4". Supponiamo che modifica la quantità e abbiamo: "scarpe" "30€" "2". In seguito cambia lingua e passa all'inglese. Come faccio a fargli cambiare solamente il campo della parola "scarpe" non anche i due valori dopo?

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 580
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Data Base multilingua
« Risposta #4 il: 07 Giugno 2016, 14:35:15 CEST »
+1
Codice (Java): [Seleziona]
ContentValues values = new ContentValues();
values.put("nome_prodotto", "Shoes"); //"Shoes" è il nuovo valore

String selection = "_id = ?";
String[] selectionArgs = {
  String.valueOf(idRigaDaModificare) //L'ID della riga da modificare
};

int count = db.update(
    "NomeTabella",
    values,
    selection,
    selectionArgs);

//"count" contiene il numero di righe modificate
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.