Получение языка устройства от iOS и Android в одном формате

Моя команда создает приложение для Android и iOS. Приложение получает от сервера несколько уведомлений в различных формах, таких как push-уведомления и всплывающие окна пользовательского интерфейса.

Чтобы отправлять сообщения на нужном языке, я бы хотел, чтобы приложения на обеих платформах отправляли мне язык устройства в одном и том же формате.

Например, английский может быть en или же eng или даже English, но оно должно быть одинаковым для обоих устройств.

Существует ли формат имени языка, поддерживаемый iOS и Android? Если да, то каковы требования к языку устройства на обеих платформах?

2 ответа

Решение

Как выясняется, коды языков IETF BCP 47 iPhone можно конвертировать в коды Android ISO-639-2.

Я приму оба ввода в их исходном виде и конвертирую iPhone BCP 47 в ISO-639-2 на стороне сервера.

Android:

Locale.getDefault().getLanguage()       ---> en      
Locale.getDefault().getISO3Language()   ---> eng 
Locale.getDefault().getCountry()        ---> US 
Locale.getDefault().getISO3Country()    ---> USA 
Locale.getDefault().getDisplayCountry() ---> United States 
Locale.getDefault().getDisplayName()    ---> English (United States) 

IOS

NSString *language = [[NSLocale preferredLanguages] firstObject]; // ---> en

документация: https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/Articles/ChoosingLocalizations.html

Таким образом, вы можете использовать "en" для английского языка. Для ios должно быть что-то доступное, чтобы получить полное название языка, но я раньше этим не пользовался.

Другие вопросы по тегам