2012-12-06 108 views
2

我想本地化我的iPhone項目中的一些圖像。所以我創建了文件:iPhone本地化文件夾中的子文件夾

en.lproj/Images/iPad/btn-check-pressed~ipad.png 
en.lproj/Images/iPadRetina/[email protected]~ipad.png 
ru.lproj/Images/iPad/btn-check-pressed~ipad.png 
ru.lproj/Images/iPadRetina/[email protected]~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

,我的每個文件,當我嘗試生成項目。所以,據我瞭解,它將所有文件複製到一個文件夾中,並且由於我的文件具有相同的名稱 - 只有其中一個可以存活。但是,如果我刪除我的子文件夾:

en.lproj/btn-check-pressed~ipad.png 
en.lproj/[email protected]~ipad.png 
ru.lproj/btn-check-pressed~ipad.png 
ru.lproj/[email protected]~ipad.png 

一切工作正常。

是否有辦法保留子文件夾?這裏清單2-4中的http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html子文件夾用於音頻文件,所以應該是這樣。

+0

嘗試清除您的派生數據並構建它。派生的數據經常會變得頑皮,特別是當對lproj文件進行更改時。讓我知道如果有幫助 –

+0

產品 - >清潔?它沒有幫助。 –

+0

轉到組織者(在您的XCode上,右上角的按鈕),選擇頂部的項目選項卡,然後在左邊的欄上選擇當前打開的項目。在右側部分,您可以看到一個選項來刪除派生數據。產品 - >清潔並不清楚衍生數據 –

回答

2

它看起來像iOS本地化的唯一方式是不同的。您的基礎文件夾層次結構應該是倒置的:首先進入實際的文件夾結構,並在每個要進行本地化的文件夾中,將相應的.lproj子文件夾與本地化資源相關聯。所以,在你的榜樣應該是這樣的:

/Images 
/iPad 
    /en.lproj 
    btn-check-pressed~ipad.png 
    /ru.lproj 
    btn-check-pressed~ipad.png 
/iPadRetina 
    /en.lproj 
    [email protected]~ipad.png 
    /ru.lproj 
    [email protected]~ipad.png 

,如果你打算有大的層次,這可能是次優的,但是這是它開箱的唯一途徑。

當然你總是可以說你不需要Xcode支持並且使用一些自定義的構建規則以你喜歡的方式在你的項目中重新排列文件,然後在構建過程中將它們複製到適當的結構中,但是我懷疑它值得麻煩。

更新:它看起來像的XCode(4.5)構建腳本是主要反派。

根據我的實驗,構建腳本應至少爲圖像平坦化資源結構。所以唯一的辦法本地化的應用程序可以在裏面是:

/YourApp 
YouApp 
info.plist 
.... 
/en.lproj 
    btn-check-pressed~ipad.png 
    [email protected]~ipad.png 
/ru.lproj 
    btn-check-pressed~ipad.png 
    [email protected]~ipad.png 

訣竅是,在默認情況下的XCode(如4.5版),可壓扁你的項目結構,只有在上述這一點,我沒有看到標準的方式來改變這種行爲。

當然,關於自定義構建腳本的原始評論仍然是真實的。

+0

非常感謝! –