Module:sish-translit

Revision as of 01:53, 11 June 2026 by Melinoë (talk | contribs) (Created page with "local export = {} local gsub = require("Module:string utilities").gsub local tt = { ["ա"]="a", ["բ"]="b", ["գ"]="g", ["դ"]="d", ["ե"]="e", ["զ"]="z",["է"]="ē", ["ը"]="ə", ["թ"]="tʻ", ["ժ"]="ž", ["ի"]="i", ["լ"]="l", ["խ"]="x", ["ծ"]="c", ["կ"]="k", ["հ"]="h", ["ձ"]="j", ["ղ"]="ġ", ["ճ"]="č", ["մ"]="m", ["յ"]="y", ["ն"]="n", ["շ"]="š", ["ո"]="o", ["չ"]="čʻ", ["պ"]="p", ["ջ"]="ǰ", ["ռ"]="ṙ", ["ս"]="s", ["վ"]="v", ["տ"]="t", [...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This module will transliterate Ossamic language text. 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:sish-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 gsub = require("Module:string utilities").gsub

local tt = {
	["ա"]="a", ["բ"]="b", ["գ"]="g", ["դ"]="d", ["ե"]="e", ["զ"]="z",["է"]="ē", ["ը"]="ə",
	["թ"]="tʻ", ["ժ"]="ž", ["ի"]="i", ["լ"]="l", ["խ"]="x", ["ծ"]="c", ["կ"]="k", ["հ"]="h",
	["ձ"]="j", ["ղ"]="ġ", ["ճ"]="č", ["մ"]="m", ["յ"]="y", ["ն"]="n", ["շ"]="š", ["ո"]="o",
	["չ"]="čʻ", ["պ"]="p", ["ջ"]="ǰ", ["ռ"]="ṙ", ["ս"]="s", ["վ"]="v", ["տ"]="t", ["ր"]="r",
	["ց"]="cʻ", ["ւ"]="w", ["փ"]="pʻ", ["ք"]="kʻ", ["և"]="ew", ["օ"]="ō", ["ֆ"]="f",
	["Ա"]="A", ["Բ"]="B", ["Գ"]="G", ["Դ"]="D", ["Ե"]="E", ["Զ"]="Z", ["Է"]="Ē", ["Ը"]="Ə",
	["Թ"]="Tʻ", ["Ժ"]="Ž", ["Ի"]="I", ["Լ"]="L", ["Խ"]="X", ["Ծ"]="C", ["Կ"]="K", ["Հ"]="H",
	["Ձ"]="J", ["Ղ"]="Ġ", ["Ճ"]="Č", ["Մ"]="M", ["Յ"]="Y", ["Ն"]="N", ["Շ"]="Š", ["Ո"]="O",
	["Չ"]="Čʻ", ["Պ"]="P", ["Ջ"]="J̌", ["Ռ"]="Ṙ", ["Ս"]="S", ["Վ"]="V", ["Տ"]="T", ["Ր"]="R",
	["Ց"]="Cʻ", ["Ւ"]="W", ["Փ"]="Pʻ", ["Ք"]="Kʻ", ["Օ"]="Ō", ["Ֆ"]="F", ["ﬓ"]="mn", ["ﬔ"]="me",
	["ﬕ"]="mi", ["ﬖ"]="vn", ["ﬗ"]="mx", ["ՠ"]="ä", ["ֈ"]="hª",
	-- punctuation
	["՝"]=",", ["։"]=".", ["․"]=";", ["՛"]="́", ["՜"]="<sup>!</sup>", ["՞"]="<sup>?</sup>",
	["՟"]=".", ["֊"]="-", ["՚"]="’", ['«']='“', ['»']='”', ['ՙ']='ʻ'
}

local replacements = {
	-- desirable, but doesn't work: ['<sup>յ</sup>'] = 'ʸ',
	['յ̵'] = mapping['ֈ'],
	['ղʻ'] = 'q',
	['Ո[ւՒ]'] = 'U',
	['ու'] = 'u',
	['Ո՛[ւՒ]'] = 'Ú',
	['ո՛ւ'] = 'ú',
	['Ո՜[ւՒ]'] = 'U<sup>!</sup>',
	['ո՜ւ'] = 'u<sup>!</sup>',
	['Ո՞[ւՒ]'] = 'U<sup>?</sup>',
	['ո՞ւ'] = 'u<sup>?</sup>',
	['ո̈ւ'] = 'ü',
	['Ո̈[ւՒ]'] = 'Ü',
	['օ̈'] = 'ö',
	['Օ̈'] = 'Ö',
}

local tt = {
	["ა"]="a", ["ბ"]="b", ["გ"]="g", ["დ"]="d", ["ე"]="e", ["ვ"]="v", ["ზ"]="z", ["ჱ"]="ē",
	["თ"]="t", ["ი"]="i", ["კ"]="ḳ", ["ლ"]="l", ["მ"]="m", ["ნ"]="n", ["ჲ"]="y", ["ო"]="o",
	["პ"]="ṗ", ["ჟ"]="ž", ["რ"]="r", ["ს"]="s", ["ტ"]="ṭ", ["ჳ"]="wi", ["უ"]="u", ["ფ"]="p",
	["ქ"]="k", ["ღ"]="ɣ", ["ყ"]="q̇", ["შ"]="š", ["ჩ"]="č", ["ც"]="c",
	["ძ"]="ʒ", ["წ"]="c̣", ["ჭ"]="č̣", ["ხ"]="x", ["ჴ"]="q", ["ჯ"]="ǯ", ["ჰ"]="h", ["ჵ"]="'", ["ჶ"]="f", ["ჷ"]="ə", ["ჸ"]="ʾ", ["ჺ"]="ʿ", ["ʻ"]="ˢ",
};

function export.tr(text, lang, sc)
	if type(lang) == "table" then
		lang = lang:getFullCode()
	end

	for regex, replacement in pairs(replacements) do
		text = gsub(text, regex, replacement)
	end

	text = gsub(text, '.', tt)
	return text
end

return export