首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置"AppleLanguages“不会改变应用程序语言

设置"AppleLanguages“不会改变应用程序语言
EN

Stack Overflow用户
提问于 2015-06-10 07:10:18
回答 7查看 22.5K关注 0票数 9

我正在尝试实现一个可以改变应用语言的函数。

我试着把它设置成这样

代码语言:javascript
运行
复制
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject("de", forKey: "AppleLanguages")

在应用程序重新启动之后,语言仍然是“系统默认”。

现在,我通过设置Scheme > Application Language > language测试不同的语言。

但是,用户是否可以单击一个按钮并在重新启动后查看所选的语言?

另外,为了避免在重启时更改语言,应该如何做到这一点?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-06-10 07:42:44

是的,你可以立即改变应用语言,

代码语言:javascript
运行
复制
var language = "de"
let path = NSBundle.mainBundle().pathForResource(language, ofType: "lproj")
let bundle = NSBundle(path: path!)
let string = bundle?.localizedStringForKey("key", value: nil, table: nil)

将您的NSUserDefaults值用于语言。

票数 10
EN

Stack Overflow用户

发布于 2016-12-16 02:06:11

您必须使用数组而不是字符串设置AppleLanguages键:

代码语言:javascript
运行
复制
UserDefaults.standard.set(["de"], forKey: "AppleLanguages")
票数 19
EN

Stack Overflow用户

发布于 2016-07-18 05:49:19

下面是在swift发布之前如何改变语言的方法-

让我说,我想强制Hebrew本地化:

1.创建您自己的Main.swift类

代码语言:javascript
运行
复制
import Foundation
import UIKit

// Your initialization code here
let langCultureCode: String = "he_IL"
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject([langCultureCode], forKey: "AppleLanguages")
defaults.synchronize()

UIApplicationMain(Process.argc, Process.unsafeArgv, nil, NSStringFromClass(AppDelegate))

2.解除AppDelegate.swift的“主要”责任

代码语言:javascript
运行
复制
//@UIApplicationMain <-- COMMENT THIS OUT
class AppDelegate: UIResponder, UIApplicationDelegate 

这将使您的应用程序被迫在不需要任何启动的情况下进行区域设置。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30749459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档