使用 iPhone 模拟器中的“设置”应用程序切换语言是测试本地化调整的 PITA 方法。我正在尝试找出一种在我的应用程序中使用调试设置动态切换本地化(en/fr/es/etc)的方法,而无需重新启动应用程序。
NSBundle 提供了从任意本地化请求本地化资源的方法,例如
- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension inDirectory:(NSString *)subpath forLocalization:(NSString *)localizationName
但我找不到字符串管理子系统的等效项。听起来来自these https://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language 问题 https://stackoverflow.com/questions/1305564/use-specific-localization-in-cocoa-app您可以覆盖注册的默认值,这听起来很愚蠢并且需要重新启动应用程序。
这里还有其他策略吗?如果我用在调试构建中完成其自己工作的东西包装 NSLocalizedString ,那么加载给定的最短路径是什么.strings
文件?是否有一种编程方式来访问这些字符串表,而无需自己亲自解析它们?
Thanks.
我发现的唯一方法是使用建议的微妙技巧这个答案 https://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language/1746920#1746920。你可以包裹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, @"");
}
etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)