在 Xcode 中,您可以编辑方案并选择双长度 PseudoLanguage 作为应用程序语言。
这对于一次性构建非常有用,但我想在应用程序中添加一个 UI 切换,允许 QA 切换 double-length PseudoLanguage
.目标是让 QA 进入应用程序中的调试设置菜单并切换 double-length PseudoLanguage
打开或关闭。
具体来说,有没有办法切换 double-length PseudoLanguage
在代码中?
最佳答案
tl;博士
您可以通过设置 true
从代码中更改此设置对于NSDoubleLocalizedStrings
键入 NSUserDefaults
.您必须在访问任何可本地化的字符串之前设置它,因此将以下内容添加到 application:didFinishLaunchingWithOptions:
.
迅速:
UserDefaults.standard.set(true, forKey: "NSDoubleLocalizedStrings")
Objective-C
[NSUserDefaults.standardUserDefaults setBool:YES forKey:@"NSDoubleLocalizedStrings"];
由于此键仅在您的应用程序第一次访问可本地化字符串时读取,为了在运行时更改它以进行测试,您需要在
NSUserDefaults
中翻转此 bool 值然后杀死并重新启动应用程序使其生效。更多细节:
由于您发布的屏幕截图中的方案设置仅适用于您从 Xcode 运行应用程序时,因此它不会影响存档构建。相反,您可以通过在 iOS 应用程序中利用启动参数的一些不错的功能来做到这一点(可能会在 [this talk](this talk) 中获得更多详细信息。
更改方案选项的此选项卡中的设置,会更改启动二进制文件时发送到二进制文件的额外启动参数。例如,设置此语言字符串会导致 Xcode 传递
-NSDoubleLocalizedStrings
当你启动你的应用程序时。您可以通过创建一个新的 Objective-C 项目并将其添加到 main.m
中来查看此行为。高于对 UIApplicationMain
的调用:for (int i = 0; i < argc; i++) {
NSLog(@"Argument %d: %s", i, argv[i]);
}
您可以在方案编辑器中切换选项,并具体查看将哪些字符串传递给您的二进制文件。
下一部分是 iOS 如何处理这些启动参数。 iOS SDK 处理这些的方式是将它们覆盖在当前的
NSUserDefaults
之上。值设置为。所以在这种情况下,这只是设置 true
对于 NSDoubleLocalizedStrings
发射时。这就是上述解决方案有效的原因。简而言之,如果您在运行时更改标志,这似乎不起作用的原因是因为这些设置是在您第一次在
dispatch_once
中读取应用程序中的可本地化字符串时加载的。 .
关于ios - 如何为双长度 PseudoLanguage 提供应用内设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49636262/