jer*_*rry 17 localization ios swift
Swift中有一种直接的方法可以为String 添加引号吗?引号应根据用户的语言设置正确本地化(请参阅https://en.wikipedia.org/wiki/Quotation_mark).我想在添加引号后在UILabel中显示字符串.
例如:
var quote: String!
quote = "To be or not to be..."
// one or more lines of code that add localized quotation marks
Run Code Online (Sandbox Code Playgroud)
对于法国用户:«成为或不成为......»
对于德国用户:"成为或不成为......"
Mar*_*n R 31
使用http://nshipster.com/nslocale/中的信息:
let locale = NSLocale.currentLocale()
let qBegin = locale.objectForKey(NSLocaleQuotationBeginDelimiterKey) as? String ?? "\""
let qEnd = locale.objectForKey(NSLocaleQuotationEndDelimiterKey) as? String ?? "\""
let quote = qBegin + "To be or not to be..." + qEnd
print(quote)
Run Code Online (Sandbox Code Playgroud)
样品结果:
Locale Output de „To be or not to be...“ en “To be or not to be...” fr «To be or not to be...» ja ?To be or not to be...?
我不知道是否可以为语言环境定义开始/结束分隔符键.在这种情况下,上面的代码将回退到正常的双引号".
使用相同的逻辑,但使用现代且简单的语法。
extension String {
static var quotes: (String, String) {
guard
let bQuote = Locale.current.quotationBeginDelimiter,
let eQuote = Locale.current.quotationEndDelimiter
else { return ("\"", "\"") }
return (bQuote, eQuote)
}
var quoted: String {
let (bQuote, eQuote) = String.quotes
return bQuote + self + eQuote
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样简单地使用它:
print("To be or not to be...".quoted)
Run Code Online (Sandbox Code Playgroud)
结果
语言环境输出 de “成为或不成为……” zh_cn “成为或不成为……” fr «成为或不成为...» ja ? 成为或不成为...?
另外,我建议您阅读整个 Apple 的国际化和本地化指南
| 归档时间: |
|
| 查看次数: |
3334 次 |
| 最近记录: |