BookTranslator
BookTranslator

كيفية ترجمة جدول بيانات Excel دون إفساد الصيغ أو القوائم المنسدلة

اكتشف النص الذي يتخطاه المترجم خلية بخلية في ملف .xlsx (نص الصيغة، النص المنسق، الروابط، المخططات، وحدات الماكرو)، وأصلح القوائم المنسدلة والأكواد التي قد يفسدها، وتحقق من النتيجة باستخدام نص برمجي مجاني ومصنف اختباري.

BookTranslator

BookTranslator Team

قراءة 13 دقيقة

لترجمة مصنف Excel كامل، ارفع ملف .xlsx إلى مترجم مستندات بدلاً من ترجمة الخلايا واحدة تلو الأخرى. يعمل أمر Review > Translate المدمج في Excel على النص الذي تحدده (دعم Microsoft)، وهو مناسب لتسمية واحدة وبطيء لقائمة أسعار. يقرأ مترجم الملفات كل خلية نصية ويترجمها ويكتبها مرة أخرى إلى نفس العنوان، لذا تبقى الصيغ والأرقام والتواريخ في مكانها.

ما لا يخبرك به هو النص الذي لم يقرأه أبدًا. النص المكتوب داخل صيغة، أو خلية تحتوي على كلمة واحدة غامقة، أو رابط، أو ملاحظة، أو عنوان مخطط: في الترجمة خلية بخلية، يمكن أن يعود كل هذا باللغة الأصلية. وهناك شيئان يمكن أن يتعطلا: قائمة منسدلة لم تُترجم قيمها المسموح بها، ورمز منتج تمت ترجمته.

أنشأنا مصنفًا اختباريًا من ورقتين يحتوي على نص في كل من تلك المواضع، وكتبنا أداة فحص مجانية تسرد مكان وجود النص، وشغّلنا المصنف عبر نسخة محلية من معالجة جداول البيانات التي يستخدمها BookTranslator. يوضح هذا الدليل ما عاد، وما يجب تغييره قبل الرفع، وكيفية التحقق من الملف المترجم.

إجابة سريعة: ما الذي تتم ترجمته في مصنف

أين يوجد النصمثال من اختبارناهل تتم ترجمته بواسطة BookTranslator؟ما يجب فعله
خلايا نصية عادية، بما في ذلك صفوف العناوين"دفتر أزرق"، "السعر"نعملا شيء
الأرقام والتواريخ والقيم المنطقية4.5, 2026-10-30تُركت كما هيتحقق من تنسيقات الأرقام للسوق المستهدف
الصيغ=C2*D2تُركت كما هيلا شيء
النص داخل صيغة=IF(D2>5,"In stock","Low stock")لاانقل الكلمات إلى خلايا (انظر الخطوة 2)
خلية بتنسيق مختلط"إصدار محدود من القلم"لا، يتم تخطي الخلية بأكملهاامسح التنسيق أولاً، أو ترجمها يدويًا
خلايا الارتباطات التشعبية"صفحة المنتج"لاعدّل نص الرابط بعد الترجمة
القيمة داخل خلية قائمة منسدلة"قرطاسية"نعم، لكن القائمة المنسدلة لاأصلح القائمة، وإلا تصبح الخلية غير صالحة
الرموز التي تحتوي على حروف"A-77"، "B-09"تُرسل إلى المترجمتحقق منها بعد الترجمة
الرموز التي تحتوي على أرقام أو رموز فقط"00123"تُركت كما هيلا شيء
الملاحظات والتعليقات"تحقق من اسم المورد قبل الإصدار"لاترجمها يدويًا، أو احذفها
أسماء الأوراق والنطاقات المسماة"Products"، PriceRangeلا، حتى تستمر الصيغ العابرة للأوراق في العملأعد تسمية الأوراق يدويًا فقط إذا لزم الأمر، بعد التحقق من الصيغ
المخططات والماكرومخطط شريطي، مشروع VBAأُزيل من الملف المترجم في اختبارنااحتفظ بالأصل، وأعد البناء بعد ذلك (انظر أدناه)

لا تُقبل ملفات .xls الأقدم. افتحها في Excel واحفظها بصيغة .xlsx أولًا. تُقبل ملفات .xlsm التي تدعم الماكرو، لكن اقرأ قسم الماكرو قبل رفع أحدها: الملف المترجم لا يحتوي على ماكرو، وإذا كان التنزيل لا يزال ينتهي بـ .xlsm، فأعد تسميته إلى .xlsx قبل فتحه.

الخطوة 1: شغّل أداة الفحص على مصنفك

