مقال واحد 19 لغة: بنية الملفات، prompt الترجمة، 5 مطبات حقيقية، كيفية POST دفعة واحدة.
الوثائق الرسمية لكل من Anthropic وOpenAI باللغة الإنجليزية فقط. هذه فجوة ضخمة في منظومة المحتوى العالمية لمطوري الذكاء الاصطناعي. how2claude يردم هذه الفجوة — كل مقال يصدر بـ 19 لغة في نفس الوقت: zh / en / zh-TW / ja / ko / es / pt-BR / id / vi / tr / ar / fr / de / it / ru / uk / pl / he / th.
توظيف مترجمين بشريين غير واقعي (20 ترجمة لكل مقال، الواحدة بآلاف الدولارات). ترك Claude يقوم بالعمل يُنزل التكلفة الحدية إلى ما يقارب الصفر — لكن رمي عبارة "ترجِم إلى اليابانية" فوق السور يعيد لك نصاً بنكهة ترجمة آلية صارخة وقد اختفى صوت الكاتب. ما يلي هو المسار الكامل للقيام بذلك بشكل صحيح: بنية الملفات، كيفية صياغة prompt الترجمة، النقاط التي سيتعثر عندها Claude حتماً، وكيفية إرسال POST واحد يحتوي 19 لغة مع تغريدات خاصة بكل لغة إلى API.
شيئان مختلفان جداً.
الترجمة تنقل المعنى من اللغة A إلى B — ما تقوم به Google Translate. القراءة "صحيحة" لكنها "مسطحة".
التوطين يحافظ على أسلوب الكاتب وإيقاعه ومستواه التقني، بإعادة كتابة بـ"صوت مدونة تقنية" يخص اللغة الهدف. النتيجة تُقرأ وكأنها مكتوبة من قِبل أهل اللغة.
الترجمة عمل 5 دقائق بالنسبة إلى Claude؛ التوطين يتطلب أن يُحدد الـ prompt:
أمر /write-article في how2claude يحمل متطلبات أسلوبية لكل لغة:
| ملف اللغة | متطلب الأسلوب |
|---|---|
ja.md |
صوت مدونة تقنية، يابانية طبيعية |
ko.md |
صوت مدونة تقنية، كورية طبيعية |
zh-TW.md |
استخدام تايواني، حروف تقليدية |
ar.md |
عربية فصحى حديثة (مكتوبة) |
id.md |
إندونيسية قياسية |
تبدو وكأنها سطر واحد إضافي. لكنها حاسمة بالنسبة إلى Claude — من دونها، الافتراضي هو توليد "ترجمة كتاب مدرسي".
مجلد لكل مسودة، 20 ملفاً:
docs/drafts/let-claude-translate-articles/
├── meta.json # title + summary لجميع اللغات الـ 19
├── zh.md # الصينية (المصدر، تُكتب أولاً)
├── en.md # الإنجليزية (الدفعة الأولى من الترجمات)
├── zh-TW.md
├── ja.md
├── ko.md
├── ...(14 لغة أخرى)
└── th.md
meta.json:
{
"category_slug": "use-cases",
"series_slug": "writing",
"free": true,
"title": {
"zh": "让 Claude 把一篇文章翻译成 19 种语言",
"en": "Letting Claude Translate One Article Into 19 Languages",
"ar": "ترك Claude يترجم مقالاً إلى 19 لغة",
"...": "..."
},
"summary": {
"ar": "مقال واحد 19 لغة: بنية الملفات، prompt الترجمة، 5 مطبات حقيقية، كيفية POST دفعة واحدة.",
"...": "..."
}
}
السطر الأول من كل ملف .md هو # العنوان، والباقي هو المتن. العنوان لا يؤخذ من السطر الأول لملف md — بل من meta.json، هكذا يكون عنوان كل لغة عبارة قصيرة مصقولة، وليس الجملة الافتتاحية للمقال التي قد تكون امتدت أثناء الترجمة.
مساران خاطئان:
خطأ: ترجمة متسلسلة. zh → en → ja → ko → ...
المشكلة: ja مبنية على en، ko مبنية على ja — كل قفزة تُسرِّب قليلاً من المعنى. عند الوصول إلى th (التايلاندية) تكون المعلومة من الدرجة الرابعة.
صواب: ترجمة شعاعية. اختم zh → ولّد en / ja / ko / ar / id / ... مباشرة من المصدر.
كل لغة تخرج من الأصل مباشرة، بدون محطات وسيطة.
شكل الـ prompt (معبّأ داخل /write-article):
هذا مقال مدونة تقنية حول X، المصدر بالصينية:
[zh.md كاملاً]
ترجِم إلى اللغات التالية، بمتطلبات لكل لغة:
- ja.md: صوت مدونة تقنية، يابانية طبيعية
- ko.md: صوت مدونة تقنية، كورية طبيعية
- ar.md: عربية فصحى حديثة (مكتوبة)
...
القواعد:
1. حافظ على أسلوب الكاتب المباشر، المهني، الساخر قليلاً من الذات
2. لا تُترجم كتل الكود، الأوامر، أسماء API، الروابط
3. يُسمح بإعادة تركيب العناوين، العناوين الفرعية، وتدفق الفقرات
4. أصدر title منفصلاً لكل لغة — قصير، فيه صنّارة، ليس ترجمة حرفية للعنوان الأصلي
ترجمة 18 لغة بالتوازي، جلسة Claude واحدة تُنجز الأمر. تفصيل مهم: افعل ذلك في نفس الجلسة / نفس إصدار النموذج — الصوت ينحرف بين الجلسات وبين أجيال النماذج.
X يحسب حروف CJK (الصينية/اليابانية/الكورية) بصرامة أكبر. طلبت من Claude توليد تغريدات بهذا القيد:
في المرور الأول، تجاوزت ثلاث تغريدات صينية الحد (160، 164، 152). كان Claude قد ترجم التغريدات الإنجليزية حرفياً — تغريدة إنجليزية بـ260 حرفاً تصبح بالصينية عند الحد بالضبط.
القاعدة: التغريدات الصينية يجب إعادة كتابتها، لا ترجمتها. المتطلبات: سقف 140 حرفاً، صنّارة إلزامية، فقد بعض التفاصيل مسموح.
zh → zh-TW تُغري بالكسل: مرّرها عبر محوِّل مبسّط-إلى-تقليدي. الحروف تتطابق، المفردات لا:
| zh | zh-TW (خطأ) | zh-TW (صواب) |
|---|---|---|
| 文件 | 文件 | 檔案 |
| 信息 | 信息 | 資訊 |
| 软件 | 軟件 | 軟體 |
| 视频 | 視頻 | 影片 |
عند طلب zh-TW من Claude، قل الاثنين: "استخدام تايواني، حروف تقليدية". "تقليدية فقط" تعطيك تحويل حروف فحسب.
العربية والعبرية تُقرأ من اليمين إلى اليسار. في جانب Rails تحتاج <html dir="rtl"> ومتغيرات Tailwind rtl:. لكن الترجمة نفسها فيها مطبّات:
unicode-bidi: isolate وإلا يتم "شفط" الكود إلى تدفق RTL، بدل ,، و؟ بدل ?. Claude افتراضياً يستخدم علامات إنجليزية؛ يجب التنبيه صراحة2026) داخل فقرة تسير من اليمين إلى اليسار. المتصفحات تتعامل مع هذا، لكن Claude يخلط كثيراً في النص الخامالعبارات العامية في الأصل ("دفعة واحدة"، "وقعت في الحفرة"، "انقلبت العربة") يترجمها Claude إلى اليابانية/الكورية افتراضياً بصيغ كتابية رسمية (「一気に実装」「落とし穴」「失敗」) — المعنى يتطابق، لكن النبرة تتبخر.
العلاج: انصّ في الـ prompt — "حافظ على صوت المدونة التقنية المباشر، الساخر قليلاً من الذات، غير الرسمي؛ لا تُضفِ طابعاً أكاديمياً". ومع ذلك، بعض اللغات (الألمانية، الروسية) ستهبط أكثر "رسمية" قليلاً من المصدر — اللغات نفسها فيها انحياز للسجل الكتابي.
السلاسل النصية داخل الكود في سلّتين — نص واجهة المستخدم (يُترجم) والعناصر النائبة/أسماء المتغيرات (لا):
t("pricing.page_title") # لا تُترجم (i18n key)
"user_id" # لا تُترجم (اسم متغير)
"Monthly subscription" # تُعرض كمثال في النص للقارئ → لا تُترجم
لأي شيء ملاصق للكود، "لا تُترجم" هو الافتراضي الأأمن. ما يجب ترجمته فعلاً هو ملفات locale لـ i18n (config/locales/xx.yml)، وذاك عمل منفصل.
/publish-article يُرسل POST للمسودة إلى how2claude.com/api/articles:
{
"category_slug": "use-cases",
"series_slug": "writing",
"free": true,
"thread": true,
"title": { "zh": "...", "en": "...", "ja": "...", ... },
"summary": { "zh": "...", "en": "...", ... },
"content": { "zh": "<md>", "en": "<md>", ... },
"tweets": { "en": ["...", "..."], "zh": [...], ... }
}
طلب واحد ~300KB (19 لغة × ~15KB). الخادم يُفرِّق إلى جداول:
articles، title / summary / content هي jsonb مفهرسة حسب localex_queue_tweets، حسب locale + حساب، يُرسَل إلى طابور الجدولةالتغريدات تُرسَل فقط للـ locales التي يوجد لها حساب X موصول (حالياً en/zh/ja/ko/ar/id — 6). اللغات بدون حساب تُرسِل []. استعلام الحسابات:
Account.all.each { |a| puts "#{a.locale}: #{a.name}" }
# en: @how2claude
# zh: @howtoclaude
# ja: @how2claude_ja
# ko: @how2claude_ko
# ar: @how2claude_ar
# id: @how2claude_id
قائمة تحقق كاملة لترك Claude يترجم مقالاً واحداً إلى 19 لغة:
dir="rtl" + متغيرات Tailwind rtl: في جانب Rails. علامات الترقيم المختلطة وعزل كتل الكود يُعالَجان بشكل منفصل.الاختناق الحقيقي ليس جودة الترجمة — نماذج من فئة Claude 4 تترجم إلى اليابانية/الكورية/العربية/الروسية بجودة قريبة من أهل اللغة. الاختناق هو هل أنت على استعداد لوضع مقال أمام قرّاء بـ19 لغة في وقت واحد. تقنياً الأمر يستغرق 5 دقائق. على صعيد المحتوى، يتطلب إرادة خدمة 200 ضعف من الجمهور في آن واحد.