模組:Diak-translit
This module will transliterate text in the 迪維西阿庫魯文. 它被用於轉寫迪維希語。
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:Diak-translit/testcases.
Functions
tr(text, lang, sc)
- Transliterates a given piece of
text
written in the script specified by the codesc
, and language specified by the codelang
. - When the transliteration fails, returns
nil
.
local export = {}
local u = mw.ustring.char
local consonants = {
--consonants
['𑤌']='k', ['𑤍']='kh', ['𑤎']='g', ['𑤏']='gh', ['𑤏']='ṅ',
['𑤑']='c', ['𑤒']='ch', ['𑤓']='j', ['𑤕']='ñ',
['𑤖']='ṭ', ['𑤘']='ḍ', ['𑤙']='ḍh', ['𑤚']='ṇ',
['𑤛']='t', ['𑤜']='th', ['𑤝']='d', ['𑤞']='dh', ['𑤟']='n',
['𑤠']='p', ['𑤡']='ph', ['𑤢']='b', ['𑤣']='bh', ['𑤤']='m',
['𑤥']='y', ['𑤦']='ẏ', ['𑤧']='r', ['𑤨']='l', ['𑤩']='v', ['𑤮']='ḷ',
['𑤪']='ś', ['𑤫']='ṣ', ['𑤬']='s', ['𑤭']='h', ['𑤯']='z',
['𑥀']='y', ['𑥂']='r', ['f']='f'
}
local diacritics = {
--matras
['𑤰']='ā', ['𑤱']='i', ['𑤲']='ī', ['𑤳']='u', ['𑤴']='ū',
['𑤵']='e', ['𑤷']='ai', ['𑤸']='o',
--virama
['𑤾'] = '',
--halant
['𑤽'] = 'ᵘ',
}
local tt = {
--vowels
['𑤀']='a', ['𑤁']='ā', ['𑤂']='i', ['𑤃']='ī', ['𑤄']='u', ['𑤅']='ū',
['𑤆']='e', ['𑤉']='o', ['𑤿']='ⁿ', ['𑥁']='r',
-- chandrabindu
['𑤼']='m̐', --until a better method is found
-- anusvara
['𑤻']='ṃ', --until a better method is found
--numerals
['𑥐']='0', ['𑥑']='1', ['𑥒']='2', ['𑥓']='3', ['𑥔']='4', ['𑥕']='5', ['𑥖']='6', ['𑥗']='7', ['𑥘']='8', ['𑥙']='9',
--punctuation
['𑥄']='.', --double danda
['𑥅']='.', --gap filler
['𑥆']='.' --end of text mark
}
function export.tr(text, lang, sc)
if sc ~= "Diak" then
return nil
end
text = mw.ustring.gsub(text,'𑥀','𑤾𑥀')
text = mw.ustring.gsub(text,'𑥂','𑤾𑥂')
text = mw.ustring.gsub(text,'𑤠𑥃','f')
text = mw.ustring.gsub(
text,
'([f𑤌-𑤯𑥀𑥂])'..
'([𑤰𑤱𑤲𑤳𑤴𑤵𑤷𑤸𑤽𑤾]?)',
function(c, d)
if d == "" then
return consonants[c] .. 'a'
else
return consonants[c] .. diacritics[d]
end
end)
text = mw.ustring.gsub(text, '.[𑤾𑤽]?', tt)
text = mw.ustring.gsub(text," ?[𑥄𑥅𑥆]",".")
text = mw.ustring.gsub(text,"ⁿb","ᵐb")
return text
end
return export