IOS APP 國際化(實現不跟隨系統語言,不用重啟應用,代碼切換stroyboard ,xib ,圖片,其他資源)

來源:互聯網
上載者:User

標籤:blog   http   os   io   檔案   for   2014   art   

 

 接了個變態的需求,要在程式內切換程式語言實現國際化。

可以先看看這個,比較詳細。

http://blog.csdn.net/xwren362922604/article/details/17190061

看完之後問題來了,

1,工程裡面大量的 xib  或 storyboard 裡面的UI 設定了text ,怎麼實現讓它們動態載入語言【非設定系統語言重啟】

2,一個簡單的思路,當代碼觸發切換語言 發個通知讓 記憶體裡的viewController 重新整理UI的text 。[工程裡這麼都vc 每個都加 豈不累死]

所有 接下來還可完善下。

1,切換語言,重新載入window 的根視圖。根據不同語言。【搜下網上的storyboard 國際化】

你會發現 你操作後 xcode 為Main storyboard 添加了三個 檔案

這裡依這為理。base和你添加的語言。
你在這些檔案上右鍵 show in finder 。

看到那三個檔案夾沒 .lproj  這裡是對應語言的 資源檔。你切換語言是 拿到當前語言eg: en 拼路徑en.lproj

[[NSBundle mainBundle] pathForResource:userLanguage ofType:@"lproj"];

根據path 得到

NSBundle

熟悉吧。這玩意裡面就是我們程式需要得資源檔。其實就是XX.lproj 檔案夾裡德東東

初始化

[UIStoryboard storyboardWithName:@"Main" bundle:bundle];

我們更習慣於 後面的參數滋味nil 。 

寫到這有個問題。其實真正的main 放在了那個base 檔案夾裡。程式蹦了。讓我們來幹掉base 。千萬別直接刪除base檔案。那樣直接把main 。storyboard 刪了。

在這裡

點檔案。右側邊欄。去掉base 溝。不要管警告。

再看

現在可以了。分別在兩個檔案夾了。

遺留問題:如果支援很多語言,程式會變的很大.有解決的可以交流下

2, 寫一個vc 基類。註冊 和 移除  通知。對於自動重新整理vc 內的 UI 。可以在基類裡加個陣列變數 【blok 的】

在subVC,這裡注意防止循環參考。_weak

在superVC

遍曆執行。

實現自動重新整理

可以在這裡下載工程: 

 git clone    [email protected]:githhhh/Test_Local_Two.git

done

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.