我喜歡開發具有多語言內容的android應用。內容應該從數據庫動態加載。Android應用多語言內容
哪種方法最好?
- 爲每種語言都有單獨的數據庫? (如content_en.db,content_de.db)
- 表中每種語言都有字段? (如name_en,name_de,..)
感謝 彼得
我喜歡開發具有多語言內容的android應用。內容應該從數據庫動態加載。Android應用多語言內容
哪種方法最好?
感謝 彼得
在你的情況我建議讓獨立的表爲每種語言。
你會得到的主要好處之一是,假設在將來的某個時候你想添加對另一種語言的支持,你可以簡單地爲它創建一個新表,而不是編輯唯一的表,並最終搞亂整個事情。
有關更多信息,請參閱this問題。
在我看來,對每種語言都有一個單獨的數據庫比較容易維護。 這也是使用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
中都有相同的名稱。
使用單個數據庫&根據不同的列表語言就足夠了。