[PY] Tüm Korece yorum satırlarını İngilizceye çevirin

Kaptan Yosun

Co-Co Admin
Moderatör
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
1.586
Çözümler
57
Beğeni
3.171
Puan
1.839
Ticaret Puanı
0

Dikkat! Tamamen AI slop'tur. AI kodudur. Hatta tembellikten konuyu da AI'a yazdırdım.


1788110811168.webp

[PY] Tüm Korece yorum satırlarını İngilizceye çevirin

Kaynak koddaki (.cpp / .h / .hpp) tüm Korece yorum satırlarını tarayıp Google Translate ile İngilizceye çeviren bir Python script'i paylaşıyorum. Metin2 tabanlı projelerde sık karşılaşılan CP949 (Korece ANSI) encoding'i doğru okuyup doğru yazıyor, yani "?" karakter bozulması yaşamıyorsunuz.

Neler yapıyor:
  • Sadece yorumları değiştirir. String/char literal'ların (örn. MessageBox içindeki Korece metinler) içine dokunmaz — kaynak kodu satır satır tarayıp string/char literal'ları comment parser'ından hariç tutuyor.
  • Dosyaları doğru codec (CP949) ile açıp aynı codec ile geri yazıyor, böylece dokunulmayan Korece string'ler bozulmadan kalıyor.
  • Çeviri sonucu hala Korece karakter içeriyorsa (API çeviremediyse) o yorumu olduğu gibi bırakıyor, riske girmiyor.
  • Fonksiyon/değişken isimleri gibi kod-benzeri token'ları (örn. CEffectData, m_pLZObj, 0x9E3779B9) çeviriye göndermeden önce maskeliyor, çeviri bitince geri koyuyor — yani identifier'lar çevrilmiyor.
  • Çeviriler translate_cache.json içinde önbelleğe alınıyor. Script yarıda kesilse bile (Ctrl+C, terminal kapanması vs.) hiçbir şey kaybolmuyor, tekrar çalıştırınca kaldığı yerden devam ediyor.

Kullanım:
Script'i proje kök dizinine koyup çalıştırmanız yeterli:

Kod:
Genişlet Daralt Kopyala
python translate_korean_comments.py

Varsayılan olarak script'in bulunduğu dizinin altındaki tüm .cpp/.h/.hpp/.inl dosyalarını tarar (Extern/, .git, build klasörleri gibi yerler hariç tutulur).

Önce test etmek isterseniz (dry-run):
Dosyalara hiçbir şey yazmadan, çevirilerin nasıl görüneceğini önizlemek için:

Kod:
Genişlet Daralt Kopyala
python translate_korean_comments.py --dry-run --report report.txt

Bu, report.txt içine her değişecek yorumun eski/yeni halini yazar, kaynak dosyalara dokunmaz. Not: dry-run yine de API'ye çeviri isteği atar ve cache'i doldurur — yani asıl çalıştırmayı yaptığınızda o kısımlar anında (cache'den) gelir, tekrar bekletmez.

Satır sayısını korumak isterseniz (--no-merge):
Script varsayılan olarak art arda gelen yorum satırlarını tek paragrafta birleştirip yeniden satır kaydırması yapar (daha akıcı İngilizce olur ama satır numaraları kayabilir). Orijinal repo ile diff alacaksanız veya satır numaralarının değişmemesi gerekiyorsa:

Kod:
Genişlet Daralt Kopyala
python translate_korean_comments.py --no-merge

Bu modda her yorum satırı ayrı ayrı çevrilir, dosyadaki toplam satır sayısı birebir aynı kalır.

Diğer kullanışlı parametreler:
Kod:
Genişlet Daralt Kopyala
--root Client/UserInterface     : sadece belirli bir klasörü tara
--backup                        : her dosyanın yanına .bak yedeği bırak
--limit 5                       : sadece ilk 5 dosyada dene
--jobs 8                        : eşzamanlı çeviri isteği sayısı (varsayılan 4)
--api-key <KEY>                 : ücretsiz endpoint yerine resmi Google Translate v2 API kullan
--skip "Extern,.git,build,..."  : taranmayacak klasörler

Önerim: Direkt main branch üzerinde çalıştırmayın, önce yeni bir branch açın:

Kod:
Genişlet Daralt Kopyala
git checkout -b translate-comments
python translate_korean_comments.py --no-merge

Sonra diff'e bakıp beğenirseniz merge edersiniz.

Script (translate_korean_comments.py):
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Sonuç:
1788110011093.webp
 
Son düzenleme:
Kodlarda yer alan yorum satırlarının önemli olduğunu düşünüyorum. Özellikle böyle eski ve yabancı kaynaklı projelerde, kodun ne yaptığını anlamayı ciddi şekilde kolaylaştırıyor.

AI slop meselesine gelirsek de, sonuçta biz de bir yapay zekâ aracıyız. Yapay zekâyı nasıl kullanırsanız, ortaya çıkan sonuç da büyük ölçüde ona göre oluyor. :cool: Burada önemli olan benim için "AI yazdı mı?"dan ziyade, ortaya çıkan şeyin gerçekten işe yarayıp yaramadığı. Bu araç da en azından belirli bir problemi çözmeye çalışıyor.
 
Geri
Üst