如何设置 ios 应用程序支持的语言? 例如,我使用 NSDate 获取当前日期。如果设备语言不是我支持的语言,NSDateFormatter 以设备的语言返回"day",但如果不支持该语言,我想使用英语。
我知道有一种方法可以使用 NSLocal 以特定语言获取一天,但我不想这样做,因为我也需要转换其他字符串。
Apple文档非常清楚地涵盖了这一点。我知道您所需要的只是"day"一词,但是如果您执行以下操作,以下内容将帮助您包含任何语言的任何单词:
1)您需要将应用程序中的所有单词(String
s)放入单个.swift
文件中。每个单词都应在函数中返回,该函数根据设备设置中设置的设备NSLocal
将此字符串转换为本地化字符串:
struct Localization {
static let all: String = {
return getLocalized("All")
}()
static let allMedia: String = {
return getLocalized("All Media")
}()
static let back: String = {
return getLocalized("Back")
}()
// ...and do this for each string
}
2)此文件还应包含一个将转换字符串的静态函数:
static func getLocalized(_ string: String) -> String {
return NSLocalizedString(string, comment: "")
}
在这里,NSLocalizedString(
方法将为您完成所有繁重的工作。如果将查看项目中的.XLIFF
文件(我们将处理该文件),并根据设备NSLocale
获取正确的字符串。此方法还包括一个"注释",用于告诉语言翻译器如何处理您随它一起传递的"字符串"参数。
3)查看放置在.swift
文件中的所有字符串,您需要将每个字符串都包含在.XLIFF
文件中。这是语言专家需要检查的文件,并在.XLIFF
中为每个字符串包含正确的翻译单词。正如我之前所说,这是一旦包含在项目中的文件,NSLocalizedString(
方法将搜索此文件并为您获取正确的翻译字符串。
就是这样!