我使用 Android Studio 将IntelliJ Android 代码样式模板应用于开源项目OneBusAway Android,以标准化代码样式和格式。
问题是应用模板会将<xliff:g>
标签推入strings.xml
新行并从前一行中去除尾随空格。这有效地防止在复数之前引入任何间距。
在应用样式模板之前:
<plurals name="stop_info_no_additional_data_hours_minutes">
<item quantity="one">No additional arrivals in the next 1 hour and %1$d minutes.</item>
<item quantity="other">No additional arrivals in the next <xliff:g id="count">%2$d</xliff:g> hours and %1$d minutes.</item>
</plurals>
..它创建了正确的字符串:
No additional arrivals in the next 2 hours and 35 minutes.
应用模板后,它会切断复数值之前的空格:
<plurals name="stop_info_no_additional_data_hours_minutes">
<item quantity="one">No additional arrivals in the next 1 hour and %1$d minutes.</item>
<item quantity="other">No additional arrivals in the next
<xliff:g id="count">%2$d</xliff:g>
hours and %1$d minutes.
</item>
</plurals>
...导致字符串:
No additional arrivals in the next2 hours and 35 minutes.
我查看了 Android 开源项目以了解他们如何处理此问题,并且似乎 XML 标记保留在一行中: https ://github.com/android/platform_packages_apps_mms/blob/master/res/values/strings .xml#L690 https://github.com/android/platform_packages_apps_contacts/blob/master/res/values/strings.xml#L568
AOSP对行数限制的两个例外不适用于此处。
我的选择似乎是:
- 更改样式模板以允许前导或尾随空格(我希望避免这种情况以保持模板与 AOSP 相同)
- 通过将这些行扩展超过 100 个字符或在
<xliff:g>
标签内添加前导空格来忽略这些行的模板(我希望将整个项目放在模板下,这样以后就不会有人重新格式化并再次触发此问题) .
我错过了什么吗?是否有另一种方法在这里引入空格(例如,使用特殊/编码字符)?
我也在 Github 上将其作为OneBusAway Android的一个问题进行跟踪,如果有人感兴趣,它会提供屏幕截图和其他链接。
更新:我尝试在 Eclipse 中使用Android Template for Eclipse格式化相同的 XML ,但不会导致此问题。换句话说,应用模板后 XML 没有任何变化。因此,这似乎是 Android Studio 的错误或 IntelliJ 模板的问题。我假设这就是 AOSP 线路完好无损的原因。
编辑:此问题已在 Android Studio 0.4.4 中修复,但在 0.8.9 中重新出现。有关详细信息,请参阅AOSP 问题 65394。