Понятия

Предпочтительный файл манифеста является XML plist файл, описывающий предпочтения приложения и делающий их доступными для управления менеджером по Рабочей группе, компонентом управляемого клиентского решения Apple Computer для OS X. Разработчики приложений используют Редактора Списка свойств, предоставленного на Инструментах XCode CD, для создания предпочтительных файлов манифеста.

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

Структура предпочтительного файла манифеста

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

Наиболее удаленный словарь

Наиболее удаленный словарь содержит явные ключи, описывающие предпочтительный файл манифеста в целом. Некоторые явные ключи только допустимы в наиболее удаленном словаре.

Наиболее удаленный словарь обычно содержит следующие явные ключи:

  • a pfm_description ключ, предоставляющий общее описание предпочтительного файла манифеста.

  • a pfm_title ключ, обеспечивающий имя, которое будет показано в Предпочтительном Редакторе Декларации менеджера по Рабочей группе как имя для предпочтений приложения в целом

  • a pfm_format_version ключ, указывающий предпочтительную версию формата декларации использование файла; этот ключ только допустим в наиболее удаленном словаре

  • a pfm_version ключ, указывающий номер версии для этого предпочтительного файла манифеста так, чтобы это можно было отличить от других версий, которые могли бы быть выпущены; этот ключ только допустим в наиболее удаленном словаре

  • a pfm_domain ключ, указывающий домен приложения для этого предпочтительного файла манифеста, такой как com.apple.myapp, где myapp обычно имя пакета приложения ID, указанный в приложении info.plist и имя что использование приложения для получения предпочтений через CPPreferences или NSUserDefaults Вызовы API.

  • a pfm_subkeys ключ, указывающий, что массив словарей следует с каждым использованием словаря ключи для описания предпочтения

Вот пример наиболее удаленного словаря для названного приложения myapp:

<dict>
    <key>pfm_description</key>
    <string>Configurable preferences for MyApp.</string>
    <key>pfm_title</key>
    <string>myapp</string>
    <key>pfm_format_version</key>
    <real>1.0</real>
    <key>pfm_version</key>
    <real>0.9</real>
    <key>pfm_domain</key>
    <string>com.apple.myapp</string>
    <key>pfm_subkeys</key>

Внутренние словари

Наиболее удаленный словарь сопровождается рядом внутренних словарей, которые могут содержать другие словари.

Вот пример внутреннего словаря, который мог бы следовать pfm_subkeys введите демонстрационный наиболее удаленный словарь:

        <array>
            <dict>
                <key>pfm_name</key>
                <string>autohide</string>
                <key>pfm_title</key>
                <key>Hiding</key>
                <key>pfm_type</key>
                <string>boolean</string>
                <key>pfm_default</key>
                <false/>
                <key>pfm_description</key>
                <string>True to turn hiding on.</string>
                <key>pfm_targets</key>
                <array>
                    <string>user</string>
                    <string>user-managed</string>
                </array>
            </dict>
            // Other dictionaries containing manifest keys that  describe
            // preference keys.
        </array> // End of the array of dictionaries.
    </dict> // End of the preference manifest file.

В примере внутреннего словаря,

  • pfm_name ключ определяет имя (autohide) из предпочтительного ключа.

  • pfm_title ключ указывает видимое пользователем имя, показанное в Предпочтительном Редакторе Декларации менеджера по Рабочей группе.

  • pfm_type ключ определяет boolean как тип данных этого предпочтительного ключа.

  • pfm_default ключ определяет значение по умолчанию этого предпочтительного ключа как false.

  • pfm_description ключ обеспечивает, в этом случае, напоминание, что для включения этого предпочтительного ключа это - значение, должен быть установлен в true. Можно использовать pfm_description ключ для обеспечения любых инструкций или информации, необходимой для надлежащей установки этого предпочтительного ключа.

  • pfm_targets ключ указывает, когда и где этот предпочтительный ключ должен использоваться программным обеспечением управления клиентами OS X для надлежащего управления пользователем или компьютером. В этом примере, user указывает, что ключ может быть установлен в предпочтениях пользователя (в ~/Library/Preferences/com.apple.myapp.plist) и user-managed указывает, что ключ может быть установлен в управляемых предпочтениях пользователя (в /Library/Managed Preferences/имя пользователя/com.apple.myapp.plist, где имя пользователя является кратким названием зарегистрированного пользователя).

