Modül:lki-alfabeçeviri

Merhaba, buraya Modül:lki-alfabeçeviri kelimesinin anlamını aramaya geldiniz. DICTIOUS'da Modül:lki-alfabeçeviri kelimesinin tüm sözlük anlamlarını bulmakla kalmayacak, aynı zamanda etimolojisini, özelliklerini ve Modül:lki-alfabeçeviri kelimesinin tekil ve çoğul olarak nasıl söylendiğini de öğreneceksiniz. Modül:lki-alfabeçeviri kelimesi hakkında bilmeniz gereken her şey burada. Modül:lki-alfabeçeviri kelimesinin tanımı, konuşurken veya metinlerinizi yazarken daha kesin ve doğru olmanıza yardımcı olacaktır. XXX'in ve diğer kelimelerin tanımını bilmek, kelime dağarcığınızı zenginleştirir ve size daha fazla ve daha iyi dilsel kaynaklar sağlar.
Modül belgelemesi


-- Authors: JavaScript ئاسۆ; Lua Ghybu, Calak

local export = {}

local gsub = mw.ustring.gsub
local U = mw.ustring.char

local mapping = {
	 = "a",  = "b",  = "ç",  = "c",  = "d",  = "e",  = "ê",  = "f",  = "g",
	 = "h",  = "h",  = "ḧ",  = "j",  = "k",  = "ll",  = "l",  = "m",  = "n",
	 = "o",  = "p",  = "q",  = "r",  = "r",  = "s",  = "ş",  = "t",  = "ü",
	 = "v",  = "x",  = "ẍ",  = "z",  = "",  = "'",
	
	 = "", -- ZWNJ (zero-width non-joiner)
	 = "", -- kashida, no sound
	
	-- numerals
     = "1",  = "2",  = "3",  = "4",  = "5",
	 = "6",  = "7",  = "8",  = "9",  = "0",
	-- persian variants to numerals
	 = "1",  = "2",  = "3",  = "4",  = "5",
	 = "6",  = "7",  = "8",  = "9",  = "0",
}

	-- punctuation (leave on separate lines)
local punctuation = {
	 = "?", -- question mark
	 = ",", -- comma
	 = ";", -- semicolon
	 = '“', -- quotation mark
	 = '”', -- quotation mark
	 = "%", -- percent
	 = "‰", -- per mille
	 = ".", -- decimals
	 = ",", -- thousand
}

-- translit
local function tr_word(word)
	
    word = gsub(word, '.', punctuation)
		
	--Remove punctuation at the end of the word.
	if mw.ustring.find(word, '$') then
	   ponct =  mw.ustring.sub(word, -1)
	   word = gsub(word, '$', '')
	else
	   word = word
	   ponct = ''
	end
	
	word = gsub(word, 'ه‌', "ە") --correct unicode for letter ە
	-- U+0647 (Arabic letter heh) + U+200C (zero-width non-joiner) → U+06D5 (Arabic letter ae)
	
	-- diacritics
	word = gsub(word, 'ْ', "i") -- U+0652, Arabic sukun
	word = gsub(word, 'ِ', "i") -- U+0650, Arabic kasra
	 
	--managing 'و' and 'ی'
	word = gsub(word, 'و()', "w%1") --و + vowel => w (e.g. wan)
	word = gsub(word, 'ی()', "y%1") --ی + vowel => y (e.g. yas)
	word = gsub(word, '()و', "%1w") --vowel + و => w (e.g. kew)
	word = gsub(word, '()ی', "%1y") --vowel + ی => y (e.g. bey)
	word = gsub(word, '()ۊ', "%1ẅ") --vowel + و => ẅ (e.g. taẅ)
	word = gsub(word, '()ێ', "%1ÿ") --vowel + ێ => ÿ (e.g.  şeÿtan)
	word = gsub(word, '^و$', "û") --non-letter + 'و' + non-letter => û (=and)
	
	word = gsub(word, '()و', "%1w") --non-letter + 'و' => w (e.g. wetar)
	word = gsub(word, '^و', "w") --first 'و' => w (e.g. wetar)
	word = gsub(word, 'یو', "îw") --'ی' + 'و' => îw (e.g. mîwe)
	word = gsub(word, '()یی', "%1îy") --'ی' + 'ی' => îy (e.g. kanîy)
	word = gsub(word, 'وی', "uy") --'و' + 'ی' => uy (e.g. buyn)
	word = gsub(word, 'وو', "û") --'و' + 'و' => û (e.g. nû)
	word = gsub(word, 'ی', "î")
	word = gsub(word, 'و', "u")
	word = gsub(word, 'uu', "û") --'و' + 'و' => û (e.g. nû)
	word = gsub(word, '()ڕ', "%1rr") --when 'ڕ' not at the beginning of a word => rr
	word = gsub(word, '()ئ', "%1'") --when 'ئ' not at the beginning of a word => '
	
	word = gsub(word, '.', mapping)
	
	--insert i where applicable
	word = gsub(word, 'll', "Ľ") -- temporary conversion to avoid seeing ll as 2 letters
	word = gsub(word, 'rr', "Ŕ") -- temporary conversion to avoid seeing rr as 2 letters
	
	word = gsub(word, '()()()()', "%1%2i%3%4") --e.g. grft -> grift
	word = gsub(word, '()()()()$', "%1%2%3i%4") --e.g. cejnt -> cejnit
	word = gsub(word, '()()()', "%1i%2%3") --e.g. wrd -> wird
	
	word = gsub(word, '()()()', "%1i%2%3") --e.g. prd -> pird
	word = gsub(word, '()()$', "%1i%2") --like above
	
	word = gsub(word, '()()()()', "%1%2i%3%4") --repeat the latter expression, in case skipped
	word = gsub(word, '()()()$', "%1%2i%3") --repeat the latter expression, in case skipped

	word = gsub(word, '^()()()', "%1i%2%3") --e.g. ktk -> kitk
	word = gsub(word, '^()()$', "%1i%2") --e.g. ktk -> kitk
	word = gsub(word, '()()()()', "%1%2i%3%4") --e.g. ktk -> kitk
	word = gsub(word, '()()()$', "%1%2i%3") --e.g. ktk -> kitk

	word = gsub(word, '()()$', "%1%2i") --e.g. j -> ji
	word = gsub(word, '^()$', "%1i") --e.g. j -> ji	


	--word = gsub(word, '()()()', "%1%2i%3") --e.g. bra -> bira
	--word = gsub(word, '^()()', "%1i%2") --e.g. bra -> bira

	--word = gsub(word, '()()', "%1i%2") --e.g. aşkra -> aşkira
	
	--word = gsub(word, 'si()', "s%1") -- sp, st cluster
	
	word = gsub(word, 'Ľ', "ll") --revert the temporary conversion
	word = gsub(word, 'Ŕ', "rr") --revert the temporary conversion

    -- Add the punctuation who had previously deleted.
    word = word .. ponct
    
	return word
end

function export.tr(text, lang, sc)
    local textTab = {}
    
    -- Create a word table separated by a space (%s).
	for _, word in ipairs(mw.text.split(text, '%s+')) do
		table.insert(textTab, word)
	end
	
	-- Tablo of translit.
	for key, word in ipairs(textTab) do
		textTab = tr_word(word)
	end

	return table.concat(textTab, ' ')
end

return export