在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似乎已经在几个方面发生了变化?
答案 0 :(得分:1)
以下是自2012年以来给出的Objective-C示例以来对Swift的API更改:
"ja" as CFString!
。这可以通过以下两行来完成:
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
(由Calendar
,DateFormatter
,...使用,
比较SE-0069 Mutability and Foundation Value Types)
同样可以用
let myLocale = Locale(identifier: "ja")
// or
let myLocale = Locale(identifier: Locale.canonicalIdentifier(from: "Japanese"))