【发布时间】:2013-01-15 17:42:46
【问题描述】:
我正在开发一个具有多语言支持的应用程序(使用 /res/values-** 方式)并取得了成功。然后我想使用 Holo 和下降的旧设备(例如 2.3.*)来使用默认设备(使用 /res/values-v11 方式)。
所以,我最终得到了一个类似于这个的结构(默认情况下,没有语言的结构是 EN):
- /res/values
- /res/values-v11
- /res/values-de
- /res/values-de-v11
- /res/values-es
- /res/values-es-v11
...在每个我都有以下内容:
- strings.xml
- themes.xml
... strings.xml 是定义本地化文本的位置,themes.xml 有:
对于非 v11 目录(旧设备)
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme">
<!-- Any customizations for your app running on pre-3.0 devices here -->
</style>
</resources>
对于-v11 目录(+3.0 设备)
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Holo">
<!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>
</resources>
记得将此属性添加到 AndroidManifest.xml 上的应用程序标签中
android:theme ="@style/MyTheme"
这适用于所有语言和所有设备,包括当前和旧版,以及正确的主题选择和一切。在多种物理设备上进行了测试。
那么,问题来了:
您不认为这是可大量维护的吗?我的意思是,对于每种语言,我们都有 2 个完全相同的 string.xml 文件,但是对于每个新文本,我们必须填写两次,从而增加了拼写错误的风险。如果你有 analytics.xml, styles.xml, ... 里面也会发生同样的情况
在 Android 中使用 strings.xml 的语言处理非常好,是否有任何其他解决方法可以更好地使用这种多主题和多语言?
谢谢。
【问题讨论】:
-
这只是一个注释,但如果重复文件确实应该是相同的,您可以只修改一个,然后用更改后的文件覆盖另一个,避免同时修改两者。
-
你好,能不能发一下这个项目的github链接
标签: android