ios - 启动参数(NSDoubleLocalizedStrings、NSShowNonLocalizedStrings)不起作用

标签 ios objective-c swift xcode localization

我正在尝试使用诸如 NSDoubleLocalizedStringsNSShowNonLocalizedStrings 之类的启动参数来测试我的 Objective-C 项目中的本地化。出于某种原因,我无法让他们都工作。我尝试在启动时设置参数和方案设置中的选项:enter image description here enter image description here 我还检查了 NSUserDefaults 键,它们都是 YES。但是争论仍然不起作用。

为了确保它不是 XCode 错误,我在 Objective-C 和 Swift 上创建了一个全新的单 View 项目,在 View 上有一个标签。这两个项目都有空的 Localizable.strings 文件,这些项目中的代码如下:

@interface ViewController ()
@property (nonatomic, strong) IBOutlet UILabel *label;
@end

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.label.text = NSLocalizedString(@"Some text", nil);
}
@end

class ViewController: UIViewController {
    @IBOutlet var label: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        label.text = NSLocalizedString("Some text", comment: "")
    }
}

结果是这样的:

enter image description here

下面是问题:

1) 启动参数在我的 Objective-C 项目中不起作用的原因可能是什么?

2) 为什么 NSDoubleLocalizedStrings 参数在 Swift 中不起作用?

最佳答案

我花了几天时间调查并逐渐删除我的 Objective-C 项目中的所有文件和框架,我发现原因在 AFNetworking 库中。问题描述 here .如果您想在项目中使用 AFNetworking 并调试本地化问题,您可以将这些行添加到 application: didFinishLaunchingWithOptions:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"NSDoubleLocalizedStrings"];
[defaults setBool:YES forKey:@"NSShowNonLocalizedStrings"];
[defaults synchronize];

第二次 启动应用程序时,您会看到这些启动参数起作用。

关于为什么 NSDoubleLocalizedStrings 参数在 Swift 中不起作用的第二个问题的答案是它可能是 XCode 中的一个错误。它可能与 Swift 不支持的宏相关联,而 NSLocalizedString 实际上是一个宏。因此我在 radar 上创建了一个错误.

关于ios - 启动参数(NSDoubleLocalizedStrings、NSShowNonLocalizedStrings)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44228367/

相关文章:

ios - 当上传百分比增加时,如何使 UIView 的宽度增加? swift 4

objective-c - ios:如何显示 "choose wireless connection"弹出窗口?

ios - 自定义 Cocoapod 总是返回 "No such module XXX"

swift - 如何使用新的获取重新加载数据?

ios - 无法调整 Collection View 高度

ios - 使用的是哪个手势识别器?

ios - 如何使用 Mapbox-iOS-SDK 确定 mapview 缩放级别何时更改?

iphone - 如何在 iOS 中将参数传递给 UIPopovercontroller

iphone - 在单元测试期间,cellForRowAtIndexPath为nil

iphone - 连接两个 View Controller 时出错