Не удается локализовать строки info.plist

Мне нужно локализовать два ключа info.plist: NSLocationUsageDescription и NSCameraUsageDescription . Поэтому я попытался создать новый файл с именем InfoPlist.strings, а затем я его локализовал, но приложение всегда показывает строки, хранящиеся в файле info.plist. Что не так?

Официальная документация из справочной информации по ключевым словам

Локализованные значения не сохраняются в самом файле Info.plist. Вместо этого вы сохраняете значения для определенной локализации в файле строк с именем InfoPlist.strings. Вы размещаете этот файл в той же директории проекта, которая используется для хранения других ресурсов для той же локализации. Содержимое файла InfoPlist.strings – это отдельные ключи, которые вы хотите локализовать, и соответствующее значение перевода. Подпрограммы, которые ищут ключевые значения в файле Info.plist, учитывают языковые предпочтения пользователя и возвращают локализованную версию ключа (из соответствующего файла InfoPlist.strings), когда он существует. Если локализованная версия ключа не существует, подпрограммы возвращают значение, хранящееся в файле Info.plist.

Мой файл InfoPlist.strings:

 NSCameraUsageDescription = "hello"; NSLocationUsageDescription = "hello hello"; 

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

Просто зайдите в настройки проекта, откройте «Build Phases» и посмотрите, можно ли найти файл в «Copy Bundle Resources»,

Ваш файл plist может иметь несколько версий для каждого языка, поддерживаемого вашим приложением. В утилите \ File Inspector (справа) нажмите «Локализовать»:

введите описание изображения здесь

Затем выберите языки, на которых вы хотите иметь свои собственные версии:

введите описание изображения здесь

После этого вы сможете вводить каждый файл plist и редактировать его по своему усмотрению.

Файл должен находиться внутри каталога, указывающего язык, например en.lproj

На самом деле, моя проблема заключалась в том, что я ошибся с константой NSLocationWhenInUseUsageDescription, поэтому, конечно, она не была учтена.

Иногда вам нужно сначала очистить, щелкнуть Меню -> Продукт -> Очистить.

Иногда вам приходится сначала чистить

Начиная с iOS 10, вы должны добавить ключи конфиденциальности в свой Info.plist.

 <key>NSPhotoLibraryUsageDescription</key> <string>Please allow access to the photo library.</string> 

Конечно, вам все же нужны эти ключи для локализации (и вы не можете локализовать Info.plist приложения). Таким образом, вы также добавляете эти ключи конфиденциальности в InfoPlist.strings, которые, в свою очередь, локализованы.

 "NSPhotoLibraryUsageDescription" = "Please allow access to the photo library."; 
  • iOS - UIProgressView обновляется только один раз
  • Как «упростить» UIImagePickerController
  • UIImagePickerControllerCameraDeviceFront работает только каждый раз
  • UINavigationBar setBackgroundImage: forBarMetrics: не работает
  • Как сохранить и загрузить альфа-значения UIButton в приложении?
  • iOS7 TextKit: выравнивание маркеров
  • AudioServicesPlaySystemSound и основной поток
  • добавьте новую строку в начало UITableView при использовании основных данных
  • Использование AVPlayer для воспроизведения песен с защитой DRM
  • touchBegan не работает над UITableView
  • UITextField secureTextEntry пули с пользовательским шрифтом?
  • Давайте будем гением компьютера.