【发布时间】:2017-11-22 03:32:13
【问题描述】:
如何设置 ios 应用程序支持的语言? 例如,我使用 NSDate 来获取当前日期。如果设备语言不是我支持的语言,NSDateFormatter 会以设备语言返回“day”,但如果我不支持该语言,我想使用英语。
我知道有一种方法可以使用 NSLocal 以特定语言获得一天,但我不想这样做,因为我还需要转换其他字符串。
【问题讨论】:
标签: ios cocoa-touch localization
如何设置 ios 应用程序支持的语言? 例如,我使用 NSDate 来获取当前日期。如果设备语言不是我支持的语言,NSDateFormatter 会以设备语言返回“day”,但如果我不支持该语言,我想使用英语。
我知道有一种方法可以使用 NSLocal 以特定语言获得一天,但我不想这样做,因为我还需要转换其他字符串。
【问题讨论】:
标签: ios cocoa-touch localization
Apple documentation 非常清楚地说明了这一点。我知道您只需要“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 file 中。这是语言专家需要检查的文件,并在.XLIFF 中包含每个字符串的正确翻译单词。正如我之前所说,这是您项目中包含的文件,NSLocalizedString( 方法将搜索此文件并为您获取正确的翻译字符串。
就是这样!
【讨论】: