MotorlarRehberlerFAQPatreonDiscordİndir
Giriş yap
RuneTranslate · Japon oyunlarını baştan sona çevirin
MotorlarRehberlerKarşılaştırGörsel metniKayıt düzenleyiciHile ModuFAQİndirPatreonDiscordYouTubeGizlilikŞartlarİletişim
Tüm yazılar
unity · xunity-autotranslator · troubleshooting

XUnity.AutoTranslator çeviri yapmıyor

18 Ağu 2026·9 dk okuma

XUnity.AutoTranslator, Unity'nin sahip olduğu en iyi çalışma zamanı çevirmenidir ve sustuğunda nedeni neredeyse her zaman şu beş şeyden biridir: oyun bir IL2CPP sürümüdür, metin kancanın yakalamadığı bir yoldan ayarlanır, onu çizen arayüz çatısı etkin değildir, satır karakter tavanından uzundur ya da uç nokta kendini kapatmıştır. Hangisiyle karşı karşıya olduğunuzu şöyle anlarsınız.

XUnity.AutoTranslator ücretsizdir, MIT lisanslıdır, etkin biçimde sürdürülür ve Unity'nin sahip olduğu tek en iyi çalışma zamanı çeviri aracıdır. Bir oyunun bir dizeyi metin bileşenine verdiği anı kancalayıp, dize çizilmeden önce yerine bir çeviri koyarak çalışır. Oyunun dosya biçimleri hakkında hiçbir şey bilmesine gerek olmamasının nedeni bu tasarımdır — ve başarısız olduğunda sessizce başarısız olmasının nedeni de. Hiçbir şey çökmez. Oyun yalnızca Japonca çalışır.

Aşağıdaki beş madde, neredeyse her "çeviri yapmıyor" bildirimini açıklar. Sırayla ilerleyin; her birinin ayrı bir çözümü var ve aralarında tahmin yürütmek epey akşam harcatır.

Önce ekrana değil, günlüğe bakın

Eklenti ne yaptığı konusunda gürültücüdür ve bunu söylediği tek yer günlüktür. BepInEx kurulumunda BepInEx/LogOutput.log dosyasına bakın. Unity'nin kendi günlüğü de yanındadır: eski sürümlerde <Game>_Data/output_log.txt, yenilerde %APPDATA%/../LocalLow/<Company>/<Game>/Player.log.

  • Günlük XUnity.AutoTranslator'ın yüklendiğinden hiç söz ediyor mu? Etmiyorsa sorun çevirmende değil yükleyicidedir — birinci arıza biçimindesiniz.
  • Bir uç noktanın başlatıldığını, sonra da tekrarlanan hatalardan sonra birinin kapatıldığını yazıyor mu? Bu, beşinci arıza biçimidir.
  • Çeviriler BepInEx/Translation/<lang>/Text/_AutoGeneratedTranslations.txt dosyasına yazılıyor mu? O dosya ekranda hiç görünmeyen doğru çevirilerle doluyorsa ağ tarafı iyidir, görüntüleme tarafı değildir.
  • Oyun içinde ALT+1'a basıp çeviri toplayıcı penceresini açın. Baktığınız satırları gösteriyorsa kanca onları görüyordur. Boş kalıyorsa kanca onları hiç görmüyordur.

Bu son ayrım — "çevrildi ama gösterilmiyor" ile "hiç görülmedi" — yol ayrımıdır. Aşağıdaki her şey buna bağlıdır.

1. Oyun bir IL2CPP sürümü

Unity oyunları birbirinden çok farklı iki çalışma zamanıyla gönderir. Mono, oyunun C# kodunu <Game>_Data/Managed/ içinde sıradan .NET derlemeleri olarak tutar — Assembly-CSharp.dll de aralarındadır — tip ve metot adları eksiksiz. IL2CPP ise o C# kodunu önceden C++'a dönüştürüp yerel bir GameAssembly.dll içine derler; tip sisteminden geriye kalan <Game>_Data/il2cpp_data/Metadata/global-metadata.dat içine paketlenir.

Bir çalışma zamanı kancasının bir metodu bulup değiştirmesi gerekir. Mono'da bu sıradan bir yansıma işidir. IL2CPP'de yansıtılacak yönetilen bir metot yoktur — kod yereldir ve adlara, alanlara ve metot adreslerine geri dönmenin tek yolu global-metadata.dat dosyasını ayrıştırıp düzeni yeniden kurmaktır. Bu bir ayar değil, bambaşka bir yükleyicidir.

  • Beş saniyede nasıl anlaşılır: oyunun exe'sinin yanında bir GameAssembly.dll ve bir il2cpp_data klasörü varsa IL2CPP'dir. DLL dolu bir Managed/ klasörü varsa Mono'dur.
  • IL2CPP, BepInEx'in IL2CPP sürümünü gerektirir ve ona göre derlenmiş XUnity.AutoTranslator sürümünü. Mono yapısı yüklenmez — günlükte hiç görünmez, ki bu tam olarak "eklenti bozuk" gibi okunur.
  • Bit genişliği de önemlidir. 64 bit bir oyun 64 bit yükleyici ister. Uyumsuz bir çift aynı sessizlikle başarısız olur.
  • Bazı oyunlar ayrıştırılamayan bir metaveri dosyası gönderir. Paketleyiciler ve kurcalama karşıtı katmanlar global-metadata.dat dosyasını şifreler ya da yeniden yapılandırır; onu okumaya bağlı her araç — kanca dahil — orada durur.

2. Eklenti yükleniyor ama metin hiç görünmüyor

Eklenti günlükte, uç nokta başlatılmış, _AutoGeneratedTranslations.txt büyüyor — ekransa değişmiyor. Kanca, oyunun sonra attığı bir dizeyi çeviriyordur ya da oyun metni kancanın yakalamadığı bir yoldan ayarlıyordur.

TextGetterCompatibilityMode

Pek çok oyun az önce ayarladığı metni geri okur — ölçmek, sonuna ekleme yapmak ya da bir şeyle karşılaştırmak için. Bileşen bir kez çevrilmiş dizeyi tuttuğunda o geri okuma çeviriyi döndürür, oyunun kendi mantığı yazmadığı bir metin üzerinde işlem yapar ve sonuç bir satırın eski hâline dönmesinden düzenin çökmesine kadar değişir. AutoTranslatorConfig.ini içindeki TextGetterCompatibilityMode, oyuncu çevrilmiş dizeyi görmeye devam ederken oyuna özgün dizesini geri verir. Her okumada iş yükü getirdiği için varsayılan olarak kapalıdır ve metin titrediğinde, eski hâline döndüğünde ya da yerinde kalmadığında denenecek ilk düğmedir.

Bu kümenin diğer yarısı, en baştan kancalı bir API üzerinden hiç ayarlanmayan metindir: kendi metin motoruyla çizen, karakterleri doğrudan bir mesh içine akıtan ya da diyaloğu bir sprite'a işleyen bir oyun. Bunun için yapılandırma yoktur — yakalama noktası mevcut değildir. Çizime işlenmiş metin bütünüyle ayrı bir sorundur ve herhangi bir kanca değil, görsel çevirisi ister.

3. Metnin yalnızca bir kısmı çevriliyor