نزّل check_xlsx_text.py وشغّله على ملفك:

python3 check_xlsx_text.py "Price list.xlsx"

لا يحتاج إلا إلى Python 3 ويقرأ الملف دون تغييره. إليك الملخص الخاص بـ مصنف العينة:

Counts by location:
  cell         code, ID or address        2
  cell         link text                  1
  cell         mixed formatting           1
  cell         plain text                 15
  comments     comment or note text       1
  dropdown     list of allowed values     1
  formula text text inside a formula      6
  sheet        sheet name                 2
  workbook     defined name               1

Plain text cells (translated by a cell-by-cell translator): 15
Items that need a decision before you upload: 12

أسفل الأعداد، يسرد كل عنصر مع ورقته وخلية، مثل Products!E2 formula text 'In stock'. استخدم تلك القائمة كقائمة مهامك للخطوة 2. إذا كان مصنفك يحتوي على مخططات أو مربعات نص أو جداول محورية أو مشروع ماكرو، فستظهر أيضًا في الأعداد.

يصف README مصنف العينة، ويسرد تجزئات الملفات، ويربط النصوص البرمجية التي تبنيها، حتى تتمكن من تكرار الاختبار.

ما حدث لمصنف الاختبار الخاص بنا

شغّلنا مصنف العينة عبر الشيفرة التي يستخدمها معالج جداول البيانات في BookTranslator، وأعدنا إنتاجها محليًا في 2026-11-01 بنفس المكتبة (ExcelJS 4.4.0). بدلًا من ترجمة حقيقية، استخدمنا عنصرًا نائبًا يضيف "[DE]" أمام نص كل خلية. هذا يبقي نموذج اللغة خارج الاختبار، لذا تُظهر النتائج فقط ما ترسله معالجة الملف وتحتفظ به وتُسقطه.

يقرأ المعالج كل ورقة خلية بخلية. يرسل الخلية للترجمة فقط إذا كانت تحتوي على قيمة نصية عادية، ويتخطى أي نص مكوّن فقط من أرقام وعلامات ترقيم ورموز. يُنسخ كل شيء آخر في شبكة الخلايا دون تغيير. ثم يعيد BookTranslator ملفين: مصنف مترجم ومصنف ثنائي اللغة.

المصنف المترجم

هذا هو الملف الذي يجب استخدامه. عادت جميع الصيغ الست و7 أرقام وتواريخ، وتنسيقات العملة والتاريخ، والخلايا المدمجة، والملاحظة، وقاعدة القائمة المنسدلة، والنطاق المسمى دون تغيير. تُرجمت خلايا الرأس التسع وخلايا النص العادي الأخرى في مكانها. تحتاج ثلاث نتائج إلى انتباه:

يبقى النص داخل الصيغ باللغة المصدر. استخدم عمود الحالة =IF(D2>5,"In stock","Low stock"). الصيغة ليست خلية نصية، لذا لا يقرأها المعالج أبدًا، ويبقى "In stock" بالإنجليزية في كل صف. ينطبق الأمر نفسه على النص المدمج بـ & أو CONCAT، وعلى النص داخل HYPERLINK.

قيمة القائمة المنسدلة المترجمة لم تعد تطابق قائمتها. كانت الخلية H2 تحتوي على قائمة منسدلة تسمح بـ "Stationery, Office, Art". تُرجمت قيمة الخلية، لكن القائمة مخزنة في قاعدة التحقق، وليس في خلية، لذا لم تُترجم. أبلغ وضع المقارنة في أداة الفحص لدينا عن ذلك هكذا:

Problems: 3
  Products!A3: code changed: 'A-77' -> '[DE] A-77'
  Products!A4: code changed: 'B-09' -> '[DE] B-09'
  Products!H2: '[DE] Stationery' is not in its dropdown list ['Art', 'Office', 'Stationery']

يحتفظ Excel بقيمة تخالف قاعدة التحقق الخاصة به، لكن الشخص التالي الذي يفتح القائمة المنسدلة يرى فقط الخيارات القديمة، وستضع علامة على الخلية عبر Data > Circle Invalid Data.

تُرسل الرموز التي تحتوي على حروف إلى المترجم. تم تخطي "00123" لأنه يحتوي على أرقام فقط. أُرسل "A-77" و"B-09" لأنهما يحتويان على حرف. لذا فإن عودة الرمز دون تغيير تعتمد على النموذج؛ لا شيء في معالجة الملف يحميه. رمز SKU يعود كـ "A-77-Artikel" يكسر كل بحث يستخدمه.

