我想开发一个多语言内容的安卓应用程序,这些内容应该从数据库中动态加载。
哪种方法最好呢?
- 为每种语言使用单独的数据库?(例如:content_en.db, content_de.db)
- 在一个表格中为每种语言使用不同的字段?(例如:name_en, name_de,...)
谢谢 Peter
我想开发一个多语言内容的安卓应用程序,这些内容应该从数据库中动态加载。
哪种方法最好呢?
谢谢 Peter
在我看来,为每种语言设置单独的数据库更易于维护。这也是使用依赖注入的理想情况。让我解释一下。
假设您想支持英语、德语和西班牙语。您所需要做的就是创建一个通用的数据库结构。对于每种语言,您都可以创建一个实例。让我们看一些概念代码:
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));
}
}
正如您所看到的,唯一的区别在于数据库的名称。
对于依赖注入来说非常好,因为从外部只有Database
对象。
此外,您可以以相同的方式使用每个数据库,例如:
Database db = getDatabase("es");
List<String> cites = db.getCites();
values
,values-de
,values-es
等,您可以在其中保留“表格”中的数据,例如strings
,dimens
,colors
等,这些表格在每个values-xx
中都具有相同的名称。