Uygulamanızı Bozmadan PO Dosyalarını Nasıl Çevirirsiniz

OpenL Team 7/3/2026
Uygulamanızı Bozmadan PO Dosyalarını Nasıl Çevirirsiniz

TABLE OF CONTENTS

PO dosyaları, çevrilmiş bir %s, eksik çoğul formu veya düzenlenmiş bir msgid uygulamanızı bozuncaya kadar basit metin dosyaları gibi görünür. Bu iş akışını kullanarak insanlara yönelik metinleri çevirirken gettext yapısını bozulmadan bırakın.

Normal bir metin çeviriciye tüm dosyayı yapıştırmayın. Bir PO dosyası kaynak koduna yakındır: kelimeler çevrilebilir, ancak dosya yapısı, yer tutucular, yorumlar ve çoğul indeksleri değişmeden kalmalıdır.

Yöntem 1: PO Dosya Çevirici Kullanmak

En hızlı ve güvenli ilk taslağı istiyorsanız ve msgid / msgstr çiftlerini elle düzenlemek istemiyorsanız bu yöntemi seçin.

  1. Orijinal .po dosyasını yedekleyin. Çeviriye göndermeden önce depo içinde temiz bir kopyasını saklayın. Çevrilmiş dosya bozulursa, karşılaştırmak için sağlam bir sürüme ihtiyacınız olacak.

  2. PO uyumlu bir çeviri aracı açın. Gettext dosyaları için geliştirilmiş bir araç kullanın, örneğin OpenL PO Translator, kullanıldıkça ödeme yapılan bir belge çeviri aracı. PO uyumlu bir araç, hedef metinleri çevirirken kaynak metinleri, yorumları, yer tutucuları ve dosya yapısını korumalıdır. Hâlâ araç seçiyorsanız, seçenekleri en iyi PO çeviri aracı rehberimizde karşılaştırabilirsiniz.

  3. .po dosyasını yükleyin. msgid ve msgstr girdilerini içeren dil dosyasını kullanın. Sadece bir .pot şablonunuz varsa, önce hedef dilde bir .po dosyası oluşturun, ardından bu .po dosyasını yükleyin.

  4. Kaynak ve hedef dili seçin. Kaynak dili, yönetici arayüzünüzün dili değil, msgid içindeki metne göre seçin. Örneğin, dosyada İngilizce msgid metinleri varsa ve İspanyolca çıktı istiyorsanız, İngilizceden İspanyolcaya seçin.

  5. Çevrilmiş dosyayı indirin. Framework’ünüzün beklediği yerel adlandırma kurallarıyla kaydedin. WordPress eklentileri genellikle metin alanı artı yerel kodu kullanırken, Django genellikle dosyaları locale/<dil>/LC_MESSAGES/ altında saklar.

  6. Öncelikle riskli dizeleri gözden geçirin. Çevrilmiş dosyada %, {, }, <, >, msgid_plural, msgctxt ve #, fuzzy ifadelerini arayın. Bunlar, çalışma zamanında uygulamanın davranışını en çok etkileyebilecek girdilerdir.

  7. Çevrilmiş dosyayı uygulamanızda test edin. Dili yerel olarak yükleyin ve çevrilen dizeleri kullanan ekranlarda gezinin. Bir PO dosyası yalnızca çevrildiğinde tamamlanmış sayılmaz; uygulama hâlâ doğru şekilde görüntüleniyorsa tamamlanmış olur.

Yöntem 2: Poedit ile PO Dosyalarını Çevirme

