Kod Değişkenlerini (%s, HTML) Bozmadan .po Dosyası Nasıl Çevrilir?
Basit bir görevle başlar: WordPress temanızı İspanyolcaya çevirirsiniz. .mo dosyasını yüklersiniz, sitenizi yenilersiniz ve...
Ölümcül hata: Uncaught ArgumentCountError: Too few arguments to function sprintf()...
Ya da belki siteniz yüklenir, ancak bir kapanış </div> etiketi </ div> olarak çevrildiği için düzen paramparça olur.
Bu, yerelleştirme ile çalışan her geliştiricinin bir numaralı korkusudur. Teknik nitelikteki .po dosyalarında genel çeviri araçlarını (Google Translate veya temel yapay zeka sargılayıcıları gibi) kullandığınızda, kodu metinden farklı görmezler. Değişkenlerinizi "çevirmeye" çalışırlar ve bunu yaparken web sitenizi bozarlar.
Bu kılavuzda, bunun tam olarak neden olduğunu ve otomatik çevirilerinizde %100 kod güvenliğini nasıl sağlayacağınızı açıklayacağız.
Bir Felaketin Anatomisi: %s Neden Siteleri Bozar?
WordPress, dinamik metni işlemek için Gettext sistemini ve sprintf() gibi PHP işlevlerini kullanır.
Örneğin, şöyle bir dizeniz olabilir:
msgid "Search results for %s"
%s, PHP'nin kullanıcının arama sorgusunu ekleyeceği bir yer tutucu değişkendir.
Genel Yapay Zeka Nerede Yanlış Yapıyor?
Bu dizeyi standart bir Büyük Dil Modeline (LLM) veya çeviri API'sine verdiğinizde, %s'i sadece başka bir garip kelime olarak görür. Çevresindeki dilbilgisini veya noktalama işaretlerini düzeltmeye çalışabilir.
İşte en sık gördüğümüz sözdizimi hataları:
-
Eklenen Boşluk:
- Orijinal:
Hello %s - Kötü Çeviri:
Merhaba % s - Sonuç: PHP
%sarar, ancak% sgörür. Değişken yüklenemez, genellikle ölümcül bir hataya neden olur.
- Orijinal:
-
HTML Halüsinasyonu:
- Orijinal:
Giriş yapmak için <strong>buraya</strong> tıklayın. - Kötü Çeviri:
Giriş yapmak için <strong>buraya</ strong> tıklayın. - Sonuç: Yapay zeka,
</ strong>kapanış etiketinin içine bir boşluk ekledi. CSS'niz bozulur ve sayfanın geri kalanı kalın hale gelir.
- Orijinal:
-
Argüman Takası:
- Orijinal:
Sayfa %1$s / %2$s - Kötü Çeviri:
Sayfa %2$s / %1$s - Sonuç: Yapay zeka, sayılar değiştirilirse cümlenin kulağa daha hoş geleceğine karar verdi. Artık sayflamanız "Sayfa 10 / 1" diyor.
- Orijinal:
"Manuel Düzeltme" Tuzağı
Çoğu geliştirici bunu dosyayı manuel olarak inceleyerek çözmeye çalışır. 50 dizelik küçük bir eklentiniz varsa, bu sorun değil. Ama 5.000 dizelik bir WooCommerce mağazasını çeviriyorsanız?
Tek bir noktalı virgül eksikliği veya bir %s değişkeninin içinde fazladan bir boşluk için 5.000 satır kodu taramak imkansızdır. Saatler sürer ve insan gözü kaçınılmaz olarak bir şeyi kaçırır.
Regex (Düzenli İfadeler) komut dosyaları varlığı doğrulamaya yardımcı olabilir, ancak bağlama özgü yeniden sıralama sorunlarını veya ince HTML özellik bozulmalarını nadiren yakalarlar.
Çözüm: "Sözdizimi Kilitleme"
Bir .po dosyasını güvenli bir şekilde çevirmenin tek yolu, yapay zekanın koda asla dokunmamasını sağlamaktır. Bu, Sözdizimi Kilitleme adı verilen bir işlem gerektirir.
SimplePoTranslate'in arkasındaki temel teknoloji budur.
Genel araçların aksine, metni yapay zekaya öylece atmıyoruz. Önce Gettext yapısını ayrıştırıyoruz. İşte "Güvenli Mod"umuzun nasıl çalıştığı:
- Analiz:
.podosyanızı tararız ve her değişkeni (%s,%d), her konumsal argümanı (%1$s) ve her HTML etiketini (<br/>,<span>) tanımlarız. - Çıkarma ve Kilitleme: Bu öğeleri dizeden geçici olarak kaldırırız ve bunları değiştirilemez belirteçlerle değiştiririz.
- Girdi:
Merhaba <strong>%s</strong> - Yapay zekanın gördüğü:
Merhaba [TOKEN_1][TOKEN_2]
- Girdi:
- Çeviri: Yapay zeka "Merhaba" metnini "Hola"ya çevirir, ancak
[TOKEN_1]veya[TOKEN_2]kilitli olduğu için fiziksel olarak değiştiremez. - Yeniden Oluşturma: Orijinal kodu, tam olarak ait olduğu yere çevrilmiş dizeye yeniden ekleriz.
Sonuç: Sıfır Bozuk Site
Yapay zeka gerçek %s veya HTML karakterleriyle asla etkileşime girmediği için, çeviri motorunun bir değişkenin içine boşluk eklemesi veya bir etiketi bozması matematiksel olarak imkansızdır.
Rusça veya Lehçe gibi diller için karmaşık Çoğullaştırma kurallarını (msgid_plural) bile ele alıyoruz ve doğru sayı için doğru değişkenin kullanılmasını sağlıyoruz.
Kodunuzla Kumar Oynamayı Bırakın
Her dil dosyası yüklediğinizde parmaklarınızı çaprazlamak zorunda kalmamalısınız. Yerelleştirme, PHP hatalarını ayıklamak değil, yeni müşterilere ulaşmakla ilgili olmalıdır.
SimplePoTranslate, kod bütünlüğüne önem veren geliştiriciler için en güvenli, en gelişmiş bulut tabanlı araçtır.
- Bulut Tabanlı: Yüklenecek eklenti yok.
- Bağlam Duyarlı: Doğal ifadeler için Gemini/GPT-4 sınıfı yapay zeka kullanır.
- Sözdizimi Kilitli: Değişkenleriniz için garantili koruma.
Baş ağrısı olmadan çeviri yapmaya hazır mısınız? SimplePoTranslate.com adresinden ücretsiz başlayın