Справочный центр

Правила разбора файлов
*.stringsdict

Правила синтаксического разбора файлов .stringsdict для проекта локализации приложений
Исходные файлы

Назначение файлов:
.stringsdict файл — это текстовый файл, содержащий соответствующий список для определения/задания правил формирования множественного числа в том или ином языке. В отличии от просто устроенного Strings, файл Stringsdict представляет собой структуру сколько сложнее устроенную, столько и более функциональную. Он применим не только для подмены входящей строки ее локализованным эквивалентом, но и способен учитывать параметры форматирования, включенные в строку и формировать результат в соответствии с выбранным правилом, в отношении параметра. Plural Rule служит таким правилом, одним из типов обработки отдельного параметра входящей строки, указывающим на то, что значение этого параметра следует обработать в соответствии с CLDR Language Plural Rules.

Пример исходного .stringsdict файла:
<plist version="1.0">
    <dict>
        <key>period_years_%d</key>
        <dict>
            <key>NSStringLocalizedFormatKey</key>
            <string>%#@years@</string>
            <key>years</key>
            <dict>
                <key>NSStringFormatSpecTypeKey</key>
                <string>NSStringPluralRuleType</string>
                <key>NSStringFormatValueTypeKey</key>
                <string>d</string>
                <key>one</key>
                <string>%d год</string>
                <key>few</key>
                <string>%d лет</string>
                <key>many</key>
                <string>%d лет</string>
                <key>other</key>
                <string>%d лет</string>
            </dict>
        </dict>
    </dict>
</plist>
  1. Анализ
Структура файла Stringsdict по умолчанию:

  • Localized String Key — текстовая константа в вашем коде. Служит ключом для поиска соответствия при передаче в макрос NSLocalizedString. Именно совпадение этого поля приведет к обработке строки. Строке следует дать выразительное имя, в нашем случае подойдет "johns pineapples count".

  • Localized Format Key — формат результата преобразования c включенными параметрами. Первый и единственный параметр по умолчанию назван "VARIABLE". Для нашего примера подойдет имя "v1_pineapples_count".

  • Variable — словарь правил, применяемый к параметру VARIABLE. В случае изменения наименования параметра, словарь его правил следует переименовать соответственно ("v1_pineapples_count").

  • Language Rule Type — правило обработки параметра. Мы будем использовать Plural Rule. Таким образом наш параметр будет обработан по правилам преобразования множеств имен существительных.

  • Number Format Specifier — спецификатор указывающий на формат параметра. Нашему параметру "v1_pineapples_count" типа int, обозначающему количество фруктов, будет соответствовать значение "d". Больше о форматах преобразований данных в строке можно почитать в Apple Developer Library.

  • Zero, one, two, few, many, other — соответствуют категориям распределения кардинальных чисел в соответствии с CLDR Language Plural Rules. Каждому ключу, задействованному в отдельной локализации, должна соответствовать строка, возвращающаяся при попадании параметра "VARIABLE" в одну из категорий.

Ключи могут присутствовать, а могут не присутствовать в файле. Такие ключи как NSStringFormatSpecTypeKey, NSStringLocalizedFormatKey, NSStringPluralRuleType, NSStringFormatValueTypeKey являются системными и переводу не подлежат.

Основные ключи рассмотрим на примере ниже:
<plist version="1.0">
    <dict>
        <key>period_years_%d</key>
        <dict>
            <key>NSStringLocalizedFormatKey</key>
            <string>%#@years@</string>
            <key>years</key>
            <dict>
                <key>NSStringFormatSpecTypeKey</key>
                <string>NSStringPluralRuleType</string>
                <key>NSStringFormatValueTypeKey</key>
                <string>d</string>
                <key>one</key>
                <string>%d год</string>
                <key>few</key>
                <string>%d лет</string>
                <key>many</key>
                <string>%d лет</string>
                <key>other</key>
                <string>%d лет</string>
            </dict>
        </dict>
    </dict>
</plist>
Описание ключей:

  1. элемент key, подэлемент key
a. Назначение: контекст.
b. Пример: period_years_%d.one.
c. Пояснение: ключ верхнего уровня в совокупности с ключом нижнего уровня.

2.элемент key, подэлемент string
a. Назначение: исходная строка | строка перевода
b. Пример: %d год.
c. Пояснение: -.

Процесс перевода:
1. Чтобы получить локализованное приложение, необходимо перевести .stringsdict файлы на нужные языки.
2. Мы предлагаем воспользоваться для перевода нашим онлайн-сервисом alingvo. Сервис:
  • загружает исходные файлы
  • преобразует их в строки для перевода
  • предоставляет удобный для переводчика интерфейс
  • формирует целевые файлы локализации