【问题标题】:Improving Android string resources with XLIFF使用 XLIFF 改进 Android 字符串资源
【发布时间】:2012-07-04 15:18:15
【问题描述】:

我见过一些使用 XLIFF 标签包装变量的 Google 应用程序和代码示例。我看到这样做有一些很大的优势,尤其是在替换非描述性格式参数时,例如%1$s

不幸的是,XLIFF 似乎没有很好地集成到 ADT 中。以下面的字符串资源为例:

<resources 
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" 
    xmlns:tools="http://schemas.android.com/tools">

    <string name="share_with_application">
        Share your score of <xliff:g id="score" example="1337">%1$s</xliff:g>
        with <xliff:g id="application_name" example="Bluetooth">%2$s</xliff:g>!  
    </string>

</resources>

在上面的示例中,字符串在第一个&lt;xliff&gt; 标记之后被截断。人们还期望使用 example 属性,从而产生图形预览显示:

通过蓝牙分享您的 1337 分数!

目前在我的字符串资源中使用 XLIFF 标签有什么好处吗?

【问题讨论】:

  • “我见过一些使用 XLIFF 标签包装变量的 Google 应用程序和代码示例”——如果您有一些使用 XLIFF 的 Android 项目示例(不包括 AOSP 应用程序),请指出它。 AOSP 应用程序有自己的构建过程,可能会集成 XLIFF。 Android SDK 不支持使用 XLIFF。
  • 感谢您的洞察力。 SDK 目录中的strings.xml 示例似乎只有 XLIFF 命名空间声明,实际上并没有使用标签。您能否更深入地了解这些自定义构建过程?它们是 Jenkins 插件吗?
  • “您能否更深入地了解这些自定义构建过程?” -- 这些应用程序是作为完整固件构建的一部分构建的(例如,lunch),但我从未完成过完整的固件构建,更不用说剖析它所做的所有细节了。 “他们是 Jenkins 插件吗?” ——我非常怀疑;至少,您不需要 Jenkins 来构建固件。
  • @CommonsWare 刚刚发现这个标签正在查看一些来源。我在the docs 中找到了一个部分,它建议使用它将string 的某些部分标记为不可翻译。那么现在使用安全吗? ADT 仍然无法识别它,但在实际设备上进行测试似乎没问题。
  • @Turbo:好吧,如果不出意外,&lt;xliff:g&gt; 应该是安全的。除此之外的任何东西是否有效,我不能说。

标签: android adt xliff


【解决方案1】:

我们刚刚在 Android Studio 0.3 版本中添加了对此的支持: https://android-review.googlesource.com/#/c/67724/

【讨论】:

【解决方案2】:

为了清楚起见,在 Android 字符串资源中使用 XLIFF 标签的完整文档记录在

https://developer.android.com/distribute/tools/localization-checklist.html#manage-strings

这样的字符串即使在 Eclipse 构建中也能正常工作(支持在构建应用程序的 aapt 工具中)。

但是,如问题所示,ADT 中包含的图形布局工具不考虑 xliff 标签,只是在第一个此类标记的子字符串之后截断字符串。

Android Studio 中的图形工具可以很好地处理此类字符串,了解并使用 xliff 标记。

我实际上发现完整的&lt;xliff:g&gt; 在我的源代码中相当冗长,所以我调整了namepsace 声明以允许我只使用&lt;x:g&gt; 因此:

<resources xmlns:x="urn:oasis:names:tc:xliff:document:1.2">

   <string name="greeting">Hello <x:g id="name">%1$s</x:g>!</string>

</resources>

【讨论】:

    【解决方案3】:

    现在我已经开始着手从源代码构建 AOSP,CommonsWare 是正确的:构建过程完全不同,实际上许多 AOSP 应用程序都包含 XLIFF 标签。可惜这没有和 ADT 集成,但它就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      相关资源
      最近更新 更多