Module:dv-translit

Hello, you have come here looking for the meaning of the word Module:dv-translit. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:dv-translit, but we will also tell you about its etymology, its characteristics and you will know how to say Module:dv-translit in singular and plural. Everything you need to know about the word Module:dv-translit you have here. The definition of the word Module:dv-translit will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:dv-translit, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

This module will transliterate Dhivehi language text per WT:DV TR. The module should preferably not be called directly from templates or other modules. To use it from a template, use {{xlit}}. Within a module, use Module:languages#Language:transliterate.

For testcases, see Module:dv-translit/testcases.

Functions

tr(text, lang, sc)
Transliterates a given piece of text written in the script specified by the code sc, and language specified by the code lang.
When the transliteration fails, returns nil.

local export = {}
local u = require("Module:string/char")
 
local consonants = {
	 = 'h',  = 'ṣ',  = 'n',  = 'r',  = 'b',
	 = 'ḷ',  = 'k',  = '',  = 'v',  = 'm',
	 = 'f',  = 'd',  = 't',  = 'l',  = 'g',
	 = 'ñ',  = 's',  = 'ḍ',  = 'z',  = 'ṭ',
	 = 'y',  = 'p',  = 'j',  = 'c',  = 'ṇ',
	 = 'ṯ',  = 'ḥ',  = 'x',  = 'ź',  = 'ž',
	 = 'š',  = 'ş',  = 'ḋ',  = 'ţ',  = 'ẓ',
	 = 'ʿ',  = 'ġ',  = 'q',  = 'w',

}

-- this controls prenasalized stop digraphs consisting of ނ and a voiced stop
local prenasal = {
	 = 'ᵐ',
	 = 'ⁿ',  = 'ⁿ',
	 = 'ⁿ',
}

local diacritics = {
	 = 'a',  = 'ā',  = 'i',  = 'ī',  = 'u',
	 = 'ū',  = 'e',  = 'ē',  = 'o',  = 'ō',  = '',
	--no diacritic
	 = ''
}

function export.tr(text, lang, sc)
	
	if sc == "Diak" then
		return nil
	end

	-- final k
	text = mw.ustring.gsub(text, 'އް$', 'ކް')
	-- V + sukun + C -> CC
	text = mw.ustring.gsub(
		text,
		'އ' .. u(0x07B0) .. '()',
		function (c)
			return c .. c
		end)
	-- prenasalized digraphs
	text = mw.ustring.gsub(
		text,
		'ނ()',
		function(c)
			return (prenasal or "n") .. c
		end)
		
	-- handle all standard akuru (C+V or C+virama) units
	text = mw.ustring.gsub(
		text,
		'()(?)',
		function(c, d)
			if mw.ustring.match(c, '') and d == u(0x07B0) then
				return consonants .. '̊'
			else
				return consonants .. diacritics
			end
		end)
	return text
end
 
return export