Как локализовать строку внутри информации iOS.файл plist?

Как вы можете знать iOS 8 требует NSLocationWhenInUseUsageDescription ключ для использования местоположения пользователя. Я добавил этот ключ и некоторую общую информацию в свой информационный список. enter image description here

Как я могу использовать строку перевода в файл plist ?

-- Update --

У меня уже есть локализуемых строк. Мне просто интересно, могу ли я использовать что-то вроде NSLocalizedString (MYSTRING,nil) внутри строки plist. Я знаю, что я могу создать несколько файлов информации.файлы для локализации, но мне было интересно, что там может быть более простой способ.

7 ответов


вы должны использовать InfoPlist.strings файл для локализации значений Info.plist. Для этого перейдите в File->New->File выберите Strings File под на iOS имя InfoPlist, и создавать. Откройте и вставьте Info.plist значения, которые вы хотите локализовать как:

"NSLocationWhenInUseUsageDescription" = "Description of this";

теперь вы можете локализовать InfoPlist.strings файл с переводами. Удачи!

EDIT:

выберите Параметры локализации или при необходимости включите локализацию,

right side editor

вы должен быть в состоянии увидеть файл также на левой стороне редактора.

left side editor

EDIT:

здесь является официальной документацией для Info.plist ключи локализации.


все вышеперечисленное не сработало для меня (XCode 7.3), поэтому я прочитал ссылку Apple о том, как это сделать, и это намного проще, чем описано выше. Согласно Apple:

локализованные значения не сохраняются в информации.сам файл plist. Вместо этого значения для определенной локализации сохраняются в a файл Strings с InfoPlist имя.веревка. Вы помещаете этот файл в тот же языковой каталог проекта, который используется для хранения прочие ресурсы на эти же цели локализация.

соответственно, я создал строковый файл с именем InfoPlist.струны и поместил его в xx.папка lproj языка " xx " (и добавила ее в проект, используя File->Add Files to ...). Вот и все. Нет необходимости в ключе "локализованные ресурсы могут быть смешаны" = да, и нет необходимости в InfoPlist.строки в базе.lproj или en.lproj все.

приложение использует информацию.plist key-значение по умолчанию, если не удается найти ключ на языке конкретный файл. Таким образом, я вкладываю свою английскую Ценность В информацию.plist файл и переведенный на язык конкретного файла, протестирован и все работает.

в частности, нет необходимости локализовать InfoPlist.strings (который создает версию файла в базе.lproj, en.lroj, и xx.lproj), и в моем случае это не сработало.


Если что-то не работает, убедитесь, что Вы добавил:

"локализованные ресурсы могут быть смешаны" = YES

в инфо.файл plist. В моем случае InfoPlist.файлы strings просто игнорировались.


Я бы настоятельно рекомендовал прочитать руководства Apple и просмотреть ресурсы WWDC, перечисленные здесь: темы интернационализации и локализации

чтобы конкретно ответить на ваш вопрос, когда вы добавляете новый язык для вашего проектаenter image description here, вы получаете возможность выбрать, какие файлы InfoPlist для включения (если у вас есть несколько целей, у вас будет несколько файлов Info plist). Все, что вам нужно сделать, чтобы получить следующий экран, это нажать + под локализациями и выбрать новый язык для добавления поддержки. enter image description here

после добавления он создаст необходимые строковые файлы в соответствующих каталогах lproj для данного языка.

-- EDIT--

чтобы быть ясным, iOS заменит строку для вашего файла Plist на основе выбранного пользователем языка, используя ключ записи plist в качестве ключа в локализованном файле строк.


Как RGML говорят, Вы можете создать InfoPlist.строки, локализовать его, а затем добавить свой ключ и значение, как это: "NSLocationWhenInUseUsageDescription" = " Помогите найти меня!";

Он добавит ключ к вашей информации.plist для указанного языка.


для тех, кто испытывает проблемы информация.plist не включается при попытке добавить локализации, как в Xcode 9.

вам нужно сделать инфо.plist localiazble, войдя в него и нажав на кнопку локализации в инспекторе файлов, как показано ниже.

информация.затем plist будет включен в файловые ресурсы для добавления новых локализаций.

enter image description here


в моем случае все было настроено правильно, но все-таки InfoPlist.файл strings не найден.

единственное, что действительно работало, это удалить и добавить InfoPlist.строки файлов снова в проект.