我有一个英文列表微调项目。当用户选择项目时,按确认它会将微调器中selectedItem的值保存为SQLite,作为密码。现在应用程序支持其他语言,spinner中的值基于语言更改,但是当该值等于英文值保存在数据库中时,它必须返回true。
Ex:英语中的微调器列表项:Flag,Hat,Table。
德语中的微调器列表项:Flagge,Hut,Tabelle。
当用户选择Flag时,它会将数据库中的Flag保存为密码。当应用程序再次加载时,用户选择Flag(英文)或Flagge(德语),它必须返回正确的传递。如果我们有多个数据库用于多语言,我们必须更新所有数据库,并在spinner中使用正确的转换值,但它是离线应用程序。有没有解决方案?
答案 0 :(得分:2)
将字符串资源与语言限定符一起使用。
例如
RES / strings.xml中
<strings>
<string name="flag">Flag</string>
<string name="computer">Computer</string>
<string name="table">Table</string>
</strings>
RES /串-de.xml
<strings>
<string name="flag">Flagge</string>
<string name="computer">Computer</string>
<string name="table">Tabelle</string>
</strings>
调用context.getResources().getString("flag")
方法将返回属于用户在系统设置中选择的语言的String。如果您没有为用户的语言提供字符串,则只会使用常规strings.xml
中的字符串。
使用字符串的标识符int(例如,R.string.flag)作为微调器适配器的键,以确保每种语言的数据库键都相同。
答案 1 :(得分:0)
您可以尝试使用标记来管理这种情况
if (Locale.getDefault().getDisplayLanguage().equals("Deutsch")) {
//put flag here
}
之后,看看是什么旗帜语言并采取行动
此外,如果您有其他语言的资源,请将其放入正确的文件夹中,如:
values-de
drawable-de
等
答案 2 :(得分:0)
我不知道这是否是最好的方法,但我是我在其中一个项目中使用的解决方案。
首先,我创建了一个存储数据的表:
CREATE TABLE my_other_table
( id INTEGER PRIMARY KEY AUTOINCREMENT,
potato TEXT);
然后我创建了一个表来存储翻译:
CREATE TABLE translations
(id INTEGER,
language TEXT NOT NULL,
value TEXT NOT NULL,
FOREIGN KEY(id) REFERENCES my_other_table(id));
在我的数据库助手类上,我有一个方法来检索正确的值:
public List<MyObject> getValues() {
List<MyObject> myObjects = new ArrayList<MyObject>();
openDatabase();
Cursor cursor = database.query(DBHelper.TABLE_FOR_MY_OBJECT,arrayWithAllMyColumns, null,null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Challange challange = cursorToChallange(cursor);
Cursor descriptionCursor = database.query(DBHelper.TABLE_TRANSLATIONS, new String[]{DBHelper.COLUMN_VALUE}, DBHelper.COLUMN_LANGUAGE+" = ?",new String[]{Locale.getDefault().toString()}, null, null, null);
myObject.setDescription(descriptionCursor.getString(0));
myObjects.add(myObject);
cursor.moveToNext();
}
cursor.close();
closeDatabase();
return myObjects;
}
上面的代码只是为了有一个想法,如果你需要更多的帮助,只需要问...