iOS 如何重新启动应用程序以更改语言 Swift 4

2023-11-29

我使用多语言应用程序,我想在配置文件用户中手动更改语言。

我已经有 Localization.string

如果我更改设备语言,应用程序中的语言将更改为。

但我想从用户配置文件示例中手动更改语言:

enter image description here

为此,我使用下一个代码:

private func changeToLanguage(_ langCode: String) {
    if Bundle.main.preferredLocalizations.first != langCode {
        let message = "In order to change the language, the App must be closed and reopened by you."
        let confirmAlertCtrl = UIAlertController(title: "App restart required", message: message, preferredStyle: .alert)

        let confirmAction = UIAlertAction(title: "Close now", style: .destructive) { _ in
            UserDefaults.standard.set([langCode], forKey: "AppleLanguages")
            UserDefaults.standard.synchronize()
            exit(EXIT_SUCCESS)
        }
        confirmAlertCtrl.addAction(confirmAction)

        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
        confirmAlertCtrl.addAction(cancelAction)

        present(confirmAlertCtrl, animated: true, completion: nil)
    }
    UserDefaults.standard.set([langCode], forKey: "AppleLanguages")
    UserDefaults.standard.synchronize()
}



  @IBAction func didPressChangeLanguageButton() {
    let message = "Change language of this app including its content."
    let sheetCtrl = UIAlertController(title: "Choose language", message: message, preferredStyle: .actionSheet)

    for languageCode in Bundle.main.localizations.filter({ $0 != "Base" }) {
        let langName = Locale.current.localizedString(forLanguageCode: languageCode)
        let action = UIAlertAction(title: langName, style: .default) { _ in
            self.changeToLanguage(languageCode) // see step #2
        }
        sheetCtrl.addAction(action)
    }

    let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
    sheetCtrl.addAction(cancelAction)

    sheetCtrl.popoverPresentationController?.sourceView = self.view
    sheetCtrl.popoverPresentationController?.sourceRect = self.changeLanguageButton.frame
    present(sheetCtrl, animated: true, completion: nil)
}

我使用这个捆绑包:

Bundle.main.localizations.filter({ $0 != "Base" })
Locale.current.localizedString(forLanguageCode: "en")

对于这段代码我有:

enter image description here

当我按下按钮时,我收到错误:

原因:“添加到 UIAlertController 的操作必须有标题”

我不知道问题出在哪里。


在我最近的应用程序中我使用了这个localize,它很简单,无需关闭应用程序,我们就可以根据语言切换应用程序。

将 localize.swift 文件添加到您的项目中,最后在您需要的地方调用以下函数

