محوّلات النصوص الكتابية
محوّلات النصوص الكتابية هي أدوات حتمية لا تعتمد على نماذج اللغة الكبيرة، تعمل كخطوات ما بعد الترجمة لتحويل النص من نظام كتابة إلى آخر. وهي تتيح سير عمل "ترجم مرة واحدة، واعرض بنظم كتابة متعددة" — حيث تترجم إلى نظام كتابة للعمل (عادةً اللاتيني)، ثم يجري التحويل إلى نظام الكتابة المخصص للعرض تلقائيًا.
لماذا محوّلات النصوص الكتابية؟
بعض اللغات تستخدم نظم كتابة متعددة لنفس اللغة المنطوقة:
- كري السهول (Plains Cree): نظام SRO (اللاتيني) للتحرير → المقاطع الكتابية (ᓀᐦᐃᔭᐍᐏᐣ) للعرض
- الصربية: اللاتينية للاستخدام الدولي → السيريلية للاستخدام المحلي
- الكلينغونية: الكتابة بالحروف اللاتينية للطباعة → pIqaD ( ) للعرض
الترجمة المباشرة إلى نظم الكتابة غير اللاتينية تخلق مشكلات: نماذج اللغة الكبيرة تهلوس بالأحرف، وملفات JSON تصبح صعبة الإدارة في أنظمة التحكم بالإصدارات، وأدوات المقارنة لا تستطيع مقارنة التغييرات. تحلّ محوّلات النصوص الكتابية هذه المشكلة بالإبقاء على الترجمات في نظام كتابة ملائم للتحكم بالإصدارات والتحويل بشكل حتمي عند المزامنة.
المحوّلات المتاحة
يأتي Champollion مزودًا بخمسة محوّلات نصوص كتابية مدمجة:
| اللغة المحلية | من | إلى | النوع | هل يلزم خط؟ |
|---|---|---|---|---|
crk | SRO (الكتابة الرومانية القياسية) | مقاطع الكري الكتابية | حتمي | لا — يونيكود أصلي |
sr | اللاتينية | السيريلية | حتمي | لا — يونيكود أصلي |
tlh | الكتابة بالحروف اللاتينية | pIqaD | حتمي | نعم — PUA U+F8D0–F8FF |
x-elvish-s | اللاتينية | Tengwar (نمط Beleriand) | حتمي | نعم — PUA U+E000–E07F |
x-kryptonian | اللاتينية | الكريبتونية | تشفير قائم على الخط | نعم — PUA U+E100–E119 |
الحتمي مقابل القائم على الخط
- المحوّلات الحتمية (الكري، الصربية، الكلينغونية، Tengwar) تنفّذ تحويلًا حقيقيًا من حرف إلى حرف باستخدام قواعد لغوية. والمخرجات تحتوي على أحرف يونيكود فعلية.
- المحوّلات القائمة على الخط (الكريبتونية) هي أنظمة تشفير بالاستبدال واحد لواحد، حيث تكون المخرجات أحرف يونيكود من منطقة الاستخدام الخاص (PUA) لا تُعرض بشكل صحيح إلا مع تحميل خط معيّن.
كيف تعمل
تُنفَّذ محوّلات النصوص الكتابية بعد الترجمة كخطوة معالجة لاحقة. وخط المعالجة هو:
Source (English) → LLM Translation → Working Script → Script Converter → Display Script
على سبيل المثال، كري السهول (Plains Cree):
"Welcome" → LLM → "tānisi" (SRO) → Converter → "ᑖᓂᓯ" (Syllabics)
المطابقة الجشعة من اليسار إلى اليمين
تستخدم جميع المحوّلات الخوارزمية نفسها: عند كل موضع حرف، تجرّب أطول مطابقة ممكنة أولًا، ثم مطابقات أقصر تدريجيًا. والأحرف التي لا تطابق أي نمط (المسافات، علامات الترقيم، الأرقام) تمرّ دون تغيير.
وهذا يعالج الحروف الثنائية والثلاثية بشكل صحيح:
- الكلينغونية:
tlh→ حرف pIqaD واحد (وليسt+l+h) - الصربية:
nj→њ(وليسн+ј) - الكري:
twê→ مقطع كتابي واحد (وليسt+w+ê)
استخدام محوّلات النصوص الكتابية
تُفعَّل محوّلات النصوص الكتابية تلقائيًا عندما يطابق رمز اللغة المحلية محوّلًا مسجّلًا. ولا حاجة لأي إعداد — ما عليك سوى تحديد لغتك المحلية المستهدفة:
{
"pairs": {
"en:crk": {
"method": "llm-coached",
"model": "google/gemini-2.5-pro"
}
}
}
عندما يزامن champollion الزوج en:crk، تُنتَج الترجمات أولًا بنظام SRO، ثم تُحوَّل تلقائيًا إلى المقاطع الكتابية قبل الكتابة إلى crk.json.
التحقق من حالة المحوّل
npx champollion status
تعرض مخرجات الحالة الأزواج التي لديها محوّلات نصوص كتابية نشطة ونوع التحويل الذي تنفّذه.
متطلبات خطوط الويب
ثلاثة محوّلات تُنتج أحرف يونيكود من منطقة الاستخدام الخاص (PUA) تتطلب خطوط ويب مخصصة:
الكلينغونية (pIqaD)
ثبّت خط pIqaD متوافقًا مع CSUR (مثل "pIqaD qolqoS" أو "Klingon pIqaD HaSta"):
@font-face {
font-family: 'pIqaD';
src: url('/fonts/pIqaD.woff2') format('woff2');
unicode-range: U+F8D0-F8FF;
}
:lang(tlh) {
font-family: 'pIqaD', sans-serif;
}
Tengwar (السندارينية)
ثبّت خط Tengwar متوافقًا مع CSUR (مثل "Tengwar Formal CSUR" أو "Tengwar Annatar"):
@font-face {
font-family: 'Tengwar';
src: url('/fonts/tengwar-formal-csur.woff2') format('woff2');
unicode-range: U+E000-E07F;
}
:lang(x-elvish-s) {
font-family: 'Tengwar', serif;
}
الكريبتونية
ثبّت خطًا كريبتونيًا مربوطًا بنقاط ترميز PUA من U+E100 إلى U+E119:
@font-face {
font-family: 'Kryptonian';
src: url('/fonts/kryptonian.woff2') format('woff2');
unicode-range: U+E100-E119;
}
:lang(x-kryptonian) {
font-family: 'Kryptonian', sans-serif;
}
:::tip نهج بديل للكريبتونية
بما أن الكريبتونية تشفير خالص للأحرف من A إلى Z، يمكنك تجاوز محوّل النص الكتابي بالكامل وتطبيق الخط على النص اللاتيني عبر CSS. وهذا غالبًا أبسط لعمليات النشر على الويب — ما عليك سوى تقديم الخط الكريبتوني وتعيين font-family على العناصر المعنية.
:::
إضافة محوّل مخصص
لإضافة محوّل للغة جديدة، عدّل lib/scripts.js:
- أنشئ خريطة التحويل — مصفوفة مرتبة من أزواج
[from, to]، مع وضع التسلسلات الأطول أولًا - أنشئ دالة التحويل — ماسح جشع من اليسار إلى اليمين (استخدم
sroToSyllabicsكقالب) - سجّله في الكائن
SCRIPT_CONVERTERSمع رمز اللغة المحلية كمفتاح - أضف الحقل
scriptإلى مدخل تسجيل اللغة فيregisters.js
// Example: adding a converter for Cherokee (chr)
const LATIN_TO_CHEROKEE_MAP = [
['ga', 'Ꭶ'], ['ka', 'Ꭷ'], ['ge', 'Ꭸ'], // ...
];
function latinToCherokee(text) {
// Same greedy left-to-right pattern as other converters
}
SCRIPT_CONVERTERS['chr'] = {
from: 'Latin',
to: 'Cherokee Syllabary',
type: 'deterministic',
converter: latinToCherokee,
};
انظر أيضًا
- اللغات المصطنعة ونظم الكتابة والإملاء — خطوط PUA، يونيكود، إضافة محوّلات جديدة
- بوابة الجودة — التحقق الذي يُنفَّذ قبل تحويل النص الكتابي
- اللغات المدعومة — اللغات التي لديها محوّلات نصوص كتابية
- دعم لغة منخفضة الموارد — تحويل SRO إلى المقاطع الكتابية في سياقه
- كتاب الوصفات: خط معالجة محكوم بـ FST — تحويل النص الكتابي في خط معالجة متعدد المراحل