【发布时间】: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>
在上面的示例中,字符串在第一个<xliff> 标记之后被截断。人们还期望使用 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:好吧,如果不出意外,
<xliff:g>应该是安全的。除此之外的任何东西是否有效,我不能说。