Menüler çevriliyor, diyalog çevrilmiyor. Ya da diyalog çevriliyor ve her düğme Japonca kalıyor. Bu neredeyse her zaman etkinleştirilmemiş bir arayüz çatısıdır, çünkü eklenti her birini ayrı kancalar ve hepsi varsayılan olarak açık değildir.

  • Varsayılan olarak açık: UGUI (Unity'nin yerleşik arayüzü), NGUI, TextMeshPro ve UIElements (EnableUGUI, EnableNGUI, EnableTextMeshPro, EnableUIElements). Bunlar birlikte modern oyunların çoğunu kapsar; Utage gibi görsel roman çatıları da buna dahildir, çünkü kendi anahtarları yoktur, bunların üzerinden çizerler.
  • Varsayılan olarak kapalı: IMGUI ve eski TextMesh bileşeni. IMGUI, Unity'nin anlık modlu arayüzüdür — her karede yeniden çizer, dolayısıyla onu kancalamak her karede çeviri yapmak demektir ve çalışmadığı için değil, başarım nedeniyle kapalıdır.
  • Bayraklar `AutoTranslatorConfig.ini` içindedir: EnableIMGUI, EnableTextMesh ve kardeşleri. Oyununuzun kullandığını True yapıp yeniden başlatın.
  • Eski ve Japon doujin Unity oyunları alışılmış IMGUI vakalarıdır. Menüleri varsayılan biçimlendirmeyle düz gri kutulara benziyorsa bu güçlü bir ipucudur.

Her şeyi açmak hiçbir şeyi değiştirmiyorsa metin zaten bir Unity metin bileşeninden gelmiyordur — ikinci arıza biçimine dönün.

4. Uzun satırlar çevrilmez, atlanır

MaxCharactersPerTranslation varsayılan olarak 200'dür. Daha uzun olan her şey atlanır. Kırpılmaz, yeniden denenmez, oynarken fark edeceğiniz biçimde günlüğe yazılmaz — atlanır, dolayısıyla satır özgün dilde çizilir ve hiçbir şey bozuk görünmez.

Bu, insanların en uzun aradığı arıza biçimidir, çünkü kanıt çok zayıftır: oyunun büyük kısmı çevrilir, sonra bir paragraf çevrilmez. Alışıldık kurban görsel romanlardır — uzun bir anlatı bloğu ya da satır sonu olmayan bir iç konuşma 200 karakteri rahatça aşar ve tam da en çok çevrilmesini istediğiniz metindir.

Değeri AutoTranslatorConfig.ini içinde yükseltip yeniden başlatın. Her isteğin maliyetini de yükselttiğinizi unutmayın: ücretsiz uç noktaların istek başına kendi uzunluk tavanları vardır ve tek başına bunları aşan istekleri reddetmeye başlarlar, dolayısıyla çok büyük bir değer sessiz bir atlamayı görünür bir uç nokta hatasıyla takas eder. 500–1000 aralığında bir yer sıradan VN düzyazısını karşılar.

5. Uç nokta başarısız oldu ya da hız sınırına takıldınız

XUnity'nin varsayılan uç noktaları, bir tarayıcının erişeceği yoldan erişilen ücretsiz genel çeviri hizmetleridir. Sözleşmeye bağlı değildirler ve değişirler. Art arda bir dizi istek başarısız olduğunda eklenti, hizmeti dövmek yerine uç noktayı oturumun geri kalanı boyunca kapatır — bilinçli ve doğru bir karar, ki bu aynı zamanda o noktadan sonrasının siz oyunu yeniden başlatana dek sessizce çevrilmeden kalması demektir.

  • Günlükte kapatma satırını arayın. Oradaysa çözüm daha fazla beklemek değil, yeniden başlatma artı değişen bir şeydir.
  • Kuyruğu yavaşlatın. MaxTranslationsQueuedPerSecond ve gecikme ayarları var, çünkü hız sınırlarını tetikleyen şey ani yığınlardır. Bir VN'de ileri sarmak saniyeler içinde yüzlerce istek gönderir.
  • Uç nokta değiştirin. Ücretsiz bir hizmet kötü bir gün geçiriyorsa, başka biri genelde geçirmiyordur.
  • Anahtarlı bir uç nokta kullanın. Gerçek bir DeepL ya da ücretli API anahtarı sorunun tüm sınıfını ortadan kaldırır; bedeli, ücretli bir API anahtarı olmasıdır.
  • Eklentiyi güncelleyin. Ücretsiz bir uç noktanın protokolü değiştiğinde çözüm bir sürüm olarak gelir. Yerinden oynamış bir hizmete karşı iki yıllık bir yapı çalıştırmak, "eskiden çalışıyordu"nun yaygın nedenidir.

Ek: metin çevriliyor ama kutu olarak çiziliyor

Bu aslında bir çeviri arızası değildir. Oyun, özgün dilinin ihtiyaç duyduğu glifleri tam olarak içeren bir yazı tipi atlası gönderdi; hedef dilinizse orada olmayan glifler istiyor, dolayısıyla eksik her karakter kutu ya da boşluk olarak çiziliyor. XUnity'de tam bu iş için OverrideFont ve OverrideFontTextMeshPro var. Parmak izine dikkat: kutular eksik glif demektir; düz `?` karakterleri ise zincirin daha öncesinde bir kodlama sorunu demektir. Bunlar ayrı hatalardır ve yazı tipi ayarı yalnızca ilkini düzeltir.

İzlenecek sıra

  1. GameAssembly.dll var mı diye bakarak Mono mu IL2CPP mi olduğunu doğrulayın ve eşleşen yükleyiciyi kurduğunuzu teyit edin.
  2. BepInEx/LogOutput.log dosyasını açın ve eklentinin yüklendiğini, bir uç noktanın başlatıldığını doğrulayın.
  3. Oyun içinde ALT+0'a basıp eklentinin kendi penceresini açın — hiçbir şey görünmüyorsa eklenti yüklenmemiştir. ALT+1 ise Translation Aggregator'ı açar: boş olması kancanın metni hiç görmediği, dolu olması gördüğü anlamına gelir.
  4. Kanca görüyor ama ekran değişmiyorsa TextGetterCompatibilityMode ayarını açın.
  5. Oyunun yalnızca bir kısmı çevriliyorsa IMGUI'yi ve eski TextMesh'i etkinleştirin.
  6. Belirli uzun satırlar çevrilmeden kalıyorsa MaxCharactersPerTranslation değerini 200 olan varsayılanından yükseltin.
  7. Her şey oturumun ortasında durduysa uç nokta kapatma satırını arayın, sonra daha yavaş bir kuyrukla ya da farklı bir uç noktayla yeniden başlatın.

Kancanın işe uymadığı yerler

Yukarıdaki arızaların her biri aynı köke iner: bir çalışma zamanı kancası yalnızca yakalamak için orada bulunduğu metni çevirebilir. Oyun dizeyi eklentinin bildiği bir API üzerinden ayarlamıyorsa, metin eklenti yüklenmeden önce çizildiyse ya da çalışma zamanı kancalanacak metodu açmıyorsa, yapılandırılacak bir şey yoktur. Araç işini doğru yapıyordur ve metin yalnızca erişilemez durumdadır.

Yapısal alternatif, kare üzerinde değil dosyalar üzerinde çalışmaktır. Dosya düzeyinde bir araç oyunun kendi varlıklarını açar, dizeleri çıkarır, çevirir ve oyunun çevrilmiş bir kopyasını yazar — böylece motor daha yüklemeden metin zaten hedef dildedir. Kanca yok, yakalama noktası yok, çatı başına bayrak yok ve karakter sınırı biçimin taşıyabildiği kadar. RuneTranslate tam olarak bunu yapar; Unity ve 16 motor ile biçimde daha.

Ödünler gerçektir ve ters yöne çalışır. Dosya düzeyinde bir araç yalnızca dosyalardaki metne ulaşır — Unity için bu, TextAsset'ler, MonoBehaviour dize alanları, StreamingAssets betikleri, yerelleştirme tabloları ve varlık paketleri demektir; AES ile şifrelenmiş Addressable paketleri dahil. Oynarken çevirmek yerine oynamadan önce bir dışa aktarma adımı ister. Ve oyununuzun parçalardan çalışma zamanında ürettiği metin için hiçbir şey yapamaz. Unity'nin en iyi çaba bir motor olmasının nedeni tam olarak budur: bir oyunun neyi dışsallaştırdığı büyük ölçüde değişir ve hangisiyle karşı karşıya olduğunuzu size projeyi açmak söyler.

  • C# koduna derlenmiş metin kesin sınırdır. Mono sürümlerinde RuneTranslate, oyunun derlemesindeki dize değişmezlerini paketlenmiş bir yan bileşenle okur ve bunu çağrı noktasının onlarla ne yaptığına göre sınırlar, böylece bir sahne adını ya da bir animatör parametresini asla çevirmez. IL2CPP sürümlerinde derlenmiş kod kapsam dışıdır.
  • IL2CPP varlık metni ise sorun değil. Bileşen dize alanları IL2CPP'de, oyunun metaverisinden tip bilgisi yeniden kurularak okunur — kancanın ihtiyaç duyduğu aynı global-metadata.dat, başka bir amaçla kullanılır.
  • XUnity'nin kendi çıktısını okur. Elinizde dolu bir _AutoGeneratedTranslations.txt varsa RuneTranslate o dosyayı ayrıştırır ve anahtarlara dokunmadan içindeki değerleri çevirebilir. Halihazırda yaptığınız iş çöpe gitmez.
  • Yazı tipleri dışa aktarımda ele alınır: oyuna bir yedek yazı tipi varlığı enjekte edilir, böylece özgün yazı tipinin hiç kapsamadığı bir hedef dil yine de çizilir.

Dokuz sağlayıcı, üçü hiç API anahtarı istemiyor — Google, ücretsiz DeepL ve DeepL'in Classic/Next-gen modelleri — artı DeepL'in API'si, OpenAI, Anthropic, DeepSeek, herhangi bir OpenAI uyumlu uç nokta ve Ollama ya da LM Studio üzerinden yerel bir model. Ücretsiz katman her motoru ve her sağlayıcıyı açar; kısıtladığı şey verim ve aynı anda tek proje tutmaktır. Windows 10/11 ya da Wine veya Proton altında Linux ve Steam Deck. İlk açılışta ücretsiz bir Patreon girişi gerekir. Çıktı, sizde kalan oynanabilir, çevrilmiş bir sürümdür.

Hiçbir yaklaşım evrensel olarak doğru değil. Bütün betiği tek bir paketlenmiş JSON tablosunda duran bir oyun dosya düzeyinde bir iştir ve hep öyleydi. Diyaloğunu çalışma zamanında kodda kuran bir oyun kanca işidir ve hep öyle kalacak. Elinizde hangisinin olduğunu bilmek işin çoğudur.

Sırada ne var

  • Unity oyunları nasıl çevrilir — tam anlatım; Unity'nin neyi dışsallaştırdığı ve neyi dışsallaştırmadığı dahil.
  • Unity motor sayfası — desteklenen biçimler ve güncel sınırlar tek yerde.
  • RuneTranslate ile XUnity.AutoTranslator — iki yaklaşım yan yana, her birinin kazandığı durumlarla.
  • Bir çeviri sağlayıcısı seçmek — hangi motorlar Japonca düzyazıyı iyi işler ve hangileri hiçbir şeye mal olmaz.
  • Sözlük temelleri — karakter adlarını ve terminolojiyi bütün bir betik boyunca tutarlı tutmak.
  • Desteklenen tüm motorlar — oyun sonuçta Unity çıkmazsa.
İlgili okumalar
01

Çevrilen metin neden kutu görünüyor

unitytextmeshprofontstroubleshooting18 Ağu 2026 · 9 dk
Oku →
02

Bir Unity oyunu İngilizceye nasıl çevrilir

unitytutorialengine9 Haz 2026 · 6 dk
Oku →
03

RPG Maker oyunları nasıl çevrilir

rpg-makerhow-toenginecontrol-codes18 Ağu 2026 · 10 dk
Oku →

RuneTranslate'i denemeye hazır mısın?

Ücretsiz katman her motoru + her çeviri sağlayıcısını açar. Supporter ($3/mo) tam hızı açar.

Windows için indir