在应用程序设置中设置iPhone应用程序语言有效,但应用程序名称不会更改

时间:2011-06-28 11:14:40

标签: iphone objective-c ios

在我的iPhone应用程序中,我可以在应用程序的设置中成功更改语言(只需用户重新启动应用程序)。我使用了这篇文章中提到的技巧:link。我做了一些修改。我将所选语言存储在NSUserDefaults和main.m中:

int main(int argc, char *argv[]) {

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    if ( [[NSUserDefaults standardUserDefaults] objectForKey:@"language"] == nil ) {
        [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"hu"] forKey:@"AppleLanguages"];
    } else {
        [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:[[NSUserDefaults standardUserDefaults] objectForKey:@"language"]] forKey:@"AppleLanguages"];
}

    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;
}

“默认”Info.plist文件是英文的,我把它放在项目的根目录中。因为应用程序名称,我对此进行了匈牙利语翻译。这个文件是InfoPlist.strings,我把它放在hu.lproj文件夹中。在这个文件中:

CFBundleDisplayName = "Sör";

如果我更改语言,重新启动应用程序后,除应用程序名称外,一切正常(nib文件,字符串)。它不会改变......

有人可以告诉我这是什么问题吗?

2 个答案:

答案 0 :(得分:1)

你已经完成几乎你需要做的一切。

您还需要指示您的应用具有本地化的应用名称。您可以通过将以下密钥添加到应用程序的info.plist

来完成此操作
LSHasLocalizedDisplayName

将其类型设置为布尔值,并将其值设置为true。

完成此操作后,您的应用本地化其名称。

您可以阅读更多here

编辑:

您需要做的另一件事是在en.lproj文件夹中创建一个InfoPlist.strings文件,并使用相同的英语为其添加相同的密钥

CFBundleDisplayName = "<Replace Me>";

此添加的信用将转至this link

答案 1 :(得分:0)

应用程序名称由iOS读取,未设置为应用程序设置的语言。 因此,它将显示为系统语言设置的应用程序名称。