gpt4 book ai didi

cocoa - 动态覆盖首选字符串本地化以进行测试

转载 作者:行者123 更新时间:2023-12-03 16:15:09 25 4
gpt4 key购买 nike

使用 iPhone 模拟器中的“设置”应用程序切换语言是测试本地化调整的 PITA 方法。我正在尝试找出一种方法,通过调试设置在我的应用程序中动态切换本地化(en/fr/es/etc),而无需重新启动应用程序。

NSBundle 提供了从任意本地化请求本地化资源的方法,例如

- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName

但我发现没有等效的字符串管理子系统。听起来来自 these questions您可以覆盖注册的默认值,这听起来很愚蠢并且需要重新启动应用程序。

这里还有其他策略吗?如果我用在调试版本中完成其自身工作的内容包装 NSLocalizedString,那么加载给定 .strings 文件的最短路径是什么?是否有一种编程方式来访问这些字符串表,而无需自己亲自解析它们?

谢谢。

最佳答案

我发现的唯一方法是使用this answer建议的微妙技巧。 。您可以将 NSLocalizedString() 包装在一个了解本地化“覆盖”的函数中,并根据是否设置来选择如何获取其字符串。当您想要覆盖时,您可以从本地化目录创建一个“子包”,然后从该包中提取字符串。其要点如下:

if (CurrentLocalization != nil) {
NSBundle * locBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:CurrentLocalization ofType:@"lproj"]];
return [locBundle localizedStringForKey:key value:nil table:nil];
} else {
return NSLocalizedString(key, @"");
}

等等

关于cocoa - 动态覆盖首选字符串本地化以进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com