在iPhone上NSLocalizedString返回iPhone 语言的字符串.是否可以强制NSLocalizedString使用特定语言使应用程序使用与设备不同的语言?
localization objective-c internationalization nslocalizedstring ios
在开发一组用于将数值和日期转换为字符串的日期计算和语言规则时,我正在编写断言字符串格式化方法结果的测试.对它的想象断言可能如下所示:
NSAssert([dateString isEqualToString:@"Three days, until 6:00 PM"], @"Date string should match expectation");
Run Code Online (Sandbox Code Playgroud)
但是,由于应用程序已针对多种语言进行本地化,并且我的开发人员也来自不同的语言环境,因此可能会将您的设备或模拟器设置为与为其编写测试的语言环境不同的语言环境.在这样的场景中,dateString可能是这样的内容:
@"Drie dagen, tot 18:00" // the assertion fails
@"Drei Tage, bis 18 Uhr" // the assertion also fails
Run Code Online (Sandbox Code Playgroud)
这可能是也可能不是这些语言环境的正确日期符号,但我的问题所在的部分是,当底层代码使用Apple API时,如何能够运行测试到特定的语言环境:
[NSDateFormatter localizedStringFromDate:date
dateStyle:NSDateFormatterNoStyle
timeStyle:NSDateFormatterShortStyle];
Run Code Online (Sandbox Code Playgroud)
我想在我的断言中用两种或更多种语言覆盖,例如:
[NSSomething actionToSetTheLocaleTo:@"en_US"];
dateString = ...; // the formatting
NSAssert([dateString isEqualToString:@"Three days, until 6:00 PM"], @"match en_US");
[NSSomething actionToSetTheLocaleTo:@"nl_NL"];
dateString = ...; // the formatting
NSAssert([dateString isEqualToString:@"Drie dagen, tot 18:00"], @"match nl_NL");
Run Code Online (Sandbox Code Playgroud)
谁知道如何实现这种效果?
笔记:
关于这个主题的链接:
cocoa-touch localization objective-c internationalization ios