Почему я получаю разные Locale.current в разных приложениях? - PullRequest
0 голосов
/ 19 мая 2018

У меня есть два разных приложения, которые я запускаю из XCode на одном устройстве .

В приложении AppDelegate didFinishLaunchingWithOptions я распечатываю следующее сообщение об отладке:

print( Locale.current )

В одном приложении оно печатает sv_SE (как я и ожидал), но в другом приложении оно печатаетвне en_SE !!

В результате dateFormatter.string будет выдавать английские имена вместо шведских имен, которые я ожидал.

func dayOfWeek(date:Date) -> String {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "EEEE"
    dateFormatter.locale = Locale.current // locale is  en_SE not sv_SE   ???
    let dayname =  dateFormatter.string(from: date).capitalized
    return dayname   // returns SATURDAY not LÖRDAG    
}

Вопрос: Почему я получаю разные локалив разных приложениях при запуске на одном устройстве?

1 Ответ

0 голосов
/ 19 мая 2018

Я нашел ответ здесь: Locale.current сообщает о неправильном языке на устройстве

Ответ был таков: Locale.current это не языковой стандарт, установленный на устройстве, но это «компромисс» между тем языком, который поддерживает приложение.Мое первое приложение поддерживало шведский, а второе - нет.Чтобы получить локаль на устройстве, вместо этого следует использовать Locale.preferredLanguages.first, как это сделано в ответе на Locale.current, сообщающий о неверном языке на устройстве .

...