如何为多种语言(例如字符串值)创建android SQLite数据库

Fat*_*sny 0 sqlite android

Android是否可以为英语和其他语言创建SQLite数据库文件,并且其行为类似于字符串值?我要做的就是处理一个代码,然后Android根据设备语言选择合适的数据库。

Shl*_*blu 5

您可以使用values本地化的资源目录来执行此操作:

/res
|
----/values
|   |
|   ---- strings.xml  <-- contains your default language values (english for example)
|
----/values-de
|   |
|   ---- strings.xml  <-- contains your german languages values
|
----/values-fr
|   |
|   ---- strings.xml  <-- contains your french languages values
|
(etc)
Run Code Online (Sandbox Code Playgroud)

在每个这些本地化文件中,定义数据访问代码的特定于语言的参数。在此示例中,这是数据库的文件名:

依此类推,您的应用可以处理每种语言。

然后,由于使用,数据库文件选择对于您的代码变得透明Context.getString(int resId)。此方法自动选择String与用户设备相对应的资源Locale。如果没有本地化的String匹配getString()选择默认值:

private static class DatabaseHelper extends SQLiteOpenHelper  {

    ...

    private DatabaseHelper(Context ctx) {
        super(ctx, ctx.getString(R.string.db_name), null, dbVersion); 
        // R.string.db_name corresponds to the localized String 
        // resource "db_name", based on the users's device Locale.
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        ... 
    } 

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        ...
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

在此示例中,根据语言打开了一个不同的数据库。但是以同样的方式,您可以决定访问唯一数据库的差异表,或从数据库的各个表中选择差异字段。