سلاسل التغريدات متعددة اللغات ليست مشكلة ترجمة: قل 'write' بدلاً من 'translate'، وصفّ المسودات بسكربت .length محلي.
اليوم نشرت 5 مقالات. كل مقال مصحوب بسلسلة تغريدات بـ 6 لغات (en / zh / ja / ko / ar / id)، 4 تغريدات لكل لغة — المجموع 120 تغريدة.
4 من 5 احتاجت إلى قص في السلسلة الصينية. الأرقام الخام (يطبعها السكربت، بصيغة chars/limit):
zh[1]=160/140 OVER
zh[2]=164/140 OVER
zh[3]=152/140 OVER
...
id[3]=286/280 OVER
zh[2]=163/140 OVER
zh[3]=148/140 OVER
zh[2]=152/140 OVER
النمط نفسه في كل مرة: تُكتب التغريدات الإنجليزية الأربع أولاً (كل منها 230–260 حرفاً، قريبة من سقف 280)، ثم أطلب من Claude أن "يولّد النسخة الصينية من هذه الأربع". النسخة الصينية تتجاوز 140 في كل مرة تقريباً.
هذه ليست علة، بل الكلمة الخطأ. بمجرد أن تقول "translate"، يبدأ Claude بالسير سطراً سطراً — لكن السلسلة متعددة اللغات ليست مشكلة ترجمة. كل لغة يجب أن تُكتب من الصفر مقابل ميزانية أحرفها الخاصة. هذا المقال يشرح كيف تجعل مسودة Claude الأولى قريبة من الحد مباشرة، بدلاً من استهلاك 3–5 جولات للقص.
حد الطول في X ليس "عدد الحروف"، بل weighted characters:
- الحروف اللاتينية والأرقام وعلامات الترقيم: 1 weight لكل حرف
- أحرف CJK (صيني/ياباني/كوري)، بعض الإيموجي: 2 weight لكل حرف
- السقف الكلي لكل تغريدة: 280 weight
الأثر العملي:
- التغريدة الإنجليزية: سقف 280 حرفاً
- التغريدة الصينية الصافية: سقف 140 حرفاً (140 × 2 = 280)
- المختلط: كل حرف يُحسب 1 أو 2
فـ"ترجمة تغريدة إنجليزية من 260 حرفاً إلى الصينية" لا تعطي نسخة صينية من 260 حرفاً — النسخة الصينية تملك فعلياً حوالي 130 حرفاً من المساحة. جميع علامات الترقيم وعلامات التنصيص و backtick الإنجليزية الأصلية لا تزال تشغل حيزاً، وكل حرف صيني يُحسب ضعفاً. الترجمة الحرفية تضمن التجاوز تقريباً.
عندما يرى Claude "translate these 4 EN tweets to ZH"، ردّه الأول هو الحفاظ على بنية الجملة الإنجليزية وتبديل الكلمات إلى الصينية فقط:
المعنى صحيح، لكن:
- احتفظ بـ"并不相同" (حرف أكثر من "不同")
- احتفظ بـ"已经点击了" ("刚点完" أقصر)
- احتفظ بـ"并看着一个空白屏幕" ("看着空白屏" أقصر)
كل فائض محفوظ يأكل حروفاً. بالتراكم عبر 4 تغريدات، يسهل أن تفيض 20–40 حرفاً، وتجاوزت الحد.
قارن بين الصيغتين:
غير فعّال:
"Translate these 4 English tweets to Chinese, Japanese, Korean, Arabic, Indonesian."
فعّال:
"For each of these 4 points, write a thread in ZH / JA / KO / AR / ID. Each language gets a fresh pass — same argument, adjusted for that language's tweet budget.
- ZH: ≤ 140 chars per tweet, hook-first, cut detail if needed
- other languages: ≤ 280 chars
- use each language's natural phrasing, don't preserve EN sentence structure
- each tweet must be self-contained but add 🧵 only on tweet 1"
الفروق:
.lengthلا تعد بالعين. اكتب سكربتاً صغيراً يعمل على كل مسودة:
tweets.each do |loc, list|
list.each_with_index do |t, i|
len = t.length
limit = loc == "zh" ? 140 : 280
status = len > limit ? "OVER" : "ok"
puts "#{loc}[#{i}]=#{len}/#{limit} #{status}"
end
end
String#length في Ruby يُرجع عدد codepoint في Unicode — كل حرف CJK يُحسب 1. يوزن X الـ CJK بـ 2، لكن حد التغريدة الصينية 140 codepoint (لأن 140 × 2 = 280 weighted)، فـ .length يوازي سقف X مباشرة. الاستثناءات:
في الغالبية العظمى من تغريدات CJK، يبقى Ruby .length ضمن ±1 من عدّ X. استخدامه بوابة محلية يتفوّق على النشر التجريبي بـ 100 ضعف.
حين تحتاج التغريدات الصينية إلى قص، هاتان الفئتان تسقطان أولاً:
اقتباسات الكود مثل `kamal exec` تأكل حرفاً واحداً لكل backtick في السياق الصيني — حرفان لكل اقتباس، بلا قيمة دلالية. الحلول:
`kamal exec`"🧵 على التغريدة الأولى فقط. الإيموجي الأخرى في التغريدات الصينية — فكّر مرتين. كل إيموجي يكلّف أساساً حرفين (1 codepoint + أحياناً معدلات ZWJ).
'X') — توفّر حرفين لكل زوج مقارنة بالفولوث (「X」)عند توليد سلاسل متعددة اللغات، أوقف هذه الأربعة:
العَرض: جمل صينية فيها تعابير مثل "并不相同"، "已经点击了"، "一个空白屏幕" — نسخ واضح عن الإنجليزية.
الاعتراض: اكتب "don't preserve EN sentence structure" / "use natural ZH phrasing" مباشرة في البرومبت.
العَرض: ينهي Claude ويقول "done"، فيما المخرج يتجاوز الحد، وهو لا يلاحظ.
الاعتراض: اطلب من Claude عدّ طول كل تغريدة بنفسه ("count each tweet's char length and flag any over the limit")، أو اجعل سكربتاً محلياً بوابةً. أختار السكربت — Ruby أدق.
العَرض: حين يعد Claude، يتجاهل weight الإضافي للإيموجي وعلامات فولوث.
الاعتراض: لا تسأل Claude "هل تجاوزنا؟" — شغّل .length محلياً وبناءً على الأرقام اطلب منه تقليصاً.
العَرض: أحياناً كل تغريدة تحصل على 🧵، أحياناً الأولى فقط، أحياناً تهبط في 4/4.
الاعتراض: ثبّتها في البرومبت — "🧵 only on tweet 1". لا يعرف Claude افتراضياً الأعراف البصرية للسلسلة.
ست قواعد للحصول على مسودة أولى متعددة اللغات قرب الحد:
"cut detail if needed" يخبر Claude أنه مسموح له بخسارة حقائق ليناسب الطول..length محلياً كبوابة. أدق من عدّ Claude، أسرع من النشر التجريبي.البصيرة الحقيقية: يستطيع Claude كتابة السلاسل متعددة اللغات بصواب — لكن ردّه الافتراضي "ترجمة". عملك هو تحويله عبر البرومبت إلى "تأليف مستقل لكل لغة". بإضافة بوابة .length، خرجت السلسلة الصينية لآخر مقال اليوم 140/140 بالضبط من المسودة الأولى — بلا قص.