我正在考虑如何在我的应用程序的选择语言页面中更改语言而不是设备语言时,将所有UILabel
故事板和UITableviewController
更新为子视图。
任何人都可以帮助我如何解决这个问题
答案 0 :(得分:1)
您可以使用Micro Like this
进行管理在支持文件中打开.pch文件并写下这样的内容,还需要做一件事,首先要确定languageId,并将其作为" number"
#define kCancelText(number) (number == 1 ? @"Cancel" : (number == 2 ? @"取消" : (number == 4 ? @"cancelar" :@"Cancel" )))
定义之后你需要像这样调用
NSLog(@"Varible Print :: %@", kCancelText(1)); //Note : here 1 is language id .. I have define three language . 1. English 2. Mandarin 3. Spanish
您可以根据语言ID使用..还有一件事你不需要导入任何这个,因为它总是在应用程序中全局。
答案 1 :(得分:0)
为此,您可以使用NSNotificationCenter,通过该NSNotificationCenter可以使用密钥发布通知,现在在发布此通知后需要进行更改的所有类中,您只需添加具有相同密钥的NSNotificationObserver,可以调用方法并根据需要进行更改。
使用NSNotification时使用this link。
答案 2 :(得分:0)
为此你需要这个步骤:
1>首先,如果你有两种语言,如阿拉伯语和英语,那么添加两个.strings文件 Messages_en.strings Messages_ar.strings
//这是Messages_en.strings文件中的声明键和值 Messages_en.strings
“answer”=“回答”;
Messages_ar.strings
“answer”=“الإجابة”;
2 - ;制作所有标签自定义标签,如MyUILabel_custom,并在此类的所有屏幕中添加所有标签,这样如果你想在viewwillappear中修改某些内容,就像在阿拉伯语中一样,你想改变你可以做的对齐
3>单击按钮时,语言应存储在NSUserDefaults中 然后你可以随处访问
[[NSUserDefaults standardUserDefaults]setValue:@"en" forKey:@"lang"];
4>在Constants.h文件中添加此行
#define IsArabic ([[[NSUserDefaults standardUserDefaults] valueForKey:@"lang"] isEqualToString:@"ar"]? YES : NO)
#define getString(key) NSLocalizedStringFromTable(key, (IsArabic ? @"Messages_ar" : @"Messages_en"), @"Fix it:-(")
5个你可以通过这种方式在所有屏幕上查看这种方式 self.lblRewardsPoint.text = getString(@“rewards_point”);
6>在tableview中你也可以这样做,你必须重新加载所有数据,如果你的数据来自api那么你必须回忆api。
答案 3 :(得分:0)
-(NSString *)GetLocalString:(NSString *)text{
NSString *path;
path = [[NSBundle mainBundle] pathForResource:currentLanguageDocumentPath ofType:@"lproj"];
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
NSString* str=[languageBundle localizedStringForKey:text value:@"" table:nil];
return str;
}
这里只需在项目中添加语言的字符串文件,并在" currentLanguageDocumentPath'中传递文件名。 文字 - >文字的关键。