如何更改 Xcode 游乐场上的语言环境
How can I change the locale on the Xcode Playground
我想更改 Xcode Playground 上的语言环境以测试本地化。
我找到了这个解决方案,但它不适用于 Xcode 6.3.2 Playground:
http://natashatherobot.com/locale-playground-swift/
哦,我找到解决办法了!
extension NSLocale {
class func mono_currentLocale() -> NSLocale {
return NSLocale(localeIdentifier: "fr")
}
}
let original = class_getClassMethod(NSLocale.self, #selector(getter: NSLocale.currentLocale))
let swizzled = class_getClassMethod(NSLocale.self, #selector(NSLocale.mono_currentLocale))
method_exchangeImplementations(original, swizzled)
编辑:Swift 4.1 版本:
extension NSLocale {
@objc class func mono_currentLocale() -> NSLocale {
return NSLocale(localeIdentifier: "fr")
}
}
let original = class_getClassMethod(NSLocale.self, #selector(getter: NSLocale.current))!
let swizzled = class_getClassMethod(NSLocale.self, #selector(NSLocale.mono_currentLocale))!
method_exchangeImplementations(original, swizzled)
XCode 13 / Swift 5
要更改 playground 中的当前语言环境,您可以创建 NSLocale
的扩展并覆盖 currentLocale
:
extension NSLocale {
@objc
static let currentLocale = NSLocale(localeIdentifier: "en_GB") // Set a needed locale
}
let formatter = NumberFormatter()
formatter.numberStyle = .currency
let text = formatter.string(from: 12345.67 as NSNumber)!
print(text)
输出:
£12,345.67
NOTE: It also works with unit tests.
我想更改 Xcode Playground 上的语言环境以测试本地化。
我找到了这个解决方案,但它不适用于 Xcode 6.3.2 Playground: http://natashatherobot.com/locale-playground-swift/
哦,我找到解决办法了!
extension NSLocale {
class func mono_currentLocale() -> NSLocale {
return NSLocale(localeIdentifier: "fr")
}
}
let original = class_getClassMethod(NSLocale.self, #selector(getter: NSLocale.currentLocale))
let swizzled = class_getClassMethod(NSLocale.self, #selector(NSLocale.mono_currentLocale))
method_exchangeImplementations(original, swizzled)
编辑:Swift 4.1 版本:
extension NSLocale {
@objc class func mono_currentLocale() -> NSLocale {
return NSLocale(localeIdentifier: "fr")
}
}
let original = class_getClassMethod(NSLocale.self, #selector(getter: NSLocale.current))!
let swizzled = class_getClassMethod(NSLocale.self, #selector(NSLocale.mono_currentLocale))!
method_exchangeImplementations(original, swizzled)
XCode 13 / Swift 5
要更改 playground 中的当前语言环境,您可以创建 NSLocale
的扩展并覆盖 currentLocale
:
extension NSLocale {
@objc
static let currentLocale = NSLocale(localeIdentifier: "en_GB") // Set a needed locale
}
let formatter = NumberFormatter()
formatter.numberStyle = .currency
let text = formatter.string(from: 12345.67 as NSNumber)!
print(text)
输出:
£12,345.67
NOTE: It also works with unit tests.