Having a separate database for each language is easier to maintain in my opinion.
It's also ideal case to use Dependency Injection.
Let me explain why.
Suppose you want to support English, German and Spanish languages.
All you need to do is create one common database structure.
For every language you create instance.
Let's look at some conceptual code:
public Database getDatabase(final String lang) {
switch (lang.toLowerCase()) {
case "en":
return openDatabase("content_en.db");
case "de":
return openDatabase("content_de.db");
case "es":
return openDatabase("content_es.db");
default:
throw new RuntimeException(String.format("Language \"%s\" is not suported.", lang));
}
}
As you can see, only difference is in name of the database.
For Dependency Injection it's great because from outside you have only Database
object.
Further you use every database in the same way, for example:
Database db = getDatabase("es");
List<String> cites = db.getCites();
Notice that in Android resources you also have "separate databases" such as values
, values-de
, values-es
etc. where you keep data in "tables" such as strings
, dimens
, colors
etc. which have the same names in every values-xx
.