כיצד לתרגם קובץ CSV

OpenL Team 1/9/2026

TABLE OF CONTENTS

CSV נראה פשוט, אך תרגומו עלול להשתבש במהירות: עמודות זזות, מרכאות נשברות, תווים שאינם לטיניים הופכים לבלתי קריאים, או שמזהים (IDs) “מתורגמים” למשהו בלתי שמיש. מדריך זה מציג תהליך עבודה בטוח ומעשי לתרגום קובץ CSV תוך שמירה על המבנה, בנוסף לרשימת בדיקות QA ותיקונים לבעיות נפוצות.

אם ברצונך באפשרות הפשוטה ביותר, השתמש במתרגם המודע ל-CSV (שיטה 1) במקום להעתיק טקסט CSV למתרגם טקסט כללי.

לפני ייבוא הקובץ המתורגם, הרץ את רשימת בדיקות ה-QA במדריך זה כדי לאתר בעיות בעמודות/קידוד בשלב מוקדם.

מה הופך תרגום CSV למורכב

CSV הוא טקסט פשוט, אך יש בו כללי מבנה:

  • מפריד: לרוב פסיק (,), לפעמים נקודה-פסיק (;) באזורים מסוימים.
  • מרכאות: ערכי טקסט עשויים להיות מוקפים במרכאות כפולות ("). מרכאות בתוך ערכים חייבות להיות מוסתרות (בדרך כלל "").
  • מעברי שורה בתוך תאים: מותר, אך רק אם התא מצוטט כראוי.
  • קידוד: הקובץ שלך עשוי להיות UTF‑8, UTF‑8 עם BOM, או קידודים ישנים.
  • סוגי נתונים מעורבים: מספרים, תאריכים, SKUs, מזהים (IDs), כתובות URL, ומחזיקים (placeholders) לרוב חייבים להישאר ללא שינוי.

כלי תרגום שמתייחסים ל-CSV כ”סתם טקסט” עלולים בטעות לשנות תווי מבנה (מפרידים/מרכאות/מעברי שורה) או להמיר סוגי נתונים (תאריכים/מספרים), מה שמוביל לייבוא פגום.

לפני שמתחילים

שלבים מהירים אלו מונעים את רוב התקלות בתרגום CSV:

  1. צור עותק גיבוי

    • שמור file.csvfile.original.csv.
    • אם ה-CSV כולל נתוני לקוחות, הסר או הפוך לשדות אנונימיים לפני העלאה לכל מקום.
  2. זהה שדות “לא לתרגום” השאר שדות אלו ללא שינוי:

    • מזהים (IDs), מפתחות, SKUs, מספרי הזמנות
    • כתובות URL, אימיילים, נתיבי קבצים
    • מחזיקים ומשתנים ({name}, {{amount}}, %s, :count)
    • תגיות, ערכי enum, קודי סטטוס פנימיים (PAID, REFUNDED)
    • כל שדה הנצרך על ידי קוד (API keys, JSON blobs, HTML snippets)
    • אם אינך בטוח, ראה: /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) כדי שתוכל לוודא ששורות לא שונו בסדרן.

שיטה 1 — מתרגמים אונליין עם מודעות ל-CSV (מומלץ)

מתרגמים עם מודעות ל-CSV מתייחסים ל-CSV כנתונים מובנים, לא “רק טקסט”, ולכן פחות סביר שיפגעו במפרידים, בציטוטים או בפריסת שורות/עמודות. תמיד הפעל את רשימת הבדיקות (QA checklist) לפני ייבוא.

השוואת אפשרויות ניטרלית

אפשרותיתרונותחסרונותמתאים ל-
OpenL CSV Translator Onlineבנוי למבנה CSV; העלאה/הורדה מהירהתהליך מבוסס העלאה; לא אידיאלי לנתונים רגישיםטיוטות CSV מהירות ואמינות
DeepL / Google Cloud / AWS Translate (API)אוטומציה; איכות טובה; מתאים לצנרת אצווהדורש פיתוח + טיפול זהיר ב-CSVצוותים שמתרגמים קבצים רבים
CAT tools (Smartling, Lokalise, Phrase, וכו’)טרמינולוגיה/QA, שיתוף פעולהדורש הגדרה נוספת + עלותלוקליזציה של מוצר/ממשק בקנה מידה גדול
נוסחאות גיליון (Sheets/Excel)ללא כלים נוספיםקל לעצב אוטומטית או לשבש CSVקבצים קטנים ובעלי סיכון נמוך בלבד

