ios - 如何强制 NSLocalizedString 使用特定语言

在 iPhone 上 NSLocalizedString 返回 iPhone 语言的字符串。 是否可以强制 NSLocalizedString 使用特定语言来拥有应用程序 使用与设备不同的语言?

最佳答案

NSLocalizedString()(及其变体)访问 NSUserDefaults 中的“AppleLanguages”键以确定用户对首选语言的设置。这将返回一组语言代码,第一个是用户为其手机设置的语言代码,如果资源在首选语言中不可用,则后续代码用作后备。 (在桌面上,用户可以在 System Preferences 中以自定义顺序指定多种语言)

如果您愿意,您可以通过使用 setObject:forKey: 方法设置您自己的语言列表来覆盖您自己的应用程序的全局设置。这将优先于全局设置值,并返回到应用程序中执行本地化的任何代码。代码如下:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", @"en", @"fr", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize]; //to make the change immediate

这将使德语成为您的应用程序的首选语言,英语和法语作为备用语言。您可能希望在应用程序启动的早期调用它。您可以在此处阅读有关语言/区域设置偏好的更多信息:Internationalization Programming Topics: Getting the Current Language and Locale

https://stackoverflow.com/questions/1669645/

相关文章:

ios - 使用 Storyboard 以编程方式设置初始 View Controller

ios - 检测设备是否为 iPhone X

objective-c - 编译警告 : no rule to process file for a

ios - UIView无限360度旋转动画?

ios - 总是将 self 的弱引用传递到 ARC 中的 block 中?

objective-c - UILabel中如何控制行距

objective-c - 将 NSDate 转换为 NSString

iOS - 从 ViewController 调用 App Delegate 方法

ios - 不能在 Objective-C 中使用 Swift 类

ios - 解释 iOS7 中自动调整 ScrollView 插入、扩展布局包含不透明条、边缘For