Skip to main content
AI agent network visualization

ترجم كتالوجات سلاسل Xcode خلال ثوانٍ

صيغ الجمع صحيحة وفق CLDR. تُحفَظ تباينات الأجهزة. تُتتبَّع حالات الترجمة. تُترجم ملفات .xcstrings من دون مغادرة IDE.

ترجمة String Catalog أعقد مما تبدو

استبدلت String Catalogs في Xcode 15 ملفات .strings و.stringsdict بملف JSON واحد — لكن التعقيد لم يختفِ. تحتاج صيغ الجمع إلى فئات CLDR الصحيحة لكل لغة، ويجب أن تبقى تباينات الأجهزة (iPhone مقابل iPad مقابل Mac) مرتبطة بمفاتيحها، كما أن تتبّع الحالة في Xcode يعني أن حقلًا واحدًا خاطئًا يُبطِل الإدخال بأكمله.

تحتاج كل لغة إلى فئات جمع CLDR مختلفة — العربية تحتاج الفئات الست جميعها، واليابانية تحتاج فقط "other"، والروسية تحتاج أربع صيغ مميزة

يجب أن تبقى تباينات السلاسل الخاصة بالأجهزة (iPhone, iPad, Mac, Apple Watch) مرتبطة على نحو صحيح بمفاتيحها الأم

يتتبع Xcode حالات الترجمة (new, needs_review, translated, stale) — وقيم الحالة الخاطئة تجعل Xcode يتجاهل الترجمات أو يعلّمها على نحو غير صحيح

يؤدي الترحيل من .strings/.stringsdict القديمة إلى .xcstrings إلى فروق في التنسيق لا تتعامل معها الأدوات العامة

المصدر (English)
Localizable.xcstrings
{
  "sourceLanguage": "en",
  "version": "1.0",
  "strings": {
    "welcome_title": {
      "extractionState": "manual",
      "localizations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "Welcome to the App"
          }
        }
      }
    },
    "item_count": {
      "localizations": {
        "en": {
          "variations": {
            "plural": {
              "zero": {
                "stringUnit": {
                  "state": "translated",
                  "value": "No items"
                }
              },
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld item"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld items"
                }
              }
            }
          }
        }
      }
    },
    "device_greeting": {
      "localizations": {
        "en": {
          "variations": {
            "device": {
              "iphone": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tap to continue"
                }
              },
              "ipad": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tap or click to continue"
                }
              },
              "mac": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Click to continue"
                }
              }
            }
          }
        }
      }
    }
  }
}
مترجم (German)
Localizable.xcstrings (مع de)
{
  "sourceLanguage": "en",
  "version": "1.0",
  "strings": {
    "welcome_title": {
      "extractionState": "manual",
      "localizations": {
        "de": {
          "stringUnit": {
            "state": "translated",
            "value": "Willkommen in der App"
          }
        }
      }
    },
    "item_count": {
      "localizations": {
        "de": {
          "variations": {
            "plural": {
              "zero": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Keine Elemente"
                }
              },
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Element"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Elemente"
                }
              }
            }
          }
        }
      }
    },
    "device_greeting": {
      "localizations": {
        "de": {
          "variations": {
            "device": {
              "iphone": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tippen zum Fortfahren"
                }
              },
              "ipad": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tippen oder klicken zum Fortfahren"
                }
              },
              "mac": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Klicken zum Fortfahren"
                }
              }
            }
          }
        }
      }
    }
  }
}

ما الذي يحافظ عليه i18n Agent

صيغ الجمع

تُولَّد فئات جمع CLDR الصحيحة لكل لغة مستهدفة — من اليابانية ذات الفئة الواحدة إلى العربية ذات الفئات الست

تباينات الأجهزة

تبقى تباينات السلاسل لـ iPhone وiPad وMac وApple Watch مرتبطة على نحو صحيح بمفاتيحها الأم

الوعي بالحالات

تُضبط حالات الترجمة (new, needs_review, translated) على نحو صحيح لكي تعمل سير عمل التوطين في Xcode كما ينبغي

توافق التنسيق

المخرجات متوافقة بالكامل مع محرّر String Catalog في Xcode وتندمج بسلاسة مع المشاريع الجديدة والمُرحَّلة

يعمل عبر تطوير Apple

كتالوجات السلاسل في Xcode 15+
تعريب SwiftUI
UIKit / AppKit
حِزم Swift

كيف يعمل

How i18n Agent works: Install, Translate, Done
1
2
3
terminal
$translate_filesrc/messages/en.json
 --target["de", "ja", "es"]
Done.3 languages, 142 keys translated.

لا نسخ ولصق يدوياً. لا استخراج للسلاسل. فقط ملفات مترجمة.

جرّب i18n Agent الآن

أفلت ملف الترجمة هنا

JSON, YAML, PO, XML, CSV, Markdown, Properties

أو انقر للاستعراض

اللغات المستهدفة

لا حاجة إلى التسجيلتقدير فوري

الأسئلة الشائعة

هل أنت مطوّر؟

ثبّت أداة CLI وترجِم ملفك الأول خلال دقيقتين.

تثبيت أداة CLI

هل لديك فريق مؤسسي؟

هل ما زلت عالقاً في عقد TMS؟ لنتحدث عن الترحيل.