android-使用strings.xml在数据库上存储多语言值的最佳方法?

android-使用strings.xml在数据库上存储多语言值的最佳方法?,第1张

概述这是我的第一个问题:)我正在开发一个将动物物种存储数据库中的应用程序.该应用程序必须是多语言的,所以我很难利用使用strings.xml资源文件.这个想法是将物种的英文名称存储在数据库中,例如“cat”,“dog”等.然后基于这样的xml(对于意大利语)向用户显示实际的翻译:<string

这是我的第一个问题:)

我正在开发一个将动物物种存储在数据库中的应用程序.该应用程序必须是多语言的,所以我很难利用使用strings.xml资源文件.

这个想法是将物种的英文名称存储在数据库中,例如“ cat”,“ dog”等.然后基于这样的xml(对于意大利语)向用户显示实际的翻译:

<string name="dog">Cane</string><string name="cat">Gatto</string>

问题是R.string包含名称dog和cat,但它们实际上是int的,因此我正在寻找一种使用“ dog”字符串来比较R.string.dog转换值的方法.

我几乎可以肯定我的设计是完全错误的,但是不知道进行这种工作的正确方法是什么,因为该应用程序现在处于开发的早期阶段.

谢谢

编辑示例

此示例说明了该问题:

数据库数据:

row1:ID =“ 1”,value =“ dog”

row2:ID =“ 2”,值=“ cat”

字符串文件strings.xml:

<string name="dog">Dog</string><string name="cat">Cat</string>

字符串文件strings-it.xml:

<string name="dog">Cane</string><string name="cat">Gatto</string>

我的问题是:用户想用他的母语(例如“藤”)插入一个物种,并且我想在插入之前在数据库中搜索它的存在.

我应该为DB上的每一行(值以英语存储)循环,获取每一行的翻译(例如:我找到了cat,然后翻译为“ Gatto”)并与用户输入进行比较.

有可能这样做吗?

解决方法:

如果您有要使用的字符串名称,则可以使用getIdentifier()获取字符串ID.例如,找到R.string.cat:

Resources res = getResources();int stringID = res.getIDentifIEr("cat", "string", packagename);

在上面的示例中,如果未找到R.string.cat,它将仅返回0.这是查看字符串是否存在的简单测试.

另外,您可以使用以下方法获取R.java中所有字符串ID的数组:

FIEld[] fIElds = R.string.class.getFIElds();int[] IDs = new int[fIElds.length];for(int i=0;i<fIEld.length;i++)    IDs[i] = fIEld[i].getInt(null);

当然,它还会查找您不打算用作翻译的任何字符串,例如对话框/窗口标题,标签/按钮标题等.在一般情况下,我不建议这样做.如果必须这样做,可以在“翻译”字符串前加上一些前缀,这样我就可以很容易地分辨出什么是什么,例如“ entry_cat”.

请注意,我们正在使用反射,如果您有很多字符串,它可能会使您减速.如果要遍历R.java,我建议仅在启动时执行,并将值保存在某种数组/列表中.

总结

以上是内存溢出为你收集整理的android-使用strings.xml在数据库上存储多语言值的最佳方法?全部内容,希望文章能够帮你解决android-使用strings.xml在数据库上存储多语言值的最佳方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1076540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存