创建新的cocoa应用程序后,我添加了本地化字符串文件localizeFile.strings(英文)和localizeFile.strings(西班牙文)
在localizeFile.strings(英文)文件中,我添加了" TITLE" ="你好!&#34 ;;
在localizeFile.strings(西班牙语)文件中,我添加了" TITLE" =" Hola!";
在我的课堂上,我尝试使用以下语句访问操作中的本地化英语文本
-(IBAction)english:(id)sender
{
// NSString *engText = [[NSBundle mainBundle] localizedStringForKey:@"TITLE" value:@"" table:nil];
NSString *engText = NSLocalizedString(@"TITLE", nil);
NSLog(@"engText %@",engText);
[displayText setStringValue:engText];
}
-(IBAction)spanish:(id)sender
{
NSString *spanText = NSLocalizedString(@"TITLE", nil);
NSLog(@"spanText %@",spanText);
[displayText setStringValue:spanText];
}
这里displayText是NSTextField,在同一个窗口中有两个动作。
我在控制台中看到,单击按钮时,engText TITLE而不是engText Hello。
有人可以指导我如何获取本地化字符串?请帮助
答案 0 :(得分:3)
听起来应用程序不知道localizeFile.strings。您是否声明了应用程序的语言?您的创建个人资料中是否有复制规则?
修改强>
您可以在此处添加语言(红色箭头):
第二次编辑
如果要使用未在系统级别设置的语言,可以执行以下操作:
// Assume you have defined constants, e.g. 1 - English, 2 - Espanol, 3 - ....
switch (language) {
case kLangEn: // =1
path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
break:
case kLangEs: // =2
path = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"];
break:
// etc.
}
NSBundle *languageBundle = [NSBundle bundleWithPathath];
NSString *str = [languageBundle localizedStringForKey:key value:@"" table:nil];