相关疑难解决方法(0)

在iOS中获取当前的设备语言?

我想显示设备UI正在使用的当前语言.我会用什么代码?

我希望这是一个NSString完全拼写的格式.(不是@"en_US")

编辑:对于那些开车的人来说,这里有很多有用的评论,因为答案随着新的iOS版本的发展而演变.

cocoa-touch objective-c ios nslocale

420
推荐指数
14
解决办法
23万
查看次数

设置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)

localization ios swift

11
推荐指数
1
解决办法
4954
查看次数

标签 统计

ios ×2

cocoa-touch ×1

localization ×1

nslocale ×1

objective-c ×1

swift ×1