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>

图形布局预览

在上面的示例中,字符串在第一个<xliff>标签之后被截断。人们还希望example使用该属性,从而产生一个图形预览显示:

用蓝牙分享你的 1337 分数!

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

4

3 回答 3

14

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

于 2013-10-10T23:23:06.660 回答
6

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

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

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

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

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

实际上,我发现<xliff:g>源代码中的完整内容相当冗长,因此我调整了 namepsace 声明以允许我这样使用<x:g>

<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>
于 2014-08-19T21:27:37.990 回答
1

现在我开始着手从源代码构建 AOSP,CommonsWare 是正确的:构建过程完全不同,而且确实许多 AOSP 应用程序包含 XLIFF 标签。太糟糕了,它没有与 ADT 集成,但它就是这样。

于 2013-01-05T00:51:37.827 回答