如何为目标语言制作 CFLocale?

How do I make a CFLocale for a target language?

在Objective C中,可以如下创建一个CFLocale(取自2012年的this post):

*注意:非常古老的代码示例指的是长语言代码,如'Japanese',may be expected [=] 38=] OS X 大于 10.4.

如何在 Swift 3 中创建 CFLocale,因为 API 似乎在几个方面发生了变化?

以下是自 2012 年给出的 Objective-C 示例以来 API 对 Swift 的更改:

这可以通过以下两行来完成:

let localeIdentifier: CFLocaleIdentifier = CFLocaleCreateCanonicalLanguageIdentifierFromString(kCFAllocatorDefault, "ja" as CFString!)
let locale: CFLocale = CFLocaleCreate(kCFAllocatorDefault, localeIdentifier)

CFLocale toll-free 桥接到 NSLocale,因此您只需调用

 let myLocale = NSLocale(localeIdentifier: "ja")
 // or
 let myLocale = NSLocale(localeIdentifier: NSLocale.canonicalLocaleIdentifier(from: "Japanese"))

取决于您是否拥有 ISO 639-1 语言代码。

对应Swift3"overlay value type"Locale (由 CalendarDateFormatter、...使用, 比较 SE-0069 Mutability and Foundation Value Types) 同样可以用

创建
let myLocale = Locale(identifier: "ja")
// or 
let myLocale = Locale(identifier: Locale.canonicalIdentifier(from: "Japanese"))