Xcode:当用户选择语言时,如何更改应用程序的语言?

时间:2018-10-25 08:58:59

标签: ios swift xcode multilingual

我想使我的应用程序使用多语言,所以我一直在寻找如何在Xcode中添加其他语言的应用程序,但是我看到了基于您手机语言的语言更改。

当用户在应用程序中选择语言时,是否可以设置一种语言?如果是这样,将来是否还可以记住所选的语言?因此,用户不必在每次重新启动应用程序时都选择它。

提前谢谢

3 个答案:

答案 0 :(得分:0)

首先,您需要一个包含多种语言字符串的Localization.Strings文件。 阅读有关它们的here

在您有第二种方法时,有多种方法可以检测应用程序启动时用户选择了哪种语言,这种情况下常见的方法是userDefualts阅读有关here的信息。

因此,您可以实现Localization文件,并使用保存的值来检测userDefualts中使用的语言。

答案 1 :(得分:0)

本地化只是将您的应用翻译成多种语言的过程。国际化是使您的应用能够适应不同语言,地区和文化的过程。

请参阅链接以实施:-

https://codeburst.io/localization-of-ios-app-in-swift-4-and-xcode-9-3c7c7d53ae11

答案 2 :(得分:0)

例如,您需要将用户选择的应用程序语言保存在userDefaults中,此示例使用的是第三方库 SwiftyUserDefaults

使用这种方式,您需要添加.strings和“ Localizable _ ” +常规本地化方式的语言缩写,例如

您的西班牙语.string文件应命名

“ Localizable_es”,但您也可以在代码中自定义

这是步骤:

保存用户选择的应用语言:

func setupAppLanguage(lang:String) {
    Defaults[.appLanguage] = lang
 }

获取保存的语言:

static func getCurrentLang() ->String
  {
    if(Defaults[.appLanguage] == nil)
    {
        if(NSLocale.current.languageCode == nil)
        {
            return "en"
        }
        return NSLocale.current.languageCode!
    }else
    {
        return Defaults[.appLanguage] as String!
    }
}

获取本地化的表名语言:

static func getLocalizedTableName() ->String
{
    return "Localizable_\(Client.getCurrentLang())"
}

本地化方法:

//MARK: Localization Util
static func getLocalizedText(toLocalizeText:String) ->String{
    return NSLocalizedString(toLocalizeText,tableName: Client.getLocalizedTableName(), comment: "")
}

然后,您可以像使用getLocalizedText一样使用NSLocalizedString方法来替换

使用示例

self.labelText.text = Client.getLocalizedText(toLocalizeText: "k_glossary")