模組:Bcl-translit
這個模組將轉寫中比科爾語的文字。
最好不要直接從模板或其他模組呼叫此模組;要從模板中使用它,
請使用{{xlit}}
;
要從模組中使用它,請使用Module:languages#Language:transliterate。
關於測試用例,請見Module:Bcl-translit/testcases。
函式
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 consonants = {
['ᜃ']='k', ['ᜄ']='g', ['ᜅ']='ng',
['ᜆ']='t', ['ᜇ']='d', ['ᜈ']='n',
['ᜉ']='p', ['ᜊ']='b', ['ᜋ']='m',
['ᜌ']='y', ['ᜎ']='l', ['ᜏ']='w',
['ᜐ']='s', ['ᜑ']='h', ['ᜍ']='r',
}
local diacritics = {
['ᜒ']='i', ['ᜓ']='u', ['᜔']='',
}
local tt = {
-- vowels
['ᜀ']='a', ['ᜁ']='i', ['ᜂ']='u',
--punctuation
['᜶']='.', -- pamudpod
['᜵']=',' -- single pamudpod
}
function export.tr(text, lang, sc)
if sc ~= "Tglg" then
return nil
end
local separate_dr = false
if string.find(text, 'ᜍ') then
seperate_dr = true
end
text = mw.ustring.gsub(text,'([ᜃ᜔ᜄ᜔ᜅ᜔ᜆ᜔ᜈ᜔ᜉ᜔ᜊ᜔ᜋ᜔ᜌ᜔ᜎ᜔ᜏ᜔ᜐ᜔])'..'([ᜀᜁᜂ])','%1-%2')
text = mw.ustring.gsub(
text,
'([ᜃ-ᜑ])'..
'([ᜒᜓ᜔]?)'..
'([ᜀ-ᜂ]?)',
function(c, d, e)
if d == "" and e ~= "" then
if tt[e] == "i" or tt[e] == "u" then return consonants[c] .. 'a' .. tt[e] .. ''
else return consonants[c] .. 'a' .. tt[e] end
elseif e ~= "" then
return consonants[c] .. diacritics[d] .. tt[e]
elseif d == "" then
return consonants[c] .. 'a'
else
return consonants[c] .. diacritics[d]
end
end)
text = mw.ustring.gsub(text, '.', tt)
--remove hyphen between vowels
text = mw.ustring.gsub(text,"([aiu])-([aiu])","%1%2")
return text
end
return export