Предпочтительные ключи декларации

Для каждого допустимого явного ключа Таблица 1-1 обеспечивает тип данных ключа, значение по умолчанию, которое менеджер по Рабочей группе определяет для ключ, когда это не указано, и описание. Явные ключи требуются или дополнительные, как отмечено в Столбце описания ниже.

  Ключи Table 1-1 Manifest

Явный ключ

Тип данных

Значение по умолчанию

Описание

pfm_default

То же как тип данных pfm_type ключ.

0, false, {}, ““, и т.д.

Указывает предпочтительное значение по умолчанию ключа.

pfm_description

Строка

““

Указывает описание предпочтительного ключа. Этот явный ключ является дополнительным. Посмотрите раздел Localization для получения дополнительной информации об указании значения этого ключа.

pfm_domain

Строка

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

Указывает домен приложения для этого предпочтительного ключа. Этот явный ключ только допустим в наиболее удаленном словаре и в прямом pfm_subkey определения. Для получения дополнительной информации посмотрите, что раздел Использует pfm_domain Ключ.

pfm_format_version

Реальный

1.0

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

pfm_name

Строка

Указывает имя предпочтительного ключа. Этот ключ требуется для всех ключей кроме подключей массива.

pfm_range_list

Массив значений, имеющих тот же тип данных, как указано pfm_type ключ.

{}

Указывает массив юридических значений для этого предпочтительного ключа, если применимо. Если не указанный, какие-либо значения позволяются или какие-либо значения в диапазоне, указанном, этот ключ является дополнительным и pfm_range_min и pfm_range_max, если указано, позволяются.

pfm_range_max

То же как тип данных, указанный pfm_type ключ.

+ <бесконечность>

Указывает максимальное значение для этого предпочтительного ключа. Этот ключ является дополнительным.

pfm_range_min

То же как тип данных, указанный pfm_type ключ.

- <бесконечность>

Указывает минимальное значение для этого предпочтительного ключа. Этот ключ является дополнительным.

pfm_repetition_max

Целое число

1

Указывает максимальное количество времен, этот предпочтительный ключ может быть повторен. Значения, больше, чем, каждый только допустим для предпочтительных ключей, которые являются массивами. Используйте –1 для указания неограниченного повторения. Этот ключ является дополнительным.

pfm_repetition_min

Целое число

0

Указывает минимальное число раз, этот предпочтительный ключ должен быть повторен. Значения, больше, чем 1, только допустимы для ключей, которые являются массивами. Использование этого ключа является дополнительным.

pfm_targets

Массив

Значение pfm_targets ключ, указанный в следующем, выравнивает или user если pfm_targets ключ не указан в следующем, выравнивают.

Указывает значения, указывающие, когда должно быть обработано предпочтение. Возможные значения user, user-managed, и system-managed. Для получения дополнительной информации посмотрите раздел Values для pfm_targets Ключа.

pfm_title

Строка

Значение pfm_name ключ.

Указывает заголовок предпочтения, выведенного на экран Предпочтительным Редактором Декларации менеджера по Рабочей группе. Если не указанный, Предпочтительный Редактор Декларации менеджера по Рабочей группе выводит на экран значение, этот ключ является дополнительным, и pfm_name ключ как заголовок. Посмотрите раздел Localization для получения дополнительной информации об указании значения этого ключа.

pfm_type

Строка

Указывает тип предпочтения, которое может быть стандартом plist тип (array, boolean, date, data, dictionary, integer, real, string, или url), union policy для объединения MCX политика проявляют ключевые определения, или alias для стандартного псевдонима. Этот ключ требуется и не имеет никакого значения по умолчанию.

