我想知道如何更新具有nib文件和UITableview作爲子視圖的viewControllers,而我更改設置應用程序頁面的語言設備語言。我可以考慮在這種情況下使用NSNotificationCenter,但同時我也需要考慮更新表格單元格的標籤。我不能或不願意重新加載表,因爲我在cellForRowAtIndexPath方法中做了很多事情,因爲表中有很多數據。使用委託方法也是一個問題。任何人可以建議/幫助我如何解決這個問題,無需重新加載表視圖。更新應用程序內語言更改後的所有UIViewController
回答
對於定製本地化做到這一點(這個答案是具體到這個問題不是本地化的替代)
使您的定義文件中的宏。如果你還沒有一個然後
添加新文件 - >將其命名爲Defines.h - >刪除它的.m->刪除它的.h-中的所有東西。>將其導入到.pch中。
現在它LOCALISEDSTRING(m) [[[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Language" ofType:@"plist"]] objectAtIndex:globalIntIndex]objectForKey:m]
你「globalIntIndex」也在defines.h宣佈將其與每種語言的適當indexvalue定義一個宏。
現在添加一個plist文件並將其命名爲「語言」,將它作爲數組元素添加到它的語言中,並在每種語言中添加字符串值爲KEY的KEY。重點將是同爲每種語言
的plist看起來就像上面圖片放在項目0和俄文文本的所有英文文本中第1項
現在你可以,如果使用它像NSLog(@"%@",LOCALISEDSTRING(@"KEY"));
globalIntIndex = 0,那麼它將以英文打印字符串,否則它將以俄語打印字符串。
我認爲您的應用中可能沒有Localizable.strings
文件。
瞭解本教程:Localization Tutorial for iOS。
此外,這裏有兩個演示:
如果使用XIB構建UI,見RMDateSelectionViewController
如果使用代碼來構建用戶界面,看到ZCImagePickerController
如果你想瞬間改變你現在的語言,你應該在你自己的代碼上實現多種語言。通常是一個類來處理與你的界面一起顯示的所有字符串。爲每個控制器推薦處理語言更改的通知。
您可以使用:
[[NSUserDefaults standardUserDefaults]
setObject:[NSArray arrayWithObjects:@"en", nil]
forKey:@"AppleLanguages"];
設置你現在的語言,但它可能不會立即改變,也並不推薦使用。
- 1. 作爲設備語言更改更改應用程序語言
- 2. 防止語言環境更改後的應用語言更改
- 3. 更改Android應用程序的語言
- 4. 更改ios應用程序的語言
- 5. 更改應用程序語言
- 6. 更改網絡應用程序語言
- 7. 更改Android應用程序語言
- 8. 從應用程序更改語言?
- 9. 更改語言在應用程序
- 10. 在應用程序中更改語言
- 11. 更改應用程序的語言環境而不更改Windows語言環境
- 12. Android - 更改應用程序本身的語言環境語言
- 13. Swift:如何更改應用程序內的語言?
- 14. 語言環境在應用程序內更改不起作用
- 15. 應用程序圖標更新後不更改應用程序
- 16. 當應用程序處於後臺時更改設備語言
- 17. 在應用程序處於後臺時更改語言
- 18. 語言更改後ios應用程序崩潰
- 19. 更改語言後,應用程序在getResources()中崩潰
- 20. 更改應用語言更改的文本框輸入語言
- 21. 在應用程序中更改語言 - 如何重新啓動?
- 22. 我的Android應用程序更改默認語言爲英語
- 23. 如何在首選項更改或語言更改(語言環境)上刷新Android應用程序
- 24. 在UWP中更改語言不會更改系統功能語言 - 僅在應用程序重新啓動時
- 25. 更改應用程序語言後,微調器不刷新片段
- 26. 語言更改後刷新$ translate
- 27. Typo3 4.6更新後的後端語言不會更改
- 28. 如何更改Android應用程序內更改語言(區域設置)後的PreferenceActivity(從TabHost啓動)
- 29. 更改語言的應用程序編程
- 30. 更改所有活動語言
關於本地化的搜索...它建在好友中,你不需要做任何事情 – amar
感謝@amar的回覆。我只想在我的應用程序中更改語言,而不是在設備中。因此,當用戶在應用程序中選擇語言時,它應該反映在所有視圖控制器中,爲此,我在所有ViewController類中都使用了NSNotificationCenter。因此,在語言選擇後會立即發生更改在應用中。所以我的問題是如何表格單元名稱出重新加載表視圖。任何幫助將不勝感激。 – Amit89
嗨我在我的應用程序中做了同樣的事情,在plist中放入多種語言,然後在全局變量的基礎上從中獲取它。你也可以定義一個宏LocalisedString(<密鑰在這裏>)使用這個每一個。如果你需要代碼註釋但需要一些時間。 – amar