Как локализовать строку в файле iOS info.plist?
Как вы знаете, для iOS 8 требуется NSLocationWhenInUseUsageDescription. Я добавил этот ключ и некоторую общую информацию в свой информационный план.
![enter image description here]()
Как использовать строку перевода внутри файла plist?
- Обновление -
У меня уже есть строка Localizable. Мне просто интересно, могу ли я использовать что-то вроде
NSLocalizedString (MYSTRING, nil) внутри строки plist. Я знаю, что я могу создать несколько файлов info.plist для локализации, но мне было интересно, что может быть проще.
Ответы
Ответ 1
Вы должны использовать файл InfoPlist.strings
для локализации значений Info.plist
. Для этого перейдите в File->New->File
, выберите " Strings File
вкладке " Resource
" в iOS
, назовите его InfoPlist
и создайте. Откройте и вставьте значения Info.plist
вы хотите локализовать, например:
NSLocationWhenInUseUsageDescription = "Description of this";
Теперь вы можете локализовать файл InfoPlist.strings
с переводами. Удачи!
РЕДАКТИРОВАТЬ:
выберите параметры локализации или включите локализацию, если необходимо,
![right side editor]()
Вы также сможете увидеть файл в редакторе слева.
![left side editor]()
РЕДАКТИРОВАТЬ:
Вот официальная документация по локализации ключей Info.plist
.
Ответ 2
Все вышеизложенное не помогло мне (XCode 7.3), поэтому я прочитал ссылку Apple о том, как это сделать, и это намного проще, чем описано выше. Согласно Apple:
Локализованные значения не сохраняются в самом файле Info.plist. Вместо этого вы сохраняете значения для определенной локализации в файл с именем InfoPlist.strings. Вы помещаете этот файл в тот же языковой проект, который вы используете для хранения другие ресурсы для той же локализации.
Соответственно, я создал строковый файл с именем 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), и в моем случае это не сработало.
Ответ 3
Если что-то не работает, убедитесь, что вы добавили:
"Локализованные ресурсы могут быть смешаны" = ДА
в info.plist. В моем случае файлы InfoPlist.strings просто игнорировались.
Ответ 4
Я бы очень рекомендовал прочитать руководства Apple и посмотреть ресурсы WWDC, перечисленные здесь:
Темы по интернационализации и локализации
Чтобы ответить на ваш вопрос, когда вы добавляете новый язык в свой проект
, вы получаете возможность выбирать, какие файлы InfoPlist включать (если у вас несколько целей, у вас будет несколько файлов Info plist). Все, что вам нужно сделать, чтобы получить следующий экран, попало под + в разделе "Локализация" и выберите новый язык для добавления поддержки.
![enter image description here]()
После того, как вы добавили, он создаст необходимые строковые файлы в соответствующих каталогах lproj для данного языка.
- EDIT -
Чтобы быть ясным, iOS заменит строку для вашего файла Plist на основе выбранного пользователем языка, используя ключ ввода plist в качестве ключа в файле локализованных строк.
Ответ 5
подсказки
-
Помните, что симулятор iOS по умолчанию использует язык вашей системы. Пожалуйста, измените язык (и регион) в настройках симулятора iOS, чтобы проверить свои переводы.
-
Строка локализации (см. Apple Docs здесь) должна быть
NSLocationWhenInUseUsageDescription = "Description of this";
а не (с цитатой "...")
"NSLocationWhenInUseUsageDescription" = "Description of this";
Ответ 6
Как говорит RGML, вы можете создать InfoPlist.strings, локализовать его, а затем добавить свой ключ и значение, подобное этому:
"NSLocationWhenInUseUsageDescription" = "Помощь, чтобы найти меня!";
Он добавит ключ к вашему info.plist для указанного языка.
Ответ 7
Для тех, кто испытывает проблему с инфо.пластом, не включается при попытке добавить локализации, например, в Xcode 9.
Вам нужно сделать info.plist localiazble, зайдя в него и нажав кнопку локализации в инспекторе файлов, как показано ниже.
Затем инфо.пласт будет включен в файловые ресурсы, когда вы переходите к добавлению новых локализаций.
![введите описание изображения здесь]()
Ответ 8
В моем случае все было настроено правильно, но файл InfoPlist.strings не был найден.
Единственное, что действительно работало, - это удалить и снова добавить файлы InfoPlist.strings в проект.
Ответ 9
Пошаговая локализация Info.plist:
- Найдите в x-коде папку Ресурсы (находится в корне)
- Выберите папку Ресурсы
- Затем нажмите главное меню File-> Создать-> Файл...
- Выберите в разделе "Resource" Strings File и нажмите Next
- Затем в поле Сохранить как напишите ТОЛЬКО InfoPlist (заглавная буква "I" и заглавная буква "P")
- Затем нажмите Создать
- Затем выберите файл InfoPlist.strings, созданный в папке Resources, и нажмите в правом меню кнопку "Локализация".
- Затем вы выбираете проект из навигатора проекта и выбираете проект из списка проектов.
- Во вкладке информации внизу вы можете выбрать желаемый язык (есть в разделе "Локализации").
- Язык, который вы можете увидеть в папке ресурсов
- Чтобы локализовать значения ("ключ") из файла info.plist, вы можете открыть его в текстовом редакторе и получить все ключи, которые хотите локализовать.
- Вы пишете любой ключ в качестве примера в любом InfoPlist.strings, как в примере выше.
"NSLocationAlwaysAndWhenInUseUsageDescription" = "блабли";
"NSLocationAlwaysUsageDescription" = "blabla2";
Это все работает, и вы должны локализовать свой файл info.plist!
Ответ 10
В моем случае локализация не сработала из-за символа "-" в имени. Пример: "aero-Info.plist" и локализованные файлы: "aero-InfoPlist.strings" и "aeroInfoPlist.strings" не работают.