pfm_upk_input_keys

Массив строк

{pfm_name}

Указывает входные ключевые имена для ключа декларации политики объединения. Для получения дополнительной информации посмотрите раздел Defining a Preference Key of Type Union Policy.

pfm_upk_output_name

Строка

Указывает выходное ключевое имя для ключа декларации политики объединения.

pfm_upk_output_replace

Булевская переменная

false

Указывает, заменить ли пользовательские настройки выводом политики объединения.

pfm_upk_output_type

Строка

array

Для ключей декларации политики объединения, указывает, вывести ли массив или словарь. Использовать array выводить массив или dictionary выводить словарь.

pfm_upk_remove_duplicates

Булевская переменная

false

Указывает, удалить ли, делают дубликаты ключа, когда политика объединения приводит к комбинации ключей, содержащей копии.

pfm_version

Реальный

1.0

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

pfm_subkeys

Массив словаря

{}

Указывает, что следуют вложенные явные ключи. Этот ключ является дополнительным и только используется для явных ключей, которые являются словарями или массивами.

pfm_mcx_version

Целое число

1

Указывает использование mcx_preference_version_n ключ, где n является положительным целым числом начиная с 2. Этот ключ является дополнительным.

Значения по умолчанию

Если явный ключ не определяется для предпочтительного ключа, менеджер по Рабочей группе использует контекст и использование для определения значения по умолчанию для неопределенного ключа. Если значение по умолчанию не может быть определено, предпочтительный ключ или весь предпочтительный файл манифеста могут быть проигнорированы.

Используя pfm_domain Ключ

Рекомендуемый подход для каждого предпочтительного файла манифеста для указания всего одного домена. Когда предпочтительный файл манифеста указывает один домен, pfm_domain явный ключ не должен быть указан для каждого предпочтительного ключа. Когда pfm_domain не указан для предпочтительного ключа, менеджер по Рабочей группе получает домен для предпочтительного ключа от pfm_domain введите наиболее удаленный словарь. Вот пример:

<key>pfm_format_version</key>
<real>1.0</real>
<key>pfm_version</key>
<real>1.0</real>
<key>pfm_domain</key>
<string>com.apple.myapp</string>
<key>pfm_subkeys</key>
<array>
    <dict>
        <key>pfm_name</key>
        <string>Preference One</string>
        // Additional information for “Preference One”
        <key>pfm_name</key>
        <string>Preference Two</key>
        // Additional information for “Preference Two”
    </dict>
</array>

В этом примере, домене для Preference One и Preference Two com.apple.myapp как указано pfm_domain введите outmost словарь.

Несмотря на то, что выполнение так не рекомендуется, возможно указать больше чем один домен в предпочтительном файле манифеста. Вот пример:

<key>pfm_format_version</key>
<real>1.0</real>
<key>pfm_version</key>
<real>1.0</real>
<key>pfm_subkeys</key>
<array>
    <dict>
        <key>pfm_name</key>
        <string>Preference One</string>
        // Additional information for “Preference One”
        <key>pfm_domain</key>
        <string>com.apple.myapp1</string>
        <key>pfm_name</key>
        <string>Preference Two</string>
        // Additional information for “Preference Two”
        <key>pfm_domain</key>
        <string>com,apple.myapp2</string>
    <dict>
</array>

Значения для pfm_targets Ключа

Значение pfm_targets ключ является массивом, состоящим из любой комбинации user, user-managed, и system-managed. Эти значения говорят клиенту MCX когда (прежде чем или после входа в систему) обрабатывать предпочтительные ключи для определенного домена приложения.

Значение pfm_targets ключевые работы в сочетании с настройками, установленными администратором, которые указывают, когда должно быть обработано предпочтение приложения:

  • Всегда — Это - предпочтение приложения, которое установлено и не может быть изменено.

  • Один раз — Это - предпочтение приложения, которое установлено, но может быть постоянно изменено.

  • Часто — Это - предпочтение приложения, которое установлено и может быть временно изменено. То, когда пользователь регистрирует назад в предпочтении, установлено в его исходное значение.

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

