2017-01-07 4 views
2

Если я прошу идентификатор текущих локали на прошивке, он возвращает только строковый идентификатор:Почему NSLocale.current.identifier включает валюту в macOS?

let identifier = NSLocale.current.identifier // en_GB 

Однако на MacOS 10.12.2 он также возвращает валюта:

let identifier = NSLocale.current.identifier // [email protected]=GBP 

Является ли это ошибка или ожидаемое поведение?

+0

Есть ли более подходящий способ для идентификатора типа 'en_GB',' en_US'? – squarefrog

+0

Я не вижу это на macOS 10.12.2. Вы уверены, что во всплывающем меню «Системные настройки»> «Язык и регион»> «Регион» указано «Соединенное Королевство», а не «Соединенное Королевство (Custom)» или что-то в этом роде? Если вы нажмете кнопку «Дополнительно» в нижней части окна, включена опция «Восстановить значения по умолчанию»? Если вы нажмете его и повторите проверку, проблема остается? –

+0

Интересно. Он был установлен в 'United Kingom (Custom)'. Однако это заставило меня пересмотреть мой подход. – squarefrog

ответ

0

Я думаю, что лучший вариант для меня здесь - создать код сам. Чтобы помочь с этим я создал расширение на Locale:

extension Locale { 
    var iso3166code: String { 
     guard 
      let language = languageCode, 
      let region = regionCode 
      else { return "en-US" } 
     return "\(language)-\(region)" 
    } 
} 

Хотя это достаточно точным для моих целей, вероятно, вы должны убедиться, что он возвращает ожидаемые значения для вашего проекта.

 Смежные вопросы

  • Нет связанных вопросов^_^