المصنف ثنائي اللغة

يُدرج الملف ثنائي اللغة عمود ترجمة على يمين كل عمود كان يحتوي على خلية مترجمة واحدة على الأقل، مع رؤوس مثل "Name (Translated)". ينقل قيم الخلايا إلى أعمدتها الجديدة، لكنه لا ينقل تنسيقات الخلايا أو يحدّث الصيغ. في اختبارنا:

  • بقي تنسيق السعر $#,##0.00 في العمود C، الذي يحتوي الآن على أسماء المنتجات، بينما انتقلت الأسعار إلى العمود E دونه؛
  • بقي تنسيق التاريخ في العمود G، الذي يحتوي الآن على الكمية، فظهرت الكمية 10 كتاريخ؛
  • انتقلت =C2*D2 إلى العمود K لكنها ظلت تشير إلى C2 وD2، اللذين يحتويان الآن على اسم المنتج وترجمته، لذا لم تعد قادرة على إرجاع 45؛
  • في ورقة الملخص، أصبحت =SUM(Products!F2:F4) تجمع عمود ترجمة فارغ.

إذن، المصنف ثنائي اللغة مخصص لقراءة المصدر والترجمة جنبًا إلى جنب، وليس للحساب. لا تعدّله ولا تنسخ منه الصيغ.

المخططات والماكرو

في نسخة منفصلة من المصنف، أضفنا مخططًا ومشروع ماكرو، مخزّنين بالطريقة التي يخزنهما بها Excel. لم يكن أي منهما في الملف المترجم أو ثنائي اللغة. يقرأ ExcelJS أوراق العمل ويكتبها، والأنماط، والنصوص المشتركة، والصور، والجداول، والتعليقات، وليس لديه تعليمات برمجية لأجزاء المخططات أو مشروع VBA، لذا يستبعدها عند الحفظ. الكود نفسه لا يملك شيئًا للجداول المحورية، لذا توقّع حذف الجداول المحورية أيضًا، رغم أننا لم نختبر واحدًا. كما يحفظ المعالج مخرجاته كملف .xlsx، وهو ما لا يمكنه استيعاب وحدات الماكرو.

حد آخر للاختبار: بنينا المصنف النموذجي باستخدام ExcelJS نفسه، وهو الحالة الأكثر ملاءمة للحفاظ على التنسيقات والدمج وقواعد التحقق. قد يحتوي مصنف محفوظ بواسطة Excel على ميزات لا يمثلها ExcelJS، لذا شغّل خطوة المقارنة أدناه على ملفك الخاص بدلًا من افتراض نفس النتيجة النظيفة.

الخطوة 2: جهّز المصنف قبل الرفع

اعمل على نسخة. يخبرك المدقق بالخلايا التي يجب تغييرها.

  1. انقل نص الصيغة إلى الخلايا. ضع الكلمات في ورقة "Labels" صغيرة ووجّه الصيغة إليها: =IF(D2>5,Labels!$A$1,Labels!$A$2). خلايا التسميات نص عادي، لذا تُترجم، وتلتقط كل صيغة الترجمة. هذا التغيير الواحد عادةً يصلح معظم عدد "نص الصيغة"، لأن العبارة نفسها تميل إلى التكرار على طول عمود كامل.
  2. انقل قوائم القوائم المنسدلة إلى الخلايا. في Data > Data Validation، غيّر المصدر من قائمة مكتوبة (Stationery,Office,Art) إلى نطاق في ورقة Labels (=Labels!$B$1:$B$3). ثم تُترجم قيم القائمة مع الخلايا التي تستخدمها. تحقق من بعض الخلايا بعد ذلك: لا تقبل القائمة المنسدلة القيمة المترجمة إلا إذا ترجم النموذج "Stationery" بالطريقة نفسها في كلا الموضعين.
  3. امسح التنسيق المختلط. الخلية التي تحتوي على كلمة واحدة غامقة أو ملونة تُخزّن كأجزاء منسقة وتُتخطى بالكامل. حدد الخلية واختر Home > Clear > Clear Formats، أو أعد كتابتها، ثم أعد تطبيق الغامق بعد الترجمة. إذا كان لديك الكثير منها، دوّنها أولًا.
  4. قرر ما ستفعله بالملاحظات والتعليقات. لا تُترجم. احذف ملاحظات المراجعة التي لا تريد إرسالها إلى خدمة ترجمة، وترجم الباقي يدويًا.
  5. احفظ مصنفات الماكرو بصيغة .xlsx. احتفظ بملف .xlsm كنسخة رئيسية. ترجم نسخة .xlsx، ثم إما انسخ أعمدة النص المترجمة مرة أخرى إلى النسخة الرئيسية (Paste Special > Values، أعمدة النص فقط، حتى لا تستبدل الصيغ) أو صدّر وحدات VBA واستوردها إلى الملف المترجم.
  6. اترك المخططات لوقت لاحق. يحتوي المخطط على نص قليل: عنوان، وعناوين محاور، ومفتاح أسطورة يأتي عادةً من خلايا الرأس. غالبًا ما يكون إعادة بناء المخطط في المصنف المترجم من النطاقات نفسها أسرع، أو لصق أعمدة النص المترجمة مرة أخرى في المصنف الأصلي حتى تُحدّث مخططاته وجداوله المحورية نفسها.

