我看过一些使用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标签是否有任何优点?
答案 0 :(得分:14)
我们刚刚在Android Studio中添加了对此版本0.3的支持: https://android-review.googlesource.com/#/c/67724/
答案 1 :(得分: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>
答案 2 :(得分:1)
现在从源头构建AOSP已经弄脏了,CommonsWare是正确的:构建过程完全不同,实际上很多AOSP应用程序都包含XLIFF标签。它没有与ADT集成,但它确实如此。