2015-07-12 47 views
3

我喜歡開發具有多語言內容的android應用。內容應該從數據庫動態加載。Android應用多語言內容

哪種方法最好?

  1. 爲每種語言都有單獨的數據庫? (如content_en.db,content_de.db)
  2. 表中每種語言都有字段? (如name_en,name_de,..)

感謝 彼得

回答

1

在你的情況我建議讓獨立的表爲每種語言。

你會得到的主要好處之一是,假設在將來的某個時候你想添加對另一種語言的支持,你可以簡單地爲它創建一個新表,而不是編輯唯一的表,並最終搞亂整個事情。

有關更多信息,請參閱this問題。

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-de,在那裏你將數據保存在「表」 values-es等。如strings,dimens,colors等,它們在每個values-xx中都有相同的名稱。

0

使用單個數據庫&根據不同的列表語言就足夠了。