我想显示设备UI正在使用的当前语言.我会用什么代码?
我希望这是一个NSString完全拼写的格式.(不是@"en_US")
编辑:对于那些开车的人来说,这里有很多有用的评论,因为答案随着新的iOS版本的发展而演变.
我知道有不少帖子说不应该这样做,或者不可能.我修改了一些想法,现在我问这个问题,因为我想绝对确定没有其他选择.
选项1:
最流行的解决方案是改变AppleLanguages在这个岗位.我不介意要求重启,所以这对我来说是一个可以接受的解决方案,除了你不能以编程方式重启你的应用程序(找不到方法,或者被Apple拒绝).要求用户手动重启应用程序并不理想.
选项2:
接下来的解决办法是让合适的包和执行localizedStringForKey的每一个查询UILabel,UIButton等等.这可能是一个有点乏味,但还好我,因为我已经加入localizationProperties(类似于此),这些意见让我能有一个集中的字符串文件.
AppDelegate.swift:
static var userLanguage: String?
{
set
{
let defaults = NSUserDefaults.standardUserDefaults();
defaults.setObject(newValue, forKey: LanguageKey);
defaults.synchronize();
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle());
instance.window?.rootViewController = storyboard.instantiateInitialViewController();
}
get
{
let defaults = NSUserDefaults.standardUserDefaults();
return defaults.stringForKey(LanguageKey);
}
}
Run Code Online (Sandbox Code Playgroud)
Localization.swift:
private var bundle: NSBundle
{
get
{
let bundle: NSBundle;
#if TARGET_INTERFACE_BUILDER
bundle = NSBundle(forClass: self.dynamicType);
#else
bundle = NSBundle.mainBundle();
#endif
let lang: String;
if(AppDelegate.userLanguage …Run Code Online (Sandbox Code Playgroud)