Я работаю над приложением, и клиенты хотят, чтобы оно было полностью локализовано. У нас есть несколько файлов Localizable.strings и InfoPlist.strings для каждого поддерживаемого языка.
В приложении есть возможность менять язык приложения "на лету".
(Это делается путем связывания другого пакета с выбранным языком) с основным пакетом. Поэтому, когда приложение вызывает [NSBundle.mainBundle localizedStringForKey:value:table:]
, оно фактически ссылается на пакет с выбранным пользователем языком.)
Здесь наступают плохие последствия. Оповещения о разрешении системы (запросы на использование местоположения, использование камеры и т. Д.) Не локализуются на языке, выбранном в приложении, но локализуются на предпочтительном языке из iOS
Настройки.
Так, например, если пользователь выбрал английский язык в качестве предпочтительного языка в настройках, но в нашем приложении он выбрал французский, все приложение будет на французском языке, кроме системных предупреждений, которые будут на английском языке.
Есть ли способ это исправить? Я имею в виду, программно выбрать, какой языковой системный сигнал тревоги следует считать предпочтительным?
Причина отклонения Apple: Модальные оповещения вашего приложения на английском языке, но основным языком вашего приложения является французский. Чтобы помочь пользователям понять, почему ваше приложение запрашивает доступ к определенной функции, модальные оповещения вашего приложения должны быть на том же языке, что и остальная часть вашего приложения.