【问题标题】:Multilanguage and multitheme at same time多语言多主题同时进行
【发布时间】: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


【解决方案1】:

我不知道你为什么需要类似的东西

values-de-v11

我会使用这样的东西:

values
values-de
values-fr
values-es
values-cat
...

并将翻译内容放入每个 strings.xml 文件中。 另一方面,您也可以添加文件夹:

values
values-v11

你可以在里面添加你的主题。

文件夹值应包含默认语言(通常为英语)的 strings.xml 和不带全息设备的备用主题文件。

您可以检查文档中的所有可能性:

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

【讨论】:

  • 然后,values 文件夹包含默认语言的 strings.xml AND themes.xml i> 带有旧设备的后备主题,values-v11 ONLY 包含带有 Holo 主题的 themes.xml,对吗?跨度>
  • @Xavi 是的,就是这样。其他资源(hdpi、xhdpi...)也是如此。 values 文件夹应该包含您应用的所有默认资源,并且您应该始终至少提供每种资源的默认版本(即默认语言、默认屏幕分辨率等)。
  • 非常感谢。今晚我将进行更改并提供反馈:-)
  • 我做了更改,测试并且一切正常。我必须说这也适用于 analytics.xmlstyles.xml ,所以 values 文件夹包含 ALL默认 XML 文件,您可以单独创建一个 values-[modifier] 与所有应该覆盖默认值的文件,例如用于本地化、主题化或其他的字符串。非常感谢@Esparver! :D
  • 您不能这样做,因为在您提到的链接中已经说过“当附加多个限定符时,您必须按照它们在表 2 中列出的顺序放置它们。如果限定符排序错误,资源被忽略。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多