كيفية ترجمة ملف CSV

OpenL Team 1/9/2026

TABLE OF CONTENTS

يبدو ملف CSV بسيطًا، لكن ترجمته قد تؤدي إلى أخطاء بسرعة: قد تتغير أماكن الأعمدة، أو تتعطل علامات الاقتباس، أو تصبح الأحرف غير اللاتينية مشوهة، أو يتم “ترجمة” المعرفات إلى شيء غير قابل للاستخدام. يوضح هذا الدليل سير عمل آمن وعملي لترجمة ملف CSV مع الحفاظ على البنية، بالإضافة إلى قائمة مراجعة ضمان الجودة وحلول للمشاكل الشائعة.

إذا كنت تريد الخيار الأبسط، استخدم مترجم يدعم CSV (الطريقة 1) بدلاً من نسخ نص CSV إلى مترجم نصي عام.

قبل استيراد الملف المترجم، نفذ قائمة مراجعة ضمان الجودة في هذا الدليل لاكتشاف مشاكل الأعمدة/الترميز مبكرًا.

ما الذي يجعل ترجمة CSV صعبة

ملف CSV هو نص عادي، لكنه يحتوي على قواعد بنية:

  • الفاصل: غالبًا فاصلة (,)، وأحيانًا فاصلة منقوطة (;) في بعض المناطق.
  • علامات الاقتباس: قد يتم إحاطة القيم النصية بعلامات اقتباس مزدوجة ("). يجب الهروب من علامات الاقتباس داخل القيم (عادةً باستخدام "").
  • الأسطر الجديدة داخل الخلايا: مسموح بها، ولكن فقط إذا كانت الخلية محاطة بعلامات اقتباس بشكل صحيح.
  • الترميز: قد يكون ملفك UTF‑8، أو UTF‑8 مع BOM، أو ترميزات قديمة.
  • أنواع بيانات مختلطة: الأرقام، التواريخ، رموز المنتجات (SKUs)، المعرفات، الروابط، والعناصر النائبة غالبًا يجب أن تبقى دون تغيير.

أدوات الترجمة التي تتعامل مع CSV كـ”نص فقط” قد تعدل عن غير قصد رموز البنية (الفواصل/علامات الاقتباس/الأسطر الجديدة) أو تحول أنواع البيانات (التواريخ/الأرقام)، مما يؤدي إلى استيراد معطوب.

قبل أن تبدأ

هذه الخطوات السريعة تمنع معظم أعطال ترجمة CSV:

  1. أنشئ نسخة احتياطية

    • احفظ file.csvfile.original.csv.
    • إذا كان ملف CSV يحتوي على بيانات عملاء، قم بإزالة أو إخفاء الحقول الحساسة قبل رفعه إلى أي مكان.
  2. حدد الحقول التي يجب عدم ترجمتها احتفظ بهذه دون تغيير:

    • المعرفات، المفاتيح، رموز المنتجات (SKUs)، أرقام الطلبات
    • الروابط، عناوين البريد الإلكتروني، مسارات الملفات
    • العناصر النائبة والمتغيرات ({name}، {{amount}}، %s، :count)
    • العلامات، القيم التعدادية، رموز الحالة الداخلية (PAID، REFUNDED)
    • أي حقل يُستخدم في الشيفرة (مفاتيح API، كتل JSON، مقتطفات HTML)
    • إذا لم تكن متأكدًا، راجع: /what-not-to-translate
  3. تأكيد الفاصل، قواعد الاقتباس، ونهايات الأسطر

    • إذا فتحت ملف CSV و”يبدو كعمود واحد”، فغالبًا الفاصل غير صحيح.
    • عادةً ما يستخدم CSV الفاصل , والاقتباسات " (انظر RFC 4180: https://www.rfc-editor.org/rfc/rfc4180).
  4. تأكيد الترميز

    • يُفضل استخدام UTF‑8 للمحتوى متعدد اللغات.
    • إذا كنت ستفتح ملف CSV المترجم في Excel على Windows، قد تحتاج إلى UTF‑8 مع BOM لتجنب ظهور رموز غير مفهومة.
    • خلفية عن BOM: https://unicode.org/faq/utf_bom.html
  5. اختياري لكن يُنصح به: إضافة عمود row_id ثابت بالنسبة لملفات CSV التي سيتم إعادة استيرادها أو مطابقتها لاحقًا، أضف عمود مفتاح فريد (مثل row_id) حتى تتمكن من التحقق من عدم إعادة ترتيب الصفوف.

الطريقة الأولى — مترجمون عبر الإنترنت يدعمون CSV (موصى بها)

المترجمون الذين يدعمون CSV يتعاملون مع CSV كبيانات منظمة وليس “مجرد نص”، لذا من غير المرجح أن يكسروا الفواصل أو الاقتباسات أو تخطيط الصف/العمود. تأكد دائمًا من تنفيذ قائمة مراجعة الجودة قبل الاستيراد.

مقارنة الخيارات المحايدة

الخيارنقاط القوةالتنازلاتالأفضل لـ
OpenL CSV Translator Onlineمصمم لبنية CSV؛ رفع/تنزيل سريعسير عمل يعتمد على الرفع؛ غير مثالي للبيانات الحساسةمسودات CSV سريعة وموثوقة
DeepL / Google Cloud / AWS Translate (API)قابل للأتمتة؛ جودة جيدة؛ مناسب للعمليات الدفعيةيتطلب هندسة + معالجة CSV دقيقةالفرق التي تترجم العديد من الملفات
CAT tools (Smartling, Lokalise, Phrase, إلخ)المصطلحات/الجودة، التعاونإعداد وتكلفة إضافيةتوطين المنتجات/واجهة المستخدم على نطاق واسع
Spreadsheet formulas (Sheets/Excel)لا أدوات إضافيةسهل التنسيق التلقائي أو تلف CSVملفات صغيرة ومنخفضة المخاطر فقط

الحدود والملاحظات

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

خطوة بخطوة

  1. افتح الأداة

  2. اختر اللغات

    • اختر لغاتك المستهدفة.
  3. حمّل ملف CSV الخاص بك

    • قم بتحميل أو سحب وإفلات ملف .csv الخاص بك.
    • إذا كان ملف CSV يحتوي على أعمدة نصية متعددة، سيقوم المترجم بترجمة المحتوى مع الحفاظ على الفواصل وعلامات الاقتباس بشكل آمن.
  4. نزّل ملف CSV المترجم

    • احفظه باسم واضح مثل products_es.csv.

أفضل الممارسات لتحقيق نتائج أفضل

  • ترجم فقط الأعمدة الموجهة للمستخدم: عناوين المنتجات، الأوصاف، سلاسل واجهة المستخدم، الملاحظات الموجهة للعملاء.
  • حافظ على ثبات الرموز: لا تترجم status، type، sku، category_id، url، handle.

الطريقة الثانية — Google Sheets أو Excel

يمكن أن تعمل هذه الطريقة، لكنها أسهل في تغيير التنسيق أو الفواصل أو الأنواع عن طريق الخطأ.

Google Sheets (الملفات الصغيرة)

  1. استيراد ملف CSV

    • Google Sheets → ملف → استيراد → تحميل.
    • إذا ظهرت بياناتك في عمود واحد، اختر الفاصل الصحيح (فاصلة مقابل فاصلة منقوطة).
  2. حماية الأعمدة “غير المترجمة”

    • قم بتنسيق أعمدة المعرف كنص عادي أولاً (مثل SKU، معرف الطلب) لمنع التحويل من 00123 إلى 123.
  3. ترجم فقط الأعمدة المستهدفة

    • استخدم =GOOGLETRANSLATE(A2,"en","es") في عمود جديد، ثم نسخ → لصق خاص → القيم فقط.
    • لا تستخدم صيغ الترجمة على الأعمدة التي تحتوي على روابط URL أو عناصر نائبة أو رموز أو صيغ.
  4. تصدير

    • ملف → تنزيل → قيم مفصولة بفواصل (.csv) (Google Sheets يصدر بصيغة UTF‑8).

Excel (Windows) — كيفية الاستيراد والتصدير بصيغة UTF‑8 بشكل صحيح

يحدث معظم أخطاء الترميز في Excel. استخدم الخطوات التالية لتجنب تشوه الأحرف ومشاكل الفواصل.

A) استيراد CSV بدون تشوه الأحرف

  1. البيانات → من نص/CSV
  2. في مربع حوار الاستيراد:
    • أصل الملف / الترميز: اختر 65001: Unicode (UTF‑8) (قد تختلف الصياغة حسب الإصدار)
    • الفاصل: فاصلة (,) أو فاصلة منقوطة (;) لتتناسب مع ملفك
  3. انقر على تحميل (أو تحويل البيانات إذا كنت بحاجة لإجبار أعمدة المعرف على نص)

