Swift:如何在应用程序内部更改语言?

时间:2019-03-30 18:16:33

标签: ios swift

我有一个带有本地化字符串文件的应用程序。 Here are what my localized string files look like。 我也有一个tableView,其中的单元格包含annexType(复选标记)。我想让用户在更改tableView中的支票时更改我的应用程序的语言。 这是我在应用程序设置的tableView中拥有的代码:

StatefulWidget

谢谢!

5 个答案:

答案 0 :(得分:1)

无法更改iphone的语言,但是如果您只想更改应用程序的语言,我认为是可以的:您可以将地图另存为plist或json文件,但系统{{1} }。而且不要使用函子.strings,只需封装函子就可以了,所有事情都将在控件上。

答案 1 :(得分:1)

大多数回答说“这是不可能的” 但是

有可能,并且可以通过简单的方法完成。

iOS应用程序中,每种语言都有捆绑软件,例如en.lproj是英语。您只需要从选定的语言中加载特定的包,然后从该包中获取可本地化的内容,例如:字符串,图像等。

    var selectedLanguage = "en"
    let path = Bundle.main.path(forResource: selectedLanguage, ofType: "lproj")
    let bundle = Bundle(path: path!)
    let localizedText = bundle!.localizedString(forKey: YOUR_TEXT_KEY, value: YOUR_TEXT_COMMENT, table: nil)

作为参考,我选择了一个LanguageDemo应用程序,您可以找到所有实现和完整的源代码。

答案 2 :(得分:0)

我知道“不可能”的答案在Stack Overflow中并不是很流行,但是无论如何。

不可能做的事。 iOS不允许您从应用程序内部更改应用程序的语言。没有相应的API,即使您以某种方式设法通过入侵(猴子补丁)iOS来实现此目的,Apple也不允许您的应用发布到iTunes商店。

“设置”应用(系统应用)中有一种语言设置,用户可以在其中设置语言。所有已安装的应用程序都将使用此语言设置。

答案 3 :(得分:0)

有一种方法可以做到,但是正如前面的回答所提到的,这不是最好的主意,并且可能未得到Apple应用程序审查的认可。但是,这是我尝试过的并且有效的方法:

UserDefaults.standard.set(["en"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()

每当用户选择您需要应用此代码的语言时,只需将[“ en”]替换为您选择的语言。请记住,用户需要退出应用程序才能正常运行。

答案 4 :(得分:-1)

关于发布等内容,这是不正确的,有一种方法,您什么都没有,没有任何api是对的,但这只是几行代码,没有什么复杂的... { {3}} 有您的问题的链接,我们有那个o0n学院,这个人是我们的教授,如果有您不了解的事情,我很乐意为您提供帮助,因为我2年后遇到了同样的问题...