الخطوة 3: ترجم الملف بأكمله

ارفع ملف .xlsx على صفحة مترجم المستندات، واختر اللغة الهدف، وتحقق من السعر المعروض قبل الدفع. رفع الملف بأكمله يترجم كل خلية نصية في كل ورقة في مهمة واحدة، مما يسهل الحفاظ على اسم المنتج نفسه في الصف 3 والصف 3000. يشرح دليلنا حول بناء مسرد ترجمة كيفية تثبيت المصطلحات التي يجب ألا تختلف.

عند انتهاء المهمة، تعرض صفحة السجل كلا التنزيلين. استخدم المصنف المترجم. افتح المصنف ثنائي اللغة فقط لمراجعة الصياغة مع شخص يقرأ اللغتين.

إذا كنت تعمل في Google Sheets، فهناك طريقان آخران. تقبل علامة التبويب Documents في Google Translate ملفات .xlsx حتى 10 ميغابايت (Google Translate Help)؛ ويقارن دليل ترجمة Google Docs خياراته. ولدى Sheets دالة GOOGLETRANSLATE(text, source_language, target_language) (Google Docs Editors Help) يمكنك تعبئتها لأسفل عمود جديد بجوار المصدر. هذا مناسب لعمود واحد من التسميات القصيرة، لكن النتائج صيغ، لذا الصقها كقيم قبل مشاركة الورقة. يترجم DeepL المستندات أيضًا؛ راجع ما تعنيه حدود مستنداته عمليًا. أيًا كان ما تستخدمه، شغّل المدقق على المصدر أولًا: النص داخل الصيغ والروابط والمخططات يقع في الأماكن نفسها بغض النظر عن الأداة التي تقرأ الملف.

الخطوة 4: تحقق من المصنف المترجم

  1. شغّل وضع المقارنة. ضع المصدر والملف المترجم جنبًا إلى جنب:

    python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"
    

    يتحقق من أن كل صيغة ورقم وتاريخ لم يتغير، وأن الرموز التي تحتوي على أحرف عادت كما كانت تمامًا، وأن كل قيمة قائمة منسدلة موجودة في قائمتها. استخدمه على المصنف المترجم فقط. لأن الملف ثنائي اللغة يزيح الأعمدة، سيُبلّغ عن كل خلية تقريبًا.

  2. أعد الحساب. إذا كانت الصيغة لا تزال تعرض النص القديم بعد إصلاح التسميات، اضغط F9 (أو Formulas > Calculate Now).

  3. ترجم المتبقي. استخدم قائمة المدقق من الخطوة 1: نص الروابط، والملاحظات، وعناوين المخططات، وأي خلايا مسحت تنسيقها.

  4. ابحث عن النص المقطوع. غالبًا ما تكون الترجمات أطول من النص المصدر، والسلاسل القصيرة هي الأكثر نموًا. تستشهد W3C بإرشادات IBM التي تحدد متوسط التوسع من الإنجليزية إلى اللغات الأوروبية بنسبة 200–300% للنصوص التي لا تتجاوز 10 أحرف (W3C). رؤوس الأعمدة قصيرة، لذا وسّع الأعمدة أو فعّل التفاف النص حيث تتعرض للقطع.

  5. تحقق من عرض الأرقام والتواريخ. لم يتم المساس بالقيم، لكن "4.50" قد تحتاج إلى الظهور كـ "4,50" للقارئ الألماني. هذا تنسيق خلية أو إعداد إقليمي، وليس ترجمة.

  6. لا "تصلح" أسماء الدوال. إذا أظهر Excel الفرنسي لدى زميل SOMME بدلاً من SUM، فهذا Excel يعرض أسماء دواله المترجمة محليًا؛ الصيغة نفسها لم تتغير.

  7. اضبط الأوراق من اليمين إلى اليسار. للعربية أو العبرية أو الفارسية أو الأردية، فعّل تخطيط الصفحة > ورقة من اليمين إلى اليسار وتحقق من محاذاة الخلايا.

  8. اطلب من قارئ متمكن مراجعته إذا كان موجّهًا للعملاء، مثل قائمة أسعار أو كتالوج منتجات. الترجمة الآلية مسودة أولى جيدة، وليست نهائية.

