Lingo.dev + .stringsdict (Xcode)
Lingo.dev CLI переводит файлы .stringsdict для Xcode, сохраняя правила множественного числа, вариации форматов и обработку множественного числа в iOS. CLI автоматически применяет правильные языковые правила множественного числа, сохраняет всю структуру plist и метаданные, обрабатывает несколько переменных в сложных строках, обеспечивает правильное кодирование и обработку символов, а также интегрируется с рабочими процессами локализации iOS.
Быстрая настройка
Настройка для файлов множественного числа stringsdict в Xcode:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ru"]
},
"buckets": {
"xcode-stringsdict": {
"include": ["Resources/[locale].lproj/Localizable.stringsdict"]
}
}
}
Напоминание: [locale]
— это заполнитель, который должен оставаться в конфигурации буквально, так как он заменяется на фактический локаль во время выполнения CLI.
Перевод файлов Stringsdict
npx lingo.dev@latest i18n
Обрабатывает сложные правила множественного числа iOS, сохраняя структуру plist и вариации форматов.
Структура множественного числа
Основные формы множественного числа
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@items@</string>
<key>items</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>Нет элементов</string>
<key>one</key>
<string>Один элемент</string>
<key>other</key>
<string>%d элементов</string>
</dict>
</dict>
</dict>
</plist>
Сложные правила множественного числа
<key>message_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@messages@</string>
<key>messages</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>Нет новых сообщений</string>
<key>one</key>
<string>Одно новое сообщение</string>
<key>few</key>
<string>%d новых сообщения</string>
<key>many</key>
<string>%d новых сообщений</string>
<key>other</key>
<string>%d новых сообщений</string>
</dict>
</dict>
Несколько переменных
<key>files_and_folders</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@files@ и %#@folders@</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>нет файлов</string>
<key>one</key>
<string>один файл</string>
<key>other</key>
<string>%d файлов</string>
</dict>
<key>folders</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>нет папок</string>
<key>one</key>
<string>одна папка</string>
<key>other</key>
<string>%d папок</string>
</dict>
</dict>
Языковые правила
Разные языки имеют уникальные правила образования множественного числа:
- Английский:
zero
,one
,other
- Русский:
zero
,one
,few
,many
,other
- Польский:
zero
,one
,few
,many
,other
- Арабский:
zero
,one
,two
,few
,many
,other
Система перевода автоматически применяет правильные правила для каждого целевого языка.
Расширенная конфигурация
Несколько файлов Stringsdict
"xcode-stringsdict": {
"include": [
"Resources/[locale].lproj/Localizable.stringsdict",
"Resources/[locale].lproj/Notifications.stringsdict"
]
}
Блокировка ключей формата
"xcode-stringsdict": {
"include": ["Resources/[locale].lproj/Localizable.stringsdict"],
"lockedKeys": ["NSStringLocalizedFormatKey", "NSStringFormatSpecTypeKey"]
}