B) التصدير كـ UTF‑8 (ومتى تستخدم BOM)

  1. ملف → حفظ باسم
  2. بالنسبة لـ نوع الحفظ كـ، اختر:
    • CSV UTF‑8 (Comma delimited) (*.csv) (موصى به للنصوص متعددة اللغات)
    • إذا كان النظام الذي تستخدمه يرفض BOM، صدّر UTF‑8 بدون BOM باستخدام برنامج نصي (انظر “المعالجة الدُفعية”) أو أعد الحفظ باستخدام محرر أكواد.

الأخطاء الشائعة

  • التنسيق التلقائي: قد يحول الجدول بيانات المعرف مثل 00123 إلى 123.
  • تحويل التاريخ: قد يظهر 2026-01-09 بشكل مختلف ويُصدّر بشكل غير متسق.
  • تغيير الفاصل: قد تتحول الصادرات إلى ; حسب إعدادات اللغة المحلية.

إذا استخدمت هذه الطريقة، فإن قسم ضمان الجودة أدناه إلزامي.

سير العمل المتقدم — جدول الترجمة

إذا كان ملف CSV يحتوي على بيانات “تُترجم” و”لا تُترجم” مختلطة، أنشئ جدول ترجمة منفصل حتى لا تلمس الترجمة الحقول الحساسة.

