2014-11-24 39 views
3

我想從應用程序內更改應用程序語言。 我能夠實現這一點,並根據已更改的本地化更改文本,但直到我重新啓動我的應用程序之前,本地化圖像才加載。本地化的圖像不加載沒有應用程序重新啓動

1)本地化圖像放置在en.lproj和vi.lproj文件夾中。

2)圖像顯示在表格視圖中,表格視圖在語言改變後重新加載。

仍未獲取本地化圖像。

日誌,我嘗試打印>>

一個NSBundle /用戶/管理員/庫/應用程序支持/ iPhone模擬器/ 7.0 /應用/ 863CF1CB-C9C5-4257-8D6E-DA104C8EC849/test.app/EN。 lproj(尚未加載)

一個NSBundle /用戶/管理員/庫/應用程序支持/ iPhone模擬器/ 7.0 /應用/ 863CF1CB-C9C5-4257-8D6E-DA104C8EC849/test.app/vi.lproj(尚未加載)

謝謝。

+0

據我所知,選定的語言是一個系統範圍的設置。當您在設置應用程序中更改語言時,iOS會自行「重新配置」自己和所有正在運行的應用程序(重新啓動它們)。在運行時你可以選擇字符串的本地化詞典,就像我在這裏做的那樣:http://stackoverflow.com/a/22838176/1167428。我們也有圖像問題,所以我們最終不使用系統本地化支持,而是從我們自己的本地化文件夾加載圖像。通過這種方式,我們甚至可以實現似乎不受本地支持的語言區域(如en,en-UK,en-US,en-CA)。 – lupz 2014-11-24 10:16:26

回答

2

有一個簡單的解決方法,根據

使用帶有不同的名稱不同的圖像的語言,並根據從代碼選擇的語言加載圖像。

例如 在的tableView的cellForRowAtIndexPath方法

if(language = english) { 
imageName = @"logo_english"; 

} 

else if (language = french) { 
imageName = @"logo_french"; 
} 

否則,使用圖像的蘋果原生本地化的應用程式重新啓動後生效。

+0

邏輯是好的,但如果文本可以從本地化文件中獲取而不重新啓動,那麼我們可以用同樣的方式處理圖像... [不想改變圖像名稱] – Swati 2014-11-24 10:17:28

+0

爲了改善這一點,可以使用一個實用函數,定位標記(文件後綴/前綴,文件夾)到資源名稱。它有助於保持本地化處理[DRY](http://de.wikipedia.org/wiki/Don%E2%80%99t_repeat_yourself)。 – lupz 2014-11-24 10:35:09

相關問題