Polylang — uyumluluk notları
> Son güncelleme: 2026-05-06 (Hafta 17) > Durum: Native uyumlu — InvumPosI18nPolylangBridge her gateway'in description/title metnini Polylang String Translation UI'sına otomatik yükler.
Polylang, WordPress için en yaygın çoklu-dil eklentisi (700K+ aktif kullanıcı). WPML'in ücretsiz alternatifi. POS Entegratör iki katmanda Polylang ile çalışır:
| Katman | Çevirilen | Mekanizma | |——–|———–|———–| | Statik plugin string'leri | Kodda __( 'Yeni kart kullan', 'invum-pos' ) gibi geçen literallar | languages/invum-pos.pot dosyası — Loco Translate veya .po/.mo dosyaları üzerinden çevrilir. Polylang'a özgü değil; her i18n eklentisi bunu okur. | | Dinamik merchant copy | WC settings ekranında girdiğin Description / Title metni | pll_register_string() ile Polylang String Translation UI'sına surface edilir. Bu sayfanın konusu. |
Otomatik kayıt — nasıl çalışır
PolylangBridge::register_strings() init hook'unun priority 30'unda çalışır ve her aktif provider için (wc_gateway_class non-null + description boş değil) iki Polylang string'i kaydeder:
<provider_id>_description(multiline)<provider_id>_title(single line)
Tümü "Invum POS" grubu altında toplanır → Polylang admin → Diller → Dize Çevirileri ekranında tek "Invum POS" başlığı altında listelenir.
Polylang aktif değilse?
pll_register_string fonksiyonu mevcut değildir → bridge sessizce çıkar, hiçbir yan etki yok. Yani Polylang olmayan kurulumlarda bu kod çalıştırılır ama bir şey yapmaz.
Çeviri akışı (merchant tarafı)
- WP admin → Diller → Diller ekranından site dillerini ekle (örn. Türkçe + İngilizce).
- WP admin → WooCommerce → Ayarlar → Ödemeler → iyzico'ya gir, "Description" alanına Türkçe metin yaz, kaydet.
- WP admin → Diller → Dize Çevirileri ekranını aç.
- Grup: Invum POS filtresini seç.
iyzico_descriptionsatırını bul. - Sağdaki sütunlara İngilizce çevirisini gir, kaydet.
- Müşteri checkout'a girip dilini İngilizce yaptığında iyzico tile'ında İngilizce description görür.
Manuel string ekleme (hooks/filters)
Üçüncü-parti plugin kendi gateway'ini Invum POS Provider Registry'ye ekliyorsa (wc_gateway_class ile), bridge otomatik onu da yakalar — ek kod gerekmez. Sadece özel bir merchant copy alanını Polylang'a vermek istiyorsa:
add_action( 'init', function () {
if ( ! function_exists( 'pll_register_string' ) ) {
return;
}
$custom = get_option( 'my_custom_invum_addon_message', '' );
if ( '' !== $custom ) {
pll_register_string(
'my_custom_invum_message',
$custom,
'Invum POS',
true
);
}
}, 31 ); // bridge priority 30'dan sonra çalışmak için
Bilinen sınırlamalar
- Provider id'si dinamiktir —
iyzico,paytr,nestpay_akbankvb. WC gateway sınıfı registered olduktan sonra<id>_description/<id>_titlePolylang'a düşer. Yeni bir provider eklendiğinde bridge onu otomatik yakalar; ama merchant ilk kez "Description" alanını doldurmadan önce o satır Polylang'a yansımaz. - WC admin "Translate" butonu yok — Description alanının yanında doğrudan çeviri linki yok. Merchant Polylang'ın String Translation ekranına manuel gitmek zorunda. Bu Polylang'ın WC entegrasyon şemasının doğal sınırı, bizden değil.
- Title alanı opsiyonel kayıt — WC
Titlealanı her zaman bir değer içerir (boş bırakılırsa varsayılan WC etiketleri kullanılır). Bridge sadece dolu olduğunda kayıt eder; boş tutarsa Polylang'da satır oluşmaz.
Doğrulama smoke testi
# Polylang aktif WP install'da:
wp eval 'do_action("init");'
wp eval 'echo PLL()->frontend->static_pages->get_languages_links();'
# String'lerin kayıt olduğunu doğrula:
wp eval '
$registered = get_option( "polylang_string_translations", array() );
foreach ( $registered as $row ) {
if ( "Invum POS" === ( $row["context"] ?? "" ) ) {
echo $row["name"] . ": " . substr($row["string"], 0, 50) . "...n";
}
}
'
WPML ile birlikte kullanım?
Polylang ve WPML aynı anda aktif olamaz. Bu sayfa sadece Polylang odaklı — WPML kullanan merchant'lar için ayrı bir bridge gerekir (Hafta 19+ atomu, çoğu merchant Polylang kullanıyor diye öncelik düşük).