Vikisözlük
trwiktionary
https://tr.wiktionary.org/wiki/Vikis%C3%B6zl%C3%BCk:Anasayfa
MediaWiki 1.47.0-wmf.2
case-sensitive
Ortam
Özel
Tartışma
Kullanıcı
Kullanıcı mesaj
Vikisözlük
Vikisözlük tartışma
Dosya
Dosya tartışma
MediaWiki
MediaWiki tartışma
Şablon
Şablon tartışma
Yardım
Yardım tartışma
Kategori
Kategori tartışma
Portal
Portal tartışma
YeniKurum
YeniKurum tartışma
Ek
Ek tartışma
Alıntılar
Alıntılar tartışma
TimedText
TimedText talk
Modül
Modül tartışma
Event
Event talk
Pakistan
0
1033
5658321
5654966
2026-05-15T18:04:43Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658321
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
*{{h|dil=tr|Pa|kis|tan}}
===Özel ad===
{{tr-özel ad|k=1}}
[[Dosya:Pakistan w1 locator.svg|küçükresim|Pakistan'ın haritadaki yeri.]]
# {{t|dil=tr|ülkeler}} [[Orta Asya]]'da bir ülke.
====Çekimleme====
{{tr-ad-tablo}}
====Çeviriler====
{{üst|tip=çeviriler}}
*Almanca: {{ç|de|Pakistan}}
*Başkurtça: {{ç|ba|Пакистан}}
*Danca: {{ç|da|Pakistan}}
*Fince: {{ç|fi|Pakistan}}
*Fransızca: {{ç|fr|Pakistan}}
*İngilizce: {{ç|en|Pakistan}}
*İtalyanca: {{ç|it|Pakistan}}
* Lehçe: {{ç|pl|Pakistan|e}}
*Rusça: {{ç|ru|Пакистан}}
*Sırp-Hırvatça: {{ç|sh|Пакистан}}; {{ç|sh|Pakistan}}
*Türkmence: {{ç|tk|Päkistan}}
*Ukraynaca: {{ç|uk|Пакистан}}
{{alt}}
===Ek okumalar===
*{{proje bağlantısı|vikipedi}}
==Almanca==
===Özel ad===
{{başlık başı|de|özel ad}}
#{{t|ülkeler|dil=de}} Pakistan
==Danca==
===Özel ad===
{{başlık başı|da|özel ad}}
#{{t|ülkeler|dil=da}}Pakistan
==Fince==
===Özel ad===
{{başlık başı|fi|özel ad}}
#{{t|ülkeler|dil=fi}} Pakistan
==Fransızca==
===Özel ad===
{{başlık başı|fr|özel ad}}
#{{t|ülkeler|dil=fr}}Pakistan
==Felemenkçe==
===Özel ad===
{{başlık başı|nl|özel ad}}
#{{t|ülkeler|dil=nl}} Pakistan
==İngilizce==
===Özel ad===
{{başlık başı|en|özel ad}}
#{{t|ülkeler|dil=en}} Pakistan
==İsveççe==
===Özel ad===
{{başlık başı|sv|özel ad}}
#{{t|ülkeler|dil=sv}} Pakistan
==İtalyanca==
===Özel ad===
{{başlık başı|it|özel ad}}
{{m}} ('''il Pakistan''')
#{{t|ülkeler|dil=it}} Pakistan
{{Resmi Adı}}
:[[Repubblica Islamica del Pakistan]]
==Lehçe==
===Özel ad===
{{başlık başı|pl|özel ad}}
#{{t|ülkeler|dil=pl}} Pakistan
==Sırp-Hırvatça==
===Özel ad===
{{başlık başı|sh|özel ad}}
#{{t|ülkeler|dil=sh}} {{ağız|Sırp}} Pakistan
====Yazılışlar====
:[[Пакистан]] (Kiril)
33ophmnqeka6avzzskhfojmki84xa14
Kamerun
0
1156
5658447
5655090
2026-05-16T08:14:43Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658447
wikitext
text/x-wiki
==Türkçe==
===Özel ad===
{{tr-özel ad|k=1}}
[[Dosya:Cameroon w1 locator.svg|küçükresim|Kamerun'nun haritadaki yeri.]]
# {{t|dil=tr|ülkeler}} Orta [[Afrika]]'nın batısındaki bir ülke..
#*{{kt|başlık=Kürk Mantolu Madonna|yazar=Sabahattin Ali|yayıncı=Remzi Kitabevi|yıl=1943|vikikaynak=Sayfa:Kürk Mantolu Madonna.djvu/52|dil=tr
|sayfa=52
|tanıklık=Bu sonuncusu Almanyanın '''Kamerun''' müstemlekesinde ticaret yaparken mütarekeden sonra her şeyini bırakarak vatanına sığınmış bir adamdı.}}
====Çeviriler====
{{üst|Orta Afrika'nın batısında ülke|tip=çeviriler}}
* Almanca: {{ç|de|Kamerun|n}}
* Danca: {{ç|da|Cameroun}}
* Ermenice: {{ç|hy|Կամերուն}}
* Fince: {{ç|fi|Kamerun}}
* Fransızca: {{ç|fr|Cameroun}}
* Gürcüce: {{ç|ka|კამერუნი}}
* İngilizce: {{ç|en|Cameroon}}
* İspanyolca: {{ç|es|Camerún}}
* İsveççe: {{ç|sv|Kamerun}}
* İtalyanca: {{ç|it|Camerun}}
* Lehçe: {{ç|pl|Kamerun}}
* Macarca: {{ç|hu|Kamerun}}
* Portekizce: {{ç|pt|Camarões}}
* Yunanca: {{ç|el|Καμερούν|n}}
{{alt}}
====Kaynakça====
*{{proje bağlantısı|vikipedi}}
==Almanca==
===Özel ad===
{{başlık başı|de|özel ad}}
# {{t|ülkeler|dil=de}} Kamerun
==Fince==
===Özel ad===
{{başlık başı|fi|özel ad}}
# {{t|ülkeler|dil=fi}} Kamerun
==İsveççe==
===Özel ad===
{{başlık başı|sv|özel ad}}
# {{t|ülkeler|dil=sv}} Kamerun
==Lehçe==
===Özel ad===
{{başlık başı|pl|özel ad}}
# {{t|ülkeler|dil=pl}} Kamerun
==Macarca==
===Özel ad===
{{başlık başı|hu|özel ad}}
# {{t|ülkeler|dil=hu}} Kamerun
==Zazaca==
===Özel ad===
{{zza-özel ad|c=e}}
# {{t|dil=zza|ülkeler}} {{b|tr|Kamerun}}
dm84el7ws97tkf6w6sxr9wc982egp7v
doğan
0
1384
5658368
5253504
2026-05-15T22:29:36Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658368
wikitext
text/x-wiki
{{bakınız|Doğan|dogan}}
==Türkçe==
[[Resim:Falco peregrinus nest USFWS free.jpg|küçükresim|150px|Bayağı '''doğan''']]
===Köken===
{{k|dil=tr|otk}} {{z|otk|togan}}
===Söyleniş===
* {{IPA|dil=tr|[d̪o̞ˈɑn̪]|[d̪o̯ɑn̪]}}
* {{h|dil=tr||do|ğan}}
===Ad===
{{tr-ad}}
# {{t|dil=tr|doğangiller}} [[gündüz yırtıcı kuşları]] ''(Falconiformes)'' takımından ''Falconidae'' ''(doğangiller)'' familyasından ''Falco'' cinsini oluşturan yırtıcı kuş türlerinin ortak adı.
====Çekimleme====
{{tr-ad-tablo}}
====Bilimsel adı====
* [[Falco peregrinus]]
====Eş anlamlılar====
* [[alaca doğan]], [[bayağı doğan]], [[gökdoğan]]
====Üst kavramlar====
* [[doğangiller]]
====Alt kavramlar====
{{Üst|bayağı doğan|tip=alt kavramlar}}
:[[akdoğan]],
:[[bozdoğan]],
:[[çakırdoğan]],
:[[sardoğan]]
{{Alt}}
====Atasözleri====
:[[Doğan anası olma, doğuran anası ol]]
:[[Kutsuz kuşun yuvası doğan yanında olur]]
====Kelime birliktelikleri====
* [[delice doğan]]
====Çeviriler====
{{Üst|bayağı doğan|tip=çeviriler}}
* Almanca: {{ç|de|Falke|m}}
* Azerice: {{ç|az|qızılquş}}
* Danca: {{ç|da|vandrefalk}}, {{ç|da|falk}}
* Ersya dili: {{ç|myv|тев}}
* Fince: {{ç|fi|muuttohaukka}}, {{ç|fi|jalohaukka}}
* Fransızca: {{ç|fr|falconidés}}
* İngilizce: {{ç|en|falcon}}
* İsveççe: {{ç|sv|falk|g}}
* Macarca: {{ç|hu|vándorsólyom}}
* Rusça: {{ç|ru|сокол}}
{{Alt}}
====Ayrıca bakınız====
* {{proje bağlantısı|Vikitür|Falco peregrinus}}
===Kaynakça===
* {{Kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
* {{proje bağlantısı|Vikitür|Falconiformes}}
===Ön ad===
{{tr-ön ad}}
# [[doğmak]]ta [[olan]]
====Zıt anlamlılar====
* [[doğmayan]]
====Atasözleri====
* [[Değirmende doğan sıçan gök gürültüsünden korkmaz]]
==Türkmence==
===Ad===
{{başlık başı|tk|ad}}
# [[kardeş]]
===Kaynakça===
* {{Atacanov, Ata-TYS-1922}}
lufss4036jksej18v83gm5xih5b44sm
5658369
5658368
2026-05-15T22:29:52Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658369
wikitext
text/x-wiki
{{bakınız|Doğan|dogan}}
==Türkçe==
[[Resim:Falco peregrinus nest USFWS free.jpg|küçükresim|150px|Bayağı '''doğan''']]
===Köken===
{{k|dil=tr|otk}} {{z|otk|togan}}
===Söyleniş===
* {{IPA|dil=tr|[d̪o̞ˈɑn̪]|[d̪o̯ɑn̪]}}
* {{h|dil=tr||do|ğan}}
===Ad===
{{tr-ad}}
# {{t|dil=tr|doğangiller}} [[gündüz yırtıcı kuşları]] ''(Falconiformes)'' takımından ''Falconidae'' ''(doğangiller)'' familyasından ''Falco'' cinsini oluşturan yırtıcı kuş türlerinin ortak adı.
====Çekimleme====
{{tr-ad-tablo}}
====Bilimsel adı====
* [[Falco peregrinus]]
====Eş anlamlılar====
* [[alaca doğan]], [[bayağı doğan]], [[gökdoğan]]
====Üst kavramlar====
* [[doğangiller]]
====Alt kavramlar====
{{Üst|bayağı doğan|tip=alt kavramlar}}
:[[akdoğan]],
:[[bozdoğan]],
:[[çakırdoğan]],
:[[sardoğan]]
{{Alt}}
====Atasözleri====
:[[Doğan anası olma, doğuran anası ol]]
:[[Kutsuz kuşun yuvası doğan yanında olur]]
====Kelime birliktelikleri====
* [[delice doğan]]
====Çeviriler====
{{Üst|bayağı doğan|tip=çeviriler}}
* Almanca: {{ç|de|Falke|m}}
* Azerice: {{ç|az|qızılquş}}
* Danca: {{ç|da|vandrefalk}}, {{ç|da|falk}}
* Ersya dili: {{ç|myv|тев}}
* Fince: {{ç|fi|muuttohaukka}}, {{ç|fi|jalohaukka}}
* Fransızca: {{ç|fr|falconidés}}
* İngilizce: {{ç|en|falcon}}
* İsveççe: {{ç|sv|falk|g}}
* Macarca: {{ç|hu|vándorsólyom}}
* Rusça: {{ç|ru|сокол}}
{{Alt}}
====Ayrıca bakınız====
* {{proje bağlantısı|Vikitür|Falco peregrinus}}
===Kaynakça===
* {{Kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
* {{proje bağlantısı|Vikitür|Falconiformes}}
===Ön ad===
{{tr-ön ad}}
# [[doğmak]]ta [[olan]]
====Atasözleri====
* [[Değirmende doğan sıçan gök gürültüsünden korkmaz]]
==Türkmence==
===Ad===
{{başlık başı|tk|ad}}
# [[kardeş]]
===Kaynakça===
* {{Atacanov, Ata-TYS-1922}}
9u8qry8ipj974rnylj059ywshputlav
5658370
5658369
2026-05-15T22:30:04Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658370
wikitext
text/x-wiki
{{bakınız|Doğan|dogan}}
==Türkçe==
[[Resim:Falco peregrinus nest USFWS free.jpg|küçükresim|150px|Bayağı '''doğan''']]
===Köken===
{{k|dil=tr|otk}} {{z|otk|togan}}
===Söyleniş===
* {{IPA|dil=tr|[d̪o̞ˈɑn̪]|[d̪o̯ɑn̪]}}
* {{h|dil=tr||do|ğan}}
===Ad===
{{tr-ad}}
# {{t|dil=tr|doğangiller}} [[gündüz yırtıcı kuşları]] ''(Falconiformes)'' takımından ''Falconidae'' ''(doğangiller)'' familyasından ''Falco'' cinsini oluşturan yırtıcı kuş türlerinin ortak adı.
====Çekimleme====
{{tr-ad-tablo}}
====Bilimsel adı====
* [[Falco peregrinus]]
====Eş anlamlılar====
* [[alaca doğan]], [[bayağı doğan]], [[gökdoğan]]
====Üst kavramlar====
* [[doğangiller]]
====Alt kavramlar====
:[[akdoğan]],
:[[bozdoğan]],
:[[çakırdoğan]],
:[[sardoğan]]
====Atasözleri====
:[[Doğan anası olma, doğuran anası ol]]
:[[Kutsuz kuşun yuvası doğan yanında olur]]
====Kelime birliktelikleri====
* [[delice doğan]]
====Çeviriler====
{{Üst|bayağı doğan|tip=çeviriler}}
* Almanca: {{ç|de|Falke|m}}
* Azerice: {{ç|az|qızılquş}}
* Danca: {{ç|da|vandrefalk}}, {{ç|da|falk}}
* Ersya dili: {{ç|myv|тев}}
* Fince: {{ç|fi|muuttohaukka}}, {{ç|fi|jalohaukka}}
* Fransızca: {{ç|fr|falconidés}}
* İngilizce: {{ç|en|falcon}}
* İsveççe: {{ç|sv|falk|g}}
* Macarca: {{ç|hu|vándorsólyom}}
* Rusça: {{ç|ru|сокол}}
{{Alt}}
====Ayrıca bakınız====
* {{proje bağlantısı|Vikitür|Falco peregrinus}}
===Kaynakça===
* {{Kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
* {{proje bağlantısı|Vikitür|Falconiformes}}
===Ön ad===
{{tr-ön ad}}
# [[doğmak]]ta [[olan]]
====Atasözleri====
* [[Değirmende doğan sıçan gök gürültüsünden korkmaz]]
==Türkmence==
===Ad===
{{başlık başı|tk|ad}}
# [[kardeş]]
===Kaynakça===
* {{Atacanov, Ata-TYS-1922}}
cxszxdkks6v2et95v0f0awwwa7ozwe3
Türkmenistan
0
1400
5658319
5654961
2026-05-15T18:04:12Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658319
wikitext
text/x-wiki
{{bakınız|Turkmenistan|Turkmenistán|Turkménistan|Túrkmenistan}}
==Türkçe==
===Söyleniş===
*{{h|dil=tr|Türk|me|nis|tan}}
===Özel ad===
{{tr-özel ad|k=1}}
[[Dosya:Turkmenistan w1 locator.svg|küçükresim|Türkmenistan'ın haritadaki yeri.]]
# {{t|dil=tr|ülkeler}} [[Orta Asya]]'da bir ülke.
====Çekimleme====
{{tr-ad-tablo}}
====Çeviriler====
{{üst|tip=çeviriler}}
*Almanca: {{ç|de|Turkmenistan}}
*Azerice: {{ç|az|Türkmənistan}}
*Bretonca: {{ç|br|Turkmenistan}}
*Çince: {{ç|zh|土库曼斯坦}}
*Danca: {{ç|da|Turkmenistan}}
*Esperanto dili: {{ç|eo|Turkmenio}}, {{ç|eo|Turkmenistano}}, {{ç|eo|Turkmenujo}}
*Felemenkçe: {{ç|nl|Turkmenistan}}
*Fince: {{ç|fi|Turkmenistan}}
*Fransızca: {{ç|fr|Turkménistan|m}}
*İngilizce: {{ç|en|Turkmenistan}}
*İnterlingua dili: {{ç|ia|Turkmenistan}}
*İspanyolca: {{ç|es|Turkmenistán}}
*İsveççe: {{ç|sv|Turkmenistan}}
*İtalyanca: {{ç|it|Turkmenistan}}
*Japonca: {{ç|ja|トルクメニスタン}} (torukumenisutan)
*Kırgızca: {{ç|ky|Түркмөнстан}}
*Lehçe: {{ç|pl|Turkmenistan}}
*Macarca: {{ç|hu|Türkmenisztán}}
*Portekizce: {{ç|pt|Turquemenistão}}
*Rumence: {{ç|ro|Turkmenistan|n}}
*Rusça: {{ç|ru|Туркменистан|m}}, {{ç|ru|Туркмения|f}}
*Sırp-Hırvatça: {{ç|sh|Туркменистан|m}}, {{ç|sh|Turkmenistan|m}}
*Yunanca: {{ç|el|Τουρκμενιστάν|n}}
{{alt}}}
===Ek okumalar===
*{{proje bağlantısı|vikipedi}}
==Türkmence==
===Özel ad===
{{başlık başı|tk|özel ad}}
#{{t|ülkeler|dil=tk}} Türkmenistan
a60fz8wck3mnv01grifnqnpfush538a
Iraklı
0
1803
5658330
5658008
2026-05-15T19:25:17Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658330
wikitext
text/x-wiki
==Türkçe==
===Ad===
===Söyleniş===
*{{h|dil=tr ||I|rak |lı}}
===Köken===
*{{ek|dil=tr||Irak|lı}}
{{tr-ad}}
# Irak'ta doğmuş veya kökeni Irak'a dayanan kişi.
#*{{mt|dil=tr|dergi=Öküz|başlık=Petrol Yanığı Türkmenlerimiz|yazar=Can YÜCEL|yıl=1997|sayı=37|sayfa=6
|tanıklık=Sisam'a Kuşadası'ndan motorla kaçarken kazaya uğramış onüç '''Iraklı.'''
}}
#*{{kt|başlık=Âşıklar Delidir ya da Yazı Tura|yazar=Ayfer Tunç|yayıncı=Can Sanat Yayınları|yıl=2018|sayfa=57|tanıklık=Hintlilerin, Jamaikalıların, Guatemalalıların, Honduraslıların, Malezyalıların, Endonezyalıların, '''Iraklıların''', Pakistanlıların, Tayvanlıların, Etiyopyalıların, Namibyalıların, kısacası şansın ve iyiliğin uğramayı reddettiği ve her türlü düzenin dışlandığı insanların yaşadığı mahallelerde belaya bulaşmak istiyordum.|dil=tr}}
====Çekimleme====
{{tr-ad-tablo}}
====Çeviriler====
*İngilizce: [[:en:Iraqi|Iraqi]]
6osp772w330vtcewxly3gfush15d14i
onur
0
5012
5658311
5253679
2026-05-15T17:26:29Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658311
wikitext
text/x-wiki
ONUR,öz saygı, saygılı anlayış,hakkaniyetli davranış,irade
==Türkçe==
===Köken===
{{k|fr|dil=tr}} {{z|fr|honneur}}
===Söyleniş===
* {{h||o|nur|dil=tr}}
===Ad===
{{tr-ad}}
# [[insan]]ın kendine karşı duyduğu [[saygı]], [[öz saygı]]
# başkalarının gösterdiği saygının dayandığı kişisel değer
#:''Çokbilmiş görünmek, '''onuruna''' toz kondurmak istemez.'' - T. Buğra
====Eş anlamlılar====
* [[şeref]]
* {{mânâ|başkalarının gösterdiği saygının dayandığı kişisel değer}} [[itibar]]
* {{mânâ|insanın kendine karşı duyduğu saygı}} [[haysiyet]], [[izzetinefis]]
====Sözcük birliktelikleri====
* {{mânâ|haysiyet, izzetinefis}} [[onur belgesi]], [[onur kıtası]], [[onur kurulu]], [[onur üyesi]]
====Çeviriler====
{{üst|onur: haysiyet, izzetinefis|tip=çeviriler}}
*Almanca: {{ç|de|Ehre|f}}
*Azerice: {{ç|az|heysiyyət}}
*Çekçe: {{ç|cs|čest|f}}
*Fince: {{ç|fi|kunnia}}
*Fransızca: {{ç|fr|honneur}}
* İbranice: {{ç|he|כבוד|tr=kavod}}
*İngilizce: {{ç|en|honour}}
*Kürtçe: {{ç|ku|onur}}
*Macarca: {{ç|hu|tisztelet}}
{{alt}}
===Kaynakça===
* {{kaynak-TDK}}
t01jdnuso23rlyc127jimzj38ozvaww
Deniz
0
6381
5658363
5266847
2026-05-15T22:14:54Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658363
wikitext
text/x-wiki
{{bakınız|deniz|deñiz|deňiz}}
==Türkçe==
===Köken===
{{devralınan|tr|ota|دكز|دڭز}}. {{z|otk|Tengiz}} [[isim|isminin]] zamanla yumuşayarak bugünkü [[hâl]]ini almasıyla kızlarada konulan bir isim olmuştur.
===Söyleniş===
* {{IPA|dil=tr|/de.ˈniz/}}
* {{h|dil=tr||De|niz}}
===Özel ad===
{{tr-özel ad|k=1}}{{özel çoğul|tr|e}}
# {{özel ad|dil=tr|erkek ismi|kız ismi|mânâ=[[deniz|Deniz]]}}
#: {{eş anlamlılar|tr|Dalay}}
====Çekimleme====
{{tr-ad-tablo|k=1}}
i2t9yzx9gdsdzvb1u4zalqkfnmrec96
5658364
5658363
2026-05-15T22:15:15Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658364
wikitext
text/x-wiki
{{bakınız|deniz|deñiz|deňiz}}
==Türkçe==
===Köken===
{{devralınan|tr|ota|دكز|دڭز}}. {{z|otk|Tengiz}} [[isim|isminin]] zamanla yumuşayarak bugünkü [[hâl]]ini almasıyla kızlarada konulan bir isim olmuştur.
===Söyleniş===
* {{IPA|dil=tr|/de.ˈniz/}}
* {{h|dil=tr||De|niz}}
===Özel ad===
{{tr-özel ad|k=1}}{{özel çoğul|tr|e}}
# {{özel ad|dil=tr|erkek ismi|kız ismi|mânâ=[[deniz|Deniz]]}}
#: {{eş anlamlılar|tr|Dalay}}
====Çekimleme====
{{tr-ad-tablo}}
dxnyivv5agcrfagajqlwlekbbw8c2oy
Türkiye Türkçesi
0
7814
5658316
4278681
2026-05-15T17:53:15Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658316
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
* {{IPA|dil=tr|/ˈtyɾ.ci.je tyrk.t͡che.si/}}
* {{h|dil=tr||Tür|ki|ye Türk|çe|si}}
===Özel ad===
{{tr-özel ad}}
# {{t|dil=tr|dil bilimi}} [[Türkiye]]'de, [[Balkanlar]]'da, [[Avrupa]]'da, [[Kuzey Kıbrıs Türk Cumhuriyeti]]'nde, [[Irak]] ve [[Suriye]]'nin bazı bölgelerinde kullanılan [[Türk dili]].
====Çekimleme====
{{tr-ad-tablo}}
====Kısaltmalar====
* {{b|tr|TT}}
====Eş anlamlılar====
* [[Türkçe]]
====Çekimleme====
{{üst|Türkiye Türkçesi|tip=çeviriler}}
* Almanca: {{ç|de|Türkeitürkisch|n}}
{{alt}}
===Kaynakça===
* {{kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|dil=tr|Vikipedi}}
9n3j762lokij4xitaaebfdmuiyrnpzl
Osmanlı Türkçesi
0
8776
5658315
5658001
2026-05-15T17:48:46Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658315
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
* {{IPA|dil=tr|/os.ˈman.lɯ tyrk.t͡ʃe.si/|/os.ˈman.lɯ tyrk.t͡ʃe.ˈsi/}}
* {{h|dil=tr||Os|man|lı Türk|çe|si}}
===Köken===
*{{birleşik|dil=tr|Osmanlı|Türkçe}}
===Özel ad===
{{tr-özel ad}}
[[Dosya:Letâif-i hikâyât ve garâib-i rivayât, cild-i evvel.jpg|küçükresim|Osmanlı Türkçesi bir metin.]]
# {{t|dil=tr|diller}} XIV-XX. yüzyıllar arasında Anadolu'da ve Osmanlı Devleti'nin yayıldığı ülkelerde kullanılmış olan konuşma ve yazı dili; [[Osmanlıca]].
===Ön ad===
{{tr-ön ad}}
# Bu dille yazılmış olan.
====Çeviriler====
{{tr-ad-tablo}}
====Çeviriler====
{{Üst|eski bir Türk dili|tip=çeviriler}}
* Almanca: {{ç|de|Osmanische Sprache|f}}
* Arapça: {{ç|ar|اَلْعُثْمَانِيَّة|f}}, {{ç|ar|اَلتُّرْكِيَّة الْعُثْمَانِيَّة|f}}
* Azerbaycanca: {{ç|az|osmanlı dili}}, {{ç|az|osmanlı türkcəsi}}
* Bulgarca: {{ç|bg|османски турски}}, {{ç|bg|османо-турски}}
* Çince:
*: Mandarin: {{ç|cmn|奧斯曼土耳其語|sc=Hani}}, {{ç|cmn|奥斯曼土耳其语|tr=Àosīmàn Tǔ'ěrqíyǔ|sc=Hani}}
* Ermenice: {{ç|hy|տաճկերեն}}, {{ç|hy|օսմաներեն}}
* Farsça: {{ç|fa|ترکی عثمانی}}
* Fransızca: {{ç|fr|turc osmanli}}
* İngilizce: {{ç|en|Ottoman Turkish}}
* İspanyolca: {{ç|es|turco otomano}}
* İsveççe: {{ç|sv|osmanska|g}}, {{ç|sv|ottomanska|g}}
* Japonca: {{ç|ja|オスマン語|tr=Osuman-go|sc=Jpan}}
* Kazakça: {{ç|kk|османлы түрік тілі}}, {{ç|kk|османлы түрікшесі}}
* Lehçe: {{ç|pl|język osmańsko-turecki|m}}
* Makedonca: {{ç|mk|отомански турски}}
* Portekizce: {{ç|pt|turco otomano|m}}
* Rusça: {{ç|ru|осма́нский язы́к|m}}, {{ç|ru|осма́нский|m}}, {{ç|ru|осма́нско-туре́цкий|m}}
* Sırp-Hırvatça:
*: Kiril: {{ç|sh|османлијски турски|m}}, {{ç|sh|отомански турски|m}}
*: Latin: {{ç|sh|osmanlijski turski|m}}, {{ç|sh|otomanski turski|m}}
* Tâcikçe: {{ç|tg|забони усмонӣ|sc=Cyrl}}
* Türkçe:
*: Osmanlı Türkçesi: {{ç|ota|عثمانلیجه}}, {{ç|ota|لسان عثمانی}}
* Urduca: {{ç|ur|عثمانی|tr='usmānī}}
* Yunanca:
*: Modern Yunanca: {{ç|el|οθωμανικά τουρκικά|n-p}}
{{Alt}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
===Kaynakça===
* {{Kaynak-TDK}}
ql7blxiea3k7me2kk1h21rrzponjm6y
QTE
0
15090
5658418
4170124
2026-05-16T05:15:43Z
MustafaCavlak
59368
/* İngilizce */
5658418
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{en-ad}}
# {{t|dil=en|video oyunları}} {{kısaltma|dil=en|quick time event}}
82c2sq9zf7eztwc4pwhmge049eu6yz9
İngiliz İngilizcesi
0
51720
5658325
4081807
2026-05-15T18:27:38Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658325
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
* {{IPA|dil=tr|[ɪn.ɡɪ.ˈɫɪz ɪn.ɡɪ.ɫɪz.d͡ʒe.si]}}
* {{h|dil=tr||İn|gi|liz İn|gi|liz|ce|si}}
===Özel ad===
{{tr-özel ad|baş=[[İngiliz]] [[İngilizce]]si}}
# {{t|diller|dil=tr}} [[İngiltere]]'de konuşulan [[Yüksek İngilizce]]
====Çekimleme====
{{tr-ad-tablo}}
====Üst kavramlar====
* [[Britanya İngilizcesi]]
====Çeviriler====
{{Üst|dil adı|tip=çeviriler}}
* Fince: {{ç|fi|englanninenglanti}}
* İngilizce: {{ç|en|British English}}
* İtalyanca: {{ç|it|inglese britannico|m}}
{{Alt}}
===Kaynakça===
* {{Kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
i7muhfxb6jl39r2gmc4ma9yyzme58w3
connexion
0
60723
5658340
4442901
2026-05-15T19:58:34Z
MustafaCavlak
59368
/* Fransızca */
5658340
wikitext
text/x-wiki
==Fransızca==
===Köken===
{{kökenli|fr|la|cōnexiō|cōnexiōnem}}. Morfolojik olarak: {{ek|dil=fr|connecter|xion}}.
===Söyleniş===
* {{fr-IPA}}
* {{ses|dil=fr|LL-Q150 (fra)-Lepticed7-connexion.wav}}
* {{ses|dil=fr|LL-Q150 (fra)-LoquaxFR-connexion.wav}}
* {{ses|dil=fr|LL-Q150 (fra)-Mecanautes-connexion.wav}}
* {{ses|dil=fr|LL-Q150 (fra)-Poslovitch-connexion.wav}}
===Ad===
{{fr-ad|d}}
# [[bağlantı]]
cmzgtniwni87aau0lti18f379fuw4kk
şalgam
0
123799
5658360
5259970
2026-05-15T21:59:18Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658360
wikitext
text/x-wiki
{{bakınız|Şalgam}}
==Türkçe==
====Yazılışlar====
: {{l|ota|[[شلغم]]}}
===Köken===
# {{k|dil=tr|fa}}
===Heceleme===
* {{h|dil=tr||şal|gam}}
===Ad===
{{tr-ad}}
[[File:Brassica rapa - April 2023 - Sarah Stierch 01.jpg|küçükresim|Şalgam (1)]]
[[Dosya:Brassica rapa turnip.jpg|küçükresim|Şalgam (2)]]
# {{t|dil=tr|turpgiller}} Turpgillerden, yumru köklü bir bitki {{belirtici|Brassica rapa}}.
# {{t|dil=tr|sebzeler}} Bu bitkinin insan ve hayvanlar için besin olarak kullanılan etli ve tatlı kökü.
# {{t|dil=tr|içecekler}} [[şalgam suyu]]
#*{{mt|dil=tr|dergi=Öküz|başlık=İnönü - Churchill Buluşması ve DSİ Meselesi|yazar=Ekrem Galip YALINER|yıl=1997|sayı=37|sayfa=25
|tanıklık= Halkına yalnızca kan ve gözyaşı vaadetmiş olan '''Churchill''', pek hoşuna giden şalgamdan bardak bardak götürüyordu. }}
====Atasözleri====
* [[aptal ata binerse bey oldum sanır, şalgam aşa girerse yağ oldum sanır]]
* [[anan turp baban şalgam sen nereden çıktın gülbeşeker]]
====Türetilmiş kavramlar====
[[şalgam suyu]], [[küçük şalgam]], [[şeytan şalgamı]], [[yağ şalgamı]]
====Çeviriler====
{{üst|tip=çeviriler}}
*Almanca: {{ç|de|Speiserübe|f}}, {{ç|de|Mairübe|f}}
*Arapça: {{ç|ar|لفت}}
*Azerice: {{ç|az|şalgam}}
*Eski Türkçe: {{ç|otk|çagmur}}, {{ç|otk|çamgur}}
*Estonca: {{ç|et|naeris}}
*Farsça: {{ç|fa|شلغم}}
*Fince: {{ç|fi|nauris}}, {{ç|fi|naurismehu}}
*Fransızca: {{ç|fr|navet}}
*İngilizce: {{ç|en|turnip}}
* İspanyolca: {{ç|es|nabo|e}}
*İsveççe: {{ç|sv|majrova}}, {{ç|sv|rova}}
*İtalyanca: {{ç|it|rapa|f}}
*Japonca: {{ç|ja|蕪}}, {{ç|ja|カブ}} [kabu]
*Kürtçe: {{ç|ku|şêlim}}
* Macarca: {{ç|hu|fehérrépa}}
*Şorca: {{ç|cjs|шалған}} [şalğan]
*Urduca: {{ç|ur|شلغم}}
{{alt}}
===Kaynakça===
{{kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|vikipedi}}
* {{proje bağlantısı|vikitür|Brassica rapa}}
==Azerice==
===Ad===
{{başlık başı|az|ad}}
# {{t|turpgiller|sebzeler|sebzeler|dil=az}} şalgam
qbqqlbsb22d5oeel1hxizi5bjozuexq
5658361
5658360
2026-05-15T22:00:06Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658361
wikitext
text/x-wiki
{{bakınız|Şalgam}}
==Türkçe==
====Yazılışlar====
: {{l|ota|[[شلغم]]}}
===Köken===
# {{k|dil=tr|fa}}
===Heceleme===
* {{h|dil=tr||şal|gam}}
===Ad===
{{tr-ad}}
[[File:Brassica rapa - April 2023 - Sarah Stierch 01.jpg|küçükresim|Şalgam (1)]]
[[Dosya:Brassica rapa turnip.jpg|küçükresim|Şalgam (2)]]
# {{t|dil=tr|turpgiller}} Turpgillerden, yumru köklü bir bitki {{belirtici|Brassica rapa}}.
# {{t|dil=tr|sebzeler}} Bu bitkinin insan ve hayvanlar için besin olarak kullanılan etli ve tatlı kökü.
# {{t|dil=tr|içecekler}} [[şalgam suyu]]
#*{{mt|dil=tr|dergi=Öküz|başlık=İnönü - Churchill Buluşması ve DSİ Meselesi|yazar=Ekrem Galip YALINER|yıl=1997|sayı=37|sayfa=25
|tanıklık= Halkına yalnızca kan ve gözyaşı vaadetmiş olan Churchill, pek hoşuna giden '''şalgamdan''' bardak bardak götürüyordu. }}
====Atasözleri====
* [[aptal ata binerse bey oldum sanır, şalgam aşa girerse yağ oldum sanır]]
* [[anan turp baban şalgam sen nereden çıktın gülbeşeker]]
====Türetilmiş kavramlar====
[[şalgam suyu]], [[küçük şalgam]], [[şeytan şalgamı]], [[yağ şalgamı]]
====Çeviriler====
{{üst|tip=çeviriler}}
*Almanca: {{ç|de|Speiserübe|f}}, {{ç|de|Mairübe|f}}
*Arapça: {{ç|ar|لفت}}
*Azerice: {{ç|az|şalgam}}
*Eski Türkçe: {{ç|otk|çagmur}}, {{ç|otk|çamgur}}
*Estonca: {{ç|et|naeris}}
*Farsça: {{ç|fa|شلغم}}
*Fince: {{ç|fi|nauris}}, {{ç|fi|naurismehu}}
*Fransızca: {{ç|fr|navet}}
*İngilizce: {{ç|en|turnip}}
* İspanyolca: {{ç|es|nabo|e}}
*İsveççe: {{ç|sv|majrova}}, {{ç|sv|rova}}
*İtalyanca: {{ç|it|rapa|f}}
*Japonca: {{ç|ja|蕪}}, {{ç|ja|カブ}} [kabu]
*Kürtçe: {{ç|ku|şêlim}}
* Macarca: {{ç|hu|fehérrépa}}
*Şorca: {{ç|cjs|шалған}} [şalğan]
*Urduca: {{ç|ur|شلغم}}
{{alt}}
===Kaynakça===
{{kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|vikipedi}}
* {{proje bağlantısı|vikitür|Brassica rapa}}
==Azerice==
===Ad===
{{başlık başı|az|ad}}
# {{t|turpgiller|sebzeler|sebzeler|dil=az}} şalgam
qoxi9581xtllvhn5uyt35le09cit2r8
Taygun
0
125854
5658365
5261195
2026-05-15T22:23:33Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658365
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{farklı|tr|Toygun}}
===Söyleniş===
* {{IPA|dil=tr|/de.ˈniz/}}
* {{h|dil=tr||De|niz}}
===Özel ad===
{{tr-özel ad|k=1}}
# {{özel ad|dil=tr|erkek ismi}}
#*{{mt|dil=tr|dergi=Öküz|başlık=Dostlar Sitesi|yazar=Can BARSLAN|yıl=1997|sayı=37|sayfa=27
|tanıklık= '''Taygun'la''' kısa bir telefon görüşmesi yaptım.. O da bugün hasta anneannesini ziyarete gideceğini ve ona çok sevdiği Hindistan cevizli keklerden birkaç dilim götüreceğini söyledi..}}
====Çekimleme====
{{tr-ad-tablo}}
===Kaynakça===
*{{KYK:Nişanyan Adlar}}
* {{Yurtsever-TAD-1997}}
gey39zcda5b34wxermi7r2k2swplj7w
5658366
5658365
2026-05-15T22:23:52Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658366
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{farklı|Toygun}}
===Söyleniş===
* {{IPA|dil=tr|/de.ˈniz/}}
* {{h|dil=tr||De|niz}}
===Özel ad===
{{tr-özel ad|k=1}}
# {{özel ad|dil=tr|erkek ismi}}
#*{{mt|dil=tr|dergi=Öküz|başlık=Dostlar Sitesi|yazar=Can BARSLAN|yıl=1997|sayı=37|sayfa=27
|tanıklık= '''Taygun'la''' kısa bir telefon görüşmesi yaptım.. O da bugün hasta anneannesini ziyarete gideceğini ve ona çok sevdiği Hindistan cevizli keklerden birkaç dilim götüreceğini söyledi..}}
====Çekimleme====
{{tr-ad-tablo}}
===Kaynakça===
*{{KYK:Nişanyan Adlar}}
* {{Yurtsever-TAD-1997}}
8ogg718pub7vnpa4ev04rgf0vf0oj17
Toygun
0
125941
5658367
5261273
2026-05-15T22:27:59Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658367
wikitext
text/x-wiki
==Türkçe==
===Köken===
*{{k|ota|dil=tr}}, o da [[Eski Türkçe]]'de [[doğan]] sözcüğünün varyantı.
===Söyleniş===
* {{h|dil=tr||Toy|gun}}
===Özel ad===
{{tr-özel ad}}
# {{özel ad|dil=tr|erkek ismi}}
====Çekimleme====
{{tr-ad-tablo}}
===Kaynakça===
*{{KYK:Nişanyan Adlar}}
* {{Yurtsever-TAD-1997}}
ihi6tev7x7s5hpsij3qlr439fkk0t92
çorap
0
127863
5658309
5642274
2026-05-15T17:15:14Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658309
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{devralınan|tr|ota|چوراب|ç=çorap, çorab}}, {{kökenli|tr|fa|جوراب|ç=jôrâb}}.
===Söyleniş===
* {{IPA|dil=tr|/tʃoˈɾap/|[t̠̠͡ʃo̞ʷˈɾɑp]}}
* {{ses|dil=tr|LL-Q256 (tur)-ToprakM-çorap.wav}}
* {{h|dil=tr||ço|rap}}
===Ad===
[[File:Sock size owner.jpg|küçükresim|Çorap]]
{{tr-ad}}
# {{t|dil=tr|ayak giyimi}} pamuk, yün vb.nden örülen, ayağa giyilen giyecek
#*''Varlıklı kadın ve erkekler naylon çorap giyiyorlardı.'' - Ayla Kutlu
====Deyimler====
[[çorap kaçmak]], [[çorap söküğü gibi gitmek]], [[çorap söküğü gibi gelmek]]
===Çekimleme===
{{tr-ad-tablo}}
====Türetilmiş kavramlar====
[[külotlu çorap]], [[soket çorap]], [[varis çorabı]]
====Çeviriler====
{{Üst|tip=çeviriler}}
*Almanca: {{ç|de|Strumpf|m}}
*Arnavutça: {{ç|sq|çorap}}
*Baskça: {{ç|eu|galtzerdi}}
*Danca: {{ç|da|strømpe}}
*Ermenice: {{ç|hy|գուլպա}}
*Estonca: {{ç|et|sokk}}
*Farsça: {{ç|fa|جوراب}}
*Felemenkçe: {{ç|nl|sok}}, {{ç|nl|kous}}
*Fince: {{ç|fi|sukka}}, {{ç|fi|sukkapari}}
*Fransızca: {{ç|fr|chaussette}}
*İngilizce: {{ç|en|stocking}}
*İspanyolca: {{ç|es|calcetín}}
*İsveççe: {{ç|sv|strumpa}}, {{ç|sv|socka}}
*Kırım Tatarcası: {{ç|crh|çorap}}
*Letonca: {{ç|lv|zeķes}}
*Macarca: {{ç|hu|zokni}}, {{ç|hu|harisnya}}
*Özbekçe: {{ç|uz|paypoq}}
*Portekizce: {{ç|pt|meia}}
*Rusça: {{ç|ru|чулок}}, {{ç|ru|носок}}
*Sırp-Hırvatça: {{ç|sh|čarapa|f}}
*Yunanca: {{ç|el|κάλτσα|d}}
{{Alt}}
===Kaynakça===
* {{kaynak-TDK}}
==Gagavuzca==
===Köken===
{{kökenli|gag|fa|جوراب}}
===Ad===
{{başlık başı|gag|ad}}
# çorap
krkin7rgo31en64an63d0d2657hisvw
холодный
0
131773
5658433
3797477
2026-05-16T07:31:41Z
MustafaCavlak
59368
/* Rusça */
5658433
wikitext
text/x-wiki
==Rusça==
===Ön ad===
{{ru-ön ad|холо́дный}}
# [[soğuk]]
pmst9obnaebzfh38eelmrb914bo4q3a
ナイフ
0
140760
5658425
4533730
2026-05-16T06:48:22Z
MustafaCavlak
59368
/* Japonca */
5658425
wikitext
text/x-wiki
==Japonca==
{{vikipedi|dil=ja}}
===Söyleniş===
{{ja-söyleniş|ak=1|ak_kaynak=DJR}}
===Ad===
{{ja-ad}}
# [[bıçak]]
===Kaynakça===
{{kaynakça}}
npty3b2i671stxgkyivwj337362um99
høka
0
154142
5658296
4439914
2026-05-15T15:27:34Z
MustafaCavlak
59368
/* Faroe dili */
5658296
wikitext
text/x-wiki
==Faroe dili==
===Köken===
{{devralınan|fo|non|haka}}.
===Söyleniş===
* {{IPA|dil=fo|/ˈhøːʰka/}}
===Ad===
{{fo-ad|d|høku|høkur}}
# {{t|dil=fo|anatomi}} [[çene]]
====Çekimleme====
{{fo-çekim-ad-d1|høk}}
4dmirpfv45yc051vayqwfywaba689ul
ceremony
0
162058
5658570
4433421
2026-05-16T11:19:42Z
MustafaCavlak
59368
/* İngilizce */
5658570
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{en-ad|ceremonies}}
# [[seremoni]], [[tören]]
iu0gf5fm680l1y24lbakbuouxhf1v33
5658571
5658570
2026-05-16T11:21:10Z
MustafaCavlak
59368
/* İngilizce */
5658571
wikitext
text/x-wiki
==İngilizce==
===Köken===
{{devralınan|en|enm|cerymonye}}, {{kökenli|en|la|caerimonia}}.
===Ad===
{{en-ad|~|ceremonies}}
# [[seremoni]], [[tören]]
814ksq3l83jvsc35lp3x0z4soktyq68
symptom
0
162774
5658578
4518419
2026-05-16T11:35:00Z
MustafaCavlak
59368
/* İngilizce */
5658578
wikitext
text/x-wiki
==İngilizce==
===Köken===
{{devralınan|en|enm|sinthoma}}, {{köken|dil=en|la-med}} {{z|la|sinthoma}} sözcüğünden, {{köken|dil=en|LL.}} {{z|la|symptoma}} sözcüğünden, {{kökenli|en|grc|σύμπτωμα}}.
===Ad===
{{en-ad}}
# {{terim|dil=en|tıp}} [[semptom]], [[belirti]]
gm6lzbrt58nv77drk2es3wl352jcf1d
portre
0
173103
5658454
5263871
2026-05-16T08:28:59Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658454
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{k|dil=tr|fr}} {{ç|fr|portrait}}
===Ad===
{{tr-ad}}
{{Vikipedi}}
# bir [[kişi]]nin [[yağlı boya]], [[sulu boya]], [[kara kalem]] vb. bir yolla [[yapılmış]] [[resim|resmi]], [[fotoğraf]]
#:''Biri ötekinin portresini yapıyor, biri kitap okuyor ve öteki notlar alıyor.'' - P. Safa
# {{t|dil=tr|edebiyat}} bir kişinin, [[bir şey|bir şeyin]] [[sözlü]] veya [[yazılı tasviri]]
#:''Milliyet'in eski pazar eklerinde on beş hafta boyu portreler yazmıştım.'' - H. Taner
====Deyimler====
[[fiziki portre]],
[[ruhsal portre]]
====Çeviriler====
{{üst|tip=çeviriler}}
*Fince: {{ç|fi|potretti}}
*İngilizce: {{ç|en|portrait}}
{{alt}}
===Kaynakça===
* {{kaynak-TDK}}
3d7y0nx5bnd4q4q711d7e2b81gswvny
5658461
5658454
2026-05-16T08:34:43Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658461
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{k|dil=tr|fr}} {{ç|fr|portrait}}
===Söyleniş===
*{{h|dil=tr||port|re}}
===Ad===
{{tr-ad}}
[[File:Nla.obj-138933635-1.jpg|küçükresim|Bir portre örneği. (1)]]
#{{t|dil=tr|resim}} Bir kimsenin yağlı boya, sulu boya, kara kalem vb. bir yolla yapılmış resmi.
#*{{kt|başlık=Kürk Mantolu Madonna|yazar=Sabahattin Ali|yayıncı=Remzi Kitabevi|yıl=1943|vikikaynak=Sayfa:Kürk Mantolu Madonna.djvu/55|dil=tr
|sayfa=55
|tanıklık= Yalnız orada, kürk mantolu bir kadın '''portresinin''' önünde, mıhlanmış gibi durduğumu hatırlıyorum.
}}
# {{t|dil=tr|edebiyat}} Bir kimsenin, bir şeyin sözlü veya yazılı tasviri.
#*''Milliyet'in eski pazar eklerinde on beş hafta boyu portreler yazmıştım.'' - H. Taner
====Çeviriler====
{{üst|tip=çeviriler}}
*Fince: {{ç|fi|potretti}}
*İngilizce: {{ç|en|portrait}}
{{alt}}
===Kaynakça===
* {{kaynak-TDK}}
ltn572ni8z2im2mbcje2asngqodlppn
5658463
5658461
2026-05-16T08:35:08Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658463
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{k|dil=tr|fr}} {{ç|fr|portrait}}
===Söyleniş===
*{{h|dil=tr||port|re}}
===Ad===
{{tr-ad}}
[[File:Nla.obj-138933635-1.jpg|küçükresim|Bir portre örneği. (1)]]
#{{t|dil=tr|resim}} Bir kimsenin yağlı boya, sulu boya, kara kalem vb. bir yolla yapılmış resmi.
#*{{kt|başlık=Kürk Mantolu Madonna|yazar=Sabahattin Ali|yayıncı=Remzi Kitabevi|yıl=1943|vikikaynak=Sayfa:Kürk Mantolu Madonna.djvu/55|dil=tr
|sayfa=55
|tanıklık= Yalnız orada, kürk mantolu bir kadın '''portresinin''' önünde, mıhlanmış gibi durduğumu hatırlıyorum.
}}
# {{t|dil=tr|edebiyat}} Bir kimsenin, bir şeyin sözlü veya yazılı tasviri.
#*''Milliyet'in eski pazar eklerinde on beş hafta boyu portreler yazmıştım.'' - H. Taner
===Çekimleme===
{{tr-ad-tablo}}
====Çeviriler====
{{üst|tip=çeviriler}}
*Fince: {{ç|fi|potretti}}
*İngilizce: {{ç|en|portrait}}
{{alt}}
===Kaynakça===
* {{kaynak-TDK}}
fglggurde11bgpjqnytlg3q1xkubzvb
guru
0
256506
5658353
3945517
2026-05-15T21:45:20Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658353
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
*{h|dil=tr||gu|ru}}
===Köken===
:{{k|sa|dil=tr}}
===Ad===
{{tr-ad}}
# {{t|Budizm|Hinduizm|Sihizm|dil=tr}} Brahmacı eğitimde yüksek kasttan gençleri ve öğrencileri yetiştiren, manevî gücünün en [[yüksek]] noktada olduğuna inanılan [[kimse]]
#*{{mt|dil=tr|dergi=Öküz|başlık=Gerçeği Arayanlar|yazar=İhsan Oktay ANAR|yıl=1997|sayı=37|sayfa=17
|tanıklık=Aradığı şey herhalde ülkesinde olmadığı için, bunlar dan biri kalkıp ta Tibet'e kadar giderek bir '''guru''' ile tanışmış, fakat geri dönerken İran'da cüzdanını çarptırmıştı.
}}
# [[pir]]
====Çeviriler====
{{üst|guru|tip=çeviriler}}
*Almanca: {{ç|de|Guru|m}}
*İngilizce: {{ç|en|guru}}
{{alt}}
29utweqwdw8l8ue110hu72cju2wqzt4
5658354
5658353
2026-05-15T21:45:26Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658354
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
*{{h|dil=tr||gu|ru}}
===Köken===
:{{k|sa|dil=tr}}
===Ad===
{{tr-ad}}
# {{t|Budizm|Hinduizm|Sihizm|dil=tr}} Brahmacı eğitimde yüksek kasttan gençleri ve öğrencileri yetiştiren, manevî gücünün en [[yüksek]] noktada olduğuna inanılan [[kimse]]
#*{{mt|dil=tr|dergi=Öküz|başlık=Gerçeği Arayanlar|yazar=İhsan Oktay ANAR|yıl=1997|sayı=37|sayfa=17
|tanıklık=Aradığı şey herhalde ülkesinde olmadığı için, bunlar dan biri kalkıp ta Tibet'e kadar giderek bir '''guru''' ile tanışmış, fakat geri dönerken İran'da cüzdanını çarptırmıştı.
}}
# [[pir]]
====Çeviriler====
{{üst|guru|tip=çeviriler}}
*Almanca: {{ç|de|Guru|m}}
*İngilizce: {{ç|en|guru}}
{{alt}}
ieoogm15b54v4ie8zs2lqh86340z00s
5658355
5658354
2026-05-15T21:45:43Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658355
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
*{{h|dil=tr||gu|ru}}
===Köken===
:{{k|sa|dil=tr}}
===Ad===
{{tr-ad}}
# {{t|Budizm|Hinduizm|Sihizm|dil=tr}} Brahmacı eğitimde yüksek kasttan gençleri ve öğrencileri yetiştiren, manevî gücünün en [[yüksek]] noktada olduğuna inanılan [[kimse]]
#*{{mt|dil=tr|dergi=Öküz|başlık=Gerçeği Arayanlar|yazar=İhsan Oktay ANAR|yıl=1997|sayı=37|sayfa=17
|tanıklık=Aradığı şey herhalde ülkesinde olmadığı için, bunlardan biri kalkıp ta Tibet'e kadar giderek bir '''guru''' ile tanışmış, fakat geri dönerken İran'da cüzdanını çarptırmıştı.
}}
# [[pir]]
====Çeviriler====
{{üst|guru|tip=çeviriler}}
*Almanca: {{ç|de|Guru|m}}
*İngilizce: {{ç|en|guru}}
{{alt}}
0mhfszeg244muqkxap0oqs89a1nkpyw
İzmirli
0
285903
5658334
4509743
2026-05-15T19:42:59Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658334
wikitext
text/x-wiki
==Türkçe==
===Özel ad===
{{tr-özel ad|k=1}}
{{tr-ad}}
# [[İzmir]] ilinden olan kimse.
====Söyleniş====
:{{IPA|dil=tr|/ˈizmiɾli/}}, {{ç.}} {{IPA|dil=tr|/ˈizmiɾliˈleɾ/}}
====Çekimleme====
{{tr-ad-tablo}}
====Köken====
{{ek|dil=tr|İzmir|li}}
hg4ix91ut4s76shm50iyoq6o6yrions
Giresunlu
0
285954
5658333
5633876
2026-05-15T19:42:41Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658333
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
* {{h|dil=tr||Gi|re|sun|lu}}
===Özel ad===
{{tr-özel ad|k=1}}
# [[Giresun]] ilinden olan kimse.
#*{{kt|dil=tr|başlık=Huzur|yazar=Ahmet Hamdi TANPINAR|yayıncı=Dergâh Yayınları|yıl=2022|baskı=39|sayfa=143|tanıklık=Mümtaz, Rizeli Sadık'a, '''Giresunlu''' Remzi'ye, yedi cet Hisarlı Arap Nuri'ye, Bebekli Yani'ye bu düşüncelerin arasından bir zaman baktı.}}
====Çekimleme====
{{tr-ad-tablo}}
===Kaynakça===
* {{KYK:TDK}}
dy9bymr3it3ffisheaq08xy33edhkam
Konyalı
0
285962
5658336
5634825
2026-05-15T19:54:51Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658336
wikitext
text/x-wiki
==Türkçe==
===Özel ad===
{{tr-özel ad|k=1}}
#[[Konya]] ilinden olan kimse.
#*{{kt|başlık=Altın Ekin|yazar=Ümit KAFTANCIOĞLU|yayıncı=Dinozor Genç|yıl=2022|tanıklık=Amcam beni '''Konyalı''' buğday tüccarına verdi.|sayfa=105|dil=tr}}
====Çekimleme====
{{tr-ad-tablo}}
6qs94mlgdr5kd00bgvcenegegng6wtd
Siirtli
0
285969
5658337
5635997
2026-05-15T19:56:44Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658337
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{ek|dil=tr|Siirt|li}}
===Söyleniş===
* {{IPA|dil=tr|/ˈsi.ˤiɾt.ɫi/}}
* {{h|dil=tr||Si|irt|li}}
===Özel ad===
{{tr-özel ad|k=1}}
# {{t|dil=tr|milletler}} [[Siirt]] ilinde doğmuş veya yaşayan kimse.
#*{{kt|başlık=Dünyanın Bütün Karıncaları|yazar=Cabir ÖZYILDIZ|yayıncı=Vacilando Kitap |yıl=2025|sayfa=59|tanıklık=Sokaklar parsellenmiş. Önce gelen, en cevval olan kendi küçük egemenliğini kurmuş. Şu sokakta Çermikliler, orada '''Siirtliler''', öteki tarafta Urfa Arapları, berikinde Çingenler kümelenmiş.|dil=tr}}
====Çekimleme====
{{tr-ad-tablo}}
===Kaynakça===
* {{Kaynak-TDK}}
1c1a1s3u5b8rm1z4bb3gk91jkuiz61x
Moldovalı
0
293475
5658339
4340164
2026-05-15T19:57:42Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658339
wikitext
text/x-wiki
==Türkçe==
===Özel ad===
{{tr-özel ad|k=1}}
# [[Moldova]] halkından olan kimse.
====Çekimleme====
{{tr-ad-tablo}}
5q4f3o84r3yba5di0e4n9lgt7ty2vf9
şalgam suyu
0
295245
5658358
5345465
2026-05-15T21:53:51Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658358
wikitext
text/x-wiki
==Türkçe==
===Heceleme===
* {{h|dil=tr||şal|gam|su|yu}}
===Köken===
*{{birleşik|dil=tr|şalgam|su}}
===Ad===
{{tr-ad}}
[[Dosya:Yeni3.jpg|küçükresim|Şalgam suyu]]
# {{t|dil=tr|içecekler}} Doğranmış şalgam, havuç ile bulgur, su ve tuz kullanılarak yapılan bir içecek; [[şalgam]].
====Çeviriler====
{{üst|tip=çeviriler}}
*Fince: {{ç|fi|naurismehu}}
{{alt}}
===Kaynakça===
{{kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
6u6a3izo0kwkcgyia8bptb7ufibpwxp
5658359
5658358
2026-05-15T21:57:07Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658359
wikitext
text/x-wiki
==Türkçe==
===Heceleme===
* {{h|dil=tr||şal|gam|su|yu}}
===Köken===
*{{birleşik|dil=tr|şalgam|su}}
===Ad===
{{tr-ad}}
[[Dosya:Yeni3.jpg|küçükresim|Şalgam suyu]]
# {{t|dil=tr|içecekler}} Doğranmış şalgam, havuç ile bulgur, su ve tuz kullanılarak yapılan bir içecek; [[şalgam]].
#*{{mt|dil=tr|dergi=Öküz|başlık=İnönü - Churchill Buluşması ve DSİ Meselesi|yazar=Ekrem Galip YALINER|yıl=1997|sayı=37|sayfa=25
|tanıklık= Eh, Adana'ya gelip de '''şalgam suyu''', ki Adana'da kısaca şalgam denir buna, içirmemek olmazdı.
}}
====Çeviriler====
{{üst|tip=çeviriler}}
*Fince: {{ç|fi|naurismehu}}
{{alt}}
===Kaynakça===
{{kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
9di6az473js19tcw5htcpb3f5fhxqr8
Mehmet
0
297211
5658329
4196984
2026-05-15T19:23:44Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658329
wikitext
text/x-wiki
==Türkçe==
===Farklı yazılışlar===
* [[Mehmed]]
===Köken===
{{kökenli|tr|ar|مُحَمَّد}}<ref>{{KYK:Nişanyan Adlar}}</ref>.
===Söyleniş===
* {{IPA|dil=tr|/meh.met/}}
* {{h|dil=tr||Meh|met}}
===Özel ad===
{{tr-özel ad|k=1}}
# {{özel ad|dil=tr|erkek adı}}
====Çekimleme====
{{tr-ad-tablo}}
====Türetilmiş kavramlar====
* [[Mehmetçik]]
===Kaynakça===
<references />
mvg45kfemk8veejokqjolngo2kzksh7
Orta Asya
0
306501
5658320
3905166
2026-05-15T18:04:26Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658320
wikitext
text/x-wiki
==Türkçe==
[[Dosya:Central Asia world region2.png|küçükresimnail|250px|<center>'''Orta Asya'''</center>]]
===Söyleniş===
* {{IPA|dil=tr|oɾˈta asja}}
* {{h|dil=tr||Or|ta As|ya}}
===Özel ad===
{{tr-özel ad|a=1|baş=[[Orta]] [[Asya]]}} [[Asya'sı|'''Asya''' -'sı]]
# {{t|dil=tr|coğrafya}} [[Afganistan]], [[Çin]]'in bir kısmı ([[Doğu Türkistan]]), [[Kazakistan]], [[Kırgızistan]], [[Kuzey İran]], [[Özbekistan]], [[Pakistan]]'ın bir kısmı, [[Rusya]], [[Tacikistan]] ve [[Türkmenistan]]'nın bulunduğu [[bölge]]yi tanımlayan [[coğrafî]] [[terim]]
====Çekimleme====
{{tr-ad-tablo}}
====Üst kavramlar====
* [[Avrasya]]
====Alt kavramlar====
* [[Afganistan]], [[Doğu Türkistan]], [[Kazakistan]], [[Kırgızistan]], [[Özbekistan]], [[Tacikistan]], [[Türkmenistan]]
====Türetilmiş kavramlar====
* [[Asya'yken]], [[Asya'yla]], [[Asya'ysa]], [[Asyacı]], [[Asyalı]], [[Asyasız]]
====Çeviriler====
{{üst|coğrafya|tip=çeviriler}}
* Almanca: {{ç|de|Zentralasien}}
* Fransızca: {{ç|fr|Asie centrale}}
* İngilizce: {{ç|en|Central Asia}}
* İsveççe: {{ç|sv|Centralasien}}
* İtalyanca: {{ç|it|Asia centrale}}
{{alt}}
===Kaynakça===
* {{kaynak-TDK}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
7fnp30zvqcfy6zdl1n3jku6lg12eyhv
Vikisözlük:Anasayfa
4
313750
5658417
5604766
2026-05-16T02:54:58Z
MustafaCavlak
59368
5658417
wikitext
text/x-wiki
{{Anasayfa/başlık}}
<div class="main-wrapper">
<div class="main-wrapper-column">
<div id="main-dyk" class="main-box main-box-image-only main-box-responsive-image" style="background:white">
<h2 class="main-header main-box-header">Hakkında</h2>
{{Vikisözlük hakkında}}
<div class="main-footer">
<div id="mw-customcollapsible-dyk" class="main-footer-menu mw-collapsible mw-collapsed nomobile">
<div class="main-footer-menuToggle mw-collapsible-toggle mw-customtoggle-main-dyk">[[File:OOjs UI icon ellipsis.svg|20px|link=]]</div>
<div class="main-footer-menuDropdown mw-collapsible-content main-plainlist">
<span class="plainlinks mw-ui-button mw-ui-quiet">[https://tr.wiktionary.org/w/index.php?title=Şablon:Vikisözlük_hakkında&action=edit Düzenle]</span>
</div></div></div></div>
</div>
<div class="main-wrapper-column">
<div id="main-dyk" class="main-box main-box-image-only main-box-responsive-image" style="background:white">
<div class="main-box-subtitle">Alfabeler</div>
<h2 class="main-header main-box-header">Dizin</h2>
{{Anasayfa/dizin}}
<div class="main-footer">
<div class="main-footer-actions main-plainlist nomobile">
[[Şablon:Dizin|<span class="mw-ui-button">Tam liste</span>]]
</div>
<div id="mw-customcollapsible-dyk" class="main-footer-menu mw-collapsible mw-collapsed nomobile">
<div class="main-footer-menuToggle mw-collapsible-toggle mw-customtoggle-main-dyk">[[File:OOjs UI icon ellipsis.svg|20px|link=]]</div>
<div class="main-footer-menuDropdown mw-collapsible-content main-plainlist">
<span class="plainlinks mw-ui-button mw-ui-quiet">[https://tr.wiktionary.org/w/index.php?title=Şablon:Anasayfa/dizin&action=edit Düzenle]</span>
</div></div></div></div>
</div>
</div>
<div class="main-wrapper">
<div class="main-wrapper-column">
<div id="main-dyk" class="main-box main-box-image-only main-box-responsive-image" style="background:white">
{{günün sözcüğü}}
</div></div></div>
<div class="main-wrapper">
<div class="main-wrapper-column">
<div id="main-dyk" class="main-box main-box-image-only main-box-responsive-image" style="background:white">
<h2 class="main-header main-box-header">[[Dosya:Latin dictionary.jpg|50px]] Diğer dillerde Vikisözlük</h2>
{{Anasayfa/diğer diller}}
<div class="main-footer">
<div class="main-footer-actions main-plainlist nomobile">
[https://www.wiktionary.org <span class="mw-ui-button">Tüm Vikisözlükler</span>]
</div>
<div id="mw-customcollapsible-dyk" class="main-footer-menu mw-collapsible mw-collapsed nomobile">
<div class="main-footer-menuToggle mw-collapsible-toggle mw-customtoggle-main-dyk">[[File:OOjs UI icon ellipsis.svg|20px|link=]]</div>
<div class="main-footer-menuDropdown mw-collapsible-content main-plainlist">
<span class="plainlinks mw-ui-button mw-ui-quiet">[https://tr.wiktionary.org/w/index.php?title=Şablon:Anasayfa/diğer_diller&action=edit Düzenle]</span>
</div></div></div></div>
</div></div>
{{Anasayfa/kardeş projeler}}
__NOEDITSECTION__
__NOTOC__
{{Tazele}}
0cx8m8232rngvq4jd542ozsigfb2kof
vegetarian
0
327964
5658573
4479949
2026-05-16T11:26:32Z
MustafaCavlak
59368
/* İngilizce */
5658573
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{en-ad}}
# [[vejetaryen]]
===Ön ad===
{{en-ön ad}}
# [[vejetaryenlik]] ile ilgili olan
# vejetaryen olan
12vkswc0s4cmmsxq4xpnai5ygq6yhjk
plomb
0
328175
5658450
4496826
2026-05-16T08:26:01Z
MustafaCavlak
59368
/* Fransızca */
5658450
wikitext
text/x-wiki
==Fransızca==
{{vikipedi|dil=fr}}
===Söyleniş===
* {{fr-IPA}}
* {{ses|dil=fr|Fr-plomb.ogg}}
===Ad===
{{fr-ad|e}}
# {{t|dil=fr|metaller|elementler}} [[kurşun]]
k5eeyrbi5d1o4e0bk42979mrdud0gkt
wedding
0
332556
5658572
4491717
2026-05-16T11:22:55Z
MustafaCavlak
59368
/* İngilizce */
5658572
wikitext
text/x-wiki
==İngilizce==
===Söyleniş===
* {{ses|dil=en|en-us-wedding.ogg|(ABD)}}
===Ad===
{{en-ad}}
# [[düğün]]
===Eylem===
{{başlık başı|en|çekimli eylem}}
# {{çekim|dil=en|wed||ing-form}}
kc0vssl6ew7vv3fpnvl354txitufo7y
farm
0
335151
5658577
4416478
2026-05-16T11:32:57Z
MustafaCavlak
59368
/* İngilizce */
5658577
wikitext
text/x-wiki
==İngilizce==
===Söyleniş===
* {{ses|dil=en|En-us-farm.ogg|(ABD)}}
===Ad===
{{en-ad}}
# [[çiftlik]]
mf8uq8cx384mu78s5tw0tgq3n441r6b
Modül:ja-başlıkbaşı
828
416228
5658432
4884343
2026-05-16T07:07:35Z
MustafaCavlak
59368
5658432
Scribunto
text/plain
local m_ja = require("Modül:ja")
local m_ja_ruby = require('Modül:ja-ruby')
local find = mw.ustring.find
local export = {}
local pos_functions = {}
local lang = require("Modül:diller").getirKodaGore("ja")
local sc = require("Modül:alfabeler").getirKodaGore("Jpan")
local Latn = require("Modül:alfabeler").getirKodaGore("Latn")
local Japonca_symbols = '%ー・=?!。、'
local katakana_range = 'ァ-ヺーヽヾ'
local hiragana_range = 'ぁ-ゖーゞゝ'
local kana_range = katakana_range .. hiragana_range .. Japonca_symbols
local Japonca_scripts_range = kana_range .. '一-鿌・々'
local katakana_pattern = '^[' .. katakana_range .. Japonca_symbols .. ']*$'
local hiragana_pattern = '^[' .. hiragana_range .. Japonca_symbols .. ']*$'
local kana_pattern = '^[' .. kana_range .. ']*$'
local kana_pattern_full = '^[、' .. kana_range .. '%s%.%-%^%%]*$'
local function remove_links(text)
return (text:gsub("%[%[[^|%]]-|", ""):gsub("%[%[", ""):gsub("%]%]", ""))
end
local function detect_kana_script(kana)
if find(kana, katakana_pattern) then
return 'kata'
elseif find(kana, hiragana_pattern) then
return 'hira'
elseif find(kana, kana_pattern) then
return 'both'
else
return nil
end
end
local en_numerals = {
"bir", "iki", "üç", "dört", "beş",
"altı", "yedi", "sekiz", "dokuz", "on",
"on bir", "on iki", "on üç", "on dört", "on beş"
}
local en_grades = {
"birinci sınıf", "ikinci sınıf", "üçüncü sınıf",
"dördüncü sınıf", "beşinci sınıf", "altıncı sınıf",
"ortaokul", "jinmeiyō", "hyōgaiji"
}
local aliases = {
['geçişli']='tr', ['trans']='tr',
['geçişsiz']='in', ['intrans']='in', ['intr']='in',
['godan']='1', ['ichidan']='2', ['irregular']='irr'
}
local function kana_to_romaji(kana, veri, args)
-- make adjustments for -u verbs and -i adjectives by placing a period before the last character
-- to prevent romanizing long vowels with macrons
if (veri.soz_kategorisi == "eylemler") or (veri.soz_kategorisi == "ön adlar" and (args["çekim"] == "i" or args["çekim"] == "い" or args["çekim"] == "is")) then
kana = mw.ustring.gsub(kana,'([うい])$','.%1')
end
-- hyphens for prefixes, suffixes, and counters (classifiers)
if veri.soz_kategorisi == "prefixes" then
kana = kana:gsub('%-?$', '-')
elseif veri.soz_kategorisi == "suffixes" or veri.soz_kategorisi == "counters" or veri.soz_kategorisi == "classifiers" then
kana = kana:gsub('^%-?', '-')
end
-- automatic caps for proper nouns, if not already specified
if veri.soz_kategorisi == "özel adlar" then
if not find(kana, '%^') then
kana = mw.ustring.gsub(kana, '^(.)', '^%1')
kana = mw.ustring.gsub(kana, '([%s%-])(.)', '%1^%2')
end
end
kana = m_ja.kana_to_romaji(kana)
return kana
end
local function historical_kana(args, veri, poscat)
local hk = args["hhira"] or args["hkata"]
if hk then
table.insert(veri.cekimler, {
etiket = "geleneksel kana",
"[[" .. hk .. "]]" .. (poscat == "suru verbs" and 'する' or ''),
})
hk = m_ja.kata_to_hira(hk)
if hk:match'ゐ' then
table.insert(veri.kategoriler, "Japonca ゐ karakterini içeren geleneksel sözcükler")
end
if hk:match'ゑ' then
table.insert(veri.kategoriler, "Japonca ゑ karakterini içeren geleneksel sözcükler")
end
if hk:match'を' and not (veri.kana and veri.kana:match'を') then
table.insert(veri.kategoriler, "Japonca を karakterini içeren geleneksel sözcükler")
end
if hk:match'ぢ' and not (veri.kana and veri.kana:match'ぢ') then
table.insert(veri.kategoriler, "Japonca ぢ karakterini içeren geleneksel sözcükler")
end
if hk:match'づ' and not (veri.kana and veri.kana:match'づ') then
table.insert(veri.kategoriler, "Japonca づ karakterini içeren geleneksel sözcükler")
end
end
end
-- adds category Japonca terms spelled with jōyō kanji or Japonca terms spelled with non-jōyō kanji
-- (if it contains any kanji)
local function categorize_by_kanji(veri, PAGENAME)
-- remove non-kanji characters
local onlykanji = mw.ustring.gsub(PAGENAME, '[^一-鿌]', '')
local number_of_kanji = mw.ustring.len(onlykanji)
if number_of_kanji > 0 then
for i=1,mw.ustring.len(onlykanji) do
table.insert(veri.kategoriler, ("Japonca %s kanji harflerini içeren sözcükler"):format(en_grades[m_ja.kanji_grade(mw.ustring.sub(onlykanji,i,i))]))
end
-- categorize by number of kanji
if number_of_kanji == 1 then
table.insert(veri.kategoriler, "Japonca bir Han karakteri içeren sözcükler")
elseif en_numerals[number_of_kanji] then
table.insert(veri.kategoriler, ("Japonca %s Han karakteri içeren sözcükler"):format(en_numerals[number_of_kanji]))
end
end
-- single-kanji terms
if mw.ustring.len(PAGENAME) == 1 and mw.ustring.match(PAGENAME, '[一-鿌]') then
table.insert(veri.kategoriler, "Japonca " .. PAGENAME .. " karakterini içeren sözcükler")
table.insert(veri.kategoriler, "Japonca tek-kanji harfinden oluşan sözcükler")
end
end
-- categorize by the script of the pagename or specific characters contained in it
local function extra_categorization(veri, PAGENAME, katakana_category)
-- if PAGENAME is hiragana, put in that category, same for katakana (but do it at the end)
if detect_kana_script(PAGENAME) == 'hira' then table.insert(veri.kategoriler, "Japonca hiragana") end
if detect_kana_script(PAGENAME) == 'kata' then table.insert(katakana_category, "Japonca katakana") end
if find(PAGENAME, "[^" .. Japonca_scripts_range .. "]") and find(PAGENAME, '[' .. Japonca_scripts_range .. ']') then
table.insert(veri.kategoriler, "Japonca birden fazla okunuşu olan sözcükler") end
for _,character in ipairs({'々','〆','ヶ','ゝ','ゞ','ヽ','ヾ','ゐ','ヰ','ゑ','ヱ','ゔ','ヷ','ヸ','ヹ','ヺ','・','=','゠'}) do
if mw.ustring.match(PAGENAME,character) then
table.insert(veri.kategoriler, ("Japonca %s harfini içeren sözcükler"):format(character))
end
end
if find(PAGENAME, "[ァ-ヺヽヾ]") and find(PAGENAME, "[ぁ-ゖゞゝ]") and veri.soz_kategorisi ~= "proverbs" and veri.soz_kategorisi ~= "phrases" then
table.insert(veri.kategoriler, "Japonca karışık kana harflerini içeren sözcükler")
end
end
-- go through args and build inflections by finding whatever kanas were given to us
local function format_headword(args, veri, head)
local headword_kana_type = detect_kana_script(remove_links(m_ja.remove_ruby_markup(head)))
local allkana, romajis = {}, {}
local rep = {}
local _insert_kana = headword_kana_type and function(k) -- pure-kana-title entry
if k == '' then return end
local key = remove_links(m_ja.remove_ruby_markup(k))
romajis[1] = kana_to_romaji(remove_links(k), veri, args)
if not rep[key] then
table.insert(allkana, k)
rep[key] = true
end
end or function(k) -- non-pure-kana-title entry
if k == '' then return end
local key = m_ja.kana_to_romaji(remove_links(m_ja.remove_ruby_markup(k)))
if not rep[key] then
table.insert(romajis, kana_to_romaji(remove_links(k), veri, args))
table.insert(allkana, k)
rep[key] = true
end
end
if headword_kana_type then
_insert_kana(remove_links(head))
allkana[1] = head
end
for i,arg in ipairs(args[1]) do
if arg and arg ~= "" and find(arg, kana_pattern_full) then _insert_kana(arg) end
end
-- accept "hira" and "kata" but let Lua decide if they are really hiragana or katakana
if args["hira"] and args["hira"] ~= "" then _insert_kana(args["hira"]) end
if args["kata"] and args["kata"] ~= "" then _insert_kana(args["kata"]) end
if args["rom"] then romajis[1] = args["rom"] end
if #allkana == 0 then error('Kana form is required') end
if #romajis == 0 then error('Romaji is required') end
local suru_ending = veri.soz_kategorisi == "suru verbs" and '[[する]]' or ''
for _, kana in ipairs(allkana) do
-- add everything to inflections, except historical hiragana which is next
-- local format_result = headword_kana_type and allkana[i] or format_ruby(PAGENAME, allkana[i], data)
local format_result, format_result_preserved --<ruby> form, []() form
if headword_kana_type then
format_result = m_ja.remove_ruby_markup(kana)
format_result_preserved = remove_links(format_result) .. suru_ending
format_result = format_result .. suru_ending
else
local format_table = m_ja_ruby.parse_text(head, kana, {
try = 'force',
try_force_limit = 10000
})
format_result = m_ja_ruby.to_wiki(format_table, {
break_link = true,
}):gsub('<rt>(..-)</rt>', "<rt>[[" .. remove_links(m_ja.remove_ruby_markup(kana)) .."|%1]]</rt>") .. suru_ending
format_result_preserved = remove_links(m_ja_ruby.to_markup(format_table)) .. suru_ending
end
table.insert(veri.baslar, format_result)
veri.korunan_baslar = veri.korunan_baslar or format_result_preserved
end
suru_ending = veri.soz_kategorisi == "suru verbs" and ' suru' or ''
for _, rom in ipairs(romajis) do
table.insert(veri.alfabecevler, '[[' .. rom .. '#Japonca|' .. rom .. ']]' .. suru_ending)
end
if #romajis > 1 then
table.insert(veri.kategoriler, "Japonca birden fazla okunuşu olan sözcükler")
end
veri.kana = allkana[1] and remove_links(m_ja.remove_ruby_markup(allkana[1]))
end
local function add_transitivity(veri, tr)
tr = aliases[tr] or tr
if tr == "tr" then
table.insert(veri.orta_bilgi, 'geçişli')
table.insert(veri.kategoriler, "Japonca geçişli eylemler")
elseif tr == "in" then
table.insert(veri.orta_bilgi, 'geçişsiz')
table.insert(veri.kategoriler, "Japonca geçişsiz eylemler")
elseif tr == "both" then
table.insert(veri.orta_bilgi, 'geçişli veya geçişsiz')
table.insert(veri.kategoriler, "Japonca geçişli eylemler")
table.insert(veri.kategoriler, "Japonca geçişsiz eylemler")
else
table.insert(veri.kategoriler, "Japonca çatısız eylemler")
end
end
local function add_inflections(veri, inflection_type, cat_suffix)
local lemma = veri.korunan_baslar or veri.baslar[1]
local romaji = remove_links(veri.alfabecevler[1])
inflection_type = aliases[inflection_type] or inflection_type
local function replace_suffix(lemma_from, lemma_to, romaji_from, romaji_to)
-- e.g. 持って来る, lemma = "[持](も)って来(く)る"
-- lemma_from = "くる", lemma_to = {"き","きた"}
local p_kr = katakana_range .. hiragana_range
local lemma_sub
local romaji_sub
local key_pos = {}
local i1, i2
romaji_from = romaji_from or m_ja.kana_to_romaji(lemma_from)
if type(lemma_to) ~= 'table' then lemma_to = {lemma_to} end
if type(romaji_to) ~= 'table' then romaji_to = {romaji_to} end
for i, v in ipairs(lemma_to) do
romaji_to[i] = romaji_to[i] or m_ja.kana_to_romaji(v)
end
lemma_sub = lemma
lemma_from = lemma_from ~= '' and mw.text.split(lemma_from, '') or {} -- lemma_from = {"く","る"}
local len_lemma_from = #lemma_from -- find the last two kana in "[持](も)って来(く)る"
key_pos[len_lemma_from + 1] = {-1}
for i = len_lemma_from, 1, -1 do
i1, _, i2 = mw.ustring.find(lemma_sub, '[' .. m_ja.kata_to_hira(lemma_from[i]) .. m_ja.hira_to_kata(lemma_from[i]) .. ']()[^' .. p_kr .. ']-$')
if not i1 then return nil end
i1 = i1 - 1
key_pos[i] = {i1, i2}
lemma_sub = mw.ustring.sub(lemma_sub, 1, i1)
end
romaji_sub, i1 = romaji:gsub(romaji_from .. '%s*$', '')
if i1 ~= 1 then return nil end
local result = {}
for i, v in ipairs(lemma_to) do
local result_single = {lemma_sub}
for j = 1, len_lemma_from do
table.insert(result_single, mw.ustring.sub(v, j, j))
table.insert(result_single, mw.ustring.sub(lemma, key_pos[j][2], key_pos[j + 1][1]))
end
table.insert(result_single, mw.ustring.sub(v, len_lemma_from + 1))
result[i] = {lemma = table.concat(result_single), romaji = romaji_sub .. romaji_to[i]}
-- "[持](も)って来(" .. "き" .. ")" .. "" .. "" and "[持](も)って来(" .. "き" .. ")" .. "た" .. ""
end
return result -- {{lemma="[持](も)って来(き)",romaji="motteki"},{lemma="[持](も)って来(き)た",romaji="mottekita"}}
end
local function insert_form(label, ...)
-- etiket = "stem" or "past" etc.
-- ... = {lemma=...,romaji=...},{lemma=...,romaji=...}
local labeled_forms = {etiket = label}
for _, v in ipairs{...} do
local table_form = m_ja_ruby.parse_markup(v.lemma)
local form_term = m_ja_ruby.to_wiki(table_form)
if not form_term:find'%[%[.+%]%]' then
form_term = '[[' .. m_ja_ruby.to_text(table_form) .. '#Japonca|' .. form_term .. ']]'
end
table.insert(labeled_forms, {
term = form_term,
translit = v.romaji,
})
end
table.insert(veri.cekimler, labeled_forms)
end
local inflected_forms
if inflection_type == '1' or inflection_type == '1s' then
table.insert(veri.orta_bilgi, '<abbr title="godan (tip I) çekimi">godan</abbr>')
if cat_suffix then
table.insert(veri.kategoriler, "Japonca tip 1 " .. cat_suffix)
if cat_suffix == 'eylemler' and veri.alfabecevler[1] and mw.ustring.find(remove_links(veri.alfabecevler[1]), '[ieIEīēĪĒ]ru$') then
table.insert(veri.kategoriler, "Japonca -iru veya -eru ile biten tip 1 eylemler")
end
end
if inflection_type == '1' then
inflected_forms =
replace_suffix('く', {'き', 'いた'}, 'ku', {'ki', 'ita'}) or
replace_suffix('ぐ', {'ぎ', 'いだ'}, 'gu', {'gi', 'ida'}) or
replace_suffix('す', {'し', 'した'}, 'su', {'shi', 'shita'}) or
replace_suffix('つ', {'ち', 'った'}, 'tsu', {'chi', 'tta'}) or
replace_suffix('ぬ', {'に', 'んだ'}, 'nu', {'ni', 'nda'}) or
replace_suffix('ぶ', {'び', 'んだ'}, 'bu', {'bi', 'nda'}) or
replace_suffix('む', {'み', 'んだ'}, 'mu', {'mi', 'nda'}) or
replace_suffix('る', {'り', 'った'}, 'ru', {'ri', 'tta'}) or
replace_suffix('う', {'い', 'った'}, 'u', {'i', 'tta'})
if inflected_forms then
insert_form('stem', inflected_forms[1])
insert_form('past', inflected_forms[2])
else
--require("Modül:debug").track("ja-headword/godan conjugation failed")
end
else
inflected_forms =
replace_suffix('る', {'り', 'った', 'い'}, 'ru', {'ri', 'tta', 'i'}) or --くださる
replace_suffix('いく', {'いき', 'いった'}, 'iku', {'iki', 'itta'}) or --行く
replace_suffix('う', {'い', 'うた'}, 'ou', {'oi', 'ōta'}) --問う
if inflected_forms then
insert_form('stem', inflected_forms[1], inflected_forms[3])
insert_form('past', inflected_forms[2])
else
--require("Modül:debug").track("ja-headword/godan conjugation special failed")
end
end
elseif inflection_type == '2' then
table.insert(veri.orta_bilgi, '<abbr title="ichidan (tip II) çekimi">ichidan</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca tip 2 " .. cat_suffix) end
inflected_forms = replace_suffix('る', {'', 'た'}, 'ru', {'', 'ta'})
if inflected_forms then
insert_form('stem', inflected_forms[1])
insert_form('past', inflected_forms[2])
else
--require("Modül:debug").track("ja-headword/ichidan conjugation failed")
end
elseif inflection_type == 'suru' then
table.insert(veri.orta_bilgi, '<abbr title="suru (tip III) çekimi">suru</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca suru " .. cat_suffix) end
inflected_forms =
replace_suffix('する', {'し', 'した'}, 'suru', {'shi', 'shita'}) or
replace_suffix('ずる', {'じ', 'じた'}, 'zuru', {'ji', 'jita'})
if inflected_forms then
insert_form('stem', inflected_forms[1])
insert_form('past', inflected_forms[2])
else
--require("Modül:debug").track("ja-headword/suru conjugation failed")
end
elseif inflection_type == 'kuru' then
table.insert(veri.orta_bilgi, '<abbr title="kuru (tip III) çekimi">kuru</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca kuru " .. cat_suffix) end
inflected_forms = replace_suffix('くる', {'き', 'きた'}, 'kuru', {'ki', 'kita'})
if inflected_forms then
insert_form('stem', inflected_forms[1])
insert_form('past', inflected_forms[2])
else
--require("Modül:debug").track("ja-headword/kuru conjugation failed")
end
elseif inflection_type == 'i' or inflection_type == 'い' then
table.insert(veri.orta_bilgi, '<abbr title="-i (tip I) çekimi">-i</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca い-i " .. cat_suffix) end
inflected_forms = replace_suffix('い', {'く'}, 'i', {'ku'})
if inflected_forms then
insert_form('adverbial', inflected_forms[1])
else
--require("Modül:debug").track("ja-headword/-i inflection failed")
end
elseif inflection_type == 'is' then
table.insert(veri.orta_bilgi, '<abbr title="-i (tip I) çekimi">-i</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca い-i " .. cat_suffix) end
inflected_forms = replace_suffix('いい', {'よく'}, 'ii', {'yoku'})
if inflected_forms then
insert_form('adverbial', inflected_forms[1])
else
--require("Modül:debug").track("ja-headword/slightly irregular -i inflection failed")
end
elseif inflection_type == 'na' or inflection_type == 'な' then
table.insert(veri.orta_bilgi, '<abbr title="-na (tip II) çekimi">-na</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca な-na " .. cat_suffix) end
inflected_forms = replace_suffix('', {'[[な]]', '[[に]]'}, '', {' na', ' ni'})
insert_form('adnominal', inflected_forms[1])
insert_form('adverbial', inflected_forms[2])
elseif inflection_type == "yo" then
table.insert(veri.orta_bilgi, '<abbr title="yodan çekimi (geleneksel)"><sup><small>†</small></sup>yodan</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca yodan " .. cat_suffix) end
elseif inflection_type == "kami ni" then
table.insert(veri.orta_bilgi, '<abbr title="kami nidan çekimi (geleneksel)"><sup><small>†</small></sup>nidan</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca kami nidan " .. cat_suffix) end
elseif inflection_type == "shimo ni" then
table.insert(veri.orta_bilgi, '<abbr title="shimo nidan çekimi (geleneksel)"><sup><small>†</small></sup>nidan</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca shimo nidan " .. cat_suffix) end
elseif inflection_type == "rahen" then
table.insert(veri.orta_bilgi, '<abbr title="r-special çekimi (geleneksel)"><sup><small>†</small></sup>-ri</abbr>')
elseif inflection_type == "sahen" then
table.insert(veri.orta_bilgi, '<abbr title="s-special çekimi (geleneksel)"><sup><small>†</small></sup>-se</abbr>')
elseif inflection_type == "kahen" then
table.insert(veri.orta_bilgi, '<abbr title="k-special çekimi (geleneksel)"><sup><small>†</small></sup>-ko</abbr>')
elseif inflection_type == "nahen" then
table.insert(veri.orta_bilgi, '<abbr title="n-special çekimi (geleneksel)"><sup><small>†</small></sup>-n</abbr>')
elseif inflection_type == "nari" or inflection_type == "なり" then
table.insert(veri.orta_bilgi, '<abbr title="-nari çekimi (geleneksel)"><sup><small>†</small></sup>-nari</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca なり-nari " .. cat_suffix) end
elseif inflection_type == 'tari' or inflection_type == 'たり' then
table.insert(veri.orta_bilgi, '<abbr title="-tari çekimi (geleneksel)"><sup><small>†</small></sup>-tari</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca たり-tari " .. cat_suffix) end
inflected_forms = replace_suffix('', {'[[たる]]', '[[と]]', '[[として]]'}, '', {' taru', ' to', ' toshite'})
insert_form('adnominal', inflected_forms[1])
insert_form('adverbial', inflected_forms[2], inflected_forms[3])
elseif inflection_type == "ka" or inflection_type == "か" then
table.insert(veri.orta_bilgi, '<abbr title="-ka çekimi (yöresel)"><sup><small>†</small></sup>-ka</abbr>')
if cat_suffix then table.insert(veri.kategoriler, "Japonca か-ka " .. cat_suffix) end
elseif inflection_type == 'irr' then
table.insert(veri.orta_bilgi, 'irregular')
if cat_suffix then table.insert(veri.kategoriler, "Japonca düzensiz " .. cat_suffix) end
end
end
pos_functions["eylemler"] = function(args, veri)
add_transitivity(veri, args["tr"])
add_inflections(veri, args["çekim"], 'eylemler')
end
pos_functions["son ekler"] = function(args, veri)
add_inflections(veri, args["çekim"])
end
pos_functions["yardımcı eylemler"] = function(args, veri)
table.insert(veri.kategoriler, "Japonca yardımcı eylemler")
add_inflections(veri, args["çekim"])
veri.soz_kategorisi = "eylemler"
end
pos_functions["suru verbs"] = function(args, veri)
add_transitivity(veri, args["tr"])
add_inflections(veri, 'suru', 'eylemler')
veri.soz_kategorisi = "eylemler"
end
pos_functions["ön adlar"] = function(args, veri)
add_inflections(veri, args["çekim"], 'ön adlar')
end
pos_functions["belirteçler"] = function(args, veri)
add_inflections(veri, args["çekim"], 'belirteçler')
end
pos_functions["adlar"] = function(args, veri)
-- the counter (classifier) parameter, only relevant for nouns
local counter = args["sayı"] or ""
if counter == "-" then
table.insert(veri.cekimler, {etiket = "sayılamayan"})
elseif counter ~= "" then
table.insert(veri.cekimler, {etiket = "sayısı", counter})
end
end
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
local args = require('Modül:parameters').process(frame:getParent().args, {
[1] = {list = true},
['hira'] = {}, ['kata'] = {},
['rom'] = {},
['ç'] = {},
['çekim'] = {}, ['tip'] = {alias_of = 'cekim'},
['sayı'] = {},
['kyu'] = {}, ['shin'] = {},
['hhira'] = {}, ['hkata'] = {},
['head'] = {}, ['baş'] = {alias_of = 'head'},
['sort'] = {}, ['sıra'] = {alias_of = 'sort'},
['sayfaadı'] = {},
})
args['sayfaadı'] = args['sayfaadı'] or mw.title.getCurrentTitle().text
local veri = {
dil = lang,
alf = sc,
soz_kategorisi = poscat,
kategoriler = {},
alfabecevler = {},
baslar = {},
cekimler = {},
sira_anahtari = nil,
--custom info
orta_bilgi = {},
korunan_baslar = nil,
kana = nil,
}
local katakana_category = {}
-- sort out all the kanas and do the romanization business
format_headword(args, veri, args["head"] or args['sayfaadı'])
-- add certain "inflections" and categories for adjectives, verbs, or nouns
if pos_functions[poscat] then
pos_functions[poscat](args, veri)
end
-- the presence of kyūjitai param indicates that this is shinjitai kanji entry and vice versa
if args["kyu"] then
if veri.soz_kategorisi == "suru verbs" then
table.insert(veri.cekimler, {etiket = "[[Ek:Japonca açıklamaları#kyūjitai|kyūjitai]]", "[[" .. args["kyu"] .. "]][[する]]"})
else
table.insert(veri.cekimler, {etiket = "[[Ek:Japonca açıklamaları#kyūjitai|kyūjitai]]", args["kyu"]})
end
end
if args["shin"] then
table.insert(veri.cekimler, {etiket = "[[Ek:Japonca açıklamaları#kyūjitai|kyūjitai]]"})
if veri.soz_kategorisi == "suru verbs" then
table.insert(veri.cekimler, {etiket = "[[Ek:Japonca açıklamaları#shinjitai|shinjitai]]", "[[" .. args["shin"] .. "]][[する]]"})
else
table.insert(veri.cekimler, {etiket = "[[Ek:Japonca açıklamaları#shinjitai|shinjitai]]", args["shin"]})
end
end
historical_kana(args, veri, poscat)
-- categorize by joyo kanji and number of kanji
categorize_by_kanji(veri, args['sayfaadı'])
-- categorize by the script of the pagename or specific characters contained in it
extra_categorization(veri, args['sayfaadı'], katakana_category)
veri.sira_anahtari = args['sort'] or veri.kana and m_ja.jsort(veri.kana) or nil
return
(veri.kana and '<span id="' .. veri.kana .. '"></span>' or '') ..
require('Modül:başlık başı').tam_baslikbasi(veri)
:gsub('<span class="gender">.-</span>', '<i>'..table.concat(veri.orta_bilgi, ' ')..'</i>') ..
require("Modül:araçlar").format_categories(katakana_category, lang, veri.sira_anahtari and m_ja.hira_to_kata(veri.sira_anahtari))
end
return export
5yry0cl9v8bvqwrrilxlqkmycyfa5k5
Modül:tr-ad
828
441369
5658313
5657989
2026-05-15T17:38:57Z
Satirdan kahraman
37401
Osmanlı Türkçesini düzeltmek için
5658313
Scribunto
text/plain
-- Module:tr-ad
-- Baştan yazım: daha modüler, daha az heuristik, daha az çakışma.
--
-- Düzeltmeler (v2):
-- [1] harmI : force_incelme=true + û köşe durumu → "u" yerine "ü" döndürüyor.
-- [2] soften : ikizleşmiş tüm ünsüzler (pp dahil) artık yumuşamıyor.
-- [3] soften : -[ünlü]log$ deseniyle daha fazla -log sözcüğü yakalanıyor
-- (prolog, epilog, monolog, analog …).
-- [4] attach : is_proper bayrağı kaldırıldı; yumuşama tek elden allow_soften.
-- [5] p.form : özel adlar için allow_soften = false; kesme işareti son adımda,
-- suffix hesaplamasından sonra temiz biçimde ekleniyor.
-- [6] IST_BIL : setmetatable kaldırıldı, isAutoCompound() fonksiyonu eklendi.
-- [7] p.ayarla : kullanılmayan i1-i4 parametreleri kaldırıldı.
-- [8] cekim_tr : p.ayarla çağrıları ve cekimler tablosu güncellendi.
-- [9] link : mw.title.new pcall ile koruma altına alındı.
-- [10] dropLastVowelOnce: ters-çevirme döngüsü yerine doğrudan indis tarama.
-- [11] possStem : 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local p = {}
local u = mw.ustring
local trim = mw.text.trim
-- ── İstisna listeleri ─────────────────────────────────────────────────────────
local ist = require("Modül:tr-ad/istisnalar")
local IST_YUM = ist.istisnaYumusama or {}
local IST_INC = ist.istisnaIncelme or {}
local IST_DUS = ist.istisnaDusme or {}
local IST_BIL = ist.istisnaBilesik or {}
local IST_YALIN_SON = ist.istisnaYalinSonlu or {}
local IST_IKI = ist.istisnaIkizlesme or {}
-- Kökte gerçekten "s" bulunan sıfır-kök bileşikler (kafes+i → kafesi).
local KOK_SON_S_FORMLAR = {
["kafesi"] = true,
}
-- Bu kökler bileşikte k'ye geri çevrilmez (ağ, bağ …).
local KOK_SON_YUMUSAK_G = {
["ağ"] = true, ["bağ"] = true, ["çağ"] = true,
["dağ"] = true, ["yağ"] = true,
}
-- g → ğ yumuşaması yapılacak yabancı kökenli sözcükler.
local G_YUMUSAMA = {
["katalog"] = true, ["diyalog"] = true,
}
-- ── Temel yardımcılar ─────────────────────────────────────────────────────────
local V = {
a = true, e = true, ["ı"] = true, i = true,
o = true, ["ö"] = true, u = true, ["ü"] = true,
["â"] = true, ["î"] = true, ["û"] = true,
}
local HARD = {
p = true, ["ç"] = true, t = true, k = true,
f = true, h = true, s = true, ["ş"] = true,
}
local function lower(s) return u.lower(s or "") end
local function lastChar(s) return u.sub(s, -1) end
local function endsWithVowel(s)
return V[lower(lastChar(s))] == true
end
local function lastVowel(s)
s = lower(s or "")
for i = u.len(s), 1, -1 do
local ch = u.sub(s, i, i)
if V[ch] then return ch end
end
return nil
end
-- Normalizasyon: küçük harf + şapkalı harfleri düzleştir.
local function norm(s)
s = trim(s or "")
s = u.lower(s)
s = u.gsub(s, "â", "a")
s = u.gsub(s, "î", "i")
s = u.gsub(s, "û", "u")
s = u.gsub(s, "İ", "i")
return s
end
local UPPER_INITIAL = {
["A"]=true,["B"]=true,["C"]=true,["Ç"]=true,["D"]=true,
["E"]=true,["F"]=true,["G"]=true,["Ğ"]=true,["H"]=true,
["I"]=true,["İ"]=true,["J"]=true,["K"]=true,["L"]=true,
["M"]=true,["N"]=true,["O"]=true,["Ö"]=true,["P"]=true,
["R"]=true,["S"]=true,["Ş"]=true,["T"]=true,["U"]=true,
["Ü"]=true,["V"]=true,["Y"]=true,["Z"]=true,
}
local function startsWithUpper(lemma)
lemma = trim(lemma or "")
if lemma == "" then return false end
return UPPER_INITIAL[u.sub(lemma, 1, 1)] == true
end
local function lastWordNorm(s)
local n = norm(s or "")
return u.match(n, "%S+$") or n
end
-- ── Özel ad tespiti ───────────────────────────────────────────────────────────
local DERIVED_PROPER_NO_APOSTROPHE = {
["türkçe"]=true, ["ingilizce"]=true, ["almanca"]=true,
["fransızca"]=true, ["arapça"]=true, ["farsça"]=true,
["rusça"]=true, ["italyanca"]=true, ["ispanyolca"]=true,
["yunanca"]=true, ["kürtçe"]=true, ["zazaca"]=true,
["türklük"]=true, ["türkçülük"]=true, ["türkçü"]=true,
["müslümanlık"]=true,["hristiyanlık"]=true,
["konyalı"]=true, ["bursalı"]=true, ["istanbullu"]=true,
["izmirli"]=true, ["avrupalı"]=true, ["asyalı"]=true,
["afrikalı"]=true, ["hollandalı"]=true, ["almanyalı"]=true,
["fransalı"]=true, ["rusyalı"]=true,
}
-- Büyük harfle başladığı hâlde kesme işareti gerektiren özel sözcükler.
local FORCE_APOSTROPHE_PROPER = {
["ali"]=true, ["veli"]=true, ["güler"]=true,
["şişli"]=true, ["foça"]=true, ["buca"]=true, ["ılıca"]=true,
}
local function isDerivedProperNoApostrophe(lemma)
local n = norm(lemma or "")
local last = lastWordNorm(lemma)
if n == "" then return false end
if FORCE_APOSTROPHE_PROPER[n] or FORCE_APOSTROPHE_PROPER[last] then
return false
end
if DERIVED_PROPER_NO_APOSTROPHE[n] or DERIVED_PROPER_NO_APOSTROPHE[last] then
return true
end
-- Türkçe, İngilizce, Hekimoğluca vb. (≥6 harf, -ca/-ce/-ça/-çe)
if u.len(last) >= 6 and (
u.find(last, "ca$") or u.find(last, "ce$") or
u.find(last, "ça$") or u.find(last, "çe$")
) then return true end
-- Türklük, Türkçülük vb.
if u.find(last, "lık$") or u.find(last, "lik$")
or u.find(last, "luk$") or u.find(last, "lük$") then return true end
return false
end
local function isAutoProperName(lemma)
if not startsWithUpper(lemma) then return false end
if isDerivedProperNoApostrophe(lemma) then return false end
return true
end
local function isPossessiveSurnameEnding(lemma)
local last = lastWordNorm(lemma)
if u.find(last, "oğlu$") then return true end
if u.find(last, "oğulları$") then return true end
return false
end
-- ── Bileşik otomatik tespiti ──────────────────────────────────────────────────
-- Eski IST_BIL setmetatable() yaklaşımının yerini aldı.
-- Çok kelimeli, ı/i/u/ü ile biten ifadeler bileşik kabul edilir;
-- -ıcı/-ici/-ucu/-ücü gibi aletlik son eklerini ayırt eder.
local function otomatikYalinSonluMu(last_word)
last_word = u.lower(last_word or "")
return u.find(last_word, "[ıiuü]c[ıiuü]$") ~= nil
end
local function isAutoCompound(normed)
if not u.find(normed, " ") then return false end
local last_char = u.sub(normed, -1)
if last_char ~= "ı" and last_char ~= "i"
and last_char ~= "u" and last_char ~= "ü" then return false end
local last_word = u.match(normed, "%s(%S+)$")
if last_word then
if IST_YALIN_SON[last_word] or otomatikYalinSonluMu(last_word) then
return false
end
end
return true
end
-- ── Ünlü uyumu ────────────────────────────────────────────────────────────────
-- 2'li uyum (A/E)
local function harmA(stem, force_incelme)
local lv = lastVowel(stem) or "a"
if force_incelme then return "e" end
if lv == "e" or lv == "i" or lv == "ö" or lv == "ü" or lv == "î" then
return "e"
end
return "a"
end
-- 4'lü uyum (I)
-- Düzeltme [1]: force_incelme=true + û → "ü" (daha önce "u" dönüyordu).
local function harmI(stem, force_incelme)
local lv = lastVowel(stem) or "ı"
if force_incelme then
if lv == "a" or lv == "ı" or lv == "â" then return "i" end
if lv == "o" or lv == "u" or lv == "û" then return "ü" end
-- e, i, î, ö, ü zaten ince → normal akışa devam.
end
if lv == "a" or lv == "ı" then return "ı" end
if lv == "e" or lv == "i" or lv == "î" then return "i" end
if lv == "o" or lv == "u" then return "u" end
if lv == "â" then return "ı" end
if lv == "û" then return "u" end
return "ü"
end
-- t/d seçimi (sert ünsüz sonrası t)
local function chooseD(stem)
if HARD[lower(lastChar(stem))] then return "t" end
return "d"
end
-- ── Çoğul ─────────────────────────────────────────────────────────────────────
local function pluralSuffix(stem, force_incelme)
return "l" .. harmA(stem, force_incelme) .. "r"
end
-- oğul → oğullar (düzensiz çoğul tabanı)
local function pluralBase(stem)
if u.find(stem, "oğl$") then
return u.sub(stem, 1, -4) .. "oğul"
end
return stem
end
local function makePluralStem(stem, force_incelme)
local pbase = pluralBase(stem)
return pbase .. pluralSuffix(pbase, force_incelme)
end
-- ── Ünsüz dönüşümleri ─────────────────────────────────────────────────────────
-- Yumuşama: pçtk → bcdğ, yalnızca ünlüyle başlayan ek gelince.
-- Düzeltme [2]: ikizleşmiş tüm ünsüzler (pp/çç/tt/kk) artık yumuşamıyor.
-- Düzeltme [3]: -[ünlü]log$ deseni daha geniş -log sözcüklerini yakalar.
local function soften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
-- İkizleşmiş ünsüz: hiçbiri yumuşamaz.
if c == prev and (c == "p" or c == "ç" or c == "t" or c == "k") then
return stem
end
if c == "p" then return u.sub(stem, 1, -2) .. "b" end
if c == "ç" then return u.sub(stem, 1, -2) .. "c" end
if c == "t" then return u.sub(stem, 1, -2) .. "d" end
if c == "k" then
if prev == "n" then
return u.sub(stem, 1, -2) .. "g"
end
return u.sub(stem, 1, -2) .. "ğ"
end
if c == "g" then
local s = u.lower(stem or "")
-- katalog, diyalog, prolog, epilog, monolog, analog …
if u.find(s, "[aeıioöuü]log$") or G_YUMUSAMA[s] then
return u.sub(stem, 1, -2) .. "ğ"
end
end
return stem
end
-- Yumuşamayı geri al (bileşik tabanı temizlerken kullanılır).
local function unsoften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
if c == "b" then return u.sub(stem, 1, -2) .. "p" end
if c == "c" then return u.sub(stem, 1, -2) .. "ç" end
if c == "d" then return u.sub(stem, 1, -2) .. "t" end
if c == "ğ" then return u.sub(stem, 1, -2) .. "k" end
if c == "g" and prev == "n" then return u.sub(stem, 1, -2) .. "k" end
return stem
end
-- Ünlü düşmesi: kökün son ünlüsünü düşürür.
-- Düzeltme [10]: ters-çevirme döngüsü kaldırıldı; doğrudan indis taraması.
local function dropLastVowelOnce(stem)
local chars = {}
local len = u.len(stem)
for i = 1, len do chars[i] = u.sub(stem, i, i) end
for i = len, 1, -1 do
if V[lower(chars[i])] then
table.remove(chars, i)
break
end
end
return table.concat(chars)
end
-- İkizleşme: son ünsüzü çiftler.
local function geminateLastConsonant(stem)
return stem .. lastChar(stem)
end
-- ── İstisna sorgulama yardımcıları ───────────────────────────────────────────
local function isIncelme(lemma, it)
if it == "incelme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_INC[n] or IST_INC[last] or false
end
local function isSu(s)
local n = norm(s)
return n == "su"
or u.find(n, "[ %-\xe2\x80\x91]su$") ~= nil -- U+2011 non-breaking hyphen
or n == "akarsu"
or n == "özsu"
or n == "pissu"
end
-- Otomatik yumuşama kapatma kuralları
local function autoNoSoften(lemma)
if u.find(lemma, "ist$") then return true end
if u.find(lemma, "iyet$")
or u.find(lemma, "iyat$")
or u.find(lemma, "iyyet$") then return true end
if u.find(lemma, "[aeıioöuü]t$") then return true end
return false
end
-- Yumuşama beyaz listesi: autoNoSoften'ı geçersiz kılar.
local SOFTEN_WHITELIST = {
["kanat"]=true, ["kağıt"]=true, ["umut"]=true, ["öğüt"]=true,
["vücut"]=true, ["mabet"]=true, ["but"]=true,
["zebercet"]=true, ["haset"]=true,
}
local function isNoSoften(lemma, it)
if it == "yumuşama" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
if SOFTEN_WHITELIST[n] or SOFTEN_WHITELIST[last] then return false end
return IST_YUM[n] or IST_YUM[last]
or autoNoSoften(n) or autoNoSoften(last)
end
local function isDropVowel(lemma, it)
if it == "düşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_DUS[n] or IST_DUS[last] or false
end
local function isGeminate(lemma, it)
if it == "ikizleşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_IKI[n] or IST_IKI[last] or false
end
-- ── Ek bağlama ────────────────────────────────────────────────────────────────
-- Düzeltme [4]: is_proper bayrağı kaldırıldı.
-- Yumuşama yalnızca allow_soften üzerinden kontrol edilir.
local function attach(stem, suffix, opts)
opts = opts or {}
local base = stem
local first = u.sub(suffix, 1, 1) or ""
local isVowelInitial = (V[first] == true)
if isVowelInitial then
if opts.allow_soften then
base = soften(base)
end
if opts.buffer and endsWithVowel(base) then
base = base .. opts.buffer
end
end
return base .. suffix
end
-- ── Hâl ekleri ────────────────────────────────────────────────────────────────
local function caseForms(stem, force_incelme, opts)
opts = opts or {}
local out = {}
local buf_acc_dat = (opts.is_poss3 or opts.is_comp) and "n" or "y"
out["yalın"] = stem
-- belirtme: -(y/n)I
out["belirtme"] = attach(stem, harmI(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- yönelme: -(y/n)A
out["yönelme"] = attach(stem, harmA(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- bulunma: -DA / ayrılma: -DAn
local base_da = (opts.is_poss3 or opts.is_comp) and (stem .. "n") or stem
local d = chooseD(base_da)
local da_suf = d .. harmA(base_da, force_incelme)
out["bulunma"] = base_da .. da_suf
out["ayrılma"] = base_da .. da_suf .. "n"
-- tamlayan: -(n)In
local genBuf = isSu(stem) and "y" or "n"
out["tamlayan"] = attach(stem, harmI(stem, force_incelme) .. "n",
{ buffer = genBuf, allow_soften = opts.allow_soften })
return out
end
-- ── İyelik ekleri ─────────────────────────────────────────────────────────────
-- Düzeltme [11]: 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local function possStem(lemma, person, force_incelme, opts)
opts = opts or {}
local stem = lemma or ""
local harmony_stem = opts.harmony_stem or stem
local i = harmI(harmony_stem, force_incelme)
local endsV = endsWithVowel(stem)
-- su istisnası: suyu, suyum …
if isSu(lemma) and person ~= "3ç" then
stem = stem .. "y"
endsV = false
end
local ao = { allow_soften = opts.allow_soften }
if person == "1t" then
return attach(stem, endsV and "m" or (i .. "m"), ao)
elseif person == "2t" then
return attach(stem, endsV and "n" or (i .. "n"), ao)
elseif person == "3t" then
return attach(stem, i, { buffer = "s", allow_soften = opts.allow_soften })
elseif person == "1ç" then
-- ünlü-biten: -mIz | ünsüz-biten: -ImIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "m" or (i .. "m")) .. harmI(mid .. "m", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "2ç" then
-- ünlü-biten: -nIz | ünsüz-biten: -InIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "n" or (i .. "n")) .. harmI(mid .. "n", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "3ç" then
-- Kök hâlinde çoğul eki zaten taşıyorsa ek tekrar eklenmez.
if u.find(stem or "", "l[ae]r$") then
return stem .. harmI(stem, force_incelme)
end
local ps = makePluralStem(stem, force_incelme)
return ps .. harmI(ps, force_incelme)
end
return stem
end
-- ── Bileşik taban temizliği ───────────────────────────────────────────────────
-- IST_DUS'tan "düşmüş biçimler → asıl kökler" haritası.
-- Modül yüklenirken bir kez hesaplanır.
local DROPPED_MAP = {}
local DROPPED_KEYS = {}
for k in pairs(IST_DUS) do
local d = dropLastVowelOnce(k)
if d and d ~= k then DROPPED_MAP[d] = k end
end
for d in pairs(DROPPED_MAP) do
DROPPED_KEYS[#DROPPED_KEYS + 1] = d
end
table.sort(DROPPED_KEYS, function(a, b) return u.len(a) > u.len(b) end)
local function restoreDroppedCompoundBase(base)
local nbase = norm(base)
for _, d in ipairs(DROPPED_KEYS) do
local dlen = u.len(d)
if u.sub(nbase, -dlen) == d then
local prefix = u.sub(base, 1, u.len(base) - dlen)
return prefix .. DROPPED_MAP[d], true
end
end
return base, false
end
local function getCompoundBase(lemma)
local base = lemma or ""
local nlemma = norm(base)
local last_word = u.match(nlemma, "%S+$") or nlemma
if KOK_SON_S_FORMLAR[last_word] then
if u.find(base, "[ıiuü]$") then base = u.sub(base, 1, -2) end
elseif u.find(base, "s[ıiuü]$") then
base = u.sub(base, 1, -3)
elseif u.find(base, "[ıiuü]$") then
base = u.sub(base, 1, -2)
end
local last_base = u.match(norm(base), "%S+$") or norm(base)
if not KOK_SON_YUMUSAK_G[last_base] then
base = unsoften(base)
end
-- su istisnası: çamaşır suyu → çamaşır su
if u.sub(base, -1) == "y" and isSu(u.sub(base, 1, -2)) then
base = u.sub(base, 1, -2)
end
return base
end
-- ── Ana çekim motoru ──────────────────────────────────────────────────────────
function p.form(lemma, spec)
spec = spec or {}
lemma = trim(lemma or "")
if lemma == "" then return "" end
local it = spec.it
local k = spec.k
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
-- Düzeltme [5]: isProper bayrağı; kesme işareti ve yumuşama buradan yönetilir.
local isProper = (k == "1")
local force_incelme = isIncelme(lemma, it)
local n_lemma = norm(lemma)
local isComp =
(it == "bileşik")
or IST_BIL[n_lemma]
or isAutoCompound(n_lemma) -- Düzeltme [6]
or isPossessiveSurnameEnding(lemma)
or (u.find(n_lemma, "başı$") ~= nil)
local compBase = isComp and getCompoundBase(lemma) or nil
if isComp and not compBase then compBase = lemma end
local compOriginBase, _compHadDrop = compBase, false
if isComp and compBase then
compOriginBase, _compHadDrop = restoreDroppedCompoundBase(compBase)
end
-- allow_soften: özel adlarda daima false (kesme işareti ile birlikte yumuşama olmaz).
-- Bileşiklerde yumuşama kararı asıl köke (compOriginBase) göre verilir.
local soften_base = compOriginBase or compBase or lemma
local allow_soften
if isProper then
allow_soften = false
else
allow_soften = not isNoSoften(soften_base, it)
end
local do_drop = isDropVowel(lemma, it)
local do_gem = isGeminate(lemma, it)
local stem_only = lemma
local isPlural = (spec.number == "pl")
local isCompoundPluralPoss = false
-- ── 1) Çoğul ──
if isPlural then
if isComp then
local pluralBaseForComp = compOriginBase or compBase
if spec.poss and spec.poss ~= "3ç" then
-- zeval vakitlerim, ayçiçeklerim …
stem_only = makePluralStem(pluralBaseForComp, force_incelme)
isCompoundPluralPoss = true
else
-- gözyaşları, ayçiçekleri …
local ps = makePluralStem(pluralBaseForComp, force_incelme)
stem_only = ps .. harmI(ps, force_incelme)
end
else
stem_only = stem_only .. pluralSuffix(stem_only, force_incelme)
end
else
-- ── 2) Ünlü düşmesi / ikizleşme (yalnızca tekil, ünlü-başlı ek varsa) ──
if not isComp then
local isFirstSuffixVowel = false
if spec.poss then
isFirstSuffixVowel = not endsWithVowel(stem_only)
if spec.poss == "3t" or spec.poss == "3ç" then
isFirstSuffixVowel = true
end
elseif spec.case == "belirtme"
or spec.case == "yönelme"
or spec.case == "tamlayan" then
isFirstSuffixVowel = true
end
if isFirstSuffixVowel then
if do_drop then stem_only = dropLastVowelOnce(stem_only) end
if do_gem then stem_only = geminateLastConsonant(stem_only) end
end
end
end
-- -- ── 3) İyelik ──
if spec.poss then
-- Özel adlarda iyelik eki, bileşik tabanı soyulmadan doğrudan madde adına gelir.
-- Osmanlı Türkçesi + m → Osmanlı Türkçesi'm
-- Osmanlı Türkçesi + si → Osmanlı Türkçesi'si
--
-- Burada compBase kullanılmaz; yoksa Türkçesi → Türkçes tabanına düşer
-- ve kesme işareti sonrası ek bölümü yanlış hesaplanır.
if isProper then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
elseif isComp and not isCompoundPluralPoss then
stem_only = possStem(compBase, spec.poss, force_incelme, {
allow_soften = allow_soften,
harmony_stem = compOriginBase or compBase,
})
elseif isCompoundPluralPoss then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
else
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = allow_soften,
})
end
end
-- ── 4) Hâl ──
local is_poss3 = (spec.poss == "3t" or spec.poss == "3ç")
local needs_n = is_poss3
or (isComp and (not spec.poss or isPlural) and not isCompoundPluralPoss)
local cases = caseForms(stem_only, force_incelme, {
allow_soften = allow_soften,
is_poss3 = needs_n,
is_comp = needs_n,
})
local out = cases[spec.case or "yalın"] or stem_only
-- ── 5) Özel adlarda kesme işareti ──
-- Düzeltme [5]: tüm dönüşümler bittikten sonra, yalnızca tekil biçimlerde,
-- ve yalnızca lemma'da henüz kesme yoksa eklenir.
if isProper and not isPlural and not u.find(lemma, "'") then
local suffix_part = u.sub(out, u.len(lemma) + 1)
return lemma .. "'" .. suffix_part
end
return out
end
-- ── Wiki tablosu üretimi ──────────────────────────────────────────────────────
function p.adTablo(frame)
local args = frame.args
local hasAny = false
for _ in pairs(args) do hasAny = true; break end
if not hasAny then
local parent = frame:getParent()
args = (parent and parent.args) or {}
end
local lemma = trim(args[1] or args["ad"] or mw.title.getCurrentTitle().text or "")
local it = args["istisna"]
local k = args["k"] or args["a"]
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
local isProper = (k == "1")
local useProperTable = isProper or derivedNoApostrophe
local casesOrder = { "yalın", "belirtme", "yönelme", "bulunma", "ayrılma", "tamlayan" }
local function form(spec)
spec = spec or {}
spec.it = it
spec.k = k
return p.form(lemma, spec)
end
-- Düzeltme [9]: mw.title.new hata fırlatabilir; pcall ile koruma.
local linkCache = {}
local function link(s)
s = trim(tostring(s or ""))
if s == "" then return s end
local exists = linkCache[s]
if exists == nil then
local ok, title = pcall(mw.title.new, s, 0)
exists = ok and title and title.exists or false
linkCache[s] = exists
end
if exists then
return "[[" .. s .. "]]"
end
return "[[" .. s .. "|<span style=\"color:#202122;\">" .. mw.text.nowiki(s) .. "</span>]]"
end
local CASE_LABELS = {
["yalın"] = "[[yalın hâl|yalın]]",
["belirtme"] = "[[belirtme hâli|belirtme]]",
["yönelme"] = "[[yönelme hâli|yönelme]]",
["bulunma"] = "[[bulunma hâli|bulunma]]",
["ayrılma"] = "[[ayrılma hâli|ayrılma]]",
["tamlayan"] = "[[tamlayan hâli|tamlayan]]",
}
local function caseLabel(k2) return CASE_LABELS[k2] or k2 end
-- ── Görünüm stilleri ──
local cardStyle = 'class="mw-collapsible" style="max-width:48em; width:100%;'
.. ' margin:.45em 0; border:1px solid #c8ccd1; border-radius:.35em;'
.. ' overflow:hidden; background:#fff;"'
local titleStyle = 'class="mw-collapsible-toggle" style="float:none; display:block;'
.. ' padding:.38em .6em; background:#f6f8fa; border-bottom:1px solid #d8dee4;'
.. ' font-weight:700; text-align:center; font-size:102%;'
.. ' cursor:pointer; user-select:none;"'
local contentStyle = 'class="mw-collapsible-content" style="overflow-x:auto;"'
local tableStyle = 'style="width:100%; min-width:30em; margin:0;'
.. ' border-collapse:collapse; background:#fff; text-align:center; font-size:95%;"'
local headCellStyle = 'style="padding:.32em .5em; background:#f6f8fa;'
.. ' border-bottom:1px solid #d8dee4; font-weight:700; white-space:nowrap;"'
local rowHeadStyle = 'style="width:28%; padding:.32em .5em; background:#fbfbfc;'
.. ' border-top:1px solid #edf0f2; text-align:left; white-space:nowrap; font-weight:600;"'
local dataCellStyle = 'style="padding:.32em .5em; border-top:1px solid #edf0f2;'
.. ' border-left:1px solid #edf0f2; text-align:center;"'
local personHeadStyle = 'style="padding:.34em .5em; background:#f6f8fa;'
.. ' border-top:1px solid #d8dee4; border-bottom:1px solid #edf0f2;'
.. ' text-align:left; font-weight:700;"'
-- ── Satır oluşturucular ──
local function headerRow(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
.. "\n! " .. headCellStyle .. " | [[çoğul]]"
end
local function headerRowSingle(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
end
local function row(caseKey, sgText, plText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
.. "\n| " .. dataCellStyle .. " | " .. plText
end
local function rowSingle(caseKey, sgText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
end
local function personHeader(label)
return "\n|-"
.. "\n! colspan=\"3\" " .. personHeadStyle .. " | " .. label
end
local function personHeaderSingle(label)
return "\n|-"
.. "\n! colspan=\"2\" " .. personHeadStyle .. " | " .. label
end
local persons = {
{ key = "1t", left = "1. tekil ([[benim]])" },
{ key = "2t", left = "2. tekil ([[senin]])" },
{ key = "3t", left = "3. tekil ([[onun]])" },
{ key = "1ç", left = "1. çoğul ([[bizim]])" },
{ key = "2ç", left = "2. çoğul ([[sizin]])" },
{ key = "3ç", left = "3. çoğul ([[onların]])" },
}
local out = {}
-- ── Özel ad / özel addan türemiş çekim tablosu (yalnızca tekil) ──
if useProperTable then
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
out[#out+1] = rowSingle("yalın", lemma, true)
else
out[#out+1] = rowSingle(c, link(form({ number = "sg", case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- İyelik tablosu (yalnızca tekil sütun)
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeaderSingle(person.left)
-- 3ç satırında tekil iyelik formu 3t ile aynıdır.
local possKey = (person.key == "3ç") and "3t" or person.key
for _, c in ipairs(casesOrder) do
out[#out+1] = rowSingle(c, link(form({ number = "sg", poss = possKey, case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- ── Ana çekim tablosu (özel olmayan adlar) ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
local pl = link(form({ number = "pl", case = "yalın" }))
out[#out+1] = row("yalın", lemma, pl, true)
else
local sg = link(form({ number = "sg", case = c }))
local pl = link(form({ number = "pl", case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- ── İyelik tablosu ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeader(person.left)
for _, c in ipairs(casesOrder) do
if person.key == "3ç" then
-- Tekil sütun: "onun evi" = 3t+sg / Çoğul sütun: "onların evi" = 3ç+pl
local sg = link(form({ number = "sg", poss = "3t", case = c }))
local pl = link(form({ number = "pl", poss = "3ç", case = c }))
out[#out+1] = row(c, sg, pl, false)
else
local sg = link(form({ number = "sg", poss = person.key, case = c }))
local pl = link(form({ number = "pl", poss = person.key, case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- invoke giriş noktası
function p.ad(frame)
return p.adTablo(frame)
end
-- Düzeltme [7]: kullanılmayan i1-i4 parametreleri kaldırıldı.
-- İmza: p.ayarla(bas, istisna, sayi, hal, ak)
function p.ayarla(bas, istisna, sayi, hal, ak)
return p.form(bas, {
it = istisna,
k = ak,
number = (sayi == "çoğul" and "pl" or "sg"),
case = hal or "yalın",
})
end
-- [[Modül:çekim/şablonlar]] tarafından kullanılan ters-arama motoru.
function p.cekim_tr(args)
local ad = args[1]
local cekim = mw.title.getCurrentTitle()["text"]
local it = args["istisna"]
local k = args["k"] or args["a"]
if u.find(cekim, "'") then k = "1" end
local function virgul(tablo)
if tablo[1] then table.insert(tablo, ";") end
end
-- Düzeltme [8]: cekimler tablosu sadeleştirildi; p.ayarla'nın yeni imzasına uygun.
local cekimler = {
{ "yalın" },
{ "belirtme" },
{ "yönelme" },
{ "bulunma" },
{ "ayrılma" },
{ "tamlayan" },
}
-- Düzeltme [8]: iyelik tablosu sadeleştirildi.
local iyelik = {
{ "1t" }, { "2t" }, { "3t" },
{ "1ç" }, { "2ç" }, { "3ç" },
}
local function tumDurumlar(say, kisi, ozel)
say = tostring(say or "")
if say == "" then return end
for _, c in ipairs(cekimler) do
local hal = c[1]
if cekim == p.ayarla(say, it, "tekil", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
-- "evleri" gibi kökünde -ler/-lar taşıyan iyelik biçimleri çoğul sayılır.
if ozel and u.find(say, "l[ea]r") then
table.insert(args[3], "ç")
else
table.insert(args[3], "t")
end
end
if cekim == p.ayarla(say, it, "çoğul", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
table.insert(args[3], "ç")
end
end
end
tumDurumlar(ad)
-- Not: Türkçe'de 3t+çoğul ve 3ç+tekil aynı formu üretir ("evleri" gibi).
-- Bu yapısal belirsizlik beklenen davranıştır; her iki etiket de kayıt altına alınır.
for _, s in ipairs(iyelik) do
local poss_code = s[1]
local tekil = p.form(ad, { it = it, k = k, number = "sg", poss = poss_code, case = "yalın" })
local cogul = p.form(ad, { it = it, k = k, number = "pl", poss = poss_code, case = "yalın" })
tumDurumlar(tekil, poss_code, true)
tumDurumlar(cogul, poss_code, true)
end
if not args[3][1] then table.insert(args[3], "belirtilmemiş") end
end
return p
imedqtfs9nl6izirotjyemzbprawyd5
5658314
5658313
2026-05-15T17:48:24Z
Satirdan kahraman
37401
Osmanlı Türkçesini düzeltmek için
5658314
Scribunto
text/plain
-- Module:tr-ad
-- Baştan yazım: daha modüler, daha az heuristik, daha az çakışma.
--
-- Düzeltmeler (v2):
-- [1] harmI : force_incelme=true + û köşe durumu → "u" yerine "ü" döndürüyor.
-- [2] soften : ikizleşmiş tüm ünsüzler (pp dahil) artık yumuşamıyor.
-- [3] soften : -[ünlü]log$ deseniyle daha fazla -log sözcüğü yakalanıyor
-- (prolog, epilog, monolog, analog …).
-- [4] attach : is_proper bayrağı kaldırıldı; yumuşama tek elden allow_soften.
-- [5] p.form : özel adlar için allow_soften = false; kesme işareti son adımda,
-- suffix hesaplamasından sonra temiz biçimde ekleniyor.
-- [6] IST_BIL : setmetatable kaldırıldı, isAutoCompound() fonksiyonu eklendi.local isComp =
-- [7] p.ayarla : kullanılmayan i1-i4 parametreleri kaldırıldı.
-- [8] cekim_tr : p.ayarla çağrıları ve cekimler tablosu güncellendi.
-- [9] link : mw.title.new pcall ile koruma altına alındı.
-- [10] dropLastVowelOnce: ters-çevirme döngüsü yerine doğrudan indis tarama.
-- [11] possStem : 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local p = {}
local u = mw.ustring
local trim = mw.text.trim
-- ── İstisna listeleri ─────────────────────────────────────────────────────────
local ist = require("Modül:tr-ad/istisnalar")
local IST_YUM = ist.istisnaYumusama or {}
local IST_INC = ist.istisnaIncelme or {}
local IST_DUS = ist.istisnaDusme or {}
local IST_BIL = ist.istisnaBilesik or {}
local IST_YALIN_SON = ist.istisnaYalinSonlu or {}
local IST_IKI = ist.istisnaIkizlesme or {}
-- Kökte gerçekten "s" bulunan sıfır-kök bileşikler (kafes+i → kafesi).
local KOK_SON_S_FORMLAR = {
["kafesi"] = true,
}
-- Bu kökler bileşikte k'ye geri çevrilmez (ağ, bağ …).
local KOK_SON_YUMUSAK_G = {
["ağ"] = true, ["bağ"] = true, ["çağ"] = true,
["dağ"] = true, ["yağ"] = true,
}
-- g → ğ yumuşaması yapılacak yabancı kökenli sözcükler.
local G_YUMUSAMA = {
["katalog"] = true, ["diyalog"] = true,
}
-- ── Temel yardımcılar ─────────────────────────────────────────────────────────
local V = {
a = true, e = true, ["ı"] = true, i = true,
o = true, ["ö"] = true, u = true, ["ü"] = true,
["â"] = true, ["î"] = true, ["û"] = true,
}
local HARD = {
p = true, ["ç"] = true, t = true, k = true,
f = true, h = true, s = true, ["ş"] = true,
}
local function lower(s) return u.lower(s or "") end
local function lastChar(s) return u.sub(s, -1) end
local function endsWithVowel(s)
return V[lower(lastChar(s))] == true
end
local function lastVowel(s)
s = lower(s or "")
for i = u.len(s), 1, -1 do
local ch = u.sub(s, i, i)
if V[ch] then return ch end
end
return nil
end
-- Normalizasyon: küçük harf + şapkalı harfleri düzleştir.
local function norm(s)
s = trim(s or "")
s = u.lower(s)
s = u.gsub(s, "â", "a")
s = u.gsub(s, "î", "i")
s = u.gsub(s, "û", "u")
s = u.gsub(s, "İ", "i")
return s
end
local UPPER_INITIAL = {
["A"]=true,["B"]=true,["C"]=true,["Ç"]=true,["D"]=true,
["E"]=true,["F"]=true,["G"]=true,["Ğ"]=true,["H"]=true,
["I"]=true,["İ"]=true,["J"]=true,["K"]=true,["L"]=true,
["M"]=true,["N"]=true,["O"]=true,["Ö"]=true,["P"]=true,
["R"]=true,["S"]=true,["Ş"]=true,["T"]=true,["U"]=true,
["Ü"]=true,["V"]=true,["Y"]=true,["Z"]=true,
}
local function startsWithUpper(lemma)
lemma = trim(lemma or "")
if lemma == "" then return false end
return UPPER_INITIAL[u.sub(lemma, 1, 1)] == true
end
local function lastWordNorm(s)
local n = norm(s or "")
return u.match(n, "%S+$") or n
end
-- ── Özel ad tespiti ───────────────────────────────────────────────────────────
local DERIVED_PROPER_NO_APOSTROPHE = {
["türkçe"]=true, ["ingilizce"]=true, ["almanca"]=true,
["fransızca"]=true, ["arapça"]=true, ["farsça"]=true,
["rusça"]=true, ["italyanca"]=true, ["ispanyolca"]=true,
["yunanca"]=true, ["kürtçe"]=true, ["zazaca"]=true,
["türklük"]=true, ["türkçülük"]=true, ["türkçü"]=true,
["müslümanlık"]=true,["hristiyanlık"]=true,
["konyalı"]=true, ["bursalı"]=true, ["istanbullu"]=true,
["izmirli"]=true, ["avrupalı"]=true, ["asyalı"]=true,
["afrikalı"]=true, ["hollandalı"]=true, ["almanyalı"]=true,
["fransalı"]=true, ["rusyalı"]=true,
}
-- Büyük harfle başladığı hâlde kesme işareti gerektiren özel sözcükler.
local FORCE_APOSTROPHE_PROPER = {
["ali"]=true, ["veli"]=true, ["güler"]=true,
["şişli"]=true, ["foça"]=true, ["buca"]=true, ["ılıca"]=true,
}
local function isDerivedProperNoApostrophe(lemma)
local n = norm(lemma or "")
local last = lastWordNorm(lemma)
if n == "" then return false end
if FORCE_APOSTROPHE_PROPER[n] or FORCE_APOSTROPHE_PROPER[last] then
return false
end
if DERIVED_PROPER_NO_APOSTROPHE[n] or DERIVED_PROPER_NO_APOSTROPHE[last] then
return true
end
-- Türkçe, İngilizce, Hekimoğluca vb. (≥6 harf, -ca/-ce/-ça/-çe)
if u.len(last) >= 6 and (
u.find(last, "ca$") or u.find(last, "ce$") or
u.find(last, "ça$") or u.find(last, "çe$")
) then return true end
-- Türklük, Türkçülük vb.
if u.find(last, "lık$") or u.find(last, "lik$")
or u.find(last, "luk$") or u.find(last, "lük$") then return true end
return false
end
local function isAutoProperName(lemma)
if not startsWithUpper(lemma) then return false end
if isDerivedProperNoApostrophe(lemma) then return false end
return true
end
local function isPossessiveSurnameEnding(lemma)
local last = lastWordNorm(lemma)
if u.find(last, "oğlu$") then return true end
if u.find(last, "oğulları$") then return true end
return false
end
-- ── Bileşik otomatik tespiti ──────────────────────────────────────────────────
-- Eski IST_BIL setmetatable() yaklaşımının yerini aldı.
-- Çok kelimeli, ı/i/u/ü ile biten ifadeler bileşik kabul edilir;
-- -ıcı/-ici/-ucu/-ücü gibi aletlik son eklerini ayırt eder.
local function otomatikYalinSonluMu(last_word)
last_word = u.lower(last_word or "")
return u.find(last_word, "[ıiuü]c[ıiuü]$") ~= nil
end
local function isAutoCompound(normed)
if not u.find(normed, " ") then return false end
local last_char = u.sub(normed, -1)
if last_char ~= "ı" and last_char ~= "i"
and last_char ~= "u" and last_char ~= "ü" then return false end
local last_word = u.match(normed, "%s(%S+)$")
if last_word then
if IST_YALIN_SON[last_word] or otomatikYalinSonluMu(last_word) then
return false
end
end
return true
end
-- ── Ünlü uyumu ────────────────────────────────────────────────────────────────
-- 2'li uyum (A/E)
local function harmA(stem, force_incelme)
local lv = lastVowel(stem) or "a"
if force_incelme then return "e" end
if lv == "e" or lv == "i" or lv == "ö" or lv == "ü" or lv == "î" then
return "e"
end
return "a"
end
-- 4'lü uyum (I)
-- Düzeltme [1]: force_incelme=true + û → "ü" (daha önce "u" dönüyordu).
local function harmI(stem, force_incelme)
local lv = lastVowel(stem) or "ı"
if force_incelme then
if lv == "a" or lv == "ı" or lv == "â" then return "i" end
if lv == "o" or lv == "u" or lv == "û" then return "ü" end
-- e, i, î, ö, ü zaten ince → normal akışa devam.
end
if lv == "a" or lv == "ı" then return "ı" end
if lv == "e" or lv == "i" or lv == "î" then return "i" end
if lv == "o" or lv == "u" then return "u" end
if lv == "â" then return "ı" end
if lv == "û" then return "u" end
return "ü"
end
-- t/d seçimi (sert ünsüz sonrası t)
local function chooseD(stem)
if HARD[lower(lastChar(stem))] then return "t" end
return "d"
end
-- ── Çoğul ─────────────────────────────────────────────────────────────────────
local function pluralSuffix(stem, force_incelme)
return "l" .. harmA(stem, force_incelme) .. "r"
end
-- oğul → oğullar (düzensiz çoğul tabanı)
local function pluralBase(stem)
if u.find(stem, "oğl$") then
return u.sub(stem, 1, -4) .. "oğul"
end
return stem
end
local function makePluralStem(stem, force_incelme)
local pbase = pluralBase(stem)
return pbase .. pluralSuffix(pbase, force_incelme)
end
-- ── Ünsüz dönüşümleri ─────────────────────────────────────────────────────────
-- Yumuşama: pçtk → bcdğ, yalnızca ünlüyle başlayan ek gelince.
-- Düzeltme [2]: ikizleşmiş tüm ünsüzler (pp/çç/tt/kk) artık yumuşamıyor.
-- Düzeltme [3]: -[ünlü]log$ deseni daha geniş -log sözcüklerini yakalar.
local function soften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
-- İkizleşmiş ünsüz: hiçbiri yumuşamaz.
if c == prev and (c == "p" or c == "ç" or c == "t" or c == "k") then
return stem
end
if c == "p" then return u.sub(stem, 1, -2) .. "b" end
if c == "ç" then return u.sub(stem, 1, -2) .. "c" end
if c == "t" then return u.sub(stem, 1, -2) .. "d" end
if c == "k" then
if prev == "n" then
return u.sub(stem, 1, -2) .. "g"
end
return u.sub(stem, 1, -2) .. "ğ"
end
if c == "g" then
local s = u.lower(stem or "")
-- katalog, diyalog, prolog, epilog, monolog, analog …
if u.find(s, "[aeıioöuü]log$") or G_YUMUSAMA[s] then
return u.sub(stem, 1, -2) .. "ğ"
end
end
return stem
end
-- Yumuşamayı geri al (bileşik tabanı temizlerken kullanılır).
local function unsoften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
if c == "b" then return u.sub(stem, 1, -2) .. "p" end
if c == "c" then return u.sub(stem, 1, -2) .. "ç" end
if c == "d" then return u.sub(stem, 1, -2) .. "t" end
if c == "ğ" then return u.sub(stem, 1, -2) .. "k" end
if c == "g" and prev == "n" then return u.sub(stem, 1, -2) .. "k" end
return stem
end
-- Ünlü düşmesi: kökün son ünlüsünü düşürür.
-- Düzeltme [10]: ters-çevirme döngüsü kaldırıldı; doğrudan indis taraması.
local function dropLastVowelOnce(stem)
local chars = {}
local len = u.len(stem)
for i = 1, len do chars[i] = u.sub(stem, i, i) end
for i = len, 1, -1 do
if V[lower(chars[i])] then
table.remove(chars, i)
break
end
end
return table.concat(chars)
end
-- İkizleşme: son ünsüzü çiftler.
local function geminateLastConsonant(stem)
return stem .. lastChar(stem)
end
-- ── İstisna sorgulama yardımcıları ───────────────────────────────────────────
local function isIncelme(lemma, it)
if it == "incelme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_INC[n] or IST_INC[last] or false
end
local function isSu(s)
local n = norm(s)
return n == "su"
or u.find(n, "[ %-\xe2\x80\x91]su$") ~= nil -- U+2011 non-breaking hyphen
or n == "akarsu"
or n == "özsu"
or n == "pissu"
end
-- Otomatik yumuşama kapatma kuralları
local function autoNoSoften(lemma)
if u.find(lemma, "ist$") then return true end
if u.find(lemma, "iyet$")
or u.find(lemma, "iyat$")
or u.find(lemma, "iyyet$") then return true end
if u.find(lemma, "[aeıioöuü]t$") then return true end
return false
end
-- Yumuşama beyaz listesi: autoNoSoften'ı geçersiz kılar.
local SOFTEN_WHITELIST = {
["kanat"]=true, ["kağıt"]=true, ["umut"]=true, ["öğüt"]=true,
["vücut"]=true, ["mabet"]=true, ["but"]=true,
["zebercet"]=true, ["haset"]=true,
}
local function isNoSoften(lemma, it)
if it == "yumuşama" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
if SOFTEN_WHITELIST[n] or SOFTEN_WHITELIST[last] then return false end
return IST_YUM[n] or IST_YUM[last]
or autoNoSoften(n) or autoNoSoften(last)
end
local function isDropVowel(lemma, it)
if it == "düşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_DUS[n] or IST_DUS[last] or false
end
local function isGeminate(lemma, it)
if it == "ikizleşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_IKI[n] or IST_IKI[last] or false
end
-- ── Ek bağlama ────────────────────────────────────────────────────────────────
-- Düzeltme [4]: is_proper bayrağı kaldırıldı.
-- Yumuşama yalnızca allow_soften üzerinden kontrol edilir.
local function attach(stem, suffix, opts)
opts = opts or {}
local base = stem
local first = u.sub(suffix, 1, 1) or ""
local isVowelInitial = (V[first] == true)
if isVowelInitial then
if opts.allow_soften then
base = soften(base)
end
if opts.buffer and endsWithVowel(base) then
base = base .. opts.buffer
end
end
return base .. suffix
end
-- ── Hâl ekleri ────────────────────────────────────────────────────────────────
local function caseForms(stem, force_incelme, opts)
opts = opts or {}
local out = {}
local buf_acc_dat = (opts.is_poss3 or opts.is_comp) and "n" or "y"
out["yalın"] = stem
-- belirtme: -(y/n)I
out["belirtme"] = attach(stem, harmI(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- yönelme: -(y/n)A
out["yönelme"] = attach(stem, harmA(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- bulunma: -DA / ayrılma: -DAn
local base_da = (opts.is_poss3 or opts.is_comp) and (stem .. "n") or stem
local d = chooseD(base_da)
local da_suf = d .. harmA(base_da, force_incelme)
out["bulunma"] = base_da .. da_suf
out["ayrılma"] = base_da .. da_suf .. "n"
-- tamlayan: -(n)In
local genBuf = isSu(stem) and "y" or "n"
out["tamlayan"] = attach(stem, harmI(stem, force_incelme) .. "n",
{ buffer = genBuf, allow_soften = opts.allow_soften })
return out
end
-- ── İyelik ekleri ─────────────────────────────────────────────────────────────
-- Düzeltme [11]: 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local function possStem(lemma, person, force_incelme, opts)
opts = opts or {}
local stem = lemma or ""
local harmony_stem = opts.harmony_stem or stem
local i = harmI(harmony_stem, force_incelme)
local endsV = endsWithVowel(stem)
-- su istisnası: suyu, suyum …
if isSu(lemma) and person ~= "3ç" then
stem = stem .. "y"
endsV = false
end
local ao = { allow_soften = opts.allow_soften }
if person == "1t" then
return attach(stem, endsV and "m" or (i .. "m"), ao)
elseif person == "2t" then
return attach(stem, endsV and "n" or (i .. "n"), ao)
elseif person == "3t" then
return attach(stem, i, { buffer = "s", allow_soften = opts.allow_soften })
elseif person == "1ç" then
-- ünlü-biten: -mIz | ünsüz-biten: -ImIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "m" or (i .. "m")) .. harmI(mid .. "m", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "2ç" then
-- ünlü-biten: -nIz | ünsüz-biten: -InIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "n" or (i .. "n")) .. harmI(mid .. "n", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "3ç" then
-- Kök hâlinde çoğul eki zaten taşıyorsa ek tekrar eklenmez.
if u.find(stem or "", "l[ae]r$") then
return stem .. harmI(stem, force_incelme)
end
local ps = makePluralStem(stem, force_incelme)
return ps .. harmI(ps, force_incelme)
end
return stem
end
-- ── Bileşik taban temizliği ───────────────────────────────────────────────────
-- IST_DUS'tan "düşmüş biçimler → asıl kökler" haritası.
-- Modül yüklenirken bir kez hesaplanır.
local DROPPED_MAP = {}
local DROPPED_KEYS = {}
for k in pairs(IST_DUS) do
local d = dropLastVowelOnce(k)
if d and d ~= k then DROPPED_MAP[d] = k end
end
for d in pairs(DROPPED_MAP) do
DROPPED_KEYS[#DROPPED_KEYS + 1] = d
end
table.sort(DROPPED_KEYS, function(a, b) return u.len(a) > u.len(b) end)
local function restoreDroppedCompoundBase(base)
local nbase = norm(base)
for _, d in ipairs(DROPPED_KEYS) do
local dlen = u.len(d)
if u.sub(nbase, -dlen) == d then
local prefix = u.sub(base, 1, u.len(base) - dlen)
return prefix .. DROPPED_MAP[d], true
end
end
return base, false
end
local function getCompoundBase(lemma)
local base = lemma or ""
local nlemma = norm(base)
local last_word = u.match(nlemma, "%S+$") or nlemma
if KOK_SON_S_FORMLAR[last_word] then
if u.find(base, "[ıiuü]$") then base = u.sub(base, 1, -2) end
elseif u.find(base, "s[ıiuü]$") then
base = u.sub(base, 1, -3)
elseif u.find(base, "[ıiuü]$") then
base = u.sub(base, 1, -2)
end
local last_base = u.match(norm(base), "%S+$") or norm(base)
if not KOK_SON_YUMUSAK_G[last_base] then
base = unsoften(base)
end
-- su istisnası: çamaşır suyu → çamaşır su
if u.sub(base, -1) == "y" and isSu(u.sub(base, 1, -2)) then
base = u.sub(base, 1, -2)
end
return base
end
-- ── Ana çekim motoru ──────────────────────────────────────────────────────────
function p.form(lemma, spec)
spec = spec or {}
lemma = trim(lemma or "")
if lemma == "" then return "" end
local it = spec.it
local k = spec.k
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
-- Düzeltme [5]: isProper bayrağı; kesme işareti ve yumuşama buradan yönetilir.
local isProper = (k == "1")
local force_incelme = isIncelme(lemma, it)
local n_lemma = norm(lemma)
local isComp =
(it == "bileşik")
or IST_BIL[n_lemma]
or isAutoCompound(n_lemma) -- Düzeltme [6]
or isPossessiveSurnameEnding(lemma)
or (u.find(n_lemma, "başı$") ~= nil)
local useCompoundBase = isComp and not isProper
local compBase = useCompoundBase and getCompoundBase(lemma) or nil
if isComp and not compBase then compBase = lemma end
local compOriginBase, _compHadDrop = compBase, false
if isComp and compBase then
compOriginBase, _compHadDrop = restoreDroppedCompoundBase(compBase)
end
-- allow_soften: özel adlarda daima false (kesme işareti ile birlikte yumuşama olmaz).
-- Bileşiklerde yumuşama kararı asıl köke (compOriginBase) göre verilir.
local soften_base = compOriginBase or compBase or lemma
local allow_soften
if isProper then
allow_soften = false
else
allow_soften = not isNoSoften(soften_base, it)
end
local do_drop = isDropVowel(lemma, it)
local do_gem = isGeminate(lemma, it)
local stem_only = lemma
local isPlural = (spec.number == "pl")
local isCompoundPluralPoss = false
-- ── 1) Çoğul ──
if isPlural then
if useCompoundBase then
local pluralBaseForComp = compOriginBase or compBase
if spec.poss and spec.poss ~= "3ç" then
-- zeval vakitlerim, ayçiçeklerim …
stem_only = makePluralStem(pluralBaseForComp, force_incelme)
isCompoundPluralPoss = true
else
-- gözyaşları, ayçiçekleri …
local ps = makePluralStem(pluralBaseForComp, force_incelme)
stem_only = ps .. harmI(ps, force_incelme)
end
else
stem_only = stem_only .. pluralSuffix(stem_only, force_incelme)
end
else
-- ── 2) Ünlü düşmesi / ikizleşme (yalnızca tekil, ünlü-başlı ek varsa) ──
if not isComp then
local isFirstSuffixVowel = false
if spec.poss then
isFirstSuffixVowel = not endsWithVowel(stem_only)
if spec.poss == "3t" or spec.poss == "3ç" then
isFirstSuffixVowel = true
end
elseif spec.case == "belirtme"
or spec.case == "yönelme"
or spec.case == "tamlayan" then
isFirstSuffixVowel = true
end
if isFirstSuffixVowel then
if do_drop then stem_only = dropLastVowelOnce(stem_only) end
if do_gem then stem_only = geminateLastConsonant(stem_only) end
end
end
end
-- -- ── 3) İyelik ──
if spec.poss then
-- Özel adlarda iyelik eki, bileşik tabanı soyulmadan doğrudan madde adına gelir.
-- Osmanlı Türkçesi + m → Osmanlı Türkçesi'm
-- Osmanlı Türkçesi + si → Osmanlı Türkçesi'si
--
-- Burada compBase kullanılmaz; yoksa Türkçesi → Türkçes tabanına düşer
-- ve kesme işareti sonrası ek bölümü yanlış hesaplanır.
if isProper then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
elseif useCompoundBase and not isCompoundPluralPoss then
stem_only = possStem(compBase, spec.poss, force_incelme, {
allow_soften = allow_soften,
harmony_stem = compOriginBase or compBase,
})
elseif isCompoundPluralPoss then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
else
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = allow_soften,
})
end
end
-- ── 4) Hâl ──
local is_poss3 = (spec.poss == "3t" or spec.poss == "3ç")
local needs_n = is_poss3
or (isComp and (not spec.poss or isPlural) and not isCompoundPluralPoss)
local cases = caseForms(stem_only, force_incelme, {
allow_soften = allow_soften,
is_poss3 = needs_n,
is_comp = needs_n,
})
local out = cases[spec.case or "yalın"] or stem_only
-- ── 5) Özel adlarda kesme işareti ──
-- Düzeltme [5]: tüm dönüşümler bittikten sonra, yalnızca tekil biçimlerde,
-- ve yalnızca lemma'da henüz kesme yoksa eklenir.
if isProper and not isPlural and not u.find(lemma, "'") then
local suffix_part = u.sub(out, u.len(lemma) + 1)
return lemma .. "'" .. suffix_part
end
return out
end
-- ── Wiki tablosu üretimi ──────────────────────────────────────────────────────
function p.adTablo(frame)
local args = frame.args
local hasAny = false
for _ in pairs(args) do hasAny = true; break end
if not hasAny then
local parent = frame:getParent()
args = (parent and parent.args) or {}
end
local lemma = trim(args[1] or args["ad"] or mw.title.getCurrentTitle().text or "")
local it = args["istisna"]
local k = args["k"] or args["a"]
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
local isProper = (k == "1")
local useProperTable = isProper or derivedNoApostrophe
local casesOrder = { "yalın", "belirtme", "yönelme", "bulunma", "ayrılma", "tamlayan" }
local function form(spec)
spec = spec or {}
spec.it = it
spec.k = k
return p.form(lemma, spec)
end
-- Düzeltme [9]: mw.title.new hata fırlatabilir; pcall ile koruma.
local linkCache = {}
local function link(s)
s = trim(tostring(s or ""))
if s == "" then return s end
local exists = linkCache[s]
if exists == nil then
local ok, title = pcall(mw.title.new, s, 0)
exists = ok and title and title.exists or false
linkCache[s] = exists
end
if exists then
return "[[" .. s .. "]]"
end
return "[[" .. s .. "|<span style=\"color:#202122;\">" .. mw.text.nowiki(s) .. "</span>]]"
end
local CASE_LABELS = {
["yalın"] = "[[yalın hâl|yalın]]",
["belirtme"] = "[[belirtme hâli|belirtme]]",
["yönelme"] = "[[yönelme hâli|yönelme]]",
["bulunma"] = "[[bulunma hâli|bulunma]]",
["ayrılma"] = "[[ayrılma hâli|ayrılma]]",
["tamlayan"] = "[[tamlayan hâli|tamlayan]]",
}
local function caseLabel(k2) return CASE_LABELS[k2] or k2 end
-- ── Görünüm stilleri ──
local cardStyle = 'class="mw-collapsible" style="max-width:48em; width:100%;'
.. ' margin:.45em 0; border:1px solid #c8ccd1; border-radius:.35em;'
.. ' overflow:hidden; background:#fff;"'
local titleStyle = 'class="mw-collapsible-toggle" style="float:none; display:block;'
.. ' padding:.38em .6em; background:#f6f8fa; border-bottom:1px solid #d8dee4;'
.. ' font-weight:700; text-align:center; font-size:102%;'
.. ' cursor:pointer; user-select:none;"'
local contentStyle = 'class="mw-collapsible-content" style="overflow-x:auto;"'
local tableStyle = 'style="width:100%; min-width:30em; margin:0;'
.. ' border-collapse:collapse; background:#fff; text-align:center; font-size:95%;"'
local headCellStyle = 'style="padding:.32em .5em; background:#f6f8fa;'
.. ' border-bottom:1px solid #d8dee4; font-weight:700; white-space:nowrap;"'
local rowHeadStyle = 'style="width:28%; padding:.32em .5em; background:#fbfbfc;'
.. ' border-top:1px solid #edf0f2; text-align:left; white-space:nowrap; font-weight:600;"'
local dataCellStyle = 'style="padding:.32em .5em; border-top:1px solid #edf0f2;'
.. ' border-left:1px solid #edf0f2; text-align:center;"'
local personHeadStyle = 'style="padding:.34em .5em; background:#f6f8fa;'
.. ' border-top:1px solid #d8dee4; border-bottom:1px solid #edf0f2;'
.. ' text-align:left; font-weight:700;"'
-- ── Satır oluşturucular ──
local function headerRow(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
.. "\n! " .. headCellStyle .. " | [[çoğul]]"
end
local function headerRowSingle(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
end
local function row(caseKey, sgText, plText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
.. "\n| " .. dataCellStyle .. " | " .. plText
end
local function rowSingle(caseKey, sgText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
end
local function personHeader(label)
return "\n|-"
.. "\n! colspan=\"3\" " .. personHeadStyle .. " | " .. label
end
local function personHeaderSingle(label)
return "\n|-"
.. "\n! colspan=\"2\" " .. personHeadStyle .. " | " .. label
end
local persons = {
{ key = "1t", left = "1. tekil ([[benim]])" },
{ key = "2t", left = "2. tekil ([[senin]])" },
{ key = "3t", left = "3. tekil ([[onun]])" },
{ key = "1ç", left = "1. çoğul ([[bizim]])" },
{ key = "2ç", left = "2. çoğul ([[sizin]])" },
{ key = "3ç", left = "3. çoğul ([[onların]])" },
}
local out = {}
-- ── Özel ad / özel addan türemiş çekim tablosu (yalnızca tekil) ──
if useProperTable then
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
out[#out+1] = rowSingle("yalın", lemma, true)
else
out[#out+1] = rowSingle(c, link(form({ number = "sg", case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- İyelik tablosu (yalnızca tekil sütun)
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeaderSingle(person.left)
-- 3ç satırında tekil iyelik formu 3t ile aynıdır.
local possKey = (person.key == "3ç") and "3t" or person.key
for _, c in ipairs(casesOrder) do
out[#out+1] = rowSingle(c, link(form({ number = "sg", poss = possKey, case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- ── Ana çekim tablosu (özel olmayan adlar) ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
local pl = link(form({ number = "pl", case = "yalın" }))
out[#out+1] = row("yalın", lemma, pl, true)
else
local sg = link(form({ number = "sg", case = c }))
local pl = link(form({ number = "pl", case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- ── İyelik tablosu ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeader(person.left)
for _, c in ipairs(casesOrder) do
if person.key == "3ç" then
-- Tekil sütun: "onun evi" = 3t+sg / Çoğul sütun: "onların evi" = 3ç+pl
local sg = link(form({ number = "sg", poss = "3t", case = c }))
local pl = link(form({ number = "pl", poss = "3ç", case = c }))
out[#out+1] = row(c, sg, pl, false)
else
local sg = link(form({ number = "sg", poss = person.key, case = c }))
local pl = link(form({ number = "pl", poss = person.key, case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- invoke giriş noktası
function p.ad(frame)
return p.adTablo(frame)
end
-- Düzeltme [7]: kullanılmayan i1-i4 parametreleri kaldırıldı.
-- İmza: p.ayarla(bas, istisna, sayi, hal, ak)
function p.ayarla(bas, istisna, sayi, hal, ak)
return p.form(bas, {
it = istisna,
k = ak,
number = (sayi == "çoğul" and "pl" or "sg"),
case = hal or "yalın",
})
end
-- [[Modül:çekim/şablonlar]] tarafından kullanılan ters-arama motoru.
function p.cekim_tr(args)
local ad = args[1]
local cekim = mw.title.getCurrentTitle()["text"]
local it = args["istisna"]
local k = args["k"] or args["a"]
if u.find(cekim, "'") then k = "1" end
local function virgul(tablo)
if tablo[1] then table.insert(tablo, ";") end
end
-- Düzeltme [8]: cekimler tablosu sadeleştirildi; p.ayarla'nın yeni imzasına uygun.
local cekimler = {
{ "yalın" },
{ "belirtme" },
{ "yönelme" },
{ "bulunma" },
{ "ayrılma" },
{ "tamlayan" },
}
-- Düzeltme [8]: iyelik tablosu sadeleştirildi.
local iyelik = {
{ "1t" }, { "2t" }, { "3t" },
{ "1ç" }, { "2ç" }, { "3ç" },
}
local function tumDurumlar(say, kisi, ozel)
say = tostring(say or "")
if say == "" then return end
for _, c in ipairs(cekimler) do
local hal = c[1]
if cekim == p.ayarla(say, it, "tekil", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
-- "evleri" gibi kökünde -ler/-lar taşıyan iyelik biçimleri çoğul sayılır.
if ozel and u.find(say, "l[ea]r") then
table.insert(args[3], "ç")
else
table.insert(args[3], "t")
end
end
if cekim == p.ayarla(say, it, "çoğul", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
table.insert(args[3], "ç")
end
end
end
tumDurumlar(ad)
-- Not: Türkçe'de 3t+çoğul ve 3ç+tekil aynı formu üretir ("evleri" gibi).
-- Bu yapısal belirsizlik beklenen davranıştır; her iki etiket de kayıt altına alınır.
for _, s in ipairs(iyelik) do
local poss_code = s[1]
local tekil = p.form(ad, { it = it, k = k, number = "sg", poss = poss_code, case = "yalın" })
local cogul = p.form(ad, { it = it, k = k, number = "pl", poss = poss_code, case = "yalın" })
tumDurumlar(tekil, poss_code, true)
tumDurumlar(cogul, poss_code, true)
end
if not args[3][1] then table.insert(args[3], "belirtilmemiş") end
end
return p
8glmxvma1fp8fi52gurgorqy1aj1u2x
5658318
5658314
2026-05-15T18:02:58Z
Satirdan kahraman
37401
Osmanlı Türkçesini düzeltmek için
5658318
Scribunto
text/plain
-- Module:tr-ad
-- Baştan yazım: daha modüler, daha az heuristik, daha az çakışma.
--
-- Düzeltmeler (v2):
-- [1] harmI : force_incelme=true + û köşe durumu → "u" yerine "ü" döndürüyor.
-- [2] soften : ikizleşmiş tüm ünsüzler (pp dahil) artık yumuşamıyor.
-- [3] soften : -[ünlü]log$ deseniyle daha fazla -log sözcüğü yakalanıyor
-- (prolog, epilog, monolog, analog …).
-- [4] attach : is_proper bayrağı kaldırıldı; yumuşama tek elden allow_soften.
-- [5] p.form : özel adlar için allow_soften = false; kesme işareti son adımda,
-- suffix hesaplamasından sonra temiz biçimde ekleniyor.
-- [6] IST_BIL : setmetatable kaldırıldı, isAutoCompound() fonksiyonu eklendi.local isComp =
-- [7] p.ayarla : kullanılmayan i1-i4 parametreleri kaldırıldı.
-- [8] cekim_tr : p.ayarla çağrıları ve cekimler tablosu güncellendi.
-- [9] link : mw.title.new pcall ile koruma altına alındı.
-- [10] dropLastVowelOnce: ters-çevirme döngüsü yerine doğrudan indis tarama.
-- [11] possStem : 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local p = {}
local u = mw.ustring
local trim = mw.text.trim
-- ── İstisna listeleri ─────────────────────────────────────────────────────────
local ist = require("Modül:tr-ad/istisnalar")
local IST_YUM = ist.istisnaYumusama or {}
local IST_INC = ist.istisnaIncelme or {}
local IST_DUS = ist.istisnaDusme or {}
local IST_BIL = ist.istisnaBilesik or {}
local IST_YALIN_SON = ist.istisnaYalinSonlu or {}
local IST_IKI = ist.istisnaIkizlesme or {}
-- Kökte gerçekten "s" bulunan sıfır-kök bileşikler (kafes+i → kafesi).
local KOK_SON_S_FORMLAR = {
["kafesi"] = true,
}
-- Bu kökler bileşikte k'ye geri çevrilmez (ağ, bağ …).
local KOK_SON_YUMUSAK_G = {
["ağ"] = true, ["bağ"] = true, ["çağ"] = true,
["dağ"] = true, ["yağ"] = true,
}
-- g → ğ yumuşaması yapılacak yabancı kökenli sözcükler.
local G_YUMUSAMA = {
["katalog"] = true, ["diyalog"] = true,
}
-- ── Temel yardımcılar ─────────────────────────────────────────────────────────
local V = {
a = true, e = true, ["ı"] = true, i = true,
o = true, ["ö"] = true, u = true, ["ü"] = true,
["â"] = true, ["î"] = true, ["û"] = true,
}
local HARD = {
p = true, ["ç"] = true, t = true, k = true,
f = true, h = true, s = true, ["ş"] = true,
}
local function lower(s) return u.lower(s or "") end
local function lastChar(s) return u.sub(s, -1) end
local function endsWithVowel(s)
return V[lower(lastChar(s))] == true
end
local function lastVowel(s)
s = lower(s or "")
for i = u.len(s), 1, -1 do
local ch = u.sub(s, i, i)
if V[ch] then return ch end
end
return nil
end
-- Normalizasyon: küçük harf + şapkalı harfleri düzleştir.
local function norm(s)
s = trim(s or "")
s = u.lower(s)
s = u.gsub(s, "â", "a")
s = u.gsub(s, "î", "i")
s = u.gsub(s, "û", "u")
s = u.gsub(s, "İ", "i")
return s
end
local UPPER_INITIAL = {
["A"]=true,["B"]=true,["C"]=true,["Ç"]=true,["D"]=true,
["E"]=true,["F"]=true,["G"]=true,["Ğ"]=true,["H"]=true,
["I"]=true,["İ"]=true,["J"]=true,["K"]=true,["L"]=true,
["M"]=true,["N"]=true,["O"]=true,["Ö"]=true,["P"]=true,
["R"]=true,["S"]=true,["Ş"]=true,["T"]=true,["U"]=true,
["Ü"]=true,["V"]=true,["Y"]=true,["Z"]=true,
}
local function startsWithUpper(lemma)
lemma = trim(lemma or "")
if lemma == "" then return false end
return UPPER_INITIAL[u.sub(lemma, 1, 1)] == true
end
local function lastWordNorm(s)
local n = norm(s or "")
return u.match(n, "%S+$") or n
end
-- ── Özel ad tespiti ───────────────────────────────────────────────────────────
local DERIVED_PROPER_NO_APOSTROPHE = {
["türkçe"]=true, ["ingilizce"]=true, ["almanca"]=true,
["fransızca"]=true, ["arapça"]=true, ["farsça"]=true,
["rusça"]=true, ["italyanca"]=true, ["ispanyolca"]=true,
["yunanca"]=true, ["kürtçe"]=true, ["zazaca"]=true,
["türklük"]=true, ["türkçülük"]=true, ["türkçü"]=true,
["müslümanlık"]=true,["hristiyanlık"]=true,
["konyalı"]=true, ["bursalı"]=true, ["istanbullu"]=true,
["izmirli"]=true, ["avrupalı"]=true, ["asyalı"]=true,
["afrikalı"]=true, ["hollandalı"]=true, ["almanyalı"]=true,
["fransalı"]=true, ["rusyalı"]=true,
}
-- Büyük harfle başladığı hâlde kesme işareti gerektiren özel sözcükler.
local FORCE_APOSTROPHE_PROPER = {
["ali"]=true, ["veli"]=true, ["güler"]=true,
["şişli"]=true, ["foça"]=true, ["buca"]=true, ["ılıca"]=true,
}
local function isDerivedProperNoApostrophe(lemma)
local n = norm(lemma or "")
local last = lastWordNorm(lemma)
if n == "" then return false end
if FORCE_APOSTROPHE_PROPER[n] or FORCE_APOSTROPHE_PROPER[last] then
return false
end
if DERIVED_PROPER_NO_APOSTROPHE[n] or DERIVED_PROPER_NO_APOSTROPHE[last] then
return true
end
-- Türkçe, İngilizce, Hekimoğluca vb. (≥6 harf, -ca/-ce/-ça/-çe)
if u.len(last) >= 6 and (
u.find(last, "ca$") or u.find(last, "ce$") or
u.find(last, "ça$") or u.find(last, "çe$")
) then return true end
-- Türklük, Türkçülük vb.
if u.find(last, "lık$") or u.find(last, "lik$")
or u.find(last, "luk$") or u.find(last, "lük$") then return true end
return false
end
local function isAutoProperName(lemma)
if not startsWithUpper(lemma) then return false end
if isDerivedProperNoApostrophe(lemma) then return false end
return true
end
local function isPossessiveSurnameEnding(lemma)
local last = lastWordNorm(lemma)
if u.find(last, "oğlu$") then return true end
if u.find(last, "oğulları$") then return true end
return false
end
-- ── Bileşik otomatik tespiti ──────────────────────────────────────────────────
-- Eski IST_BIL setmetatable() yaklaşımının yerini aldı.
-- Çok kelimeli, ı/i/u/ü ile biten ifadeler bileşik kabul edilir;
-- -ıcı/-ici/-ucu/-ücü gibi aletlik son eklerini ayırt eder.
local function otomatikYalinSonluMu(last_word)
last_word = u.lower(last_word or "")
return u.find(last_word, "[ıiuü]c[ıiuü]$") ~= nil
end
local function isAutoCompound(normed)
if not u.find(normed, " ") then return false end
local last_char = u.sub(normed, -1)
if last_char ~= "ı" and last_char ~= "i"
and last_char ~= "u" and last_char ~= "ü" then return false end
local last_word = u.match(normed, "%s(%S+)$")
if last_word then
if IST_YALIN_SON[last_word] or otomatikYalinSonluMu(last_word) then
return false
end
end
return true
end
-- ── Ünlü uyumu ────────────────────────────────────────────────────────────────
-- 2'li uyum (A/E)
local function harmA(stem, force_incelme)
local lv = lastVowel(stem) or "a"
if force_incelme then return "e" end
if lv == "e" or lv == "i" or lv == "ö" or lv == "ü" or lv == "î" then
return "e"
end
return "a"
end
-- 4'lü uyum (I)
-- Düzeltme [1]: force_incelme=true + û → "ü" (daha önce "u" dönüyordu).
local function harmI(stem, force_incelme)
local lv = lastVowel(stem) or "ı"
if force_incelme then
if lv == "a" or lv == "ı" or lv == "â" then return "i" end
if lv == "o" or lv == "u" or lv == "û" then return "ü" end
-- e, i, î, ö, ü zaten ince → normal akışa devam.
end
if lv == "a" or lv == "ı" then return "ı" end
if lv == "e" or lv == "i" or lv == "î" then return "i" end
if lv == "o" or lv == "u" then return "u" end
if lv == "â" then return "ı" end
if lv == "û" then return "u" end
return "ü"
end
-- t/d seçimi (sert ünsüz sonrası t)
local function chooseD(stem)
if HARD[lower(lastChar(stem))] then return "t" end
return "d"
end
-- ── Çoğul ─────────────────────────────────────────────────────────────────────
local function pluralSuffix(stem, force_incelme)
return "l" .. harmA(stem, force_incelme) .. "r"
end
-- oğul → oğullar (düzensiz çoğul tabanı)
local function pluralBase(stem)
if u.find(stem, "oğl$") then
return u.sub(stem, 1, -4) .. "oğul"
end
return stem
end
local function makePluralStem(stem, force_incelme)
local pbase = pluralBase(stem)
return pbase .. pluralSuffix(pbase, force_incelme)
end
-- ── Ünsüz dönüşümleri ─────────────────────────────────────────────────────────
-- Yumuşama: pçtk → bcdğ, yalnızca ünlüyle başlayan ek gelince.
-- Düzeltme [2]: ikizleşmiş tüm ünsüzler (pp/çç/tt/kk) artık yumuşamıyor.
-- Düzeltme [3]: -[ünlü]log$ deseni daha geniş -log sözcüklerini yakalar.
local function soften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
-- İkizleşmiş ünsüz: hiçbiri yumuşamaz.
if c == prev and (c == "p" or c == "ç" or c == "t" or c == "k") then
return stem
end
if c == "p" then return u.sub(stem, 1, -2) .. "b" end
if c == "ç" then return u.sub(stem, 1, -2) .. "c" end
if c == "t" then return u.sub(stem, 1, -2) .. "d" end
if c == "k" then
if prev == "n" then
return u.sub(stem, 1, -2) .. "g"
end
return u.sub(stem, 1, -2) .. "ğ"
end
if c == "g" then
local s = u.lower(stem or "")
-- katalog, diyalog, prolog, epilog, monolog, analog …
if u.find(s, "[aeıioöuü]log$") or G_YUMUSAMA[s] then
return u.sub(stem, 1, -2) .. "ğ"
end
end
return stem
end
-- Yumuşamayı geri al (bileşik tabanı temizlerken kullanılır).
local function unsoften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
if c == "b" then return u.sub(stem, 1, -2) .. "p" end
if c == "c" then return u.sub(stem, 1, -2) .. "ç" end
if c == "d" then return u.sub(stem, 1, -2) .. "t" end
if c == "ğ" then return u.sub(stem, 1, -2) .. "k" end
if c == "g" and prev == "n" then return u.sub(stem, 1, -2) .. "k" end
return stem
end
-- Ünlü düşmesi: kökün son ünlüsünü düşürür.
-- Düzeltme [10]: ters-çevirme döngüsü kaldırıldı; doğrudan indis taraması.
local function dropLastVowelOnce(stem)
local chars = {}
local len = u.len(stem)
for i = 1, len do chars[i] = u.sub(stem, i, i) end
for i = len, 1, -1 do
if V[lower(chars[i])] then
table.remove(chars, i)
break
end
end
return table.concat(chars)
end
-- İkizleşme: son ünsüzü çiftler.
local function geminateLastConsonant(stem)
return stem .. lastChar(stem)
end
-- ── İstisna sorgulama yardımcıları ───────────────────────────────────────────
local function isIncelme(lemma, it)
if it == "incelme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_INC[n] or IST_INC[last] or false
end
local function isSu(s)
local n = norm(s)
return n == "su"
or u.find(n, "[ %-\xe2\x80\x91]su$") ~= nil -- U+2011 non-breaking hyphen
or n == "akarsu"
or n == "özsu"
or n == "pissu"
end
-- Otomatik yumuşama kapatma kuralları
local function autoNoSoften(lemma)
if u.find(lemma, "ist$") then return true end
if u.find(lemma, "iyet$")
or u.find(lemma, "iyat$")
or u.find(lemma, "iyyet$") then return true end
if u.find(lemma, "[aeıioöuü]t$") then return true end
return false
end
-- Yumuşama beyaz listesi: autoNoSoften'ı geçersiz kılar.
local SOFTEN_WHITELIST = {
["kanat"]=true, ["kağıt"]=true, ["umut"]=true, ["öğüt"]=true,
["vücut"]=true, ["mabet"]=true, ["but"]=true,
["zebercet"]=true, ["haset"]=true,
}
local function isNoSoften(lemma, it)
if it == "yumuşama" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
if SOFTEN_WHITELIST[n] or SOFTEN_WHITELIST[last] then return false end
return IST_YUM[n] or IST_YUM[last]
or autoNoSoften(n) or autoNoSoften(last)
end
local function isDropVowel(lemma, it)
if it == "düşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_DUS[n] or IST_DUS[last] or false
end
local function isGeminate(lemma, it)
if it == "ikizleşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_IKI[n] or IST_IKI[last] or false
end
-- ── Ek bağlama ────────────────────────────────────────────────────────────────
-- Düzeltme [4]: is_proper bayrağı kaldırıldı.
-- Yumuşama yalnızca allow_soften üzerinden kontrol edilir.
local function attach(stem, suffix, opts)
opts = opts or {}
local base = stem
local first = u.sub(suffix, 1, 1) or ""
local isVowelInitial = (V[first] == true)
if isVowelInitial then
if opts.allow_soften then
base = soften(base)
end
if opts.buffer and endsWithVowel(base) then
base = base .. opts.buffer
end
end
return base .. suffix
end
-- ── Hâl ekleri ────────────────────────────────────────────────────────────────
local function caseForms(stem, force_incelme, opts)
opts = opts or {}
local out = {}
local buf_acc_dat = (opts.is_poss3 or opts.is_comp) and "n" or "y"
out["yalın"] = stem
-- belirtme: -(y/n)I
out["belirtme"] = attach(stem, harmI(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- yönelme: -(y/n)A
out["yönelme"] = attach(stem, harmA(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- bulunma: -DA / ayrılma: -DAn
local base_da = (opts.is_poss3 or opts.is_comp) and (stem .. "n") or stem
local d = chooseD(base_da)
local da_suf = d .. harmA(base_da, force_incelme)
out["bulunma"] = base_da .. da_suf
out["ayrılma"] = base_da .. da_suf .. "n"
-- tamlayan: -(n)In
local genBuf = isSu(stem) and "y" or "n"
out["tamlayan"] = attach(stem, harmI(stem, force_incelme) .. "n",
{ buffer = genBuf, allow_soften = opts.allow_soften })
return out
end
-- ── İyelik ekleri ─────────────────────────────────────────────────────────────
-- Düzeltme [11]: 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local function possStem(lemma, person, force_incelme, opts)
opts = opts or {}
local stem = lemma or ""
local harmony_stem = opts.harmony_stem or stem
local i = harmI(harmony_stem, force_incelme)
local endsV = endsWithVowel(stem)
-- su istisnası: suyu, suyum …
if isSu(lemma) and person ~= "3ç" then
stem = stem .. "y"
endsV = false
end
local ao = { allow_soften = opts.allow_soften }
if person == "1t" then
return attach(stem, endsV and "m" or (i .. "m"), ao)
elseif person == "2t" then
return attach(stem, endsV and "n" or (i .. "n"), ao)
elseif person == "3t" then
return attach(stem, i, { buffer = "s", allow_soften = opts.allow_soften })
elseif person == "1ç" then
-- ünlü-biten: -mIz | ünsüz-biten: -ImIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "m" or (i .. "m")) .. harmI(mid .. "m", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "2ç" then
-- ünlü-biten: -nIz | ünsüz-biten: -InIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "n" or (i .. "n")) .. harmI(mid .. "n", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "3ç" then
-- Kök hâlinde çoğul eki zaten taşıyorsa ek tekrar eklenmez.
if u.find(stem or "", "l[ae]r$") then
return stem .. harmI(stem, force_incelme)
end
local ps = makePluralStem(stem, force_incelme)
return ps .. harmI(ps, force_incelme)
end
return stem
end
-- ── Bileşik taban temizliği ───────────────────────────────────────────────────
-- IST_DUS'tan "düşmüş biçimler → asıl kökler" haritası.
-- Modül yüklenirken bir kez hesaplanır.
local DROPPED_MAP = {}
local DROPPED_KEYS = {}
for k in pairs(IST_DUS) do
local d = dropLastVowelOnce(k)
if d and d ~= k then DROPPED_MAP[d] = k end
end
for d in pairs(DROPPED_MAP) do
DROPPED_KEYS[#DROPPED_KEYS + 1] = d
end
table.sort(DROPPED_KEYS, function(a, b) return u.len(a) > u.len(b) end)
local function restoreDroppedCompoundBase(base)
local nbase = norm(base)
for _, d in ipairs(DROPPED_KEYS) do
local dlen = u.len(d)
if u.sub(nbase, -dlen) == d then
local prefix = u.sub(base, 1, u.len(base) - dlen)
return prefix .. DROPPED_MAP[d], true
end
end
return base, false
end
local function getCompoundBase(lemma)
local base = lemma or ""
local nlemma = norm(base)
local last_word = u.match(nlemma, "%S+$") or nlemma
if KOK_SON_S_FORMLAR[last_word] then
if u.find(base, "[ıiuü]$") then base = u.sub(base, 1, -2) end
elseif u.find(base, "s[ıiuü]$") then
base = u.sub(base, 1, -3)
elseif u.find(base, "[ıiuü]$") then
base = u.sub(base, 1, -2)
end
local last_base = u.match(norm(base), "%S+$") or norm(base)
if not KOK_SON_YUMUSAK_G[last_base] then
base = unsoften(base)
end
-- su istisnası: çamaşır suyu → çamaşır su
if u.sub(base, -1) == "y" and isSu(u.sub(base, 1, -2)) then
base = u.sub(base, 1, -2)
end
return base
end
-- ── Ana çekim motoru ──────────────────────────────────────────────────────────
function p.form(lemma, spec)
spec = spec or {}
lemma = trim(lemma or "")
if lemma == "" then return "" end
local it = spec.it
local k = spec.k
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
-- Düzeltme [5]: isProper bayrağı; kesme işareti ve yumuşama buradan yönetilir.
local isProper = (k == "1")
local force_incelme = isIncelme(lemma, it)
local n_lemma = norm(lemma)
local isComp =
(it == "bileşik")
or IST_BIL[n_lemma]
or isAutoCompound(n_lemma)
or isPossessiveSurnameEnding(lemma)
or (u.find(n_lemma, "başı$") ~= nil)
-- isComp:
-- n bağlayıcısı gerekip gerekmediğini söyler.
--
-- useCompoundBase:
-- gövdenin gerçekten soyulup soyulmayacağını söyler.
--
-- Özel adlarda gövde soyulmaz:
-- Osmanlı Türkçesi → Osmanlı Türkçes yapılmaz.
-- Ama isComp yine true kalır:
-- Osmanlı Türkçesi + ni → Osmanlı Türkçesi'ni
local useCompoundBase = isComp and not isProper
local compBase = useCompoundBase and getCompoundBase(lemma) or nil
if useCompoundBase and not compBase then compBase = lemma end
local compOriginBase, _compHadDrop = compBase, false
if useCompoundBase and compBase then
compOriginBase, _compHadDrop = restoreDroppedCompoundBase(compBase)
end
-- allow_soften: özel adlarda daima false (kesme işareti ile birlikte yumuşama olmaz).
-- Bileşiklerde yumuşama kararı asıl köke (compOriginBase) göre verilir.
local soften_base = compOriginBase or compBase or lemma
local allow_soften
if isProper then
allow_soften = false
else
allow_soften = not isNoSoften(soften_base, it)
end
local do_drop = isDropVowel(lemma, it)
local do_gem = isGeminate(lemma, it)
local stem_only = lemma
local isPlural = (spec.number == "pl")
local isCompoundPluralPoss = false
-- ── 1) Çoğul ──
if isPlural then
if useCompoundBase then
local pluralBaseForComp = compOriginBase or compBase
if spec.poss and spec.poss ~= "3ç" then
stem_only = makePluralStem(pluralBaseForComp, force_incelme)
isCompoundPluralPoss = true
else
local ps = makePluralStem(pluralBaseForComp, force_incelme)
stem_only = ps .. harmI(ps, force_incelme)
end
else
stem_only = stem_only .. pluralSuffix(stem_only, force_incelme)
end
else
-- ── 2) Ünlü düşmesi / ikizleşme (yalnızca tekil, ünlü-başlı ek varsa) ──
if not isComp then
local isFirstSuffixVowel = false
if spec.poss then
isFirstSuffixVowel = not endsWithVowel(stem_only)
if spec.poss == "3t" or spec.poss == "3ç" then
isFirstSuffixVowel = true
end
elseif spec.case == "belirtme"
or spec.case == "yönelme"
or spec.case == "tamlayan" then
isFirstSuffixVowel = true
end
if isFirstSuffixVowel then
if do_drop then stem_only = dropLastVowelOnce(stem_only) end
if do_gem then stem_only = geminateLastConsonant(stem_only) end
end
end
end
-- -- ── 3) İyelik ──
if spec.poss then
if useCompoundBase and not isCompoundPluralPoss then
stem_only = possStem(compBase, spec.poss, force_incelme, {
allow_soften = allow_soften,
harmony_stem = compOriginBase or compBase,
})
elseif isCompoundPluralPoss then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
else
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = allow_soften,
})
end
end
-- ── 4) Hâl ──
local is_poss3 = (spec.poss == "3t" or spec.poss == "3ç")
local needs_n = is_poss3
or (isComp and (not spec.poss or isPlural) and not isCompoundPluralPoss)
local cases = caseForms(stem_only, force_incelme, {
allow_soften = allow_soften,
is_poss3 = needs_n,
is_comp = needs_n,
})
local out = cases[spec.case or "yalın"] or stem_only
-- ── 5) Özel adlarda kesme işareti ──
-- Düzeltme [5]: tüm dönüşümler bittikten sonra, yalnızca tekil biçimlerde,
-- ve yalnızca lemma'da henüz kesme yoksa eklenir.
if isProper and not isPlural and not u.find(lemma, "'") then
local suffix_part = u.sub(out, u.len(lemma) + 1)
return lemma .. "'" .. suffix_part
end
return out
end
-- ── Wiki tablosu üretimi ──────────────────────────────────────────────────────
function p.adTablo(frame)
local args = frame.args
local hasAny = false
for _ in pairs(args) do hasAny = true; break end
if not hasAny then
local parent = frame:getParent()
args = (parent and parent.args) or {}
end
local lemma = trim(args[1] or args["ad"] or mw.title.getCurrentTitle().text or "")
local it = args["istisna"]
local k = args["k"] or args["a"]
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
local isProper = (k == "1")
local useProperTable = isProper or derivedNoApostrophe
local casesOrder = { "yalın", "belirtme", "yönelme", "bulunma", "ayrılma", "tamlayan" }
local function form(spec)
spec = spec or {}
spec.it = it
spec.k = k
return p.form(lemma, spec)
end
-- Düzeltme [9]: mw.title.new hata fırlatabilir; pcall ile koruma.
local linkCache = {}
local function link(s)
s = trim(tostring(s or ""))
if s == "" then return s end
local exists = linkCache[s]
if exists == nil then
local ok, title = pcall(mw.title.new, s, 0)
exists = ok and title and title.exists or false
linkCache[s] = exists
end
if exists then
return "[[" .. s .. "]]"
end
return "[[" .. s .. "|<span style=\"color:#202122;\">" .. mw.text.nowiki(s) .. "</span>]]"
end
local CASE_LABELS = {
["yalın"] = "[[yalın hâl|yalın]]",
["belirtme"] = "[[belirtme hâli|belirtme]]",
["yönelme"] = "[[yönelme hâli|yönelme]]",
["bulunma"] = "[[bulunma hâli|bulunma]]",
["ayrılma"] = "[[ayrılma hâli|ayrılma]]",
["tamlayan"] = "[[tamlayan hâli|tamlayan]]",
}
local function caseLabel(k2) return CASE_LABELS[k2] or k2 end
-- ── Görünüm stilleri ──
local cardStyle = 'class="mw-collapsible" style="max-width:48em; width:100%;'
.. ' margin:.45em 0; border:1px solid #c8ccd1; border-radius:.35em;'
.. ' overflow:hidden; background:#fff;"'
local titleStyle = 'class="mw-collapsible-toggle" style="float:none; display:block;'
.. ' padding:.38em .6em; background:#f6f8fa; border-bottom:1px solid #d8dee4;'
.. ' font-weight:700; text-align:center; font-size:102%;'
.. ' cursor:pointer; user-select:none;"'
local contentStyle = 'class="mw-collapsible-content" style="overflow-x:auto;"'
local tableStyle = 'style="width:100%; min-width:30em; margin:0;'
.. ' border-collapse:collapse; background:#fff; text-align:center; font-size:95%;"'
local headCellStyle = 'style="padding:.32em .5em; background:#f6f8fa;'
.. ' border-bottom:1px solid #d8dee4; font-weight:700; white-space:nowrap;"'
local rowHeadStyle = 'style="width:28%; padding:.32em .5em; background:#fbfbfc;'
.. ' border-top:1px solid #edf0f2; text-align:left; white-space:nowrap; font-weight:600;"'
local dataCellStyle = 'style="padding:.32em .5em; border-top:1px solid #edf0f2;'
.. ' border-left:1px solid #edf0f2; text-align:center;"'
local personHeadStyle = 'style="padding:.34em .5em; background:#f6f8fa;'
.. ' border-top:1px solid #d8dee4; border-bottom:1px solid #edf0f2;'
.. ' text-align:left; font-weight:700;"'
-- ── Satır oluşturucular ──
local function headerRow(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
.. "\n! " .. headCellStyle .. " | [[çoğul]]"
end
local function headerRowSingle(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
end
local function row(caseKey, sgText, plText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
.. "\n| " .. dataCellStyle .. " | " .. plText
end
local function rowSingle(caseKey, sgText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
end
local function personHeader(label)
return "\n|-"
.. "\n! colspan=\"3\" " .. personHeadStyle .. " | " .. label
end
local function personHeaderSingle(label)
return "\n|-"
.. "\n! colspan=\"2\" " .. personHeadStyle .. " | " .. label
end
local persons = {
{ key = "1t", left = "1. tekil ([[benim]])" },
{ key = "2t", left = "2. tekil ([[senin]])" },
{ key = "3t", left = "3. tekil ([[onun]])" },
{ key = "1ç", left = "1. çoğul ([[bizim]])" },
{ key = "2ç", left = "2. çoğul ([[sizin]])" },
{ key = "3ç", left = "3. çoğul ([[onların]])" },
}
local out = {}
-- ── Özel ad / özel addan türemiş çekim tablosu (yalnızca tekil) ──
if useProperTable then
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
out[#out+1] = rowSingle("yalın", lemma, true)
else
out[#out+1] = rowSingle(c, link(form({ number = "sg", case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- İyelik tablosu (yalnızca tekil sütun)
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeaderSingle(person.left)
-- 3ç satırında tekil iyelik formu 3t ile aynıdır.
local possKey = (person.key == "3ç") and "3t" or person.key
for _, c in ipairs(casesOrder) do
out[#out+1] = rowSingle(c, link(form({ number = "sg", poss = possKey, case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- ── Ana çekim tablosu (özel olmayan adlar) ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
local pl = link(form({ number = "pl", case = "yalın" }))
out[#out+1] = row("yalın", lemma, pl, true)
else
local sg = link(form({ number = "sg", case = c }))
local pl = link(form({ number = "pl", case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- ── İyelik tablosu ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeader(person.left)
for _, c in ipairs(casesOrder) do
if person.key == "3ç" then
-- Tekil sütun: "onun evi" = 3t+sg / Çoğul sütun: "onların evi" = 3ç+pl
local sg = link(form({ number = "sg", poss = "3t", case = c }))
local pl = link(form({ number = "pl", poss = "3ç", case = c }))
out[#out+1] = row(c, sg, pl, false)
else
local sg = link(form({ number = "sg", poss = person.key, case = c }))
local pl = link(form({ number = "pl", poss = person.key, case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- invoke giriş noktası
function p.ad(frame)
return p.adTablo(frame)
end
-- Düzeltme [7]: kullanılmayan i1-i4 parametreleri kaldırıldı.
-- İmza: p.ayarla(bas, istisna, sayi, hal, ak)
function p.ayarla(bas, istisna, sayi, hal, ak)
return p.form(bas, {
it = istisna,
k = ak,
number = (sayi == "çoğul" and "pl" or "sg"),
case = hal or "yalın",
})
end
-- [[Modül:çekim/şablonlar]] tarafından kullanılan ters-arama motoru.
function p.cekim_tr(args)
local ad = args[1]
local cekim = mw.title.getCurrentTitle()["text"]
local it = args["istisna"]
local k = args["k"] or args["a"]
if u.find(cekim, "'") then k = "1" end
local function virgul(tablo)
if tablo[1] then table.insert(tablo, ";") end
end
-- Düzeltme [8]: cekimler tablosu sadeleştirildi; p.ayarla'nın yeni imzasına uygun.
local cekimler = {
{ "yalın" },
{ "belirtme" },
{ "yönelme" },
{ "bulunma" },
{ "ayrılma" },
{ "tamlayan" },
}
-- Düzeltme [8]: iyelik tablosu sadeleştirildi.
local iyelik = {
{ "1t" }, { "2t" }, { "3t" },
{ "1ç" }, { "2ç" }, { "3ç" },
}
local function tumDurumlar(say, kisi, ozel)
say = tostring(say or "")
if say == "" then return end
for _, c in ipairs(cekimler) do
local hal = c[1]
if cekim == p.ayarla(say, it, "tekil", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
-- "evleri" gibi kökünde -ler/-lar taşıyan iyelik biçimleri çoğul sayılır.
if ozel and u.find(say, "l[ea]r") then
table.insert(args[3], "ç")
else
table.insert(args[3], "t")
end
end
if cekim == p.ayarla(say, it, "çoğul", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
table.insert(args[3], "ç")
end
end
end
tumDurumlar(ad)
-- Not: Türkçe'de 3t+çoğul ve 3ç+tekil aynı formu üretir ("evleri" gibi).
-- Bu yapısal belirsizlik beklenen davranıştır; her iki etiket de kayıt altına alınır.
for _, s in ipairs(iyelik) do
local poss_code = s[1]
local tekil = p.form(ad, { it = it, k = k, number = "sg", poss = poss_code, case = "yalın" })
local cogul = p.form(ad, { it = it, k = k, number = "pl", poss = poss_code, case = "yalın" })
tumDurumlar(tekil, poss_code, true)
tumDurumlar(cogul, poss_code, true)
end
if not args[3][1] then table.insert(args[3], "belirtilmemiş") end
end
return p
haw6qlpl6rc58yjzv5hkcqlhe0stpwc
5658322
5658318
2026-05-15T18:15:13Z
Satirdan kahraman
37401
Osmanlı Türkçesini düzeltmek için
5658322
Scribunto
text/plain
-- Module:tr-ad
-- Baştan yazım: daha modüler, daha az heuristik, daha az çakışma.
--
-- Düzeltmeler (v2):
-- [1] harmI : force_incelme=true + û köşe durumu → "u" yerine "ü" döndürüyor.
-- [2] soften : ikizleşmiş tüm ünsüzler (pp dahil) artık yumuşamıyor.
-- [3] soften : -[ünlü]log$ deseniyle daha fazla -log sözcüğü yakalanıyor
-- (prolog, epilog, monolog, analog …).
-- [4] attach : is_proper bayrağı kaldırıldı; yumuşama tek elden allow_soften.
-- [5] p.form : özel adlar için allow_soften = false; kesme işareti son adımda,
-- suffix hesaplamasından sonra temiz biçimde ekleniyor.
-- [6] IST_BIL : setmetatable kaldırıldı, isAutoCompound() fonksiyonu eklendi.local isComp =
-- [7] p.ayarla : kullanılmayan i1-i4 parametreleri kaldırıldı.
-- [8] cekim_tr : p.ayarla çağrıları ve cekimler tablosu güncellendi.
-- [9] link : mw.title.new pcall ile koruma altına alındı.
-- [10] dropLastVowelOnce: ters-çevirme döngüsü yerine doğrudan indis tarama.
-- [11] possStem : 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local p = {}
local u = mw.ustring
local trim = mw.text.trim
-- ── İstisna listeleri ─────────────────────────────────────────────────────────
local ist = require("Modül:tr-ad/istisnalar")
local IST_YUM = ist.istisnaYumusama or {}
local IST_INC = ist.istisnaIncelme or {}
local IST_DUS = ist.istisnaDusme or {}
local IST_BIL = ist.istisnaBilesik or {}
local IST_YALIN_SON = ist.istisnaYalinSonlu or {}
local IST_IKI = ist.istisnaIkizlesme or {}
-- Kökte gerçekten "s" bulunan sıfır-kök bileşikler (kafes+i → kafesi).
local KOK_SON_S_FORMLAR = {
["kafesi"] = true,
}
-- Bu kökler bileşikte k'ye geri çevrilmez (ağ, bağ …).
local KOK_SON_YUMUSAK_G = {
["ağ"] = true, ["bağ"] = true, ["çağ"] = true,
["dağ"] = true, ["yağ"] = true,
}
-- g → ğ yumuşaması yapılacak yabancı kökenli sözcükler.
local G_YUMUSAMA = {
["katalog"] = true, ["diyalog"] = true,
}
-- ── Temel yardımcılar ─────────────────────────────────────────────────────────
local V = {
a = true, e = true, ["ı"] = true, i = true,
o = true, ["ö"] = true, u = true, ["ü"] = true,
["â"] = true, ["î"] = true, ["û"] = true,
}
local HARD = {
p = true, ["ç"] = true, t = true, k = true,
f = true, h = true, s = true, ["ş"] = true,
}
local function lower(s) return u.lower(s or "") end
local function lastChar(s) return u.sub(s, -1) end
local function endsWithVowel(s)
return V[lower(lastChar(s))] == true
end
local function lastVowel(s)
s = lower(s or "")
for i = u.len(s), 1, -1 do
local ch = u.sub(s, i, i)
if V[ch] then return ch end
end
return nil
end
-- Normalizasyon: küçük harf + şapkalı harfleri düzleştir.
local function norm(s)
s = trim(s or "")
s = u.lower(s)
s = u.gsub(s, "â", "a")
s = u.gsub(s, "î", "i")
s = u.gsub(s, "û", "u")
s = u.gsub(s, "İ", "i")
return s
end
local UPPER_INITIAL = {
["A"]=true,["B"]=true,["C"]=true,["Ç"]=true,["D"]=true,
["E"]=true,["F"]=true,["G"]=true,["Ğ"]=true,["H"]=true,
["I"]=true,["İ"]=true,["J"]=true,["K"]=true,["L"]=true,
["M"]=true,["N"]=true,["O"]=true,["Ö"]=true,["P"]=true,
["R"]=true,["S"]=true,["Ş"]=true,["T"]=true,["U"]=true,
["Ü"]=true,["V"]=true,["Y"]=true,["Z"]=true,
}
local function startsWithUpper(lemma)
lemma = trim(lemma or "")
if lemma == "" then return false end
return UPPER_INITIAL[u.sub(lemma, 1, 1)] == true
end
local function lastWordNorm(s)
local n = norm(s or "")
return u.match(n, "%S+$") or n
end
-- ── Özel ad tespiti ───────────────────────────────────────────────────────────
local DERIVED_PROPER_NO_APOSTROPHE = {
["türkçe"]=true, ["ingilizce"]=true, ["almanca"]=true,
["fransızca"]=true, ["arapça"]=true, ["farsça"]=true,
["rusça"]=true, ["italyanca"]=true, ["ispanyolca"]=true,
["yunanca"]=true, ["kürtçe"]=true, ["zazaca"]=true,
["türklük"]=true, ["türkçülük"]=true, ["türkçü"]=true,
["müslümanlık"]=true,["hristiyanlık"]=true,
["konyalı"]=true, ["bursalı"]=true, ["istanbullu"]=true,
["izmirli"]=true, ["avrupalı"]=true, ["asyalı"]=true,
["afrikalı"]=true, ["hollandalı"]=true, ["almanyalı"]=true,
["fransalı"]=true, ["rusyalı"]=true,
}
-- Büyük harfle başladığı hâlde kesme işareti gerektiren özel sözcükler.
local FORCE_APOSTROPHE_PROPER = {
["ali"]=true, ["veli"]=true, ["güler"]=true,
["şişli"]=true, ["foça"]=true, ["buca"]=true, ["ılıca"]=true,
}
local function isDerivedProperNoApostrophe(lemma)
local n = norm(lemma or "")
local last = lastWordNorm(lemma)
if n == "" then return false end
if FORCE_APOSTROPHE_PROPER[n] or FORCE_APOSTROPHE_PROPER[last] then
return false
end
if DERIVED_PROPER_NO_APOSTROPHE[n] or DERIVED_PROPER_NO_APOSTROPHE[last] then
return true
end
-- Türkçe, İngilizce, Hekimoğluca vb. (≥6 harf, -ca/-ce/-ça/-çe)
if u.len(last) >= 6 and (
u.find(last, "ca$") or u.find(last, "ce$") or
u.find(last, "ça$") or u.find(last, "çe$")
) then return true end
-- Türklük, Türkçülük vb.
if u.find(last, "lık$") or u.find(last, "lik$")
or u.find(last, "luk$") or u.find(last, "lük$") then return true end
return false
end
local function isAutoProperName(lemma)
if not startsWithUpper(lemma) then return false end
if isDerivedProperNoApostrophe(lemma) then return false end
return true
end
local function isPossessiveSurnameEnding(lemma)
local last = lastWordNorm(lemma)
if u.find(last, "oğlu$") then return true end
if u.find(last, "oğulları$") then return true end
return false
end
-- ── Bileşik otomatik tespiti ──────────────────────────────────────────────────
-- Eski IST_BIL setmetatable() yaklaşımının yerini aldı.
-- Çok kelimeli, ı/i/u/ü ile biten ifadeler bileşik kabul edilir;
-- -ıcı/-ici/-ucu/-ücü gibi aletlik son eklerini ayırt eder.
local function otomatikYalinSonluMu(last_word)
last_word = u.lower(last_word or "")
return u.find(last_word, "[ıiuü]c[ıiuü]$") ~= nil
end
local function isAutoCompound(normed)
if not u.find(normed, " ") then return false end
local last_char = u.sub(normed, -1)
if last_char ~= "ı" and last_char ~= "i"
and last_char ~= "u" and last_char ~= "ü" then return false end
local last_word = u.match(normed, "%s(%S+)$")
if last_word then
if IST_YALIN_SON[last_word] or otomatikYalinSonluMu(last_word) then
return false
end
end
return true
end
-- ── Ünlü uyumu ────────────────────────────────────────────────────────────────
-- 2'li uyum (A/E)
local function harmA(stem, force_incelme)
local lv = lastVowel(stem) or "a"
if force_incelme then return "e" end
if lv == "e" or lv == "i" or lv == "ö" or lv == "ü" or lv == "î" then
return "e"
end
return "a"
end
-- 4'lü uyum (I)
-- Düzeltme [1]: force_incelme=true + û → "ü" (daha önce "u" dönüyordu).
local function harmI(stem, force_incelme)
local lv = lastVowel(stem) or "ı"
if force_incelme then
if lv == "a" or lv == "ı" or lv == "â" then return "i" end
if lv == "o" or lv == "u" or lv == "û" then return "ü" end
-- e, i, î, ö, ü zaten ince → normal akışa devam.
end
if lv == "a" or lv == "ı" then return "ı" end
if lv == "e" or lv == "i" or lv == "î" then return "i" end
if lv == "o" or lv == "u" then return "u" end
if lv == "â" then return "ı" end
if lv == "û" then return "u" end
return "ü"
end
-- t/d seçimi (sert ünsüz sonrası t)
local function chooseD(stem)
if HARD[lower(lastChar(stem))] then return "t" end
return "d"
end
-- ── Çoğul ─────────────────────────────────────────────────────────────────────
local function pluralSuffix(stem, force_incelme)
return "l" .. harmA(stem, force_incelme) .. "r"
end
-- oğul → oğullar (düzensiz çoğul tabanı)
local function pluralBase(stem)
if u.find(stem, "oğl$") then
return u.sub(stem, 1, -4) .. "oğul"
end
return stem
end
local function makePluralStem(stem, force_incelme)
local pbase = pluralBase(stem)
return pbase .. pluralSuffix(pbase, force_incelme)
end
-- ── Ünsüz dönüşümleri ─────────────────────────────────────────────────────────
-- Yumuşama: pçtk → bcdğ, yalnızca ünlüyle başlayan ek gelince.
-- Düzeltme [2]: ikizleşmiş tüm ünsüzler (pp/çç/tt/kk) artık yumuşamıyor.
-- Düzeltme [3]: -[ünlü]log$ deseni daha geniş -log sözcüklerini yakalar.
local function soften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
-- İkizleşmiş ünsüz: hiçbiri yumuşamaz.
if c == prev and (c == "p" or c == "ç" or c == "t" or c == "k") then
return stem
end
if c == "p" then return u.sub(stem, 1, -2) .. "b" end
if c == "ç" then return u.sub(stem, 1, -2) .. "c" end
if c == "t" then return u.sub(stem, 1, -2) .. "d" end
if c == "k" then
if prev == "n" then
return u.sub(stem, 1, -2) .. "g"
end
return u.sub(stem, 1, -2) .. "ğ"
end
if c == "g" then
local s = u.lower(stem or "")
-- katalog, diyalog, prolog, epilog, monolog, analog …
if u.find(s, "[aeıioöuü]log$") or G_YUMUSAMA[s] then
return u.sub(stem, 1, -2) .. "ğ"
end
end
return stem
end
-- Yumuşamayı geri al (bileşik tabanı temizlerken kullanılır).
local function unsoften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
if c == "b" then return u.sub(stem, 1, -2) .. "p" end
if c == "c" then return u.sub(stem, 1, -2) .. "ç" end
if c == "d" then return u.sub(stem, 1, -2) .. "t" end
if c == "ğ" then return u.sub(stem, 1, -2) .. "k" end
if c == "g" and prev == "n" then return u.sub(stem, 1, -2) .. "k" end
return stem
end
-- Ünlü düşmesi: kökün son ünlüsünü düşürür.
-- Düzeltme [10]: ters-çevirme döngüsü kaldırıldı; doğrudan indis taraması.
local function dropLastVowelOnce(stem)
local chars = {}
local len = u.len(stem)
for i = 1, len do chars[i] = u.sub(stem, i, i) end
for i = len, 1, -1 do
if V[lower(chars[i])] then
table.remove(chars, i)
break
end
end
return table.concat(chars)
end
-- İkizleşme: son ünsüzü çiftler.
local function geminateLastConsonant(stem)
return stem .. lastChar(stem)
end
-- ── İstisna sorgulama yardımcıları ───────────────────────────────────────────
local function isIncelme(lemma, it)
if it == "incelme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_INC[n] or IST_INC[last] or false
end
local function isSu(s)
local n = norm(s)
return n == "su"
or u.find(n, "[ %-\xe2\x80\x91]su$") ~= nil -- U+2011 non-breaking hyphen
or n == "akarsu"
or n == "özsu"
or n == "pissu"
end
-- Otomatik yumuşama kapatma kuralları
local function autoNoSoften(lemma)
if u.find(lemma, "ist$") then return true end
if u.find(lemma, "iyet$")
or u.find(lemma, "iyat$")
or u.find(lemma, "iyyet$") then return true end
if u.find(lemma, "[aeıioöuü]t$") then return true end
return false
end
-- Yumuşama beyaz listesi: autoNoSoften'ı geçersiz kılar.
local SOFTEN_WHITELIST = {
["kanat"]=true, ["kağıt"]=true, ["umut"]=true, ["öğüt"]=true,
["vücut"]=true, ["mabet"]=true, ["but"]=true,
["zebercet"]=true, ["haset"]=true,
}
local function isNoSoften(lemma, it)
if it == "yumuşama" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
if SOFTEN_WHITELIST[n] or SOFTEN_WHITELIST[last] then return false end
return IST_YUM[n] or IST_YUM[last]
or autoNoSoften(n) or autoNoSoften(last)
end
local function isDropVowel(lemma, it)
if it == "düşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_DUS[n] or IST_DUS[last] or false
end
local function isGeminate(lemma, it)
if it == "ikizleşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_IKI[n] or IST_IKI[last] or false
end
-- ── Ek bağlama ────────────────────────────────────────────────────────────────
-- Düzeltme [4]: is_proper bayrağı kaldırıldı.
-- Yumuşama yalnızca allow_soften üzerinden kontrol edilir.
local function attach(stem, suffix, opts)
opts = opts or {}
local base = stem
local first = u.sub(suffix, 1, 1) or ""
local isVowelInitial = (V[first] == true)
if isVowelInitial then
if opts.allow_soften then
base = soften(base)
end
if opts.buffer and endsWithVowel(base) then
base = base .. opts.buffer
end
end
return base .. suffix
end
-- ── Hâl ekleri ────────────────────────────────────────────────────────────────
local function caseForms(stem, force_incelme, opts)
opts = opts or {}
local out = {}
local buf_acc_dat = (opts.is_poss3 or opts.is_comp) and "n" or "y"
out["yalın"] = stem
-- belirtme: -(y/n)I
out["belirtme"] = attach(stem, harmI(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- yönelme: -(y/n)A
out["yönelme"] = attach(stem, harmA(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- bulunma: -DA / ayrılma: -DAn
local base_da = (opts.is_poss3 or opts.is_comp) and (stem .. "n") or stem
local d = chooseD(base_da)
local da_suf = d .. harmA(base_da, force_incelme)
out["bulunma"] = base_da .. da_suf
out["ayrılma"] = base_da .. da_suf .. "n"
-- tamlayan: -(n)In
local genBuf = isSu(stem) and "y" or "n"
out["tamlayan"] = attach(stem, harmI(stem, force_incelme) .. "n",
{ buffer = genBuf, allow_soften = opts.allow_soften })
return out
end
-- ── İyelik ekleri ─────────────────────────────────────────────────────────────
-- Düzeltme [11]: 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local function possStem(lemma, person, force_incelme, opts)
opts = opts or {}
local stem = lemma or ""
local harmony_stem = opts.harmony_stem or stem
local i = harmI(harmony_stem, force_incelme)
local endsV = endsWithVowel(stem)
-- su istisnası: suyu, suyum …
if isSu(lemma) and person ~= "3ç" then
stem = stem .. "y"
endsV = false
end
local ao = { allow_soften = opts.allow_soften }
if person == "1t" then
return attach(stem, endsV and "m" or (i .. "m"), ao)
elseif person == "2t" then
return attach(stem, endsV and "n" or (i .. "n"), ao)
elseif person == "3t" then
return attach(stem, i, { buffer = "s", allow_soften = opts.allow_soften })
elseif person == "1ç" then
-- ünlü-biten: -mIz | ünsüz-biten: -ImIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "m" or (i .. "m")) .. harmI(mid .. "m", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "2ç" then
-- ünlü-biten: -nIz | ünsüz-biten: -InIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "n" or (i .. "n")) .. harmI(mid .. "n", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "3ç" then
-- Kök hâlinde çoğul eki zaten taşıyorsa ek tekrar eklenmez.
if u.find(stem or "", "l[ae]r$") then
return stem .. harmI(stem, force_incelme)
end
local ps = makePluralStem(stem, force_incelme)
return ps .. harmI(ps, force_incelme)
end
return stem
end
-- ── Bileşik taban temizliği ───────────────────────────────────────────────────
-- IST_DUS'tan "düşmüş biçimler → asıl kökler" haritası.
-- Modül yüklenirken bir kez hesaplanır.
local DROPPED_MAP = {}
local DROPPED_KEYS = {}
for k in pairs(IST_DUS) do
local d = dropLastVowelOnce(k)
if d and d ~= k then DROPPED_MAP[d] = k end
end
for d in pairs(DROPPED_MAP) do
DROPPED_KEYS[#DROPPED_KEYS + 1] = d
end
table.sort(DROPPED_KEYS, function(a, b) return u.len(a) > u.len(b) end)
local function restoreDroppedCompoundBase(base)
local nbase = norm(base)
for _, d in ipairs(DROPPED_KEYS) do
local dlen = u.len(d)
if u.sub(nbase, -dlen) == d then
local prefix = u.sub(base, 1, u.len(base) - dlen)
return prefix .. DROPPED_MAP[d], true
end
end
return base, false
end
local function getCompoundBase(lemma)
local base = lemma or ""
local nlemma = norm(base)
local last_word = u.match(nlemma, "%S+$") or nlemma
if KOK_SON_S_FORMLAR[last_word] then
if u.find(base, "[ıiuü]$") then base = u.sub(base, 1, -2) end
elseif u.find(base, "s[ıiuü]$") then
base = u.sub(base, 1, -3)
elseif u.find(base, "[ıiuü]$") then
base = u.sub(base, 1, -2)
end
local last_base = u.match(norm(base), "%S+$") or norm(base)
if not KOK_SON_YUMUSAK_G[last_base] then
base = unsoften(base)
end
-- su istisnası: çamaşır suyu → çamaşır su
if u.sub(base, -1) == "y" and isSu(u.sub(base, 1, -2)) then
base = u.sub(base, 1, -2)
end
return base
end
-- ── Ana çekim motoru ──────────────────────────────────────────────────────────
function p.form(lemma, spec)
spec = spec or {}
lemma = trim(lemma or "")
if lemma == "" then return "" end
local it = spec.it
local k = spec.k
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
-- Düzeltme [5]: isProper bayrağı; kesme işareti ve yumuşama buradan yönetilir.
local isProper = (k == "1")
local force_incelme = isIncelme(lemma, it)
local n_lemma = norm(lemma)
local isComp =
(it == "bileşik")
or IST_BIL[n_lemma]
or isAutoCompound(n_lemma)
or isPossessiveSurnameEnding(lemma)
or (u.find(n_lemma, "başı$") ~= nil)
-- isComp:
-- n bağlayıcısı gerekip gerekmediğini söyler.
--
-- useCompoundBase:
-- gövdenin gerçekten soyulup soyulmayacağını söyler.
--
-- Özel adlarda gövde soyulmaz:
-- Osmanlı Türkçesi → Osmanlı Türkçes yapılmaz.
-- Ama isComp yine true kalır:
-- Osmanlı Türkçesi + ni → Osmanlı Türkçesi'ni
local properCompoundSIForPoss =
isProper and isComp and spec.poss and (u.find(n_lemma, "s[ıiuü]$") ~= nil)
local useCompoundBase = isComp and (not isProper or properCompoundSIForPoss)
local compBase = useCompoundBase and getCompoundBase(lemma) or nil
if useCompoundBase and not compBase then compBase = lemma end
local compOriginBase, _compHadDrop = compBase, false
if useCompoundBase and compBase then
compOriginBase, _compHadDrop = restoreDroppedCompoundBase(compBase)
end
-- allow_soften: özel adlarda daima false (kesme işareti ile birlikte yumuşama olmaz).
-- Bileşiklerde yumuşama kararı asıl köke (compOriginBase) göre verilir.
local soften_base = compOriginBase or compBase or lemma
local allow_soften
if isProper then
allow_soften = false
else
allow_soften = not isNoSoften(soften_base, it)
end
local do_drop = isDropVowel(lemma, it)
local do_gem = isGeminate(lemma, it)
local stem_only = lemma
local isPlural = (spec.number == "pl")
local isCompoundPluralPoss = false
-- ── 1) Çoğul ──
if isPlural then
if useCompoundBase then
local pluralBaseForComp = compOriginBase or compBase
if spec.poss and spec.poss ~= "3ç" then
stem_only = makePluralStem(pluralBaseForComp, force_incelme)
isCompoundPluralPoss = true
else
local ps = makePluralStem(pluralBaseForComp, force_incelme)
stem_only = ps .. harmI(ps, force_incelme)
end
else
stem_only = stem_only .. pluralSuffix(stem_only, force_incelme)
end
else
-- ── 2) Ünlü düşmesi / ikizleşme (yalnızca tekil, ünlü-başlı ek varsa) ──
if not isComp then
local isFirstSuffixVowel = false
if spec.poss then
isFirstSuffixVowel = not endsWithVowel(stem_only)
if spec.poss == "3t" or spec.poss == "3ç" then
isFirstSuffixVowel = true
end
elseif spec.case == "belirtme"
or spec.case == "yönelme"
or spec.case == "tamlayan" then
isFirstSuffixVowel = true
end
if isFirstSuffixVowel then
if do_drop then stem_only = dropLastVowelOnce(stem_only) end
if do_gem then stem_only = geminateLastConsonant(stem_only) end
end
end
end
-- -- ── 3) İyelik ──
if spec.poss then
if useCompoundBase and not isCompoundPluralPoss then
stem_only = possStem(compBase, spec.poss, force_incelme, {
allow_soften = allow_soften,
harmony_stem = compOriginBase or compBase,
})
elseif isCompoundPluralPoss then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
else
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = allow_soften,
})
end
end
-- ── 4) Hâl ──
local is_poss3 = (spec.poss == "3t" or spec.poss == "3ç")
local needs_n = is_poss3
or (isComp and (not spec.poss or isPlural) and not isCompoundPluralPoss)
local cases = caseForms(stem_only, force_incelme, {
allow_soften = allow_soften,
is_poss3 = needs_n,
is_comp = needs_n,
})
local out = cases[spec.case or "yalın"] or stem_only
-- ── 5) Özel adlarda kesme işareti ──
-- Düzeltme [5]: tüm dönüşümler bittikten sonra, yalnızca tekil biçimlerde,
-- ve yalnızca lemma'da henüz kesme yoksa eklenir.
if isProper and not isPlural and not u.find(lemma, "'") then
local lemma_len = u.len(lemma)
if u.sub(out, 1, lemma_len) == lemma then
local suffix_part = u.sub(out, lemma_len + 1)
if suffix_part ~= "" then
return lemma .. "'" .. suffix_part
end
end
end
return out
end
-- ── Wiki tablosu üretimi ──────────────────────────────────────────────────────
function p.adTablo(frame)
local args = frame.args
local hasAny = false
for _ in pairs(args) do hasAny = true; break end
if not hasAny then
local parent = frame:getParent()
args = (parent and parent.args) or {}
end
local lemma = trim(args[1] or args["ad"] or mw.title.getCurrentTitle().text or "")
local it = args["istisna"]
local k = args["k"] or args["a"]
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
local isProper = (k == "1")
local useProperTable = isProper or derivedNoApostrophe
local casesOrder = { "yalın", "belirtme", "yönelme", "bulunma", "ayrılma", "tamlayan" }
local function form(spec)
spec = spec or {}
spec.it = it
spec.k = k
return p.form(lemma, spec)
end
-- Düzeltme [9]: mw.title.new hata fırlatabilir; pcall ile koruma.
local linkCache = {}
local function link(s)
s = trim(tostring(s or ""))
if s == "" then return s end
local exists = linkCache[s]
if exists == nil then
local ok, title = pcall(mw.title.new, s, 0)
exists = ok and title and title.exists or false
linkCache[s] = exists
end
if exists then
return "[[" .. s .. "]]"
end
return "[[" .. s .. "|<span style=\"color:#202122;\">" .. mw.text.nowiki(s) .. "</span>]]"
end
local CASE_LABELS = {
["yalın"] = "[[yalın hâl|yalın]]",
["belirtme"] = "[[belirtme hâli|belirtme]]",
["yönelme"] = "[[yönelme hâli|yönelme]]",
["bulunma"] = "[[bulunma hâli|bulunma]]",
["ayrılma"] = "[[ayrılma hâli|ayrılma]]",
["tamlayan"] = "[[tamlayan hâli|tamlayan]]",
}
local function caseLabel(k2) return CASE_LABELS[k2] or k2 end
-- ── Görünüm stilleri ──
local cardStyle = 'class="mw-collapsible" style="max-width:48em; width:100%;'
.. ' margin:.45em 0; border:1px solid #c8ccd1; border-radius:.35em;'
.. ' overflow:hidden; background:#fff;"'
local titleStyle = 'class="mw-collapsible-toggle" style="float:none; display:block;'
.. ' padding:.38em .6em; background:#f6f8fa; border-bottom:1px solid #d8dee4;'
.. ' font-weight:700; text-align:center; font-size:102%;'
.. ' cursor:pointer; user-select:none;"'
local contentStyle = 'class="mw-collapsible-content" style="overflow-x:auto;"'
local tableStyle = 'style="width:100%; min-width:30em; margin:0;'
.. ' border-collapse:collapse; background:#fff; text-align:center; font-size:95%;"'
local headCellStyle = 'style="padding:.32em .5em; background:#f6f8fa;'
.. ' border-bottom:1px solid #d8dee4; font-weight:700; white-space:nowrap;"'
local rowHeadStyle = 'style="width:28%; padding:.32em .5em; background:#fbfbfc;'
.. ' border-top:1px solid #edf0f2; text-align:left; white-space:nowrap; font-weight:600;"'
local dataCellStyle = 'style="padding:.32em .5em; border-top:1px solid #edf0f2;'
.. ' border-left:1px solid #edf0f2; text-align:center;"'
local personHeadStyle = 'style="padding:.34em .5em; background:#f6f8fa;'
.. ' border-top:1px solid #d8dee4; border-bottom:1px solid #edf0f2;'
.. ' text-align:left; font-weight:700;"'
-- ── Satır oluşturucular ──
local function headerRow(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
.. "\n! " .. headCellStyle .. " | [[çoğul]]"
end
local function headerRowSingle(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
end
local function row(caseKey, sgText, plText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
.. "\n| " .. dataCellStyle .. " | " .. plText
end
local function rowSingle(caseKey, sgText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
end
local function personHeader(label)
return "\n|-"
.. "\n! colspan=\"3\" " .. personHeadStyle .. " | " .. label
end
local function personHeaderSingle(label)
return "\n|-"
.. "\n! colspan=\"2\" " .. personHeadStyle .. " | " .. label
end
local persons = {
{ key = "1t", left = "1. tekil ([[benim]])" },
{ key = "2t", left = "2. tekil ([[senin]])" },
{ key = "3t", left = "3. tekil ([[onun]])" },
{ key = "1ç", left = "1. çoğul ([[bizim]])" },
{ key = "2ç", left = "2. çoğul ([[sizin]])" },
{ key = "3ç", left = "3. çoğul ([[onların]])" },
}
local out = {}
-- ── Özel ad / özel addan türemiş çekim tablosu (yalnızca tekil) ──
if useProperTable then
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
out[#out+1] = rowSingle("yalın", lemma, true)
else
out[#out+1] = rowSingle(c, link(form({ number = "sg", case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- İyelik tablosu (yalnızca tekil sütun)
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeaderSingle(person.left)
-- 3ç satırında tekil iyelik formu 3t ile aynıdır.
local possKey = (person.key == "3ç") and "3t" or person.key
for _, c in ipairs(casesOrder) do
out[#out+1] = rowSingle(c, link(form({ number = "sg", poss = possKey, case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- ── Ana çekim tablosu (özel olmayan adlar) ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
local pl = link(form({ number = "pl", case = "yalın" }))
out[#out+1] = row("yalın", lemma, pl, true)
else
local sg = link(form({ number = "sg", case = c }))
local pl = link(form({ number = "pl", case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- ── İyelik tablosu ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeader(person.left)
for _, c in ipairs(casesOrder) do
if person.key == "3ç" then
-- Tekil sütun: "onun evi" = 3t+sg / Çoğul sütun: "onların evi" = 3ç+pl
local sg = link(form({ number = "sg", poss = "3t", case = c }))
local pl = link(form({ number = "pl", poss = "3ç", case = c }))
out[#out+1] = row(c, sg, pl, false)
else
local sg = link(form({ number = "sg", poss = person.key, case = c }))
local pl = link(form({ number = "pl", poss = person.key, case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- invoke giriş noktası
function p.ad(frame)
return p.adTablo(frame)
end
-- Düzeltme [7]: kullanılmayan i1-i4 parametreleri kaldırıldı.
-- İmza: p.ayarla(bas, istisna, sayi, hal, ak)
function p.ayarla(bas, istisna, sayi, hal, ak)
return p.form(bas, {
it = istisna,
k = ak,
number = (sayi == "çoğul" and "pl" or "sg"),
case = hal or "yalın",
})
end
-- [[Modül:çekim/şablonlar]] tarafından kullanılan ters-arama motoru.
function p.cekim_tr(args)
local ad = args[1]
local cekim = mw.title.getCurrentTitle()["text"]
local it = args["istisna"]
local k = args["k"] or args["a"]
if u.find(cekim, "'") then k = "1" end
local function virgul(tablo)
if tablo[1] then table.insert(tablo, ";") end
end
-- Düzeltme [8]: cekimler tablosu sadeleştirildi; p.ayarla'nın yeni imzasına uygun.
local cekimler = {
{ "yalın" },
{ "belirtme" },
{ "yönelme" },
{ "bulunma" },
{ "ayrılma" },
{ "tamlayan" },
}
-- Düzeltme [8]: iyelik tablosu sadeleştirildi.
local iyelik = {
{ "1t" }, { "2t" }, { "3t" },
{ "1ç" }, { "2ç" }, { "3ç" },
}
local function tumDurumlar(say, kisi, ozel)
say = tostring(say or "")
if say == "" then return end
for _, c in ipairs(cekimler) do
local hal = c[1]
if cekim == p.ayarla(say, it, "tekil", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
-- "evleri" gibi kökünde -ler/-lar taşıyan iyelik biçimleri çoğul sayılır.
if ozel and u.find(say, "l[ea]r") then
table.insert(args[3], "ç")
else
table.insert(args[3], "t")
end
end
if cekim == p.ayarla(say, it, "çoğul", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
table.insert(args[3], "ç")
end
end
end
tumDurumlar(ad)
-- Not: Türkçe'de 3t+çoğul ve 3ç+tekil aynı formu üretir ("evleri" gibi).
-- Bu yapısal belirsizlik beklenen davranıştır; her iki etiket de kayıt altına alınır.
for _, s in ipairs(iyelik) do
local poss_code = s[1]
local tekil = p.form(ad, { it = it, k = k, number = "sg", poss = poss_code, case = "yalın" })
local cogul = p.form(ad, { it = it, k = k, number = "pl", poss = poss_code, case = "yalın" })
tumDurumlar(tekil, poss_code, true)
tumDurumlar(cogul, poss_code, true)
end
if not args[3][1] then table.insert(args[3], "belirtilmemiş") end
end
return p
5rhrhifldf0yjrqgcbrn9a6ww9g7xzp
5658324
5658322
2026-05-15T18:26:20Z
Satirdan kahraman
37401
5658324
Scribunto
text/plain
-- Module:tr-ad
-- Baştan yazım: daha modüler, daha az heuristik, daha az çakışma.
--
-- Düzeltmeler (v2):
-- [1] harmI : force_incelme=true + û köşe durumu → "u" yerine "ü" döndürüyor.
-- [2] soften : ikizleşmiş tüm ünsüzler (pp dahil) artık yumuşamıyor.
-- [3] soften : -[ünlü]log$ deseniyle daha fazla -log sözcüğü yakalanıyor
-- (prolog, epilog, monolog, analog …).
-- [4] attach : is_proper bayrağı kaldırıldı; yumuşama tek elden allow_soften.
-- [5] p.form : özel adlar için allow_soften = false; kesme işareti son adımda,
-- suffix hesaplamasından sonra temiz biçimde ekleniyor.
-- [6] IST_BIL : setmetatable kaldırıldı, isAutoCompound() fonksiyonu eklendi.local isComp =
-- [7] p.ayarla : kullanılmayan i1-i4 parametreleri kaldırıldı.
-- [8] cekim_tr : p.ayarla çağrıları ve cekimler tablosu güncellendi.
-- [9] link : mw.title.new pcall ile koruma altına alındı.
-- [10] dropLastVowelOnce: ters-çevirme döngüsü yerine doğrudan indis tarama.
-- [11] possStem : 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local p = {}
local u = mw.ustring
local trim = mw.text.trim
-- ── İstisna listeleri ─────────────────────────────────────────────────────────
local ist = require("Modül:tr-ad/istisnalar")
local IST_YUM = ist.istisnaYumusama or {}
local IST_INC = ist.istisnaIncelme or {}
local IST_DUS = ist.istisnaDusme or {}
local IST_BIL = ist.istisnaBilesik or {}
local IST_YALIN_SON = ist.istisnaYalinSonlu or {}
local IST_IKI = ist.istisnaIkizlesme or {}
-- Kökte gerçekten "s" bulunan sıfır-kök bileşikler (kafes+i → kafesi).
local KOK_SON_S_FORMLAR = {
["kafesi"] = true,
}
-- Bu kökler bileşikte k'ye geri çevrilmez (ağ, bağ …).
local KOK_SON_YUMUSAK_G = {
["ağ"] = true, ["bağ"] = true, ["çağ"] = true,
["dağ"] = true, ["yağ"] = true,
}
-- g → ğ yumuşaması yapılacak yabancı kökenli sözcükler.
local G_YUMUSAMA = {
["katalog"] = true, ["diyalog"] = true,
}
-- ── Temel yardımcılar ─────────────────────────────────────────────────────────
local V = {
a = true, e = true, ["ı"] = true, i = true,
o = true, ["ö"] = true, u = true, ["ü"] = true,
["â"] = true, ["î"] = true, ["û"] = true,
}
local HARD = {
p = true, ["ç"] = true, t = true, k = true,
f = true, h = true, s = true, ["ş"] = true,
}
local function lower(s) return u.lower(s or "") end
local function lastChar(s) return u.sub(s, -1) end
local function endsWithVowel(s)
return V[lower(lastChar(s))] == true
end
local function lastVowel(s)
s = lower(s or "")
for i = u.len(s), 1, -1 do
local ch = u.sub(s, i, i)
if V[ch] then return ch end
end
return nil
end
-- Normalizasyon: küçük harf + şapkalı harfleri düzleştir.
local function norm(s)
s = trim(s or "")
s = u.lower(s)
s = u.gsub(s, "â", "a")
s = u.gsub(s, "î", "i")
s = u.gsub(s, "û", "u")
s = u.gsub(s, "İ", "i")
return s
end
local UPPER_INITIAL = {
["A"]=true,["B"]=true,["C"]=true,["Ç"]=true,["D"]=true,
["E"]=true,["F"]=true,["G"]=true,["Ğ"]=true,["H"]=true,
["I"]=true,["İ"]=true,["J"]=true,["K"]=true,["L"]=true,
["M"]=true,["N"]=true,["O"]=true,["Ö"]=true,["P"]=true,
["R"]=true,["S"]=true,["Ş"]=true,["T"]=true,["U"]=true,
["Ü"]=true,["V"]=true,["Y"]=true,["Z"]=true,
}
local function startsWithUpper(lemma)
lemma = trim(lemma or "")
if lemma == "" then return false end
return UPPER_INITIAL[u.sub(lemma, 1, 1)] == true
end
local function lastWordNorm(s)
local n = norm(s or "")
return u.match(n, "%S+$") or n
end
-- ── Özel ad tespiti ───────────────────────────────────────────────────────────
local DERIVED_PROPER_NO_APOSTROPHE = {
["türkçe"]=true, ["ingilizce"]=true, ["almanca"]=true,
["fransızca"]=true, ["arapça"]=true, ["farsça"]=true,
["rusça"]=true, ["italyanca"]=true, ["ispanyolca"]=true,
["yunanca"]=true, ["kürtçe"]=true, ["zazaca"]=true,
["türklük"]=true, ["türkçülük"]=true, ["türkçü"]=true,
["müslümanlık"]=true,["hristiyanlık"]=true,
["konyalı"]=true, ["bursalı"]=true, ["istanbullu"]=true,
["izmirli"]=true, ["avrupalı"]=true, ["asyalı"]=true,
["afrikalı"]=true, ["hollandalı"]=true, ["almanyalı"]=true,
["fransalı"]=true, ["rusyalı"]=true,
}
-- Büyük harfle başladığı hâlde kesme işareti gerektiren özel sözcükler.
local FORCE_APOSTROPHE_PROPER = {
["ali"]=true, ["veli"]=true, ["güler"]=true,
["şişli"]=true, ["foça"]=true, ["buca"]=true, ["ılıca"]=true,
}
local function isDerivedProperNoApostrophe(lemma)
local n = norm(lemma or "")
local last = lastWordNorm(lemma)
if n == "" then return false end
if FORCE_APOSTROPHE_PROPER[n] or FORCE_APOSTROPHE_PROPER[last] then
return false
end
if DERIVED_PROPER_NO_APOSTROPHE[n] or DERIVED_PROPER_NO_APOSTROPHE[last] then
return true
end
-- Türkçe, İngilizce, Hekimoğluca vb. (≥6 harf, -ca/-ce/-ça/-çe)
if u.len(last) >= 6 and (
u.find(last, "ca$") or u.find(last, "ce$") or
u.find(last, "ça$") or u.find(last, "çe$")
) then return true end
-- Türklük, Türkçülük vb.
if u.find(last, "lık$") or u.find(last, "lik$")
or u.find(last, "luk$") or u.find(last, "lük$") then return true end
return false
end
local function isAutoProperName(lemma)
if not startsWithUpper(lemma) then return false end
if isDerivedProperNoApostrophe(lemma) then return false end
return true
end
local function isPossessiveSurnameEnding(lemma)
local last = lastWordNorm(lemma)
if u.find(last, "oğlu$") then return true end
if u.find(last, "oğulları$") then return true end
return false
end
-- ── Bileşik otomatik tespiti ──────────────────────────────────────────────────
-- Eski IST_BIL setmetatable() yaklaşımının yerini aldı.
-- Çok kelimeli, ı/i/u/ü ile biten ifadeler bileşik kabul edilir;
-- -ıcı/-ici/-ucu/-ücü gibi aletlik son eklerini ayırt eder.
local function otomatikYalinSonluMu(last_word)
last_word = u.lower(last_word or "")
return u.find(last_word, "[ıiuü]c[ıiuü]$") ~= nil
end
local function isAutoCompound(normed)
if not u.find(normed, " ") then return false end
local last_char = u.sub(normed, -1)
if last_char ~= "ı" and last_char ~= "i"
and last_char ~= "u" and last_char ~= "ü" then return false end
local last_word = u.match(normed, "%s(%S+)$")
if last_word then
if IST_YALIN_SON[last_word] or otomatikYalinSonluMu(last_word) then
return false
end
end
return true
end
-- ── Ünlü uyumu ────────────────────────────────────────────────────────────────
-- 2'li uyum (A/E)
local function harmA(stem, force_incelme)
local lv = lastVowel(stem) or "a"
if force_incelme then return "e" end
if lv == "e" or lv == "i" or lv == "ö" or lv == "ü" or lv == "î" then
return "e"
end
return "a"
end
-- 4'lü uyum (I)
-- Düzeltme [1]: force_incelme=true + û → "ü" (daha önce "u" dönüyordu).
local function harmI(stem, force_incelme)
local lv = lastVowel(stem) or "ı"
if force_incelme then
if lv == "a" or lv == "ı" or lv == "â" then return "i" end
if lv == "o" or lv == "u" or lv == "û" then return "ü" end
-- e, i, î, ö, ü zaten ince → normal akışa devam.
end
if lv == "a" or lv == "ı" then return "ı" end
if lv == "e" or lv == "i" or lv == "î" then return "i" end
if lv == "o" or lv == "u" then return "u" end
if lv == "â" then return "ı" end
if lv == "û" then return "u" end
return "ü"
end
-- t/d seçimi (sert ünsüz sonrası t)
local function chooseD(stem)
if HARD[lower(lastChar(stem))] then return "t" end
return "d"
end
-- ── Çoğul ─────────────────────────────────────────────────────────────────────
local function pluralSuffix(stem, force_incelme)
return "l" .. harmA(stem, force_incelme) .. "r"
end
-- oğul → oğullar (düzensiz çoğul tabanı)
local function pluralBase(stem)
if u.find(stem, "oğl$") then
return u.sub(stem, 1, -4) .. "oğul"
end
return stem
end
local function makePluralStem(stem, force_incelme)
local pbase = pluralBase(stem)
return pbase .. pluralSuffix(pbase, force_incelme)
end
-- ── Ünsüz dönüşümleri ─────────────────────────────────────────────────────────
-- Yumuşama: pçtk → bcdğ, yalnızca ünlüyle başlayan ek gelince.
-- Düzeltme [2]: ikizleşmiş tüm ünsüzler (pp/çç/tt/kk) artık yumuşamıyor.
-- Düzeltme [3]: -[ünlü]log$ deseni daha geniş -log sözcüklerini yakalar.
local function soften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
-- İkizleşmiş ünsüz: hiçbiri yumuşamaz.
if c == prev and (c == "p" or c == "ç" or c == "t" or c == "k") then
return stem
end
if c == "p" then return u.sub(stem, 1, -2) .. "b" end
if c == "ç" then return u.sub(stem, 1, -2) .. "c" end
if c == "t" then return u.sub(stem, 1, -2) .. "d" end
if c == "k" then
if prev == "n" then
return u.sub(stem, 1, -2) .. "g"
end
return u.sub(stem, 1, -2) .. "ğ"
end
if c == "g" then
local s = u.lower(stem or "")
-- katalog, diyalog, prolog, epilog, monolog, analog …
if u.find(s, "[aeıioöuü]log$") or G_YUMUSAMA[s] then
return u.sub(stem, 1, -2) .. "ğ"
end
end
return stem
end
-- Yumuşamayı geri al (bileşik tabanı temizlerken kullanılır).
local function unsoften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
if c == "b" then return u.sub(stem, 1, -2) .. "p" end
if c == "c" then return u.sub(stem, 1, -2) .. "ç" end
if c == "d" then return u.sub(stem, 1, -2) .. "t" end
if c == "ğ" then return u.sub(stem, 1, -2) .. "k" end
if c == "g" and prev == "n" then return u.sub(stem, 1, -2) .. "k" end
return stem
end
-- Ünlü düşmesi: kökün son ünlüsünü düşürür.
-- Düzeltme [10]: ters-çevirme döngüsü kaldırıldı; doğrudan indis taraması.
local function dropLastVowelOnce(stem)
local chars = {}
local len = u.len(stem)
for i = 1, len do chars[i] = u.sub(stem, i, i) end
for i = len, 1, -1 do
if V[lower(chars[i])] then
table.remove(chars, i)
break
end
end
return table.concat(chars)
end
-- İkizleşme: son ünsüzü çiftler.
local function geminateLastConsonant(stem)
return stem .. lastChar(stem)
end
-- ── İstisna sorgulama yardımcıları ───────────────────────────────────────────
local function isIncelme(lemma, it)
if it == "incelme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_INC[n] or IST_INC[last] or false
end
local function isSu(s)
local n = norm(s)
return n == "su"
or u.find(n, "[ %-\xe2\x80\x91]su$") ~= nil -- U+2011 non-breaking hyphen
or n == "akarsu"
or n == "özsu"
or n == "pissu"
end
-- Otomatik yumuşama kapatma kuralları
local function autoNoSoften(lemma)
if u.find(lemma, "ist$") then return true end
if u.find(lemma, "iyet$")
or u.find(lemma, "iyat$")
or u.find(lemma, "iyyet$") then return true end
if u.find(lemma, "[aeıioöuü]t$") then return true end
return false
end
-- Yumuşama beyaz listesi: autoNoSoften'ı geçersiz kılar.
local SOFTEN_WHITELIST = {
["kanat"]=true, ["kağıt"]=true, ["umut"]=true, ["öğüt"]=true,
["vücut"]=true, ["mabet"]=true, ["but"]=true,
["zebercet"]=true, ["haset"]=true,
}
local function isNoSoften(lemma, it)
if it == "yumuşama" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
if SOFTEN_WHITELIST[n] or SOFTEN_WHITELIST[last] then return false end
return IST_YUM[n] or IST_YUM[last]
or autoNoSoften(n) or autoNoSoften(last)
end
local function isDropVowel(lemma, it)
if it == "düşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_DUS[n] or IST_DUS[last] or false
end
local function isGeminate(lemma, it)
if it == "ikizleşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_IKI[n] or IST_IKI[last] or false
end
-- ── Ek bağlama ────────────────────────────────────────────────────────────────
-- Düzeltme [4]: is_proper bayrağı kaldırıldı.
-- Yumuşama yalnızca allow_soften üzerinden kontrol edilir.
local function attach(stem, suffix, opts)
opts = opts or {}
local base = stem
local first = u.sub(suffix, 1, 1) or ""
local isVowelInitial = (V[first] == true)
if isVowelInitial then
if opts.allow_soften then
base = soften(base)
end
if opts.buffer and endsWithVowel(base) then
base = base .. opts.buffer
end
end
return base .. suffix
end
-- ── Hâl ekleri ────────────────────────────────────────────────────────────────
local function caseForms(stem, force_incelme, opts)
opts = opts or {}
local out = {}
local buf_acc_dat = (opts.is_poss3 or opts.is_comp) and "n" or "y"
out["yalın"] = stem
-- belirtme: -(y/n)I
out["belirtme"] = attach(stem, harmI(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- yönelme: -(y/n)A
out["yönelme"] = attach(stem, harmA(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- bulunma: -DA / ayrılma: -DAn
local base_da = (opts.is_poss3 or opts.is_comp) and (stem .. "n") or stem
local d = chooseD(base_da)
local da_suf = d .. harmA(base_da, force_incelme)
out["bulunma"] = base_da .. da_suf
out["ayrılma"] = base_da .. da_suf .. "n"
-- tamlayan: -(n)In
local genBuf = isSu(stem) and "y" or "n"
out["tamlayan"] = attach(stem, harmI(stem, force_incelme) .. "n",
{ buffer = genBuf, allow_soften = opts.allow_soften })
return out
end
-- ── İyelik ekleri ─────────────────────────────────────────────────────────────
-- Düzeltme [11]: 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local function possStem(lemma, person, force_incelme, opts)
opts = opts or {}
local stem = lemma or ""
local harmony_stem = opts.harmony_stem or stem
local i = harmI(harmony_stem, force_incelme)
local endsV = endsWithVowel(stem)
-- su istisnası: suyu, suyum …
if isSu(lemma) and person ~= "3ç" then
stem = stem .. "y"
endsV = false
end
local ao = { allow_soften = opts.allow_soften }
if person == "1t" then
return attach(stem, endsV and "m" or (i .. "m"), ao)
elseif person == "2t" then
return attach(stem, endsV and "n" or (i .. "n"), ao)
elseif person == "3t" then
return attach(stem, i, { buffer = "s", allow_soften = opts.allow_soften })
elseif person == "1ç" then
-- ünlü-biten: -mIz | ünsüz-biten: -ImIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "m" or (i .. "m")) .. harmI(mid .. "m", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "2ç" then
-- ünlü-biten: -nIz | ünsüz-biten: -InIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "n" or (i .. "n")) .. harmI(mid .. "n", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "3ç" then
-- Kök hâlinde çoğul eki zaten taşıyorsa ek tekrar eklenmez.
if u.find(stem or "", "l[ae]r$") then
return stem .. harmI(stem, force_incelme)
end
local ps = makePluralStem(stem, force_incelme)
return ps .. harmI(ps, force_incelme)
end
return stem
end
-- ── Bileşik taban temizliği ───────────────────────────────────────────────────
-- IST_DUS'tan "düşmüş biçimler → asıl kökler" haritası.
-- Modül yüklenirken bir kez hesaplanır.
local DROPPED_MAP = {}
local DROPPED_KEYS = {}
for k in pairs(IST_DUS) do
local d = dropLastVowelOnce(k)
if d and d ~= k then DROPPED_MAP[d] = k end
end
for d in pairs(DROPPED_MAP) do
DROPPED_KEYS[#DROPPED_KEYS + 1] = d
end
table.sort(DROPPED_KEYS, function(a, b) return u.len(a) > u.len(b) end)
local function restoreDroppedCompoundBase(base)
local nbase = norm(base)
for _, d in ipairs(DROPPED_KEYS) do
local dlen = u.len(d)
if u.sub(nbase, -dlen) == d then
local prefix = u.sub(base, 1, u.len(base) - dlen)
return prefix .. DROPPED_MAP[d], true
end
end
return base, false
end
local function getCompoundBase(lemma)
local base = lemma or ""
local nlemma = norm(base)
local last_word = u.match(nlemma, "%S+$") or nlemma
if KOK_SON_S_FORMLAR[last_word] then
if u.find(base, "[ıiuü]$") then base = u.sub(base, 1, -2) end
elseif u.find(base, "s[ıiuü]$") then
base = u.sub(base, 1, -3)
elseif u.find(base, "[ıiuü]$") then
base = u.sub(base, 1, -2)
end
local last_base = u.match(norm(base), "%S+$") or norm(base)
if not KOK_SON_YUMUSAK_G[last_base] then
base = unsoften(base)
end
-- su istisnası: çamaşır suyu → çamaşır su
if u.sub(base, -1) == "y" and isSu(u.sub(base, 1, -2)) then
base = u.sub(base, 1, -2)
end
return base
end
-- ── Ana çekim motoru ──────────────────────────────────────────────────────────
function p.form(lemma, spec)
spec = spec or {}
lemma = trim(lemma or "")
if lemma == "" then return "" end
local it = spec.it
local k = spec.k
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
-- Düzeltme [5]: isProper bayrağı; kesme işareti ve yumuşama buradan yönetilir.
local isProper = (k == "1")
local force_incelme = isIncelme(lemma, it)
local n_lemma = norm(lemma)
local isComp =
(it == "bileşik")
or IST_BIL[n_lemma]
or isAutoCompound(n_lemma)
or isPossessiveSurnameEnding(lemma)
or (u.find(n_lemma, "başı$") ~= nil)
-- isComp:
-- n bağlayıcısı gerekip gerekmediğini söyler.
--
-- useCompoundBase:
-- gövdenin gerçekten soyulup soyulmayacağını söyler.
--
-- Özel adlarda gövde soyulmaz:
-- Osmanlı Türkçesi → Osmanlı Türkçes yapılmaz.
-- Ama isComp yine true kalır:
-- Osmanlı Türkçesi + ni → Osmanlı Türkçesi'ni
local properCompoundSIForPoss =
isProper and isComp and spec.poss and (u.find(n_lemma, "s[ıiuü]$") ~= nil)
local useCompoundBase = isComp and (not isProper or properCompoundSIForPoss)
local compBase = useCompoundBase and getCompoundBase(lemma) or nil
if useCompoundBase and not compBase then compBase = lemma end
local compOriginBase, _compHadDrop = compBase, false
if useCompoundBase and compBase then
compOriginBase, _compHadDrop = restoreDroppedCompoundBase(compBase)
end
-- allow_soften: özel adlarda daima false (kesme işareti ile birlikte yumuşama olmaz).
-- Bileşiklerde yumuşama kararı asıl köke (compOriginBase) göre verilir.
local soften_base = compOriginBase or compBase or lemma
local allow_soften
if isProper then
allow_soften = false
else
allow_soften = not isNoSoften(soften_base, it)
end
local do_drop = isDropVowel(lemma, it)
local do_gem = isGeminate(lemma, it)
local stem_only = lemma
local isPlural = (spec.number == "pl")
local isCompoundPluralPoss = false
-- ── 1) Çoğul ──
if isPlural then
if useCompoundBase then
local pluralBaseForComp = compOriginBase or compBase
if spec.poss and spec.poss ~= "3ç" then
stem_only = makePluralStem(pluralBaseForComp, force_incelme)
isCompoundPluralPoss = true
else
local ps = makePluralStem(pluralBaseForComp, force_incelme)
stem_only = ps .. harmI(ps, force_incelme)
end
else
stem_only = stem_only .. pluralSuffix(stem_only, force_incelme)
end
else
-- ── 2) Ünlü düşmesi / ikizleşme (yalnızca tekil, ünlü-başlı ek varsa) ──
if not isComp then
local isFirstSuffixVowel = false
if spec.poss then
isFirstSuffixVowel = not endsWithVowel(stem_only)
if spec.poss == "3t" or spec.poss == "3ç" then
isFirstSuffixVowel = true
end
elseif spec.case == "belirtme"
or spec.case == "yönelme"
or spec.case == "tamlayan" then
isFirstSuffixVowel = true
end
if isFirstSuffixVowel then
if do_drop then stem_only = dropLastVowelOnce(stem_only) end
if do_gem then stem_only = geminateLastConsonant(stem_only) end
end
end
end
-- -- ── 3) İyelik ──
if spec.poss then
if useCompoundBase and not isCompoundPluralPoss then
stem_only = possStem(compBase, spec.poss, force_incelme, {
allow_soften = allow_soften,
harmony_stem = compOriginBase or compBase,
})
elseif isCompoundPluralPoss then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
else
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = allow_soften,
})
end
end
-- ── 4) Hâl ──
local is_poss3 = (spec.poss == "3t" or spec.poss == "3ç")
local needs_n = is_poss3
or (isComp and (not spec.poss or isPlural) and not isCompoundPluralPoss)
local cases = caseForms(stem_only, force_incelme, {
allow_soften = allow_soften,
is_poss3 = needs_n,
is_comp = needs_n,
})
local out = cases[spec.case or "yalın"] or stem_only
-- ── 5) Çıktı ──
-- Bu modülde özel adlarda da kesme işareti kullanılmaz.
return out
end
-- ── Wiki tablosu üretimi ──────────────────────────────────────────────────────
function p.adTablo(frame)
local args = frame.args
local hasAny = false
for _ in pairs(args) do hasAny = true; break end
if not hasAny then
local parent = frame:getParent()
args = (parent and parent.args) or {}
end
local lemma = trim(args[1] or args["ad"] or mw.title.getCurrentTitle().text or "")
local it = args["istisna"]
local k = args["k"] or args["a"]
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
local isProper = (k == "1")
local useProperTable = isProper or derivedNoApostrophe
local casesOrder = { "yalın", "belirtme", "yönelme", "bulunma", "ayrılma", "tamlayan" }
local function form(spec)
spec = spec or {}
spec.it = it
spec.k = k
return p.form(lemma, spec)
end
-- Düzeltme [9]: mw.title.new hata fırlatabilir; pcall ile koruma.
local linkCache = {}
local function link(s)
s = trim(tostring(s or ""))
if s == "" then return s end
local exists = linkCache[s]
if exists == nil then
local ok, title = pcall(mw.title.new, s, 0)
exists = ok and title and title.exists or false
linkCache[s] = exists
end
if exists then
return "[[" .. s .. "]]"
end
return "[[" .. s .. "|<span style=\"color:#202122;\">" .. mw.text.nowiki(s) .. "</span>]]"
end
local CASE_LABELS = {
["yalın"] = "[[yalın hâl|yalın]]",
["belirtme"] = "[[belirtme hâli|belirtme]]",
["yönelme"] = "[[yönelme hâli|yönelme]]",
["bulunma"] = "[[bulunma hâli|bulunma]]",
["ayrılma"] = "[[ayrılma hâli|ayrılma]]",
["tamlayan"] = "[[tamlayan hâli|tamlayan]]",
}
local function caseLabel(k2) return CASE_LABELS[k2] or k2 end
-- ── Görünüm stilleri ──
local cardStyle = 'class="mw-collapsible" style="max-width:48em; width:100%;'
.. ' margin:.45em 0; border:1px solid #c8ccd1; border-radius:.35em;'
.. ' overflow:hidden; background:#fff;"'
local titleStyle = 'class="mw-collapsible-toggle" style="float:none; display:block;'
.. ' padding:.38em .6em; background:#f6f8fa; border-bottom:1px solid #d8dee4;'
.. ' font-weight:700; text-align:center; font-size:102%;'
.. ' cursor:pointer; user-select:none;"'
local contentStyle = 'class="mw-collapsible-content" style="overflow-x:auto;"'
local tableStyle = 'style="width:100%; min-width:30em; margin:0;'
.. ' border-collapse:collapse; background:#fff; text-align:center; font-size:95%;"'
local headCellStyle = 'style="padding:.32em .5em; background:#f6f8fa;'
.. ' border-bottom:1px solid #d8dee4; font-weight:700; white-space:nowrap;"'
local rowHeadStyle = 'style="width:28%; padding:.32em .5em; background:#fbfbfc;'
.. ' border-top:1px solid #edf0f2; text-align:left; white-space:nowrap; font-weight:600;"'
local dataCellStyle = 'style="padding:.32em .5em; border-top:1px solid #edf0f2;'
.. ' border-left:1px solid #edf0f2; text-align:center;"'
local personHeadStyle = 'style="padding:.34em .5em; background:#f6f8fa;'
.. ' border-top:1px solid #d8dee4; border-bottom:1px solid #edf0f2;'
.. ' text-align:left; font-weight:700;"'
-- ── Satır oluşturucular ──
local function headerRow(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
.. "\n! " .. headCellStyle .. " | [[çoğul]]"
end
local function headerRowSingle(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
end
local function row(caseKey, sgText, plText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
.. "\n| " .. dataCellStyle .. " | " .. plText
end
local function rowSingle(caseKey, sgText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
end
local function personHeader(label)
return "\n|-"
.. "\n! colspan=\"3\" " .. personHeadStyle .. " | " .. label
end
local function personHeaderSingle(label)
return "\n|-"
.. "\n! colspan=\"2\" " .. personHeadStyle .. " | " .. label
end
local persons = {
{ key = "1t", left = "1. tekil ([[benim]])" },
{ key = "2t", left = "2. tekil ([[senin]])" },
{ key = "3t", left = "3. tekil ([[onun]])" },
{ key = "1ç", left = "1. çoğul ([[bizim]])" },
{ key = "2ç", left = "2. çoğul ([[sizin]])" },
{ key = "3ç", left = "3. çoğul ([[onların]])" },
}
local out = {}
-- ── Özel ad / özel addan türemiş çekim tablosu (yalnızca tekil) ──
if useProperTable then
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
out[#out+1] = rowSingle("yalın", lemma, true)
else
out[#out+1] = rowSingle(c, link(form({ number = "sg", case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- İyelik tablosu (yalnızca tekil sütun)
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeaderSingle(person.left)
-- 3ç satırında tekil iyelik formu 3t ile aynıdır.
local possKey = (person.key == "3ç") and "3t" or person.key
for _, c in ipairs(casesOrder) do
out[#out+1] = rowSingle(c, link(form({ number = "sg", poss = possKey, case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- ── Ana çekim tablosu (özel olmayan adlar) ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
local pl = link(form({ number = "pl", case = "yalın" }))
out[#out+1] = row("yalın", lemma, pl, true)
else
local sg = link(form({ number = "sg", case = c }))
local pl = link(form({ number = "pl", case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- ── İyelik tablosu ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeader(person.left)
for _, c in ipairs(casesOrder) do
if person.key == "3ç" then
-- Tekil sütun: "onun evi" = 3t+sg / Çoğul sütun: "onların evi" = 3ç+pl
local sg = link(form({ number = "sg", poss = "3t", case = c }))
local pl = link(form({ number = "pl", poss = "3ç", case = c }))
out[#out+1] = row(c, sg, pl, false)
else
local sg = link(form({ number = "sg", poss = person.key, case = c }))
local pl = link(form({ number = "pl", poss = person.key, case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- invoke giriş noktası
function p.ad(frame)
return p.adTablo(frame)
end
-- Düzeltme [7]: kullanılmayan i1-i4 parametreleri kaldırıldı.
-- İmza: p.ayarla(bas, istisna, sayi, hal, ak)
function p.ayarla(bas, istisna, sayi, hal, ak)
return p.form(bas, {
it = istisna,
k = ak,
number = (sayi == "çoğul" and "pl" or "sg"),
case = hal or "yalın",
})
end
-- [[Modül:çekim/şablonlar]] tarafından kullanılan ters-arama motoru.
function p.cekim_tr(args)
local ad = args[1]
local cekim = mw.title.getCurrentTitle()["text"]
local it = args["istisna"]
local k = args["k"] or args["a"]
if u.find(cekim, "'") then k = "1" end
local function virgul(tablo)
if tablo[1] then table.insert(tablo, ";") end
end
-- Düzeltme [8]: cekimler tablosu sadeleştirildi; p.ayarla'nın yeni imzasına uygun.
local cekimler = {
{ "yalın" },
{ "belirtme" },
{ "yönelme" },
{ "bulunma" },
{ "ayrılma" },
{ "tamlayan" },
}
-- Düzeltme [8]: iyelik tablosu sadeleştirildi.
local iyelik = {
{ "1t" }, { "2t" }, { "3t" },
{ "1ç" }, { "2ç" }, { "3ç" },
}
local function tumDurumlar(say, kisi, ozel)
say = tostring(say or "")
if say == "" then return end
for _, c in ipairs(cekimler) do
local hal = c[1]
if cekim == p.ayarla(say, it, "tekil", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
-- "evleri" gibi kökünde -ler/-lar taşıyan iyelik biçimleri çoğul sayılır.
if ozel and u.find(say, "l[ea]r") then
table.insert(args[3], "ç")
else
table.insert(args[3], "t")
end
end
if cekim == p.ayarla(say, it, "çoğul", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
table.insert(args[3], "ç")
end
end
end
tumDurumlar(ad)
-- Not: Türkçe'de 3t+çoğul ve 3ç+tekil aynı formu üretir ("evleri" gibi).
-- Bu yapısal belirsizlik beklenen davranıştır; her iki etiket de kayıt altına alınır.
for _, s in ipairs(iyelik) do
local poss_code = s[1]
local tekil = p.form(ad, { it = it, k = k, number = "sg", poss = poss_code, case = "yalın" })
local cogul = p.form(ad, { it = it, k = k, number = "pl", poss = poss_code, case = "yalın" })
tumDurumlar(tekil, poss_code, true)
tumDurumlar(cogul, poss_code, true)
end
if not args[3][1] then table.insert(args[3], "belirtilmemiş") end
end
return p
l35wybjux9mnmm4ye6gu1gs1nmxm5ss
5658326
5658324
2026-05-15T19:20:35Z
Satirdan kahraman
37401
Yıldızoğlu'nu olsun diye
5658326
Scribunto
text/plain
-- Module:tr-ad
-- Baştan yazım: daha modüler, daha az heuristik, daha az çakışma.
--
-- Düzeltmeler (v2):
-- [1] harmI : force_incelme=true + û köşe durumu → "u" yerine "ü" döndürüyor.
-- [2] soften : ikizleşmiş tüm ünsüzler (pp dahil) artık yumuşamıyor.
-- [3] soften : -[ünlü]log$ deseniyle daha fazla -log sözcüğü yakalanıyor
-- (prolog, epilog, monolog, analog …).
-- [4] attach : is_proper bayrağı kaldırıldı; yumuşama tek elden allow_soften.
-- [5] p.form : özel adlar için allow_soften = false; kesme işareti son adımda,
-- suffix hesaplamasından sonra temiz biçimde ekleniyor.
-- [6] IST_BIL : setmetatable kaldırıldı, isAutoCompound() fonksiyonu eklendi.local isComp =
-- [7] p.ayarla : kullanılmayan i1-i4 parametreleri kaldırıldı.
-- [8] cekim_tr : p.ayarla çağrıları ve cekimler tablosu güncellendi.
-- [9] link : mw.title.new pcall ile koruma altına alındı.
-- [10] dropLastVowelOnce: ters-çevirme döngüsü yerine doğrudan indis tarama.
-- [11] possStem : 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local p = {}
local u = mw.ustring
local trim = mw.text.trim
-- ── İstisna listeleri ─────────────────────────────────────────────────────────
local ist = require("Modül:tr-ad/istisnalar")
local IST_YUM = ist.istisnaYumusama or {}
local IST_INC = ist.istisnaIncelme or {}
local IST_DUS = ist.istisnaDusme or {}
local IST_BIL = ist.istisnaBilesik or {}
local IST_YALIN_SON = ist.istisnaYalinSonlu or {}
local IST_IKI = ist.istisnaIkizlesme or {}
-- Kökte gerçekten "s" bulunan sıfır-kök bileşikler (kafes+i → kafesi).
local KOK_SON_S_FORMLAR = {
["kafesi"] = true,
}
-- Bu kökler bileşikte k'ye geri çevrilmez (ağ, bağ …).
local KOK_SON_YUMUSAK_G = {
["ağ"] = true, ["bağ"] = true, ["çağ"] = true,
["dağ"] = true, ["yağ"] = true,
}
-- g → ğ yumuşaması yapılacak yabancı kökenli sözcükler.
local G_YUMUSAMA = {
["katalog"] = true, ["diyalog"] = true,
}
-- ── Temel yardımcılar ─────────────────────────────────────────────────────────
local V = {
a = true, e = true, ["ı"] = true, i = true,
o = true, ["ö"] = true, u = true, ["ü"] = true,
["â"] = true, ["î"] = true, ["û"] = true,
}
local HARD = {
p = true, ["ç"] = true, t = true, k = true,
f = true, h = true, s = true, ["ş"] = true,
}
local function lower(s) return u.lower(s or "") end
local function lastChar(s) return u.sub(s, -1) end
local function endsWithVowel(s)
return V[lower(lastChar(s))] == true
end
local function lastVowel(s)
s = lower(s or "")
for i = u.len(s), 1, -1 do
local ch = u.sub(s, i, i)
if V[ch] then return ch end
end
return nil
end
-- Normalizasyon: küçük harf + şapkalı harfleri düzleştir.
local function norm(s)
s = trim(s or "")
s = u.lower(s)
s = u.gsub(s, "â", "a")
s = u.gsub(s, "î", "i")
s = u.gsub(s, "û", "u")
s = u.gsub(s, "İ", "i")
return s
end
local UPPER_INITIAL = {
["A"]=true,["B"]=true,["C"]=true,["Ç"]=true,["D"]=true,
["E"]=true,["F"]=true,["G"]=true,["Ğ"]=true,["H"]=true,
["I"]=true,["İ"]=true,["J"]=true,["K"]=true,["L"]=true,
["M"]=true,["N"]=true,["O"]=true,["Ö"]=true,["P"]=true,
["R"]=true,["S"]=true,["Ş"]=true,["T"]=true,["U"]=true,
["Ü"]=true,["V"]=true,["Y"]=true,["Z"]=true,
}
local function startsWithUpper(lemma)
lemma = trim(lemma or "")
if lemma == "" then return false end
return UPPER_INITIAL[u.sub(lemma, 1, 1)] == true
end
local function lastWordNorm(s)
local n = norm(s or "")
return u.match(n, "%S+$") or n
end
-- ── Özel ad tespiti ───────────────────────────────────────────────────────────
local DERIVED_PROPER_NO_APOSTROPHE = {
["türkçe"]=true, ["ingilizce"]=true, ["almanca"]=true,
["fransızca"]=true, ["arapça"]=true, ["farsça"]=true,
["rusça"]=true, ["italyanca"]=true, ["ispanyolca"]=true,
["yunanca"]=true, ["kürtçe"]=true, ["zazaca"]=true,
["türklük"]=true, ["türkçülük"]=true, ["türkçü"]=true,
["müslümanlık"]=true,["hristiyanlık"]=true,
["konyalı"]=true, ["bursalı"]=true, ["istanbullu"]=true,
["izmirli"]=true, ["avrupalı"]=true, ["asyalı"]=true,
["afrikalı"]=true, ["hollandalı"]=true, ["almanyalı"]=true,
["fransalı"]=true, ["rusyalı"]=true,
}
-- Büyük harfle başladığı hâlde kesme işareti gerektiren özel sözcükler.
local FORCE_APOSTROPHE_PROPER = {
["ali"]=true, ["veli"]=true, ["güler"]=true,
["şişli"]=true, ["foça"]=true, ["buca"]=true, ["ılıca"]=true,
}
local function isDerivedProperNoApostrophe(lemma)
local n = norm(lemma or "")
local last = lastWordNorm(lemma)
if n == "" then return false end
if FORCE_APOSTROPHE_PROPER[n] or FORCE_APOSTROPHE_PROPER[last] then
return false
end
if DERIVED_PROPER_NO_APOSTROPHE[n] or DERIVED_PROPER_NO_APOSTROPHE[last] then
return true
end
-- Türkçe, İngilizce, Hekimoğluca vb. (≥6 harf, -ca/-ce/-ça/-çe)
if u.len(last) >= 6 and (
u.find(last, "ca$") or u.find(last, "ce$") or
u.find(last, "ça$") or u.find(last, "çe$")
) then return true end
-- Türklük, Türkçülük vb.
if u.find(last, "lık$") or u.find(last, "lik$")
or u.find(last, "luk$") or u.find(last, "lük$") then return true end
return false
end
local function isAutoProperName(lemma)
if not startsWithUpper(lemma) then return false end
if isDerivedProperNoApostrophe(lemma) then return false end
return true
end
local function isPossessiveSurnameEnding(lemma)
local last = lastWordNorm(lemma)
if u.find(last, "oğlu$") then return true end
if u.find(last, "oğulları$") then return true end
return false
end
local function isLanguageCompoundNoApostrophe(lemma)
local n = norm(lemma or "")
if not u.find(n, " ") then return false end
local last = lastWordNorm(lemma)
-- Uygur Türkçesi, Osmanlı Türkçesi, Türkiye Türkçesi
-- Kırım Tatarcası, Kazak Türkçesi vb.
if u.find(last, "[cç][ae]s[ıiuü]$") then
return true
end
return false
end
-- ── Bileşik otomatik tespiti ──────────────────────────────────────────────────
-- Eski IST_BIL setmetatable() yaklaşımının yerini aldı.
-- Çok kelimeli, ı/i/u/ü ile biten ifadeler bileşik kabul edilir;
-- -ıcı/-ici/-ucu/-ücü gibi aletlik son eklerini ayırt eder.
local function otomatikYalinSonluMu(last_word)
last_word = u.lower(last_word or "")
return u.find(last_word, "[ıiuü]c[ıiuü]$") ~= nil
end
local function isAutoCompound(normed)
if not u.find(normed, " ") then return false end
local last_char = u.sub(normed, -1)
if last_char ~= "ı" and last_char ~= "i"
and last_char ~= "u" and last_char ~= "ü" then return false end
local last_word = u.match(normed, "%s(%S+)$")
if last_word then
if IST_YALIN_SON[last_word] or otomatikYalinSonluMu(last_word) then
return false
end
end
return true
end
-- ── Ünlü uyumu ────────────────────────────────────────────────────────────────
-- 2'li uyum (A/E)
local function harmA(stem, force_incelme)
local lv = lastVowel(stem) or "a"
if force_incelme then return "e" end
if lv == "e" or lv == "i" or lv == "ö" or lv == "ü" or lv == "î" then
return "e"
end
return "a"
end
-- 4'lü uyum (I)
-- Düzeltme [1]: force_incelme=true + û → "ü" (daha önce "u" dönüyordu).
local function harmI(stem, force_incelme)
local lv = lastVowel(stem) or "ı"
if force_incelme then
if lv == "a" or lv == "ı" or lv == "â" then return "i" end
if lv == "o" or lv == "u" or lv == "û" then return "ü" end
-- e, i, î, ö, ü zaten ince → normal akışa devam.
end
if lv == "a" or lv == "ı" then return "ı" end
if lv == "e" or lv == "i" or lv == "î" then return "i" end
if lv == "o" or lv == "u" then return "u" end
if lv == "â" then return "ı" end
if lv == "û" then return "u" end
return "ü"
end
-- t/d seçimi (sert ünsüz sonrası t)
local function chooseD(stem)
if HARD[lower(lastChar(stem))] then return "t" end
return "d"
end
-- ── Çoğul ─────────────────────────────────────────────────────────────────────
local function pluralSuffix(stem, force_incelme)
return "l" .. harmA(stem, force_incelme) .. "r"
end
-- oğul → oğullar (düzensiz çoğul tabanı)
local function pluralBase(stem)
if u.find(stem, "oğl$") then
return u.sub(stem, 1, -4) .. "oğul"
end
return stem
end
local function makePluralStem(stem, force_incelme)
local pbase = pluralBase(stem)
return pbase .. pluralSuffix(pbase, force_incelme)
end
-- ── Ünsüz dönüşümleri ─────────────────────────────────────────────────────────
-- Yumuşama: pçtk → bcdğ, yalnızca ünlüyle başlayan ek gelince.
-- Düzeltme [2]: ikizleşmiş tüm ünsüzler (pp/çç/tt/kk) artık yumuşamıyor.
-- Düzeltme [3]: -[ünlü]log$ deseni daha geniş -log sözcüklerini yakalar.
local function soften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
-- İkizleşmiş ünsüz: hiçbiri yumuşamaz.
if c == prev and (c == "p" or c == "ç" or c == "t" or c == "k") then
return stem
end
if c == "p" then return u.sub(stem, 1, -2) .. "b" end
if c == "ç" then return u.sub(stem, 1, -2) .. "c" end
if c == "t" then return u.sub(stem, 1, -2) .. "d" end
if c == "k" then
if prev == "n" then
return u.sub(stem, 1, -2) .. "g"
end
return u.sub(stem, 1, -2) .. "ğ"
end
if c == "g" then
local s = u.lower(stem or "")
-- katalog, diyalog, prolog, epilog, monolog, analog …
if u.find(s, "[aeıioöuü]log$") or G_YUMUSAMA[s] then
return u.sub(stem, 1, -2) .. "ğ"
end
end
return stem
end
-- Yumuşamayı geri al (bileşik tabanı temizlerken kullanılır).
local function unsoften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
if c == "b" then return u.sub(stem, 1, -2) .. "p" end
if c == "c" then return u.sub(stem, 1, -2) .. "ç" end
if c == "d" then return u.sub(stem, 1, -2) .. "t" end
if c == "ğ" then return u.sub(stem, 1, -2) .. "k" end
if c == "g" and prev == "n" then return u.sub(stem, 1, -2) .. "k" end
return stem
end
-- Ünlü düşmesi: kökün son ünlüsünü düşürür.
-- Düzeltme [10]: ters-çevirme döngüsü kaldırıldı; doğrudan indis taraması.
local function dropLastVowelOnce(stem)
local chars = {}
local len = u.len(stem)
for i = 1, len do chars[i] = u.sub(stem, i, i) end
for i = len, 1, -1 do
if V[lower(chars[i])] then
table.remove(chars, i)
break
end
end
return table.concat(chars)
end
-- İkizleşme: son ünsüzü çiftler.
local function geminateLastConsonant(stem)
return stem .. lastChar(stem)
end
-- ── İstisna sorgulama yardımcıları ───────────────────────────────────────────
local function isIncelme(lemma, it)
if it == "incelme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_INC[n] or IST_INC[last] or false
end
local function isSu(s)
local n = norm(s)
return n == "su"
or u.find(n, "[ %-\xe2\x80\x91]su$") ~= nil -- U+2011 non-breaking hyphen
or n == "akarsu"
or n == "özsu"
or n == "pissu"
end
-- Otomatik yumuşama kapatma kuralları
local function autoNoSoften(lemma)
if u.find(lemma, "ist$") then return true end
if u.find(lemma, "iyet$")
or u.find(lemma, "iyat$")
or u.find(lemma, "iyyet$") then return true end
if u.find(lemma, "[aeıioöuü]t$") then return true end
return false
end
-- Yumuşama beyaz listesi: autoNoSoften'ı geçersiz kılar.
local SOFTEN_WHITELIST = {
["kanat"]=true, ["kağıt"]=true, ["umut"]=true, ["öğüt"]=true,
["vücut"]=true, ["mabet"]=true, ["but"]=true,
["zebercet"]=true, ["haset"]=true,
}
local function isNoSoften(lemma, it)
if it == "yumuşama" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
if SOFTEN_WHITELIST[n] or SOFTEN_WHITELIST[last] then return false end
return IST_YUM[n] or IST_YUM[last]
or autoNoSoften(n) or autoNoSoften(last)
end
local function isDropVowel(lemma, it)
if it == "düşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_DUS[n] or IST_DUS[last] or false
end
local function isGeminate(lemma, it)
if it == "ikizleşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_IKI[n] or IST_IKI[last] or false
end
-- ── Ek bağlama ────────────────────────────────────────────────────────────────
-- Düzeltme [4]: is_proper bayrağı kaldırıldı.
-- Yumuşama yalnızca allow_soften üzerinden kontrol edilir.
local function attach(stem, suffix, opts)
opts = opts or {}
local base = stem
local first = u.sub(suffix, 1, 1) or ""
local isVowelInitial = (V[first] == true)
if isVowelInitial then
if opts.allow_soften then
base = soften(base)
end
if opts.buffer and endsWithVowel(base) then
base = base .. opts.buffer
end
end
return base .. suffix
end
-- ── Hâl ekleri ────────────────────────────────────────────────────────────────
local function caseForms(stem, force_incelme, opts)
opts = opts or {}
local out = {}
local buf_acc_dat = (opts.is_poss3 or opts.is_comp) and "n" or "y"
out["yalın"] = stem
-- belirtme: -(y/n)I
out["belirtme"] = attach(stem, harmI(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- yönelme: -(y/n)A
out["yönelme"] = attach(stem, harmA(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- bulunma: -DA / ayrılma: -DAn
local base_da = (opts.is_poss3 or opts.is_comp) and (stem .. "n") or stem
local d = chooseD(base_da)
local da_suf = d .. harmA(base_da, force_incelme)
out["bulunma"] = base_da .. da_suf
out["ayrılma"] = base_da .. da_suf .. "n"
-- tamlayan: -(n)In
local genBuf = isSu(stem) and "y" or "n"
out["tamlayan"] = attach(stem, harmI(stem, force_incelme) .. "n",
{ buffer = genBuf, allow_soften = opts.allow_soften })
return out
end
-- ── İyelik ekleri ─────────────────────────────────────────────────────────────
-- Düzeltme [11]: 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local function possStem(lemma, person, force_incelme, opts)
opts = opts or {}
local stem = lemma or ""
local harmony_stem = opts.harmony_stem or stem
local i = harmI(harmony_stem, force_incelme)
local endsV = endsWithVowel(stem)
-- su istisnası: suyu, suyum …
if isSu(lemma) and person ~= "3ç" then
stem = stem .. "y"
endsV = false
end
local ao = { allow_soften = opts.allow_soften }
if person == "1t" then
return attach(stem, endsV and "m" or (i .. "m"), ao)
elseif person == "2t" then
return attach(stem, endsV and "n" or (i .. "n"), ao)
elseif person == "3t" then
return attach(stem, i, { buffer = "s", allow_soften = opts.allow_soften })
elseif person == "1ç" then
-- ünlü-biten: -mIz | ünsüz-biten: -ImIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "m" or (i .. "m")) .. harmI(mid .. "m", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "2ç" then
-- ünlü-biten: -nIz | ünsüz-biten: -InIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "n" or (i .. "n")) .. harmI(mid .. "n", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "3ç" then
-- Kök hâlinde çoğul eki zaten taşıyorsa ek tekrar eklenmez.
if u.find(stem or "", "l[ae]r$") then
return stem .. harmI(stem, force_incelme)
end
local ps = makePluralStem(stem, force_incelme)
return ps .. harmI(ps, force_incelme)
end
return stem
end
-- ── Bileşik taban temizliği ───────────────────────────────────────────────────
-- IST_DUS'tan "düşmüş biçimler → asıl kökler" haritası.
-- Modül yüklenirken bir kez hesaplanır.
local DROPPED_MAP = {}
local DROPPED_KEYS = {}
for k in pairs(IST_DUS) do
local d = dropLastVowelOnce(k)
if d and d ~= k then DROPPED_MAP[d] = k end
end
for d in pairs(DROPPED_MAP) do
DROPPED_KEYS[#DROPPED_KEYS + 1] = d
end
table.sort(DROPPED_KEYS, function(a, b) return u.len(a) > u.len(b) end)
local function restoreDroppedCompoundBase(base)
local nbase = norm(base)
for _, d in ipairs(DROPPED_KEYS) do
local dlen = u.len(d)
if u.sub(nbase, -dlen) == d then
local prefix = u.sub(base, 1, u.len(base) - dlen)
return prefix .. DROPPED_MAP[d], true
end
end
return base, false
end
local function getCompoundBase(lemma)
local base = lemma or ""
local nlemma = norm(base)
local last_word = u.match(nlemma, "%S+$") or nlemma
if KOK_SON_S_FORMLAR[last_word] then
if u.find(base, "[ıiuü]$") then base = u.sub(base, 1, -2) end
elseif u.find(base, "s[ıiuü]$") then
base = u.sub(base, 1, -3)
elseif u.find(base, "[ıiuü]$") then
base = u.sub(base, 1, -2)
end
local last_base = u.match(norm(base), "%S+$") or norm(base)
if not KOK_SON_YUMUSAK_G[last_base] then
base = unsoften(base)
end
-- su istisnası: çamaşır suyu → çamaşır su
if u.sub(base, -1) == "y" and isSu(u.sub(base, 1, -2)) then
base = u.sub(base, 1, -2)
end
return base
end
-- ── Ana çekim motoru ──────────────────────────────────────────────────────────
function p.form(lemma, spec)
spec = spec or {}
lemma = trim(lemma or "")
if lemma == "" then return "" end
local it = spec.it
local k = spec.k
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
-- Düzeltme [5]: isProper bayrağı; kesme işareti ve yumuşama buradan yönetilir.
local isProper = (k == "1")
local force_incelme = isIncelme(lemma, it)
local n_lemma = norm(lemma)
local isComp =
(it == "bileşik")
or IST_BIL[n_lemma]
or isAutoCompound(n_lemma)
or isPossessiveSurnameEnding(lemma)
or (u.find(n_lemma, "başı$") ~= nil)
-- isComp:
-- n bağlayıcısı gerekip gerekmediğini söyler.
--
-- useCompoundBase:
-- gövdenin gerçekten soyulup soyulmayacağını söyler.
--
-- Özel adlarda gövde soyulmaz:
-- Osmanlı Türkçesi → Osmanlı Türkçes yapılmaz.
-- Ama isComp yine true kalır:
-- Osmanlı Türkçesi + ni → Osmanlı Türkçesi'ni
local properCompoundSIForPoss =
isProper and isComp and spec.poss and (u.find(n_lemma, "s[ıiuü]$") ~= nil)
local useCompoundBase = isComp and (not isProper or properCompoundSIForPoss)
local compBase = useCompoundBase and getCompoundBase(lemma) or nil
if useCompoundBase and not compBase then compBase = lemma end
local compOriginBase, _compHadDrop = compBase, false
if useCompoundBase and compBase then
compOriginBase, _compHadDrop = restoreDroppedCompoundBase(compBase)
end
-- allow_soften: özel adlarda daima false (kesme işareti ile birlikte yumuşama olmaz).
-- Bileşiklerde yumuşama kararı asıl köke (compOriginBase) göre verilir.
local soften_base = compOriginBase or compBase or lemma
local allow_soften
if isProper then
allow_soften = false
else
allow_soften = not isNoSoften(soften_base, it)
end
local do_drop = isDropVowel(lemma, it)
local do_gem = isGeminate(lemma, it)
local stem_only = lemma
local isPlural = (spec.number == "pl")
local isCompoundPluralPoss = false
-- ── 1) Çoğul ──
if isPlural then
if useCompoundBase then
local pluralBaseForComp = compOriginBase or compBase
if spec.poss and spec.poss ~= "3ç" then
stem_only = makePluralStem(pluralBaseForComp, force_incelme)
isCompoundPluralPoss = true
else
local ps = makePluralStem(pluralBaseForComp, force_incelme)
stem_only = ps .. harmI(ps, force_incelme)
end
else
stem_only = stem_only .. pluralSuffix(stem_only, force_incelme)
end
else
-- ── 2) Ünlü düşmesi / ikizleşme (yalnızca tekil, ünlü-başlı ek varsa) ──
if not isComp then
local isFirstSuffixVowel = false
if spec.poss then
isFirstSuffixVowel = not endsWithVowel(stem_only)
if spec.poss == "3t" or spec.poss == "3ç" then
isFirstSuffixVowel = true
end
elseif spec.case == "belirtme"
or spec.case == "yönelme"
or spec.case == "tamlayan" then
isFirstSuffixVowel = true
end
if isFirstSuffixVowel then
if do_drop then stem_only = dropLastVowelOnce(stem_only) end
if do_gem then stem_only = geminateLastConsonant(stem_only) end
end
end
end
-- -- ── 3) İyelik ──
if spec.poss then
if useCompoundBase and not isCompoundPluralPoss then
stem_only = possStem(compBase, spec.poss, force_incelme, {
allow_soften = allow_soften,
harmony_stem = compOriginBase or compBase,
})
elseif isCompoundPluralPoss then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
else
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = allow_soften,
})
end
end
-- ── 4) Hâl ──
local is_poss3 = (spec.poss == "3t" or spec.poss == "3ç")
local needs_n = is_poss3
or (isComp and (not spec.poss or isPlural) and not isCompoundPluralPoss)
local cases = caseForms(stem_only, force_incelme, {
allow_soften = allow_soften,
is_poss3 = needs_n,
is_comp = needs_n,
})
local out = cases[spec.case or "yalın"] or stem_only
-- ── 5) Özel adlarda kesme işareti ──
-- Dil adı bileşikleri kesmesiz kalır:
-- Uygur Türkçesi → Uygur Türkçesini
-- Soyadları ve normal özel adlar kesmeli kalır:
-- Yıldızoğlu → Yıldızoğlu'nu
if isProper and not isPlural and not u.find(lemma, "'")
and not isLanguageCompoundNoApostrophe(lemma) then
local lemma_len = u.len(lemma)
if u.sub(out, 1, lemma_len) == lemma then
local suffix_part = u.sub(out, lemma_len + 1)
if suffix_part ~= "" then
return lemma .. "'" .. suffix_part
end
end
end
return out
end
-- ── Wiki tablosu üretimi ──────────────────────────────────────────────────────
function p.adTablo(frame)
local args = frame.args
local hasAny = false
for _ in pairs(args) do hasAny = true; break end
if not hasAny then
local parent = frame:getParent()
args = (parent and parent.args) or {}
end
local lemma = trim(args[1] or args["ad"] or mw.title.getCurrentTitle().text or "")
local it = args["istisna"]
local k = args["k"] or args["a"]
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
local isProper = (k == "1")
local useProperTable = isProper or derivedNoApostrophe
local casesOrder = { "yalın", "belirtme", "yönelme", "bulunma", "ayrılma", "tamlayan" }
local function form(spec)
spec = spec or {}
spec.it = it
spec.k = k
return p.form(lemma, spec)
end
-- Düzeltme [9]: mw.title.new hata fırlatabilir; pcall ile koruma.
local linkCache = {}
local function link(s)
s = trim(tostring(s or ""))
if s == "" then return s end
local exists = linkCache[s]
if exists == nil then
local ok, title = pcall(mw.title.new, s, 0)
exists = ok and title and title.exists or false
linkCache[s] = exists
end
if exists then
return "[[" .. s .. "]]"
end
return "[[" .. s .. "|<span style=\"color:#202122;\">" .. mw.text.nowiki(s) .. "</span>]]"
end
local CASE_LABELS = {
["yalın"] = "[[yalın hâl|yalın]]",
["belirtme"] = "[[belirtme hâli|belirtme]]",
["yönelme"] = "[[yönelme hâli|yönelme]]",
["bulunma"] = "[[bulunma hâli|bulunma]]",
["ayrılma"] = "[[ayrılma hâli|ayrılma]]",
["tamlayan"] = "[[tamlayan hâli|tamlayan]]",
}
local function caseLabel(k2) return CASE_LABELS[k2] or k2 end
-- ── Görünüm stilleri ──
local cardStyle = 'class="mw-collapsible" style="max-width:48em; width:100%;'
.. ' margin:.45em 0; border:1px solid #c8ccd1; border-radius:.35em;'
.. ' overflow:hidden; background:#fff;"'
local titleStyle = 'class="mw-collapsible-toggle" style="float:none; display:block;'
.. ' padding:.38em .6em; background:#f6f8fa; border-bottom:1px solid #d8dee4;'
.. ' font-weight:700; text-align:center; font-size:102%;'
.. ' cursor:pointer; user-select:none;"'
local contentStyle = 'class="mw-collapsible-content" style="overflow-x:auto;"'
local tableStyle = 'style="width:100%; min-width:30em; margin:0;'
.. ' border-collapse:collapse; background:#fff; text-align:center; font-size:95%;"'
local headCellStyle = 'style="padding:.32em .5em; background:#f6f8fa;'
.. ' border-bottom:1px solid #d8dee4; font-weight:700; white-space:nowrap;"'
local rowHeadStyle = 'style="width:28%; padding:.32em .5em; background:#fbfbfc;'
.. ' border-top:1px solid #edf0f2; text-align:left; white-space:nowrap; font-weight:600;"'
local dataCellStyle = 'style="padding:.32em .5em; border-top:1px solid #edf0f2;'
.. ' border-left:1px solid #edf0f2; text-align:center;"'
local personHeadStyle = 'style="padding:.34em .5em; background:#f6f8fa;'
.. ' border-top:1px solid #d8dee4; border-bottom:1px solid #edf0f2;'
.. ' text-align:left; font-weight:700;"'
-- ── Satır oluşturucular ──
local function headerRow(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
.. "\n! " .. headCellStyle .. " | [[çoğul]]"
end
local function headerRowSingle(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
end
local function row(caseKey, sgText, plText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
.. "\n| " .. dataCellStyle .. " | " .. plText
end
local function rowSingle(caseKey, sgText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
end
local function personHeader(label)
return "\n|-"
.. "\n! colspan=\"3\" " .. personHeadStyle .. " | " .. label
end
local function personHeaderSingle(label)
return "\n|-"
.. "\n! colspan=\"2\" " .. personHeadStyle .. " | " .. label
end
local persons = {
{ key = "1t", left = "1. tekil ([[benim]])" },
{ key = "2t", left = "2. tekil ([[senin]])" },
{ key = "3t", left = "3. tekil ([[onun]])" },
{ key = "1ç", left = "1. çoğul ([[bizim]])" },
{ key = "2ç", left = "2. çoğul ([[sizin]])" },
{ key = "3ç", left = "3. çoğul ([[onların]])" },
}
local out = {}
-- ── Özel ad / özel addan türemiş çekim tablosu (yalnızca tekil) ──
if useProperTable then
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
out[#out+1] = rowSingle("yalın", lemma, true)
else
out[#out+1] = rowSingle(c, link(form({ number = "sg", case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- İyelik tablosu (yalnızca tekil sütun)
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeaderSingle(person.left)
-- 3ç satırında tekil iyelik formu 3t ile aynıdır.
local possKey = (person.key == "3ç") and "3t" or person.key
for _, c in ipairs(casesOrder) do
out[#out+1] = rowSingle(c, link(form({ number = "sg", poss = possKey, case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- ── Ana çekim tablosu (özel olmayan adlar) ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
local pl = link(form({ number = "pl", case = "yalın" }))
out[#out+1] = row("yalın", lemma, pl, true)
else
local sg = link(form({ number = "sg", case = c }))
local pl = link(form({ number = "pl", case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- ── İyelik tablosu ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeader(person.left)
for _, c in ipairs(casesOrder) do
if person.key == "3ç" then
-- Tekil sütun: "onun evi" = 3t+sg / Çoğul sütun: "onların evi" = 3ç+pl
local sg = link(form({ number = "sg", poss = "3t", case = c }))
local pl = link(form({ number = "pl", poss = "3ç", case = c }))
out[#out+1] = row(c, sg, pl, false)
else
local sg = link(form({ number = "sg", poss = person.key, case = c }))
local pl = link(form({ number = "pl", poss = person.key, case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- invoke giriş noktası
function p.ad(frame)
return p.adTablo(frame)
end
-- Düzeltme [7]: kullanılmayan i1-i4 parametreleri kaldırıldı.
-- İmza: p.ayarla(bas, istisna, sayi, hal, ak)
function p.ayarla(bas, istisna, sayi, hal, ak)
return p.form(bas, {
it = istisna,
k = ak,
number = (sayi == "çoğul" and "pl" or "sg"),
case = hal or "yalın",
})
end
-- [[Modül:çekim/şablonlar]] tarafından kullanılan ters-arama motoru.
function p.cekim_tr(args)
local ad = args[1]
local cekim = mw.title.getCurrentTitle()["text"]
local it = args["istisna"]
local k = args["k"] or args["a"]
if u.find(cekim, "'") then k = "1" end
local function virgul(tablo)
if tablo[1] then table.insert(tablo, ";") end
end
-- Düzeltme [8]: cekimler tablosu sadeleştirildi; p.ayarla'nın yeni imzasına uygun.
local cekimler = {
{ "yalın" },
{ "belirtme" },
{ "yönelme" },
{ "bulunma" },
{ "ayrılma" },
{ "tamlayan" },
}
-- Düzeltme [8]: iyelik tablosu sadeleştirildi.
local iyelik = {
{ "1t" }, { "2t" }, { "3t" },
{ "1ç" }, { "2ç" }, { "3ç" },
}
local function tumDurumlar(say, kisi, ozel)
say = tostring(say or "")
if say == "" then return end
for _, c in ipairs(cekimler) do
local hal = c[1]
if cekim == p.ayarla(say, it, "tekil", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
-- "evleri" gibi kökünde -ler/-lar taşıyan iyelik biçimleri çoğul sayılır.
if ozel and u.find(say, "l[ea]r") then
table.insert(args[3], "ç")
else
table.insert(args[3], "t")
end
end
if cekim == p.ayarla(say, it, "çoğul", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
table.insert(args[3], "ç")
end
end
end
tumDurumlar(ad)
-- Not: Türkçe'de 3t+çoğul ve 3ç+tekil aynı formu üretir ("evleri" gibi).
-- Bu yapısal belirsizlik beklenen davranıştır; her iki etiket de kayıt altına alınır.
for _, s in ipairs(iyelik) do
local poss_code = s[1]
local tekil = p.form(ad, { it = it, k = k, number = "sg", poss = poss_code, case = "yalın" })
local cogul = p.form(ad, { it = it, k = k, number = "pl", poss = poss_code, case = "yalın" })
tumDurumlar(tekil, poss_code, true)
tumDurumlar(cogul, poss_code, true)
end
if not args[3][1] then table.insert(args[3], "belirtilmemiş") end
end
return p
35v5v37cpvzf195cutt7tzk5zv3twf6
5658331
5658326
2026-05-15T19:35:51Z
Satirdan kahraman
37401
5658331
Scribunto
text/plain
-- Module:tr-ad
-- Baştan yazım: daha modüler, daha az heuristik, daha az çakışma.
--
-- Düzeltmeler (v2):
-- [1] harmI : force_incelme=true + û köşe durumu → "u" yerine "ü" döndürüyor.
-- [2] soften : ikizleşmiş tüm ünsüzler (pp dahil) artık yumuşamıyor.
-- [3] soften : -[ünlü]log$ deseniyle daha fazla -log sözcüğü yakalanıyor
-- (prolog, epilog, monolog, analog …).
-- [4] attach : is_proper bayrağı kaldırıldı; yumuşama tek elden allow_soften.
-- [5] p.form : özel adlar için allow_soften = false; kesme işareti son adımda,
-- suffix hesaplamasından sonra temiz biçimde ekleniyor.
-- [6] IST_BIL : setmetatable kaldırıldı, isAutoCompound() fonksiyonu eklendi.local isComp =
-- [7] p.ayarla : kullanılmayan i1-i4 parametreleri kaldırıldı.local FORCE_APOSTROPHE_PROPER = {
-- [8] cekim_tr : p.ayarla çağrıları ve cekimler tablosu güncellendi.
-- [9] link : mw.title.new pcall ile koruma altına alındı.
-- [10] dropLastVowelOnce: ters-çevirme döngüsü yerine doğrudan indis tarama.
-- [11] possStem : 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local p = {}
local u = mw.ustring
local trim = mw.text.trim
-- ── İstisna listeleri ─────────────────────────────────────────────────────────
local ist = require("Modül:tr-ad/istisnalar")
local IST_YUM = ist.istisnaYumusama or {}
local IST_INC = ist.istisnaIncelme or {}
local IST_DUS = ist.istisnaDusme or {}
local IST_BIL = ist.istisnaBilesik or {}
local IST_YALIN_SON = ist.istisnaYalinSonlu or {}
local IST_IKI = ist.istisnaIkizlesme or {}
local IST_KESMESIZ_OZEL = ist.istisnaKesmesizOzelAd or {}
-- Kökte gerçekten "s" bulunan sıfır-kök bileşikler (kafes+i → kafesi).
local KOK_SON_S_FORMLAR = {
["kafesi"] = true,
}
-- Bu kökler bileşikte k'ye geri çevrilmez (ağ, bağ …).
local KOK_SON_YUMUSAK_G = {
["ağ"] = true, ["bağ"] = true, ["çağ"] = true,
["dağ"] = true, ["yağ"] = true,
}
-- g → ğ yumuşaması yapılacak yabancı kökenli sözcükler.
local G_YUMUSAMA = {
["katalog"] = true, ["diyalog"] = true,
}
-- ── Temel yardımcılar ─────────────────────────────────────────────────────────
local V = {
a = true, e = true, ["ı"] = true, i = true,
o = true, ["ö"] = true, u = true, ["ü"] = true,
["â"] = true, ["î"] = true, ["û"] = true,
}
local HARD = {
p = true, ["ç"] = true, t = true, k = true,
f = true, h = true, s = true, ["ş"] = true,
}
local function lower(s) return u.lower(s or "") end
local function lastChar(s) return u.sub(s, -1) end
local function endsWithVowel(s)
return V[lower(lastChar(s))] == true
end
local function lastVowel(s)
s = lower(s or "")
for i = u.len(s), 1, -1 do
local ch = u.sub(s, i, i)
if V[ch] then return ch end
end
return nil
end
-- Normalizasyon: küçük harf + şapkalı harfleri düzleştir.
local function norm(s)
s = trim(s or "")
s = u.lower(s)
s = u.gsub(s, "â", "a")
s = u.gsub(s, "î", "i")
s = u.gsub(s, "û", "u")
s = u.gsub(s, "İ", "i")
return s
end
local UPPER_INITIAL = {
["A"]=true,["B"]=true,["C"]=true,["Ç"]=true,["D"]=true,
["E"]=true,["F"]=true,["G"]=true,["Ğ"]=true,["H"]=true,
["I"]=true,["İ"]=true,["J"]=true,["K"]=true,["L"]=true,
["M"]=true,["N"]=true,["O"]=true,["Ö"]=true,["P"]=true,
["R"]=true,["S"]=true,["Ş"]=true,["T"]=true,["U"]=true,
["Ü"]=true,["V"]=true,["Y"]=true,["Z"]=true,
}
local function startsWithUpper(lemma)
lemma = trim(lemma or "")
if lemma == "" then return false end
return UPPER_INITIAL[u.sub(lemma, 1, 1)] == true
end
local function lastWordNorm(s)
local n = norm(s or "")
return u.match(n, "%S+$") or n
end
-- ── Özel ad tespiti ───────────────────────────────────────────────────────────
local DERIVED_PROPER_NO_APOSTROPHE = {
["türkçe"]=true, ["ingilizce"]=true, ["almanca"]=true,
["fransızca"]=true, ["arapça"]=true, ["farsça"]=true,
["rusça"]=true, ["italyanca"]=true, ["ispanyolca"]=true,
["yunanca"]=true, ["kürtçe"]=true, ["zazaca"]=true,
["türklük"]=true, ["türkçülük"]=true, ["türkçü"]=true,
["müslümanlık"]=true,["hristiyanlık"]=true,
["konyalı"]=true, ["bursalı"]=true, ["istanbullu"]=true,
["izmirli"]=true, ["avrupalı"]=true, ["asyalı"]=true,
["afrikalı"]=true, ["hollandalı"]=true, ["almanyalı"]=true,
["fransalı"]=true, ["rusyalı"]=true,
}
-- Büyük harfle başladığı hâlde kesme işareti gerektiren özel sözcükler.
local FORCE_APOSTROPHE_PROPER = {
["ali"]=true, ["veli"]=true, ["güler"]=true,
["şişli"]=true, ["foça"]=true, ["buca"]=true, ["ılıca"]=true,
}
local NATIONALITY_NO_APOSTROPHE = {
["afganistanlı"]=true,
["amerikalı"]=true,
["arnavut"]=true,
["arnavutluklu"]=true,
["avustralyalı"]=true,
["avusturyalı"]=true,
["azerbaycanlı"]=true,
["belçikalı"]=true,
["bosnalı"]=true,
["brezilyalı"]=true,
["bulgar"]=true,
["cezayirli"]=true,
["çinli"]=true,
["danimarkalı"]=true,
["endonezyalı"]=true,
["ermenistanlı"]=true,
["faslı"]=true,
["filipinli"]=true,
["filistinli"]=true,
["finlandiyalı"]=true,
["fransız"]=true,
["gürcistanlı"]=true,
["hırvat"]=true,
["hollandalı"]=true,
["ıraklı"]=true,
["iranlı"]=true,
["irlandalı"]=true,
["ispanyol"]=true,
["israilli"]=true,
["isveçli"]=true,
["isviçreli"]=true,
["italyan"]=true,
["japon"]=true,
["kanadalı"]=true,
["karadağlı"]=true,
["katarlı"]=true,
["kazakistanlı"]=true,
["kenyalı"]=true,
["koreli"]=true,
["kuzey koreli"]=true,
["güney koreli"]=true,
["kübalı"]=true,
["lübnanlı"]=true,
["macar"]=true,
["mısırlı"]=true,
["moğolistanlı"]=true,
["norveçli"]=true,
["pakistanlı"]=true,
["polonyalı"]=true,
["portekizli"]=true,
["rumanyalı"]=true,
["rusyalı"]=true,
["sırbistanlı"]=true,
["slovakyalı"]=true,
["slovenyalı"]=true,
["somalili"]=true,
["sudanlı"]=true,
["suriyeli"]=true,
["suudi arabistanlı"]=true,
["tacikistanlı"]=true,
["taylandlı"]=true,
["tunuslu"]=true,
["türkiyeli"]=true,
["ukraynalı"]=true,
["ürdünlü"]=true,
["vietnamlı"]=true,
["yemenli"]=true,
["yunanistanlı"]=true,
}
local function isDerivedProperNoApostrophe(lemma)
local n = norm(lemma or "")
local last = lastWordNorm(lemma)
if n == "" then return false end
if FORCE_APOSTROPHE_PROPER[n] or FORCE_APOSTROPHE_PROPER[last] then
return false
end
if IST_KESMESIZ_OZEL[n] or IST_KESMESIZ_OZEL[last] then
return true
end
if DERIVED_PROPER_NO_APOSTROPHE[n] or DERIVED_PROPER_NO_APOSTROPHE[last] then
return true
end
-- Türkçe, İngilizce, Hekimoğluca vb. (≥6 harf, -ca/-ce/-ça/-çe)
if u.len(last) >= 6 and (
u.find(last, "ca$") or u.find(last, "ce$") or
u.find(last, "ça$") or u.find(last, "çe$")
) then return true end
-- Türklük, Türkçülük vb.
if u.find(last, "lık$") or u.find(last, "lik$")
or u.find(last, "luk$") or u.find(last, "lük$") then return true end
return false
end
local function isAutoProperName(lemma)
if not startsWithUpper(lemma) then return false end
if isDerivedProperNoApostrophe(lemma) then return false end
return true
end
local function isPossessiveSurnameEnding(lemma)
local last = lastWordNorm(lemma)
if u.find(last, "oğlu$") then return true end
if u.find(last, "oğulları$") then return true end
return false
end
local function isLanguageCompoundNoApostrophe(lemma)
local n = norm(lemma or "")
if not u.find(n, " ") then return false end
local last = lastWordNorm(lemma)
-- Uygur Türkçesi, Osmanlı Türkçesi, Türkiye Türkçesi
-- Kırım Tatarcası, Kazak Türkçesi vb.
if u.find(last, "[cç][ae]s[ıiuü]$") then
return true
end
return false
end
-- ── Bileşik otomatik tespiti ──────────────────────────────────────────────────
-- Eski IST_BIL setmetatable() yaklaşımının yerini aldı.
-- Çok kelimeli, ı/i/u/ü ile biten ifadeler bileşik kabul edilir;
-- -ıcı/-ici/-ucu/-ücü gibi aletlik son eklerini ayırt eder.
local function otomatikYalinSonluMu(last_word)
last_word = u.lower(last_word or "")
return u.find(last_word, "[ıiuü]c[ıiuü]$") ~= nil
end
local function isAutoCompound(normed)
if not u.find(normed, " ") then return false end
local last_char = u.sub(normed, -1)
if last_char ~= "ı" and last_char ~= "i"
and last_char ~= "u" and last_char ~= "ü" then return false end
local last_word = u.match(normed, "%s(%S+)$")
if last_word then
if IST_YALIN_SON[last_word] or otomatikYalinSonluMu(last_word) then
return false
end
end
return true
end
-- ── Ünlü uyumu ────────────────────────────────────────────────────────────────
-- 2'li uyum (A/E)
local function harmA(stem, force_incelme)
local lv = lastVowel(stem) or "a"
if force_incelme then return "e" end
if lv == "e" or lv == "i" or lv == "ö" or lv == "ü" or lv == "î" then
return "e"
end
return "a"
end
-- 4'lü uyum (I)
-- Düzeltme [1]: force_incelme=true + û → "ü" (daha önce "u" dönüyordu).
local function harmI(stem, force_incelme)
local lv = lastVowel(stem) or "ı"
if force_incelme then
if lv == "a" or lv == "ı" or lv == "â" then return "i" end
if lv == "o" or lv == "u" or lv == "û" then return "ü" end
-- e, i, î, ö, ü zaten ince → normal akışa devam.
end
if lv == "a" or lv == "ı" then return "ı" end
if lv == "e" or lv == "i" or lv == "î" then return "i" end
if lv == "o" or lv == "u" then return "u" end
if lv == "â" then return "ı" end
if lv == "û" then return "u" end
return "ü"
end
-- t/d seçimi (sert ünsüz sonrası t)
local function chooseD(stem)
if HARD[lower(lastChar(stem))] then return "t" end
return "d"
end
-- ── Çoğul ─────────────────────────────────────────────────────────────────────
local function pluralSuffix(stem, force_incelme)
return "l" .. harmA(stem, force_incelme) .. "r"
end
-- oğul → oğullar (düzensiz çoğul tabanı)
local function pluralBase(stem)
if u.find(stem, "oğl$") then
return u.sub(stem, 1, -4) .. "oğul"
end
return stem
end
local function makePluralStem(stem, force_incelme)
local pbase = pluralBase(stem)
return pbase .. pluralSuffix(pbase, force_incelme)
end
-- ── Ünsüz dönüşümleri ─────────────────────────────────────────────────────────
-- Yumuşama: pçtk → bcdğ, yalnızca ünlüyle başlayan ek gelince.
-- Düzeltme [2]: ikizleşmiş tüm ünsüzler (pp/çç/tt/kk) artık yumuşamıyor.
-- Düzeltme [3]: -[ünlü]log$ deseni daha geniş -log sözcüklerini yakalar.
local function soften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
-- İkizleşmiş ünsüz: hiçbiri yumuşamaz.
if c == prev and (c == "p" or c == "ç" or c == "t" or c == "k") then
return stem
end
if c == "p" then return u.sub(stem, 1, -2) .. "b" end
if c == "ç" then return u.sub(stem, 1, -2) .. "c" end
if c == "t" then return u.sub(stem, 1, -2) .. "d" end
if c == "k" then
if prev == "n" then
return u.sub(stem, 1, -2) .. "g"
end
return u.sub(stem, 1, -2) .. "ğ"
end
if c == "g" then
local s = u.lower(stem or "")
-- katalog, diyalog, prolog, epilog, monolog, analog …
if u.find(s, "[aeıioöuü]log$") or G_YUMUSAMA[s] then
return u.sub(stem, 1, -2) .. "ğ"
end
end
return stem
end
-- Yumuşamayı geri al (bileşik tabanı temizlerken kullanılır).
local function unsoften(stem)
local c = lastChar(stem)
local prev = u.sub(stem, -2, -2)
if c == "b" then return u.sub(stem, 1, -2) .. "p" end
if c == "c" then return u.sub(stem, 1, -2) .. "ç" end
if c == "d" then return u.sub(stem, 1, -2) .. "t" end
if c == "ğ" then return u.sub(stem, 1, -2) .. "k" end
if c == "g" and prev == "n" then return u.sub(stem, 1, -2) .. "k" end
return stem
end
-- Ünlü düşmesi: kökün son ünlüsünü düşürür.
-- Düzeltme [10]: ters-çevirme döngüsü kaldırıldı; doğrudan indis taraması.
local function dropLastVowelOnce(stem)
local chars = {}
local len = u.len(stem)
for i = 1, len do chars[i] = u.sub(stem, i, i) end
for i = len, 1, -1 do
if V[lower(chars[i])] then
table.remove(chars, i)
break
end
end
return table.concat(chars)
end
-- İkizleşme: son ünsüzü çiftler.
local function geminateLastConsonant(stem)
return stem .. lastChar(stem)
end
-- ── İstisna sorgulama yardımcıları ───────────────────────────────────────────
local function isIncelme(lemma, it)
if it == "incelme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_INC[n] or IST_INC[last] or false
end
local function isSu(s)
local n = norm(s)
return n == "su"
or u.find(n, "[ %-\xe2\x80\x91]su$") ~= nil -- U+2011 non-breaking hyphen
or n == "akarsu"
or n == "özsu"
or n == "pissu"
end
-- Otomatik yumuşama kapatma kuralları
local function autoNoSoften(lemma)
if u.find(lemma, "ist$") then return true end
if u.find(lemma, "iyet$")
or u.find(lemma, "iyat$")
or u.find(lemma, "iyyet$") then return true end
if u.find(lemma, "[aeıioöuü]t$") then return true end
return false
end
-- Yumuşama beyaz listesi: autoNoSoften'ı geçersiz kılar.
local SOFTEN_WHITELIST = {
["kanat"]=true, ["kağıt"]=true, ["umut"]=true, ["öğüt"]=true,
["vücut"]=true, ["mabet"]=true, ["but"]=true,
["zebercet"]=true, ["haset"]=true,
}
local function isNoSoften(lemma, it)
if it == "yumuşama" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
if SOFTEN_WHITELIST[n] or SOFTEN_WHITELIST[last] then return false end
return IST_YUM[n] or IST_YUM[last]
or autoNoSoften(n) or autoNoSoften(last)
end
local function isDropVowel(lemma, it)
if it == "düşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_DUS[n] or IST_DUS[last] or false
end
local function isGeminate(lemma, it)
if it == "ikizleşme" then return true end
local n = norm(lemma)
local last = u.match(n, "%S+$") or n
return IST_IKI[n] or IST_IKI[last] or false
end
-- ── Ek bağlama ────────────────────────────────────────────────────────────────
-- Düzeltme [4]: is_proper bayrağı kaldırıldı.
-- Yumuşama yalnızca allow_soften üzerinden kontrol edilir.
local function attach(stem, suffix, opts)
opts = opts or {}
local base = stem
local first = u.sub(suffix, 1, 1) or ""
local isVowelInitial = (V[first] == true)
if isVowelInitial then
if opts.allow_soften then
base = soften(base)
end
if opts.buffer and endsWithVowel(base) then
base = base .. opts.buffer
end
end
return base .. suffix
end
-- ── Hâl ekleri ────────────────────────────────────────────────────────────────
local function caseForms(stem, force_incelme, opts)
opts = opts or {}
local out = {}
local buf_acc_dat = (opts.is_poss3 or opts.is_comp) and "n" or "y"
out["yalın"] = stem
-- belirtme: -(y/n)I
out["belirtme"] = attach(stem, harmI(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- yönelme: -(y/n)A
out["yönelme"] = attach(stem, harmA(stem, force_incelme),
{ buffer = buf_acc_dat, allow_soften = opts.allow_soften })
-- bulunma: -DA / ayrılma: -DAn
local base_da = (opts.is_poss3 or opts.is_comp) and (stem .. "n") or stem
local d = chooseD(base_da)
local da_suf = d .. harmA(base_da, force_incelme)
out["bulunma"] = base_da .. da_suf
out["ayrılma"] = base_da .. da_suf .. "n"
-- tamlayan: -(n)In
local genBuf = isSu(stem) and "y" or "n"
out["tamlayan"] = attach(stem, harmI(stem, force_incelme) .. "n",
{ buffer = genBuf, allow_soften = opts.allow_soften })
return out
end
-- ── İyelik ekleri ─────────────────────────────────────────────────────────────
-- Düzeltme [11]: 1ç/2ç dalları okunabilirlik için yeniden düzenlendi.
local function possStem(lemma, person, force_incelme, opts)
opts = opts or {}
local stem = lemma or ""
local harmony_stem = opts.harmony_stem or stem
local i = harmI(harmony_stem, force_incelme)
local endsV = endsWithVowel(stem)
-- su istisnası: suyu, suyum …
if isSu(lemma) and person ~= "3ç" then
stem = stem .. "y"
endsV = false
end
local ao = { allow_soften = opts.allow_soften }
if person == "1t" then
return attach(stem, endsV and "m" or (i .. "m"), ao)
elseif person == "2t" then
return attach(stem, endsV and "n" or (i .. "n"), ao)
elseif person == "3t" then
return attach(stem, i, { buffer = "s", allow_soften = opts.allow_soften })
elseif person == "1ç" then
-- ünlü-biten: -mIz | ünsüz-biten: -ImIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "m" or (i .. "m")) .. harmI(mid .. "m", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "2ç" then
-- ünlü-biten: -nIz | ünsüz-biten: -InIz
local mid = endsV and stem or (stem .. i)
local suff = (endsV and "n" or (i .. "n")) .. harmI(mid .. "n", force_incelme) .. "z"
return attach(stem, suff, ao)
elseif person == "3ç" then
-- Kök hâlinde çoğul eki zaten taşıyorsa ek tekrar eklenmez.
if u.find(stem or "", "l[ae]r$") then
return stem .. harmI(stem, force_incelme)
end
local ps = makePluralStem(stem, force_incelme)
return ps .. harmI(ps, force_incelme)
end
return stem
end
-- ── Bileşik taban temizliği ───────────────────────────────────────────────────
-- IST_DUS'tan "düşmüş biçimler → asıl kökler" haritası.
-- Modül yüklenirken bir kez hesaplanır.
local DROPPED_MAP = {}
local DROPPED_KEYS = {}
for k in pairs(IST_DUS) do
local d = dropLastVowelOnce(k)
if d and d ~= k then DROPPED_MAP[d] = k end
end
for d in pairs(DROPPED_MAP) do
DROPPED_KEYS[#DROPPED_KEYS + 1] = d
end
table.sort(DROPPED_KEYS, function(a, b) return u.len(a) > u.len(b) end)
local function restoreDroppedCompoundBase(base)
local nbase = norm(base)
for _, d in ipairs(DROPPED_KEYS) do
local dlen = u.len(d)
if u.sub(nbase, -dlen) == d then
local prefix = u.sub(base, 1, u.len(base) - dlen)
return prefix .. DROPPED_MAP[d], true
end
end
return base, false
end
local function getCompoundBase(lemma)
local base = lemma or ""
local nlemma = norm(base)
local last_word = u.match(nlemma, "%S+$") or nlemma
if KOK_SON_S_FORMLAR[last_word] then
if u.find(base, "[ıiuü]$") then base = u.sub(base, 1, -2) end
elseif u.find(base, "s[ıiuü]$") then
base = u.sub(base, 1, -3)
elseif u.find(base, "[ıiuü]$") then
base = u.sub(base, 1, -2)
end
local last_base = u.match(norm(base), "%S+$") or norm(base)
if not KOK_SON_YUMUSAK_G[last_base] then
base = unsoften(base)
end
-- su istisnası: çamaşır suyu → çamaşır su
if u.sub(base, -1) == "y" and isSu(u.sub(base, 1, -2)) then
base = u.sub(base, 1, -2)
end
return base
end
-- ── Ana çekim motoru ──────────────────────────────────────────────────────────
function p.form(lemma, spec)
spec = spec or {}
lemma = trim(lemma or "")
if lemma == "" then return "" end
local it = spec.it
local k = spec.k
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
-- Düzeltme [5]: isProper bayrağı; kesme işareti ve yumuşama buradan yönetilir.
local isProper = (k == "1")
local force_incelme = isIncelme(lemma, it)
local n_lemma = norm(lemma)
local isComp =
(it == "bileşik")
or IST_BIL[n_lemma]
or isAutoCompound(n_lemma)
or isPossessiveSurnameEnding(lemma)
or (u.find(n_lemma, "başı$") ~= nil)
-- isComp:
-- n bağlayıcısı gerekip gerekmediğini söyler.
--
-- useCompoundBase:
-- gövdenin gerçekten soyulup soyulmayacağını söyler.
--
-- Özel adlarda gövde soyulmaz:
-- Osmanlı Türkçesi → Osmanlı Türkçes yapılmaz.
-- Ama isComp yine true kalır:
-- Osmanlı Türkçesi + ni → Osmanlı Türkçesi'ni
local properCompoundSIForPoss =
isProper and isComp and spec.poss and (u.find(n_lemma, "s[ıiuü]$") ~= nil)
local useCompoundBase = isComp and (not isProper or properCompoundSIForPoss)
local compBase = useCompoundBase and getCompoundBase(lemma) or nil
if useCompoundBase and not compBase then compBase = lemma end
local compOriginBase, _compHadDrop = compBase, false
if useCompoundBase and compBase then
compOriginBase, _compHadDrop = restoreDroppedCompoundBase(compBase)
end
-- allow_soften: özel adlarda daima false (kesme işareti ile birlikte yumuşama olmaz).
-- Bileşiklerde yumuşama kararı asıl köke (compOriginBase) göre verilir.
local soften_base = compOriginBase or compBase or lemma
local allow_soften
if isProper then
allow_soften = false
else
allow_soften = not isNoSoften(soften_base, it)
end
local do_drop = isDropVowel(lemma, it)
local do_gem = isGeminate(lemma, it)
local stem_only = lemma
local isPlural = (spec.number == "pl")
local isCompoundPluralPoss = false
-- ── 1) Çoğul ──
if isPlural then
if useCompoundBase then
local pluralBaseForComp = compOriginBase or compBase
if spec.poss and spec.poss ~= "3ç" then
stem_only = makePluralStem(pluralBaseForComp, force_incelme)
isCompoundPluralPoss = true
else
local ps = makePluralStem(pluralBaseForComp, force_incelme)
stem_only = ps .. harmI(ps, force_incelme)
end
else
stem_only = stem_only .. pluralSuffix(stem_only, force_incelme)
end
else
-- ── 2) Ünlü düşmesi / ikizleşme (yalnızca tekil, ünlü-başlı ek varsa) ──
if not isComp then
local isFirstSuffixVowel = false
if spec.poss then
isFirstSuffixVowel = not endsWithVowel(stem_only)
if spec.poss == "3t" or spec.poss == "3ç" then
isFirstSuffixVowel = true
end
elseif spec.case == "belirtme"
or spec.case == "yönelme"
or spec.case == "tamlayan" then
isFirstSuffixVowel = true
end
if isFirstSuffixVowel then
if do_drop then stem_only = dropLastVowelOnce(stem_only) end
if do_gem then stem_only = geminateLastConsonant(stem_only) end
end
end
end
-- -- ── 3) İyelik ──
if spec.poss then
if useCompoundBase and not isCompoundPluralPoss then
stem_only = possStem(compBase, spec.poss, force_incelme, {
allow_soften = allow_soften,
harmony_stem = compOriginBase or compBase,
})
elseif isCompoundPluralPoss then
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = false,
})
else
stem_only = possStem(stem_only, spec.poss, force_incelme, {
allow_soften = allow_soften,
})
end
end
-- ── 4) Hâl ──
local is_poss3 = (spec.poss == "3t" or spec.poss == "3ç")
local needs_n = is_poss3
or (isComp and (not spec.poss or isPlural) and not isCompoundPluralPoss)
local cases = caseForms(stem_only, force_incelme, {
allow_soften = allow_soften,
is_poss3 = needs_n,
is_comp = needs_n,
})
local out = cases[spec.case or "yalın"] or stem_only
-- ── 5) Özel adlarda kesme işareti ──
-- Dil adı bileşikleri kesmesiz kalır:
-- Uygur Türkçesi → Uygur Türkçesini
-- Soyadları ve normal özel adlar kesmeli kalır:
-- Yıldızoğlu → Yıldızoğlu'nu
if isProper and not isPlural and not u.find(lemma, "'")
and not isLanguageCompoundNoApostrophe(lemma) then
local lemma_len = u.len(lemma)
if u.sub(out, 1, lemma_len) == lemma then
local suffix_part = u.sub(out, lemma_len + 1)
if suffix_part ~= "" then
return lemma .. "'" .. suffix_part
end
end
end
return out
end
-- ── Wiki tablosu üretimi ──────────────────────────────────────────────────────
function p.adTablo(frame)
local args = frame.args
local hasAny = false
for _ in pairs(args) do hasAny = true; break end
if not hasAny then
local parent = frame:getParent()
args = (parent and parent.args) or {}
end
local lemma = trim(args[1] or args["ad"] or mw.title.getCurrentTitle().text or "")
local it = args["istisna"]
local k = args["k"] or args["a"]
local derivedNoApostrophe = startsWithUpper(lemma) and isDerivedProperNoApostrophe(lemma)
if derivedNoApostrophe then
k = nil
elseif (k == nil or k == "") and isAutoProperName(lemma) then
k = "1"
end
local isProper = (k == "1")
local useProperTable = isProper or derivedNoApostrophe
local casesOrder = { "yalın", "belirtme", "yönelme", "bulunma", "ayrılma", "tamlayan" }
local function form(spec)
spec = spec or {}
spec.it = it
spec.k = k
return p.form(lemma, spec)
end
-- Düzeltme [9]: mw.title.new hata fırlatabilir; pcall ile koruma.
local linkCache = {}
local function link(s)
s = trim(tostring(s or ""))
if s == "" then return s end
local exists = linkCache[s]
if exists == nil then
local ok, title = pcall(mw.title.new, s, 0)
exists = ok and title and title.exists or false
linkCache[s] = exists
end
if exists then
return "[[" .. s .. "]]"
end
return "[[" .. s .. "|<span style=\"color:#202122;\">" .. mw.text.nowiki(s) .. "</span>]]"
end
local CASE_LABELS = {
["yalın"] = "[[yalın hâl|yalın]]",
["belirtme"] = "[[belirtme hâli|belirtme]]",
["yönelme"] = "[[yönelme hâli|yönelme]]",
["bulunma"] = "[[bulunma hâli|bulunma]]",
["ayrılma"] = "[[ayrılma hâli|ayrılma]]",
["tamlayan"] = "[[tamlayan hâli|tamlayan]]",
}
local function caseLabel(k2) return CASE_LABELS[k2] or k2 end
-- ── Görünüm stilleri ──
local cardStyle = 'class="mw-collapsible" style="max-width:48em; width:100%;'
.. ' margin:.45em 0; border:1px solid #c8ccd1; border-radius:.35em;'
.. ' overflow:hidden; background:#fff;"'
local titleStyle = 'class="mw-collapsible-toggle" style="float:none; display:block;'
.. ' padding:.38em .6em; background:#f6f8fa; border-bottom:1px solid #d8dee4;'
.. ' font-weight:700; text-align:center; font-size:102%;'
.. ' cursor:pointer; user-select:none;"'
local contentStyle = 'class="mw-collapsible-content" style="overflow-x:auto;"'
local tableStyle = 'style="width:100%; min-width:30em; margin:0;'
.. ' border-collapse:collapse; background:#fff; text-align:center; font-size:95%;"'
local headCellStyle = 'style="padding:.32em .5em; background:#f6f8fa;'
.. ' border-bottom:1px solid #d8dee4; font-weight:700; white-space:nowrap;"'
local rowHeadStyle = 'style="width:28%; padding:.32em .5em; background:#fbfbfc;'
.. ' border-top:1px solid #edf0f2; text-align:left; white-space:nowrap; font-weight:600;"'
local dataCellStyle = 'style="padding:.32em .5em; border-top:1px solid #edf0f2;'
.. ' border-left:1px solid #edf0f2; text-align:center;"'
local personHeadStyle = 'style="padding:.34em .5em; background:#f6f8fa;'
.. ' border-top:1px solid #d8dee4; border-bottom:1px solid #edf0f2;'
.. ' text-align:left; font-weight:700;"'
-- ── Satır oluşturucular ──
local function headerRow(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
.. "\n! " .. headCellStyle .. " | [[çoğul]]"
end
local function headerRowSingle(leftText)
return "\n|-"
.. "\n! " .. headCellStyle .. " | " .. (leftText or "")
.. "\n! " .. headCellStyle .. " | [[tekil]]"
end
local function row(caseKey, sgText, plText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
.. "\n| " .. dataCellStyle .. " | " .. plText
end
local function rowSingle(caseKey, sgText, boldSg)
local sgCell = boldSg and ("'''" .. sgText .. "'''") or sgText
return "\n|-"
.. "\n! " .. rowHeadStyle .. " | " .. caseLabel(caseKey)
.. "\n| " .. dataCellStyle .. " | " .. sgCell
end
local function personHeader(label)
return "\n|-"
.. "\n! colspan=\"3\" " .. personHeadStyle .. " | " .. label
end
local function personHeaderSingle(label)
return "\n|-"
.. "\n! colspan=\"2\" " .. personHeadStyle .. " | " .. label
end
local persons = {
{ key = "1t", left = "1. tekil ([[benim]])" },
{ key = "2t", left = "2. tekil ([[senin]])" },
{ key = "3t", left = "3. tekil ([[onun]])" },
{ key = "1ç", left = "1. çoğul ([[bizim]])" },
{ key = "2ç", left = "2. çoğul ([[sizin]])" },
{ key = "3ç", left = "3. çoğul ([[onların]])" },
}
local out = {}
-- ── Özel ad / özel addan türemiş çekim tablosu (yalnızca tekil) ──
if useProperTable then
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
out[#out+1] = rowSingle("yalın", lemma, true)
else
out[#out+1] = rowSingle(c, link(form({ number = "sg", case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- İyelik tablosu (yalnızca tekil sütun)
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRowSingle("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeaderSingle(person.left)
-- 3ç satırında tekil iyelik formu 3t ile aynıdır.
local possKey = (person.key == "3ç") and "3t" or person.key
for _, c in ipairs(casesOrder) do
out[#out+1] = rowSingle(c, link(form({ number = "sg", poss = possKey, case = c })), false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- ── Ana çekim tablosu (özel olmayan adlar) ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">" .. lemma .. " adının çekimi</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[hâl]]")
for _, c in ipairs(casesOrder) do
if c == "yalın" then
local pl = link(form({ number = "pl", case = "yalın" }))
out[#out+1] = row("yalın", lemma, pl, true)
else
local sg = link(form({ number = "sg", case = c }))
local pl = link(form({ number = "pl", case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
-- ── İyelik tablosu ──
out[#out+1] = "<div " .. cardStyle .. ">"
out[#out+1] = "<div " .. titleStyle .. ">[[iyelik eki|iyelik ekleriyle]]</div>"
out[#out+1] = "<div " .. contentStyle .. ">"
out[#out+1] = "\n{| " .. tableStyle
out[#out+1] = headerRow("[[kişi]]")
for _, person in ipairs(persons) do
out[#out+1] = personHeader(person.left)
for _, c in ipairs(casesOrder) do
if person.key == "3ç" then
-- Tekil sütun: "onun evi" = 3t+sg / Çoğul sütun: "onların evi" = 3ç+pl
local sg = link(form({ number = "sg", poss = "3t", case = c }))
local pl = link(form({ number = "pl", poss = "3ç", case = c }))
out[#out+1] = row(c, sg, pl, false)
else
local sg = link(form({ number = "sg", poss = person.key, case = c }))
local pl = link(form({ number = "pl", poss = person.key, case = c }))
out[#out+1] = row(c, sg, pl, false)
end
end
end
out[#out+1] = "\n|}"
out[#out+1] = "</div></div>"
return table.concat(out)
end
-- invoke giriş noktası
function p.ad(frame)
return p.adTablo(frame)
end
-- Düzeltme [7]: kullanılmayan i1-i4 parametreleri kaldırıldı.
-- İmza: p.ayarla(bas, istisna, sayi, hal, ak)
function p.ayarla(bas, istisna, sayi, hal, ak)
return p.form(bas, {
it = istisna,
k = ak,
number = (sayi == "çoğul" and "pl" or "sg"),
case = hal or "yalın",
})
end
-- [[Modül:çekim/şablonlar]] tarafından kullanılan ters-arama motoru.
function p.cekim_tr(args)
local ad = args[1]
local cekim = mw.title.getCurrentTitle()["text"]
local it = args["istisna"]
local k = args["k"] or args["a"]
if u.find(cekim, "'") then k = "1" end
local function virgul(tablo)
if tablo[1] then table.insert(tablo, ";") end
end
-- Düzeltme [8]: cekimler tablosu sadeleştirildi; p.ayarla'nın yeni imzasına uygun.
local cekimler = {
{ "yalın" },
{ "belirtme" },
{ "yönelme" },
{ "bulunma" },
{ "ayrılma" },
{ "tamlayan" },
}
-- Düzeltme [8]: iyelik tablosu sadeleştirildi.
local iyelik = {
{ "1t" }, { "2t" }, { "3t" },
{ "1ç" }, { "2ç" }, { "3ç" },
}
local function tumDurumlar(say, kisi, ozel)
say = tostring(say or "")
if say == "" then return end
for _, c in ipairs(cekimler) do
local hal = c[1]
if cekim == p.ayarla(say, it, "tekil", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
-- "evleri" gibi kökünde -ler/-lar taşıyan iyelik biçimleri çoğul sayılır.
if ozel and u.find(say, "l[ea]r") then
table.insert(args[3], "ç")
else
table.insert(args[3], "t")
end
end
if cekim == p.ayarla(say, it, "çoğul", hal, k) then
virgul(args[3])
if ozel then
table.insert(args[3], kisi)
if hal == "yalın" then table.insert(args[3], "iyelik") end
end
if hal ~= "yalın" then table.insert(args[3], hal) end
table.insert(args[3], "ç")
end
end
end
tumDurumlar(ad)
-- Not: Türkçe'de 3t+çoğul ve 3ç+tekil aynı formu üretir ("evleri" gibi).
-- Bu yapısal belirsizlik beklenen davranıştır; her iki etiket de kayıt altına alınır.
for _, s in ipairs(iyelik) do
local poss_code = s[1]
local tekil = p.form(ad, { it = it, k = k, number = "sg", poss = poss_code, case = "yalın" })
local cogul = p.form(ad, { it = it, k = k, number = "pl", poss = poss_code, case = "yalın" })
tumDurumlar(tekil, poss_code, true)
tumDurumlar(cogul, poss_code, true)
end
if not args[3][1] then table.insert(args[3], "belirtilmemiş") end
end
return p
bvve744un9bi4bmlimsmd85fh9elp08
Modül:tr-ad/istisnalar
828
441373
5658317
5657458
2026-05-15T17:54:06Z
Satirdan kahraman
37401
5658317
Scribunto
text/plain
local p = {}
local function Set(list)
local set = {}
for _, l in ipairs(list) do
-- normalize: küçük harf + â/î/û düzleştirme
l = mw.text.trim(l or "")
l = mw.ustring.lower(l)
l = mw.ustring.gsub(l, "â", "a")
l = mw.ustring.gsub(l, "î", "i")
l = mw.ustring.gsub(l, "û", "u")
set[l] = true
end
return set
end
-- ✅ ARTIK DEV LİSTE YOK:
-- -iyet / -iyat / -iyyet ve -et/-at/-ut/-üt grupları modülde kural ile kapsanıyor.
p.istisnaYumusama = Set {
-- kısa / yabancı / sert sonlu olup yumuşamaması gerekenler (çekirdek)
"bank",
"bark",
"çap",
"yarıçap",
"kart",
"kamp",
"kist",
"link",
"lunapark",
"market",
"internet",
"post it",
"eskort",
"grosmarket",
"gelgit",
"boykot",
"suikast",
-- çok kısa / tek heceli örnekler (ihtiyaca göre azalt/çoğalt)
"at",
"alt",
"et",
"it",
"ip",
"ok",
"çek",
"çöp",
"bok",
"koç",
"piç",
"aşk",
"hukuk",
"ahlak",
"millet",
"devlet",
"sanat",
"hayat",
"evlat",
"merak",
"evrak",
"ittifak",
"iktisat",
"bulut",
"anıt",
"kanıt",
"ölçüt",
"taşıt",
"yanıt",
"anket",
"paket",
"sepet",
"bisiklet", "sert", "tıp", "sik", "çük",
-- p ile bitenler
"sap", "top", "küp", "hap", "tüp", "kulp", "sarp", "tip", "jip", "şap",
-- ç ile bitenler
"saç", "suç", "maç", "üç", "iç", "göç", "haç", "kıç",
-- k ile bitenler
"ek", "kök", "yük", "kürk", "çark", "park", "tank", "blok", "stok", "mülk", "halk",
"şevk", "sevk", "meşk", "köşk", "mercanköşk", "ak", "ilk", "tek", "tok", "sirk", "disk", "fark", "iştiyak", "mask",
-- t ile bitenler
"ot", "süt", "bit", "çit", "küt", "zıt", "lort", "mart", "şart",
"sırt", "sert", "büst", "dost", "post", "tost", "test", "üst", "ast",
"salt", "kült", "semt", "kent", "mont", "taht", "baht", "abdest",
"vücut", "şehit", "senet", "taahhüt", "hasat", "icat", "ahit", "iktisat", "mesnet",
"kart", "rant", "mabet", "payitaht", "tişört", "best", "but", "jant", "doçent", "nühüft"
}
p.istisnaIncelme = Set {
"aciz", "acz", "ahit", "akit", "alkol", "astral", "biantal", "dakika", "darp", "eflak", "emlak", "fevk", "global", "gol", "had", "hakikat", "hal", "hâl", "harf", "hayal", "hayâl", "helak",
"ideal", "idrak", "imsak", "istiklal", "istiklâl", "istimlak", "iştirak", "kabul", "kalp", "katil", "kavim",
"kemal", "kemâl", "kontrol", "koramiral", "liyakat", "lokal", "makbul", "merkat", "meşgul", "metal", "moral", "nakit", "nihal", "normal", "oval",
"peştamal", "portal", "refik", "rikkat", "rol", "saat", "sadakat", "santral", "seyahat", "serhat", "sıhhat", "sol", "sukutuhayal", "mahal",
"şefkat", "talakat", "talâkat", "terminal", "usul", "vakit", "vüsat", "yalın hâl", "kıtal", "kabil", "kabir", "bahis",
}
p.istisnaDusme = Set {
"aciz", "ağız", "ahit", "akit", "akıl", "alın", "asıl", "bahtiyar", "batın", "beyin", "boyun", "burun", "cehil", "cisim", "dahil", "devir",
"emir", "fetih", "fikir", "geniz", "göğüs", "gönül", "hasım", "hapis", "hüküm", "ilim", "isim", "karın", "kasıt", "kavim",
"kayıt", "kayıp", "keyif", "küfür", "metin", "meyil", "mühür", "nakit", "nakış", "nehir", "nezir", "nesil", "nutuk", "oğul", "omuz", "resim", "rızık",
"sabır", "satıh", "seyir", "sihir", "şehir", "şekil", "şükür", "temsilî resim", "ufuk", "uzuv", "vakit", "vasıf",
"vezin", "zehir", "zihin", "zikir", "zulüm", "kabir", "bahis", "kesir",
}
p.istisnaBilesik = Set {
"akşamsefası", "aslanağzı", "aslansütü", "atasözü", "ayçiçeği", "başsağlığı", "başörtüsü","başucu", "burası", "buzdolabı", "camevi",
"cumartesi", "denizaslanı", "denizgülü", "denizşakayığı", "dereotu", "dilberdudağı", "elebaşı", "fildişi", "gecesefası", "gelinkuşağı", "gökkuşağı", "gözbebeği",
"gözyaşı", "havaalanı", "havalimanı", "halkevi", "hanımeli", "içgüveysi", "işgücü", "kafatası", "kızevi", "kitabevi", "kuşburnu", "köşebaşı", "oymakbaşı",
"peygamberdevesi", "semizotu", "sepettopu", "sınır boyu", "soyağacı", "susamuru", "tavukgötü", "yavruağzı", "randevuevi", "cezaevi", "kadınbudu", "kazayağı", "zeytinyağı"
}
p.istisnaIkizlesme = Set {
"af", "behat", "emrihak", "fek", "had", "hak", "hal", "hat", "haz", "his", "hüsnühat", "met", "rab", "ret", "sır", "şek", "şer", "şet", "tıp", "zam", "zan", "mahal",
}
p.istisnaYalinSonlu = Set {
-- Sonu ı, i, u, ü ile bittiği halde yalın (kök) durumunda olan ve
-- sıfat/isim tamlamalarında ikinci kelime olduğunda "bileşik" yapmayan kelimeler
"acı", "açı", "akü", "anadolu", "anı", "arı", "atkı", "ayı", "ayakkabı",
"bacı", "batı", "bayi", "bekçi", "bilgi", "bitki", "boru", "büyü",
"cadı", "cami", "çalı", "çatı", "çeki", "çeri", "çıktı", "çini", "çivi", "çizgi",
"dahi", "dayı", "deli", "deri", "dizi", "doğu", "doku", "dolu", "dudu", "duygu", "dürtü",
"ebedi", "edebi", "efendi", "eksi", "elti", "eski", "evli",
"fani", "fıçı", "fırıncı", "fobi",
"gazi", "gemi", "gezi", "girdi", "giysi", "görgü", "güdü",
"hacı", "halı", "hami", "hani", "huni", "huri",
"içeri", "ileri", "inci", "iyi",
"kadı", "kapı", "karşı", "kedi", "kişi", "kivi", "koku", "komşu", "konu", "korku", "koru", "köprü", "kötü", "kutu", "kuyu", "kuzu", "kürsü", "kesir",
"mavi", "mazi", "mermi", "milli", "müftü",
"ordu", "öcü", "ölü", "ölçü", "öncü", "örtü", "övgü", "öykü",
"pazu", "peri", "pisi",
"sarı", "sayı", "seri", "sergi", "sevgi", "sezi", "sıhhi", "sıvı", "silgi", "soru", "su", "sürü", "şarkı", "söndürücü",
"taksi", "tanı", "tartı", "tatlı", "tepki", "terzi", "testi", "tortu", "tutku", "türkü", "Türkçe",
"uğultu", "ulu", "utku", "uyku", "üzüntü", "ütü",
"vadi", "vali", "vasi", "veli", "veri", "yemişçi", "sporcu",
"yalı", "yatılı", "yangın söndürücü", "yapı", "yarı", "yavru", "yazı", "yeni", "yetki", "yolcu", "yemiş", "şeftali",
"zeki",
}
return p
8psreo08d3yl2dxuc7w33q1rcsyh67r
5658332
5658317
2026-05-15T19:42:07Z
Satirdan kahraman
37401
5658332
Scribunto
text/plain
local p = {}
local function Set(list)
local set = {}
for _, l in ipairs(list) do
-- normalize: küçük harf + â/î/û düzleştirme
l = mw.text.trim(l or "")
l = mw.ustring.lower(l)
l = mw.ustring.gsub(l, "â", "a")
l = mw.ustring.gsub(l, "î", "i")
l = mw.ustring.gsub(l, "û", "u")
set[l] = true
end
return set
end
-- ✅ ARTIK DEV LİSTE YOK:
-- -iyet / -iyat / -iyyet ve -et/-at/-ut/-üt grupları modülde kural ile kapsanıyor.
p.istisnaYumusama = Set {
-- kısa / yabancı / sert sonlu olup yumuşamaması gerekenler (çekirdek)
"bank",
"bark",
"çap",
"yarıçap",
"kart",
"kamp",
"kist",
"link",
"lunapark",
"market",
"internet",
"post it",
"eskort",
"grosmarket",
"gelgit",
"boykot",
"suikast",
-- çok kısa / tek heceli örnekler (ihtiyaca göre azalt/çoğalt)
"at",
"alt",
"et",
"it",
"ip",
"ok",
"çek",
"çöp",
"bok",
"koç",
"piç",
"aşk",
"hukuk",
"ahlak",
"millet",
"devlet",
"sanat",
"hayat",
"evlat",
"merak",
"evrak",
"ittifak",
"iktisat",
"bulut",
"anıt",
"kanıt",
"ölçüt",
"taşıt",
"yanıt",
"anket",
"paket",
"sepet",
"bisiklet", "sert", "tıp", "sik", "çük",
-- p ile bitenler
"sap", "top", "küp", "hap", "tüp", "kulp", "sarp", "tip", "jip", "şap",
-- ç ile bitenler
"saç", "suç", "maç", "üç", "iç", "göç", "haç", "kıç",
-- k ile bitenler
"ek", "kök", "yük", "kürk", "çark", "park", "tank", "blok", "stok", "mülk", "halk",
"şevk", "sevk", "meşk", "köşk", "mercanköşk", "ak", "ilk", "tek", "tok", "sirk", "disk", "fark", "iştiyak", "mask",
-- t ile bitenler
"ot", "süt", "bit", "çit", "küt", "zıt", "lort", "mart", "şart",
"sırt", "sert", "büst", "dost", "post", "tost", "test", "üst", "ast",
"salt", "kült", "semt", "kent", "mont", "taht", "baht", "abdest",
"vücut", "şehit", "senet", "taahhüt", "hasat", "icat", "ahit", "iktisat", "mesnet",
"kart", "rant", "mabet", "payitaht", "tişört", "best", "but", "jant", "doçent", "nühüft"
}
p.istisnaIncelme = Set {
"aciz", "acz", "ahit", "akit", "alkol", "astral", "biantal", "dakika", "darp", "eflak", "emlak", "fevk", "global", "gol", "had", "hakikat", "hal", "hâl", "harf", "hayal", "hayâl", "helak",
"ideal", "idrak", "imsak", "istiklal", "istiklâl", "istimlak", "iştirak", "kabul", "kalp", "katil", "kavim",
"kemal", "kemâl", "kontrol", "koramiral", "liyakat", "lokal", "makbul", "merkat", "meşgul", "metal", "moral", "nakit", "nihal", "normal", "oval",
"peştamal", "portal", "refik", "rikkat", "rol", "saat", "sadakat", "santral", "seyahat", "serhat", "sıhhat", "sol", "sukutuhayal", "mahal",
"şefkat", "talakat", "talâkat", "terminal", "usul", "vakit", "vüsat", "yalın hâl", "kıtal", "kabil", "kabir", "bahis",
}
p.istisnaDusme = Set {
"aciz", "ağız", "ahit", "akit", "akıl", "alın", "asıl", "bahtiyar", "batın", "beyin", "boyun", "burun", "cehil", "cisim", "dahil", "devir",
"emir", "fetih", "fikir", "geniz", "göğüs", "gönül", "hasım", "hapis", "hüküm", "ilim", "isim", "karın", "kasıt", "kavim",
"kayıt", "kayıp", "keyif", "küfür", "metin", "meyil", "mühür", "nakit", "nakış", "nehir", "nezir", "nesil", "nutuk", "oğul", "omuz", "resim", "rızık",
"sabır", "satıh", "seyir", "sihir", "şehir", "şekil", "şükür", "temsilî resim", "ufuk", "uzuv", "vakit", "vasıf",
"vezin", "zehir", "zihin", "zikir", "zulüm", "kabir", "bahis", "kesir",
}
p.istisnaBilesik = Set {
"akşamsefası", "aslanağzı", "aslansütü", "atasözü", "ayçiçeği", "başsağlığı", "başörtüsü","başucu", "burası", "buzdolabı", "camevi",
"cumartesi", "denizaslanı", "denizgülü", "denizşakayığı", "dereotu", "dilberdudağı", "elebaşı", "fildişi", "gecesefası", "gelinkuşağı", "gökkuşağı", "gözbebeği",
"gözyaşı", "havaalanı", "havalimanı", "halkevi", "hanımeli", "içgüveysi", "işgücü", "kafatası", "kızevi", "kitabevi", "kuşburnu", "köşebaşı", "oymakbaşı",
"peygamberdevesi", "semizotu", "sepettopu", "sınır boyu", "soyağacı", "susamuru", "tavukgötü", "yavruağzı", "randevuevi", "cezaevi", "kadınbudu", "kazayağı", "zeytinyağı"
}
p.istisnaIkizlesme = Set {
"af", "behat", "emrihak", "fek", "had", "hak", "hal", "hat", "haz", "his", "hüsnühat", "met", "rab", "ret", "sır", "şek", "şer", "şet", "tıp", "zam", "zan", "mahal",
}
p.istisnaYalinSonlu = Set {
-- Sonu ı, i, u, ü ile bittiği halde yalın (kök) durumunda olan ve
-- sıfat/isim tamlamalarında ikinci kelime olduğunda "bileşik" yapmayan kelimeler
"acı", "açı", "akü", "anadolu", "anı", "arı", "atkı", "ayı", "ayakkabı",
"bacı", "batı", "bayi", "bekçi", "bilgi", "bitki", "boru", "büyü",
"cadı", "cami", "çalı", "çatı", "çeki", "çeri", "çıktı", "çini", "çivi", "çizgi",
"dahi", "dayı", "deli", "deri", "dizi", "doğu", "doku", "dolu", "dudu", "duygu", "dürtü",
"ebedi", "edebi", "efendi", "eksi", "elti", "eski", "evli",
"fani", "fıçı", "fırıncı", "fobi",
"gazi", "gemi", "gezi", "girdi", "giysi", "görgü", "güdü",
"hacı", "halı", "hami", "hani", "huni", "huri",
"içeri", "ileri", "inci", "iyi",
"kadı", "kapı", "karşı", "kedi", "kişi", "kivi", "koku", "komşu", "konu", "korku", "koru", "köprü", "kötü", "kutu", "kuyu", "kuzu", "kürsü", "kesir",
"mavi", "mazi", "mermi", "milli", "müftü",
"ordu", "öcü", "ölü", "ölçü", "öncü", "örtü", "övgü", "öykü",
"pazu", "peri", "pisi",
"sarı", "sayı", "seri", "sergi", "sevgi", "sezi", "sıhhi", "sıvı", "silgi", "soru", "su", "sürü", "şarkı", "söndürücü",
"taksi", "tanı", "tartı", "tatlı", "tepki", "terzi", "testi", "tortu", "tutku", "türkü", "Türkçe",
"uğultu", "ulu", "utku", "uyku", "üzüntü", "ütü",
"vadi", "vali", "vasi", "veli", "veri", "yemişçi", "sporcu",
"yalı", "yatılı", "yangın söndürücü", "yapı", "yarı", "yavru", "yazı", "yeni", "yetki", "yolcu", "yemiş", "şeftali",
"zeki",
}
p.istisnaKesmesizOzelAd = Set {
-- ── Genel bölge / kıta adları ─────────────────────────────────────────────
"avrupalı", "asyalı", "afrikalı", "amerikalı",
"kuzey amerikalı", "güney amerikalı", "latin amerikalı",
"ortadoğulu", "balkanlı", "iskandinavyalı",
"akdenizli", "karadenizli", "kafkasyalı", "orta asyalı",
-- ── Türk / Türkî / yakın halk adları ─────────────────────────────────────
"türk", "türkiyeli", "osmanlı", "anadolulu", "rumelili",
"azerbaycanlı", "azeri",
"kazak", "kazakistanlı",
"kırgız", "kırgızistanlı",
"özbek", "özbekistanlı",
"türkmen", "türkmenistanlı",
"tacik", "tacikistanlı",
"uygur", "tatar", "kırım tatarı",
"başkurt", "çuvaş", "yakut", "saha", "altaylı",
"kıbrıslı", "kıbrıs türkü", "kıbrıs rumu",
-- ── Türkiye’deki yaygın halk / etnik adları ──────────────────────────────
"kürt", "zaza", "laz", "çerkes", "abhaz", "gürcü",
"arap", "rum", "ermeni", "süryani", "pomak",
"boşnak", "arnavut", "yörük", "roman", "muhacir",
-- ── Avrupa milliyetleri / ülke-yurttaşlık adları ─────────────────────────
"alman", "almanyalı",
"avusturyalı",
"belçikalı",
"hollandalı",
"fransız", "fransalı",
"ingiliz", "britanyalı", "birleşik krallıklı",
"iskoç", "galli", "irlandalı", "kuzey irlandalı",
"ispanyol", "ispanyalı",
"portekizli",
"italyan", "italyalı",
"isviçreli",
"lihtenştaynlı",
"lüksemburglu",
"monakolu",
"andorralı",
"san marinolu",
"vatikanlı",
"maltalı",
"izlandalı",
"norveçli",
"isveçli",
"fin", "finlandiyalı",
"danimarkalı",
"estonyalı",
"letonyalı",
"litvanyalı",
"polonyalı",
"çek", "çekyalı",
"slovak", "slovakyalı",
"macar", "macaristanlı",
"sloven", "slovenyalı",
"hırvat", "hırvatistanlı",
"bosnalı", "bosna hersekli", "bosna-hersekli",
"sırp", "sırbistanlı",
"karadağlı",
"kosovalı",
"arnavutluklu",
"makedon", "kuzey makedonyalı",
"yunan", "yunanistanlı",
"bulgar", "bulgaristanlı",
"rumen", "rumanyalı",
"moldovalı", "moldovyalı",
"ukraynalı",
"rus", "rusyalı",
"belaruslu", "belarusyalı",
"beyaz rus",
-- ── Kafkasya / Orta Doğu ─────────────────────────────────────────────────
"gürcistanlı",
"ermenistanlı",
"iranlı", "fars",
"ıraklı",
"suriyeli",
"lübnanlı",
"ürdünlü",
"filistinli",
"israilli",
"yahudi",
"suudi", "suudi arabistanlı",
"yemenli",
"ummanlı",
"birleşik arap emirlikli", "emirlikli",
"katarlı",
"bahreynli",
"kuveytli",
-- ── Güney / Orta / Doğu Asya ─────────────────────────────────────────────
"afgan", "afganistanlı",
"pakistanlı",
"hint", "hindistanlı",
"bangladeşli",
"nepalli",
"butanlı",
"sri lankalı",
"maldivli",
"çinli",
"moğol", "moğolistanlı",
"japon", "japonyalı",
"koreli", "güney koreli", "kuzey koreli",
"tayvanlı",
"hong konglu",
"makao", "makaolu",
"myanmarlı", "burmalı",
"taylandlı",
"laoslu",
"kamboçyalı",
"vietnamlı",
"malezyalı",
"singapurlu",
"endonezyalı",
"filipinli",
"bruneyli",
"doğu timorlu",
-- ── Afrika ────────────────────────────────────────────────────────────────
"mısırlı",
"libyalı",
"tunuslu",
"cezayirli",
"faslı",
"moritanyalı", "morityanyalı",
"sudanlı",
"güney sudanlı",
"eritreli",
"cibutili",
"somalili",
"etiyopyalı",
"kenyalı",
"ugandalı",
"tanzanyalı",
"ruandalı",
"burundili",
"kongolu",
"kongo cumhuriyetli",
"demokratik kongolu",
"orta afrikalı",
"çadlı",
"kamerunlu",
"gabonlu",
"ekvator gineli",
"sao tomeli", "são tomeli",
"angolalı",
"zambiyalı",
"zimbabveli",
"malavili",
"mozambikli",
"madagaskarlı",
"komorlu",
"seyşelli",
"mauritiuslu",
"güney afrikalı",
"namibyalı",
"botsvanalı",
"lesotholu",
"esvatinili", "svazili",
"nijeryalı",
"nijerli",
"beninli",
"togolu",
"ganalı",
"fildişi sahilli",
"liberyalı",
"sierra leoneli",
"gineli",
"gine-bissaulu", "gine bissaulu",
"senegalli",
"gambiyalı",
"malili",
"burkina fasolu",
"yeşil burunlu", "kap verdeli",
-- ── Kuzey / Orta Amerika ve Karayipler ───────────────────────────────────
"kanadalı",
"amerikan", "amerikalı", "abdli",
"meksikalı",
"belizeli",
"guatemalalı",
"honduraslı",
"elsalvadorlu", "el salvadorlu",
"nikaragualı",
"kosta rikalı",
"panamalı",
"kübalı",
"haitili",
"dominikli", "dominik cumhuriyetli",
"jamaikalı",
"bahamalı",
"barbadoslu",
"trinidad ve tobagolu",
"antigua ve barbudalı",
"saint kits ve nevisli",
"saint lucialı",
"saint vincent ve grenadinlerli",
"grenadalı",
-- ── Güney Amerika ────────────────────────────────────────────────────────
"arjantinli",
"bolivyalı",
"brezilyalı",
"şilili",
"kolombiyalı",
"ekvadorlu",
"guyanalı",
"paraguaylı",
"perulu",
"surinamlı",
"uruguaylı",
"venezuelalı",
-- ── Okyanusya ────────────────────────────────────────────────────────────
"avustralyalı",
"yeni zelandalı",
"papua yeni gineli",
"fijili",
"samoalı",
"tongalı",
"vanuatulu",
"solomon adalı",
"mikronezyalı",
"marşallı", "marshall adalı",
"palaualı",
"naurulu",
"kiribatili",
"tuvalulu",
-- ── Türkiye illeri: 81 ilin tamamı ───────────────────────────────────────
"adanalı",
"adıyamanlı",
"afyonkarahisarlı", "afyonlu",
"ağrılı",
"amasyalı",
"ankaralı",
"antalyalı",
"artvinli",
"aydınlı",
"balıkesirli",
"bilecikli",
"bingöllü",
"bitlisli",
"bolulu",
"burdurlu",
"bursalı",
"çanakkaleli",
"çankırılı",
"çorumlu",
"denizlili",
"diyarbakırlı",
"edirneli",
"elazığlı",
"erzincanlı",
"erzurumlu",
"eskişehirli",
"gaziantepli", "antepli",
"giresunlu",
"gümüşhaneli",
"hakkârili", "hakkarili",
"hataylı",
"ıspartalı",
"mersinli",
"istanbullu",
"izmirli",
"karslı",
"kastamonulu",
"kayserili",
"kırklarelili",
"kırşehirli",
"kocaelili", "izmitli",
"konyalı",
"kütahyalı",
"malatyalı",
"manisalı",
"kahramanmaraşlı", "maraşlı",
"mardinli",
"muğlalı",
"muşlu",
"nevşehirli",
"niğdeli",
"ordulu",
"rizeli",
"sakaryalı", "adapazarlı",
"samsunlu",
"siirtli",
"sinoplu",
"sivaslı",
"tekirdağlı",
"tokatlı",
"trabzonlu",
"tuncelili",
"şanlıurfalı", "urfalı",
"uşaklı",
"vanlı",
"yozgatlı",
"zonguldaklı",
"aksaraylı",
"bayburtlu",
"karamanlı",
"kırıkkaleli",
"batmanlı",
"şırnaklı",
"bartınlı",
"ardahanlı",
"ığdırlı",
"yalovalı",
"karabüklü",
"kilisli",
"osmaniyeli",
"düzceli",
-- ── Türkiye’den yaygın ilçe / yerli adları ───────────────────────────────
"kadıköylü",
"üsküdarlı",
"beşiktaşlı",
"fatihli",
"beyoğlulu",
"bakırköylü",
"sarıyerli",
"kartallı",
"pendikli",
"maltepeli",
"şileli",
"silivrili",
"çatalcalı",
"gebzeli",
"daricalı",
"çayırovalı",
"bodrumlu",
"marmarisli",
"fethiyeli",
"kuşadalı",
"çeşmeli",
"alanyalı",
"manavgatlı",
"kemerli",
"kaşlı",
"didimli",
"bergamalı",
"tireli",
"ödemişli",
"nazillili",
"tarsuslu",
"silifkeli",
"iskenderunlu",
"dörtyollu",
"bafralı",
"çarşambalı",
"ünyeli",
"fatsalı",
"akçaabatlı",
"oflu",
"sürmeneli",
"ereğlili",
"alaplılı",
"safranbolulu",
-- ── Yaygın dünya şehirli adları ──────────────────────────────────────────
"parisli",
"londralı",
"berlinli",
"romalı",
"milanolu",
"venedikli",
"floransalı",
"napolili",
"madritli",
"barcelonalı",
"lizbonlu",
"portolu",
"amsterdamlı",
"rotterdamlı",
"brükselli",
"zürihli",
"cenevreli",
"viyanalı",
"praglı",
"varşovalı",
"krakovlu",
"budapeşteli",
"belgradlı",
"saraybosnalı",
"zagrebli",
"atinalı",
"selanikli",
"sofyalı",
"bükreşli",
"kievli", "kyivli",
"moskovalı",
"petersburglu",
"bakülü",
"tiflisli",
"erivanlı",
"tehranlı",
"bağdatlı",
"şamlı",
"beyrutlu",
"kudüslü",
"tel avivli",
"ammanlı",
"riyadlı",
"ciddeli",
"dohalı",
"dubaili",
"abu dabili",
"kahireli",
"iskenderiyeli",
}
return p
8kuwejr96s5isdybi3oerwiop6zh41y
5658335
5658332
2026-05-15T19:53:28Z
Satirdan kahraman
37401
5658335
Scribunto
text/plain
local p = {}
local function Set(list)
local set = {}
for _, l in ipairs(list) do
-- normalize: küçük harf + â/î/û düzleştirme
l = mw.text.trim(l or "")
l = mw.ustring.lower(l)
l = mw.ustring.gsub(l, "â", "a")
l = mw.ustring.gsub(l, "î", "i")
l = mw.ustring.gsub(l, "û", "u")
set[l] = true
end
return set
end
-- ✅ ARTIK DEV LİSTE YOK:
-- -iyet / -iyat / -iyyet ve -et/-at/-ut/-üt grupları modülde kural ile kapsanıyor.
p.istisnaYumusama = Set {
-- kısa / yabancı / sert sonlu olup yumuşamaması gerekenler (çekirdek)
"bank",
"bark",
"çap",
"yarıçap",
"kart",
"kamp",
"kist",
"link",
"lunapark",
"market",
"internet",
"post it",
"eskort",
"grosmarket",
"gelgit",
"boykot",
"suikast",
-- çok kısa / tek heceli örnekler (ihtiyaca göre azalt/çoğalt)
"at",
"alt",
"et",
"it",
"ip",
"ok",
"çek",
"çöp",
"bok",
"koç",
"piç",
"aşk",
"hukuk",
"ahlak",
"millet",
"devlet",
"sanat",
"hayat",
"evlat",
"merak",
"evrak",
"ittifak",
"iktisat",
"bulut",
"anıt",
"kanıt",
"ölçüt",
"taşıt",
"yanıt",
"anket",
"paket",
"sepet",
"bisiklet", "sert", "tıp", "sik", "çük",
-- p ile bitenler
"sap", "top", "küp", "hap", "tüp", "kulp", "sarp", "tip", "jip", "şap",
-- ç ile bitenler
"saç", "suç", "maç", "üç", "iç", "göç", "haç", "kıç",
-- k ile bitenler
"ek", "kök", "yük", "kürk", "çark", "park", "tank", "blok", "stok", "mülk", "halk",
"şevk", "sevk", "meşk", "köşk", "mercanköşk", "ak", "ilk", "tek", "tok", "sirk", "disk", "fark", "iştiyak", "mask",
-- t ile bitenler
"ot", "süt", "bit", "çit", "küt", "zıt", "lort", "mart", "şart",
"sırt", "sert", "büst", "dost", "post", "tost", "test", "üst", "ast",
"salt", "kült", "semt", "kent", "mont", "taht", "baht", "abdest",
"vücut", "şehit", "senet", "taahhüt", "hasat", "icat", "ahit", "iktisat", "mesnet",
"kart", "rant", "mabet", "payitaht", "tişört", "best", "but", "jant", "doçent", "nühüft"
}
p.istisnaIncelme = Set {
"aciz", "acz", "ahit", "akit", "alkol", "astral", "biantal", "dakika", "darp", "eflak", "emlak", "fevk", "global", "gol", "had", "hakikat", "hal", "hâl", "harf", "hayal", "hayâl", "helak",
"ideal", "idrak", "imsak", "istiklal", "istiklâl", "istimlak", "iştirak", "kabul", "kalp", "katil", "kavim",
"kemal", "kemâl", "kontrol", "koramiral", "liyakat", "lokal", "makbul", "merkat", "meşgul", "metal", "moral", "nakit", "nihal", "normal", "oval",
"peştamal", "portal", "refik", "rikkat", "rol", "saat", "sadakat", "santral", "seyahat", "serhat", "sıhhat", "sol", "sukutuhayal", "mahal",
"şefkat", "talakat", "talâkat", "terminal", "usul", "vakit", "vüsat", "yalın hâl", "kıtal", "kabil", "kabir", "bahis",
}
p.istisnaDusme = Set {
"aciz", "ağız", "ahit", "akit", "akıl", "alın", "asıl", "bahtiyar", "batın", "beyin", "boyun", "burun", "cehil", "cisim", "dahil", "devir",
"emir", "fetih", "fikir", "geniz", "göğüs", "gönül", "hasım", "hapis", "hüküm", "ilim", "isim", "karın", "kasıt", "kavim",
"kayıt", "kayıp", "keyif", "küfür", "metin", "meyil", "mühür", "nakit", "nakış", "nehir", "nezir", "nesil", "nutuk", "oğul", "omuz", "resim", "rızık",
"sabır", "satıh", "seyir", "sihir", "şehir", "şekil", "şükür", "temsilî resim", "ufuk", "uzuv", "vakit", "vasıf",
"vezin", "zehir", "zihin", "zikir", "zulüm", "kabir", "bahis", "kesir",
}
p.istisnaBilesik = Set {
"akşamsefası", "aslanağzı", "aslansütü", "atasözü", "ayçiçeği", "başsağlığı", "başörtüsü","başucu", "burası", "buzdolabı", "camevi",
"cumartesi", "denizaslanı", "denizgülü", "denizşakayığı", "dereotu", "dilberdudağı", "elebaşı", "fildişi", "gecesefası", "gelinkuşağı", "gökkuşağı", "gözbebeği",
"gözyaşı", "havaalanı", "havalimanı", "halkevi", "hanımeli", "içgüveysi", "işgücü", "kafatası", "kızevi", "kitabevi", "kuşburnu", "köşebaşı", "oymakbaşı",
"peygamberdevesi", "semizotu", "sepettopu", "sınır boyu", "soyağacı", "susamuru", "tavukgötü", "yavruağzı", "randevuevi", "cezaevi", "kadınbudu", "kazayağı", "zeytinyağı"
}
p.istisnaIkizlesme = Set {
"af", "behat", "emrihak", "fek", "had", "hak", "hal", "hat", "haz", "his", "hüsnühat", "met", "rab", "ret", "sır", "şek", "şer", "şet", "tıp", "zam", "zan", "mahal",
}
p.istisnaYalinSonlu = Set {
-- Sonu ı, i, u, ü ile bittiği halde yalın (kök) durumunda olan ve
-- sıfat/isim tamlamalarında ikinci kelime olduğunda "bileşik" yapmayan kelimeler
"acı", "açı", "akü", "anadolu", "anı", "arı", "atkı", "ayı", "ayakkabı",
"bacı", "batı", "bayi", "bekçi", "bilgi", "bitki", "boru", "büyü",
"cadı", "cami", "çalı", "çatı", "çeki", "çeri", "çıktı", "çini", "çivi", "çizgi",
"dahi", "dayı", "deli", "deri", "dizi", "doğu", "doku", "dolu", "dudu", "duygu", "dürtü",
"ebedi", "edebi", "efendi", "eksi", "elti", "eski", "evli",
"fani", "fıçı", "fırıncı", "fobi",
"gazi", "gemi", "gezi", "girdi", "giysi", "görgü", "güdü",
"hacı", "halı", "hami", "hani", "huni", "huri",
"içeri", "ileri", "inci", "iyi",
"kadı", "kapı", "karşı", "kedi", "kişi", "kivi", "koku", "komşu", "konu", "korku", "koru", "köprü", "kötü", "kutu", "kuyu", "kuzu", "kürsü", "kesir",
"mavi", "mazi", "mermi", "milli", "müftü",
"ordu", "öcü", "ölü", "ölçü", "öncü", "örtü", "övgü", "öykü",
"pazu", "peri", "pisi",
"sarı", "sayı", "seri", "sergi", "sevgi", "sezi", "sıhhi", "sıvı", "silgi", "soru", "su", "sürü", "şarkı", "söndürücü",
"taksi", "tanı", "tartı", "tatlı", "tepki", "terzi", "testi", "tortu", "tutku", "türkü", "Türkçe",
"uğultu", "ulu", "utku", "uyku", "üzüntü", "ütü",
"vadi", "vali", "vasi", "veli", "veri", "yemişçi", "sporcu",
"yalı", "yatılı", "yangın söndürücü", "yapı", "yarı", "yavru", "yazı", "yeni", "yetki", "yolcu", "yemiş", "şeftali",
"zeki",
}
local function trLowerForKesmesizOzel(s)
s = mw.ustring.gsub(s or "", "I", "ı")
s = mw.ustring.gsub(s, "İ", "i")
s = mw.ustring.lower(s)
return s
end
local function KesmesizOzelSet(list)
local t = {}
for _, v in ipairs(list) do
t[v] = true
t[trLowerForKesmesizOzel(v)] = true
end
return t
end
p.istisnaKesmesizOzelAd = Set {
"Abhaz",
"Adanalı",
"Adapazarlı",
"Adıyamanlı",
"Afgan",
"Afganistanlı",
"Afrikalı",
"Afyonkarahisarlı",
"Afyonlu",
"Ağrılı",
"Akdenizli",
"Aksaraylı",
"Alman",
"Almanyalı",
"Amasyalı",
"Amerikalı",
"Amerikan",
"Anadolulu",
"Angolalı",
"Ankaralı",
"Antalyalı",
"Antepli",
"Arap",
"Ardahanlı",
"Arjantinli",
"Arnavut",
"Arnavutluklu",
"Artvinli",
"Asyalı",
"Avrupalı",
"Avustralyalı",
"Avusturyalı",
"Aydınlı",
"Azerbaycanlı",
"Azeri",
"Bahamalı",
"Bahreynli",
"Balıkesirli",
"Balkanlı",
"Bangladeşli",
"Barbadoslu",
"Bartınlı",
"Başkurt",
"Batmanlı",
"Bayburtlu",
"Belaruslu",
"Belçikalı",
"Belizeli",
"Beninli",
"Bilecikli",
"Bingöllü",
"Birleşik Arap Emirlikli",
"Birleşik Krallıklı",
"Bitlisli",
"Bolivyalı",
"Bolulu",
"Bosna Hersekli",
"Bosna-Hersekli",
"Bosnalı",
"Boşnak",
"Botsvanalı",
"Brezilyalı",
"Britanyalı",
"Bruneyli",
"Bulgar",
"Bulgaristanlı",
"Burmalı",
"Burdurlu",
"Burkina Fasolu",
"Burundili",
"Bursalı",
"Butanlı",
"Çadlı",
"Çanakkaleli",
"Çankırılı",
"Çek",
"Çekyalı",
"Çerkes",
"Çinli",
"Çorumlu",
"Çuvaş",
"Danimarkalı",
"Denizlili",
"Diyarbakırlı",
"Doğu Timorlu",
"Dominik Cumhuriyetli",
"Dominikli",
"Düzceli",
"Edirneli",
"Ekvadorlu",
"Ekvator Gineli",
"Elazığlı",
"Elsalvadorlu",
"Emirlikli",
"Endonezyalı",
"Ermeni",
"Ermenistanlı",
"Eritreli",
"Erzincanlı",
"Erzurumlu",
"Eskişehirli",
"Estonyalı",
"Esvatinili",
"Etiyopyalı",
"Fars",
"Faslı",
"Fijili",
"Fildişi Sahilli",
"Filipinli",
"Filistinli",
"Fin",
"Finlandiyalı",
"Fransalı",
"Fransız",
"Gabonlu",
"Galli",
"Gambiyalı",
"Ganalı",
"Gaziantepli",
"Gine Bissaulu",
"Gine-Bissaulu",
"Gineli",
"Giresunlu",
"Grenadalı",
"Guatemalalı",
"Guyanalı",
"Güney Afrikalı",
"Güney Amerikalı",
"Güney Koreli",
"Güney Sudanlı",
"Gümüşhaneli",
"Gürcü",
"Gürcistanlı",
"Haitili",
"Hakkârili",
"Hakkarili",
"Hataylı",
"Hint",
"Hindistanlı",
"Hollandalı",
"Honduraslı",
"Hırvat",
"Hırvatistanlı",
"Iğdırlı",
"Iraklı",
"Ispartalı",
"İngiliz",
"İranlı",
"İrlandalı",
"İskoç",
"İspanyol",
"İspanyalı",
"İsrailli",
"İsveçli",
"İsviçreli",
"İtalyalı",
"İtalyan",
"İstanbullu",
"İzlandalı",
"İzmirli",
"İzmitli",
"Jamaikalı",
"Japon",
"Japonyalı",
"Kahramanmaraşlı",
"Kanadalı",
"Karabüklü",
"Karadağlı",
"Karadenizli",
"Karamanlı",
"Karslı",
"Kastamonulu",
"Katarlı",
"Kayserili",
"Kazak",
"Kazakistanlı",
"Kenyalı",
"Kilisli",
"Kırgız",
"Kırgızistanlı",
"Kırıkkaleli",
"Kırklarelili",
"Kırşehirli",
"Kırım Tatarı",
"Kıbrıs Rumu",
"Kıbrıs Türkü",
"Kıbrıslı",
"Kolombiyalı",
"Komorlu",
"Kongo Cumhuriyetli",
"Kongolu",
"Konyalı",
"Koreli",
"Kosovalı",
"Kosta Rikalı",
"Kuzey Amerikalı",
"Kuzey İrlandalı",
"Kuzey Koreli",
"Kuzey Makedonyalı",
"Kuveytli",
"Kübalı",
"Kürt",
"Kütahyalı",
"Laoslu",
"Latin Amerikalı",
"Laz",
"Lesotholu",
"Letonyalı",
"Liberyalı",
"Libyalı",
"Lihtenştaynlı",
"Litvanyalı",
"Lübnanlı",
"Lüksemburglu",
"Macar",
"Macaristanlı",
"Madagaskarlı",
"Makedon",
"Malatyalı",
"Malavili",
"Maldivli",
"Malezyalı",
"Malili",
"Maltalı",
"Manisalı",
"Mardinli",
"Maraşlı",
"Marshall Adalı",
"Marşallı",
"Mauritiuslu",
"Meksikalı",
"Mersinli",
"Mikronezyalı",
"Moldovalı",
"Moldovyalı",
"Monakolu",
"Moritanyalı",
"Morityanyalı",
"Mozambikli",
"Moğol",
"Moğolistanlı",
"Muhacir",
"Muğlalı",
"Muşlu",
"Mısırlı",
"Namibyalı",
"Naurulu",
"Nepalli",
"Nevşehirli",
"Nijerli",
"Nijeryalı",
"Nikaragualı",
"Niğdeli",
"Norveçli",
"Ordulu",
"Orta Afrikalı",
"Orta Asyalı",
"Ortadoğulu",
"Osmaniyeli",
"Osmanlı",
"Özbek",
"Özbekistanlı",
"Pakistanlı",
"Palaualı",
"Panamalı",
"Papua Yeni Gineli",
"Paraguaylı",
"Perulu",
"Polonyalı",
"Pomak",
"Portekizli",
"Rizeli",
"Roman",
"Rum",
"Rumen",
"Rumanyalı",
"Rus",
"Rusyalı",
"Ruandalı",
"Saha",
"Saint Kitts Ve Nevisli",
"Saint Lucialı",
"Saint Vincent Ve Grenadinlerli",
"Sakaryalı",
"Samoalı",
"Samsunlu",
"San Marinolu",
"Senegalli",
"Seyşelli",
"Sierra Leoneli",
"Siirtli",
"Singapurlu",
"Sinoplu",
"Sivaslı",
"Slovak",
"Slovakyalı",
"Sloven",
"Slovenyalı",
"Solomon Adalı",
"Somalili",
"Sri Lankalı",
"Sudanlı",
"Surinamlı",
"Suriyeli",
"Suudi",
"Suudi Arabistanlı",
"Süryani",
"Svazili",
"Sırbistanlı",
"Sırp",
"Şanlıurfalı",
"Şilili",
"Şırnaklı",
"Tacik",
"Tacikistanlı",
"Tanzanyalı",
"Tatar",
"Taylandlı",
"Tayvanlı",
"Tekirdağlı",
"Togolu",
"Tokatlı",
"Tongalı",
"Trabzonlu",
"Trinidad Ve Tobagolu",
"Tuncelili",
"Tunuslu",
"Tuvalulu",
"Türk",
"Türkiyeli",
"Türkmen",
"Türkmenistanlı",
"Ugandalı",
"Ukraynalı",
"Ummanlı",
"Urfalı",
"Uruguaylı",
"Uşaklı",
"Uygur",
"Ürdünlü",
"Vanlı",
"Vanuatulu",
"Vatikanlı",
"Venezuelalı",
"Vietnamlı",
"Yahudi",
"Yakut",
"Yalovalı",
"Yemenli",
"Yeni Zelandalı",
"Yeşil Burunlu",
"Yozgatlı",
"Yunan",
"Yunanistanlı",
"Yörük",
"Zambiyalı",
"Zaza",
"Zimbabveli",
"Zonguldaklı"
}
return p
12hg6cplezvz006xj36pqw4v1128b9v
5658569
5658335
2026-05-16T10:19:18Z
Satirdan kahraman
37401
genel düzen
5658569
Scribunto
text/plain
local p = {}
local function Set(list)
local set = {}
for _, l in ipairs(list) do
-- normalize: küçük harf + â/î/û düzleştirme
l = mw.text.trim(l or "")
l = mw.ustring.lower(l)
l = mw.ustring.gsub(l, "â", "a")
l = mw.ustring.gsub(l, "î", "i")
l = mw.ustring.gsub(l, "û", "u")
set[l] = true
end
return set
end
-- ✅ ARTIK DEV LİSTE YOK:
-- -iyet / -iyat / -iyyet ve -et/-at/-ut/-üt grupları modülde kural ile kapsanıyor.
p.istisnaYumusama = Set {
-- kısa / yabancı / sert sonlu olup yumuşamaması gerekenler (çekirdek)
"bank",
"bark",
"çap",
"yarıçap",
"kart",
"kamp",
"kist",
"link",
"lunapark",
"market",
"internet",
"post it",
"eskort",
"grosmarket",
"gelgit",
"boykot",
"suikast",
-- çok kısa / tek heceli örnekler (ihtiyaca göre azalt/çoğalt)
"at",
"alt",
"et",
"it",
"ip",
"ok",
"çek",
"çöp",
"bok",
"koç",
"piç",
"aşk",
"hukuk",
"ahlak",
"millet",
"devlet",
"sanat",
"hayat",
"evlat",
"merak",
"evrak",
"ittifak",
"iktisat",
"bulut",
"anıt",
"kanıt",
"ölçüt",
"taşıt",
"yanıt",
"anket",
"paket",
"sepet",
"bisiklet", "sert", "tıp", "sik", "çük",
-- p ile bitenler
"sap", "top", "küp", "hap", "tüp", "kulp", "sarp", "tip", "jip", "şap",
-- ç ile bitenler
"saç", "suç", "maç", "üç", "iç", "göç", "haç", "kıç",
-- k ile bitenler
"ek", "kök", "yük", "kürk", "çark", "park", "tank", "blok", "stok", "mülk", "halk",
"şevk", "sevk", "meşk", "köşk", "mercanköşk", "ak", "ilk", "tek", "tok", "sirk", "disk", "fark", "iştiyak", "mask",
-- t ile bitenler
"ot", "süt", "bit", "çit", "küt", "zıt", "lort", "mart", "şart",
"sırt", "sert", "büst", "dost", "post", "tost", "test", "üst", "ast",
"salt", "kült", "semt", "kent", "mont", "taht", "baht", "abdest",
"vücut", "şehit", "senet", "taahhüt", "hasat", "icat", "ahit", "iktisat", "mesnet",
"kart", "rant", "mabet", "payitaht", "tişört", "best", "but", "jant", "doçent", "nühüft"
}
p.istisnaIncelme = Set {
"aciz", "acz", "ahit", "akit", "alkol", "astral", "biantal", "dakika", "darp", "eflak", "emlak", "fevk", "global", "gol", "had", "hakikat", "hal", "hâl", "harf", "hayal", "hayâl", "helak",
"ideal", "idrak", "imsak", "istiklal", "istiklâl", "istimlak", "iştirak", "kabul", "kalp", "katil", "kavim",
"kemal", "kemâl", "kontrol", "koramiral", "liyakat", "lokal", "makbul", "merkat", "meşgul", "metal", "moral", "nakit", "nihal", "normal", "oval",
"peştamal", "portal", "refik", "rikkat", "rol", "saat", "sadakat", "santral", "seyahat", "serhat", "sıhhat", "sol", "sukutuhayal", "mahal",
"şefkat", "talakat", "talâkat", "terminal", "usul", "vakit", "vüsat", "yalın hâl", "kıtal", "kabil", "kabir", "bahis",
}
p.istisnaDusme = Set {
"aciz", "ağız", "ahit", "akit", "akıl", "alın", "asıl", "bahtiyar", "batın", "beyin", "boyun", "burun", "cehil", "cisim", "dahil", "devir",
"emir", "fetih", "fikir", "geniz", "göğüs", "gönül", "hasım", "hapis", "hüküm", "ilim", "isim", "karın", "kasıt", "kavim",
"kayıt", "kayıp", "keyif", "küfür", "metin", "meyil", "mühür", "nakit", "nakış", "nehir", "nezir", "nesil", "nutuk", "oğul", "omuz", "resim", "rızık",
"sabır", "satıh", "seyir", "sihir", "şehir", "şekil", "şükür", "temsilî resim", "ufuk", "uzuv", "vakit", "vasıf",
"vezin", "zehir", "zihin", "zikir", "zulüm", "kabir", "bahis", "kesir",
}
p.istisnaBilesik = Set {
"akşamsefası", "aslanağzı", "aslansütü", "atasözü", "ayçiçeği", "başsağlığı", "başörtüsü","başucu", "burası", "buzdolabı", "camevi",
"cumartesi", "denizaslanı", "denizgülü", "denizşakayığı", "dereotu", "dilberdudağı", "elebaşı", "fildişi", "gecesefası", "gelinkuşağı", "gökkuşağı", "gözbebeği",
"gözyaşı", "havaalanı", "havalimanı", "halkevi", "hanımeli", "içgüveysi", "işgücü", "kafatası", "kızevi", "kitabevi", "kuşburnu", "köşebaşı", "oymakbaşı",
"peygamberdevesi", "semizotu", "sepettopu", "sınır boyu", "soyağacı", "susamuru", "tavukgötü", "yavruağzı", "randevuevi", "cezaevi", "kadınbudu", "kazayağı", "zeytinyağı"
}
p.istisnaIkizlesme = Set {
"af", "behat", "emrihak", "fek", "had", "hak", "hal", "hat", "haz", "his", "hüsnühat", "met", "rab", "ret", "sır", "şek", "şer", "şet", "tıp", "zam", "zan", "mahal",
}
p.istisnaYalinSonlu = Set {
-- Sonu ı, i, u, ü ile bittiği halde yalın (kök) durumunda olan ve
-- sıfat/isim tamlamalarında ikinci kelime olduğunda "bileşik" yapmayan kelimeler
"acı", "açı", "akü", "anadolu", "anı", "arı", "atkı", "ayı", "ayakkabı",
"bacı", "batı", "bayi", "bekçi", "bilgi", "bitki", "boru", "büyü",
"cadı", "cami", "çalı", "çatı", "çeki", "çeri", "çıktı", "çini", "çivi", "çizgi",
"dahi", "dayı", "deli", "deri", "dizi", "doğu", "doku", "dolu", "dudu", "duygu", "dürtü",
"ebedi", "edebi", "efendi", "eksi", "elti", "eski", "evli",
"fani", "fıçı", "fırıncı", "fobi",
"gazi", "gemi", "gezi", "girdi", "giysi", "görgü", "güdü",
"hacı", "halı", "hami", "hani", "huni", "huri",
"içeri", "ileri", "inci", "iyi",
"kadı", "kapı", "karşı", "kedi", "kişi", "kivi", "koku", "komşu", "konu", "korku", "koru", "köprü", "kötü", "kutu", "kuyu", "kuzu", "kürsü", "kesir",
"mavi", "mazi", "mermi", "milli", "müftü",
"ordu", "öcü", "ölü", "ölçü", "öncü", "örtü", "övgü", "öykü",
"pazu", "peri", "pisi",
"sarı", "sayı", "seri", "sergi", "sevgi", "sezi", "sıhhi", "sıvı", "silgi", "soru", "su", "sürü", "şarkı", "söndürücü",
"taksi", "tanı", "tartı", "tatlı", "tepki", "terzi", "testi", "tortu", "tutku", "türkü", "Türkçe",
"uğultu", "ulu", "utku", "uyku", "üzüntü", "ütü",
"vadi", "vali", "vasi", "veli", "veri", "yemişçi", "sporcu",
"yalı", "yatılı", "yangın söndürücü", "yapı", "yarı", "yavru", "yazı", "yeni", "yetki", "yolcu", "yemiş", "şeftali",
"zeki",
}
local function trLowerForKesmesizOzel(s)
s = mw.ustring.gsub(s or "", "I", "ı")
s = mw.ustring.gsub(s, "İ", "i")
s = mw.ustring.lower(s)
return s
end
local function KesmesizOzelSet(list)
local t = {}
for _, v in ipairs(list) do
t[v] = true
t[trLowerForKesmesizOzel(v)] = true
end
return t
end
p.istisnaKesmesizOzelAd = Set {
"Adanalı", "Adapazarlı", "Adıyamanlı", "Afganistanlı", "Afrikalı", "Afyonkarahisarlı", "Afyonlu", "Ağrılı", "Akdenizli", "Aksaraylı", "Almanyalı",
"Amasyalı", "Amerikalı", "Anadolulu", "Angolalı", "Ankaralı", "Antalyalı", "Antepli", "Ardahanlı", "Arjantinli", "Arnavutluklu", "Artvinli", "Asyalı",
"Avrupalı", "Avustralyalı", "Avusturyalı", "Aydınlı", "Azerbaycanlı",
"Bahamalı", "Bahreynli", "Balıkesirli", "Balkanlı", "Bangladeşli", "Barbadoslu", "Bartınlı", "Batmanlı", "Bayburtlu", "Belaruslu", "Belçikalı", "Belizeli", "Beninli", "Bilecikli",
"Bingöllü", "Birleşik Arap Emirlikli", "Birleşik Krallıklı", "Bitlisli", "Bolivyalı", "Bolulu", "Bosna Hersekli", "Bosna-Hersekli", "Bosnalı", "Botsvanalı",
"Brezilyalı", "Britanyalı", "Bruneyli", "Bulgaristanlı", "Burmalı", "Burdurlu", "Burkina Fasolu", "Burundili", "Bursalı", "Butanlı",
"Çadlı", "Çanakkaleli", "Çankırılı", "Çekyalı", "Çinli", "Çorumlu",
"Danimarkalı", "Denizlili", "Diyarbakırlı", "Doğu Timorlu", "Dominik Cumhuriyetli", "Dominikli", "Düzceli",
"Edirneli", "Ekvadorlu", "Ekvator Gineli", "Elazığlı", "Elsalvadorlu", "Endonezyalı", "Ermenistanlı", "Eritreli", "Erzincanlı", "Erzurumlu", "Eskişehirli",
"Estonyalı", "Esvatinili", "Etiyopyalı",
"Faslı", "Fijili", "Fildişi Sahilli", "Filipinli", "Filistinli", "Finlandiyalı", "Fransalı", "Fransız", "Gabonlu", "Galli", "Gambiyalı", "Ganalı",
"Gaziantepli", "Gineli", "Giresunlu", "Guatemalalı", "Guyanalı", "Güney Afrikalı", "Güney Amerikalı", "Güney Koreli", "Güney Sudanlı", "Gümüşhaneli",
"Gürcistanlı", "Haitili", "Hakkârili", "Hataylı", "Hindistanlı", "Hollandalı", "Honduraslı", "Hırvatistanlı", "Iğdırlı", "Iraklı", "Ispartalı",
"İranlı", "İrlandalı", "İspanyalı", "İsrailli", "İsveçli", "İsviçreli", "İtalyalı", "İstanbullu", "İzlandalı", "İzmirli", "İzmitli",
"Jamaikalı", "Japon",
"Japonyalı", "Kahramanmaraşlı", "Kanadalı", "Karabüklü", "Karadağlı", "Karadenizli", "Karamanlı", "Karslı", "Kastamonulu", "Katarlı", "Kayserili", "Kazak", "Kazakistanlı", "Kenyalı",
"Kilisli", "Kırgız", "Kırgızistanlı", "Kırıkkaleli", "Kırklarelili", "Kırşehirli", "Kırım Tatarı", "Kıbrıs Rumu", "Kıbrıs Türkü", "Kıbrıslı", "Kolombiyalı",
"Komorlu", "Kongo Cumhuriyetli", "Kongolu", "Konyalı", "Koreli", "Kosovalı", "Kosta Rikalı", "Kuzey Amerikalı", "Kuzey İrlandalı", "Kuzey Koreli", "Kuzey Makedonyalı",
"Kuveytli", "Kübalı", "Kürt", "Kütahyalı",
"Laoslu", "Latin Amerikalı", "Laz", "Lesotholu", "Letonyalı", "Liberyalı", "Libyalı", "Lihtenştaynlı", "Litvanyalı", "Lübnanlı", "Lüksemburglu",
"Macar", "Macaristanlı", "Madagaskarlı", "Makedon", "Malatyalı", "Malavili", "Maldivli", "Malezyalı",
"Malili", "Maltalı", "Manisalı", "Mardinli", "Maraşlı", "Mauritiuslu", "Meksikalı", "Mersinli", "Mikronezyalı", "Moldovalı", "Moldovyalı", "Monakolu",
"Moritanyalı", "Morityanyalı", "Mozambikli", "Moğol", "Moğolistanlı", "Muğlalı", "Muşlu", "Mısırlı",
"Namibyalı", "Naurulu", "Nepalli", "Nevşehirli", "Nijerli", "Nijeryalı", "Nikaragualı", "Niğdeli", "Norveçli",
"Ordulu", "Orta Afrikalı", "Orta Asyalı", "Ortadoğulu", "Osmaniyeli", "Özbekistanlı", "Pakistanlı", "Palaualı", "Panamalı", "Papua Yeni Gineli", "Paraguaylı",
"Perulu", "Polonyalı", "Portekizli", "Rizeli", "Rumanyalı", "Rusyalı", "Ruandalı",
"Sakaryalı", "Samoalı", "Samsunlu", "San Marinolu", "Senegalli", "Seyşelli", "Sierra Leoneli", "Siirtli", "Singapurlu", "Sinoplu", "Sivaslı", "Slovakyalı",
"Sloven", "Slovenyalı", "Somalili", "Sri Lankalı", "Sudanlı", "Surinamlı", "Suriyeli", "Suudi Arabistanlı", "Sırbistanlı", "Şanlıurfalı", "Şilili", "Şırnaklı",
"Tacikistanlı", "Tanzanyalı", "Taylandlı", "Tayvanlı", "Tekirdağlı", "Togolu", "Tokatlı", "Tongalı", "Trabzonlu", "Tuncelili", "Tunuslu", "Türkiyeli",
"Türkmenistanlı",
"Ugandalı", "Ukraynalı", "Ummanlı", "Urfalı", "Uruguaylı", "Uşaklı", "Ürdünlü", "Vanlı", "Vatikanlı", "Venezuelalı", "Vietnamlı", "Vikisözlük",
"Yalovalı", "Yemenli", "Yeni Zelandalı", "Yeşil Burunlu", "Yozgatlı", "Yunanistanlı", "Zambiyalı", "Zimbabveli", "Zonguldaklı"
}
return p
g52c6q0qxmjh9jn11ysbdlry2i0z1kb
Modül:tr-başlıkbaşı
828
443668
5658310
4263082
2026-05-15T17:25:46Z
Satirdan kahraman
37401
deneme
5658310
Scribunto
text/plain
-- Gerekli çekimleme modüllerini yükle
local tr_ad = require("Modül:tr-ad")
local tr_eylem = require("Modül:tr-eylem")
local dil = require("Modül:diller").getirKodaGore("tr")
local cikart = {}
local soz_fonksiyonlari = {}
-- Eğer boş değilse
local function ebd(arg)
if arg == "" then
return nil
else
return arg
end
end
-- Asıl girdi çıktısı
function cikart.goster(frame)
local sozkat = frame.args[1] or error("Söz türü belirtilmedi. Lütfen 1 numaralı parametreyi giriniz.")
local params = {
[1] = {list = "baş", allow_holes = true, default = ""},
["baş"] = {default = ""},
["istisna"] = {},
["k"] = {},
["a"] = {},
["d"] = {},
}
local args = frame:getParent().args -- YAPILACAK: Burada [[Modül:parameters]] kullan
-- Gather parameters
local veri = {dil = dil, soz_kategorisi = sozkat, kategoriler = {}, baslar = {}, cekimler = { etkin_oto_alfabecev = true }}
local bas = args["baş"] or args[1] or ""
local i = 1
while bas do
table.insert(veri.baslar, bas)
i = i + 1
bas = ebd(args["baş" .. i])
end
if soz_fonksiyonlari[sozkat] then
soz_fonksiyonlari[sozkat].fonk(args, veri)
end
return require("Modül:başlık başı").tam_baslikbasi(veri)
end
soz_fonksiyonlari["adlar"] = {
fonk = function(args, veri)
local bas = args[1] or mw.title.getCurrentTitle().subpageText
local ak = args["k"] or args["a"]
if ak == "1" then
veri.soz_kategorisi = "özel adlar"
end
belirtme = tr_ad.ayarla(bas, args["istisna"], "tekil", "belirtme", ak)
cogul = tr_ad.ayarla(bas, args["istisna"], "çoğul", "yalın", ak)
table.insert(veri.cekimler, {{sozcuk = belirtme}, etiket = "belirtme hâli"})
if mw.ustring.find(mw.ustring.sub( bas, -4 ), "l[ae][(rı)(ri)r]") or args["istisna"] == "çoğulsuz" then
table.insert(veri.kategoriler, "Türkçe topluluk adları")
table.insert(veri.cekimler, {etiket = "[[Ek:Açıklamalar#topluluk adı|topluluk adı]]"})
else
if ak and ak == "1" then else
table.insert(veri.cekimler, {{sozcuk = cogul}, etiket = "çoğulu"})
end
end
end
}
soz_fonksiyonlari["özel adlar"] = {
fonk = function(args, veri)
local bas = args[1] or mw.title.getCurrentTitle().subpageText
local ak = args["k"] or args["a"]
cogul = tr_ad.ayarla(bas, args["istisna"], "çoğul", "yalın", ak)
cogul = tr_ad.ayarla(bas, args["istisna"], "çoğul", "yalın", ak)
table.insert(veri.cekimler, {{sozcuk = belirtme}, etiket = "belirtme hâli"})
end
}
soz_fonksiyonlari["eylemler"] = {
fonk = function(args, veri)
local bas = args[1] or mw.title.getCurrentTitle().subpageText
local eylem = require("Modül:tr-araçlar").yalinYap(bas)
tip = "olumlu"
if mw.ustring.find(mw.ustring.sub( eylem, -2 ), "m[ea]") then
eylem = mw.ustring.sub( eylem, 1, -3 )
tip = "olumsuz"
end
cekim = tr_eylem.genis(eylem, tip, "o")
if type(cekim) == "table" then
cekim = cekim[1]
end
table.insert(veri.cekimler, {{sozcuk = cekim}, etiket = "üçüncü tekil şahıs geniş zaman çekimi"})
end
}
soz_fonksiyonlari["ön adlar"] = {
fonk = function(args, veri)
local bas = args[1] or mw.title.getCurrentTitle().subpageText
if args.d == "-" then else
table.insert(veri.cekimler, {{sozcuk = "[[daha]] " .. bas}, etiket = "karşılaştırma"})
table.insert(veri.cekimler, {{sozcuk = "[[en]] " .. bas}, etiket = "üstünlük"})
end
end
}
return cikart
d9de72yep8e74zscd9wd60vl1rwdito
5658312
5658310
2026-05-15T17:30:29Z
Satirdan kahraman
37401
deneme
5658312
Scribunto
text/plain
-- Gerekli çekimleme modüllerini yükle
local tr_ad = require("Modül:tr-ad")
local tr_eylem = require("Modül:tr-eylem")
local dil = require("Modül:diller").getirKodaGore("tr")
local u = mw.ustring
local cikart = {}
local soz_fonksiyonlari = {}
-- Eğer boş değilse
local function ebd(arg)
if arg == "" then return nil else return arg end
end
-- ── Pekiştirme sıfatı tespiti ─────────────────────────────────────────────────
-- sımsıcak, kapkara, mosmor, bembeyaz, yepyeni vb.
-- Kalıp: ilk hece + (p|s|m|r) ile başlayan sözcükler.
local PEKISTIRME_ONLAR = {
"bem", "bep", "bes",
"bom", "bop",
"çır", "çıp",
"düm", "düp",
"gom", "güp",
"kap", "kam", "kım", "kıp", "kös", "küp",
"mas", "map", "mos", "mop",
"sap", "sam", "sım", "sıp", "som",
"ter", "tem",
"yap", "yam", "yem", "yep",
}
local function pekistirmeMi(bas)
local k = u.lower(bas or "")
for _, on in ipairs(PEKISTIRME_ONLAR) do
if u.sub(k, 1, u.len(on)) == on then return true end
end
return false
end
-- ── Karşılaştırılamaz sıfat tespiti ──────────────────────────────────────────
-- İkili kavramlar, sıra sayıları, belirteç kökenli sıfatlar vb.
local KARSILASTIRILMAZ = {
["ölü"]=true, ["diri"]=true, ["canlı"]=true,
["evli"]=true, ["bekar"]=true, ["bekâr"]=true,
["tek"]=true, ["çift"]=true,
["birinci"]=true, ["ikinci"]=true, ["üçüncü"]=true,
["dördüncü"]=true, ["beşinci"]=true,
["son"]=true, ["nihai"]=true, ["nihâî"]=true,
["mutlak"]=true,["sonsuz"]=true,
["her"]=true, ["hiç"]=true, ["bazı"]=true,
["birkaç"]=true,["birçok"]=true,
["bu"]=true, ["şu"]=true, ["o"]=true,
}
local function karsilastirilmazMi(bas)
local k = u.lower(bas or "")
if KARSILASTIRILMAZ[k] then return true end
-- -ıncı/-inci/-uncu/-üncü: sıra sayı sıfatları
if u.find(k, "[ıiuü]nc[ıiuü]$") then return true end
return false
end
local function karsilastirmaEklenebilirMi(bas, args)
if args.d == "-" then return false end
if pekistirmeMi(bas) then return false end
if karsilastirilmazMi(bas) then return false end
return true
end
-- ── Asıl girdi çıktısı ────────────────────────────────────────────────────────
function cikart.goster(frame)
local sozkat = frame.args[1]
or error("Söz türü belirtilmedi. Lütfen 1 numaralı parametreyi giriniz.")
local args = frame:getParent().args -- YAPILACAK: Burada [[Modül:parameters]] kullan
local veri = {
dil = dil,
soz_kategorisi = sozkat,
kategoriler = {},
baslar = {},
cekimler = { etkin_oto_alfabecev = true },
}
local bas = args["baş"] or args[1] or ""
local i = 1
while bas do
table.insert(veri.baslar, bas)
i = i + 1
bas = ebd(args["baş" .. i])
end
if soz_fonksiyonlari[sozkat] then
soz_fonksiyonlari[sozkat].fonk(args, veri)
end
return require("Modül:başlık başı").tam_baslikbasi(veri)
end
-- ── adlar ─────────────────────────────────────────────────────────────────────
soz_fonksiyonlari["adlar"] = {
fonk = function(args, veri)
local bas = args[1] or mw.title.getCurrentTitle().subpageText
local ak = args["k"] or args["a"]
if ak == "1" then
veri.soz_kategorisi = "özel adlar"
end
local belirtme = tr_ad.ayarla(bas, args["istisna"], "tekil", "belirtme", ak)
local cogul = tr_ad.ayarla(bas, args["istisna"], "çoğul", "yalın", ak)
table.insert(veri.cekimler, {{sozcuk = belirtme}, etiket = "belirtme hâli"})
if u.find(u.sub(bas, -4), "l[ae][(rı)(ri)r]")
or args["istisna"] == "çoğulsuz" then
table.insert(veri.kategoriler, "Türkçe topluluk adları")
table.insert(veri.cekimler, {etiket = "[[Ek:Açıklamalar#topluluk adı|topluluk adı]]"})
else
if not (ak == "1") then
table.insert(veri.cekimler, {{sozcuk = cogul}, etiket = "çoğulu"})
end
end
end
}
-- ── özel adlar ────────────────────────────────────────────────────────────────
soz_fonksiyonlari["özel adlar"] = {
fonk = function(args, veri)
local bas = args[1] or mw.title.getCurrentTitle().subpageText
local ak = args["k"] or args["a"]
local belirtme = tr_ad.ayarla(bas, args["istisna"], "tekil", "belirtme", ak)
table.insert(veri.cekimler, {{sozcuk = belirtme}, etiket = "belirtme hâli"})
end
}
-- ── eylemler ──────────────────────────────────────────────────────────────────
soz_fonksiyonlari["eylemler"] = {
fonk = function(args, veri)
local bas = args[1] or mw.title.getCurrentTitle().subpageText
local eylem = require("Modül:tr-araçlar").yalinYap(bas)
local tip = "olumlu"
if u.find(u.sub(eylem, -2), "m[ea]") then
eylem = u.sub(eylem, 1, -3)
tip = "olumsuz"
end
local cekim = tr_eylem.genis(eylem, tip, "o")
if type(cekim) == "table" then cekim = cekim[1] end
table.insert(veri.cekimler,
{{sozcuk = cekim}, etiket = "üçüncü tekil şahıs geniş zaman çekimi"})
end
}
-- ── ön adlar ──────────────────────────────────────────────────────────────────
soz_fonksiyonlari["ön adlar"] = {
fonk = function(args, veri)
local bas = args[1] or mw.title.getCurrentTitle().subpageText
if karsilastirmaEklenebilirMi(bas, args) then
table.insert(veri.cekimler, {{sozcuk = "[[daha]] " .. bas}, etiket = "karşılaştırma"})
table.insert(veri.cekimler, {{sozcuk = "[[en]] " .. bas}, etiket = "üstünlük"})
end
end
}
return cikart
rns6zb7omqh80en3x4e9m9yuycs5k4g
Vikisözlük:Değişiklik sayılarına göre Vikisözlükçüler listesi
4
466356
5658352
5658178
2026-05-15T21:05:20Z
YBot
37147
Güncelleme
5658352
wikitext
text/x-wiki
{{/begin}}
<center>
{| class="wikitable"
! #
! Kullanıcı
! Değişiklik sayısı
! Kullanıcı grupları
|-
| 1
| [[Kullanıcı:HastaLaVi2|HastaLaVi2]]
| align="center" | 1.264.519
| arayüz yöneticisi, hizmetli
|-
| 2
| [[Kullanıcı:Victor Trevor|Victor Trevor]]
| align="center" | 144.832
|
|-
| 3
| [[Kullanıcı:MustafaCavlak|MustafaCavlak]]
| align="center" | 94.939
| hizmetli, geçici hesap IP görüntüleyici
|-
| 4
| [[Kullanıcı:Viki|Viki]]
| align="center" | 45.152
|
|-
| 5
| [[Kullanıcı:By erdo can|By erdo can]]
| align="center" | 42.866
|
|-
| 6
| [[Kullanıcı:Sae1962|Sae1962]]
| align="center" | 34.149
|
|-
| 7
| [[Kullanıcı:Satirdan kahraman|Satirdan kahraman]]
| align="center" | 34.066
|
|-
| 8
| [[Kullanıcı:Saltinbas|Saltinbas]]
| align="center" | 26.434
|
|-
| 9
| [[Kullanıcı:MüjdeA|MüjdeA]]
| align="center" | 25.502
|
|-
| 10
| [[Kullanıcı:Sabri76|Sabri76]]
| align="center" | 20.345
|
|-
| 11
| [[Kullanıcı:Katakay|Katakay]]
| align="center" | 19.415
|
|-
| 12
| [[Kullanıcı:Turgut46|Turgut46]]
| align="center" | 17.460
| hizmetli
|-
| 13
| [[Kullanıcı:Vuzorg|Vuzorg]]
| align="center" | 15.925
|
|-
| 14
| [[Kullanıcı:Ender|Ender]]
| align="center" | 14.945
|
|-
| 15
| [[Kullanıcı:Kök|Kök]]
| align="center" | 8.437
|
|-
| 16
| [[Kullanıcı:Curious|Curious]]
| align="center" | 7.438
|
|-
| 17
| [[Kullanıcı:Bobcats|Bobcats]]
| align="center" | 6.526
|
|-
| 18
| [[Kullanıcı:Nosferatü|Nosferatü]]
| align="center" | 6.408
|
|-
| 19
| [[Kullanıcı:Uncitoyen|Uncitoyen]]
| align="center" | 5.685
| hizmetli
|-
| 20
| [[Kullanıcı:Vikiyılmaz|Vikiyılmaz]]
| align="center" | 5.369
|
|-
| 21
| [[Kullanıcı:Sinek~trwiktionary|Sinek~trwiktionary]]
| align="center" | 5.221
|
|-
| 22
| [[Kullanıcı:YZCTEK|YZCTEK]]
| align="center" | 4.880
|
|-
| 23
| [[Kullanıcı:Vorhon|Vorhon]]
| align="center" | 4.699
|
|-
| 24
| [[Kullanıcı:LA2|LA2]]
| align="center" | 4.433
|
|-
| 25
| [[Kullanıcı:Apisite|Apisite]]
| align="center" | 4.428
|
|-
| 26
| [[Kullanıcı:B5.101.222.187|B5.101.222.187]]
| align="center" | 4.259
|
|-
| 27
| [[Kullanıcı:Kavurt|Kavurt]]
| align="center" | 4.088
|
|-
| 28
| [[Kullanıcı:Vitruvian|Vitruvian]]
| align="center" | 4.054
|
|-
| 29
| [[Kullanıcı:123snake45|123snake45]]
| align="center" | 3.971
|
|-
| 30
| [[Kullanıcı:Alikiroglu61|Alikiroglu61]]
| align="center" | 3.773
|
|-
| 31
| [[Kullanıcı:3210|3210]]
| align="center" | 3.716
|
|-
| 32
| [[Kullanıcı:Goreno|Goreno]]
| align="center" | 3.474
|
|-
| 33
| [[Kullanıcı:Runningfridgesrule|Runningfridgesrule]]
| align="center" | 3.119
|
|-
| 34
| [[Kullanıcı:Reality006|Reality006]]
| align="center" | 3.099
|
|-
| 35
| [[Kullanıcı:HâlitM|HâlitM]]
| align="center" | 3.052
|
|-
| 36
| [[Kullanıcı:Ahmed922229|Ahmed922229]]
| align="center" | 3.009
|
|-
| 37
| [[Kullanıcı:Barishan|Barishan]]
| align="center" | 2.941
|
|-
| 38
| [[Kullanıcı:Ekrem691|Ekrem691]]
| align="center" | 2.398
|
|-
| 39
| [[Kullanıcı:Esege|Esege]]
| align="center" | 2.321
|
|-
| 40
| [[Kullanıcı:Ugur Basak|Ugur Basak]]
| align="center" | 2.267
|
|-
| 41
| [[Kullanıcı:Gamlıbaykuş|Gamlıbaykuş]]
| align="center" | 2.098
|
|-
| 42
| [[Kullanıcı:AML ZİYA AKYASAN|AML ZİYA AKYASAN]]
| align="center" | 1.989
|
|-
| 43
| [[Kullanıcı:Entry62|Entry62]]
| align="center" | 1.959
|
|-
| 44
| [[Kullanıcı:Magurale|Magurale]]
| align="center" | 1.854
|
|-
| 45
| [[Kullanıcı:Sihl fatma|Sihl fatma]]
| align="center" | 1.835
|
|-
| 46
| [[Kullanıcı:Don Alessandro|Don Alessandro]]
| align="center" | 1.815
|
|-
| 47
| [[Kullanıcı:Burudet88|Burudet88]]
| align="center" | 1.791
|
|-
| 48
| [[Kullanıcı:Şêr|Şêr]]
| align="center" | 1.668
|
|-
| 49
| [[Kullanıcı:Abuk78|Abuk78]]
| align="center" | 1.534
|
|-
| 50
| [[Kullanıcı:Göktürker|Göktürker]]
| align="center" | 1.508
|
|-
| 51
| [[Kullanıcı:Flanoz|Flanoz]]
| align="center" | 1.463
|
|-
| 52
| [[Kullanıcı:Sa'y|Sa'y]]
| align="center" | 1.345
|
|-
| 53
| [[Kullanıcı:Mzekiu|Mzekiu]]
| align="center" | 1.344
|
|-
| 54
| [[Kullanıcı:Samleml enes bilgin|Samleml enes bilgin]]
| align="center" | 1.315
|
|-
| 55
| [[Kullanıcı:İbrahim alican|İbrahim alican]]
| align="center" | 1.292
|
|-
| 56
| [[Kullanıcı:SİHL Gökhan|SİHL Gökhan]]
| align="center" | 1.278
|
|-
| 57
| [[Kullanıcı:Nazendegül|Nazendegül]]
| align="center" | 1.260
|
|-
| 58
| [[Kullanıcı:ליאון12|ליאון12]]
| align="center" | 1.178
|
|-
| 59
| [[Kullanıcı:Semlaml110|Semlaml110]]
| align="center" | 1.174
|
|-
| 60
| [[Kullanıcı:Ahmetaslan|Ahmetaslan]]
| align="center" | 1.141
|
|-
| 61
| [[Kullanıcı:Kibele|Kibele]]
| align="center" | 1.136
|
|-
| 62
| [[Kullanıcı:Wwww8888|Wwww8888]]
| align="center" | 1.125
|
|-
| 63
| [[Kullanıcı:Kmlblg 332|Kmlblg 332]]
| align="center" | 1.124
|
|-
| 64
| [[Kullanıcı:Lagrium|Lagrium]]
| align="center" | 1.094
|
|-
| 65
| [[Kullanıcı:SİHL ALİ MUSA|SİHL ALİ MUSA]]
| align="center" | 1.045
|
|-
| 66
| [[Kullanıcı:Ömer faruk çakmak|Ömer faruk çakmak]]
| align="center" | 996
|
|-
| 67
| [[Kullanıcı:Aybeg|Aybeg]]
| align="center" | 967
|
|-
| 68
| [[Kullanıcı:ВМНС|ВМНС]]
| align="center" | 962
|
|-
| 69
| [[Kullanıcı:Almanbet Janışev|Almanbet Janışev]]
| align="center" | 954
|
|-
| 70
| [[Kullanıcı:Seksen iki yüz kırk beş|Seksen iki yüz kırk beş]]
| align="center" | 931
|
|-
| 71
| [[Kullanıcı:Maxa|Maxa]]
| align="center" | 912
|
|-
| 72
| [[Kullanıcı:Wiamboo|Wiamboo]]
| align="center" | 880
|
|-
| 73
| [[Kullanıcı:SİHL Menzulekumaş|SİHL Menzulekumaş]]
| align="center" | 846
|
|-
| 74
| [[Kullanıcı:Melkorettin|Melkorettin]]
| align="center" | 812
|
|-
| 75
| [[Kullanıcı:Yasemin|Yasemin]]
| align="center" | 802
|
|-
| 76
| [[Kullanıcı:Peirep|Peirep]]
| align="center" | 791
|
|-
| 77
| [[Kullanıcı:Jeuwre|Jeuwre]]
| align="center" | 785
|
|-
| 78
| [[Kullanıcı:S.ihl.selmaaksoy|S.ihl.selmaaksoy]]
| align="center" | 781
|
|-
| 79
| [[Kullanıcı:Gibranist|Gibranist]]
| align="center" | 773
|
|-
| 80
| [[Kullanıcı:Kmlblgfatmanur|Kmlblgfatmanur]]
| align="center" | 771
|
|-
| 81
| [[Kullanıcı:Asım Hoca|Asım Hoca]]
| align="center" | 765
|
|-
| 82
| [[Kullanıcı:Malafaya|Malafaya]]
| align="center" | 765
|
|-
| 83
| [[Kullanıcı:Hagvoda|Hagvoda]]
| align="center" | 760
|
|-
| 84
| [[Kullanıcı:YosefHan7|YosefHan7]]
| align="center" | 756
|
|-
| 85
| [[Kullanıcı:Mustafahoca|Mustafahoca]]
| align="center" | 745
|
|-
| 86
| [[Kullanıcı:ZazaLejyoner|ZazaLejyoner]]
| align="center" | 740
|
|-
| 87
| [[Kullanıcı:Sürmene aml ve eml yusufcakir|Sürmene aml ve eml yusufcakir]]
| align="center" | 721
|
|-
| 88
| [[Kullanıcı:Mehmet-k61|Mehmet-k61]]
| align="center" | 670
|
|-
| 89
| [[Kullanıcı:Sinus46|Sinus46]]
| align="center" | 670
|
|-
| 90
| [[Kullanıcı:Kml serhan|Kml serhan]]
| align="center" | 668
|
|-
| 91
| [[Kullanıcı:TrDAsh|TrDAsh]]
| align="center" | 639
|
|-
| 92
| [[Kullanıcı:Itidal|Itidal]]
| align="center" | 635
|
|-
| 93
| [[Kullanıcı:Ömerbysl|Ömerbysl]]
| align="center" | 635
|
|-
| 94
| [[Kullanıcı:Chelik99|Chelik99]]
| align="center" | 587
|
|-
| 95
| [[Kullanıcı:Mereyü|Mereyü]]
| align="center" | 556
|
|-
| 96
| [[Kullanıcı:Octahedron80|Octahedron80]]
| align="center" | 547
|
|-
| 97
| [[Kullanıcı:ALİ İHSAN KARAMAN|ALİ İHSAN KARAMAN]]
| align="center" | 533
|
|-
| 98
| [[Kullanıcı:Gullerdiyari|Gullerdiyari]]
| align="center" | 520
|
|-
| 99
| [[Kullanıcı:Yeniler|Yeniler]]
| align="center" | 515
|
|-
| 100
| [[Kullanıcı:Andac20|Andac20]]
| align="center" | 509
|
|-
| 101
| [[Kullanıcı:Dilyâresi|Dilyâresi]]
| align="center" | 485
|
|-
| 102
| [[Kullanıcı:Nerepla Keskin|Nerepla Keskin]]
| align="center" | 481
|
|-
| 103
| [[Kullanıcı:Berkucar0|Berkucar0]]
| align="center" | 473
|
|-
| 104
| [[Kullanıcı:İsmetaydin|İsmetaydin]]
| align="center" | 465
|
|-
| 105
| [[Kullanıcı:Sadmleml enes|Sadmleml enes]]
| align="center" | 464
|
|-
| 106
| [[Kullanıcı:Condmatstrel|Condmatstrel]]
| align="center" | 461
|
|-
| 107
| [[Kullanıcı:Wutsje|Wutsje]]
| align="center" | 440
|
|-
| 108
| [[Kullanıcı:Lo Ximiendo|Lo Ximiendo]]
| align="center" | 435
|
|-
| 109
| [[Kullanıcı:Kml znnt|Kml znnt]]
| align="center" | 430
|
|-
| 110
| [[Kullanıcı:CommonsDelinker|CommonsDelinker]]
| align="center" | 423
|
|-
| 111
| [[Kullanıcı:Kendim|Kendim]]
| align="center" | 418
|
|-
| 112
| [[Kullanıcı:Pathoschild|Pathoschild]]
| align="center" | 413
|
|-
| 113
| [[Kullanıcı:Kemal.KURBAN|Kemal.KURBAN]]
| align="center" | 413
|
|-
| 114
| [[Kullanıcı:Merbeg|Merbeg]]
| align="center" | 410
|
|-
| 115
| [[Kullanıcı:Hamzahoca|Hamzahoca]]
| align="center" | 405
|
|-
| 116
| [[Kullanıcı:AHMET AYSOY|AHMET AYSOY]]
| align="center" | 393
|
|-
| 117
| [[Kullanıcı:Sihl ayhan|Sihl ayhan]]
| align="center" | 385
|
|-
| 118
| [[Kullanıcı:A.d.m.l.ve.e.m.lmuhammet alican|A.d.m.l.ve.e.m.lmuhammet alican]]
| align="center" | 383
|
|-
| 119
| [[Kullanıcı:Kvazimodo|Kvazimodo]]
| align="center" | 381
|
|-
| 120
| [[Kullanıcı:Muhammet yardım|Muhammet yardım]]
| align="center" | 378
|
|-
| 121
| [[Kullanıcı:Egemensen~trwiktionary|Egemensen~trwiktionary]]
| align="center" | 376
|
|-
| 122
| [[Kullanıcı:Johnny281993|Johnny281993]]
| align="center" | 376
|
|-
| 123
| [[Kullanıcı:Türkçe|Türkçe]]
| align="center" | 368
|
|-
| 124
| [[Kullanıcı:Vito Genovese|Vito Genovese]]
| align="center" | 365
|
|-
| 125
| [[Kullanıcı:Ata Kemal|Ata Kemal]]
| align="center" | 365
|
|-
| 126
| [[Kullanıcı:Yunus Emre Biçer|Yunus Emre Biçer]]
| align="center" | 364
|
|-
| 127
| [[Kullanıcı:ToprakM|ToprakM]]
| align="center" | 364
|
|-
| 128
| [[Kullanıcı:Bm|Bm]]
| align="center" | 347
|
|-
| 129
| [[Kullanıcı:Ampouble|Ampouble]]
| align="center" | 343
|
|-
| 130
| [[Kullanıcı:SLÖzlem|SLÖzlem]]
| align="center" | 343
|
|-
| 131
| [[Kullanıcı:S.orsev.ayşe kibaroğlu|S.orsev.ayşe kibaroğlu]]
| align="center" | 341
|
|-
| 132
| [[Kullanıcı:MelekArı|MelekArı]]
| align="center" | 336
|
|-
| 133
| [[Kullanıcı:Tegel|Tegel]]
| align="center" | 313
|
|-
| 134
| [[Kullanıcı:The cat|The cat]]
| align="center" | 311
|
|-
| 135
| [[Kullanıcı:SAL 378|SAL 378]]
| align="center" | 305
|
|-
| 136
| [[Kullanıcı:Saml livess 61|Saml livess 61]]
| align="center" | 297
|
|-
| 137
| [[Kullanıcı:Guljan|Guljan]]
| align="center" | 296
|
|-
| 138
| [[Kullanıcı:Kmlblg272|Kmlblg272]]
| align="center" | 292
|
|-
| 139
| [[Kullanıcı:SLDerya|SLDerya]]
| align="center" | 292
|
|-
| 140
| [[Kullanıcı:Srhat|Srhat]]
| align="center" | 285
|
|-
| 141
| [[Kullanıcı:2004onuralp|2004onuralp]]
| align="center" | 285
|
|-
| 142
| [[Kullanıcı:Swam pl|Swam pl]]
| align="center" | 284
|
|-
| 143
| [[Kullanıcı:Kml ibrahim|Kml ibrahim]]
| align="center" | 275
|
|-
| 144
| [[Kullanıcı:MSchoentgen|MSchoentgen]]
| align="center" | 274
|
|-
| 145
| [[Kullanıcı:Underfell Flowey|Underfell Flowey]]
| align="center" | 270
|
|-
| 146
| [[Kullanıcı:Dbl2010|Dbl2010]]
| align="center" | 264
|
|-
| 147
| [[Kullanıcı:Funda|Funda]]
| align="center" | 260
|
|-
| 148
| [[Kullanıcı:Kebab in my butt|Kebab in my butt]]
| align="center" | 260
|
|-
| 149
| [[Kullanıcı:Biyolojiyabikurdi|Biyolojiyabikurdi]]
| align="center" | 258
|
|-
| 150
| [[Kullanıcı:Arhancelo|Arhancelo]]
| align="center" | 256
|
|-
| 151
| [[Kullanıcı:SLnuray|SLnuray]]
| align="center" | 251
|
|-
| 152
| [[Kullanıcı:Gilthuanas|Gilthuanas]]
| align="center" | 250
|
|-
| 153
| [[Kullanıcı:Yorınçga573|Yorınçga573]]
| align="center" | 249
|
|-
| 154
| [[Kullanıcı:SL.resul akyıldız|SL.resul akyıldız]]
| align="center" | 247
|
|-
| 155
| [[Kullanıcı:SLözgül|SLözgül]]
| align="center" | 246
|
|-
| 156
| [[Kullanıcı:Azxpetro|Azxpetro]]
| align="center" | 244
|
|-
| 157
| [[Kullanıcı:Determinator|Determinator]]
| align="center" | 243
|
|-
| 158
| [[Kullanıcı:Серк.123|Серк.123]]
| align="center" | 243
|
|-
| 159
| [[Kullanıcı:Ceaeven|Ceaeven]]
| align="center" | 240
|
|-
| 160
| [[Kullanıcı:Sihl gülten deveci|Sihl gülten deveci]]
| align="center" | 237
|
|-
| 161
| [[Kullanıcı:Axbyc|Axbyc]]
| align="center" | 236
|
|-
| 162
| [[Kullanıcı:Superyetkin|Superyetkin]]
| align="center" | 235
| arayüz yöneticisi
|-
| 163
| [[Kullanıcı:Wikihez|Wikihez]]
| align="center" | 228
|
|-
| 164
| [[Kullanıcı:SLFatma|SLFatma]]
| align="center" | 227
|
|-
| 165
| [[Kullanıcı:Kmlblg240|Kmlblg240]]
| align="center" | 224
|
|-
| 166
| [[Kullanıcı:Erdemaslancan|Erdemaslancan]]
| align="center" | 224
|
|-
| 167
| [[Kullanıcı:Stml 172|Stml 172]]
| align="center" | 220
|
|-
| 168
| [[Kullanıcı:SLUğurcan|SLUğurcan]]
| align="center" | 219
|
|-
| 169
| [[Kullanıcı:Deknuydt|Deknuydt]]
| align="center" | 217
|
|-
| 170
| [[Kullanıcı:Kwamikagami|Kwamikagami]]
| align="center" | 212
|
|-
| 171
| [[Kullanıcı:Axis09|Axis09]]
| align="center" | 210
|
|-
| 172
| [[Kullanıcı:OSMAN ÇAVUŞLU|OSMAN ÇAVUŞLU]]
| align="center" | 209
|
|-
| 173
| [[Kullanıcı:Public class|Public class]]
| align="center" | 208
|
|-
| 174
| [[Kullanıcı:Aivasedo|Aivasedo]]
| align="center" | 205
|
|-
| 175
| [[Kullanıcı:Sal 390|Sal 390]]
| align="center" | 203
|
|-
| 176
| [[Kullanıcı:Onuralpateş2004|Onuralpateş2004]]
| align="center" | 202
|
|-
| 177
| [[Kullanıcı:Aslan yakup|Aslan yakup]]
| align="center" | 197
|
|-
| 178
| [[Kullanıcı:SLebru|SLebru]]
| align="center" | 197
|
|-
| 179
| [[Kullanıcı:Sal-zeynep|Sal-zeynep]]
| align="center" | 196
|
|-
| 180
| [[Kullanıcı:SLRahman|SLRahman]]
| align="center" | 194
|
|-
| 181
| [[Kullanıcı:Chapultepec|Chapultepec]]
| align="center" | 193
|
|-
| 182
| [[Kullanıcı:Trong Dang|Trong Dang]]
| align="center" | 192
|
|-
| 183
| [[Kullanıcı:Syum90|Syum90]]
| align="center" | 185
|
|-
| 184
| [[Kullanıcı:NURULLAH GÜLDAL|NURULLAH GÜLDAL]]
| align="center" | 183
|
|-
| 185
| [[Kullanıcı:Vikiçizer|Vikiçizer]]
| align="center" | 182
|
|-
| 186
| [[Kullanıcı:MehmedKM|MehmedKM]]
| align="center" | 182
|
|-
| 187
| [[Kullanıcı:Bikarhêner|Bikarhêner]]
| align="center" | 180
|
|-
| 188
| [[Kullanıcı:Şaşılık|Şaşılık]]
| align="center" | 179
|
|-
| 189
| [[Kullanıcı:Felecita|Felecita]]
| align="center" | 176
|
|-
| 190
| [[Kullanıcı:Ddenkel~trwiktionary|Ddenkel~trwiktionary]]
| align="center" | 175
|
|-
| 191
| [[Kullanıcı:Sezinumaykucuk|Sezinumaykucuk]]
| align="center" | 175
|
|-
| 192
| [[Kullanıcı:Sallapattias|Sallapattias]]
| align="center" | 171
|
|-
| 193
| [[Kullanıcı:SLburhantuncer|SLburhantuncer]]
| align="center" | 168
|
|-
| 194
| [[Kullanıcı:Bahattin|Bahattin]]
| align="center" | 168
|
|-
| 195
| [[Kullanıcı:Kml suleakguc|Kml suleakguc]]
| align="center" | 167
|
|-
| 196
| [[Kullanıcı:Sihl ASİYE|Sihl ASİYE]]
| align="center" | 167
|
|-
| 197
| [[Kullanıcı:Mehmetkasımay|Mehmetkasımay]]
| align="center" | 165
|
|-
| 198
| [[Kullanıcı:SLfatma254|SLfatma254]]
| align="center" | 163
|
|-
| 199
| [[Kullanıcı:Yko 235|Yko 235]]
| align="center" | 162
|
|-
| 200
| [[Kullanıcı:Stml 158|Stml 158]]
| align="center" | 159
|
|-
| 201
| [[Kullanıcı:Stml 121|Stml 121]]
| align="center" | 156
|
|-
| 202
| [[Kullanıcı:SLEngin|SLEngin]]
| align="center" | 154
|
|-
| 203
| [[Kullanıcı:Serdar62|Serdar62]]
| align="center" | 154
|
|-
| 204
| [[Kullanıcı:Terryclient|Terryclient]]
| align="center" | 151
|
|-
| 205
| [[Kullanıcı:Czeski Wratek|Czeski Wratek]]
| align="center" | 151
|
|-
| 206
| [[Kullanıcı:Calq|Calq]]
| align="center" | 148
|
|-
| 207
| [[Kullanıcı:Sihl Ramazan Erdöl|Sihl Ramazan Erdöl]]
| align="center" | 146
|
|-
| 208
| [[Kullanıcı:Drabdullayev17|Drabdullayev17]]
| align="center" | 140
|
|-
| 209
| [[Kullanıcı:Lionel Cristiano|Lionel Cristiano]]
| align="center" | 139
|
|-
| 210
| [[Kullanıcı:Hasan Sami|Hasan Sami]]
| align="center" | 138
|
|-
| 211
| [[Kullanıcı:Abuk SABUK|Abuk SABUK]]
| align="center" | 138
|
|-
| 212
| [[Kullanıcı:Dilci|Dilci]]
| align="center" | 137
|
|-
| 213
| [[Kullanıcı:Matiia|Matiia]]
| align="center" | 137
|
|-
| 214
| [[Kullanıcı:SİHL İSA ELER|SİHL İSA ELER]]
| align="center" | 135
|
|-
| 215
| [[Kullanıcı:Ata Kemal Ayaser|Ata Kemal Ayaser]]
| align="center" | 135
|
|-
| 216
| [[Kullanıcı:Emperyan|Emperyan]]
| align="center" | 135
|
|-
| 217
| [[Kullanıcı:Lou|Lou]]
| align="center" | 133
|
|-
| 218
| [[Kullanıcı:Rolby|Rolby]]
| align="center" | 133
|
|-
| 219
| [[Kullanıcı:Peter Berbe|Peter Berbe]]
| align="center" | 133
|
|-
| 220
| [[Kullanıcı:Eminovič|Eminovič]]
| align="center" | 132
|
|-
| 221
| [[Kullanıcı:Hdayetozsoy|Hdayetozsoy]]
| align="center" | 131
|
|-
| 222
| [[Kullanıcı:Fankibiber|Fankibiber]]
| align="center" | 129
|
|-
| 223
| [[Kullanıcı:GerardM|GerardM]]
| align="center" | 125
|
|-
| 224
| [[Kullanıcı:Ka dir 641|Ka dir 641]]
| align="center" | 125
|
|-
| 225
| [[Kullanıcı:Mesutbolukbas|Mesutbolukbas]]
| align="center" | 124
|
|-
| 226
| [[Kullanıcı:SLemine607 10D|SLemine607 10D]]
| align="center" | 122
|
|-
| 227
| [[Kullanıcı:Tarihçi Selo|Tarihçi Selo]]
| align="center" | 120
|
|-
| 228
| [[Kullanıcı:Lambiam|Lambiam]]
| align="center" | 120
|
|-
| 229
| [[Kullanıcı:Dodecaplex|Dodecaplex]]
| align="center" | 120
|
|-
| 230
| [[Kullanıcı:Vay~trwiktionary|Vay~trwiktionary]]
| align="center" | 119
|
|-
| 231
| [[Kullanıcı:Yavuz Atasever|Yavuz Atasever]]
| align="center" | 118
|
|-
| 232
| [[Kullanıcı:Metal Militia|Metal Militia]]
| align="center" | 117
|
|-
| 233
| [[Kullanıcı:Aarp65|Aarp65]]
| align="center" | 117
|
|-
| 234
| [[Kullanıcı:Eyüp Türküm|Eyüp Türküm]]
| align="center" | 117
|
|-
| 235
| [[Kullanıcı:Kalem.metin|Kalem.metin]]
| align="center" | 117
|
|-
| 236
| [[Kullanıcı:Mario The PS2 Guy|Mario The PS2 Guy]]
| align="center" | 117
|
|-
| 237
| [[Kullanıcı:Meyegon|Meyegon]]
| align="center" | 115
|
|-
| 238
| [[Kullanıcı:Cûndûllah el-Kurdî|Cûndûllah el-Kurdî]]
| align="center" | 115
|
|-
| 239
| [[Kullanıcı:Minorax|Minorax]]
| align="center" | 115
|
|-
| 240
| [[Kullanıcı:Baris6161TURK|Baris6161TURK]]
| align="center" | 113
|
|-
| 241
| [[Kullanıcı:Kml 207aysegül|Kml 207aysegül]]
| align="center" | 112
|
|-
| 242
| [[Kullanıcı:SLseda|SLseda]]
| align="center" | 111
|
|-
| 243
| [[Kullanıcı:Kmoksy|Kmoksy]]
| align="center" | 111
|
|-
| 244
| [[Kullanıcı:LesChloroformistes|LesChloroformistes]]
| align="center" | 110
|
|-
| 245
| [[Kullanıcı:Ladsgroup|Ladsgroup]]
| align="center" | 109
|
|-
| 246
| [[Kullanıcı:Müntesib|Müntesib]]
| align="center" | 109
|
|-
| 247
| [[Kullanıcı:Kmlrbabalik|Kmlrbabalik]]
| align="center" | 108
|
|-
| 248
| [[Kullanıcı:Kmlblg86|Kmlblg86]]
| align="center" | 108
|
|-
| 249
| [[Kullanıcı:S htk 117|S htk 117]]
| align="center" | 105
|
|-
| 250
| [[Kullanıcı:SLGamze|SLGamze]]
| align="center" | 105
|
|-
| 251
| [[Kullanıcı:Doğru Tercüman|Doğru Tercüman]]
| align="center" | 105
|
|-
| 252
| [[Kullanıcı:Küçükdere iöo gülay|Küçükdere iöo gülay]]
| align="center" | 104
|
|-
| 253
| [[Kullanıcı:Gülşah|Gülşah]]
| align="center" | 102
|
|-
| 254
| [[Kullanıcı:Balamax|Balamax]]
| align="center" | 102
|
|-
| 255
| [[Kullanıcı:Ormanbotanigi|Ormanbotanigi]]
| align="center" | 101
|
|-
| 256
| [[Kullanıcı:Stml 176|Stml 176]]
| align="center" | 101
|
|-
| 257
| [[Kullanıcı:Stml 165|Stml 165]]
| align="center" | 101
|
|-
| 258
| [[Kullanıcı:Kmlblg399|Kmlblg399]]
| align="center" | 100
|
|-
| 259
| [[Kullanıcı:Nerval|Nerval]]
| align="center" | 99
|
|-
| 260
| [[Kullanıcı:Stml 72|Stml 72]]
| align="center" | 98
|
|-
| 261
| [[Kullanıcı:Stryn|Stryn]]
| align="center" | 97
|
|-
| 262
| [[Kullanıcı:Küçükdere iöo sinan|Küçükdere iöo sinan]]
| align="center" | 96
|
|-
| 263
| [[Kullanıcı:Dünya vatandaşı|Dünya vatandaşı]]
| align="center" | 95
|
|-
| 264
| [[Kullanıcı:Muhammet yazıcı|Muhammet yazıcı]]
| align="center" | 95
|
|-
| 265
| [[Kullanıcı:SİHL 729|SİHL 729]]
| align="center" | 95
|
|-
| 266
| [[Kullanıcı:Xorasan|Xorasan]]
| align="center" | 95
|
|-
| 267
| [[Kullanıcı:Fiilçeker|Fiilçeker]]
| align="center" | 94
|
|-
| 268
| [[Kullanıcı:RadiX|RadiX]]
| align="center" | 94
|
|-
| 269
| [[Kullanıcı:Muallim Fatih|Muallim Fatih]]
| align="center" | 94
|
|-
| 270
| [[Kullanıcı:Marrovi|Marrovi]]
| align="center" | 94
|
|-
| 271
| [[Kullanıcı:Spacebirdy|Spacebirdy]]
| align="center" | 93
|
|-
| 272
| [[Kullanıcı:MhmtÖ|MhmtÖ]]
| align="center" | 93
|
|-
| 273
| [[Kullanıcı:Berr.in|Berr.in]]
| align="center" | 92
|
|-
| 274
| [[Kullanıcı:SL-busenur.523|SL-busenur.523]]
| align="center" | 91
|
|-
| 275
| [[Kullanıcı:SLİpek|SLİpek]]
| align="center" | 90
|
|-
| 276
| [[Kullanıcı:Kmlblgözlem|Kmlblgözlem]]
| align="center" | 89
|
|-
| 277
| [[Kullanıcı:Cavlak-FS|Cavlak-FS]]
| align="center" | 88
|
|-
| 278
| [[Kullanıcı:Azminwan|Azminwan]]
| align="center" | 87
|
|-
| 279
| [[Kullanıcı:Moonpulsar|Moonpulsar]]
| align="center" | 87
|
|-
| 280
| [[Kullanıcı:Stml 171|Stml 171]]
| align="center" | 86
|
|-
| 281
| [[Kullanıcı:Turkmen|Turkmen]]
| align="center" | 85
|
|-
| 282
| [[Kullanıcı:Xyz...|Xyz...]]
| align="center" | 84
|
|-
| 283
| [[Kullanıcı:Stml 117|Stml 117]]
| align="center" | 83
|
|-
| 284
| [[Kullanıcı:Juliancolton|Juliancolton]]
| align="center" | 81
|
|-
| 285
| [[Kullanıcı:Ludwig20|Ludwig20]]
| align="center" | 81
|
|-
| 286
| [[Kullanıcı:2004ateş|2004ateş]]
| align="center" | 81
|
|-
| 287
| [[Kullanıcı:Süleymanbedir|Süleymanbedir]]
| align="center" | 80
|
|-
| 288
| [[Kullanıcı:Kıdemli|Kıdemli]]
| align="center" | 80
|
|-
| 289
| [[Kullanıcı:Karabat Kuşu|Karabat Kuşu]]
| align="center" | 79
|
|-
| 290
| [[Kullanıcı:SAML VE EML CEMİL BAYRAM|SAML VE EML CEMİL BAYRAM]]
| align="center" | 79
|
|-
| 291
| [[Kullanıcı:Semlaml111|Semlaml111]]
| align="center" | 79
|
|-
| 292
| [[Kullanıcı:SEML Turan ÇAKIR|SEML Turan ÇAKIR]]
| align="center" | 78
|
|-
| 293
| [[Kullanıcı:Küçükdere iöo celilakyürek|Küçükdere iöo celilakyürek]]
| align="center" | 78
|
|-
| 294
| [[Kullanıcı:SLemine613|SLemine613]]
| align="center" | 78
|
|-
| 295
| [[Kullanıcı:Dokuz sekiz|Dokuz sekiz]]
| align="center" | 78
|
|-
| 296
| [[Kullanıcı:Sayonzei|Sayonzei]]
| align="center" | 78
|
|-
| 297
| [[Kullanıcı:İlhanbiskin|İlhanbiskin]]
| align="center" | 77
|
|-
| 298
| [[Kullanıcı:İsmailhoca|İsmailhoca]]
| align="center" | 77
|
|-
| 299
| [[Kullanıcı:Kmlblg80|Kmlblg80]]
| align="center" | 77
|
|-
| 300
| [[Kullanıcı:Masseman|Masseman]]
| align="center" | 76
|
|-
| 301
| [[Kullanıcı:Ridvanu|Ridvanu]]
| align="center" | 75
|
|-
| 302
| [[Kullanıcı:Ege yalcin~trwiktionary|Ege yalcin~trwiktionary]]
| align="center" | 75
|
|-
| 303
| [[Kullanıcı:İbrhm.kuru|İbrhm.kuru]]
| align="center" | 73
|
|-
| 304
| [[Kullanıcı:Mustafa Eşitgen|Mustafa Eşitgen]]
| align="center" | 73
|
|-
| 305
| [[Kullanıcı:Fagus|Fagus]]
| align="center" | 73
|
|-
| 306
| [[Kullanıcı:SL Pelin|SL Pelin]]
| align="center" | 72
|
|-
| 307
| [[Kullanıcı:Seninbey~trwiktionary|Seninbey~trwiktionary]]
| align="center" | 72
|
|-
| 308
| [[Kullanıcı:EmrahÖ|EmrahÖ]]
| align="center" | 72
|
|-
| 309
| [[Kullanıcı:BitikciKebbenek|BitikciKebbenek]]
| align="center" | 72
|
|-
| 310
| [[Kullanıcı:Emree4|Emree4]]
| align="center" | 71
|
|-
| 311
| [[Kullanıcı:Kontrolcu|Kontrolcu]]
| align="center" | 71
|
|-
| 312
| [[Kullanıcı:Nebra|Nebra]]
| align="center" | 71
|
|-
| 313
| [[Kullanıcı:Pembe karadeniz|Pembe karadeniz]]
| align="center" | 71
|
|-
| 314
| [[Kullanıcı:Stml 147|Stml 147]]
| align="center" | 70
|
|-
| 315
| [[Kullanıcı:SEMLNazımKURŞUN|SEMLNazımKURŞUN]]
| align="center" | 70
|
|-
| 316
| [[Kullanıcı:Giresunlu1993|Giresunlu1993]]
| align="center" | 70
|
|-
| 317
| [[Kullanıcı:Plenumchamber~trwiktionary|Plenumchamber~trwiktionary]]
| align="center" | 69
|
|-
| 318
| [[Kullanıcı:~2026-19042-98|~2026-19042-98]]
| align="center" | 69
|
|-
| 319
| [[Kullanıcı:Rock on She|Rock on She]]
| align="center" | 67
|
|-
| 320
| [[Kullanıcı:SLSerkan|SLSerkan]]
| align="center" | 65
|
|-
| 321
| [[Kullanıcı:Karduelis|Karduelis]]
| align="center" | 65
|
|-
| 322
| [[Kullanıcı:Evrenkoruyan|Evrenkoruyan]]
| align="center" | 64
|
|-
| 323
| [[Kullanıcı:Adanalınacak|Adanalınacak]]
| align="center" | 64
|
|-
| 324
| [[Kullanıcı:Zontollektuel|Zontollektuel]]
| align="center" | 64
|
|-
| 325
| [[Kullanıcı:Hapşu|Hapşu]]
| align="center" | 63
|
|-
| 326
| [[Kullanıcı:Dixtosa|Dixtosa]]
| align="center" | 63
|
|-
| 327
| [[Kullanıcı:El.wikt.user|El.wikt.user]]
| align="center" | 62
|
|-
| 328
| [[Kullanıcı:SL özge üstün|SL özge üstün]]
| align="center" | 62
|
|-
| 329
| [[Kullanıcı:Sal hasanilhan|Sal hasanilhan]]
| align="center" | 61
|
|-
| 330
| [[Kullanıcı:Prenses|Prenses]]
| align="center" | 60
|
|-
| 331
| [[Kullanıcı:Tofeiku|Tofeiku]]
| align="center" | 60
|
|-
| 332
| [[Kullanıcı:Sihl Murat|Sihl Murat]]
| align="center" | 59
|
|-
| 333
| [[Kullanıcı:Renamed user 1e23409a06e0b7922c2dfc98dde51974|Renamed user 1e23409a06e0b7922c2dfc98dde51974]]
| align="center" | 59
|
|-
| 334
| [[Kullanıcı:Arnavutsezgin|Arnavutsezgin]]
| align="center" | 58
|
|-
| 335
| [[Kullanıcı:Erkan Yilmaz|Erkan Yilmaz]]
| align="center" | 58
|
|-
| 336
| [[Kullanıcı:Galibibülent|Galibibülent]]
| align="center" | 57
|
|-
| 337
| [[Kullanıcı:S.orsev.dilek soydan|S.orsev.dilek soydan]]
| align="center" | 57
|
|-
| 338
| [[Kullanıcı:Stml 183|Stml 183]]
| align="center" | 57
|
|-
| 339
| [[Kullanıcı:Buzulkuşu|Buzulkuşu]]
| align="center" | 57
|
|-
| 340
| [[Kullanıcı:Spanier|Spanier]]
| align="center" | 57
|
|-
| 341
| [[Kullanıcı:LejyonerZaza|LejyonerZaza]]
| align="center" | 57
|
|-
| 342
| [[Kullanıcı:SAL 329|SAL 329]]
| align="center" | 56
|
|-
| 343
| [[Kullanıcı:S htk 428|S htk 428]]
| align="center" | 56
|
|-
| 344
| [[Kullanıcı:Stml 161|Stml 161]]
| align="center" | 56
|
|-
| 345
| [[Kullanıcı:HASAN ÖZGÜREN EML|HASAN ÖZGÜREN EML]]
| align="center" | 56
|
|-
| 346
| [[Kullanıcı:SLesra|SLesra]]
| align="center" | 56
|
|-
| 347
| [[Kullanıcı:SLhalit540|SLhalit540]]
| align="center" | 56
|
|-
| 348
| [[Kullanıcı:Stultiwikia|Stultiwikia]]
| align="center" | 56
|
|-
| 349
| [[Kullanıcı:LisafBia|LisafBia]]
| align="center" | 56
|
|-
| 350
| [[Kullanıcı:Quinlan83|Quinlan83]]
| align="center" | 56
|
|-
| 351
| [[Kullanıcı:Şegirt|Şegirt]]
| align="center" | 56
|
|-
| 352
| [[Kullanıcı:TAKASUGI Shinji|TAKASUGI Shinji]]
| align="center" | 55
|
|-
| 353
| [[Kullanıcı:Sarvaturi~trwiktionary|Sarvaturi~trwiktionary]]
| align="center" | 55
|
|-
| 354
| [[Kullanıcı:Ks.Tahd|Ks.Tahd]]
| align="center" | 55
|
|-
| 355
| [[Kullanıcı:Darkhorn~trwiktionary|Darkhorn~trwiktionary]]
| align="center" | 54
|
|-
| 356
| [[Kullanıcı:Samleml özgür aydın|Samleml özgür aydın]]
| align="center" | 53
|
|-
| 357
| [[Kullanıcı:Elvire|Elvire]]
| align="center" | 53
|
|-
| 358
| [[Kullanıcı:İmmortalance|İmmortalance]]
| align="center" | 53
|
|-
| 359
| [[Kullanıcı:Tehonk|Tehonk]]
| align="center" | 53
|
|-
| 360
| [[Kullanıcı:NotBot|NotBot]]
| align="center" | 52
|
|-
| 361
| [[Kullanıcı:SHTK.ARZU|SHTK.ARZU]]
| align="center" | 52
|
|-
| 362
| [[Kullanıcı:SLOĞUZHAN|SLOĞUZHAN]]
| align="center" | 52
|
|-
| 363
| [[Kullanıcı:WikimediaNotifier|WikimediaNotifier]]
| align="center" | 52
|
|-
| 364
| [[Kullanıcı:Gufosowa|Gufosowa]]
| align="center" | 52
|
|-
| 365
| [[Kullanıcı:たまほめ|たまほめ]]
| align="center" | 51
|
|-
| 366
| [[Kullanıcı:Tembelejderha|Tembelejderha]]
| align="center" | 50
|
|-
| 367
| [[Kullanıcı:Kml Nurcan|Kml Nurcan]]
| align="center" | 50
|
|-
| 368
| [[Kullanıcı:Elton|Elton]]
| align="center" | 50
|
|-
| 369
| [[Kullanıcı:Ozgurhatic|Ozgurhatic]]
| align="center" | 50
|
|-
| 370
| [[Kullanıcı:Tıbbiye|Tıbbiye]]
| align="center" | 50
|
|-
| 371
| [[Kullanıcı:Sepkenki|Sepkenki]]
| align="center" | 50
|
|-
| 372
| [[Kullanıcı:Świętokrzyskie3|Świętokrzyskie3]]
| align="center" | 50
|
|-
| 373
| [[Kullanıcı:Stml 188|Stml 188]]
| align="center" | 48
|
|-
| 374
| [[Kullanıcı:Maderibeyza|Maderibeyza]]
| align="center" | 48
|
|-
| 375
| [[Kullanıcı:Müftülükarif|Müftülükarif]]
| align="center" | 48
|
|-
| 376
| [[Kullanıcı:Spl908455|Spl908455]]
| align="center" | 48
|
|-
| 377
| [[Kullanıcı:Gökçe Yörük|Gökçe Yörük]]
| align="center" | 48
|
|-
| 378
| [[Kullanıcı:Greywolf28|Greywolf28]]
| align="center" | 48
|
|-
| 379
| [[Kullanıcı:Sal ruveyda|Sal ruveyda]]
| align="center" | 47
|
|-
| 380
| [[Kullanıcı:S htk 145|S htk 145]]
| align="center" | 47
|
|-
| 381
| [[Kullanıcı:Cmrncntn|Cmrncntn]]
| align="center" | 47
|
|-
| 382
| [[Kullanıcı:Doruk Salancı~trwiktionary|Doruk Salancı~trwiktionary]]
| align="center" | 46
|
|-
| 383
| [[Kullanıcı:Seml abdullah ege|Seml abdullah ege]]
| align="center" | 46
|
|-
| 384
| [[Kullanıcı:SACAK ALİFATİH|SACAK ALİFATİH]]
| align="center" | 46
|
|-
| 385
| [[Kullanıcı:Adml polat çelik 156|Adml polat çelik 156]]
| align="center" | 46
|
|-
| 386
| [[Kullanıcı:Luckas Blade|Luckas Blade]]
| align="center" | 46
|
|-
| 387
| [[Kullanıcı:BurstPower|BurstPower]]
| align="center" | 46
|
|-
| 388
| [[Kullanıcı:Lord Leatherface~trwiktionary|Lord Leatherface~trwiktionary]]
| align="center" | 45
|
|-
| 389
| [[Kullanıcı:Mambet|Mambet]]
| align="center" | 45
|
|-
| 390
| [[Kullanıcı:Öz Türkçe|Öz Türkçe]]
| align="center" | 45
|
|-
| 391
| [[Kullanıcı:JAn Dudík|JAn Dudík]]
| align="center" | 45
|
|-
| 392
| [[Kullanıcı:Billinghurst|Billinghurst]]
| align="center" | 45
|
|-
| 393
| [[Kullanıcı:Praxidicae|Praxidicae]]
| align="center" | 45
|
|-
| 394
| [[Kullanıcı:MathXplore|MathXplore]]
| align="center" | 45
|
|-
| 395
| [[Kullanıcı:Etimoloji|Etimoloji]]
| align="center" | 45
|
|-
| 396
| [[Kullanıcı:Zbutie3.14|Zbutie3.14]]
| align="center" | 45
|
|-
| 397
| [[Kullanıcı:Brightt11|Brightt11]]
| align="center" | 45
|
|-
| 398
| [[Kullanıcı:Anon0004|Anon0004]]
| align="center" | 45
|
|-
| 399
| [[Kullanıcı:Sunshine23|Sunshine23]]
| align="center" | 44
|
|-
| 400
| [[Kullanıcı:BD2412|BD2412]]
| align="center" | 44
|
|-
| 401
| [[Kullanıcı:Wisar12|Wisar12]]
| align="center" | 44
|
|-
| 402
| [[Kullanıcı:Turkittihadcemiyeti|Turkittihadcemiyeti]]
| align="center" | 44
|
|-
| 403
| [[Kullanıcı:Hoo man|Hoo man]]
| align="center" | 43
|
|-
| 404
| [[Kullanıcı:Ghybu|Ghybu]]
| align="center" | 43
|
|-
| 405
| [[Kullanıcı:Zolgoyo|Zolgoyo]]
| align="center" | 43
|
|-
| 406
| [[Kullanıcı:Aktas5561|Aktas5561]]
| align="center" | 42
|
|-
| 407
| [[Kullanıcı:Wiki13|Wiki13]]
| align="center" | 42
|
|-
| 408
| [[Kullanıcı:Alexander Mikhalenko|Alexander Mikhalenko]]
| align="center" | 42
|
|-
| 409
| [[Kullanıcı:Orsev.i.o.ayşe kibaroğlu|Orsev.i.o.ayşe kibaroğlu]]
| align="center" | 41
|
|-
| 410
| [[Kullanıcı:Stml 168|Stml 168]]
| align="center" | 41
|
|-
| 411
| [[Kullanıcı:Sihl selim|Sihl selim]]
| align="center" | 41
|
|-
| 412
| [[Kullanıcı:V. Doğan Günay~trwiktionary|V. Doğan Günay~trwiktionary]]
| align="center" | 41
|
|-
| 413
| [[Kullanıcı:Filanca|Filanca]]
| align="center" | 41
|
|-
| 414
| [[Kullanıcı:Nurettincerek|Nurettincerek]]
| align="center" | 41
|
|-
| 415
| [[Kullanıcı:Umitduranist|Umitduranist]]
| align="center" | 41
|
|-
| 416
| [[Kullanıcı:Wentayan|Wentayan]]
| align="center" | 41
|
|-
| 417
| [[Kullanıcı:Ahmetcatalkaya|Ahmetcatalkaya]]
| align="center" | 40
|
|-
| 418
| [[Kullanıcı:Ahulusi|Ahulusi]]
| align="center" | 40
|
|-
| 419
| [[Kullanıcı:Savh|Savh]]
| align="center" | 40
|
|-
| 420
| [[Kullanıcı:Bulgu|Bulgu]]
| align="center" | 40
|
|-
| 421
| [[Kullanıcı:Dijan|Dijan]]
| align="center" | 39
|
|-
| 422
| [[Kullanıcı:Saçak fatmamandirali|Saçak fatmamandirali]]
| align="center" | 39
|
|-
| 423
| [[Kullanıcı:Yabancı|Yabancı]]
| align="center" | 39
|
|-
| 424
| [[Kullanıcı:Cekli829|Cekli829]]
| align="center" | 39
|
|-
| 425
| [[Kullanıcı:Vanished user Xorisdtbdfgonugyfs|Vanished user Xorisdtbdfgonugyfs]]
| align="center" | 39
|
|-
| 426
| [[Kullanıcı:Mathonius|Mathonius]]
| align="center" | 39
|
|-
| 427
| [[Kullanıcı:FocalPoint|FocalPoint]]
| align="center" | 39
|
|-
| 428
| [[Kullanıcı:Vincent Vega|Vincent Vega]]
| align="center" | 39
|
|-
| 429
| [[Kullanıcı:Samuele2002|Samuele2002]]
| align="center" | 39
|
|-
| 430
| [[Kullanıcı:CanerDemirci281993|CanerDemirci281993]]
| align="center" | 39
|
|-
| 431
| [[Kullanıcı:Eusbarbosa|Eusbarbosa]]
| align="center" | 38
|
|-
| 432
| [[Kullanıcı:Açak osman|Açak osman]]
| align="center" | 38
|
|-
| 433
| [[Kullanıcı:Araklı|Araklı]]
| align="center" | 38
|
|-
| 434
| [[Kullanıcı:Oylm mat|Oylm mat]]
| align="center" | 37
|
|-
| 435
| [[Kullanıcı:Yalhi|Yalhi]]
| align="center" | 37
|
|-
| 436
| [[Kullanıcı:Admlmuhammet alican|Admlmuhammet alican]]
| align="center" | 37
|
|-
| 437
| [[Kullanıcı:SLHakan|SLHakan]]
| align="center" | 37
|
|-
| 438
| [[Kullanıcı:JackPotte|JackPotte]]
| align="center" | 37
|
|-
| 439
| [[Kullanıcı:Onkaimeon|Onkaimeon]]
| align="center" | 37
|
|-
| 440
| [[Kullanıcı:Vanished user 127237|Vanished user 127237]]
| align="center" | 37
|
|-
| 441
| [[Kullanıcı:Aabdullayev851|Aabdullayev851]]
| align="center" | 37
|
|-
| 442
| [[Kullanıcı:Wooze|Wooze]]
| align="center" | 37
|
|-
| 443
| [[Kullanıcı:YBK4|YBK4]]
| align="center" | 37
|
|-
| 444
| [[Kullanıcı:Ykio emelaydın|Ykio emelaydın]]
| align="center" | 36
|
|-
| 445
| [[Kullanıcı:S htk 612|S htk 612]]
| align="center" | 36
|
|-
| 446
| [[Kullanıcı:Flyax|Flyax]]
| align="center" | 36
|
|-
| 447
| [[Kullanıcı:Manco Capac|Manco Capac]]
| align="center" | 36
|
|-
| 448
| [[Kullanıcı:Joseph|Joseph]]
| align="center" | 36
|
|-
| 449
| [[Kullanıcı:Zuzumaykut|Zuzumaykut]]
| align="center" | 36
|
|-
| 450
| [[Kullanıcı:Goktr001|Goktr001]]
| align="center" | 36
|
|-
| 451
| [[Kullanıcı:Rxy|Rxy]]
| align="center" | 36
|
|-
| 452
| [[Kullanıcı:MPF|MPF]]
| align="center" | 36
|
|-
| 453
| [[Kullanıcı:Alperen|Alperen]]
| align="center" | 35
|
|-
| 454
| [[Kullanıcı:S htk 186|S htk 186]]
| align="center" | 35
|
|-
| 455
| [[Kullanıcı:Yonca573|Yonca573]]
| align="center" | 35
|
|-
| 456
| [[Kullanıcı:Tapio Toola|Tapio Toola]]
| align="center" | 35
|
|-
| 457
| [[Kullanıcı:Pinar|Pinar]]
| align="center" | 34
|
|-
| 458
| [[Kullanıcı:Mardetanha|Mardetanha]]
| align="center" | 34
|
|-
| 459
| [[Kullanıcı:Nanahuatl|Nanahuatl]]
| align="center" | 34
|
|-
| 460
| [[Kullanıcı:Yoldasso|Yoldasso]]
| align="center" | 34
|
|-
| 461
| [[Kullanıcı:Java2002|Java2002]]
| align="center" | 34
|
|-
| 462
| [[Kullanıcı:Hasley|Hasley]]
| align="center" | 34
|
|-
| 463
| [[Kullanıcı:Recep Arslanbaş|Recep Arslanbaş]]
| align="center" | 34
|
|-
| 464
| [[Kullanıcı:TugbekOlek|TugbekOlek]]
| align="center" | 33
|
|-
| 465
| [[Kullanıcı:Vese~trwiktionary|Vese~trwiktionary]]
| align="center" | 33
|
|-
| 466
| [[Kullanıcı:Ozyurekli|Ozyurekli]]
| align="center" | 33
|
|-
| 467
| [[Kullanıcı:EsenBoga|EsenBoga]]
| align="center" | 33
|
|-
| 468
| [[Kullanıcı:Golgelerim|Golgelerim]]
| align="center" | 33
|
|-
| 469
| [[Kullanıcı:Sanya3|Sanya3]]
| align="center" | 33
|
|-
| 470
| [[Kullanıcı:Kırmızı renk|Kırmızı renk]]
| align="center" | 33
|
|-
| 471
| [[Kullanıcı:Stml 153|Stml 153]]
| align="center" | 32
|
|-
| 472
| [[Kullanıcı:SLsoner|SLsoner]]
| align="center" | 32
|
|-
| 473
| [[Kullanıcı:KoreanQuoter|KoreanQuoter]]
| align="center" | 32
|
|-
| 474
| [[Kullanıcı:Sungurer|Sungurer]]
| align="center" | 32
|
|-
| 475
| [[Kullanıcı:HestNewDes|HestNewDes]]
| align="center" | 32
|
|-
| 476
| [[Kullanıcı:Sml-hanife1|Sml-hanife1]]
| align="center" | 31
|
|-
| 477
| [[Kullanıcı:SAL 417|SAL 417]]
| align="center" | 31
|
|-
| 478
| [[Kullanıcı:MercanX|MercanX]]
| align="center" | 31
|
|-
| 479
| [[Kullanıcı:Kokoloc|Kokoloc]]
| align="center" | 31
|
|-
| 480
| [[Kullanıcı:Köksarı|Köksarı]]
| align="center" | 30
|
|-
| 481
| [[Kullanıcı:Akkiz|Akkiz]]
| align="center" | 30
|
|-
| 482
| [[Kullanıcı:Mclovinx|Mclovinx]]
| align="center" | 30
|
|-
| 483
| [[Kullanıcı:Talha1481|Talha1481]]
| align="center" | 30
|
|-
| 484
| [[Kullanıcı:Kumanof|Kumanof]]
| align="center" | 30
|
|-
| 485
| [[Kullanıcı:Tenperver|Tenperver]]
| align="center" | 30
|
|-
| 486
| [[Kullanıcı:~2026-22795-35|~2026-22795-35]]
| align="center" | 30
|
|-
| 487
| [[Kullanıcı:Sı 643|Sı 643]]
| align="center" | 29
|
|-
| 488
| [[Kullanıcı:SAMLEML MURAT ÇEBİ|SAMLEML MURAT ÇEBİ]]
| align="center" | 29
|
|-
| 489
| [[Kullanıcı:Kmlblg318|Kmlblg318]]
| align="center" | 29
|
|-
| 490
| [[Kullanıcı:Merube 89|Merube 89]]
| align="center" | 29
|
|-
| 491
| [[Kullanıcı:Hgav|Hgav]]
| align="center" | 29
|
|-
| 492
| [[Kullanıcı:Alsace38|Alsace38]]
| align="center" | 29
|
|-
| 493
| [[Kullanıcı:Dilşo Kardî|Dilşo Kardî]]
| align="center" | 29
|
|-
| 494
| [[Kullanıcı:Ulukan|Ulukan]]
| align="center" | 29
|
|-
| 495
| [[Kullanıcı:Kaan2121|Kaan2121]]
| align="center" | 29
|
|-
| 496
| [[Kullanıcı:Selahattin ilhan|Selahattin ilhan]]
| align="center" | 29
|
|-
| 497
| [[Kullanıcı:Zartatue|Zartatue]]
| align="center" | 29
|
|-
| 498
| [[Kullanıcı:İstiklalistanbul|İstiklalistanbul]]
| align="center" | 29
|
|-
| 499
| [[Kullanıcı:Golanpelorat|Golanpelorat]]
| align="center" | 29
|
|-
| 500
| [[Kullanıcı:Tevfik58|Tevfik58]]
| align="center" | 28
|
|}
</center>
f6stx8j6ajvfe5wlvrnl8x18hjsyr2j
Uygur Türkçesi
0
532748
5658323
3789167
2026-05-15T18:23:38Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658323
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
* {{IPA|dil=tr|/ˈujɡuɾ ˈtyrkt͡cheˈsi/}}
* {{h|dil=tr||Uy|gur Türk|çe|si}}
===Özel ad===
{{tr-özel ad}}
# {{t|dil=tr|diller}} [[Uygurca]]
====Çekimleme====
{{tr-ad-tablo}}
====Üst kavramlar====
* [[Türkçe]]
====Çeviriler====
{{tercüme yönlendirme|Uygur Türkçesi|Uygurca}}
===Ek okumalar===
* {{proje bağlantısı|Vikipedi}}
c5s058wljmo16g6mqzhfe5gdh126fn6
κραγιόν
0
557103
5658448
4551774
2026-05-16T08:19:37Z
MustafaCavlak
59368
/* Yunanca */
5658448
wikitext
text/x-wiki
==Yunanca==
===Köken===
{{nakledilen|el|fr|crayon}}.<ref>{{R:el:MYS}}</ref>
===Söyleniş===
* {{IPA|dil=el|/kɾa.ˈʝon/}}
===Ad===
{{el-ad|n|inv}}
# {{t|dil=el|kozmetik}} [[ruj]]
====Ayrıca bakınız====
* {{b|el|κραγιόνι}}
===Kaynakça===
{{kaynakça}}
i3p7mlb1ksy9rc5lzsif2byjfby1v15
κακό σκυλί ψόφο δεν έχει
0
567525
5658290
4198260
2026-05-15T13:49:20Z
MustafaCavlak
59368
/* Yunanca */
5658290
wikitext
text/x-wiki
==Yunanca==
===Atasözü===
{{başlık başı|el|atasözü|baş=[[κακός|κακό]] [[σκυλί]] [[ψόφος|ψόφο]] [[δεν]] [[έχω|έχει]]}} (''bire bir çevirisi:'' kötü köpeğin ölümü yoktur (kötü köpek ölmez))
# {{t|dil=el|aşağılayıcı ifadeler}} {{şot|Kötü insanların uzun yaşadığını, bir şekilde hayatta kalmayı başardıklarını anlatan söz; kötüler ölmez; iyiler çabuk ölür.}}
5v0qjh6xjbtyhvqws2yeu5gsio26teg
κατάματα
0
571814
5658291
5658222
2026-05-15T13:56:01Z
MustafaCavlak
59368
/* Belirteç */
5658291
wikitext
text/x-wiki
==Yunanca==
===Köken===
{{köken|dil=el|gkm}} {{b|grc|κατάματα}} sözcüğünden devralındı. Morfolojik olarak: {{ön ek|dil=el|κατα}} + {{ek|dil=el|μάτι|α}}.<ref>{{R:el:MYS}}</ref>
===Söyleniş===
* {{IPA|dil=el|/kaˈta.ma.ta/}}
===Belirteç===
{{el-belirteç}}
# [[göz]]lerinin [[iç]]ine {{şerh|bakarak}}
#* {{tanıklık|dil=el|şarkı=Όπως (Ópos)|şarkıcı=Νότης Σφακιανάκης (Nótis Sfakianákis)|albüm=Με αγάπη ό,τι κάνεις (Me agápi ó,ti káneis)|tanıklık=Αρχίσανε να πέφτουν γράμματα<br>κι ο κόσμος έχει σηκωθεί<br>Κοίτα με πες μου το '''κατάματα'''<br>πως η αγάπη μας δεν ζει}}
#* {{tanıklık|dil=el|şarkı=Χαράματα (Charámata)|şarkıcı=Νότης Σφακιανάκης (Nótis Sfakianákis)|albüm=Οι Νότες Είναι 7ψυχες (Oi Nótes Eínai 7psyches)|tanıklık=Να 'ρθεις ξανά χαράματα<br>χωρίς φωνές και κλάματα<br>να 'ρθεις ξανά και να μου πεις<br>το «σ' αγαπώ» '''κατάματα'''<br>να 'ρθεις ξανά χαράματα}}
===Kaynakça===
<references/>
[[Kategori:Bizans Yunancasından devralınan Yunanca sözcükler]]
mb2e8wx7uonkqka7gyqkf5p8jo7p3pi
Urfalı
0
642896
5658338
5657995
2026-05-15T19:57:09Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658338
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{ek|dil=tr|Urfa|li|alt2=-lı}}
===Özel ad===
{{tr-özel ad}}
# [[Şanlıurfa]] ilinden olan kimse; [[Şanlıurfalı]].
#*{{kt|başlık=İzmir Postası'nın Adamları|yazar=Ahmet BÜKE|yayıncı=Kanat Yayınları|yıl=2004|sayfa=25|tanıklık=Bu iki evden sonra başlayan merdivenin sağlı sollu evlerini ise '''Urfalı''', Mardinli yangın yerinden kaçar gibi gelmiş aileler doldurmuştu.|dil=tr}}
# {{özel ad|dil=tr|soyadı}}
====Çekimleme====
{{tr-ad-tablo}}
===Kaynakça===
* {{KYK:TDK}}
mwv3vo6bq5htsvvdqs68swjr9njo3qn
Alemdaroğlu
0
643191
5658328
4828630
2026-05-15T19:22:58Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658328
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{kökenisteniyor}}
===Özel ad===
{{başlık başı|tr|özel ad}}
# {{özel ad|dil=tr|soyadı}}
====Çekimleme====
{{tr-ad-tablo}}
r947yk8osxo04ife75jv9fzqn7fzrg1
Akınözü
0
643219
5658327
4828595
2026-05-15T19:22:19Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658327
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{kökenisteniyor}}
===Özel ad===
{{başlık başı|tr|özel ad}}
# {{özel ad|dil=tr|soyadı}}
====Çekimleme====
{{tr-ad-tablo}}
r947yk8osxo04ife75jv9fzqn7fzrg1
abalourdir
0
881402
5658566
5605900
2026-05-16T10:08:17Z
MustafaCavlak
59368
/* Çekimleme */
5658566
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[sersemletmek]], [[aptallaştırmak]]
====Çekimleme====
{{fr-eylem-ir|abalourd}}
rgjqm6i1erwb5r5nw0tlo4tifi4z0oq
abâtardir
0
881406
5658567
5605907
2026-05-16T10:09:19Z
MustafaCavlak
59368
/* Çekimleme */
5658567
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# soyu / türü [[bozmak]], [[melezleşme]]yle [[nitelik]] [[kaybettirmek]]
#: {{ux|fr|'''abâtardir''' une race|bir ırkı / soyu bozmak}}
# {{mecaz|dil=fr}} [[bozmak]], [[yozlaştırmak]]
#: {{ux|fr|'''abâtardir''' une langue|bir dili yozlaştırmak}}
# {{t|dil=fr|dönüşlü}} [[yozlaşmak]], [[dejenere olmak]]
====Çekimleme====
{{fr-eylem-ir|abâtard}}
3gedz9rm73fdo1kl4jekoa3s9pqvjs0
accomplir
0
881477
5658568
5643554
2026-05-16T10:10:36Z
MustafaCavlak
59368
/* Çekimleme */
5658568
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[gerçekleştirmek]], [[yerine getirmek]], [[tamamlamak]], [[başarmak]]
====Çekimleme====
{{fr-eylem-ir|accompl}}
46z0uscdzae5f9tkhzmfo8oyejgb1aa
apparier
0
881774
5658344
4852200
2026-05-15T20:12:37Z
MustafaCavlak
59368
/* Eylem */
5658344
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[eşleştirmek]], [[çiftlemek]]
====Çekimleme====
{{fr-eylem-er|appari}}
ogw8gstjco79vy108v528541wdgyljd
connecter
0
882649
5658342
4853080
2026-05-15T20:04:07Z
MustafaCavlak
59368
/* Eylem */
5658342
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[bağlamak]], [[bağlantı kurmak]]
====Çekimleme====
{{fr-eylem-er|connect}}
tt13tjr8erihk7612853yckgn3d1jtc
şalgamcı
0
995513
5658362
5656954
2026-05-15T22:02:35Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658362
wikitext
text/x-wiki
==Türkçe==
===Köken===
{{ek|dil=tr|şalgam|ci|alt2=-cı}}
===Söyleniş===
* {{h|dil=tr||şal|gam|cı}}
===Ad===
{{tr-ad}}
# {{t|dil=tr|meslekler}} [[şalgam suyu|Şalgam suyu]] satan kişi.
#*{{mt|dil=tr|dergi=Öküz|başlık=İnönü - Churchill Buluşması ve DSİ Meselesi|yazar=Ekrem Galip YALINER|yıl=1997|sayı=37|sayfa=25
|tanıklık= Gidişatı beğenmeyen İsmet Paşa duruma müdahale etti: "Bakınız, bu '''şalgamcının''' sır vermemesi Türklerin tabiatını gösterir ve bizim de müttefiklere ait sırları diğer devletlere vermeyeceğimizin ispatıdır" diyerek meseleyi kapattı.
}}
#*{{kt|başlık=Dünyanın Bütün Karıncaları|yazar=Cabir ÖZYILDIZ|yayıncı=Vacilando Kitap |yıl=2025|sayfa=49|tanıklık=Dahası at arabaları, tablaları ardında taban tepen '''şalgamcılar''', zerzevat satıcıları, pikaplarını yürüyen mağazaya dönüştürmüş tuhafiyeciler, sele sepet, oyacak, şiş satanlar da geçti.|dil=tr}}
====Çekimleme====
{{tr-ad-tablo}}
laedcmu84bggdshgqkjtmp8yrbj5od4
Şablon:fr-eylem-tablo
10
1007412
5658560
4998881
2026-05-16T09:51:44Z
MustafaCavlak
59368
5658560
wikitext
text/x-wiki
<div class="NavFrame" style="clear:both;">
<div class="NavHead" align="left"> ''{{PAGENAME}}'' eyleminin çekimi </div>
<div class="NavContent">
{| style="background-color: #F8F8F8; border: 1px solid #888;"
|+
|-
| colspan="2" |
! colspan="3" style="text-align: center; background-color: #DDD;" | '''tekil'''
! colspan="3" style="text-align: center; background-color: #DDD;" | '''çoğul'''
|-
| colspan="2" |
| style="background-color: #DDD;" | '''birinci'''
| style="background-color: #DDD;" | '''ikinci'''
| style="background-color: #DDD;" | '''üçüncü'''
| style="background-color: #DDD;" | '''birinci'''
| style="background-color: #DDD;" | '''ikinci'''
| style="background-color: #DDD;" | '''üçüncü'''
|-
| rowspan="5" style="background-color: #ADF; text-align: center;" | '''bildirme kipi'''
| style="background-color: #ADF;" | '''şimdiki zaman'''
| {{l-self|fr|{{{1}}}}}
| {{l-self|fr|{{{2}}}}}
| {{l-self|fr|{{{3}}}}}
| {{l-self|fr|{{{4}}}}}
| {{l-self|fr|{{{5}}}}}
| {{l-self|fr|{{{6}}}}}
|-
| style="background-color: #ADF;" | '''kusurlu geçmiş zaman'''
| {{l-self|fr|{{{7}}}}}
| {{l-self|fr|{{{8}}}}}
| {{l-self|fr|{{{9}}}}}
| {{l-self|fr|{{{10}}}}}
| {{l-self|fr|{{{11}}}}}
| {{l-self|fr|{{{12}}}}}
|-
| style="background-color: #ADF;" | '''basit geçmiş zaman'''
| {{l-self|fr|{{{13}}}}}
| {{l-self|fr|{{{14}}}}}
| {{l-self|fr|{{{15}}}}}
| {{l-self|fr|{{{16}}}}}
| {{l-self|fr|{{{17}}}}}
| {{l-self|fr|{{{18}}}}}
|-
| style="background-color: #ADF;" | '''gelecek zaman'''
| {{l-self|fr|{{{19}}}}}
| {{l-self|fr|{{{20}}}}}
| {{l-self|fr|{{{21}}}}}
| {{l-self|fr|{{{22}}}}}
| {{l-self|fr|{{{23}}}}}
| {{l-self|fr|{{{24}}}}}
|-
| style="background-color: #ADF;" | '''şart'''
| {{l-self|fr|{{{25}}}}}
| {{l-self|fr|{{{26}}}}}
| {{l-self|fr|{{{27}}}}}
| {{l-self|fr|{{{28}}}}}
| {{l-self|fr|{{{29}}}}}
| {{l-self|fr|{{{30}}}}}
|-
| rowspan="2" style="background-color: #ADE; text-align: center;" | '''dilek kipi'''
| style="background-color: #ADE;" | '''şimdiki zaman'''
| {{l-self|fr|{{{31}}}}}
| {{l-self|fr|{{{32}}}}}
| {{l-self|fr|{{{33}}}}}
| {{l-self|fr|{{{34}}}}}
| {{l-self|fr|{{{35}}}}}
| {{l-self|fr|{{{36}}}}}
|-
| style="background-color: #ADE;" | '''kusurlu geçmiş zaman'''
| {{l-self|fr|{{{37}}}}}
| {{l-self|fr|{{{38}}}}}
| {{l-self|fr|{{{39}}}}}
| {{l-self|fr|{{{40}}}}}
| {{l-self|fr|{{{41}}}}}
| {{l-self|fr|{{{42}}}}}
|-
| rowspan="1" style="background-color: #AFD; text-align: center;" | '''emir kipi'''
| style="background-color: #AFD;" | '''şimdiki zaman'''
| —
| {{l-self|fr|{{{43}}}}}
| —
| {{l-self|fr|{{{44}}}}}
| {{l-self|fr|{{{45}}}}}
| —
|-
| rowspan="1" colspan="2" style="background-color: #FFE5B4; text-align: center;" | '''geçmiş zaman ortacı'''
| {{l-self|fr|{{{go}}}}}
|}
{{{not|}}}
</div></div><noinclude>{{belgeleme}}</noinclude>
qryj1zbh3t3bu3981wjgenwpszqepao
5658563
5658560
2026-05-16T09:55:55Z
MustafaCavlak
59368
5658563
wikitext
text/x-wiki
<div class="NavFrame" style="clear:both;">
<div class="NavHead" align="left"> ''{{PAGENAME}}'' eyleminin çekimi </div>
<div class="NavContent">
{| style="background-color: #F8F8F8; border: 1px solid #888;"
|+
|-
| colspan="2" |
! colspan="3" style="text-align: center; background-color: #DDD;" | '''tekil'''
! colspan="3" style="text-align: center; background-color: #DDD;" | '''çoğul'''
|-
| colspan="2" |
| style="background-color: #DDD;" | '''birinci'''
| style="background-color: #DDD;" | '''ikinci'''
| style="background-color: #DDD;" | '''üçüncü'''
| style="background-color: #DDD;" | '''birinci'''
| style="background-color: #DDD;" | '''ikinci'''
| style="background-color: #DDD;" | '''üçüncü'''
|-
| rowspan="5" style="background-color: #ADF; text-align: center;" | '''bildirme kipi'''
| style="background-color: #ADF;" | '''şimdiki zaman'''
| {{l-self|fr|{{{1}}}}}
| {{l-self|fr|{{{2}}}}}
| {{l-self|fr|{{{3}}}}}
| {{l-self|fr|{{{4}}}}}
| {{l-self|fr|{{{5}}}}}
| {{l-self|fr|{{{6}}}}}
|-
| style="background-color: #ADF;" | '''kusurlu geçmiş zaman'''
| {{l-self|fr|{{{7}}}}}
| {{l-self|fr|{{{8}}}}}
| {{l-self|fr|{{{9}}}}}
| {{l-self|fr|{{{10}}}}}
| {{l-self|fr|{{{11}}}}}
| {{l-self|fr|{{{12}}}}}
|-
| style="background-color: #ADF;" | '''basit geçmiş zaman'''
| {{l-self|fr|{{{13}}}}}
| {{l-self|fr|{{{14}}}}}
| {{l-self|fr|{{{15}}}}}
| {{l-self|fr|{{{16}}}}}
| {{l-self|fr|{{{17}}}}}
| {{l-self|fr|{{{18}}}}}
|-
| style="background-color: #ADF;" | '''gelecek zaman'''
| {{l-self|fr|{{{19}}}}}
| {{l-self|fr|{{{20}}}}}
| {{l-self|fr|{{{21}}}}}
| {{l-self|fr|{{{22}}}}}
| {{l-self|fr|{{{23}}}}}
| {{l-self|fr|{{{24}}}}}
|-
| style="background-color: #ADF;" | '''şart'''
| {{l-self|fr|{{{25}}}}}
| {{l-self|fr|{{{26}}}}}
| {{l-self|fr|{{{27}}}}}
| {{l-self|fr|{{{28}}}}}
| {{l-self|fr|{{{29}}}}}
| {{l-self|fr|{{{30}}}}}
|-
| rowspan="2" style="background-color: #ADE; text-align: center;" | '''dilek kipi'''
| style="background-color: #ADE;" | '''şimdiki zaman'''
| {{l-self|fr|{{{31}}}}}
| {{l-self|fr|{{{32}}}}}
| {{l-self|fr|{{{33}}}}}
| {{l-self|fr|{{{34}}}}}
| {{l-self|fr|{{{35}}}}}
| {{l-self|fr|{{{36}}}}}
|-
| style="background-color: #ADE;" | '''kusurlu geçmiş zaman'''
| {{l-self|fr|{{{37}}}}}
| {{l-self|fr|{{{38}}}}}
| {{l-self|fr|{{{39}}}}}
| {{l-self|fr|{{{40}}}}}
| {{l-self|fr|{{{41}}}}}
| {{l-self|fr|{{{42}}}}}
|-
| rowspan="1" style="background-color: #AFD; text-align: center;" | '''emir kipi'''
| style="background-color: #AFD;" | '''şimdiki zaman'''
| —
| {{l-self|fr|{{{43}}}}}
| —
| {{l-self|fr|{{{44}}}}}
| {{l-self|fr|{{{45}}}}}
| —
|-
| rowspan="1" colspan="2" style="background-color: #FFE5B4; text-align: center;" | '''geçmiş zaman ortacı'''
| colspan="6" style="text-align: center; | {{l-self|fr|{{{go}}}}}
|}
{{{not|}}}
</div></div><noinclude>{{belgeleme}}</noinclude>
c2rduql2kcqxi7rkqsgslw8h0mjz12q
5658564
5658563
2026-05-16T10:04:18Z
MustafaCavlak
59368
5658564
wikitext
text/x-wiki
<div class="NavFrame" style="clear:both;">
<div class="NavHead" align="left"> ''{{PAGENAME}}'' eyleminin çekimi </div>
<div class="NavContent">
{|style="background-color: #FFF; border: 1px solid #888;"
! style="background-color: #FFE5B4;" | '''geçmiş zaman ortacı'''
| {{l-self|fr|{{{go}}}}}
|}
{| style="background-color: #F8F8F8; border: 1px solid #888;"
|+
|-
| colspan="2" |
! colspan="3" style="text-align: center; background-color: #DDD;" | '''tekil'''
! colspan="3" style="text-align: center; background-color: #DDD;" | '''çoğul'''
|-
| colspan="2" |
| style="background-color: #DDD;" | '''birinci'''
| style="background-color: #DDD;" | '''ikinci'''
| style="background-color: #DDD;" | '''üçüncü'''
| style="background-color: #DDD;" | '''birinci'''
| style="background-color: #DDD;" | '''ikinci'''
| style="background-color: #DDD;" | '''üçüncü'''
|-
| rowspan="5" style="background-color: #ADF; text-align: center;" | '''bildirme kipi'''
| style="background-color: #ADF;" | '''şimdiki zaman'''
| {{l-self|fr|{{{1}}}}}
| {{l-self|fr|{{{2}}}}}
| {{l-self|fr|{{{3}}}}}
| {{l-self|fr|{{{4}}}}}
| {{l-self|fr|{{{5}}}}}
| {{l-self|fr|{{{6}}}}}
|-
| style="background-color: #ADF;" | '''kusurlu geçmiş zaman'''
| {{l-self|fr|{{{7}}}}}
| {{l-self|fr|{{{8}}}}}
| {{l-self|fr|{{{9}}}}}
| {{l-self|fr|{{{10}}}}}
| {{l-self|fr|{{{11}}}}}
| {{l-self|fr|{{{12}}}}}
|-
| style="background-color: #ADF;" | '''basit geçmiş zaman'''
| {{l-self|fr|{{{13}}}}}
| {{l-self|fr|{{{14}}}}}
| {{l-self|fr|{{{15}}}}}
| {{l-self|fr|{{{16}}}}}
| {{l-self|fr|{{{17}}}}}
| {{l-self|fr|{{{18}}}}}
|-
| style="background-color: #ADF;" | '''gelecek zaman'''
| {{l-self|fr|{{{19}}}}}
| {{l-self|fr|{{{20}}}}}
| {{l-self|fr|{{{21}}}}}
| {{l-self|fr|{{{22}}}}}
| {{l-self|fr|{{{23}}}}}
| {{l-self|fr|{{{24}}}}}
|-
| style="background-color: #ADF;" | '''şart'''
| {{l-self|fr|{{{25}}}}}
| {{l-self|fr|{{{26}}}}}
| {{l-self|fr|{{{27}}}}}
| {{l-self|fr|{{{28}}}}}
| {{l-self|fr|{{{29}}}}}
| {{l-self|fr|{{{30}}}}}
|-
| rowspan="2" style="background-color: #ADE; text-align: center;" | '''dilek kipi'''
| style="background-color: #ADE;" | '''şimdiki zaman'''
| {{l-self|fr|{{{31}}}}}
| {{l-self|fr|{{{32}}}}}
| {{l-self|fr|{{{33}}}}}
| {{l-self|fr|{{{34}}}}}
| {{l-self|fr|{{{35}}}}}
| {{l-self|fr|{{{36}}}}}
|-
| style="background-color: #ADE;" | '''kusurlu geçmiş zaman'''
| {{l-self|fr|{{{37}}}}}
| {{l-self|fr|{{{38}}}}}
| {{l-self|fr|{{{39}}}}}
| {{l-self|fr|{{{40}}}}}
| {{l-self|fr|{{{41}}}}}
| {{l-self|fr|{{{42}}}}}
|-
| rowspan="1" style="background-color: #AFD; text-align: center;" | '''emir kipi'''
| style="background-color: #AFD;" | '''şimdiki zaman'''
| —
| {{l-self|fr|{{{43}}}}}
| —
| {{l-self|fr|{{{44}}}}}
| {{l-self|fr|{{{45}}}}}
| —
|-
|}
{{{not|}}}
</div></div><noinclude>{{belgeleme}}</noinclude>
4amgxq267fxcuvxtyy9hod6xyl224ag
Şablon:fr-eylem-er
10
1007413
5658562
4998882
2026-05-16T09:52:47Z
MustafaCavlak
59368
5658562
wikitext
text/x-wiki
{{fr-eylem-tablo
| {{{1}}}e | {{{1}}}es | {{{1}}}e | {{{1}}}ons | {{{1}}}ez | {{{1}}}ent| {{{1}}}ais | {{{1}}}ais | {{{1}}}ait | {{{1}}}ions | {{{1}}}iez | {{{1}}}aient| {{{1}}}ai | {{{1}}}as | {{{1}}}a | {{{1}}}âmes | {{{1}}}âtes | {{{1}}}èrent| {{{1}}}erai | {{{1}}}eras | {{{1}}}era | {{{1}}}erons | {{{1}}}erez | {{{1}}}eront| {{{1}}}erais | {{{1}}}erais | {{{1}}}erait | {{{1}}}erions | {{{1}}}eriez | {{{1}}}eraient| {{{1}}}e | {{{1}}}es | {{{1}}}e | {{{1}}}ions | {{{1}}}iez | {{{1}}}ent| {{{1}}}asse | {{{1}}}asses | {{{1}}}ât | {{{1}}}assions | {{{1}}}assiez | {{{1}}}assent| {{{1}}}e | {{{1}}}ons | {{{1}}}ez |go={{{1}}}é}}<noinclude>
{{belgeleme}}</noinclude>
6ookni48m9i4otd2g3ccgw08m8nd4lw
αδογμάτιστος
0
1300433
5658347
5353045
2026-05-15T20:16:06Z
MustafaCavlak
59368
/* Ön ad */
5658347
wikitext
text/x-wiki
==Yunanca==
===Ön ad===
{{el-ön ad}}
# [[dogmatik]] olmayan
====Çekimleme====
{{el-çekim-öa|çekim=ος-η-ο|kök=αδογμάτιστ}}
9upfzni9rgbf9qduwnmjhk1388xfg55
ευκολόπιστος
0
1304051
5658349
5356665
2026-05-15T20:26:07Z
MustafaCavlak
59368
/* Ön ad */
5658349
wikitext
text/x-wiki
==Yunanca==
===Ön ad===
{{el-ön ad}}
# kolayca inanan, [[saf]]
====Çekimleme====
{{el-çekim-öa|çekim=ος-η-ο|kök=ευκολόπιστ}}
4v39zvaivteok1t4b01tff7fcosbrtk
εύπιστος
0
1304081
5658350
5356695
2026-05-15T20:26:37Z
MustafaCavlak
59368
5658350
wikitext
text/x-wiki
==Yunanca==
===Ön ad===
{{el-ön ad}}
# kolayca inanan, [[saf]]
====Çekimleme====
{{el-çekim-öa|çekim=ος-η-ο|kök=εύπιστ}}
guedt83f9pks0838g6s6wys1gv1p0j4
Şablon:fr-eylem-ir
10
1319935
5658565
5372686
2026-05-16T10:06:19Z
MustafaCavlak
59368
5658565
wikitext
text/x-wiki
{{fr-eylem-tablo
| {{{1}}}is | {{{1}}}is | {{{1}}}it | {{{1}}}issons | {{{1}}}issez | {{{1}}}issent| {{{1}}}issais | {{{1}}}issais | {{{1}}}issait | {{{1}}}issions | {{{1}}}issiez | {{{1}}}issaient| {{{1}}}is | {{{1}}}is | {{{1}}}it | {{{1}}}îmes | {{{1}}}îtes | {{{1}}}irent| {{{1}}}irai | {{{1}}}iras | {{{1}}}ira | {{{1}}}irons | {{{1}}}irez | {{{1}}}iront| {{{1}}}irais | {{{1}}}irais | {{{1}}}irait | {{{1}}}irions | {{{1}}}iriez | {{{1}}}iraient| {{{1}}}isse | {{{1}}}isses | {{{1}}}isse | {{{1}}}issions | {{{1}}}issiez | {{{1}}}issent| {{{1}}}isse | {{{1}}}isses | {{{1}}}ît | {{{1}}}issions | {{{1}}}issiez | {{{1}}}issent| {{{1}}}is | {{{1}}}issons | {{{1}}}issez | go={{{1}}}i }}<noinclude>
{{belgeleme}}</noinclude>
2ff7bd14we4rfib6utwox2lgr0vdwr3
disperser
0
1454760
5658351
5509764
2026-05-15T20:31:58Z
MustafaCavlak
59368
/* Fransızca */
5658351
wikitext
text/x-wiki
==Fransızca==
===Köken===
{{kökenli|fr|frm|disperser}}, {{kökenli|fr|la|dispersus}}.
===Eylem===
{{fr-eylem}}
# {{t|dil=fr|geçişli}} [[dağıtmak]]
# {{t|dil=fr|dönüşlü}} [[dağılmak]]
====Çekimleme====
{{fr-eylem-er|{{#invoke:string|sub|s={{SAYFAADI}}|j=-3}}}}
4e1jx2uotce3giqxptakxaa4cvownm8
gouailler
0
1455670
5658348
5510680
2026-05-15T20:23:40Z
MustafaCavlak
59368
/* Eylem */
5658348
wikitext
text/x-wiki
==Fransızca==
===Köken===
{{kökenisteniyor}}
===Eylem===
{{fr-eylem}}
# [[alay etmek]]
====Çekimleme====
{{fr-eylem-er|{{#invoke:string|sub|s={{SAYFAADI}}|j=-3}}}}
frey76x5f91qm0hqys738l5cdnta82w
revitaliser
0
1457332
5658482
5512389
2026-05-16T09:01:52Z
MustafaCavlak
59368
/* Fransızca */
5658482
wikitext
text/x-wiki
==Fransızca==
===Köken===
{{ön ek|dil=fr|re|vitaliser}}
===Eylem===
{{fr-eylem}}
# [[yeniden]] [[canlandırmak]]
====Çekimleme====
{{fr-eylem-er|{{#invoke:string|sub|s={{SAYFAADI}}|j=-3}}}}
40i8fljy97iqoelts660hb3kj9glt7l
scannériser
0
1457449
5658343
5512514
2026-05-15T20:07:38Z
MustafaCavlak
59368
/* Fransızca */
5658343
wikitext
text/x-wiki
==Fransızca==
===Köken===
{{ek|dil=fr|scanner|iser}}
===Eylem===
{{fr-eylem}}
# (tarayıcı ile) [[taramak]]
====Çekimleme====
{{fr-eylem-er|{{#invoke:string|sub|s={{SAYFAADI}}|j=-3}}}}
7jckussnuxo0iql5pphfipp3viegdgf
styliser
0
1457629
5658481
5512700
2026-05-16T08:57:30Z
MustafaCavlak
59368
/* Fransızca */
5658481
wikitext
text/x-wiki
==Fransızca==
===Köken===
{{ek|dil=fr|style|iser}}
===Eylem===
{{fr-eylem}}
# [[biçemlemek]], [[stilize etmek]]
====Çekimleme====
{{fr-eylem-er|{{#invoke:string|sub|s={{SAYFAADI}}|j=-3}}}}
izzh4kp0czfk7q387rt8isl6k005h93
arbeitslos
0
1510049
5658409
5565877
2026-05-16T00:07:10Z
MustafaCavlak
59368
/* Ön ad */
5658409
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[işsiz]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
0bpvm5abawfdczua1al1g9anranrqt4
autoritativ
0
1510066
5658415
5565894
2026-05-16T00:15:52Z
MustafaCavlak
59368
5658415
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[otoriter]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
8ng01lnrr1diiqh2hxbakdk33p9xmwl
altfranzösisch
0
1510209
5658404
5566039
2026-05-15T23:57:38Z
MustafaCavlak
59368
/* Ön ad */
5658404
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[Eski Fransızca]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
1dg0bneujxy8j6e0qgh242wx7pxpmwz
atrophisch
0
1510590
5658413
5566433
2026-05-16T00:13:00Z
MustafaCavlak
59368
/* Ön ad */
5658413
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[atrofik]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
tpyapva5mmd5g9abfe7kvsz6wwxzoi6
absolut
0
1510657
5658402
5566503
2026-05-15T23:54:13Z
MustafaCavlak
59368
/* Ön ad */
5658402
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[mutlak]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
===Belirteç===
{{başlık başı|de|belirteç}}
# [[kesinlikle]], [[mutlaka]]
44o6cj0qcqkbi545mcbq0j38xv7umna
weinfarbig
0
1512254
5658377
5568142
2026-05-15T23:33:24Z
MustafaCavlak
59368
/* Ön ad */
5658377
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[şarap]] [[renk|rengi]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
9uwjffq8fh9jsjreymgslixjyu6jq8h
veilchenfarbig
0
1512641
5658372
5568544
2026-05-15T23:28:26Z
MustafaCavlak
59368
/* Ön ad */
5658372
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[menekşe rengi]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
dzm6pi55wr2tmihg3747p3qx7zmjcmp
bakteriell
0
1512795
5658416
5568702
2026-05-16T00:17:40Z
MustafaCavlak
59368
/* Ön ad */
5658416
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[bakteriyel]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
lyvjbgsx4oealdxvoc7sq7ogil6yw41
sechswöchig
0
1513017
5658388
5568929
2026-05-15T23:44:45Z
MustafaCavlak
59368
/* Ön ad */
5658388
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[altı]] [[hafta]] süren, altı [[haftalık]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
7ksrysuc5ecfbqkt49s9bq9pgm14m6q
6-wöchig
0
1513018
5658387
5568930
2026-05-15T23:44:26Z
MustafaCavlak
59368
/* Ön ad */
5658387
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|sechswöchig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
5vaiqrnfn45de913zrqtg80kfm6nkx8
siebenwöchig
0
1513019
5658393
5568931
2026-05-15T23:47:23Z
MustafaCavlak
59368
/* Ön ad */
5658393
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[yedi]] [[hafta]] süren, yedi [[haftalık]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
2d5tlxbuenfnlqy280wdndyavvrvgd3
7-wöchig
0
1513020
5658392
5568932
2026-05-15T23:47:02Z
MustafaCavlak
59368
/* Ön ad */
5658392
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|siebenwöchig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
rhq6o21bz0zojfri3tgy1g7kljbxizh
achtwöchig
0
1513021
5658397
5568933
2026-05-15T23:49:26Z
MustafaCavlak
59368
/* Ön ad */
5658397
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[sekiz]] [[hafta]] süren, sekiz [[haftalık]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
d8495tnt5hck9h64k7acgxsk4xyn3oe
8-wöchig
0
1513022
5658396
5568934
2026-05-15T23:49:03Z
MustafaCavlak
59368
/* Ön ad */
5658396
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|achtwöchig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
jn4cswx4awq4sm6e7zti013f8kegon3
neunwöchig
0
1513023
5658401
5568935
2026-05-15T23:51:15Z
MustafaCavlak
59368
/* Ön ad */
5658401
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[dokuz]] [[hafta]] süren, dokuz [[haftalık]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
ko90uaz5al4ifg52u74m6tycqd8rucu
9-wöchig
0
1513024
5658400
5568936
2026-05-15T23:50:50Z
MustafaCavlak
59368
/* Ön ad */
5658400
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|neunwöchig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
9hegtoeud9x1dp5xbjtt3tdpmccv9i1
einfarbig
0
1513163
5658374
5569085
2026-05-15T23:31:49Z
MustafaCavlak
59368
/* Ön ad */
5658374
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[tek]] [[renkli]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
1skcrs14o11h5a1utebpcyyqvhk6rt5
mehrfarbig
0
1513492
5658373
5569421
2026-05-15T23:31:19Z
MustafaCavlak
59368
/* Ön ad */
5658373
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[çok]] [[renkli]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
2zfin53nw1ibb4os7f8pb9538bcf7qw
armdick
0
1513498
5658410
5569427
2026-05-16T00:08:32Z
MustafaCavlak
59368
/* Ön ad */
5658410
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[kol]] kadar [[kalın]] olan
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
a83lo7fo9vv2pliieu537mplqmt2hje
akephal
0
1513547
5658403
5569477
2026-05-15T23:56:22Z
MustafaCavlak
59368
5658403
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[başsız]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
j7z1vl8kabd0q1ifxkrszbaalk8vfdw
cremefarbig
0
1513805
5658376
5569735
2026-05-15T23:32:52Z
MustafaCavlak
59368
/* Ön ad */
5658376
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[krem rengi]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
t1jhbx83z4tj6fp2fwnmqtyatsgpmfo
andersfarbig
0
1513899
5658378
5569829
2026-05-15T23:33:51Z
MustafaCavlak
59368
/* Ön ad */
5658378
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[farklı]] [[renkli]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
3xea5uc92hk5guxnft9a58oqmvfghet
asexual
0
1513980
5658412
5569910
2026-05-16T00:11:15Z
MustafaCavlak
59368
/* Ön ad */
5658412
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[aseksüel]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
ifpzvrik6gvf2l4saiysdz35x43my5u
sechstägig
0
1515137
5658386
5571269
2026-05-15T23:44:03Z
MustafaCavlak
59368
/* Ön ad */
5658386
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[altı]] [[gün]] süren, altı [[günlük]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
19mhe4915ze7hb967hwq2d02hzvqe0u
siebentägig
0
1515138
5658391
5571271
2026-05-15T23:46:30Z
MustafaCavlak
59368
5658391
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[yedi]] [[gün]] süren, yedi [[günlük]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
oealey8xj18n3l371zmvtnswyhzfjhe
neuntägig
0
1515140
5658399
5571273
2026-05-15T23:50:27Z
MustafaCavlak
59368
/* Ön ad */
5658399
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[dokuz]] [[gün]] süren, dokuz [[günlük]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
a4vxua8yx8tonlrlcvcrc4allcf0wan
arbeitswissenschaftlich
0
1515355
5658408
5571491
2026-05-16T00:06:20Z
MustafaCavlak
59368
/* Ön ad */
5658408
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[ergonomi]] ile ilgili
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
m9iurx95szkg5f88hlm12iyduobes9a
amateurwissenschaftlich
0
1515370
5658405
5571506
2026-05-15T23:59:09Z
MustafaCavlak
59368
5658405
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[amatör]] [[bilimsel]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
0kx19sa72uhsft5gk5jnsetrilbp9dx
zweifarbig
0
1515768
5658375
5571915
2026-05-15T23:32:16Z
MustafaCavlak
59368
/* Ön ad */
5658375
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[iki]] [[renkli]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
op0enpnqljso8pai8r3wobvjuhfe0n7
vierfarbig
0
1515779
5658383
5571926
2026-05-15T23:38:17Z
MustafaCavlak
59368
/* Ön ad */
5658383
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[dört]] [[renkli]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
0qvbmv3i4epdi4weu8lu1auj1e078mi
bleifarbig
0
1516158
5658379
5572321
2026-05-15T23:35:14Z
MustafaCavlak
59368
/* Ön ad */
5658379
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[kurşun rengi]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
0bpog2bqsn2i4c8mgwtwv7owh22xq3s
olivfarbig
0
1516162
5658381
5572325
2026-05-15T23:36:57Z
MustafaCavlak
59368
/* Ön ad */
5658381
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[zeytin rengi]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
rvu7gtfxxnf0m9klp9g8pi3g1h07e75
60-minütig
0
1516554
5658389
5572729
2026-05-15T23:45:33Z
MustafaCavlak
59368
/* Ön ad */
5658389
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|sechzigminütig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
mmalkmmv6da2oz9rgd9hpxrpmycmwc3
6-tägig
0
1516563
5658385
5572738
2026-05-15T23:43:43Z
MustafaCavlak
59368
/* Ön ad */
5658385
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|sechstägig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
nguqs06y03ygh3vyjptvnaiumgaqujo
7-tägig
0
1516564
5658390
5572739
2026-05-15T23:46:12Z
MustafaCavlak
59368
/* Ön ad */
5658390
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|siebentägig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
rns6sd78rud56crp0pkzjlh6wtpuijc
9-tägig
0
1516566
5658398
5572741
2026-05-15T23:50:07Z
MustafaCavlak
59368
/* Ön ad */
5658398
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|neuntägig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
t10n3tohp2abaalum0in2vm23s3y88j
anarchisch
0
1516588
5658406
5572763
2026-05-16T00:00:49Z
MustafaCavlak
59368
/* Ön ad */
5658406
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[anarşik]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
iuxlmevo7eqhllklfl3dxgxohppezj4
zitronenfarbig
0
1516867
5658382
5573050
2026-05-15T23:37:45Z
MustafaCavlak
59368
/* Ön ad */
5658382
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[limon rengi]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
mnca1je5k653pllw00tud3iuj9vm91i
anästhetisch
0
1517326
5658407
5573510
2026-05-16T00:03:05Z
MustafaCavlak
59368
/* Ön ad */
5658407
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[anestezik]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
2gm4zu6gjhnjvoc6yvpb8cwp33vaibt
arrhythmisch
0
1517457
5658411
5573641
2026-05-16T00:09:39Z
MustafaCavlak
59368
/* Ön ad */
5658411
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[aritmik]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
1e571cwsv08cw30d3nw44ouplb7pu8h
fünffarbig
0
1517824
5658371
5574009
2026-05-15T23:26:56Z
MustafaCavlak
59368
/* Ön ad */
5658371
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[beş]] [[renkli]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
3ueep1wetbxdsf1on423pthmfhrt8kr
augenlos
0
1517899
5658414
5574100
2026-05-16T00:13:42Z
MustafaCavlak
59368
/* Ön ad */
5658414
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[gözsüz]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
8f1mhxccvx406o5cyxihynitgt30chx
achtköpfig
0
1518437
5658395
5574648
2026-05-15T23:48:38Z
MustafaCavlak
59368
/* Ön ad */
5658395
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[sekiz]] [[kafalı]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
pd410e3vqiua5i7j5lymwsaknsa1vk9
8-köpfig
0
1518440
5658394
5574651
2026-05-15T23:47:55Z
MustafaCavlak
59368
/* Ön ad */
5658394
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# {{farklı|dil=de|achtköpfig}}
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
opscfinsg050sre9v2qf8hoo0dkrwkb
bananenfarbig
0
1519803
5658380
5576019
2026-05-15T23:35:55Z
MustafaCavlak
59368
/* Ön ad */
5658380
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|-}}
# [[muz]] [[renk|rengi]]
====Çekimleme====
{{de-kıyaslanamayan-tablo}}
dk3b4x2wddwkxeaug3fs8170ajj1zuu
ψόφος
0
1583770
5658289
2026-05-15T13:46:59Z
MustafaCavlak
59368
Yeni sayfa : ==Yunanca== ===Ad=== {{el-ad|e|ψόφοι}} # {{t|dil=el|günlük konuşma dili|halk ağzı}} [[ölüm]] {{belirtici|özellikle hayvanların hastalıktan ölmesi}}<ref>{{R:el:MYS}}</ref> #: {{ux|el|[[κακό σκυλί ψόφο δεν έχει|κακό σκυλί '''ψόφο''' δεν έχει]]}} # {{mecaz|dil=el}} [[dondurucu]] [[soğuk]] #: {{ux|el|Κάνει '''ψόφο''' έξω!|Dışarısı buz gibi!}} ====Çekimleme==== {{el-aE-ος-οι-2a|ψόφ}} ===Kaynakça===...
5658289
wikitext
text/x-wiki
==Yunanca==
===Ad===
{{el-ad|e|ψόφοι}}
# {{t|dil=el|günlük konuşma dili|halk ağzı}} [[ölüm]] {{belirtici|özellikle hayvanların hastalıktan ölmesi}}<ref>{{R:el:MYS}}</ref>
#: {{ux|el|[[κακό σκυλί ψόφο δεν έχει|κακό σκυλί '''ψόφο''' δεν έχει]]}}
# {{mecaz|dil=el}} [[dondurucu]] [[soğuk]]
#: {{ux|el|Κάνει '''ψόφο''' έξω!|Dışarısı buz gibi!}}
====Çekimleme====
{{el-aE-ος-οι-2a|ψόφ}}
===Kaynakça===
<references />
8vi038f7wavxc6hdz0glepfnclswnjt
Şablon:fo-çekim-ad
10
1583771
5658292
2026-05-15T15:16:29Z
MustafaCavlak
59368
Yeni sayfa : <div class="NavFrame" style="width:80%"> <div class="NavHead">''{{{1|{{SAYFAADI}}}}}'' adının çekimi</small></div> <div class="NavContent"> {| class="inflection-table" style="width:100%;text-align:center" |- |width=15% style="background:#FF6FFF" | ! width=43% colspan="2" style="background:#FF6FFF" | tekil ! width=43% colspan="2" style="background:#FF6FFF" | çoğul |- ! bgcolor="#FAE6FA" | ! bgcolor="#FAE6FA"| belirsiz ! bgcolor="#FAE6FA"| belirli ! bgcolor="#FAE6FA"| be...
5658292
wikitext
text/x-wiki
<div class="NavFrame" style="width:80%">
<div class="NavHead">''{{{1|{{SAYFAADI}}}}}'' adının çekimi</small></div>
<div class="NavContent">
{| class="inflection-table" style="width:100%;text-align:center"
|-
|width=15% style="background:#FF6FFF" |
! width=43% colspan="2" style="background:#FF6FFF" | tekil
! width=43% colspan="2" style="background:#FF6FFF" | çoğul
|-
! bgcolor="#FAE6FA" |
! bgcolor="#FAE6FA"| belirsiz
! bgcolor="#FAE6FA"| belirli
! bgcolor="#FAE6FA"| belirsiz
! bgcolor="#FAE6FA"| belirli
|-
! bgcolor="#FAE6FA" | yalın
|bgcolor="#ffffff"| {{l-self|fo|{{{1}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{2}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{3}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{4}}}}}
|-
! bgcolor="#FAE6FA" | belirtme
|bgcolor="#ffffff"| {{l-self|fo|{{{5}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{6}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{7}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{8}}}}}
|-
! bgcolor="#FAE6FA" | yönelme
|bgcolor="#ffffff"| {{l-self|fo|{{{9}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{10}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{11}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{12}}}}}
|-
! bgcolor="#FAE6FA" | tamlayan
|bgcolor="#ffffff"| {{l-self|fo|{{{13}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{14}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{15}}}}}
|bgcolor="#ffffff"| {{l-self|fo|{{{16}}}}}
|}</div></div><noinclude>{{belgeleme}}</noinclude>
7iak6tdlfzngneqnokef8crn9tudgcy
Şablon:fo-çekim-ad-d1
10
1583772
5658293
2026-05-15T15:21:56Z
MustafaCavlak
59368
Yeni sayfa : {{fo-çekim-ad |{{{1}}}a |{{{1}}}an |{{{1}}}ur |{{{1}}}urnar |{{{1}}}u |{{{1}}}una |{{{1}}}ur |{{{1}}}urnar |{{{1}}}u |{{{1}}}uni |{{{1}}}um |{{{1}}}unum |{{{1}}}u |{{{1}}}unnar |{{{1}}}a |{{{1}}}anna }} <noinclude>{{belgeleme}}</noinclude>
5658293
wikitext
text/x-wiki
{{fo-çekim-ad
|{{{1}}}a
|{{{1}}}an
|{{{1}}}ur
|{{{1}}}urnar
|{{{1}}}u
|{{{1}}}una
|{{{1}}}ur
|{{{1}}}urnar
|{{{1}}}u
|{{{1}}}uni
|{{{1}}}um
|{{{1}}}unum
|{{{1}}}u
|{{{1}}}unnar
|{{{1}}}a
|{{{1}}}anna
}}
<noinclude>{{belgeleme}}</noinclude>
6r23mycisdu1ytuf536smmnadqsnfrq
Şablon:fo-ad
10
1583773
5658294
2026-05-15T15:26:27Z
MustafaCavlak
59368
Yeni sayfa : {{başlık başı|fo|ad|baş={{{baş|}}}|c={{#switch:{{{1|}}}|d|n|e={{{1}}}{{#ifeq:{{{2|}}}|-|-p}}|#default=?}}|{{#switch:{{{2|}}}||-=|#default=tamlayan tekil}}|{{{2}}} |{{#if:{{{22|}}}|veya}}|{{{22|}}} |{{#if:{{{222|}}}|veya}}|{{{222|}}} |{{#switch:{{{3|}}}|=|-=sayılamaz|#default={{#ifeq:{{{2}}}|-|tamlayan çoğul|çoğul}}}} |{{#switch:{{{3|}}}|=|-=|#default={{{3}}}}} |{{#if:{{{33|}}}|veya}}|{{{33|}}} |{{#if:{{{333|}}}|veya}}|{{{333|}}} |kat2={{#ifeq:{{{3|}}}|-|sayılamayan...
5658294
wikitext
text/x-wiki
{{başlık başı|fo|ad|baş={{{baş|}}}|c={{#switch:{{{1|}}}|d|n|e={{{1}}}{{#ifeq:{{{2|}}}|-|-p}}|#default=?}}|{{#switch:{{{2|}}}||-=|#default=tamlayan tekil}}|{{{2}}}
|{{#if:{{{22|}}}|veya}}|{{{22|}}}
|{{#if:{{{222|}}}|veya}}|{{{222|}}}
|{{#switch:{{{3|}}}|=|-=sayılamaz|#default={{#ifeq:{{{2}}}|-|tamlayan çoğul|çoğul}}}}
|{{#switch:{{{3|}}}|=|-=|#default={{{3}}}}}
|{{#if:{{{33|}}}|veya}}|{{{33|}}}
|{{#if:{{{333|}}}|veya}}|{{{333|}}}
|kat2={{#ifeq:{{{3|}}}|-|sayılamayan adlar}}
}}<noinclude>{{belgeleme}}</noinclude>
j1et0kddi31ovpbt2eehirww4qqtcuw
5658295
5658294
2026-05-15T15:26:53Z
MustafaCavlak
59368
5658295
wikitext
text/x-wiki
{{başlık başı|fo|ad|baş={{{baş|}}}|c={{#switch:{{{1|}}}|d|n|e={{{1}}}{{#ifeq:{{{2|}}}|-|-p}}|#default=?}}|{{#switch:{{{2|}}}||-=|#default=tamlayan tekil}}|{{{2}}}
|{{#if:{{{22|}}}|veya}}|{{{22|}}}
|{{#if:{{{222|}}}|veya}}|{{{222|}}}
|{{#switch:{{{3|}}}|=|-=sayılamaz|#default={{#ifeq:{{{2}}}|-|tamlayan çoğul|çoğul}}}}
|{{#switch:{{{3|}}}|=|-=|#default={{{3}}}}}
|{{#if:{{{33|}}}|veya}}|{{{33|}}}
|{{#if:{{{333|}}}|veya}}|{{{333|}}}
|kat2={{#ifeq:{{{3|}}}|-|sayılamayan adlar}}
}}<noinclude>[[Kategori:Faroe dili başlık başı şablonları|ad]]{{belgeleme}}</noinclude>
boo7bpa02ijk7vla8ztuauzbt0hvc9o
Kategori:Eski Norsçadan devralınan Faroe dili sözcükler
14
1583774
5658297
2026-05-15T15:27:57Z
MustafaCavlak
59368
Yeni sayfa : {{kategori köken|dil=fo|köken=non|tip=devralınan}}
5658297
wikitext
text/x-wiki
{{kategori köken|dil=fo|köken=non|tip=devralınan}}
9nmc0c8bom1djzss2lzbo9w31iec7gp
Kategori:Faroe dili devralınan sözcükler
14
1583775
5658298
2026-05-15T15:28:15Z
MustafaCavlak
59368
Yeni sayfa : {{kategori söz|dil=fo|söz=devralınan sözcükler}}
5658298
wikitext
text/x-wiki
{{kategori söz|dil=fo|söz=devralınan sözcükler}}
6osdoepynco06te735xoaug6chbh4zy
høku
0
1583776
5658299
2026-05-15T15:29:40Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||indef|acc//dat//gen|t}}
5658299
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||indef|acc//dat//gen|t}}
lzf7stehdmne14xxynm4f5nu7sxhmqx
høkan
0
1583777
5658300
2026-05-15T15:30:12Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||def|nom|t}}
5658300
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||def|nom|t}}
nkfg3w365d98jz2r222noq0uag4pyth
høkuna
0
1583778
5658301
2026-05-15T15:30:34Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||def|acc|t}}
5658301
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||def|acc|t}}
ckh2msllhipv6dlq7c3t7lwsv566r7q
høkuni
0
1583779
5658302
2026-05-15T15:30:59Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||def|dat|t}}
5658302
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||def|dat|t}}
ikgt3ewyv7ob6n70fafj0i9beb6af0j
høkunnar
0
1583780
5658303
2026-05-15T15:31:17Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||def|gen|t}}
5658303
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||def|gen|t}}
raqubxywwkrzmdqabje43ci7yflphi4
høkur
0
1583781
5658304
2026-05-15T15:31:47Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||indef|nom//acc|ç}}
5658304
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||indef|nom//acc|ç}}
e3piub4powjs0lv2mavlziqp5yqnoth
høkum
0
1583782
5658305
2026-05-15T15:32:08Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||indef|dat|ç}}
5658305
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||indef|dat|ç}}
nsmnpcu2qfyq9t9viksm9byoqkprfav
høkurnar
0
1583783
5658306
2026-05-15T15:32:27Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||def|nom//acc|ç}}
5658306
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||def|nom//acc|ç}}
iptwvihcri0ga3v9b7gahd9ah1ch67s
høkunum
0
1583784
5658307
2026-05-15T15:32:51Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||def|dat|ç}}
5658307
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||def|dat|ç}}
mcd5q08byor9ectk8xjbw35b4cn0nhq
høkanna
0
1583785
5658308
2026-05-15T15:33:12Z
MustafaCavlak
59368
Yeni sayfa : ==Faroe dili== ===Ad=== {{başlık başı|fo|çekimli ad}} # {{çekim|dil=fo|høka||def|gen|ç}}
5658308
wikitext
text/x-wiki
==Faroe dili==
===Ad===
{{başlık başı|fo|çekimli ad}}
# {{çekim|dil=fo|høka||def|gen|ç}}
flzabi9tq916ldqytv8ldf0cj5eka8v
Kategori:Fransızca -xion son ekiyle oluşmuş sözcükler
14
1583786
5658341
2026-05-15T19:59:07Z
MustafaCavlak
59368
Yeni sayfa : {{kategori ek|fr|son|-xion}}
5658341
wikitext
text/x-wiki
{{kategori ek|fr|son|-xion}}
5nw0g1tp4sz10yp1vmmukf10hlri0fn
apparions
0
1583787
5658345
2026-05-15T20:14:05Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{çekim|dil=fr|apparier||1ç|pres|ind|;|1ç|imp}}
5658345
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{çekim|dil=fr|apparier||1ç|pres|ind|;|1ç|imp}}
b8s3x2e90bxw7cji14hn2kn2lc6xesq
appariez
0
1583788
5658346
2026-05-15T20:14:39Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{çekim|dil=fr|apparier||2ç|pres|ind|;|2ç|imp}}
5658346
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{çekim|dil=fr|apparier||2ç|pres|ind|;|2ç|imp}}
b0omcfah4cz59n65hxmynmheixjzxj5
ruh çağırmak
0
1583789
5658356
2026-05-15T21:48:20Z
Satirdan kahraman
37401
Yeni sayfa : ==Türkçe== ===Söyleniş=== *{{h|dil=tr||ruh|ça|ğır|mak}} ===Eylem=== {{tr-eylem}} #{{t|dil=tr|mitoloji}} Geçmişten veya gelecekten haber almak amacıyla ölmüş bir kimsenin ruhu olduğuna inanılan bir varlıkla iletişim kurmak. #*{{mt|dil=tr|dergi=Öküz|başlık=Gerçeği Arayanlar|yazar=İhsan Oktay ANAR|yıl=1997|sayı=37|sayfa=17 |tanıklık= Yıllar önce bunlardan biri bana, Mesnevi'yi tamamlamak için bir heyet hazırlayıp Mevlana'nın '''ruhunu çağırdı...
5658356
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
*{{h|dil=tr||ruh|ça|ğır|mak}}
===Eylem===
{{tr-eylem}}
#{{t|dil=tr|mitoloji}} Geçmişten veya gelecekten haber almak amacıyla ölmüş bir kimsenin ruhu olduğuna inanılan bir varlıkla iletişim kurmak.
#*{{mt|dil=tr|dergi=Öküz|başlık=Gerçeği Arayanlar|yazar=İhsan Oktay ANAR|yıl=1997|sayı=37|sayfa=17
|tanıklık= Yıllar önce bunlardan biri bana, Mesnevi'yi tamamlamak için bir heyet hazırlayıp Mevlana'nın '''ruhunu çağırdıklarını''', eserin son cildini böylece kaydedip yayımlamaya çalıştıklarını ileri sürmüştü.
}}
====Çekimleme====
{{tr-eylem-tablo}}
===Kaynakça===
*{{KYK:TDK}}
39soy7bi3dme3qbixebxxhwjkjvr7co
5658357
5658356
2026-05-15T21:48:46Z
Satirdan kahraman
37401
/* */ [[MediaWiki:Gadget-AjaxEdit.js|AjaxDüzenle]] kullanılarak değiştirildi
5658357
wikitext
text/x-wiki
==Türkçe==
===Söyleniş===
*{{h|dil=tr||ruh|ça|ğır|mak}}
===Köken===
*{{birleşik|dil=tr|ruh|çağırmak}}
===Eylem===
{{tr-eylem}}
#{{t|dil=tr|mitoloji}} Geçmişten veya gelecekten haber almak amacıyla ölmüş bir kimsenin ruhu olduğuna inanılan bir varlıkla iletişim kurmak.
#*{{mt|dil=tr|dergi=Öküz|başlık=Gerçeği Arayanlar|yazar=İhsan Oktay ANAR|yıl=1997|sayı=37|sayfa=17
|tanıklık= Yıllar önce bunlardan biri bana, Mesnevi'yi tamamlamak için bir heyet hazırlayıp Mevlana'nın '''ruhunu çağırdıklarını''', eserin son cildini böylece kaydedip yayımlamaya çalıştıklarını ileri sürmüştü.
}}
====Çekimleme====
{{tr-eylem-tablo}}
===Kaynakça===
*{{KYK:TDK}}
m0fhyj77vkjtdiujcw4rhnmh1kef858
farbig
0
1583790
5658384
2026-05-15T23:41:26Z
MustafaCavlak
59368
Yeni sayfa : ==Almanca== ===Ön ad=== {{de-ön ad|farbiger|farbigsten}} # [[renkli]]
5658384
wikitext
text/x-wiki
==Almanca==
===Ön ad===
{{de-ön ad|farbiger|farbigsten}}
# [[renkli]]
rllrhvitfeoqfxax5j89yg7dzkvh27m
QTEs
0
1583791
5658419
2026-05-16T05:16:34Z
MustafaCavlak
59368
Yeni sayfa : ==İngilizce== ===Ad=== {{başlık başı|en|çekimli ad}} # {{ççekim|en|QTE}}
5658419
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{başlık başı|en|çekimli ad}}
# {{ççekim|en|QTE}}
t395hrj10trk9xaqjc7y27b2z03xdef
Kategori:İngilizce % karakterini içeren sözcükler
14
1583792
5658420
2026-05-16T05:17:27Z
MustafaCavlak
59368
Yeni sayfa : {{kategori karakter|dil=en|karakter=%}}
5658420
wikitext
text/x-wiki
{{kategori karakter|dil=en|karakter=%}}
13bef5j3pwnh9onxy2xcywks7vfo6rt
donc
0
1583793
5658421
2026-05-16T05:53:44Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Söyleniş=== * {{IPA|dil=fr|/dɔ̃k/|/dɔ̃/}} * {{ses|dil=fr|Fr-donc.ogg}} * {{ses|dil=fr|LL-Q150 (fra)-GrandCelinien-donc.wav}} * {{ses|dil=fr|LL-Q150 (fra)-LoquaxFR-donc.wav}} * {{ses|dil=fr|LL-Q150 (fra)-Poslovitch-donc.wav}} ===Belirteç=== {{başlık başı|fr|belirteç}} # [[öyleyse]], [[o hâlde]] ===Ek okumalar=== * {{R:fr:TLFi}}
5658421
wikitext
text/x-wiki
==Fransızca==
===Söyleniş===
* {{IPA|dil=fr|/dɔ̃k/|/dɔ̃/}}
* {{ses|dil=fr|Fr-donc.ogg}}
* {{ses|dil=fr|LL-Q150 (fra)-GrandCelinien-donc.wav}}
* {{ses|dil=fr|LL-Q150 (fra)-LoquaxFR-donc.wav}}
* {{ses|dil=fr|LL-Q150 (fra)-Poslovitch-donc.wav}}
===Belirteç===
{{başlık başı|fr|belirteç}}
# [[öyleyse]], [[o hâlde]]
===Ek okumalar===
* {{R:fr:TLFi}}
c9tft7qwhd5952zqy9jddwwyf1z9ba1
κύμινο
0
1583794
5658422
2026-05-16T06:38:24Z
MustafaCavlak
59368
Yeni sayfa : ==Yunanca== ===Ad=== {{el-ad|n}} # [[kimyon]]
5658422
wikitext
text/x-wiki
==Yunanca==
===Ad===
{{el-ad|n}}
# [[kimyon]]
7ckdh0zw0wkdfom7b1axue697ri2441
音
0
1583795
5658423
2026-05-16T06:44:35Z
MustafaCavlak
59368
Yeni sayfa : ==Japonca== {{vikipedi|dil=ja}} ===Kanji=== {{ja-kanji|grade=1|rs=音00}} # [[ses]]
5658423
wikitext
text/x-wiki
==Japonca==
{{vikipedi|dil=ja}}
===Kanji===
{{ja-kanji|grade=1|rs=音00}}
# [[ses]]
38tsq21geqb6wa81q10kmiarrvzbjsd
おん
0
1583796
5658424
2026-05-16T06:45:45Z
MustafaCavlak
59368
Yeni sayfa : ==Japonca== {{ja-bak|オン|音|遠|御|温|恩|怨|隠|穏}}
5658424
wikitext
text/x-wiki
==Japonca==
{{ja-bak|オン|音|遠|御|温|恩|怨|隠|穏}}
ioa2mu0rve0g0olnhxx2zxn5trrtnsq
naifu
0
1583797
5658426
2026-05-16T06:49:43Z
MustafaCavlak
59368
Yeni sayfa : ==Japonca== ===Romanizasyon=== {{ja-romaji}} # {{romanizasyon|dil=ja|ナイフ}}
5658426
wikitext
text/x-wiki
==Japonca==
===Romanizasyon===
{{ja-romaji}}
# {{romanizasyon|dil=ja|ナイフ}}
118u0p2ecgd9bohtjyztyfruj2uubhg
Şablon:ja-eylem
10
1583798
5658427
2026-05-16T06:59:04Z
MustafaCavlak
59368
Yeni sayfa : <includeonly>{{#invoke:ja-başlıkbaşı|göster|ja|eylemler}}</includeonly><noinclude>{{belgeleme}}</noinclude>
5658427
wikitext
text/x-wiki
<includeonly>{{#invoke:ja-başlıkbaşı|göster|ja|eylemler}}</includeonly><noinclude>{{belgeleme}}</noinclude>
7yzdk2d4tnin6zx24a5t9orl82s6aqu
5658428
5658427
2026-05-16T06:59:59Z
MustafaCavlak
59368
5658428
wikitext
text/x-wiki
<includeonly>{{#invoke:ja-başlıkbaşı|show|ja|eylemler}}</includeonly><noinclude>{{belgeleme}}</noinclude>
9cuueb5hxbbk51jyulalp7dwprvoqfd
話す
0
1583799
5658429
2026-05-16T07:03:56Z
MustafaCavlak
59368
Yeni sayfa : ==Japonca== {{ja-kanjitab|はな|yomi=kun}} ===Söyleniş=== {{ja-söyleniş|はなす|ak=2|ak_kaynak=NHK}} ===Eylem=== {{ja-eylem|はなす|tip=1|ç=both}} # [[konuşmak]] ===Kaynakça=== <references />
5658429
wikitext
text/x-wiki
==Japonca==
{{ja-kanjitab|はな|yomi=kun}}
===Söyleniş===
{{ja-söyleniş|はなす|ak=2|ak_kaynak=NHK}}
===Eylem===
{{ja-eylem|はなす|tip=1|ç=both}}
# [[konuşmak]]
===Kaynakça===
<references />
9skchijo28bujhop9yhkahy3087iekk
5658430
5658429
2026-05-16T07:04:13Z
MustafaCavlak
59368
/* Eylem */
5658430
wikitext
text/x-wiki
==Japonca==
{{ja-kanjitab|はな|yomi=kun}}
===Söyleniş===
{{ja-söyleniş|はなす|ak=2|ak_kaynak=NHK}}
===Eylem===
{{ja-eylem|はなす}}
# [[konuşmak]]
===Kaynakça===
<references />
erhmhizy7cs4iidy78r8ags5w1rt4mw
はなす
0
1583800
5658431
2026-05-16T07:05:36Z
MustafaCavlak
59368
Yeni sayfa : ==Japonca== {{ja-bak|話す|放す|離す}}
5658431
wikitext
text/x-wiki
==Japonca==
{{ja-bak|話す|放す|離す}}
oy6hobw1tik0tr07mdsgtg6si4s88x9
сейчас
0
1583801
5658434
2026-05-16T07:34:22Z
MustafaCavlak
59368
Yeni sayfa : ==Rusça== ===Belirteç=== {{başlık başı|ru|belirteç|baş=сейча́с}} # [[şimdi]], [[şu anda]]
5658434
wikitext
text/x-wiki
==Rusça==
===Belirteç===
{{başlık başı|ru|belirteç|baş=сейча́с}}
# [[şimdi]], [[şu anda]]
qv1buckbjlviesdcixggfwjwepdkvgq
подождать
0
1583802
5658435
2026-05-16T07:38:37Z
MustafaCavlak
59368
Yeni sayfa : ==Rusça== ===Söyleniş=== * {{ses|dil=ru|Ru-подождать.ogg}} ===Eylem=== {{ru-eylem|подожда́ть|pf|impf=ждать}} # [[beklemek]]
5658435
wikitext
text/x-wiki
==Rusça==
===Söyleniş===
* {{ses|dil=ru|Ru-подождать.ogg}}
===Eylem===
{{ru-eylem|подожда́ть|pf|impf=ждать}}
# [[beklemek]]
bs9wa4qb87139isy6g8kwte8m5d9iqa
ждать
0
1583803
5658436
2026-05-16T07:40:27Z
MustafaCavlak
59368
Yeni sayfa : ==Rusça== ===Söyleniş=== * {{ses|dil=ru|Ru-ждать.ogg}} * {{ses|dil=ru|Ru-ждать .ogg}} ===Eylem=== {{ru-eylem|ждать|impf|pf=подожда́ть}} # [[beklemek]]
5658436
wikitext
text/x-wiki
==Rusça==
===Söyleniş===
* {{ses|dil=ru|Ru-ждать.ogg}}
* {{ses|dil=ru|Ru-ждать .ogg}}
===Eylem===
{{ru-eylem|ждать|impf|pf=подожда́ть}}
# [[beklemek]]
oeho5brchsi36z113h4a1b75t5rbjcn
𒌨𒁇𒊏
0
1583804
5658437
2026-05-16T07:49:25Z
MustafaCavlak
59368
Yeni sayfa : ==Sümerce== ===Ad=== {{başlık başı|sux|ad|ç=ur-bar-ra /urbarak/}} # {{t|dil=sux|köpekgiller}} [[kurt]]
5658437
wikitext
text/x-wiki
==Sümerce==
===Ad===
{{başlık başı|sux|ad|ç=ur-bar-ra /urbarak/}}
# {{t|dil=sux|köpekgiller}} [[kurt]]
6vbm0gmjz66v30qn38dlwx2o8mszc4k
Kategori:Sümercede köpekgiller
14
1583805
5658438
2026-05-16T07:50:51Z
MustafaCavlak
59368
Yeni sayfa : {{kategori konu|dil=sux|konu=köpekgiller}}
5658438
wikitext
text/x-wiki
{{kategori konu|dil=sux|konu=köpekgiller}}
1ci9lhv5owy24f6lxfmjrholz7vvwqq
Kategori:Sümercede yırtıcı memeliler
14
1583806
5658439
2026-05-16T07:51:11Z
MustafaCavlak
59368
Yeni sayfa : {{kategori konu|dil=sux|konu=yırtıcı memeliler}}
5658439
wikitext
text/x-wiki
{{kategori konu|dil=sux|konu=yırtıcı memeliler}}
m320nsw6fq1uxutrj7md4hqyi6dnr2w
чанта
0
1583807
5658440
2026-05-16T08:03:29Z
MustafaCavlak
59368
Yeni sayfa : ==Bulgarca== {{vikipedi|dil=bg}} ===Köken=== {{nakledilen|bg|ota|چانطه|ç=çanta}}, {{kökenli|ota|fa|تنچه}}. ===Ad=== {{başlık başı|bg|ad|baş=ча́нта|c=d}} # [[çanta]] ===Ek okumalar=== * {{R:bg:Leksit}}
5658440
wikitext
text/x-wiki
==Bulgarca==
{{vikipedi|dil=bg}}
===Köken===
{{nakledilen|bg|ota|چانطه|ç=çanta}}, {{kökenli|ota|fa|تنچه}}.
===Ad===
{{başlık başı|bg|ad|baş=ча́нта|c=d}}
# [[çanta]]
===Ek okumalar===
* {{R:bg:Leksit}}
dmnbn0ixzu60jvn0ke6c1g141tyjj89
5658441
5658440
2026-05-16T08:03:40Z
MustafaCavlak
59368
/* Köken */
5658441
wikitext
text/x-wiki
==Bulgarca==
{{vikipedi|dil=bg}}
===Köken===
{{nakledilen|bg|ota|چانطه|ç=çanta}}, {{kökenli|bg|fa|تنچه}}.
===Ad===
{{başlık başı|bg|ad|baş=ча́нта|c=d}}
# [[çanta]]
===Ek okumalar===
* {{R:bg:Leksit}}
m6to2wvly6fg314cp3amf4dvokch5vk
Kategori:Farsça kökenli Bulgarca sözcükler
14
1583808
5658442
2026-05-16T08:04:56Z
MustafaCavlak
59368
Yeni sayfa : {{kategori köken|dil=bg|köken=fa}}
5658442
wikitext
text/x-wiki
{{kategori köken|dil=bg|köken=fa}}
eaobr60v4hi8vam4bi5itkal4k4zyuy
Kategori:Güneybatı İran dilleri kökenli Bulgarca sözcükler
14
1583809
5658443
2026-05-16T08:07:58Z
MustafaCavlak
59368
Yeni sayfa : {{kategori köken|dil=bg|köken=ira-swi}}
5658443
wikitext
text/x-wiki
{{kategori köken|dil=bg|köken=ira-swi}}
38iricd89cmg3cnmjp764udw5rm1d9b
Kategori:Batı İran dilleri kökenli Bulgarca sözcükler
14
1583810
5658444
2026-05-16T08:08:11Z
MustafaCavlak
59368
Yeni sayfa : {{kategori köken|dil=bg|köken=ira-wes}}
5658444
wikitext
text/x-wiki
{{kategori köken|dil=bg|köken=ira-wes}}
imzjqqyebcjeu0zgo432gcvafoaae3j
Kategori:İran dilleri kökenli Bulgarca sözcükler
14
1583811
5658445
2026-05-16T08:08:22Z
MustafaCavlak
59368
Yeni sayfa : {{kategori köken|dil=bg|köken=ira}}
5658445
wikitext
text/x-wiki
{{kategori köken|dil=bg|köken=ira}}
ohtgsahjaxilnfm70ad5b717mdb3ucb
Kategori:Hint-İran dilleri kökenli Bulgarca sözcükler
14
1583812
5658446
2026-05-16T08:08:35Z
MustafaCavlak
59368
Yeni sayfa : {{kategori köken|dil=bg|köken=iir}}
5658446
wikitext
text/x-wiki
{{kategori köken|dil=bg|köken=iir}}
fylbyk9978boln5cbonus7qus12avvi
κραγιόνι
0
1583813
5658449
2026-05-16T08:22:55Z
MustafaCavlak
59368
Yeni sayfa : ==Yunanca== ===Ad=== {{el-ad|n|κραγιόνια}} # [[boya kalemi]] ====Çekimleme==== {{el-aN-ι-ια-2b|κραγιόν|κραγιον}} ====Ayrıca bakınız==== * {{b|el|κραγιόν}} ===Ek okumalar=== * {{R:el:MYS}}
5658449
wikitext
text/x-wiki
==Yunanca==
===Ad===
{{el-ad|n|κραγιόνια}}
# [[boya kalemi]]
====Çekimleme====
{{el-aN-ι-ια-2b|κραγιόν|κραγιον}}
====Ayrıca bakınız====
* {{b|el|κραγιόν}}
===Ek okumalar===
* {{R:el:MYS}}
hpwale20sutrs443uidj1u0x23v0vh1
plombs
0
1583814
5658451
2026-05-16T08:26:58Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|plomb}}
5658451
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|plomb}}
kzrz3y47nni0vg1d11s0a7kvdpqowse
connexions
0
1583815
5658452
2026-05-16T08:28:08Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|connexion}}
5658452
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|connexion}}
t85bya2gum9uqez75g59s0iwqx8aiy6
éthers
0
1583816
5658453
2026-05-16T08:28:44Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|éther}}
5658453
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|éther}}
b9ofo3k5xh2kyjwhazu1glz4vjia777
immobilités
0
1583817
5658455
2026-05-16T08:29:43Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|immobilité}}
5658455
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|immobilité}}
dkb87wx15b39ntnkwokhmq7mhobutal
cœmetières
0
1583818
5658456
2026-05-16T08:30:51Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|cœmetière}}
5658456
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|cœmetière}}
625bpbyb2k7qlmlcpdy5dfi6lzml5e5
cimetières
0
1583819
5658457
2026-05-16T08:31:29Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|cimetière}}
5658457
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|cimetière}}
4sne1jtqpr9e8d1a8j1vq9s1q9r8svh
armes nucléaires
0
1583820
5658458
2026-05-16T08:32:30Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{ççekim|fr|arme nucléaire}}
5658458
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{ççekim|fr|arme nucléaire}}
tjr0bnh6isvgb05llqbgdnd5tm9fubb
papiers carbone
0
1583821
5658459
2026-05-16T08:33:13Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{ççekim|fr|papier carbone}}
5658459
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{ççekim|fr|papier carbone}}
4jzcj3b4pl8a89t4fj7ss6ecwvd0vpq
papiers
0
1583822
5658460
2026-05-16T08:33:46Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|papier}}
5658460
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|papier}}
7eb5vlu2fujm2a9jhpbsczd03rhtc4c
strangulations
0
1583823
5658462
2026-05-16T08:34:50Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|strangulation}} ==İngilizce== ===Ad=== {{başlık başı|en|çekimli ad}} # {{çoğulu|dil=en|strangulation}}
5658462
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|strangulation}}
==İngilizce==
===Ad===
{{başlık başı|en|çekimli ad}}
# {{çoğulu|dil=en|strangulation}}
mbscv0h1f6cuvoamhpcw9nzinspe37s
pistolets à eau
0
1583824
5658464
2026-05-16T08:35:53Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{ççekim|fr|pistolet à eau}}
5658464
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{ççekim|fr|pistolet à eau}}
pw9ij0n0qpf5iec3ewacy5ghbrh13yx
hackeurs
0
1583825
5658465
2026-05-16T08:36:42Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|hackeur}}
5658465
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|hackeur}}
l4al13dzm52tf082cxzya6w3uczyvi1
philologues
0
1583826
5658466
2026-05-16T08:37:50Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|philologue}}
5658466
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|philologue}}
gsgmuir3b5xbt2auve5cj3ok2xba9zl
essieux
0
1583827
5658467
2026-05-16T08:38:31Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|essieu}}
5658467
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|essieu}}
dab1a3nsw301z13utcfptvp4sfgaho1
javels
0
1583828
5658468
2026-05-16T08:38:57Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|javel}}
5658468
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|javel}}
hfsntfcea2cq9wkaxeojmae0v7qclmc
dommages
0
1583829
5658469
2026-05-16T08:39:59Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|dommage}}
5658469
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|dommage}}
6fcq39tohkaoki93jr3w6yb8gvkxo4t
blocages
0
1583830
5658470
2026-05-16T08:40:31Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|blocage}}
5658470
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|blocage}}
54xrvtmm4f28lbrjx5vwdqk8yvxzyjb
convois
0
1583831
5658471
2026-05-16T08:40:53Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|convoi}}
5658471
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|convoi}}
hbgfcnuj4799wgfbkpc0lvg1pa53ylp
inimitiés
0
1583832
5658472
2026-05-16T08:41:54Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|inimitié}}
5658472
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|inimitié}}
7qptwtjyuxjm8j8kbt53ml6o7ynz0zr
étiquettes
0
1583833
5658473
2026-05-16T08:42:20Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|étiquette}}
5658473
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|étiquette}}
oot9bhqcmq3o1onyfnk1r06seze7k7f
admirateurs
0
1583834
5658474
2026-05-16T08:43:11Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|admirateur}}
5658474
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|admirateur}}
2pl75chrpcp4rt51i2zcvc6iemn5cmc
additifs
0
1583835
5658475
2026-05-16T08:44:02Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|additif}}
5658475
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|additif}}
q3kwbo5m5k8o5li14n2gkdu0zsoi1eg
cheveux
0
1583836
5658476
2026-05-16T08:45:51Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Ad=== {{başlık başı|fr|çekimli ad}} # {{çoğulu|dil=fr|cheveu}}: [[saç]]
5658476
wikitext
text/x-wiki
==Fransızca==
===Ad===
{{başlık başı|fr|çekimli ad}}
# {{çoğulu|dil=fr|cheveu}}: [[saç]]
te9ix31crp244y71f166s3229urc6rt
agaanstsiin yiltązhí dijoolígíí
0
1583837
5658477
2026-05-16T08:50:02Z
MustafaCavlak
59368
Yeni sayfa : ==Navahoca== ===Ad=== {{başlık başı|nv|ad|baş=[[agaanstsiin]] [[yiltązh|yiltązhí]] [[dijool|dijoolígíí]]}} # {{t|dil=nv|müzik aletleri}} [[mandolin]]
5658477
wikitext
text/x-wiki
==Navahoca==
===Ad===
{{başlık başı|nv|ad|baş=[[agaanstsiin]] [[yiltązh|yiltązhí]] [[dijool|dijoolígíí]]}}
# {{t|dil=nv|müzik aletleri}} [[mandolin]]
mvidzdmfu2psbn86kx642n128qf2ccl
agaanstsiin yiltązhí názhahígíí
0
1583838
5658478
2026-05-16T08:51:43Z
MustafaCavlak
59368
Yeni sayfa : ==Navahoca== ===Ad=== {{başlık başı|nv|ad|baş=[[agaanstsiin]] [[yiltązh|yiltązhí]] [[názhah|názhahígíí]]}} # {{t|dil=nv|müzik aletleri}} [[arp]]
5658478
wikitext
text/x-wiki
==Navahoca==
===Ad===
{{başlık başı|nv|ad|baş=[[agaanstsiin]] [[yiltązh|yiltązhí]] [[názhah|názhahígíí]]}}
# {{t|dil=nv|müzik aletleri}} [[arp]]
49p0fhfxs1ysoen3dxfolgty9q1pcgh
agaanstsiin yiltązhí nímazígíí
0
1583839
5658479
2026-05-16T08:53:10Z
MustafaCavlak
59368
Yeni sayfa : ==Navahoca== ===Ad=== {{başlık başı|nv|ad|baş=[[agaanstsiin]] [[yiltązh|yiltązhí]] [[nímaz|nímazígíí]]}} # {{t|dil=nv|müzik aletleri}} [[banjo]]
5658479
wikitext
text/x-wiki
==Navahoca==
===Ad===
{{başlık başı|nv|ad|baş=[[agaanstsiin]] [[yiltązh|yiltązhí]] [[nímaz|nímazígíí]]}}
# {{t|dil=nv|müzik aletleri}} [[banjo]]
bfshguxj7cgq35lf5vcs8hklvauch5a
agaanstsiin yiltązhí yázhí
0
1583840
5658480
2026-05-16T08:54:13Z
MustafaCavlak
59368
Yeni sayfa : ==Navahoca== ===Ad=== {{başlık başı|nv|ad|baş=[[agaanstsiin]] [[yiltązh|yiltązhí]] [[yázhí]]}} # {{t|dil=nv|müzik aletleri}} [[ukulele]]
5658480
wikitext
text/x-wiki
==Navahoca==
===Ad===
{{başlık başı|nv|ad|baş=[[agaanstsiin]] [[yiltązh|yiltązhí]] [[yázhí]]}}
# {{t|dil=nv|müzik aletleri}} [[ukulele]]
malgez9wev05lhzvz5l15au8i6gj8fi
vitaliser
0
1583841
5658483
2026-05-16T09:02:39Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{fr-eylem}} # [[canlandırmak]] ====Çekimleme==== {{fr-eylem-er|vitalis}}
5658483
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[canlandırmak]]
====Çekimleme====
{{fr-eylem-er|vitalis}}
btqez72kuebm17bdpdfs2x0tq6hcd6l
5658484
5658483
2026-05-16T09:03:42Z
MustafaCavlak
59368
/* Eylem */
5658484
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[canlandırmak]], [[canlılık]] [[vermek]]
====Çekimleme====
{{fr-eylem-er|vitalis}}
a0bdmavu3b31k3m2st4wjr7db3o8iw1
vitalise
0
1583842
5658485
2026-05-16T09:04:08Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658485
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalises
0
1583843
5658486
2026-05-16T09:04:24Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658486
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisons
0
1583844
5658487
2026-05-16T09:04:40Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658487
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisez
0
1583845
5658488
2026-05-16T09:04:52Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658488
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisent
0
1583846
5658489
2026-05-16T09:05:00Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658489
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisais
0
1583847
5658490
2026-05-16T09:05:10Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658490
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisait
0
1583848
5658491
2026-05-16T09:05:19Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658491
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisions
0
1583849
5658492
2026-05-16T09:05:29Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658492
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisiez
0
1583850
5658493
2026-05-16T09:05:42Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658493
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisaient
0
1583851
5658494
2026-05-16T09:05:51Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658494
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisai
0
1583852
5658495
2026-05-16T09:05:59Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658495
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisas
0
1583853
5658496
2026-05-16T09:06:08Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658496
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisa
0
1583854
5658497
2026-05-16T09:06:17Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658497
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisâmes
0
1583855
5658498
2026-05-16T09:06:27Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658498
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisâtes
0
1583856
5658499
2026-05-16T09:06:34Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658499
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisèrent
0
1583857
5658500
2026-05-16T09:06:43Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658500
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliserai
0
1583858
5658501
2026-05-16T09:06:53Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658501
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliseras
0
1583859
5658502
2026-05-16T09:07:02Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658502
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisera
0
1583860
5658503
2026-05-16T09:07:11Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658503
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliserons
0
1583861
5658504
2026-05-16T09:07:20Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658504
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliserez
0
1583862
5658505
2026-05-16T09:07:30Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658505
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliseront
0
1583863
5658506
2026-05-16T09:07:40Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658506
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliserais
0
1583864
5658507
2026-05-16T09:07:51Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658507
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliserait
0
1583865
5658508
2026-05-16T09:08:06Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658508
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliserions
0
1583866
5658509
2026-05-16T09:08:13Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658509
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliseriez
0
1583867
5658510
2026-05-16T09:08:24Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658510
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitaliseraient
0
1583868
5658511
2026-05-16T09:08:48Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658511
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisasse
0
1583869
5658512
2026-05-16T09:09:25Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658512
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisasses
0
1583870
5658513
2026-05-16T09:09:35Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658513
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisât
0
1583871
5658514
2026-05-16T09:09:43Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658514
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisassions
0
1583872
5658515
2026-05-16T09:09:51Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658515
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisassiez
0
1583873
5658516
2026-05-16T09:09:58Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658516
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
vitalisassent
0
1583874
5658517
2026-05-16T09:10:07Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658517
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiser
0
1583875
5658518
2026-05-16T09:17:31Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{fr-eylem}} # [[aseksüel]] yapmak, [[aseksüelleştirmek]] ====Çekimleme==== {{fr-eylem-er|asexuelis}}
5658518
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[aseksüel]] yapmak, [[aseksüelleştirmek]]
====Çekimleme====
{{fr-eylem-er|asexuelis}}
d4uf4tm8yt3gbc1udg036awvyoi5we7
5658520
5658518
2026-05-16T09:18:09Z
MustafaCavlak
59368
/* Çekimleme */
5658520
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[aseksüel]] yapmak, [[aseksüelleştirmek]]
====Çekimleme====
{{fr-eylem-er|asexualis}}
slk3s9tiez5rydvmroy6u0x7qkp1pdn
asexualise
0
1583876
5658519
2026-05-16T09:17:57Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658519
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
5658521
5658519
2026-05-16T09:18:31Z
MustafaCavlak
59368
MustafaCavlak, [[asexuelise]] sayfasını [[asexualise]] sayfasına yönlendirme olmaksızın taşıdı: Hatalı başlıkla adlandırılmış sayfa
5658519
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualises
0
1583877
5658522
2026-05-16T09:18:48Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658522
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisons
0
1583878
5658523
2026-05-16T09:18:58Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658523
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisez
0
1583879
5658524
2026-05-16T09:19:06Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658524
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisent
0
1583880
5658525
2026-05-16T09:19:14Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658525
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisais
0
1583881
5658526
2026-05-16T09:19:22Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658526
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisait
0
1583882
5658527
2026-05-16T09:19:30Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658527
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisions
0
1583883
5658528
2026-05-16T09:19:38Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658528
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisiez
0
1583884
5658529
2026-05-16T09:19:46Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658529
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisaient
0
1583885
5658530
2026-05-16T09:19:56Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658530
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisai
0
1583886
5658531
2026-05-16T09:20:05Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658531
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisas
0
1583887
5658532
2026-05-16T09:20:13Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658532
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisa
0
1583888
5658533
2026-05-16T09:20:22Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658533
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisâmes
0
1583889
5658534
2026-05-16T09:20:30Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658534
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisâtes
0
1583890
5658535
2026-05-16T09:20:37Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658535
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisèrent
0
1583891
5658536
2026-05-16T09:20:45Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658536
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiserai
0
1583892
5658537
2026-05-16T09:20:53Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658537
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiseras
0
1583893
5658538
2026-05-16T09:21:01Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658538
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisera
0
1583894
5658539
2026-05-16T09:21:09Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658539
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiserons
0
1583895
5658540
2026-05-16T09:21:17Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658540
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiserez
0
1583896
5658541
2026-05-16T09:21:27Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658541
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiseront
0
1583897
5658542
2026-05-16T09:21:35Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658542
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiserais
0
1583898
5658543
2026-05-16T09:21:48Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658543
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiserait
0
1583899
5658544
2026-05-16T09:21:59Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658544
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiserions
0
1583900
5658545
2026-05-16T09:22:08Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658545
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiseriez
0
1583901
5658546
2026-05-16T09:22:17Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658546
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualiseraient
0
1583902
5658547
2026-05-16T09:22:27Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658547
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisasse
0
1583903
5658548
2026-05-16T09:22:38Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658548
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisasses
0
1583904
5658549
2026-05-16T09:22:47Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658549
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisât
0
1583905
5658550
2026-05-16T09:22:55Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658550
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisassions
0
1583906
5658551
2026-05-16T09:23:04Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658551
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisassiez
0
1583907
5658552
2026-05-16T09:23:12Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658552
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
asexualisassent
0
1583908
5658553
2026-05-16T09:23:20Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{başlık başı|fr|çekimli eylem}} # {{fr-er-çekimi}}
5658553
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{başlık başı|fr|çekimli eylem}}
# {{fr-er-çekimi}}
glk3gdmpoq0czn2kwos4x2iw5b3te37
a-sexualiser
0
1583909
5658554
2026-05-16T09:26:35Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{fr-eylem}} # {{farklı|dil=fr|asexualiser}} ====Çekimleme==== {{fr-eylem-er|a-sexualis}}
5658554
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# {{farklı|dil=fr|asexualiser}}
====Çekimleme====
{{fr-eylem-er|a-sexualis}}
e4rcnfp1agf519gtim3qdko24ibnyb8
2mander
0
1583910
5658555
2026-05-16T09:30:24Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{fr-eylem}} # {{t|dil=fr|internet jargonu}} {{farklı|dil=fr|demander}} ====Çekimleme==== {{fr-eylem-er|2mand}}
5658555
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# {{t|dil=fr|internet jargonu}} {{farklı|dil=fr|demander}}
====Çekimleme====
{{fr-eylem-er|2mand}}
f4625t7rzgfu4reoikzqor7x9k1w7fn
Kategori:Fransızca internet jargonu
14
1583911
5658556
2026-05-16T09:30:50Z
MustafaCavlak
59368
Yeni sayfa : {{kategori söz|dil=fr|söz=internet jargonu}}
5658556
wikitext
text/x-wiki
{{kategori söz|dil=fr|söz=internet jargonu}}
9ewppm9b177cwuetzbb7t8njk0p4m0g
abrahamiser
0
1583912
5658557
2026-05-16T09:35:01Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{fr-eylem}} # [[İbrahimî]] özellik kazandırmak, İbrahimîleştirmek ====Çekimleme==== {{fr-eylem-er|abrahamis}}
5658557
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[İbrahimî]] özellik kazandırmak, İbrahimîleştirmek
====Çekimleme====
{{fr-eylem-er|abrahamis}}
d1pv777omvdpbsibom4k71aojhngvdp
accessibiliser
0
1583913
5658558
2026-05-16T09:37:08Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{fr-eylem}} # [[erişilebilir]] hâle getirmek, erişilebilir kılmak ====Çekimleme==== {{fr-eylem-er|accessibilis}}
5658558
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# [[erişilebilir]] hâle getirmek, erişilebilir kılmak
====Çekimleme====
{{fr-eylem-er|accessibilis}}
l0wl688j0fgfdghldf0d9ckqn32xfvy
acromégaliser
0
1583914
5658559
2026-05-16T09:39:53Z
MustafaCavlak
59368
Yeni sayfa : ==Fransızca== ===Eylem=== {{fr-eylem}} # {{t|dil=fr|dönüşlü|tıp}} [[akromegali]] [[olmak]], akromegali hastalığına yakalanmak ====Çekimleme==== {{fr-eylem-er|acromégalis}} ===Ek okumalar=== * {{R:fr:TLFi}}
5658559
wikitext
text/x-wiki
==Fransızca==
===Eylem===
{{fr-eylem}}
# {{t|dil=fr|dönüşlü|tıp}} [[akromegali]] [[olmak]], akromegali hastalığına yakalanmak
====Çekimleme====
{{fr-eylem-er|acromégalis}}
===Ek okumalar===
* {{R:fr:TLFi}}
s394t7soym6qwj43sruwwy6hwxbmmg5
Kullanıcı:Ahmesn14
2
1583915
5658561
2026-05-16T09:52:15Z
Ahmesn14
66142
Yeni sayfa : {{Babel|tr|az-4|ota-1|en-3|crh-2|Latn|Cyrl|Arab|Grek}} <br><p> Merhabalar! Ben aslında [[Türkiye]]'de yaşayan, Türk olan bir vatandaşım. Aslında [[Vikisözlük]]'e katılma sebebim [[Ön-Türkçe]] ile yaptığım araştırmalardı. Araştırırken bu siteyi keşfettim ve dedim ki uluslararası sözlük hem de [[Vikipedi]] bizzat yapmış. Aslında eski dillerle birlikte genel olarak diğer [[Türk dilleri]]ne de ilgiliyim. Ayrıca kendi oluşturduğum bir dil de var, ad...
5658561
wikitext
text/x-wiki
{{Babel|tr|az-4|ota-1|en-3|crh-2|Latn|Cyrl|Arab|Grek}}
<br><p>
Merhabalar! Ben aslında [[Türkiye]]'de yaşayan, Türk olan bir vatandaşım. Aslında [[Vikisözlük]]'e katılma sebebim [[Ön-Türkçe]] ile yaptığım araştırmalardı. Araştırırken bu siteyi keşfettim ve dedim ki uluslararası sözlük hem de [[Vikipedi]] bizzat yapmış. Aslında eski dillerle birlikte genel olarak diğer [[Türk dilleri]]ne de ilgiliyim. Ayrıca kendi oluşturduğum bir dil de var, adı Yeni Göktürkçe ve bu dil yakın zamanda internette mevcut olacak. İyi günler!
0jmcaf3fjko5mk3pwyorunj59ejv8rl
vegetarians
0
1583916
5658574
2026-05-16T11:27:11Z
MustafaCavlak
59368
Yeni sayfa : ==İngilizce== ===Ad=== {{başlık başı|en|çekimli ad}} # {{çoğulu|dil=en|vegetarian}}
5658574
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{başlık başı|en|çekimli ad}}
# {{çoğulu|dil=en|vegetarian}}
qsr0fmehsesw701w4r9kxu1xl5dgfl8
high school
0
1583917
5658575
2026-05-16T11:30:53Z
MustafaCavlak
59368
Yeni sayfa : ==İngilizce== ===Ad=== {{en-ad|~}} # [[lise]]
5658575
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{en-ad|~}}
# [[lise]]
2pdacldmb4to4dx051jdo6rcem7fs80
high schools
0
1583918
5658576
2026-05-16T11:31:27Z
MustafaCavlak
59368
Yeni sayfa : ==İngilizce== ===Ad=== {{başlık başı|en|çekimli ad}} # {{ççekim|en|high school}}
5658576
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{başlık başı|en|çekimli ad}}
# {{ççekim|en|high school}}
rntqkl4bawgxmleuy43didjsvr1sf7b
round trip
0
1583919
5658579
2026-05-16T11:39:31Z
MustafaCavlak
59368
Yeni sayfa : ==İngilizce== ===Ad=== {{en-ad}} # [[gidiş dönüş]]
5658579
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{en-ad}}
# [[gidiş dönüş]]
5sbtd1lhxvokm511xse42ncxu7rxlvp
hitchhike
0
1583920
5658580
2026-05-16T11:44:42Z
MustafaCavlak
59368
Yeni sayfa : ==İngilizce== ===Eylem=== {{en-eylem||hitchhiking|hitchhiked}} # [[otostop çekmek]] # [[otostop yapmak]] ===Ad=== {{en-ad}} # [[otostop]] ile yapılan yolculuk; otostop
5658580
wikitext
text/x-wiki
==İngilizce==
===Eylem===
{{en-eylem||hitchhiking|hitchhiked}}
# [[otostop çekmek]]
# [[otostop yapmak]]
===Ad===
{{en-ad}}
# [[otostop]] ile yapılan yolculuk; otostop
2t3eodusc8uluqmhxqecrtfgsjq5l6c
hitchhiker
0
1583921
5658581
2026-05-16T11:45:20Z
MustafaCavlak
59368
Yeni sayfa : ==İngilizce== ===Ad=== {{en-ad}} # [[otostopçu]]
5658581
wikitext
text/x-wiki
==İngilizce==
===Ad===
{{en-ad}}
# [[otostopçu]]
kegoyuk45qvfh7pvip05mqgyoqdb2q7
thumb a ride
0
1583922
5658582
2026-05-16T11:47:44Z
MustafaCavlak
59368
Yeni sayfa : ==İngilizce== ===Eylem=== {{en-eylem|thumbs a ride|thumbing a ride|thumbed a ride}} # {{ABD|kat=evet}} {{deyimsel|en}} [[otostop çekmek]]
5658582
wikitext
text/x-wiki
==İngilizce==
===Eylem===
{{en-eylem|thumbs a ride|thumbing a ride|thumbed a ride}}
# {{ABD|kat=evet}} {{deyimsel|en}} [[otostop çekmek]]
qo5qxiee2yvwv1b7npkl90ktbq55n8b