الخطوة 1: أنشئ جدول ترجمة

أنشئ ملف CSV جديد (أو ورقة) مثل:

row_idfieldsource_textcontexttranslated_text
101product_titleWireless MouseE-commerce product titleفأرة لاسلكية
101product_descSilent clicks, 2-year batteryShort descriptionنقرات صامتة، بطارية تدوم سنتين
102product_titleUSB-C ChargerE-commerce product titleشاحن USB-C
102product_descFast charging for phones and tabletsShort descriptionشحن سريع للهواتف والأجهزة اللوحية
103product_titleStainless Steel Water BottleProduct titleزجاجة ماء من الفولاذ المقاوم للصدأ
103product_descBPA-free, keeps drinks cold 24hShort descriptionخالية من BPA، تحافظ على المشروبات باردة لمدة 24 ساعة
104product_titleNoise-Canceling HeadphonesProduct titleسماعات رأس عازلة للضوضاء
104product_descOver-ear, Bluetooth 5.3Short descriptionفوق الأذن، Bluetooth 5.3

الخطوة 2: ترجمة source_text فقط

ترجم عمود source_text باستخدام سير العمل الذي اخترته وضع النتيجة في translated_text. (عادةً ما يكون المترجم عبر الإنترنت الذي يدعم CSV أكثر أمانًا من جداول البيانات.)

الخطوة 3: إعادة ربط الترجمات بالبيانات الأصلية

اربط باستخدام row_id + field ثم اكتب النص المترجم مرة أخرى إلى مجموعة البيانات الأصلية. يضمن ذلك ألا تمر المعرّفات والأسعار وحقول النظام عبر الترجمة.

