我想知道如何更新具有nib文件和UITableview的viewControllers作为子视图,而我在我的应用程序的设置页面中更改语言而不是设备语言。我可以考虑在这种情况下使用NSNotificationCenter,但同时我还需要考虑更新表格单元格的标签。我不能或不愿意重新加载表因为我在cellForRowAtIndexPath方法中做了很多事情因为表有很多数据。使用委托方法也是一个问题。任何人都可以通过重新加载表视图来建议/帮助我解决这个问题。
答案 0 :(得分:0)
我认为您的应用中可能没有Localizable.strings
个文件
了解本教程:Localization Tutorial for iOS。
另外,这里有两个演示:
如果您使用XIB构建UI,请参阅RMDateSelectionViewController
如果您使用代码构建UI,请参阅ZCImagePickerController
答案 1 :(得分:0)
如果您想立即更改当前语言,则应在自己的代码上实现多种语言。通常是一个用于处理界面显示的所有字符串的类。建议每个控制器使用处理语言更改的通知。
您可以使用:
[[NSUserDefaults standardUserDefaults]
setObject:[NSArray arrayWithObjects:@"en", nil]
forKey:@"AppleLanguages"];
设置您当前的语言,但它可能不会立即更改,也不会被推荐。
答案 2 :(得分:0)
对于自定义本地化,请执行此操作(此答案特定于此问题,而不是本地化的替代方案)
在定义文件中创建一个宏。如果你还没有,那么
添加新文件 - >将其命名为Defines.h - >删除其.m->删除其.h->中的所有内容。将其导入.pch。
现在在其中定义一个宏LOCALISEDSTRING(m) [[[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Language" ofType:@"plist"]] objectAtIndex:globalIntIndex]objectForKey:m]
您在“define.h”中也声明了“globalIntIndex”,并为每种语言设置了适当的索引值。
现在添加一个plist文件,并将其命名为“Language”,将其语言添加为数组元素,并在每种语言中添加KEY,字符串值为字典。每种语言的密钥都相同
Plist将如上图所示将所有英文文本放入第0项,将俄文文本放在第1项中。
现在您可以像NSLog(@"%@",LOCALISEDSTRING(@"KEY"));
一样使用它
如果globalIntIndex = 0那么它将用英文打印字符串,否则它将用俄语打印字符串。