Android应用多语言内容

3

我想开发一个多语言内容的安卓应用程序,这些内容应该从数据库中动态加载。

哪种方法最好呢?

  1. 为每种语言使用单独的数据库?(例如:content_en.db, content_de.db)
  2. 在一个表格中为每种语言使用不同的字段?(例如:name_en, name_de,...)

谢谢 Peter

2个回答

1
在您的情况下,我建议为每种语言制作单独的表格。
其中一个主要好处是,假设将来有一天您想添加对另一种语言的支持,您可以简单地为其创建一个新表格,而不是编辑唯一的表格并最终搞砸整个事情。
如需更多信息,请参考this问题。

0

在我看来,为每种语言设置单独的数据库更易于维护。这也是使用依赖注入的理想情况。让我解释一下。

假设您想支持英语、德语和西班牙语。您所需要做的就是创建一个通用的数据库结构。对于每种语言,您都可以创建一个实例。让我们看一些概念代码:

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资源中,您还有“单独的数据库”,例如valuesvalues-devalues-es等,您可以在其中保留“表格”中的数据,例如stringsdimenscolors等,这些表格在每个values-xx中都具有相同的名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接