2

创建新的可可应用程序后,我添加了本地化字符串文件 localizeFile.strings(English) 和 localizeFile.strings(Spanish)

在 localizeFile.strings(English) 文件中,我添加了 "TITLE" = "Hello!";

在 localizeFile.strings(Spanish) 文件中,我添加了 "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 点击按钮。

有人可以指导我如何获得本地化字符串吗?请帮助

4

1 回答 1

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];
于 2012-04-16T06:57:37.043 回答