Template:Pagelang/tr

From mediawiki.org

tr

Template documentation

Kullanım

This stuff template for check language of translated subpage (for translatable pages). Used for automate substitution localized values that will match the language of the current page. Also used to help defining text direction (with using with {{dir}}). It is designed to be called from other templates.

Template parameters[Edit template data]

This template prefers inline formatting of parameters.

ParameterDescriptionTypeStatus
Page title1

Page title to get language for. By default the title of the current page.

Page nameoptional

Çevrilmiş sayfalarda veya şablonlarda yaygın kullanım örnekleri:

<!--

Parametre 1'de verilen dil kodunun dil adını, kullanıcının tercih ettiği dildeki dil adını gösteren bir araç ipucu ile mevcut çevrilmiş sayfayla aynı dilde görüntüleyin.

--><span lang="{{BCP47|{{int:lang}}}}" title="{{#language:{{1}}|{{int:lang}}}} ({{{1}}})"><!--
--><span lang="{{BCP47|{{PAGELANGUAGE}}}}" dir="{{dir|{{PAGELANGUAGE}}}}" class="autonym"><!--
-->{{#language:{{1}}|{{PAGELANGUAGE}}<!--
--></span></span>

<!--

Çevrilen mevcut sayfanın diline bağlı olarak kayan görüntüyü doğru tarafa hizalayın

-->[[File:Example|{{dir|{{PAGELANGUAGE}}|left|right}}|30x30px]]

Teknik not

Bir alt sayfa sayfası herhangi bir (tek veya çift) tırnak veya ve işareti içerdiğinde, bu geçerli bir dil kodu değildir; PAGENAME ve SUBPAGENAME normalde bu karakterleri dönüş değerlerinde HTML ile kodlar, bu nedenle #language girdisi olarak kullanmak güvenlidir. Ancak #titleparts, bu tırnak işaretlerini veya ve işaretlerini HTML kodlarını çözerek geri yükler.

Ancak #language, tek tırnak işaretleriyle "dil kodları" ile birlikte kullanıldığında önemli bir sunucu hatası üretecektir.

Kaynak

Bu hâlâ çalışıyor:

  {{#language:tr|{{#titleparts:There's a fatal bug in MediaWiki|1}}}}

Bu da çalışmıyor:

  {{#language:tr|{{PAGENAME:There's a fatal bug in MediaWiki}}}}

Bunu da yapmaz:

  {{#language:tr|There's a fatal bug in MediaWiki}}

Bu, #language ayrıştırıcı işlevinin kritik bir hatasıdır ve görünüşe göre, alıntıdan sonra PHP'ye akıllıca kod eklenmesinin neden olabileceği ciddi bir güvenlik sorunudur.

Bu hata yalnızca #language öğesinin ikinci parametresinde (birinci parametrede kod tarafından belirtilen dilin adının verildiği hedef dil) ortaya çıkar. Yalnızca ilk parametrenin geçerliliği kontrol edilir, ikincisi kontrol edilmez. Burada, #language herhangi bir hedef dilde dilin adını bulamadığında, aşağıdaki gibi ana dil adını döndürmelidir:

  {{#language:tr|geçersiz dil}}
Türkçe
Bu şablonda kullanılan kelime etrafında

Bu ciddi hatadan kaçınmak için, alt sayfa adlarındaki tırnak işaretlerini (veya ve işaretlerini), alt sayfa adını değil, boş bir dize döndürmek için her türlü dil kodunda geçersiz olduklarından tespit etmek istiyoruz: bu tür alt sayfa adı zaten bir dil kodu olamaz.

Güvenli dil kodları olamayan alt sayfaları tespit etmenin bir yolu, #titleparts tarafından filtrelenen değerlerinin PAGENAME tarafından filtrelenen değerine eşit olup olmadığını kontrol etmektir: eğer eşit değillerse bunun nedeni, "ve" işaretleri veya tırnak işaretleri içermeleridir.

Neden yalnızca SUBPAGENAME yerine #titleparts kullanıyoruz?

Bu şablonda SUBPAGENAME yerine #titleparts kullanılır, ancak SUBPAGENAME kullanmak da hatayı engellemez, çünkü tüm tırnak işaretlerini içeren sayfa adı geri döndürür (SUBPAGENAME yalnızca alt sayfaların etkinleştirildiği ad alanlarında çalışır, bu nedenle bir dil kodu soneki kullanılarak çevrilip çevrilmediğini görmek için ana ad alanında çalışmaz).

Ayrıca bakınız