This module will transliterate Nanai 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:gld-translit/testcases.
tr(text, lang, sc)
text
written in the script specified by the code sc
, and language specified by the code lang
.nil
.local export = {}
local toNFD = mw.ustring.toNFD
local noDecompose = {
= true, = true,
= true, = true,
}
local twoChars = {
= "ʒe", = "Ʒe", = "ƷE",
= "ʒo", = "Ʒo", = "ƷO",
= "ʒi", = "Ʒi", = "ƷI",
= "ʒu", = "Ʒu", = "ƷU",
= "ʒa", = "Ʒa", = "ƷA",
= "ʒ", = "Ʒ", = "Ʒ",
= "ӈ", = "Ӈ", = "Ӈ",
}
local tab = {
= "a", = "A",
= "b", = "B",
= "w", = "W",
= "g", = "G",
= "d", = "D",
= "je", = "Je",
= "jo", = "Jo",
= "ž", = "Ž",
= "z", = "Z",
= "i", = "I",
= "j", = "J",
= "k", = "K",
= "l", = "L",
= "m", = "M",
= "n", = "N",
= "ŋ", = "Ŋ",
= "o", = "O",
= "p", = "P",
= "r", = "R",
= "s", = "S",
= "t", = "T",
= "u", = "U",
= "f", = "F",
= "h", = "H",
= "c", = "C",
= "č", = "Č",
= "š", = "Š",
= "š", = "Š",
= "ʺ", = "ʺ",
= "y", = "Y",
= "ʹ", = "ʹ",
= "e", = "E",
= "ju", = "Ju",
= "ja", = "Ja",
}
function export.tr(text, lang, sc)
-- Decompose (except ё/Ё and й/Й) to simplify conversion of letters with macrons.
text = text:gsub("*", function(m)
if not noDecompose then
return toNFD(m)
end
end)
for digraph, replacement in pairs(twoChars) do
text = text:gsub(digraph, replacement)
end
return mw.ustring.toNFC((text:gsub("*", tab)))
end
return export