מגבלות והערות

  • אל תעלה נתונים רגישים שאסור לך לשתף. אם צריך, ייצא תחילה קובץ CSV מסונן.
  • אם המערכת שלך דורשת שמות כותרות מסוימים, אל תתרגם את שורת הכותרות.
  • תמיד הרץ את רשימת הבדיקות QA לפני ייבוא קובץ ה-CSV המתורגם.
  • אם אתה משתמש בכלי מקוון, בדוק את מגבלות ההעלאה והפורמטים הנתמכים בדף הכלי.

שלב-אחר-שלב

  1. פתח את הכלי

  2. בחר שפות

    • בחר את שפות היעד שלך.
  3. העלה את קובץ ה-CSV שלך

    • העלה או גרור ושחרר את קובץ ה-.csv שלך.
    • אם קובץ ה-CSV שלך מכיל מספר עמודות טקסט, המתרגם יתרגם את התוכן תוך שמירה על מפרידים ומרכאות.
  4. הורד את קובץ ה-CSV המתורגם

    • שמור אותו בשם ברור כמו products_es.csv.

המלצות לתוצאות טובות יותר

  • תרגם רק עמודות המוצגות למשתמש: כותרות מוצרים, תיאורים, מחרוזות UI, הערות ללקוח.
  • שמור על יציבות הקודים: אל תתרגם status, type, sku, category_id, url, handle.

שיטה 2 — Google Sheets או Excel

העבודה הזו אפשרית, אך קל יותר בטעות לשנות עיצוב, מפרידים או סוגי נתונים.

Google Sheets (קבצים קטנים)

  1. ייבא את קובץ ה-CSV

    • Google Sheets → קובץ → ייבוא → העלאה.
    • אם הנתונים שלך מופיעים בעמודה אחת, בחר את המפריד הנכון (פסיק או נקודה-פסיק).
  2. הגן על עמודות “לא לתרגום”

    • עצב עמודות מזהה כ-טקסט רגיל תחילה (למשל, SKU, מזהה הזמנה) כדי למנוע 00123123.
  3. תרגם רק את העמודות הרצויות

    • השתמש ב-=GOOGLETRANSLATE(A2,"en","es") בעמודה חדשה, ואז העתק → הדבק מיוחד → ערכים בלבד.
    • אל תריץ נוסחאות תרגום על עמודות המכילות כתובות URL, משתנים, קודים או נוסחאות.
  4. ייצא

    • קובץ → הורדה → ערכים מופרדים בפסיק (.csv) (Google Sheets מייצא ב-UTF‑8).

Excel (Windows) — כיצד לייבא ולייצא UTF‑8 בצורה נכונה

Excel הוא המקום שבו טעויות קידוד מתרחשות לעיתים קרובות ביותר. השתמש בשלבים הבאים כדי להימנע מתווים משובשים ובעיות במפריד.

A) ייבוא CSV ללא תווים משובשים

  1. Data → From Text/CSV
  2. בחלון הייבוא:
    • File Origin / Encoding: בחר 65001: Unicode (UTF‑8) (הניסוח משתנה לפי הגרסה)
    • Delimiter: פסיק (,) או נקודה-פסיק (;) בהתאם לקובץ שלך
  3. לחץ על Load (או Transform Data אם יש צורך להכריח עמודות מזהה להיות Text)

B) ייצוא כ-UTF‑8 (ומתי להשתמש ב-BOM)

  1. File → Save As
  2. עבור Save as type, בחר:
    • CSV UTF‑8 (Comma delimited) (*.csv) (מומלץ לטקסט רב-לשוני)
    • אם המערכת בהמשך הדרך דוחה BOM, ייצא UTF‑8 ללא BOM באמצעות סקריפט (ראה “Batch Processing”) או שמור מחדש בעורך קוד.

