Cocoa / iPhone:ibtoolがローカライズできない文字列をxibファイルに出力しないようにするにはどうすればよいですか?
-
03-07-2019 - |
質問
iPhoneアプリケーションの国際化に取り組んでおり、ibtoolを使用してxibファイルから文字列を抽出し、ローカライズ会社が次のように翻訳できるようにします。
ibtool --generate-strings-file BlahBlahView.strings English.lproj/BlahBlahView.xib
これに関する問題は、i18nで実際に気にするサブセットが本当に必要なときに、最終的に.stringsファイルにxibに含まれる文字列が all 含まれることです。これに対処するためのベストプラクティスはありますか?理想的には、インターフェイスビルダーに何らかの注釈を追加して、「これはローカライズ可能です」と言ってほしい。または「これはローカライズできません」 ibtoolを実行すると、ローカライズ可能な文字列のみが出力されます。
ありがとう!
編集:OK、パラメーターを少し拡張します。ソリューションはibtoolのみを使用する必要はありません。 Ibtool + xibの一部のデータ+シェルスクリプトは問題ありません。動作する限り!
解決
Ibtoolは、文字列ファイルの出力が非常に詳細であり、一意のソース文字列ではなく、object-idによって攪拌を生成します。 このタイプの出力は、インターフェイスビルダーを再作成する場合、またはxibファイル内のオブジェクトを広範囲に制御する必要がある場合に非常に役立ちますが、ソフトウェアを単にローカライズする場合にはそれほど役立ちません。
Digitalwaters.netのMatteoは、ibtoolからの出力を、その前身であるnibtoolで使用される形式との間で変換する方法を発見しました。これは、それほど強力ではありませんが、ローカライズに非常に使いやすいです。詳細については、こちらをご覧ください。
Mac OS Xアプリのローカライズを合理化するために彼のスクリプトを再利用しましたが、それらは私にとってはうまくいきます。 幸運を祈ります:)
他のヒント
これを自動化できると思いますが、いくつかの手順が必要です。 ibtoolを使用してxibから任意のプロパティを抽出できるため、ローカライズ不可能なアイテムのタグを特定の値(たとえば、-1)に設定し、タグを抽出して、それを使用して文字列ファイルをフィルター処理して削除できます不要なエントリ。
ibtoolのmanページ、特に-exportオプションを確認してください。
ibtool
は、空の文字列のエントリを出力しません。したがって、たとえば、UILabelのテキストを空のままにすると、 ibtool --generate-strings-file
の出力に含まれません。その後、View Controllerで要素のテキストを設定できます。