我想知道如何更新具有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