2

iPhoneプロジェクトでいくつかの画像をローカライズしたいと思います。だから私はファイルを作成しました:

en.lproj/Images/iPad/btn-check-pressed~ipad.png
en.lproj/Images/iPadRetina/btn-check-pressed@2x~ipad.png
ru.lproj/Images/iPad/btn-check-pressed~ipad.png
ru.lproj/Images/iPadRetina/btn-check-pressed@2x~ipad.png

などを追加して、プロジェクトに追加しました。ただし、Xcodeでは、ローカリゼーションリストに「英語の0ファイルがローカライズされています」、「ロシア語の0ファイルがローカライズされています」と表示されます。

警告も表示されます

Warning: Multiple build commands for output file /Users/User/Library/Developer/Xcode/DerivedData/TestLocalizationDefaultPNG-ckplzmcjurofxrccjuvyzjaqketc/Build/Products/Debug-iphonesimulator/TestLocalizationDefaultPNG.app/btn-check-pressed~ipad.png

プロジェクトをビルドしようとすると、ファイルごとに。したがって、私が理解している限り、すべてのファイルを1つのフォルダーにコピーします。また、私のファイルは同じ名前であるため、存続できるのはそのうちの1つだけです。ただし、サブフォルダーを削除すると、次のようになります。

en.lproj/btn-check-pressed~ipad.png
en.lproj/btn-check-pressed@2x~ipad.png
ru.lproj/btn-check-pressed~ipad.png
ru.lproj/btn-check-pressed@2x~ipad.png

すべてが正常に動作します。

サブフォルダーを保持する方法はありますか?リスト2-4のhttp://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.htmlは、オーディオファイルに使用されるサブフォルダなので、そうする必要があります。

4

1 に答える 1

2

iOS でローカリゼーションが機能する唯一の方法が異なるようです。基本フォルダー階層は逆にする必要があります。最初に実際のフォルダー構造に移動し、ローカライズするすべてのフォルダーに.lproj、ローカライズされたリソースを含む対応するサブフォルダーを配置します。したがって、あなたの例では次のようになります。

/Images
 /iPad
  /en.lproj
    btn-check-pressed~ipad.png
  /ru.lproj
    btn-check-pressed~ipad.png
 /iPadRetina
  /en.lproj
    btn-check-pressed@2x~ipad.png
  /ru.lproj
    btn-check-pressed@2x~ipad.png

大きな階層を持つことを意図している場合、これは最適ではないかもしれませんが、これがすぐに使用できる唯一の方法です。

もちろん、Xcode のサポートは不要で、いくつかのカスタム ビルド ルールを使用して、プロジェクト内のファイルを好きなように再配置し、ビルド中に適切な構造にコピーすることはいつでもできますが、問題を起こす価値があるとは思えません。

更新: XCode ( 4.5 ) ビルド スクリプトが主な悪役のようです。

私の実験によると、ビルド スクリプトは、少なくとも画像のリソース構造を平坦化する必要があります。したがって、ローカライズされたアプリを内部に配置できる唯一の方法は次のとおりです。

/YourApp
 YouApp
 info.plist
 ....
 /en.lproj
   btn-check-pressed~ipad.png
   btn-check-pressed@2x~ipad.png
 /ru.lproj
   btn-check-pressed~ipad.png
   btn-check-pressed@2x~ipad.png

秘訣は、XCode (バージョン 4.5 以降) がデフォルトでプロジェクト構造をフラット化できるのは、上記のとおりであり、この動作を変更する標準的な方法が見当たらない場合のみです。

もちろん、カスタム ビルド スクリプトに関する元のコメントは今でも当てはまります。

于 2012-12-06T20:21:03.857 に答える