DB Android con alcuni dati multi-lingua

0

Ho un database SQLite nella mia app per Android con una tabella "Domanda", tra gli altri. Quella tabella contiene dati "predefiniti" o "precaricati" (in questo caso le domande poste dall'app).

Alcune delle sue colonne sono dati "tecnici" o "interni" da utilizzare dietro le quinte - come il numero di punti che vale la domanda, il tipo di utente che può rispondere, ecc. - mentre altri sono dati testuali che vengono presentati all'utente (es. Titolo, Descrizione, ecc.).

Ora, ho intenzione di lasciare che la mia app sia di tipo internazionalizzabile (traducibile), quindi penso che:

  • Invece di seguire quelli che sembrano essere gli "approcci standard" per la progettazione di DB multilingue, creando diverse colonne per gli attributi traducibili (es. name_en, name_es, ...) o una tabella separata in cui ogni riga rappresenta una traduzione dell'oggetto di base ;

  • ... Potrei semplicemente mantenere i valori per quegli attributi traducibili nella mia risorsa R.Strings e avere la mia classe DatabaseHelper recuperare il testo da lì, costruendo il nome della risorsa basato, ad esempio, nell'ID della domanda (ad esempio q1_name, q2_name, q1_description, ...). In questo modo avrei potuto avere diverse stringhe di R. e l'aiutante di DB avrebbe letto da quello giusto.

Sono un po 'incerto su questo approccio e sono curioso di sapere se questa è una cattiva pratica e / o mi manca qualsiasi potenziale inconveniente.

    
posta user1987392 12.05.2014 - 13:36
fonte

1 risposta

0

Non so molto sugli standard di Android, ma sono certo che la creazione di colonne diverse per gli attributi traducibili è una soluzione decisamente pessima. Dovresti modificare la tabella ogni volta che aggiungi una nuova lingua e se la tua applicazione viene tradotta in molte lingue, dovrai gestirla.

Le altre due soluzioni sono accettabili per me, ma sceglierei l'opzione database se si intende creare un'interfaccia "admin" in cui le persone potrebbero ad esempio aggiungere domande e soluzioni ...

    
risposta data 12.05.2014 - 14:29
fonte

Leggi altre domande sui tag