2014-02-12 41 views
9

我需要本地化info.plist的兩個密鑰:NSLocationUsageDescriptionNSCameraUsageDescription。所以我嘗試創建一個名爲InfoPlist.strings的新文件,然後對其進行本地化,但app總是顯示存儲在info.plist文件中的字符串。怎麼了?無法本地化info.plist字符串

Information Property List Key Reference

本地化值正式文件並不存儲在Info.plist文件本身。 相反,您將特定本地化的值存儲在名爲InfoPlist.strings的 字符串文件中。您將此文件放在 與您用於存儲 其他資源的同一語言特定項目目錄相同的本地化中。 InfoPlist.strings文件的內容是您希望本地化的各個鍵,並且是適當翻譯的值。查找Info.plist文件中的鍵值 值的例程將用戶的語言首選項 考慮在內,並在存在時返回鍵的本地化版本(來自 適當的InfoPlist.strings文件)。如果某個密鑰的本地化版本不存在,那麼這些例程將返回Info.plist文件中存儲的值 。

我InfoPlist.strings文件:

NSCameraUsageDescription = "hello"; 
NSLocationUsageDescription = "hello hello"; 
+0

您是否更改iPhone模擬器的語言?從設置應用程序中更改,而不是來自方案。 – scottphc

+0

使用InfoPlist.strings http://stackoverflow.com/questions/25736700/how-to-localise-a-string-inside-the-ios-info-plist-file – onmyway133

回答

5

請生成的應用程序包檢查,文件是否真的保存在那裏,它被放置到正確的位置。通常這是缺失的一步。

剛進入項目設置,打開「構建階段」,看看是否 的文件可以在「複製包資源」中找到

+0

好點!對我來說InfoPlist.string被忽略,直到我手動將它添加到複製包資源 – cyanide

0

該文件需要是一個目錄的指示語言內部,例如en.lproj

0

事實上,我的問題是我拼寫錯了NSLocationWhenInUseUsageDescription常量,所以當然沒有考慮到它。

0

有時您必須首先進行清潔,點擊菜單 - >產品 - >清潔。

Sometimes you have to make a Clean first

3

你的plist文件可以有多個版本的應用程序支持的每種語言。 在工具\文件檢查器(右側)點擊「本地化」:

enter image description here

,然後選擇你想擁有自己版本的語言:

enter image description here

之後您將可以輸入每個plist文件並根據需要進行編輯。

+0

ok,我有一個名爲「someinfo.plist」的文件,它的作用是「info.plist」,但需要在項目設置中指定(「包裝」部分) 。如何在本地化時指定路徑? –

+1

它是自動的。對於每種語言你的應用程序將使用相關的plist。如果沒有(當前語言沒有plist文件) - 你的應用程序將使用基本的。 – yonivav

0

從iOS 10開始,您需要將隱私密鑰添加到Info.plist中。

<key>NSPhotoLibraryUsageDescription</key> 
<string>Please allow access to the photo library.</string> 

當然,你仍然需要這些密鑰進行本地化(你不能本地化應用程序的Info.plist)。因此,您還需要將這些隱私密鑰添加到InfoPlist.strings中,這些密鑰又是本地化的。

"NSPhotoLibraryUsageDescription" = "Please allow access to the photo library.";