【发布时间】:2014-06-01 07:55:16
【问题描述】:
我有一个具有两种本地化(希伯来语和英语)的应用程序,我被要求取消英语本地化,以便无论您的设备是什么语言,该应用程序都是相同的(但保存本地化以供将来使用) .
本地化是通过 Localizable.strings 和 Xib 本地化(分配它们)。
有没有办法告诉应用始终使用某种本地化并忽略设备语言?
谢谢!
【问题讨论】:
标签: ios localization localizable.strings
我有一个具有两种本地化(希伯来语和英语)的应用程序,我被要求取消英语本地化,以便无论您的设备是什么语言,该应用程序都是相同的(但保存本地化以供将来使用) .
本地化是通过 Localizable.strings 和 Xib 本地化(分配它们)。
有没有办法告诉应用始终使用某种本地化并忽略设备语言?
谢谢!
【问题讨论】:
标签: ios localization localizable.strings
我已将它改编为 Swift 并使用它轻松测试本地化。当放置在 AppDelegate->didFinishLaunchingWithOptions 中时,模拟器需要运行两次才能获得正确的设置,但也许有更好的方法。
在示例中使用了丹麦语本地化,更多内容可以在此处找到:Locale codes for iPhone lproj folders
let langCultureCode: String = "da"
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject([langCultureCode], forKey: "AppleLanguages")
defaults.synchronize()
并再次删除默认值:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.removeObjectForKey("AppleLanguages")
defaults.synchronize()
【讨论】:
在这种情况下,只需在启动时尽早设置默认键 AppleLanguages 以覆盖 IOS 设置
(EARLY = 在使用 xib/storyboard 或 NSLocalizedString 之前)
NSString *langCultureCode = @"he";
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@[langCultureCode] forKey:@"AppleLanguages"];
[defaults synchronize];
【讨论】:
didFinishLaunchingWithOptions的第一行调用了sn-p,强制本地化似乎只在第二次加载应用程序时起作用