我想使我的应用程序使用多语言,所以我一直在寻找如何在Xcode中添加其他语言的应用程序,但是我看到了基于您手机语言的语言更改。
当用户在应用程序中选择语言时,是否可以设置一种语言?如果是这样,将来是否还可以记住所选的语言?因此,用户不必在每次重新启动应用程序时都选择它。
提前谢谢
答案 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")