if let pre = Bundle.main.preferredLocalizations.first, !pre.isEmpty  {
            if pre == Language.english.rawValue{
                Language.language = Language.arabic
            }else{
                 Language.language = Language.english
            }

        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 如何重新启动应用程序以更改语言 Swift 4 的相关文章

  • 我如何从子视图导航到 mainviewcontroller

    我刚刚开始使用 swift 我创建了一个子视图 上面有一个按钮 我想使用该按钮将我带到我的主视图控制器 我对不同的按钮使用了相同的功能 但是在同一文件中具有一个功能允许该按钮工作 代码如下 var playAgainButton UIBut
  • SwiftUI 列表与右侧的部分索引?

    是否可以有一个在右侧有索引的列表 就像下面 SwiftUI 中的示例一样 我在 SwiftUI 中做了这个 Contacts swift TestCalendar Created by Christopher Riner on 9 11 2
  • 无法构建 Saurik 的 ldid 实用程序

    当我执行此命令 make sh 时 我遇到这些错误 构建用于越狱调整开发的 ldid 实用程序 Bilals Mac ldid billy make sh g arch i386 arch x86 64 arch ppc arch armv
  • XMPPFramework - 如何创建多用户聊天室?

    我如何使用XMPPFramework在iPhone中实现GroupChat 我尝试了以下代码 但房间没有创建 我如何知道房间是否创建 XMPPRoomDelegate没有被调用 当Stream断开连接时 调用handleDidLeaveRo
  • 将永久字符添加到 UITextField

    有没有办法将字母永久添加到 UITextField 中 用户无法删除它 我想添加一个字符 用户无法删除它 但他们仍然可以在之后添加字母 Cheers 附注这是适用于 iOS 的 A UITextField有一个名为 应该更改范围内的字符 的
  • Swift Generics 在使用继承时不会实例化泛型

    我有课Alpha and Berry class Alpha class Berry Alpha 我有一个使用继承及其泛型的函数 func myFunc
  • 如何在 Firebase 控制台中使用 Apple 新的 APN .p8 证书

    随着最近 Apple 开发者帐户的升级 我面临着一个困难 在尝试创建推送通知证书时 它为我提供了 p8 证书 而不是可以导出到 p12 的 APNs 证书 Firebase 控制台仅接受 p12 证书 那么我如何从这些新的 p8 证书中获取
  • 如何知道我的应用程序使用了多少 iCloud 空间?

    有没有办法查看我的应用程序正在备份到 iCloud 的内容以及它消耗了多少内存 Settings gt iCloud gt Storage Backup gt Manage Storage将显示正在备份的总计内容 iOS 会备份位于应用程序
  • 使用完成处理程序在 Swift 中调用连续动画

    我正在制作一个可以显示化学反应动画的应用程序 每个原子都是一个 SCNSphere 并通过 SCNActions 进行动画处理 我尝试使用 runAction 中的完成处理程序在当前操作完成后调用下一个动画 因为每个原子必须做出很多不同的运
  • 导入 RNCryptor 后架构 armv7 的未定义符号

    我导入了 RNCryptor 可以在这里找到 https github com rnapier RNCryptor https github com rnapier RNCryptor进入我的应用程序 但是 我在日志中收到了三个错误 Und
  • 当我输入字符时,SwiftUI 中的 TextField 失去焦点

    当我在文本字段中输入字符时遇到问题 在练习集视图 我必须重新单击文本框才能输入另一个字符 如果我从文本字段中删除绑定 我可以流畅地输入文本 我认为这与我的演讲者班级和更新集函数重新创建一个集合实例 因为我必须替换数组中两层深处的一些值 Co
  • 当地图视图只是屏幕的一部分时,如何在 iOS 模拟器中进行捏合?

    我在 iPad 上有一个视图 我正在添加MKMapView也就是说 全屏高度的一半 然而 当我尝试在 iOS 模拟器上进行捏合时 它不起作用 因为 to nubs 填充了模拟器上的整个 iPad 视图 And so with the map
  • 在 Xcode 5 中重命名 iOS 项目[重复]

    这个问题在这里已经有答案了 我需要重命名一个 iOS 项目 有没有办法在不开始一个全新项目的情况下做到这一点 我发现的所有其他信息都与 Xcode 4 或旧版本相关 这些方法似乎使项目崩溃 我在尝试任何名称更改之前创建了一个快照 在 Xco
  • 适用于 iPhone / iPad / iOS 的快速、精益 PDF 查看器 - 提示和提示?

    最近有很多关于绘制 PDF 的问题 是的 您可以使用UIWebView但这无法提供您所期望的优秀 PDF 查看器的性能和功能 您可以绘制PDF页面到 CALayer http www cocoabuilder com archive coc
  • 减少 CoreData 的调试输出?

    我正在开发一个使用 CoreData 的 iOS macOS 项目 它工作正常 但它会向控制台输出大量调试信息 这使得控制台无法使用 因为我的打印语句隐藏在所有与 CoreData 相关的内容中 我有一个非常简单的 CoreData 设置
  • 推送动画,没有阴影和停电

    我有一个简单的iOS NavigationController基于应用程序 二UICollectionViews 相继 如果元素打开 第一个合集 被点击时 第二集 将被打开 非常简单 重要的提示 Both UICollectionViews
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • Swift 中的 import 语句是否有相关成本?

    阅读字符串宣言 我看到一个段落 https github com apple swift blob master docs StringManifesto md batteries included关于避免Foundation不需要的时候导
  • SwiftUI:发送电子邮件

    在正常情况下UIViewController在 Swift 中 我使用此代码发送邮件 let mailComposeViewController configuredMailComposeViewController mailCompose
  • iOS - UITableViewCell 使文本加粗

    我有一个字符串 NSString userInfo James Johnson james 我想做的就是大胆James Johnson并保留 james正常字体 所以我尝试过的是使用NSAttributedString但为了完成这个过程 我

随机推荐

  • 子项目中未解决的包依赖性

    在我的 Kotlin Spring Boot 项目中 我使用 Kotlin DSL Gradle 包含三个子项目 其中两个是security这取决于database 在 IntelliJ 中 应用程序成功运行并按预期执行 当作为 Sprin
  • 在子目录中设置 CakePHP; WordPress 安装在根目录下

    我已经寻找解决方案两个小时了 但似乎没有任何效果 这是我的问题 我已将 WordPress 安装在根目录 var www 中 所以通过去http www geekderek com 我看到我的 WordPress 网站 我将 CakePHP
  • 如何从代码中执行onTouch事件?

    Using myObject performClick 我可以从代码中模拟点击事件 像这样的东西存在吗onTouch事件 我可以通过 Java 代码模仿触摸操作吗 EDIT 这是我的onTouch听众 myObject setOnTouch
  • gcc 相当于#pragma comment

    我正在尝试编写一个宏 使用 gcc 编译器向可执行文件添加注释 这不是为了链接目的 我只是想添加文字评论 gcc 中是否有用于此目的的 pragma comment 等效项 我不确定 向可执行文件添加注释 是什么意思 谁或什么会消费 展示甚
  • SIMD 的优先选择是始终摆脱分支吗?

    如果您正在编写一些将由另一个程序运行的 SIMD 代码 那么摆脱分支以提高性能是否总是有利的 我听说甚至做额外的操作只是为了避免if else语句等仍然快得多 我问这个是因为我做了一些分支 基本上是这样的 axis x 0 y 1 z 2
  • 从列表框用户表单中删除一行

    我有一个列表框 显示 Excel 工作表的行 我需要添加一个删除按钮来删除所选行 我试过这个 Private Sub CommandButton3 Click Dim i As Integer For i 0 To Range A65356
  • 如何从 PHP 中 var_dump 的输出创建数组?

    我怎样才能解析输出var dump在 PHP 中创建数组 Use 变量导出如果你想要一个也是有效 PHP 代码的表示 a array 1 2 array a b c dump var export a true echo dump 将显示
  • AVAudioPlayer 的 NSOSStatusErrorDomain 代码=-54

    AVAudioPlayer 在某些本地 MP3 文件上出现以下错误 Error Domain NSOSStatusErrorDomain Code 54 null 我正在将 zip 文件下载到 Documents 目录 然后使用名为的库解压
  • 从 NSMutableArray 中删除 for 循环中的对象

    我正在与一个UITableView对于作为数据源的数组中的每个对象UITableView 如果它们符合某个条件我就会删除它们if陈述 我的问题是它只删除数组中的所有其他对象 Code UIImage isCkDone UIImage ima
  • 为什么 C++ 中存在从指针到 bool 的隐式类型转换?

    考虑班级foo有两个这样定义的构造函数 class foo public foo const std string filename std cout lt lt ctor 1 lt lt std endl foo const bool s
  • 如何在 Android 上将 TTS 输出保存为音频文件?

    这是我在此的头一篇博文 我是 Android 编程新手 我想创建一个应用程序 可以将文本到语音的输出保存到音频文件中到我的数据库中 我听说过合成到文件 但事实并非如此 SynthesizeToFile 应该创建一个 wav 您可以解码并发送
  • 下拉菜单 - 使

    我有点疯狂地试图实现我的客户想要的东西 我可以告诉他们这是不可能的 但我喜欢挑战 基本上 我正在尝试做一个下拉菜单 其中下拉菜单 ul or ul menu li ul 被 div 包围 有点儿 ul class menu li a hre
  • Django get_object_or_404() 与 DateTimeField

    我现在正在读 Django by Example 一书 我在使用参数查找记录时遇到问题 我的代码如下所示 设置 py TIME ZONE Asia Seoul 模型 py published models DateTimeField def
  • 关闭所有打开视图控制器的单一函数

    我有一个应用程序 它是单视图应用程序 我有一个导航控制器链接到根视图控制器的所有子控制器 在每个子控制器中 我都有一个注销按钮 我想知道是否可以有一个可以调用的函数 该函数将关闭一路上打开的所有控制器 无论用户按下注销时当前打开哪个控制器
  • 如何从 Python 集合中随机选择 2 个项目? [复制]

    这个问题在这里已经有答案了 我目前有一个 n 大小的 Python 集 其中 n gt 0 是否有一个快速的 1 或 2 行 Python 解决方案可以做到这一点 例如 该集合将如下所示 fruits set apple orange wa
  • Java 线程中的“阻塞计数”和“等待计数”是什么意思?

    我使用 JConsole 来观看线程 它显示 name Thread 6 state BLOCKED sun misc Launcher AppClassLoader 19821f owner Thread 3 blocked Count
  • 由于“拒绝连接”,我无法使用 MySQL

    我正在尝试在 Windows XP 上运行 MySQL 的免安装版本 位于C mysql 在我的机器上 当我尝试连接到 MySQL 时 我在 PHP 文件中收到错误消息 无法连接 无法连接 因为目标机器主动拒绝 我已经编辑了配置文件my i
  • 未定义的属性: Illuminate\Database\Eloquent\Collection:: Laravel 5.2

    我试图让物联网显示订单中的商品 但我不断收到此错误 这些是我的模型 class westcoorder extends Model protected table westcoorders protected with westcoorde
  • 如何将线程函数的地址作为回调传递给winapi?

    我有一个简单的线程 在执行过程中我尝试使用线程中定义的函数之一的地址调用 EnumWindows 所以我试图这样做 EnumWindows cbEnumWindowsClickOK 0 其中 cbEnumWindowsClickOK 是在线
  • iOS 如何重新启动应用程序以更改语言 Swift 4

    我使用多语言应用程序 我想在配置文件用户中手动更改语言 我已经有 Localization string 如果我更改设备语言 应用程序中的语言将更改为 但我想从用户配置文件示例中手动更改语言 为此 我使用下一个代码 private func