Кавычки по умолчанию в iOS 11 изменены на «» и «»

До iOS 11 кавычки по умолчанию были ASCII ' и ", но теперь они изменены на ' ' и «» (фигурные кавычки). Мне приходится долго нажимать клавишу кавычек на виртуальной клавиатуре, чтобы ввести обычные, и у меня нет возможности ввести их на Smart Cover.

Я программист, и мне нужно использовать ' и ", есть ли способ изменить их обратно?

Я подозреваю, что эта проблема связана с моим языком и настройками региона, я нахожусь в Китае, и мой iPad язык, кстати, английский.


Это в настройках | Общие | Клавиатура | Умная пунктуация.


Перейти к системным предисловиям, клавиатуре. В окне клавиатуры щелкните вкладку текста. В этом окне справа есть возможность использовать умные кавычки. Снимите флажок.

2



Добавление кавычек в Swift

Есть простой способ в Swift для добавления кавычек к строке? Кавычки должны правильно локализоваться (см. Https://en.wikipedia.org/wiki/Quotation_mark) в зависимости от языковых настроек пользователя. Я хотел бы показать строку в UILabel после добавления кавычек.

Например:

  var quote: String! Quote = "  Быть или не быть ... "//одна или несколько строк кода, которые добавляют локализованные кавычки  

Для французского пользователя: « Быть или не быть … »

Для немецкого пользователя: « Быть или не быть … »


Использование информации из http://nshipster.com/nslocale/:

let locale = NSLocale.currentLocale () let qBegin = locale  .objectForKey (NSLocaleQuotationBeginDelimiterKey) как?  Нить ??  "" "let qEnd = locale.objectForKey (NSLocaleQuotationEndDelimiterKey) as? String ??"  "" let quote = qBegin + "Быть или не быть ..." + qEndprint (quote)  

Примеры результатов:

 Выходные данные локали de «Быть ​​или не быть ...» en «Быть ​​или не быть ...» fr «Быть ​​или не быть  быть ... »ja「 Быть или не быть ... 」

Я не знаю, может ли ключ-разделитель начала/конца быть undefined для alocale. В этом случае в приведенном выше коде будет использоваться обычная двойная кавычка ".


Используя ту же логику, но с современным и простым синтаксисом.

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

Тогда вы можете использовать его просто так:

  print ("Быть или нет  быть...". quoted)  

Результаты

 Выходные данные локали de «Быть ​​или не быть ...» en «Быть ​​или не быть ...  ”Fr« Быть или не быть ... »ja「 Быть или не быть ... 」

Также я советую вам прочитать все Руководство Apple по интернационализации и локализации


  пусть  quote = "" Быть или не быть ...  "" println (quote)  

вывод Будет: «Быть или не быть …»

5

Оцените статью
clickpad.ru
Добавить комментарий