我們可能需要加載使用的負載筆尖
[NSBundle -pathForResource:ofType:inDirectory:forLocalization:]
我認爲這是有可能的結果的筆尖,但所有我能找到的方法只有所需的名稱不會導致路徑信息。
我們正在探索一種通過一個代碼庫提供fr-Fr和fr-CA的方法。我們的客戶想要一個fr-CA翻譯,我們害怕我們可能會有另一個客戶想要fr-Fr翻譯。我想我們可以根據選定的語言來修正筆尖。
謝謝
我們可能需要加載使用的負載筆尖
[NSBundle -pathForResource:ofType:inDirectory:forLocalization:]
我認爲這是有可能的結果的筆尖,但所有我能找到的方法只有所需的名稱不會導致路徑信息。
我們正在探索一種通過一個代碼庫提供fr-Fr和fr-CA的方法。我們的客戶想要一個fr-CA翻譯,我們害怕我們可能會有另一個客戶想要fr-Fr翻譯。我想我們可以根據選定的語言來修正筆尖。
謝謝
路徑查找考慮到用戶的區域設置首選項。如果您提供了正確的本地化目錄(.lproj
),則應該由系統加載正確的筆尖。
的方法首先查找指定包的非本地化資源目錄匹配的資源文件。 (在Mac OS X中,此目錄通常稱爲資源,但在iOS中,它是主包目錄。)如果未找到匹配的資源文件,它將查找任何可用的語言特定「.lproj」的頂級目錄。 (特定於語言的目錄的搜索順序與用戶的首選項相對應。)它不通過其他任何位置的子目錄進行遞歸。有關更多詳情,請參閱國際化編程主題。
不幸的是,蘋果的文檔是自相矛盾和不完整的。
重要:如果你看一下「國際化編程主題」中的「語言和區域設置名稱」,你會「語言和區域設置ID」這個寶石下找到在iOS中,捆綁接口不在查找本地化資源時考慮方言或腳本信息;只考慮語言指示符代碼。因此,如果您的項目包含具有語言和區域指示符的特定於語言的項目目錄,則會忽略這些目錄。 Mac OS X中的軟件包接口在語言特定的項目目錄中支持區域指示符。
這不完全正確。如果你看看蘋果自己的應用程序,你會看到iOS確實支持某些區域名稱,但只有Apple關心的那些。例如見.LPROJ目錄列表在最近的移動Safari瀏覽器:
$ ls -d *.lproj
Dutch.lproj/ el.lproj/ pt_PT.lproj/
English.lproj/ en_GB.lproj/ ro.lproj/
French.lproj/ fi.lproj/ ru.lproj/
German.lproj/ he.lproj/ sk.lproj/
Italian.lproj/ hr.lproj/ sv.lproj/
Japanese.lproj/ hu.lproj/ th.lproj/
Spanish.lproj/ id.lproj/ tr.lproj/
ar.lproj/ ko.lproj/ uk.lproj/
ca.lproj/ no.lproj/ vi.lproj/
cs.lproj/ pl.lproj/ zh_CN.lproj/
da.lproj/ pt.lproj/ zh_TW.lproj/
注意,兩名中國區,一個英式英語區和葡萄牙葡萄牙地區的支持。但是這些都不能解決fr_CA
與fr_FR
的問題。
爲此,我們再來看看MobileSafari。它必須執行自己的智能查找,因爲它有更多的更精細的區別StaticBookmarks-xx_YY.plist
文件。
所以,這就是解決方案:使用仍然可用的區域設置功能,並相應地進行自己的查找。
我不明白這個問題。 由於Xcode支持,您可以完美擁有法國和加拿大(法語)兩種不同的NIB。
只需添加新的定位爲您的文件(S):
然後用視圖控制器加載NIB,與initWithNibName
方法。根據設備的語言設置,將使用正確的一個。
感謝您的回覆。但是ios會查看有區域的語言目錄。來自appl文檔重要提示:在iOS中,捆綁接口在查找本地化資源時不會考慮方言或腳本信息;只考慮語言指示符代碼。因此,如果您的項目包含具有語言和區域指示符的特定於語言的項目目錄,則會忽略這些目錄。 Mac OS X中的軟件包接口在語言特定的項目目錄中支持區域指示符。 –
上面的評論應該讀取ios不會看看有區域指示符的語言目錄。 –
感謝您的響應,但蘋果文檔聲明ios將忽略包含區域指示符的語言目錄。這就是我所看到的,如果我添加一個語言目錄fr-CA並將我的手機設置爲法語我不會得到法語筆尖。 –
請提供相關文檔的鏈接,或引用足夠的獨特逐字文本,以便我可以自行搜索文檔。 –
感謝Jeremy的詳細回覆。 –