İnsan incelemesi, WordPress uyumluluğu veya dikkatli, adım adım bir çeviri süreci gerektiğinde bu yöntemi seçin.

  1. Dosyayı Poedit ile açın. Poedit, PO ve diğer yerelleştirme formatları için özel bir çeviri editörüdür; temel editör ücretsizdir, daha yoğun iş akışları için ücretli Pro özellikleri sunar. WordPress için, resmi Polyglots el kitabı Poedit’in bir POT dosyasından .po ve .mo dosyaları oluşturabildiğini, çoğul biçimleri ve UTF-8’i desteklediğini açıklar.

  2. Kaynak değiştiyse POT şablonundan güncelleyin. Geliştiriciler uygulama metnini değiştirdiyse, çeviri işlemine başlamadan önce .po dosyasını en güncel .pot dosyasından güncelleyin. Böylece yeni, kaldırılan ve belirsiz dizeler sessizce eski UI metniyle gönderilmek yerine görünür olur.

  3. Yalnızca msgstr alanını çevirin. msgid, uygulamanızın çeviriyi bulmak için kullandığı kaynak dizelerdir. Normal gettext iş akışlarında, çevirmenler msgstryi düzenlemeli, msgidyi değiştirmemelidir.

  4. Yer tutucuları tamamen koruyun. %s, %d, %1$s, {name}, %(count)s, :name veya HTML etiketleri gibi değişkenleri çevirmeyin veya aralarına boşluk eklemeyin. Kelime sırası değişmesi gerekiyorsa, yer tutucuyu bir bütün olarak taşıyın.

  5. Çoğul biçimleri ayrı çeviriler olarak ele alın. Bir çoğul girdi, msgid, msgid_plural ve birden fazla msgstr[n] değeri içerebilir. Hedef dilin gerektirdiği her çoğul alanını doldurun; aynı cümleyi her yere kopyalamayın.

  6. Uygulamanızın ihtiyaç duyması halinde .mo dosyasını kaydedin ve derleyin. Bazı yazılım yığınları geliştirme sırasında .po dosyalarını doğrudan okuyabilir, ancak WordPress ve birçok gettext tabanlı yapı çalışma zamanında derlenmiş .mo dosyalarını kullanır. Poedit, kaydederken otomatik olarak .mo dosyasını derleyebilir; Django ise django-admin compilemessages komutuyla mesajları derleyebilir.

  7. Yüklemeden önce uyarıları giderin. Poedit’te uyarı simgeleri genellikle bozuk yer tutuculara, eksik değişkenlere veya çoğul uyumsuzluklarına işaret eder. Çeviriyi WordPress, Django, Drupal veya yayın dalınıza aktarmadan önce bu sorunları düzeltin.

Yöntem 3: Yerelleştirme Platformu Kullanın

Birden fazla çevirmen, gözden geçiren veya sürüm yöneticisinin aynı PO dosyaları üzerinde çalışması gerektiğinde bu yöntemi seçin.

  1. PO dosyasını gettext destekleyen bir platforma aktarın. Weblate ve benzeri yerelleştirme platformları PO iş akışlarını destekler. Takım yerelleştirme platformları genellikle ücretli ürünlerdir, ancak Weblate’in açık kaynaklı, kendi sunucunuzda barındırabileceğiniz bir seçeneği de vardır. Yorumlar, başlıklar, belirsiz (fuzzy) dizeler ve yer tutucuların işlenişi platformdan platforma değişir; üretim dosyalarını yüklemeden önce format ayarlarını kontrol edin.

  2. Yer tutucu ve etiket kontrollerini ayarlayın. printf tarzı yer tutucular, adlandırılmış değişkenler, HTML/XML etiketleri ve çoğul biçimleri için kalite kontrol kurallarını etkinleştirin. Bu kontroller, normal yazım denetleyicilerinin göremediği hataları yakalar.

  3. Geliştirici yorumlarını görünür tutun. PO yorumları, kaynak referansları, geliştiriciden alınan notlar, bayraklar ve önceki kaynak dizeler gibi bağlamlar içerebilir. Çevirmenler, “Aç” gibi kısa bir arayüz etiketinin fiil, sıfat veya menü komutu olabileceği durumlarda bu notlara ihtiyaç duyar.

  4. Gözden geçirme ile birlikte çeviri hafızasını kullanın. Çeviri hafızası, tekrar eden arayüz dizeleri için faydalıdır, ancak eski bir çeviriyi yeni bir bağlama kopyalayabilir. msgctxt, kaynak referansları veya çevresindeki arayüz değiştiğinde tekrar kullanılan dizeleri mutlaka gözden geçirin.

  5. PO dosyalarını dışa aktarın ve yerel kontrolleri çalıştırın. Dışa aktarılan dosyaya körü körüne güvenmeyin. Çevrilmiş dosyayı tekrar uygulamaya ekleyin, gerekiyorsa derleyin ve birleştirmeden önce ekranları test edin.

Asla Bozmamanız Gereken PO Dosyası Kuralları

