Как вы, возможно, знаете, iOS 8 требует ключ NSLocationWhenInUseUsageDescription для использования местоположения пользователя. Я добавил этот ключ и некоторую общую информацию в свой информационный лист.
Как я могу использовать строку перевода внутри файла plist?
-- Обновить --
У меня уже есть локализуемая строка. Мне просто интересно, что я могу использовать что-то вроде NSLocalizedString (MYSTRING, nil) внутри строки plist. Я знаю, что могу создать несколько файлов info.plist для локализации, но мне было интересно, что может быть проще.
Ответы:
Вы должны использовать
InfoPlist.strings
файл для локализации значенийInfo.plist
. Чтобы сделать это, перейдитеFile->New->File
, выберитеStrings File
подResource
вкладкойiOS
, назовите егоInfoPlist
, и создать. Откройте и вставьтеInfo.plist
значения, которые вы хотите локализовать, например:Теперь вы можете локализовать
InfoPlist.strings
файл с переводами. Удачи!РЕДАКТИРОВАТЬ:
выберите параметры локализации или включите локализацию, если необходимо,
Вы также сможете увидеть файл в редакторе слева.
РЕДАКТИРОВАТЬ:
Вот официальная документация по
Info.plist
локализации ключей.Кредиты на Марко , спасибо за фото в том числе в этом ответе!
источник
Все вышеперечисленное не работает для меня (XCode 7.3), поэтому я прочитал справку Apple о том, как это сделать, и это намного проще, чем описано выше. По словам Apple:
Соответственно, я создал строковый файл с именем InfoPlist.strings и поместил его в папку xx.lproj языка «xx» (и добавил его в проект, используя File-> Add Files to ...). Вот и все. Нет необходимости в ключе «Локализованные ресурсы могут быть смешаны» = ДА, и нет необходимости в InfoPlist.strings в base.lproj или en.lproj.
Приложение использует значение ключа Info.plist в качестве значения по умолчанию, если оно не может найти ключ в файле для конкретного языка. Таким образом, я поместил свое английское значение в файл Info.plist, а переведенное - в файл для конкретного языка, протестировал и все работает.
В частности, нет необходимости локализовать InfoPlist.strings (который создает версию файла в base.lproj, en.lroj и xx.lproj), и в моем случае это не сработало.
источник
Если что-то не работает, убедитесь, что вы добавили:
«Локализованные ресурсы можно смешивать» = ДА
в список info.plist. В моем случае файлы InfoPlist.strings были просто проигнорированы.
источник
подсказки
Помните, что iOS Simulator по умолчанию использует язык вашей системы. Пожалуйста, измените язык (и регион) в настройках симулятора iOS, чтобы проверить свои переводы.
Строка локализации (см. Apple Docs здесь ) должна быть
а не (с цитатой "...")
источник
"NSLocationWhenInUseUsageDescription"="description"
допустимо). Это может быть с или без.Я настоятельно рекомендую прочитать руководства Apple и просмотреть ресурсы WWDC, перечисленные здесь: темы интернационализации и локализации
Чтобы конкретно ответить на ваш вопрос, когда вы добавляете новый язык в свой проект , вы получаете возможность выбрать, какие файлы InfoPlist включить (если у вас несколько целей, у вас будет несколько файлов Info plist). Все, что вам нужно сделать, чтобы перейти к следующему экрану, - нажать + в разделе «Локализации» и выбрать новый язык для добавления поддержки.
После добавления он создаст необходимые строковые файлы в соответствующих каталогах lproj для данного языка.
--РЕДАКТИРОВАТЬ--
Просто чтобы прояснить ситуацию, iOS заменит строку для вашего файла Plist на основе выбранного пользователем языка в данный момент, используя ключ записи plist в качестве ключа в файле локализованных строк.
источник
Пошаговая локализация Info.plist:
Save As
поле введите ТОЛЬКО InfoPlist (заглавная буква "I" и заглавная буква "P")"NSLocationAlwaysAndWhenInUseUsageDescription" = "блаб";
"NSLocationAlwaysUsageDescription" = "blabla2";
Вот и все, и вы должны локализовать свой файл info.plist!
источник
Для любого, кто испытывает проблему, когда info.plist не включается при попытке добавить локализации, как в Xcode 9.
Вам нужно сделать info.plist localiazble, зайдя в него и нажав кнопку локализации в инспекторе файлов, как показано ниже.
Затем info.plist будет включен в файловые ресурсы для добавления новых локализаций.
источник
Как говорится в RGML, вы можете создать InfoPlist.strings, локализовать его, затем добавить свой ключ и значение, например: «NSLocationWhenInUseUsageDescription" = «Помогите найти меня!»;
Он добавит ключ в ваш info.plist для указанного языка.
источник
В моем случае все было настроено правильно, но файл InfoPlist.strings все равно не был найден.
Единственное, что действительно сработало, - это снова удалить и добавить файлы InfoPlist.strings в проект.
источник
В моем случае локализация не сработала из-за символа «-» в имени. Пример: "aero-Info.plist" и локализованные файлы: "aero-InfoPlist.strings" и "aeroInfoPlist.strings" не работают.
источник
При использовании
InfoPlist.strings
файла (в XCode он должен быть расположен рядом сInfo.plist
файлом - реальное расположение файла может быть где угодно в проекте)) будьте осторожны, чтобы использовать короткое имя ключа для перевода.
Я пытался использовать
Privacy - Camera Usage Description
, но рабочий ключNSCameraUsageDescription
источник