2015-06-30 16 views
15

Bir String'e tırnak işaretleri eklemek için Swift'de basit bir yol var mı? Tırnak işaretleri, kullanıcının dil ayarlarına göre düzgün bir şekilde yerelleştirilmelidir (bkz. https://en.wikipedia.org/wiki/Quotation_mark). Sözleri ekledikten sonra bir UILabel dizesini göstermek istiyorum. ÖrneğinSwift'e Tırnaklar Ekleme

: Fransız kullanıcı için

var quote: String! 
quote = "To be or not to be..." 
// one or more lines of code that add localized quotation marks 

: « olmak ya da olmamak ... Alman kullanıcı için »

: „ olmak ya da olmamak. .. ”

cevap

30

http://nshipster.com/nslocale/ gelen bilgileri kullanarak: ut olacak

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) 

örnek sonuçlar: başlarsanız bilmiyorum

 
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...」 

/son sınırlayıcı anahtar, yerel ayar için tanımsız olabilir. Bu durumda yukarıdaki kod, çift tırnaklı " normuna geri dönecektir.

0
let quote = "\"To be or not to be...\"" 
println(quote) 

outp "Olmak ya da olmamak ..."

+0

teşekkür ederiz okumanızı tavsiye. Evet, bu basit görünüyor ama yerelleştirmiyor. – jerry

+0

size ulaşamadım – vijeesh

+0

Lütfen farklı dillerdeki tırnak işareti stillerini gösteren sorudaki Vikipedi bağlantısına bakınız. – jerry

1
Aynı mantıkla Swift 4

ancak modern ve basit bir sözdizimi ile.

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 
    } 
} 

Sonra böyle basitçe kullanabilirsiniz:

print("To be or not to be...".quoted) 

Ayrıca

 
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...」 

Sonuçlar, ben bütün Apple'ın Internationalization and Localization Guide