iOS中的Localizable.strings,而不是本地化语言

我正在构建一个将在未来版本中本地化的应用程序,因此我想将其设置为准备就绪.

目前我只有一种语言(法语),fr.lproj文件夹包含Localizable.strings,其中包含相关键的法语翻译.

问题是如果我将我的设备设置为英语我没有收到法语默认翻译,但我看到我在NSLocalizedString中使用的Keys名称.

例如,如果我尝试使用以下命令获取View Controller的标题:

NSLocalizedStrings(@"viewController_Title",nil);

对于具有英语语言的设备,视图控制器将“viewController_title”显示为标题,而如果我设置了法语,则它可以正常工作.

我该怎么处理?

最佳答案 你的问题是你需要一种语言来回归.

据我所知,没有正式的方法,我过去曾写过这样的方法:

NSString * L(NSString * translation_key) {
    NSString * s = NSLocalizedString(translation_key, nil);
    if (![[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@"en"] && [s isEqualToString:translation_key]) {
        NSString * path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
        NSBundle * languageBundle = [NSBundle bundleWithPath:path];
        s = [languageBundle localizedStringForKey:translation_key value:@"" table:nil];
    }
    return s;
}

在这种情况下,使用L(@“viewController_Title”);将返回默认语言的字符串,在本例中为英语.

Shameless self-citation

点赞