Bir CSV Dosyası Nasıl Çevrilir
TABLE OF CONTENTS
CSV basit görünebilir, ancak çevirisi hızlıca yanlış gidebilir: sütunlar kayabilir, tırnak işaretleri bozulabilir, Latin olmayan karakterler bozulabilir veya kimlikler kullanılmaz hale gelecek şekilde “çevirilebilir”. Bu rehber, yapıyı koruyarak bir CSV dosyasını güvenli ve pratik bir şekilde nasıl çevireceğinizi, ayrıca bir QA kontrol listesi ve yaygın sorunlar için çözümler sunar.
En basit seçeneği istiyorsanız, metni genel bir çeviri aracına kopyalamak yerine CSV‑uyumlu bir çeviri aracı (Yöntem 1) kullanın.
Çevrilmiş dosyayı içe aktarmadan önce, bu rehberdeki QA kontrol listesini çalıştırarak sütun/kodlama sorunlarını erken yakalayın.
CSV Çevirisini Zorlaştıran Nedir
CSV düz metindir, ancak bazı yapı kuralları içerir:
- Ayırıcı: genellikle virgül (
,), bazı yerel ayarlarda noktalı virgül (;). - Tırnak işaretleri: metin değerleri çift tırnak (
") ile çevrili olabilir. Değerlerin içinde tırnak varsa kaçış karakteriyle yazılmalıdır (genellikle""). - Hücre içinde yeni satırlar: izin verilir, ancak yalnızca hücre düzgün şekilde tırnaklanmışsa.
- Kodlama: dosyanız UTF‑8, BOM’lu UTF‑8 veya eski kodlamalar olabilir.
- Karışık veri tipleri: sayılar, tarihler, SKU’lar, kimlikler, URL’ler ve yer tutucular genellikle değiştirilmeden kalmalıdır.
CSV’yi “sadece metin” olarak ele alan çeviri araçları, yapı karakterlerini (ayırıcılar/tırnaklar/yeni satırlar) yanlışlıkla değiştirebilir veya veri tiplerini (tarih/sayı) dönüştürebilir, bu da bozuk içe aktarmalara yol açar.
Başlamadan Önce
Bu hızlı adımlar, çoğu CSV çeviri bozulmasını önler:
-
Yedek bir kopya oluşturun
file.csv→file.original.csvolarak kaydedin.- CSV müşteri verisi içeriyorsa, herhangi bir yere yüklemeden önce hassas alanları kaldırın veya anonimleştirin.
-
“Çevrilmemesi gereken” alanları belirleyin Bunları değiştirmeden bırakın:
- Kimlikler, anahtarlar, SKU’lar, sipariş numaraları
- URL’ler, e‑posta adresleri, dosya yolları
- Yer tutucular ve değişkenler (
{name},{{amount}},%s,:count) - Etiketler, enum değerleri, dahili durum kodları (
PAID,REFUNDED) - Kod tarafından kullanılan herhangi bir alan (API anahtarları, JSON blokları, HTML parçaları)
- Emin değilseniz, bkz: /what-not-to-translate
-
Ayırıcı, tırnak kuralları ve satır sonlarını doğrulayın
- CSV dosyasını açtığınızda “tek bir sütun gibi görünüyorsa”, muhtemelen ayırıcı yanlış seçilmiştir.
- Tipik CSV dosyaları
,ayırıcı ve"tırnak işareti kullanır (bkz. RFC 4180: https://www.rfc-editor.org/rfc/rfc4180).
-
Kodlamayı doğrulayın
- Çok dilli içerik için UTF‑8 tercih edin.
- Eğer çevrilmiş CSV dosyasını Windows üzerinde Excel’de açacaksanız, bozuk karakterleri önlemek için BOM’lu UTF‑8 gerekebilir.
- BOM hakkında bilgi: https://unicode.org/faq/utf_bom.html
-
Opsiyonel ama önerilir: sabit bir
row_idekleyin Daha sonra yeniden içe aktarılacak veya eşleştirilecek CSV’ler için, satırların sırasının değişmediğini doğrulamak amacıyla benzersiz bir anahtar sütunu (ör.row_id) ekleyin.
Yöntem 1 — CSV-destekli çevrimiçi çeviri araçları (önerilir)
CSV-destekli çeviri araçları, CSV’yi “sadece metin” değil, yapılandırılmış veri olarak ele alır; bu nedenle ayırıcıların, tırnakların veya satır/sütun düzeninin bozulma ihtimali daha düşüktür. İçe aktarmadan önce her zaman QA kontrol listesini uygulayın.
Tarafsız seçenek karşılaştırması
| Seçenek | Güçlü Yanları | Tavizler | En Uygun Olduğu Durum |
|---|---|---|---|
| OpenL CSV Translator Online | CSV yapısı için tasarlanmıştır; hızlı yükleme/indirme | Yükleme tabanlı iş akışı; hassas veriler için uygun değil | Hızlı, güvenilir CSV taslakları |
| DeepL / Google Cloud / AWS Translate (API) | Otomatikleştirilebilir; iyi kalite; toplu iş akışlarına uygun | Mühendislik gerektirir + dikkatli CSV işlemesi gerekir | Birçok dosyayı çeviren ekipler |
| CAT tools (Smartling, Lokalise, Phrase, vb.) | Terim/QA, iş birliği | Daha fazla kurulum + maliyet | Ürün/UI yerelleştirmesi için ölçekli kullanım |
| Tablo formülleri (Sheets/Excel) | Ekstra araç gerekmez | CSV’yi otomatik biçimlendirmek veya bozmak kolay | Sadece küçük, düşük riskli dosyalar |
Sınırlar ve notlar
- Paylaşmanıza izin verilmeyen hassas verileri yüklemeyin. Gerekirse önce temizlenmiş bir CSV dışa aktarın.
- Sisteminiz belirli başlık adları gerektiriyorsa, başlık satırını çevirmeyin.
- Çevrilmiş CSV’yi içe aktarmadan önce her zaman QA kontrol listesini çalıştırın.
- Çevrimiçi bir araç kullanıyorsanız, araç sayfasında yükleme limitlerini ve desteklenen formatları kontrol edin.
Adım adım
-
Aracı açın
-
Dilleri seçin
- Hedef dillerinizi seçin.
-
CSV dosyanızı yükleyin
.csvdosyanızı yükleyin veya sürükleyip bırakın.- CSV’nizde birden fazla metin sütunu varsa, çevirmen içerikleri çevirirken ayırıcıları ve tırnak işaretlerini korur.
-
Çevrilmiş CSV’yi indirin
products_es.csvgibi anlaşılır bir adla kaydedin.
Daha iyi sonuçlar için en iyi uygulamalar
- Yalnızca kullanıcıya yönelik sütunları çevirin: ürün başlıkları, açıklamalar, arayüz metinleri, müşteriye yönelik notlar.
- Kodları sabit tutun:
status,type,sku,category_id,url,handlealanlarını çevirmeyin.
Yöntem 2 — Google Sheets veya Excel
Bu iş akışı çalışabilir, ancak biçimlendirme, ayırıcılar veya türleri yanlışlıkla değiştirmek daha kolaydır.
Google Sheets (küçük dosyalar)
-
CSV’yi içe aktarın
- Google Sheets → Dosya → İçe aktar → Yükle.
- Verileriniz tek bir sütunda görünüyorsa, doğru ayırıcıyı seçin (virgül veya noktalı virgül).
-
“Çevrilmeyecek” sütunları koruyun
- Kimlik sütunlarını önce Düz metin olarak biçimlendirin (ör. SKU, sipariş id) böylece
00123→123dönüşümü önlenir.
- Kimlik sütunlarını önce Düz metin olarak biçimlendirin (ör. SKU, sipariş id) böylece
-
Yalnızca hedef sütunları çevirin
- Yeni bir sütunda
=GOOGLETRANSLATE(A2,"en","es")kullanın, ardından Kopyala → Özel yapıştır → Yalnızca değerler. - URL, yer tutucu, kod veya formül içeren sütunlarda çeviri formüllerini çalıştırmayın.
- Yeni bir sütunda
-
Dışa aktarın
- Dosya → İndir → Virgülle ayrılmış değerler (.csv) (Google Sheets UTF‑8 olarak dışa aktarır).
Excel (Windows) — UTF‑8’i doğru şekilde nasıl içe ve dışa aktarabilirsiniz
Excel, kodlama hatalarının en sık yaşandığı yerdir. Karakter bozulmalarını ve ayraç sorunlarını önlemek için aşağıdaki adımları kullanın.
A) Karakterler bozulmadan CSV içe aktarımı
- Veri → Metin/CSV’den
- İçe aktarma penceresinde:
- Dosya Kaynağı / Kodlama: 65001: Unicode (UTF‑8) seçin (sürümüne göre ifadeler değişebilir)
- Ayraç: Dosyanızla uyumlu olarak Virgül (
,) veya Noktalı Virgül (;)
- Yükle’ye tıklayın (veya ID sütunlarını Metin olarak zorlamak istiyorsanız Verileri Dönüştür’e tıklayın)
B) UTF‑8 olarak dışa aktar (ve ne zaman BOM kullanılmalı)
- Dosya → Farklı Kaydet
- Farklı kaydet türü için şunu seçin:
- CSV UTF‑8 (Virgülle ayrılmış) (*.csv) (çok dilli metinler için önerilir)
- Eğer kullandığınız sistem BOM’u reddediyorsa, bir betik kullanarak (bkz. “Toplu İşlem”) veya bir kod editörü ile tekrar kaydederek BOM’suz UTF‑8 olarak dışa aktarın.
Yaygın tuzaklar
- Otomatik biçimlendirme: hesap tabloları
00123gibi ID’leri123’e çevirebilir. - Tarih dönüşümü:
2026-01-09farklı görüntülenebilir ve tutarsız şekilde dışa aktarılabilir. - Ayraç değişiklikleri: dışa aktarımlar, bölge ayarlarına bağlı olarak
;’ya geçebilir.
Bu yöntemi kullanıyorsanız, aşağıdaki QA bölümü zorunludur.
Gelişmiş İş Akışı — Çeviri Tablosu
CSV dosyanız “çevir” ve “çevirme” verilerinin bir karışımıysa, çeviri işleminin hassas alanlara asla dokunmaması için ayrı bir çeviri tablosu oluşturun.
Adım 1: Bir çeviri tablosu oluşturun
Aşağıdaki gibi yeni bir CSV (veya sayfa) oluşturun:
| row_id | field | source_text | context | translated_text |
|---|---|---|---|---|
| 101 | product_title | Wireless Mouse | E-commerce product title | Kablosuz Mouse |
| 101 | product_desc | Silent clicks, 2-year battery | Short description | Sessiz tıklamalar, 2 yıl pil ömrü |
| 102 | product_title | USB-C Charger | E-commerce product title | USB-C Şarj Cihazı |
| 102 | product_desc | Fast charging for phones and tablets | Short description | Telefonlar ve tabletler için hızlı şarj |
| 103 | product_title | Stainless Steel Water Bottle | Product title | Paslanmaz Çelik Su Şişesi |
| 103 | product_desc | BPA-free, keeps drinks cold 24h | Short description | BPA içermez, içecekleri 24 saat soğuk tutar |
| 104 | product_title | Noise-Canceling Headphones | Product title | Gürültü Engelleyici Kulaklık |
| 104 | product_desc | Over-ear, Bluetooth 5.3 | Short description | Kulak üstü, Bluetooth 5.3 |
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”)
#### Örnek (SQL join/güncelleme deseni)
```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 <> '';
Toplu İşleme (birden fazla CSV dosyası)
Birçok CSV dosyasını çevirmeniz gerekiyorsa, manuel tablo adımlarından kaçının ve tekrarlanabilir bir işlem hattı kullanın:
-
Girdileri standartlaştırın
- UTF‑8’e (veya ithalatçınızın ihtiyacı varsa BOM’lu UTF‑8’e) normalize edin.
- Her dosyada eşleme için sabit bir anahtar (
row_id/id) olduğundan emin olun.
-
Her dosya için çeviri tabloları oluşturun
- Sadece çevrilebilir alanları
translation_table_<file>.csvdosyasına çıkarın. - Tüm dosyalar için tek birleştirilmiş tablo tercih ediyorsanız bir
source_filesütunu tutun.
- Sadece çevrilebilir alanları
-
Tabloları çevirin
- Dosya bazında bir API iş akışı veya CSV uyumlu bir araç kullanın.
-
Sonuçları geri birleştir + dışa aktar
row_id + field(ve kullanıldıysasource_file) ile eşleyin.- Sonraki sisteminizin beklediği kodlama ile dışa aktarın.
Minimal başlangıç döngüsü (birçok dosyayı tutarlı şekilde işleyin):
for f in ./input/*.csv; do
base="$(basename "$f" .csv)"
# 1) çeviri tablosunu çıkar (şemanıza göre uygulayın)
# 2) translate translation_table_${base}.csv -> translation_table_${base}_translated.csv
# 3) geri birleştir ve ${base}_translated.csv olarak dışa aktar
echo "Processed: $base"
done
Çeviri Sonrası QA Kontrol Listesi
Çevrilmiş CSV’yi indirdikten sonra, içe aktarmadan önce şu kontrolleri yapın:
Hızlı kontroller
- Satır sayısını karşılaştırın (macOS/Linux):
wc -l file.original.csv file.translated.csv - Dosyayı düz metin düzenleyicisinde açarak ayırıcı tutarlılığını nokta kontrolü yapın ve ayraçların aynı göründüğünden emin olun.
- İsteğe bağlı: Python ile tutarlı sütun sayılarını doğrulayın:
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
Eğer Unicode decode hatası alırsanız, CSV dosyasını önce UTF-8’e dönüştürün veya utf-8-sig deneyin:
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
Yapı Kontrolleri
- Satır sayısı değişmedi: orijinal ile aynı veri satırı sayısı.
- Sütun sayısı değişmedi: her satırda aynı sütun sayısı var.
- Ayraç değişmedi: virgül veya noktalı virgül, içe aktarıcınızla tutarlı.
- Tırnaklar geçerli: virgül/yeni satır içeren alanlar düzgün şekilde tırnaklanmış.
Veri Bütünlüğü Kontrolleri
- ID’ler ve anahtarlar değişmedi:
sku,id,row_id,handlekarşılaştırın. - URL’ler/e-postalar değişmedi: ek boşluk yok, alan adları çevrilmemiş.
- Sayılar korundu: fiyatlar, miktarlar, ondalıklar aynı kaldı.
- Yer tutucular korundu:
{name},{{count}},%s,:valuebozulmadan kaldı.
Çeviri Kalitesi Kontrolleri
- Terim tutarlılığı: ana ürün terimleri tüm satırlarda aynı şekilde çevrildi.
- Uzunluk kısıtlamalarına uyuldu: UI etiketleri çok uzun değil (uygulamalar için önemli).
- Karışık dil kalıntısı yok: çevrilmesi gereken yaygın kaynak kelimeleri tarayın.
Yaygın CSV Çeviri Sorunlarını Giderme
1) Çeviriden sonra sütunlar kaydı
Belirtiler
- İçe aktarıcı “yanlış sütun sayısı” diyor
- Değerler yanlış başlıkların altında görünüyor
Olası nedenler
- Çevrilen bir alan, kaçışsız bir tırnak işareti (
") içeriyor - Çevrilen bir alan, virgül/yeni satır içeriyor ancak düzgün şekilde tırnak içine alınmamış
Çözüm
- CSV’nin doğru tırnaklama kurallarını kullandığından emin olun (alanların etrafında çift tırnak; iç tırnaklar
""olarak kaçırılmalı). - Ham CSV metni çevirmek yerine, CSV’ye duyarlı bir iş akışı ile yeniden çevirin.
2) Bozulmuş karakterler (mojibake) örneğin ???? veya é
Olası nedenler
- Dışa/içe aktarımda yanlış kodlama (UTF‑8 vs eski kodlama)
Çözüm
- UTF‑8 olarak dışa aktarın.
- Windows’ta Excel kullanılıyorsa, BOM’lu UTF‑8 deneyin.
- Kodlamayı değiştirebilecek manuel kopyala/yapıştır işlemlerinden kaçının.
3) Başındaki sıfırlar kayboldu (00123 → 123)
Olası nedenler
- Tablo otomatik biçimlendirme (Excel/Sheets)
Çözüm
- Düzenleme/dışa aktarma öncesinde kimlik sütunlarını metin olarak işleyin.
- Verilerinizi yeniden yazmayan CSV’ye duyarlı bir iş akışı ile çeviriyi tercih edin.
4) Tarihler veya ondalıklar biçim değiştirdi
Örnekler
1,234.56→1.234,562026-01-09→09/01/2026
Çözüm
- Sayısal/tarih sütunlarını çevirmeyin.
- Değerleri makine tarafından okunabilir tutun; yerelleştirilmiş görüntüleme biçimlerini UI katmanınızda, ham veride değil, uygulayın.
5) Güvenlik sorunu: CSV enjeksiyonu (Excel formülleri)
Çevrilen bir hücre =, +, - veya @ ile başlarsa, dosya Excel’de açıldığında formül olarak değerlendirilebilir.
Çözüm
- Tablolarda açılacak CSV’ler için, riskli hücreleri tek tırnak (
') ile önekleyerek kaçırın veya dışa aktarım sırasında temizleyin. - Kullanıcıdan gelen metni çeviri/içe aktarım öncesinde baştaki formül karakterlerinden arındırmayı düşünün.
- Referans: https://owasp.org/www-community/attacks/CSV_Injection
SSS
Bir CSV’yi sütunları bozmadan nasıl çevirebilirim?
CSV’ye duyarlı bir iş akışı kullanın ve içe aktarmadan önce yapıyı doğrulayın:
- CSV’ye duyarlı bir yöntemle çeviri yapın (Yöntem 1)
- Satır/sütun sayıları ve geçerli tırnaklamayı doğrulamak için “Hızlı kontroller” + QA kontrol listesini çalıştırın
- CSV’niz hassas alanlar ile kullanıcıya yönelik metni karıştırıyorsa, “Gelişmiş İş Akışı — Çeviri Tablosu”nu kullanın
Bir CSV’de yalnızca bir sütunu çevirebilir miyim?
Evet. En güvenli yöntem, bir çeviri tablosu oluşturmak (row_id + source_text + context), yalnızca bunu çevirmek ve ardından geri eşlemektir. Bu, kimliklerin ve sayısal alanların yanlışlıkla değiştirilmesini önler.
Başlık satırını çevirmeli miyim?
Kullanım amacınıza bağlıdır:
- Başlıkları çevirin eğer CSV insanlar tarafından okunacaksa (raporlar, dışa aktarımlar).
- Başlıkları çevirmeyin eğer sisteminiz/aktarıcınız belirli alan adlarını bekliyorsa (e-ticaret aktarımları, veritabanları, uygulamalar).
CSV’m virgül yerine noktalı virgül (;) kullanıyor. Bu sorun olur mu?
Evet, ancak aracınızın/aktarıcınızın tutarlı şekilde aynı ayırıcıyı kullandığından emin olun. Birçok Avrupa yerelinde varsayılan olarak noktalı virgül kullanılır. Ayırıcı uyumsuzluğu, CSV aktarımlarının başarısız olmasının yaygın bir nedenidir.
Hücrelerde çok satırlı metin (satır sonları) nasıl işlenir?
CSV’de çok satırlı hücrelere izin verilir, ancak bunlar düzgün şekilde tırnaklanmalıdır. Çevrilen içeriğiniz satır sonları içeriyorsa, satır kırılmalarını önlemek için CSV’yi doğru şekilde işleyebilen bir çeviri aracı kullanmanız şiddetle önerilir.
Araçlar
- OpenL CSV Translator Online (örnek CSV uyumlu araç): https://doc.openl.io/translate/csv
- Excel iş akışları için: ayrıca bkz. “How to Translate Excel Online”: /how-to-translate-excel-online
- Markdown içeriği için: “How to Translate Markdown”: /how-to-translate-markdown
- Değişmeden kalması gerekenler için kurallar gerekiyorsa: “What Not to Translate”: /what-not-to-translate
Özet
Bir CSV dosyasını güvenli şekilde çevirmek için yapıyı koruyun (ayırıcı, tırnaklar, kodlama) ve “çevirilmemesi gereken” alanları (kimlikler, URL’ler, yer tutucular, sayılar) koruyun. CSV uyumlu iş akışlarını tercih edin ve içe aktarmadan önce QA kontrol listesi ile doğrulayın.