PO öğesiÇevrilsin mi?Güvenli örnekNeden önemli
msgidHayırmsgid "Save changes"Uygulama bu kaynak dizgiyi birçok gettext iş akışında arama anahtarı olarak kullanır.
msgstrEvetmsgstr "Guardar cambios"Kullanıcıların gördüğü hedef dildeki metindir.
msgctxtHayırmsgctxt "button"Bağlam, aynı kaynak dizgileri arasında ayrım yapılmasını sağlar.
%s, %d, %1$sHayırHello, %s -> Hola, %sÇalışma zamanı kodu bu yer tutucuları canlı değerlerle değiştirir.
{name}, %(count)s, :nameHayırWelcome, {name}Adlandırılmış değişkenler uygulama koduyla uyumlu olmalıdır.
HTML etiketleriGenellikle hayır<strong>Warning</strong>Metni çevirin, etiket sözdizimini değil.
msgid_pluralHayırmsgid_plural "%d files"Kaynak çoğul, orijinal kod yoluna aittir.
msgstr[0], msgstr[1]Evet, dikkatlicemsgstr[0] "%d file"Her hedef dilin kendine özgü çoğul kuralları vardır.
#, fuzzyÖnce inceleyin#, fuzzyFuzzy, çevirinin güncel olmayabileceği veya onaylanmadığı anlamına gelir.
#. geliştirici yorumlarıGenellikle hayır#. Button labelBu notlar, çevirmenlerin bağlamı anlamasına yardımcı olur.

Hızlı Örnek: Güvenli ve Hatalı PO Çevirisi

İşte normal bir gettext girdisi:

#. %s kullanıcının görünen adıdır.
#, c-format
msgid "Welcome back, %s"
msgstr ""

Güvenli bir İspanyolca çeviri %s’yi değiştirmez:

#. %s kullanıcının görünen adıdır.
#, c-format
msgid "Welcome back, %s"
msgstr "Bienvenido de nuevo, %s"

Hatalı bir çeviri yer tutucuyu değiştirir:

msgid "Welcome back, %s"
msgstr "Bienvenido de nuevo, % s"

O küçük boşluk bile önemli olabilir. GNU msgfmt --check-format yanlış % yer tutucuları gibi biçim dizgisi uyumsuzluklarını yakalamak için tasarlanmıştır ve Poedit de yaygın yer tutucu sorunları hakkında uyarı verir. Dokunulmaması gereken dizgilerin daha geniş bir listesi için ne çevrilmemeli rehberimizi kullanabilirsiniz.

Çevrilmiş PO Dosyası Nasıl Kontrol Edilir

  1. Gettext doğrulamasını, gettext yüklüyse çalıştırın.
msgfmt --check --check-format -o /tmp/messages.mo path/to/messages.po

Bu komut, sözdizimini, başlıkları ve biçim dizgilerini kontrol eder; dosya geçerliyse geçici olarak derlenmiş bir katalog oluşturur.

  1. Dosyayı, kullandığınız çerçevenin beklediği şekilde derleyin.
django-admin compilemessages

Django projelerinde, compilemessages, makemessages ile oluşturulan .po dosyalarını gettext desteği için .mo dosyalarına derler.

  1. Boş çevirileri arayın.
grep -n 'msgstr ""' path/to/messages.po

Boş msgstr alanları, çevrilmemiş girdiler için kasıtlı olabilir; ancak sürüm sırasında sizi şaşırtmamalıdır.

  1. Belirsiz (fuzzy) dizgileri arayın.
grep -n '#, fuzzy' path/to/messages.po

Belirsiz dizgiler, sürümden önce bir kişi tarafından gözden geçirilmelidir. Varsayılan olarak, msgfmt belirsiz çevirileri kullanmaz; yalnızca --use-fuzzy ile derlerseniz dahil edilir. Bu nedenle, belirsiz bir giriş, son katalogda çevrilmemiş bir dizgi gibi davranabilir.

  1. Gerçek kullanıcı arayüzünü test edin. Formlar, çoğul sayımlar, hata mesajları, hesap menüleri ve ödeme akışlarını içeren ekranları açın. PO doğrulaması dosya ile ilgili sorunları yakalar; ancak yalnızca arayüz testi, garip ifadeleri, taşmaları ve eksik bağlamları ortaya çıkarır.

Hangi Yöntemi Kullanmalısınız?