טעויות נפוצות

  • עיצוב אוטומטי: גיליונות נתונים עשויים להמיר מזהים כמו 00123 ל-123.
  • המרת תאריך: 2026-01-09 עשוי להופיע אחרת ולהיות מיוצא בצורה לא עקבית.
  • שינוי מפריד: ייצוא עלול לעבור ל-; בהתאם להגדרות האזוריות.

אם אתה משתמש בשיטה זו, הסעיף QA למטה הוא חובה.

תהליך מתקדם — טבלת תרגום

אם ה-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 join/update)

```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 workflow או בכלי תומך CSV קובץ-אחר-קובץ.
  4. הצטרף לתוצאות וייצא

    • בצע מיפוי לפי row_id + field (ולפי source_file אם בשימוש).
    • ייצא בקידוד שהמערכת שלך דורשת בהמשך.

לולאת התחלה מינימלית (לעיבוד עקבי של קבצים רבים):

for f in ./input/*.csv; do
  base="$(basename "$f" .csv)"
  # 1) חלץ טבלת תרגום (ליישם לפי הסכמה שלך)
  # 2) translate translation_table_${base}.csv -> translation_table_${base}_translated.csv
  # 3) הצטרף וייצא ${base}_translated.csv
  echo "Processed: $base"
done

רשימת בדיקות QA לאחר תרגום

לאחר הורדת קובץ ה-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

תיקון

  • אל תתרגם עמודות מספריות/תאריכים.
  • שמור ערכים בפורמט קריא למכונה; בצע לוקליזציה של פורמטים בתצוגה בשכבת ה-UI שלך, לא בנתונים הגולמיים.

5) בעיית אבטחה: הזרקת CSV (נוסחאות Excel)

אם תא מתורגם מתחיל ב-=, +, -, או @, פתיחת הקובץ ב-Excel עלולה להפעיל אותו כנוסחה.

תיקון

  • עבור קבצי CSV שייפתחו בגיליונות אלקטרוניים, הסתר תאים מסוכנים על-ידי הוספת גרש בודד (') בתחילה או בצע ניקוי במהלך הייצוא.
  • שקול להסיר תווים מובילים של נוסחאות מטקסט שמסופק על-ידי משתמש לפני תרגום/ייבוא.
  • עיון: https://owasp.org/www-community/attacks/CSV_Injection

שאלות נפוצות

איך מתרגמים קובץ CSV מבלי לשבור עמודות?

השתמש בתהליך עבודה המודע ל-CSV ואמת את המבנה לפני ייבוא:

  • תרגם בשיטה המודעת ל-CSV (שיטה 1)
  • הרץ את “בדיקות מהירות” + רשימת QA לאישור מספר שורות/עמודות וציטוט תקין
  • אם ה-CSV שלך משלב שדות רגישים וטקסט למשתמש, השתמש ב-“תהליך עבודה מתקדם — טבלת תרגום”

האם אפשר לתרגם רק עמודה אחת בקובץ CSV?

כן. הגישה הבטוחה ביותר היא ליצור טבלת תרגום (row_id + source_text + context), לתרגם רק אותה, ואז למפות חזרה. כך מונעים שינויים לא מכוונים במזהים ובשדות מספריים.

האם עליי לתרגם את שורת הכותרות?

זה תלוי בשימוש שלך:

  • תרגם כותרות אם הקובץ מיועד לקריאה על ידי בני אדם (דוחות, ייצוא).
  • אל תתרגם כותרות אם המערכת/היבואן שלך מצפה לשמות שדות מסוימים (יבוא למסחר אלקטרוני, מסדי נתונים, אפליקציות).

הקובץ שלי משתמש בנקודה-פסיק (;) במקום פסיקים. האם זה בסדר?

כן, אך ודא שהכלי/היבואן שלך משתמש תמיד באותו מפריד. ברוב השפות האירופאיות ברירת המחדל היא נקודה-פסיק. חוסר התאמה הוא סיבה נפוצה לכישלון יבוא 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 בבטחה, שמור על המבנה (מפריד, מירכאות, קידוד) והגן על שדות “לא לתרגום” (מזהים, כתובות URL, מצייני מקום, מספרים). העדף תהליכי עבודה שמודעים ל-CSV, ולאחר מכן אמת בעזרת רשימת בדיקת QA לפני היבוא.