1

コード スタイルとフォーマットを標準化するために、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 つの例外は、ここでは適用されません。

私のオプションは次のようです:

  1. スタイル テンプレートを変更して、先頭または末尾の空白を許可します (テンプレートを AOSP と同一に保つために、これは避けたいと思います)。
  2. これらの行のテンプレートを 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を参照してください。

4

1 に答える 1

3

これは IntelliJ/Studio のバグであり、Android Studio 0.4.4 で修正される予定です: https://code.google.com/p/android/issues/detail?id=65394

(その問題を提出してくれてありがとう!)

于 2014-01-31T22:58:14.607 に答える