如何为目标语言创建CFLocale?

时间:2017-02-19 12:54:21

标签: swift swift3 locale core-foundation

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

  • CFLocaleRef myLocale = CFLocaleCopyCurrent()表示当前的语言环境;或者:

  • CFLocaleRef myLocale = CFLocaleCreate(kCFAllocatorDefault, CFSTR("ja")),用于目标语言环境。语言环境名称来自ISO 639-1/639-2 table的最右侧列,Apple指定其为语言代码的标准here。*

*注意 :非常古老的代码示例引用了长期语言代码,例如'日语',版本为may be expected Mac OS X早于10.4。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

CFLocale免费桥接至NSLocale,因此您只需致电

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

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

相应的Swift 3“叠加值类型”Locale (由CalendarDateFormatter,...使用, 比较SE-0069 Mutability and Foundation Value Types) 同样可以用

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