Когда user значение pfm_targets ключ, любые установки приложения, установленные администратором в Один раз и Часто, обрабатывается сразу после аутентификации и прежде чем работают любые пользовательские приложения. Ключ может быть установлен в предпочтениях пользователя в ~/Library/Preferences/com.apple.myapp.plist.

Когда user-managed значение pfm_targets ключ, любые установки приложения, установленные администратором во Всегда, обрабатывается сразу после аутентификации и прежде чем работают любые пользовательские приложения. Ключ может быть установлен в управляемых предпочтениях пользователя в ~/Library/Managed Preferences/имя пользователя/com.apple.myapp.plist. где имя пользователя является кратким названием зарегистрированного пользователя.

Когда system-managed значение pfm_targets ключ, любые установки приложения, установленные системным администратором во Всегда, обрабатывается во время запуска и после каждого пользовательского выхода из системы. Например, предпочтение, управляющее, показать ли loginwindow со списком пользователей или с полем, в котором вводится имя пользователя, имеет к обработанному, прежде чем любой пользователь войдет в систему. Ключ будет установлен в файле списка свойств (.plist) в /Library/Managed Preferences/.

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

Соглашения о присвоении имен файла

Приложение должно использовать один предпочтительный файл манифеста на домен и использовать следующее соглашение о присвоении имен файла:

domain.manifest

где домен является значением, указанным pfm_domain введите предпочтительный файл манифеста. Если домен com.apple.myapp, имя предпочтительного файла манифеста было бы com.apple.myapp.manifest.

Предпочтительный файл манифеста должен быть помещен в пакет приложения в ./Contents/Resources/ подкаталог. Если домен com.apple.myapp, путь для предпочтительного файла манифеста был бы:

./Contents/Resources/com.apple.myapp.manifest

Демонстрационные предпочтительные ключевые определения

Этот раздел использует серию примеров для описания определения предпочтительного ключа для каждого pfm_type.

Определение предпочтительного ключа псевдонима типа

Предпочтительный ключ, чей pfm_type alias заставляет Предпочтительного Редактора Декларации менеджера по Рабочей группе позволять Вам указывать псевдоним к файлу или папке. Данные, соответствующие записи псевдонима, хранятся в предпочтительных данных как a data тип plist.

Вот демонстрационное определение для предпочтительного ключа чей pfm_type alias:

<key>pfm_name</key>
<string>backupVolume</string>
<key>pfm_type</key>
<string>alias</string>
<key>pfm_title</key>
<string>Backup Volume</string>
<key>pfm_description</key>
<string>Alias to the backup volume</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>

Определение предпочтительного ключа массива типа

Вот демонстрационное определение для предпочтительного ключа чей pfm_type array:

<key>pfm_name</key>
<string>OptionCheckboxStringsTemp</string>
<key>pfm_type</key>
<string>array</string>
<key>pfm_default</key>
<array>
    <string>antialias</string>
    <string>fullcolor</string>
</array>
<key>pfm_title</key>
<string>Checkbox Strings</string>
<key>pfm_description</key>
<string>One array element for each visible checkbox containing  the internal name of  that checkbox.</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>
<key>pfm_subkeys</key>
<array>
    <dict>
 
        <key>pfm_description</key>
        <string>Checkbox string values.</string>
        <key>pfm_name</key>
        <string>checkboxnames</string>
        <key>pfm_rangelist</string>
        <array>
            <string>antialias</string>
            <string>fullcolor</string>
            <string>invertcolor</string>
        </array>
        <key>pfm_repetition_max</key>
        <integer>3</integer>
        <key>pfm_repetition_min</key>
        <integer>0</integer>
        <key>pfm_title</key>
        <string>Checkbox name</string>
        <key>pfm_type</key>
        <string>string</string>
    </dict>
</array>

Определение предпочтительного ключа булевской переменной типа

