ios - 我可以将我的 iOS 应用程序本地化为西类牙语或德语,同时保留手机的其余部分为英语吗?

标签 ios swift localization

用户希望将我们的 iOS 应用语言设置与用户的 iPhone 语言完全分开。基本上,在应用程序本身内部,用户选择应用程序的语言,然后应用程序的 UI 和文本全部更改为所选语言。这比苹果的本地化标准更灵活,而且他们没有解决这种情况。对于如何实现这一目标,是否存在一些商定的最佳实践?

具体来说,用户可能希望应用程序的界面为西类牙语,但手机的其余部分仍为英语。

谢谢!

最佳答案

像在 iOS 中进行默认本地化一样创建 Localized.strings。然后使用此代码在应用程序中实现语言切换。

extension String {

    func localized() -> String {

       let selectedLanguage = UserDefaults.standard.string(forKey:) CURRENT_LANGUAGE) 

            guard let path = Bundle.main.path(forResource: selectedLanguage == "en" ? "Base" : selectedLanguage, ofType: "lproj") else {

                if let basePath = Bundle.main.path(forResource: "Base", ofType: "lproj"){

                    return Bundle(path: basePath)?.localizedString(forKey: self, value: "", table: nil) ?? self
                }

                return self
            }

            return Bundle(path: path)?.localizedString(forKey: self, value: "", table: nil) ?? self


    }
}

您可以通过调用 let text = "LOGIN_SCREEN_TITLE".localized() 来访问本地化字符串,其中 LOGIN_SCREEN_TITLE 已添加到本地化文件中.

enum LanguagesSupported: String {

    case English = "en"
    case French  = "fr"
}

UserDefaults.standard.set(LanguagesSupported.French.rawValue, forKey: CURRENT_LANGUAGE)

关于ios - 我可以将我的 iOS 应用程序本地化为西类牙语或德语,同时保留手机的其余部分为英语吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51605315/

相关文章:

ios - Mac OS 安装 MongooseIM 失败

ios - 如何限制 NSURLCache 磁盘大小

ios - UIAppearance 边缘插入

swift - 如何在不创建新的空实例的情况下获取类的实例

wpf - 追加 WPF 资源字符串

android - 可以处理 Android SQL 数据库中字符串的本地化吗?

codeigniter - PyroCMS 语言支持

objective-c - #ifdef __OBJC__ 在做什么以及为什么下面列出库?

ios - swift 中的强类型选择器

ios - 获取 AVAudioPlayer 一次播放多种声音