コード スタイルとフォーマットを標準化するために、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 タグが 1 行に残されているようです: 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 の2 つの例外は、ここでは適用されません。
私のオプションは次のようです:
- スタイル テンプレートを変更して、先頭または末尾の空白を許可します (テンプレートを AOSP と同一に保つために、これは避けたいと思います)。
- これらの行のテンプレートを 100 文字を超えて拡張するか、
<xliff:g>
タグ内に先行スペースを追加して無視します (テンプレートの下にプロジェクト全体を配置することをお勧めします。そうすれば、誰かが再フォーマットして将来この問題を再び引き起こすことはありません)。 .
何か不足していますか?ここにスペースを導入する別の方法はありますか (特殊文字やエンコードされた文字を使用するなど)?
また、Github の OneBusAway Androidの問題としてこれを追跡しています。スクリーンショットと、興味のある方向けの追加リンクがあります。
更新: Android Template for Eclipseを使用して、これと同じ XML を Eclipse でフォーマットしようとしましたが、この問題は発生しません。つまり、テンプレートの適用後に XML に変更はありません。したがって、これは Android Studio のバグか、IntelliJ テンプレートの問題であると思われます。これが、AOSP ラインが無傷である理由だと思います。
編集: この問題は Android Studio 0.4.4 で修正されましたが、0.8.9 で再発しました。詳細については、 AOSP の問題 65394を参照してください。