iOS应用程序本地化



如何设置 ios 应用程序支持的语言? 例如,我使用 NSDate 获取当前日期。如果设备语言不是我支持的语言,NSDateFormatter 以设备的语言返回"day",但如果不支持该语言,我想使用英语。

我知道有一种方法可以使用 NSLocal 以特定语言获取一天,但我不想这样做,因为我也需要转换其他字符串。

Apple文档非常清楚地涵盖了这一点。我知道您所需要的只是"day"一词,但是如果您执行以下操作,以下内容将帮助您包含任何语言的任何单词:

1)您需要将应用程序中的所有单词(Strings)放入单个.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(方法将搜索此文件并为您获取正确的翻译字符串。

就是这样!

最新更新