Free

ترك Claude يترجم مقالاً إلى 19 لغة

مقال واحد 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.


القرار الجوهري: ترجمة vs توطين

شيئان مختلفان جداً.

الترجمة تنقل المعنى من اللغة A إلى B — ما تقوم به Google Translate. القراءة "صحيحة" لكنها "مسطحة".

التوطين يحافظ على أسلوب الكاتب وإيقاعه ومستواه التقني، بإعادة كتابة بـ"صوت مدونة تقنية" يخص اللغة الهدف. النتيجة تُقرأ وكأنها مكتوبة من قِبل أهل اللغة.

الترجمة عمل 5 دقائق بالنسبة إلى Claude؛ التوطين يتطلب أن يُحدد الـ prompt:

  • من هو القارئ المستهدف (مطورون، فِرق تقنية)
  • أسلوب مرجعي ("يبدو مثل مدونة فلان")
  • مصطلحات يجب أن تبقى في اللغة الأصلية (أسماء API، أسماء الـ frameworks، الأوامر، الروابط)
  • المواضع التي يُسمح فيها بإعادة التركيب (تقسيم الجمل الطويلة، استبدال الاستعارات بأخرى يعرفها القارئ المحلي)

أمر /write-article في how2claude يحمل متطلبات أسلوبية لكل لغة:

ملف اللغة متطلب الأسلوب
ja.md صوت مدونة تقنية، يابانية طبيعية
ko.md صوت مدونة تقنية، كورية طبيعية
zh-TW.md استخدام تايواني، حروف تقليدية
ar.md عربية فصحى حديثة (مكتوبة)
id.md إندونيسية قياسية

تبدو وكأنها سطر واحد إضافي. لكنها حاسمة بالنسبة إلى Claude — من دونها، الافتراضي هو توليد "ترجمة كتاب مدرسي".

بنية الملفات: 19 لغة تسكن في مجلد واحد

مجلد لكل مسودة، 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، ثم أشعّ إلى 18 لغة

مساران خاطئان:

خطأ: ترجمة متسلسلة. 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 واحدة تُنجز الأمر. تفصيل مهم: افعل ذلك في نفس الجلسة / نفس إصدار النموذج — الصوت ينحرف بين الجلسات وبين أجيال النماذج.

5 مواضع ينكسر فيها الأمر فعلاً

1. حدود عدد حروف التغريدة تختلف حسب اللغة

X يحسب حروف CJK (الصينية/اليابانية/الكورية) بصرامة أكبر. طلبت من Claude توليد تغريدات بهذا القيد:

  • التغريدة الصينية ≤ 140 حرفاً
  • باقي اللغات ≤ 280 حرفاً

في المرور الأول، تجاوزت ثلاث تغريدات صينية الحد (160، 164، 152). كان Claude قد ترجم التغريدات الإنجليزية حرفياً — تغريدة إنجليزية بـ260 حرفاً تصبح بالصينية عند الحد بالضبط.

القاعدة: التغريدات الصينية يجب إعادة كتابتها، لا ترجمتها. المتطلبات: سقف 140 حرفاً، صنّارة إلزامية، فقد بعض التفاصيل مسموح.

2. zh-TW ليست تحويل حروف

zhzh-TW تُغري بالكسل: مرّرها عبر محوِّل مبسّط-إلى-تقليدي. الحروف تتطابق، المفردات لا:

zh zh-TW (خطأ) zh-TW (صواب)
文件 文件 檔案
信息 信息 資訊
软件 軟件 軟體
视频 視頻 影片

عند طلب zh-TW من Claude، قل الاثنين: "استخدام تايواني، حروف تقليدية". "تقليدية فقط" تعطيك تحويل حروف فحسب.

3. لغات RTL (ar، he) تكسر التخطيط

