2012-07-04 9 views
15

XLIFFタグを使用して変数をラップするいくつかのGoogleアプリケーションとコードサンプルを見てきました。特に、%1$sのような記述的ではない形式の引数を置き換える場合、これを行う際に大きな利点がいくつか見られます。XLIFFでAndroid文字列リソースを改善する

残念ながら、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> 

Graphical Layout preview

を上記の例では、文字列が最初<xliff>タグの後に切り捨てられます。また、example属性が使用され、グラフィカルプレビューが表示されます。

ブルートゥースで1337のスコアを共有しよう!

現在、文字列リソースにXLIFFタグを使用するメリットはありますか?

+0

「私はいくつかのGoogleアプリとコードを見てきましたXLIFFタグを使ってサンプルを変数にラップする」 - XLIFFを使用するAOSPアプリケーションを数えずに、いくつかのAndroidプロジェクトの例がある場合は、それを教えてください。 AOSPアプリケーションには、XLIFFを統合する独自のビルドプロセスがあります。 XLIFFの使用は、Android SDKによってサポートされているとは文書化されていません。 – CommonsWare

+0

洞察に感謝します。 SDKディレクトリの 'strings.xml'サンプルは、XLIFF名前空間宣言のみを持ち、実際にはタグを使用していないようです。これらのカスタムビルドプロセスについてもう少し詳しく知ることができますか?彼らはJenkinsのプラグインですか? –

+0

"これらのカスタムビルドプロセスについてさらに理解を深めることができますか?" - これらのアプリは完全なファームウェアビルドの一部として構築されています(たとえば、「ランチ」など)が、ファームウェアの完全なビルドは行っていません。 "彼らはJenkinsのプラグインですか?" - 私はそれを非常に疑う。ファームウェアを構築するのにJenkinsは必要ありません。 – CommonsWare

答えて

14
+0

これもEclipse用に計画されていますか?また、 'xliff'タグの目的が翻訳不可能なテキストをマークすることであることを確認できますか、それとも他の目的がありますか? –

+3

Androidドキュメントごとに、xliff:gタグは翻訳不可能なテキストをマークするためのものです。https://developer.android.com/distribute/googleplay/publish/localizing.html#strings – ZoFreX

+1

@ZoFreXに記載されている上記のURLは移動済み:https://developer.android.com/guide/topics/resources/localization.html#checklist –

1

ソースからAOSPをビルドすることで、手を汚してしまったCommonsWareは正しいです。ビルドプロセスはまったく異なり、実際には多くのAOSPアプリケーションにXLIFFタグが含まれています。これはADTと統合されていないのは残念ですが、そのままです。私達はちょうどバージョン0.3のために、Androidのメーカーで、このためのサポートを追加しました

6

をただ明確にするために、Androidの文字列リソースでXLIFFタグの使用は、完全に

https://developer.android.com/distribute/tools/localization-checklist.html#manage-strings

で文書化されています

このような文字列は、Eclipseビルドでも正常に動作します(サポートは、アプリケーションを構築するaaptツールにあります)。

しかし、ADTに含まれているグラフィカルレイアウトツールはxliffタグに余裕を持たず、マークアップされた最初のサブストリングの後に単に文字列を切り捨てるだけです。

Android Studioのグ​​ラフィカルツールは、このような文字列にうまく対処し、xliffマークアップについて知り、それを利用します。

私は実際にフル<xliff:g>は私のソースコードではなく冗長ですので、私は私がこれだけ<x:g>を使用できるようにnamepsace宣言を調整することを見つける:

<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>