ملفات CSV وTSV

لا يحتوي ملف .csv على صيغ أو تنسيقات أو قوائم منسدلة، لذا تختفي معظم المشكلات المذكورة أعلاه. هناك ثلاثة اختلافات:

  • صف الرأس لا يُترجم. يتعامل المعالج مع الصف الأول كرؤوس أعمدة ويترجم صفوف البيانات فقط. ترجم الرؤوس يدويًا، أو انسخها إلى صف بيانات قبل الرفع ثم أعدها إلى مكانها بعد ذلك.
  • يُترجم العمود بالكامل. إذا احتوت أي خلية في عمود على حرف، فسيتم إرسال كل خلية في ذلك العمود تحتوي على حرف، بما في ذلك الرموز. يقرأ وضع المقارنة ملفات .xlsx فقط، لذا تحقق يدويًا من عمود رموز CSV: انسخه من كلا الملفين إلى ورقة واحدة وقارن العمودين باستخدام =EXACT(A2,B2).
  • يعود ملف CSV مفصولًا بفواصل. أيًا كان الفاصل الذي استخدمه المصدر، يستخدم ملف CSV المترجم فواصل؛ ويحتفظ ملف .tsv بعلامات الجدولة. في اختبارنا، عاد ملف CSV مفصولًا بفواصل منقوطة مفصولًا بفواصل، مع الاحتفاظ بالفاصلة العشرية مثل "4,50" داخل علامات اقتباس. الملف بترميز UTF-8 دون علامة ترتيب البايت. تقول Microsoft إن Excel يفتح ملف CSV بترميز UTF-8 بشكل طبيعي عند وجود تلك العلامة، وإلا فإنها توصي باستيراده عبر بيانات > الحصول على البيانات > من نص/CSV (دعم Microsoft). إذا نقرت على الملف نقرًا مزدوجًا ورأيت أحرفًا مشوهة، فاستورده بهذه الطريقة بدلاً من ذلك.

إذا كانت بياناتك في مصنف يحتوي على صيغ، فترجم ملف .xlsx. تصدير إلى CSV لترجمته يتخلص من كل صيغة.

المشكلات الشائعة

المشكلةالسبب المحتملما يجب فعله
لا يزال عمود كامل يقول "In stock"الكلمات موجودة داخل صيغة IFانقلها إلى خلايا تسميات ووجّه الصيغة إليها
ترفض القائمة المنسدلة القيمة المترجمةالقيم المسموح بها مكتوبة داخل قاعدة التحققغيّر مصدر القاعدة إلى نطاق خلايا وترجم النطاق
تغيّر رمز منتجيحتوي على أحرف، لذا أُرسل إلى المترجمأصلحه من المصدر؛ شغّل وضع المقارنة في كل تسليم
لم تُترجم إحدى الخلايا على الإطلاقتحتوي على تنسيق مختلط، أو أنها رابطامسح التنسيق أو حرّر نص الرابط، ثم أعد الترجمة أو أصلحها يدويًا
اختفى المخطط أو وحدات الماكروالمكتبة المستخدمة لإعادة كتابة الملف لا تحفظهاترجم نسخة .xlsx وانقل النص المترجم مرة أخرى إلى الملف الأصلي
المجاميع خاطئة في الملف ثنائي اللغةالأعمدة المضافة تُزيح القيم لكن ليس الصيغ أو التنسيقاتاستخدم المصنف المترجم لأي عملية حسابية
تبدو العلامات التشكيلية مشوّهة في ملف CSV مترجمخمّن Excel الترميز الخاطئاستورده عبر Data > Get Data > From Text/CSV
يُرفض التحميلالملف بصيغة .xls، أو يحتاج إلى كلمة مرور لفتحهاحفظه كملف .xlsx عادي بدون كلمة مرور للفتح (حماية الورقة وحدها لا مشكلة فيها)

تنطبق الفكرة نفسها على العروض التقديمية: عرض PowerPoint أيضًا يحتفظ بالنص في مواضع يتخطاها المترجم، وأداة الفحص الخاصة بذلك المقال تعمل بالطريقة نفسها كأداة هذا المقال.

مقالات ذات صلة