العربية والعبرية تُقرأ من اليمين إلى اليسار. في جانب Rails تحتاج <html dir="rtl"> ومتغيرات Tailwind rtl:. لكن الترجمة نفسها فيها مطبّات:

  • كتل الكود تبقى بالإنجليزية، لكن حين تُحيط فقرة عربية بكتلة كود، يحتاج المتصفح unicode-bidi: isolate وإلا يتم "شفط" الكود إلى تدفق RTL
  • علامات ترقيم مختلطة: العربية تستخدم ، بدل ,، و؟ بدل ?. Claude افتراضياً يستخدم علامات إنجليزية؛ يجب التنبيه صراحة
  • اتجاه الأرقام: العربية تكتب الأرقام من اليسار إلى اليمين (2026) داخل فقرة تسير من اليمين إلى اليسار. المتصفحات تتعامل مع هذا، لكن Claude يخلط كثيراً في النص الخام

4. Claude يُسطّح صوت الكاتب افتراضياً

العبارات العامية في الأصل ("دفعة واحدة"، "وقعت في الحفرة"، "انقلبت العربة") يترجمها Claude إلى اليابانية/الكورية افتراضياً بصيغ كتابية رسمية (「一気に実装」「落とし穴」「失敗」) — المعنى يتطابق، لكن النبرة تتبخر.

العلاج: انصّ في الـ prompt — "حافظ على صوت المدونة التقنية المباشر، الساخر قليلاً من الذات، غير الرسمي؛ لا تُضفِ طابعاً أكاديمياً". ومع ذلك، بعض اللغات (الألمانية، الروسية) ستهبط أكثر "رسمية" قليلاً من المصدر — اللغات نفسها فيها انحياز للسجل الكتابي.

5. العناصر النائبة والمتغيرات لا تُترجم

السلاسل النصية داخل الكود في سلّتين — نص واجهة المستخدم (يُترجم) والعناصر النائبة/أسماء المتغيرات (لا):

t("pricing.page_title")        # لا تُترجم (i18n key)
"user_id"                      # لا تُترجم (اسم متغير)
"Monthly subscription"         # تُعرض كمثال في النص للقارئ → لا تُترجم

لأي شيء ملاصق للكود، "لا تُترجم" هو الافتراضي الأأمن. ما يجب ترجمته فعلاً هو ملفات locale لـ i18n (config/locales/xx.yml)، وذاك عمل منفصل.

النشر: POST واحد، 19 لغة

/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 مفهرسة حسب locale
  • جدول x_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 لغة:

  1. اختم zh (أو en) أولاً، ثم أشعِع الترجمات الـ 18 الأخرى من ذلك المصدر. لا تُسلسل.
  2. متطلب الأسلوب لكل لغة في الـ prompt. "يابانية طبيعية" لا يكفي — قل "صوت مدونة تقنية، يابانية طبيعية".
  3. ترجِم title وsummary بشكل منفصل، لا تسحبهما من الفقرة الأولى للمتن. اجمع الـ 19 title/summary في meta.json.
  4. اذكر صراحةً ما لا يُترجم: كتل الكود، الأوامر، أسماء API، الروابط، مفاتيح i18n، أسماء المتغيرات. ما يُترجم: النص التوضيحي، الاستعارات، بنية الفقرات.
  5. التغريدات يجب إعادة كتابتها، لا ترجمتها. 140 حرفاً للصينية، 280 لباقي اللغات. الترجمة الحرفية من الإنجليزية إلى الصينية تتجاوز الحد دائماً.
  6. لـ zh-TW قل "استخدام تايواني + حروف تقليدية"؛ وإلا ستحصل على تحويل حروف فقط وتبقى المفردات قارية.
  7. لغات RTL (ar، he) تحتاج dir="rtl" + متغيرات Tailwind rtl: في جانب Rails. علامات الترقيم المختلطة وعزل كتل الكود يُعالَجان بشكل منفصل.
  8. POST كل اللغات دفعة واحدة — 19 content + 19 title/summary + تغريدات لكل حساب موصول، طلب واحد للباك-إند.

الاختناق الحقيقي ليس جودة الترجمة — نماذج من فئة Claude 4 تترجم إلى اليابانية/الكورية/العربية/الروسية بجودة قريبة من أهل اللغة. الاختناق هو هل أنت على استعداد لوضع مقال أمام قرّاء بـ19 لغة في وقت واحد. تقنياً الأمر يستغرق 5 دقائق. على صعيد المحتوى، يتطلب إرادة خدمة 200 ضعف من الجمهور في آن واحد.