Вот демонстрационное определение для предпочтительного ключа чей pfm_type boolean.

<key>pfm_name</key>
<string>reverseHilite</string>
<key>pfm_type</key>
<string>boolean</string>
<key>pfm_default</key>
<false/>
<key>pfm_title</key>
<string>Reverse Highlighting</string>
<key>pfm_description</key>
<string>Set to true for black on white highlighting.</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>
 

Определение предпочтительного ключа даты типа

Вот демонстрационное определение для предпочтительного ключа чей pfm_type date.

<key>pf_domain</key>
<string>com.apple.myapp</string>
<key>pfm_name</key>
<string>database creation time</string>
<key>pfm_type</key>
<string>date</string>
<key>pfm_title</key>
<string>Database Creation Date</string>
<key>pfm_description</key>
<string>Date when the main database was created.</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>
 

Определение предпочтительного ключа данных типа

Вот демонстрационное определение для предпочтительного ключа чей pfm_type data.

<key>pfm_name</key>
<string>preference data</string>
<key>pfm_type</key>
<string>data</string>
<key>pfm_title</key>
<string>Database Bit Flags</string>
<key>pfm_description</key>
<string>Database Bit Flags. 10 bytes long.</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>
 

Определение предпочтительного ключа словаря типа

Вот демонстрационное определение для предпочтительного ключа чей pfm_type dictionary.

<key>pfm_name</key>
<string>document objects</string>
<key>pfm_type</key>
<string>dictionary</string>
<key>pfm_title</key>
<string>Document Object Dictionary</string>
<key>pfm_description</key>
<string>Dictionary of document objects.</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>
<key>pfm_subkeys</key>
<array>
    <dict>
        <key>pfm_name</key>
        <string>Preference One</string>
        // Other keys describing this preference.
    </dict>
    <dict>
        <key>pfm_name</key>
        <string>Preference Two</string>
        // Other keys describing this preference.
    </dict>
</array>

Определение предпочтительного ключа целого числа типа

Вот демонстрационное определение для предпочтительного ключа чей pfm_type integer.

<key>pfm_name</key>
<string>zoom factor</string>
<key>pfm_type</key>
<string>integer</string>
<key>pfm_default</key>
<integer>100</integer>
<key>pfm_range_max</key>
<integer>1000</integer>
<key>pfm_range_min</key>
<integer>0</integer>
<key>pfm_title</key>
<string>Zoom Factor</string>
<key>pfm_description</key>
<string>Document zoom factor. Only multiples of 10 are valid.</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>

Определение предпочтительного ключа реального типа

Вот демонстрационное определение для предпочтительного ключа чей pfm_type real. В этом примере, pfm_range_max не указан, таким образом, менеджер по Рабочей группе использовал бы значение по умолчанию, + <бесконечность>. pfm_description ключ не указан, таким образом, предпочтительный ключ не имеет никакого описания.

<key>pfm_name</key>
<string>scaling</string>
<key>pfm_type</key>
<string>real</string>
<key>pfm_default</key>
<real>1.0</real>
<key>pfm_range_min</key>
<real>0.01</real>
<key>pfm_title</key>
<string>Scaling Factor</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</strings>
</array>

Определение предпочтительного ключа строки типа

Вот демонстрационное определение для предпочтительного ключа чей pfm_type string.

<key>pfm_name</key>
<string>input source</string>
<key>pfm_type</key>
<string>string</string>
<key>pfm_default</key>
<string>file</string>
<key>pfm_range_list</key>
<array>
    <string>file</string>
    <string>network</string>
</array>
<key>pfm_title</key>
<string>Input Source</string>
<key>pfm_description</key>
<string>Input can be taken from a file or the network.</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>

Определение предпочтительного ключа политики объединения типа

Когда два или больше предпочтительных ключа играют роль как результат единственного события, ключи политики объединения обеспечивают способ указать поведение. Рассмотрите случай того, какие мозаики приложения должны появиться в прикреплении приложения. Например, следующее могло быть указано:

  • это все компьютеры показывает «Калькулятор» в прикреплении

  • та Рабочая группа «MyWorkGroup» показывает «DVD-плеер» в прикреплении

  • тот пользователь «Джимми» показывает «TextEdit» в прикреплении

