Template:Pagelang/tr
tr
This template is used on approximately 50,000 pages. To avoid large-scale disruption and unnecessary server load, any changes to this template should first be tested in its /sandbox or /testcases subpages or in your own user subpage. The tested changes can then be added to this page in one single edit. Please consider discussing any changes on the talk page before implementing them. |
Uses Lua: |
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.
Parameter | Description | Type | Status | |
---|---|---|---|---|
Page title | 1 | Page title to get language for. By default the title of the current page. | Page name | optional |
Ç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
- Manual:PAGENAMEE encoding
- {{TNT }}
- {{LL }}
- {{BCP47 }}
- {{Dir }}