DurumEn iyi yöntemNeden
Tek bir PO dosyası için hızlı bir ilk taslak gerekiyorPO dosyası çevirmeniYapıyı koruyarak en hızlı yol
Bir WordPress eklentisi veya teması yönetiyorsunuzPoedit.mo derlemesiyle tanıdık WordPress iş akışı
Bir Django uygulaması yönetiyorsunuzPO çevirmeni veya Poedit, ardından compilemessagesÇeviri hızlı olabilir, ancak çerçeve derlemesi yine de gereklidir
Birçok dil ve değerlendirici varYerelleştirme platformuDaha iyi görev atama, geçmiş, kalite kontrol ve inceleme yönetimi
Geliştiriciye yönelik metinleri çeviriyorsunuzMakine çevirisinden sonra insan incelemesiKod terimleri, yer tutucular ve bağlam daha önemli
JSON veya frontend i18n dosyalarını da yerelleştiriyorsunuzFormat özelinde bir iş akışı kullanınPO kuralları her zaman JSON, YAML veya ICU mesajlarına uygulanmaz

Projeniz gettext PO dosyalarını JSON yerel dosyalarıyla karıştırıyorsa, her formatı yapısını anlayan bir araçla çevirin. PO dosyaları msgid ve msgstr etrafında döner; JSON yerelleştirme ise anahtarlar ve değerler üzerine kuruludur. Bu iş akışı için 2026’nın en iyi JSON çevirmenleri rehberimize göz atın.

SSS

PO dosyalarını Google Translate ile çevirebilir miyim?

Tek tek msgstr değerlerini genel bir çevirmenle çevirebilirsiniz, ancak tüm PO dosyasını düz metin çevirmenine yüklemek veya yapıştırmak risklidir. Genel çevirmenler msgid, yorumlar, tırnak kaçışları, çoğul indeksleri veya yer tutucuları değiştirebilir. Bunun yerine PO uyumlu bir çevirmen, Poedit veya bir yerelleştirme platformu kullanın.

.po, .pot ve .mo arasındaki fark nedir?

.pot kaynak koddan çıkarılan şablondur. Genellikle orijinal metinleri içerir, ancak tamamlanmış çeviriler yoktur. .po bir hedef dil için düzenlenebilir çeviri dosyasıdır. .mo ise birçok gettext tabanlı uygulamanın çalışma zamanında yüklediği derlenmiş ikili katalogdur.

msgid çevrilmeli mi?

Hayır, normal iş akışında değil. msgstr kısmını çevirin. GNU gettext kılavuzunda msgid orijinal, çevrilmemiş metin olarak, msgstr ise çeviri olarak tanımlanır; msgid dizeleri gettext araçları tarafından üretilir ve yönetilir.

Bir PO dosyasının geçerli olup olmadığını nasıl kontrol ederim?

Eğer gettext yüklüyse msgfmt --check --check-format komutunu çalıştırın, dosyayı Poedit ile açın ya da yerelleştirme platformunuzun kalite kontrol (QA) araçlarını kullanın. Ardından dosyayı uygulama içinde derleyip test edin. Doğrulama gereklidir, ancak kullanıcı arayüzü (UI) testi yerine geçmez.

Bir yer tutucuyu (placeholder) bozarsam ne olur?

En iyi ihtimalle, uygulama garip bir metin gösterir. Daha kötü bir durumda, çalışma zamanında biçimlendirici hata verir çünkü çevrilen metin artık kodun ilettiği değişkenlerle eşleşmez. Yer tutucular yalnızca tam birer öge olarak taşınmalı, asla çevrilmemeli veya kısmen düzenlenmemelidir.

OpenL, PO dosyalarını çevirebilir mi?

Evet. OpenL PO Translator, gettext .po dosyaları için geliştirilmiştir ve çeviri sırasında yer tutucuları ve değişkenleri dokunmadan bıraktığını belirtir; 100’den fazla dilde çeviri yapabilir. Kullanım başına ödeme yapılan bir belge çeviri iş akışı sunar, bu nedenle PO yapısını manuel işlemeye göre korumanın daha önemli olduğu durumlarda hızlı bir ilk taslak için kullanabilirsiniz. Elinizde yalnızca bir .pot şablonu varsa, OpenL kullanmadan önce hedef dilde bir .po dosyası oluşturun.

Kaynaklar