Получение языка устройства от 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 должно быть что-то доступное, чтобы получить полное название языка, но я раньше этим не пользовался.