我喜欢开发具有多语言内容的Android应用程序。内容应该从数据库中动态加载。
哪种方法最好?
感谢 彼得
答案 0 :(得分:1)
在你的情况下,我建议为每种语言制作单独的表格。
您将获得的主要好处之一是,假设将来某个时候您想要添加对另一种语言的支持,您可以简单地为其创建一个新表,而不是编辑唯一的表,最终搞乱整个事情。
有关详细信息,请参阅this问题。
答案 1 :(得分:0)
在我看来,为每种语言建立一个单独的数据库更容易维护。 这也是使用Dependency Injection的理想情况。 让我解释一下原因。
假设您要支持英语,德语和西班牙语语言。 您需要做的就是创建一个通用的数据库结构。 对于您创建实例的每种语言。 让我们看一些概念性代码:
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();
请注意,在Android资源中,您还有“单独的数据库”,例如values
,values-de
,values-es
等,您可以将数据保存在“strings
等”表格中} {,dimens
,colors
等,每个values-xx
都有相同的名称。
答案 2 :(得分:0)
使用单个数据库&amp;基于语言的不同列的表就足够了。