Когда «Джимми» (кто принадлежит рабочей группе «MyWorkGroup») входит в систему, что должно появиться в его прикреплении? Просто «TextEdit» или должен «Калькулятор», «DVD-плеер» и «TextEdit» быть в его прикреплении?

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

Следующий пример указывает политику объединения для мозаик приложения в:

<key>pfm_description</key>
<string>Application tiles union policy keys for user domain</string>
<key>pfm_name</key>
<string>appTilesUPKUser</string>
<key>pfm_remove_duplicates</key>
<true/>
<key>pfm_targets</key>
<array>
    <string>user</string>
</array>
<key>pfm_title</key>
<string>Application Tiles Union Policy - User</string>
<key>pfm_type</key>
<string>union policy</string>
<key>pfm_upk_input_keys</key>
<array>
    <string>AppItems-Raw</string>
</array>
<key>pfm_upk_output_name</key>
<string>persistent-apps</string>
<key>pfm_upk_output_type</key>
<string>array</string>

Определение предпочтительного ключа типа URL

Предпочтительный ключ, чей pfm_type url заставляет Предпочтительного Редактора Декларации менеджера по Рабочей группе позволять Вам выбирать файл или папку. Если Вы выбираете a .webloc файл, URL, содержавший в .webloc файл извлекается и хранится как строковый тип в предпочтительных данных. Если Вы выбираете файл, который не является a .webloc файл, a file://- основанный URL создается к выбранному файлу, и этот URL сохранен как строка в предпочтительных данных.

Вот демонстрационное определение для предпочтительного ключа чей pfm_type url.

<key>pfm_name</key>
<string>help source</string>
<key>pfm_type</key>
<string>url</string>
<key>pfm_default</key>
<string>http://help.apple.com</string>
<key>pfm_title</key>
<string>Web Help URL</string>
<key>pfm_description</key>
<string>Web-based help url.</string>
<key>pfm_targets</key>
<array>
    <string>user</string>
    <string>user-managed</string>
</array>

Локализация

Предпочтительный Редактор Декларации менеджера по Рабочей группе интерпретирует значения, указанные pfm_title ключ и pfm_description ключ как три разделенных от запятой строки.

Используя три разделенных от запятой строки, пакет, содержащий предпочтительный файл манифеста, и NSBundle::-localizedStringForKey(), Предпочтительный Редактор Декларации менеджера по Рабочей группе находит и выводит на экран локализованные строки.

NSBundle::-localizedStringForKey() берет три строки в качестве параметров: имя ключа, значение ключа и имя таблицы строк для поиска локализованной строки.

Если значение a pfm_title или pfm_description ключ не содержит запятых, значение интерпретируется как второй параметр к NSBundle::-localizedStringForKey(), т.е. строка по умолчанию, которая будет использоваться, если не найден ключ. Вот пример:

<key>pfm_title</key>
<string>hiding</string>

Если значение a pfm_title или pfm_description ключ содержит только одну запятую, эти две получивших строки интерпретируются как первые два параметра NSBundle::-localizedStringForKey() и пустая строка используется в качестве третьего параметра. Следующие примеры эквивалентны друг другу:

<string>hiding, HIDING</string>
<string>hiding, HIDING,</string>
<string>hiding, HIDING, Localized.strings</string>

Любое продвижение и конечные пробелы, которые могут содержать строки, проигнорированы. Следующие примеры эквивалентны друг другу:

<string>hiding, , myStringTable</string>
<string>hiding, HIDING, myStringTable</string>

Для встраивания запятой в строке предшествуйте запятой с наклонной чертой влево ( \ ) символ. Вот пример, встраивающий две запятые во вторую строку:

<string>hiding, Hiding\, Seeking\, &amp; Viewing ,</string>