Lingo.dev + .stringsdict (Xcode)
واجهة سطر أوامر Lingo.dev تقوم بترجمة ملفات Xcode من نوع .stringsdict مع الحفاظ على قواعد الجمع، واختلافات التنسيق، ومعالجة صيغ الجمع في iOS. تقوم واجهة سطر الأوامر تلقائيًا بتطبيق قواعد الجمع الصحيحة الخاصة باللغة، والحفاظ على جميع هياكل plist والبيانات الوصفية، ومعالجة المتغيرات المتعددة في النصوص المعقدة، وضمان الترميز الصحيح ومعالجة الأحرف، والتكامل بشكل أصلي مع سير عمل التعريب في iOS.
الإعداد السريع
التكوين لملفات تعدد الصيغ stringsdict في Xcode:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ru"]
},
"buckets": {
"xcode-stringsdict": {
"include": ["Resources/[locale].lproj/Localizable.stringsdict"]
}
}
}
تذكير: [locale]
هو عنصر نائب يجب أن يبقى في التكوين حرفيًا، حيث يتم استبداله باللغة الفعلية أثناء تشغيل واجهة سطر الأوامر.
ترجمة ملفات 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>No items</string>
<key>one</key>
<string>One item</string>
<key>other</key>
<string>%d items</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>No new messages</string>
<key>one</key>
<string>One new message</string>
<key>few</key>
<string>%d new messages</string>
<key>many</key>
<string>%d new messages</string>
<key>other</key>
<string>%d new messages</string>
</dict>
</dict>
متغيرات متعددة
<key>files_and_folders</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@files@ and %#@folders@</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>no files</string>
<key>one</key>
<string>one file</string>
<key>other</key>
<string>%d files</string>
</dict>
<key>folders</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>zero</key>
<string>no folders</string>
<key>one</key>
<string>one folder</string>
<key>other</key>
<string>%d folders</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"]
}