مثال (Python + pandas)

import pandas as pd

# Original data (keep types stable; treat IDs as strings)
orig = pd.read_csv("products.csv", dtype=str, keep_default_na=False)

# Translation table after translation
tt = pd.read_csv("translation_table_es.csv", dtype=str, keep_default_na=False)

# Reshape to one row per row_id (wide format)
wide = (
  tt.pivot(index="row_id", columns="field", values="translated_text")
  .add_suffix("__translated")
  .reset_index()
)

merged = orig.merge(wide, on="row_id", how="left")

# Write back (example fields)
merged["product_title"] = merged["product_title__translated"].where(
  merged["product_title__translated"].ne(""), merged["product_title"]
)
merged["product_desc"] = merged["product_desc__translated"].where(
  merged["product_desc__translated"].ne(""), merged["product_desc"]
)

merged.drop(columns=[c for c in merged.columns if c.endswith(“__translated”)], inplace=True) merged.to_csv(“products_es.csv”, index=False, encoding=“utf-8-sig”)


#### مثال (نمط الانضمام/التحديث في SQL)

```sql
-- translation_table(row_id, field, translated_text)
-- products(row_id, product_title, product_desc, ...)

UPDATE products p
SET product_title = t.translated_text
FROM translation_table t
WHERE p.row_id = t.row_id
  AND t.field = 'product_title'
  AND t.translated_text IS NOT NULL
  AND t.translated_text <> '';

المعالجة الدُفعية (عدة ملفات CSV)

إذا كنت بحاجة إلى ترجمة العديد من ملفات CSV، تجنب الخطوات اليدوية في الجداول واستخدم خط أنابيب قابل للتكرار:

  1. توحيد المدخلات

    • تحويل الترميز إلى UTF‑8 (أو UTF‑8 مع BOM إذا كان المستورد الخاص بك يحتاج ذلك).
    • تأكد من أن كل ملف يحتوي على مفتاح ثابت (row_id / id) للربط.
  2. إنشاء جداول الترجمة لكل ملف

    • استخراج الحقول القابلة للترجمة فقط إلى translation_table_<file>.csv.
    • احتفظ بعمود source_file إذا كنت تفضل جدولًا موحدًا لجميع الملفات.
  3. ترجمة الجداول

    • استخدم سير عمل API أو أداة تدعم CSV لكل ملف على حدة.
  4. ضم النتائج وإعادة التصدير

    • الربط بواسطة row_id + fieldsource_file إذا تم استخدامه).
    • التصدير بالترميز الذي يتوقعه نظامك اللاحق.

حلقة البداية البسيطة (للمعالجة المتسقة للعديد من الملفات):

for f in ./input/*.csv; do
  base="$(basename "$f" .csv)"
  # 1) استخراج جدول الترجمة (نفذ حسب المخطط الخاص بك)
  # 2) ترجمة translation_table_${base}.csv -> translation_table_${base}_translated.csv
  # 3) ضم النتائج وإعادة التصدير إلى ${base}_translated.csv
  echo "Processed: $base"
done

قائمة التحقق لمراجعة الجودة بعد الترجمة

بعد تنزيل ملف CSV المترجم، قم بإجراء هذه الفحوصات قبل الاستيراد:

فحوصات سريعة

  • قارن عدد الصفوف (macOS/Linux): wc -l file.original.csv file.translated.csv
  • تحقق من تناسق الفاصل بفتح الملف في محرر نص عادي والتأكد من أن الفواصل متشابهة.
  • اختياري: تحقق من تساوي عدد الأعمدة باستخدام Python:
python -c "import csv,sys; p=sys.argv[1]; r=list(csv.reader(open(p,newline='',encoding='utf-8'))); print('rows',len(r),'max_cols',max(len(x) for x in r))" file.translated.csv

إذا ظهرت لك مشكلة في فك ترميز Unicode، قم بتحويل ملف CSV إلى UTF-8 أولاً، أو جرب utf-8-sig:

python -c "import csv,sys; p=sys.argv[1]; r=list(csv.reader(open(p,newline='',encoding='utf-8-sig'))); print('rows',len(r),'max_cols',max(len(x) for x in r))" file.translated.csv

فحوصات البنية

  • عدد الصفوف لم يتغير: نفس عدد صفوف البيانات كما في الملف الأصلي.
  • عدد الأعمدة لم يتغير: كل صف يحتوي على نفس عدد الأعمدة.
  • الفاصل لم يتغير: الفاصلة أو الفاصلة المنقوطة متوافقة مع المستورد الخاص بك.
  • علامات الاقتباس صحيحة: الحقول التي تحتوي على فواصل أو أسطر جديدة ما زالت محاطة بعلامات اقتباس بشكل صحيح.

فحوصات سلامة البيانات

  • المعرفات والمفاتيح لم تتغير: قارن بين sku، id، row_id، handle.
  • عناوين URL/البريد الإلكتروني لم تتغير: لا توجد مسافات مضافة، ولا نطاقات مترجمة.
  • الأرقام محفوظة: الأسعار والكميات والفواصل العشرية بقيت كما هي.
  • القوالب محفوظة: {name}، {{count}}، %s، :value بقيت كما هي.

فحوصات جودة الترجمة

  • المصطلحات متسقة: تمت ترجمة المصطلحات الرئيسية للمنتج بنفس الطريقة عبر جميع الصفوف.
  • تم احترام قيود الطول: تسميات واجهة المستخدم ليست طويلة جداً (مهم للتطبيقات).
  • لا توجد بقايا لغة مختلطة: تحقق من وجود كلمات مصدرية شائعة كان يجب ترجمتها.

استكشاف مشكلات ترجمة CSV الشائعة وحلها

1) الأعمدة تحولت بعد الترجمة

الأعراض

  • المستورد الخاص بك يقول “عدد الأعمدة غير صحيح”
  • القيم تظهر تحت رؤوس غير صحيحة

الأسباب المحتملة

  • يحتوي الحقل المترجم على علامة اقتباس غير مهربة (")
  • يحتوي الحقل المترجم على فاصلة أو سطر جديد ولكنه غير محاط بعلامات اقتباس بشكل صحيح

الحل

  • تأكد من أن ملف CSV يستخدم قواعد الاقتباس الصحيحة (علامات اقتباس مزدوجة حول الحقول؛ علامات الاقتباس الداخلية يتم تهريبها كـ "").
  • أعد الترجمة باستخدام سير عمل يدعم CSV (بدلاً من ترجمة نص CSV الخام).

2) أحرف مشوشة (mojibake) مثل ???? أو é

الأسباب المحتملة

  • ترميز خاطئ أثناء التصدير/الاستيراد (UTF‑8 مقابل الترميزات القديمة)

الحل

  • صدّر الملف بصيغة UTF‑8.
  • إذا كان Excel على Windows مستخدمًا، جرب UTF‑8 مع BOM.
  • تجنب النسخ/اللصق اليدوي الذي قد يغير الترميز.

3) اختفاء الأصفار البادئة (00123123)

الأسباب المحتملة

  • التنسيق التلقائي في جداول البيانات (Excel/Sheets)

الحل

  • عالج أعمدة المعرفات كنص قبل التعديل/التصدير.
  • يفضل الترجمة باستخدام سير عمل يدعم CSV ولا يعيد كتابة بياناتك.

4) تغير تنسيق التواريخ أو الكسور العشرية

أمثلة

  • 1,234.56 تصبح 1.234,56
  • 2026-01-09 تصبح 09/01/2026

الحل

  • لا تترجم أعمدة الأرقام/التواريخ.
  • احتفظ بالقيم قابلة للقراءة آليًا؛ قم بتوطين تنسيقات العرض في طبقة واجهة المستخدم الخاصة بك، وليس في البيانات الخام.

5) مشكلة أمنية: حقن CSV (صيغ Excel)

إذا بدأ الحقل المترجم بـ =, +, -, أو @، فإن فتح الملف في Excel يمكن أن يؤدي إلى تقييمه كصيغة.

الحل

  • بالنسبة لملفات CSV التي سيتم فتحها في جداول البيانات، قم بتهريب الخلايا الخطرة بإضافة علامة اقتباس مفردة (') في البداية أو قم بتعقيمها أثناء التصدير.
  • فكر في إزالة أحرف الصيغ البادئة من النص المقدم من المستخدم قبل الترجمة/الاستيراد.
  • المرجع: https://owasp.org/www-community/attacks/CSV_Injection

الأسئلة الشائعة

كيف أترجم ملف CSV دون كسر الأعمدة؟

استخدم سير عمل يدعم CSV وتحقق من البنية قبل الاستيراد:

  • ترجم باستخدام طريقة تدعم CSV (الطريقة 1)
  • نفذ “الفحوصات السريعة” + قائمة مراجعة ضمان الجودة لتأكيد عدد الصفوف/الأعمدة واقتباس صحيح
  • إذا كان ملف CSV الخاص بك يخلط بين الحقول الحساسة والنص المعروض للمستخدم، استخدم “سير العمل المتقدم — جدول الترجمة”

هل يمكنني ترجمة عمود واحد فقط في ملف CSV؟

نعم. الطريقة الأكثر أمانًا هي إنشاء جدول ترجمة (row_id + source_text + context)، ثم ترجمة هذا الجدول فقط، وبعد ذلك إعادة ربطه بالملف الأصلي. هذا يمنع التغييرات العرضية في الحقول مثل المعرفات (IDs) والحقول الرقمية.

هل يجب علي ترجمة صف العناوين (Header Row)؟

يعتمد ذلك على حالتك:

  • قم بترجمة العناوين إذا كان ملف CSV سيُقرأ من قبل البشر (تقارير، صادرات).
  • لا تترجم العناوين إذا كان النظام/أداة الاستيراد تتوقع أسماء حقول محددة (استيراد التجارة الإلكترونية، قواعد البيانات، التطبيقات).

ملف CSV الخاص بي يستخدم الفواصل المنقوطة (;) بدلاً من الفواصل العادية. هل هذا مقبول؟

نعم، لكن تأكد من أن أداتك/أداة الاستيراد تستخدم نفس الفاصل باستمرار. العديد من الإعدادات المحلية الأوروبية تعتمد الفواصل المنقوطة كإعداد افتراضي. عدم التطابق في الفواصل هو سبب شائع لفشل استيراد ملفات CSV.

كيف أتعامل مع النص متعدد الأسطر (فواصل الأسطر) داخل الخلايا؟

الخلايا متعددة الأسطر مسموح بها في CSV، ولكن يجب أن تكون محاطة بعلامات اقتباس بشكل صحيح. إذا كان المحتوى المترجم يتضمن فواصل أسطر، يُوصى بشدة باستخدام أداة ترجمة تدعم CSV لتجنب كسر الصفوف.

الأدوات

  • OpenL CSV Translator Online (مثال على أداة تدعم CSV): https://doc.openl.io/translate/csv
  • لسير العمل مع Excel: راجع أيضًا “How to Translate Excel Online”: /how-to-translate-excel-online
  • لمحتوى Markdown: “How to Translate Markdown”: /how-to-translate-markdown
  • إذا كنت بحاجة إلى قواعد حول ما يجب عدم ترجمته: “What Not to Translate”: /what-not-to-translate

الملخص

لترجمة ملف CSV بأمان، حافظ على البنية (الفاصل، علامات الاقتباس، الترميز) واحمِ الحقول التي يجب عدم ترجمتها (المعرفات، الروابط، العناصر النائبة، الأرقام). يُفضل استخدام سير عمل يدعم CSV، ثم تحقق من الملف باستخدام قائمة التحقق للجودة قبل الاستيراد.