BU DERSİN BAŞLIKLARI
_n( string $tekil, string $çoğul, int $sayısı, string $textdomain = 'default' )
Açıklaması:
_n()
fonksiyonu, WordPress temasına, bir kelimenin tekil ve çoğul kullanımını öğretir.
Türkçe dilinde, bir yazı için yapılan yorum sayısını ifade ederken; “1 yorum” ile “10 yorum” arasında, “yorum” kelimesinin yazımı açısından bir fark yoktur. Bu yüzden, Türkçe olarak kullanılacak bir tema için çok da gerekli bir fonksiyon değildir, fakat, İngilizce dilinin doğasında var olan, kelimelerin tekil ve çoğul kullanımları arasındaki yazım farkı için gerekli bir fonksiyondur.
Parametreleri:
$tekil
(Zorunludur.) Bir büyüklüğün, sayısı 1 olduğu zamanki yazımıdır.
Örnek: “Comment” (yorum)
$çoğul
(Zorunludur.) Bir büyüklüğün, sayısı 1 den çok az olduğu zamanki yazımıdır.
Örnek: “Comments” (yorumlar)
$sayısı
(int – Zorunludur.) Büyüklüğün sayısıdır.
$textdomain
Her temanın, diğer temalardan farklı bir textdomain değeri vardır. Textdomainler, WordPress’in, tema ya da eklentiye özgü tercümeleri saptayabilmesini sağlar, farklı temaların ya da eklentilerin tercümelerinin birbirine karışmasını engeller.
Varsayılan değeri 'default'
olarak ayarlanmıştır.
Temanıza özel bir $textdomain
değeri oluşturmayı öğrenmek için, Textdomain Parametresi başlığımızı okuyabilirsiniz.
Döndürdüğü değer:
Tekil veya çoğul kullanımıyla, tercüme edilmiş bir text döndürür.
Kaynak kodu:
Dizini : wp-includes/l10n.php
function _n( $single, $plural, $number, $domain = 'default' ) {
$translations = get_translations_for_domain( $domain );
$translation = $translations->translate_plural( $single, $plural, $number );
/**
* Filters the singular or plural form of a string.
*
* @since 2.2.0
*
* @param string $translation Translated text.
* @param string $single The text to be used if the number is singular.
* @param string $plural The text to be used if the number is plural.
* @param string $number The number to compare against to use either the singular or plural form.
* @param string $domain Text domain. Unique identifier for retrieving translated strings.
*/
return apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain );
}
Kullanımı:
_n()
fonksiyonu, Türkçe dili için olmadı için, aşağıda vereceğimiz örnekler, İngilizce dili üzerinden olacaktır.
Örnek-1
_n()
fonksiyonunun temel kullanımı şöyledir:
<?php
echo _n( 'Commment', 'Comments', 5, 'textdomain' );
?>
Yukarıdaki kodun çıktısı şöyle olacaktır.
Comments
Örnek-2
_n()
fonksiyonunun temel kullanımına bir başka örnek şöyledir:
<?php
$yorum_sayisi = 5;
echo $yorum_sayisi. ' '. _n( 'Commnet', 'Coemments', $yorum_sayisi, 'textdomain' );
?>
Yukarıdaki kodun çıktısı şöyle olacaktır.
5 Comments
Örnek-3
_n()
fonksiyonu ile, WordPress döngüsü içinde ya da tek yazılara ait bir şablon dosyasında, bir yazı için yapılan yorum sayısını, tercümeye hazır bir şekilde gösteriyoruz:
<?php
$yorum_sayisi = get_comments_number();
echo $yorum_sayisi. ' ' . _n( 'Commnet', 'Coemments', $yorum_sayisi, 'textdomain' );
?>
Eğer yazıya hiç yorum yapılmamışsa, yukarıdaki kodun çıktısı şöyle olacaktır:
0 Comments
Eğer yazıya 1 adet yorum yapılmışsa, yukarıdaki kodun çıktısı şöyle olacaktır:
1 Comment
Eğer yazıya 1’den fazla (mesela 12 adet) yorum yapılmışsa, yukarıdaki kodun çıktısı şöyle olacaktır:
12 Comments
Örnek-4
Örnek-3‘teki kodu, ID değerini bildiğimiz (19) bir yazı için kullanıyoruz:
<?php
$yorum_sayisi = get_comments_number(19);
echo $yorum_sayisi. ' ' . _n( 'Commnet', 'Coemments', $yorum_sayisi, 'textdomain' );
?>
Örnek-5
Örnek-3‘te verilen kodun yaptığı işi, printf()
fonksiyonunu kullanarak da yapabiliriz:
$yorum_sayisi = get_comments_number();
printf( _n( '%s Comment', '%s Comments', $yorum_sayisi, 'textdomain' ), number_format_i18n( $yorum_sayisi ) );
Ya da aynı işi sprintf()
fonksiyonu ile şöyle yapabiliriz:
$yorum_sayisi = get_comments_number();
echo sprintf( _n( '%s Comment', '%s Comments', $yorum_sayisi, 'textdomain' ), number_format_i18n( $yorum_sayisi ) );
Örnek-6
Aşağıdaki örnek, tekil ve çoğul kurallarına göre ve tercümeye hazır bir şekilde, star (yıldız) sayısını gösterir:
$yildizlar = '3';
$text = sprintf( _n( '%s star', '%s stars', $yildizlar, 'textdomain' ), $yildizlar );
echo $text;
// Çıktı: 3 stars