Android App多语言内容

时间:2015-07-12 09:51:22

标签: android sqlite multilingual

我喜欢开发具有多语言内容的Android应用程序。内容应该从数据库中动态加载。

哪种方法最好?

  1. 为每种语言设置单独的数据库? (如content_en.db,content_de.db)
  2. 在表格中包含每种语言的字段? (如name_en,name_de,..)
  3. 感谢 彼得

3 个答案:

答案 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资源中,您还有“单独的数据库”,例如valuesvalues-devalues-es等,您可以将数据保存在“strings等”表格中} {,dimenscolors等,每个values-xx都有相同的名称。

答案 2 :(得分:0)

使用单个数据库&amp;基于语言的不同列的表就足够了。