Module:Tibt-translit
- The following documentation is located at Module:Tibt-translit/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
This module will transliterate Tibetan language text per the Wylie transliteration scheme. It is used to transliterate Adap, Balti, Gahri, Tibetan, Brokkat, Chocangaca, Idu, Changthang, Dakpa, Dzongkha, Dzala, Kutang Ghale, Bumthangkha, Kalaktang Monpa, Ladakhi, Lunanakha, Layakha, Nyenkha, Manangba, Olekha, Old Tibetan, Sanskrit, Brokpake, Sikkimese, Bokar, Chali, Tshangla, Tawang Monpa, Classical Tibetan, Khengkha, Kurtöp, Sherpa, Zhang-Zhung, and Zangskari.
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:Tibt-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
.
Sample text
བོད་རྒྱལ་རབས་དེ་སྤྱིར་བོད་བརྒྱུད་ནང་བསྟན་ཆོས་ལུགས་ཀྱི་ལོ་རྒྱུས་དང་ཧ་ཅང་འབྲེལ་ཡོད། རྒྱུ་རྐྱེན་གཙོ་བོ་ནི་བོད་རིགས་དང་ སོག་རིགས་ མན་ཇུ་རིགས་སོགས་ཀྱི་རིག་གནས་འཕེལ་རྒྱས་དང་འབྲེལ་ཡོད་ མ་ཟད་སྔོན་བྱོན་ཀྱི་ལོ་རྒྱུས་མཁས་ཅན་ཕལ་ཆེ་བ་ནི་ནང་ཆོས་རྒྱུད་འཛིན་པ་ཡིན༎བོད་གངས་ཅན་ཞེས་པའི་རྒྱལ་ཁབ་ཆེན་པོ་འདི་ཉིད། ཆེས་སྔ་བའི་དུས་བོད་ཀྱི་ཡུལ་ཆ་ཤས་རྒྱ་ཆེ་བ་རྒྱ་མཚོ་ཡིན་པ་དང་། རིམ་གྱིས་མཚོའི་རྒྱུན་སྐམ་ནས་ཡུལ་ལྗོངས་ཆགས། དེ་ནས་མིའི་འགྲོ་བ་བྱུང་ཞིང་། དེ་ཡང་མིའི་འགྲོ་བ་ནི་འཕགས་མཆོག་སྤྱན་རས་གཟིགས་ཀྱི་རྣམ་སྤྲུལ་ཕ་སྤྲེའུ་བྱང་ ཆུབ་སེམས་དཔའ་དང་། མ་སྒྲོལ་མའི་རྣམ་སྤྲུལ་མ་བྲག་སྲིན་མོ་གཉིས་དུས་པ་ལས་ བྱུང་བ་ཡིན་པ་རེད། གངས་ཅན་བོད་རྒྱལ་ཁབ་ཀྱི་ས་ཁྱོན་ནི་སྤྱི་ལེ་གྲུ་བཞི་མ་འབུམ་ ༢༥ ཡིན་ཞིང་། རྒྱ་ཁྱོན་དེ་ནི་བལ་ཡུལ་གྱི་རྒྱ་ཁྱོན་ལྔ་བཅུ་ཙམ་ཞིག་ཡིན་པ་དང་། ཁོར་ཡུག་ནི། ཤར་དུ་རྒྱ་ནག་དང་། མན་ཇུ། སོག་པོ། ནུབ་ཏུ་བལ་ཡུལ་དང་། རྒྱ་གར། པ་ཀི་སི་ཐན། ཨབ་གྷ་ནི་སི་ཏན། བྱང་དུ་ཏུར་ཀི་སི་ ཏན་དང་། ཨུ་རུ་སུ། ལྷོ་རུ་འབྲུག་དང་། འབྲས་ལྗོངས། འབར་མ། བྷང་ལ་སྡེ་ཤི་བཅས་ཀྱི་དབུས་སུ་གནས་ཡོད། དེ་ལྟ་བུའི་རྒྱ་ཁྱོན་ཅན་གྱི་བོད་ཀྱི་རྒྱལ་ཁབ་དེ། སྤྱི་ལོ་མ་བྱུང་བའི་ལོ་ ༡༢༧ གོང་རྒྱལ་པོའི་ཐོག་མ་གཉའ་ཁྲི་བཙན་པོ་བྱུང་བ་ནས་བཟུང་རྒྱལ་པོ་གླང་ དར་མའི་བར་མི་ལོ་དགུ་བརྒྱ་ལྷག་གི་རིང་ཆོས་དང་སྲིད་ཀྱི་བྱུང་བ་མཐའ་ཡས་པ་བྱུང། སྤྱི་ལོ་ ༩༠༠ ཙམ་ནས་མི་ལོ་ ༣༤༧ ཙམ་རིང་བོད་ཡུལ་མདོ་སྟོད་སྨད་དང་། དབུས་གཙང་བཅས་པ་སིལ་བུར་འཐོར་ཏེ་བོད་ཁམས་ཉམས་རྒྱུད་ཇེ་ཆེར་གྱུར། རིམ་པས་ས་སྐྱའི་ཁྲི་རབས་ཉི་ཤུས་ལོ་ ༩༦ རིང་བོད་སྤྱི་ལ་དབང་བསྒྱུར་ཞིང་། དེ་རྗེས་ཕག་མོ་གྲུབ་པ་ཁྲི་རབས་བཅུ་གཅིག་གིས་ལོ་ ༨༦དང་། རིན་སྤུངས་པ་ཁྲི་རབས་བཞི་ནས་ལོ་ ༡༣༠ དང་། སྡེ་པ་གཙང་པའི་ཁྲི་རབས་གསུམ་གྱིས་ལོ་ ༧༦ བཅས་དབང་སྒྱུར། དགའ་ལྡན་ཕོ་བྲང་གི་དུས་རབས། སྤྱི་ལོ་ ༡༦༤༢ ནས་ ༡༩༥༠ བར་ལོ་ ༣༦༧སོགས་ཡིན།
Bod rgyal rabs de spyir bod brgyud nang bstan chos lugs kyi lo rgyus dang ha cang 'brel yod. Rgyu rkyen gtso bo ni bod rigs dang sog rigs man ju rigs sogs kyi rig gnas 'phel rgyas dang 'brel yod ma zad sngon byon kyi lo rgyus mkhas can phal che ba ni nang chos rgyud 'dzin pa yin.
Bod gangs can zhes pa'i rgyal khab chen po 'di nyid. Ches snga ba'i dus bod kyi yul cha shas rgya che ba rgya mtsho yin pa dang. Rim gyis mtsho'i rgyun skam nas yul ljongs chags. De nas mi'i 'gro ba byung zhing. De yang mi'i 'gro ba ni 'phags mchog spyan ras gzigs kyi rnam sprul pha spre'u byang chub sems dpa' dang. Ma sgrol ma'i rnam sprul ma brag srin mo gnyis dus pa las byung ba yin pa red. Gangs can bod rgyal khab kyi sa khyon ni spyi le gru bzhi ma 'bum 25 yin zhing. Rgya khyon de ni bal yul gyi rgya khyon lnga bcu tsam zhig yin pa dang. Khor yug ni. Shar du rgya nag dang. Man ju. Sog po. Nub tu bal yul dang. Rgya gar. Pa ki si than. Ab gha ni si tan. Byang du tur ki si tan dang. U ru su. Lho ru 'brug dang. 'Bras ljongs. 'Bar ma. Bhang la sde shi bcas kyi dbus su gnas yod. De lta bu'i rgya khyon can gyi bod kyi rgyal khab de. Spyi lo ma byung ba'i lo 127 gong rgyal po'i thog ma gnya' khri btsan po byung ba nas bzung rgyal po glang dar ma'i bar mi lo dgu brgya lhag gi ring chos dang srid kyi byung ba mtha' yas pa byung. Spyi lo 900 tsam nas mi lo 347 tsam ring bod yul mdo stod smad dang. Dbus gtsang bcas pa sil bur 'thor te bod khams nyams rgyud je cher gyur. Rim pas sa skya'i khri rabs nyi shus lo 96 ring bod spyi la dbang bsgyur zhing. De rjes phag mo grub pa khri rabs bcu gcig gis lo 86dang. Rin spungs pa khri rabs bzhi nas lo 130 dang. Sde pa gtsang pa'i khri rabs gsum gyis lo 76 bcas dbang sgyur. Dga' ldan pho brang gi dus rabs. Spyi lo 1642 nas 1950 bar lo 367sogs yin
local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local match = m_str_utils.match
local toNFC = mw.ustring.toNFC
local upper = m_str_utils.upper
local Tibt = require("Module:Tibt-common")
local export = {}
local twoChars = {
["རྀ"] = "ṛ", ["ྲྀ"] = "ṛ", -- Primarily used in Sanskrit(-derived) borrowings.
["ལྀ"] = "ḷ", ["ླྀ"] = "ḷ",
["ཕ༹"] = "f", ["བ༹"] = "v", -- Used to transliterate Chinese.
["ཁ༹"] = "x", ["ག༹"] = "ġ", -- Used in Balti.
["ྥ༹"] = "f", ["ྦ༹"] = "v",
["ྑ༹"] = "x", ["ྒ༹"] = "ġ",
}
local oneChar = {
["ཀ"] = "k", ["ཁ"] = "kh", ["ག"] = "g", ["ང"] = "ng",
["ཅ"] = "c", ["ཆ"] = "ch", ["ཇ"] = "j", ["ཉ"] = "ny",
["ཏ"] = "t", ["ཐ"] = "th", ["ད"] = "d", ["ན"] = "n",
["པ"] = "p", ["ཕ"] = "ph", ["བ"] = "b", ["མ"] = "m",
["ཙ"] = "ts", ["ཚ"] = "tsh", ["ཛ"] = "dz", ["ཝ"] = ".w",
["ཞ"] = "zh", ["ཟ"] = "z", ["འ"] = "'", ["ཡ"] = ".y",
["ར"] = ".r", ["ཪ"] = ".r", ["ལ"] = "l", ["ཤ"] = "sh", ["ས"] = "s",
["ཧ"] = "h", ["ཨ"] = "\1",
["ཊ"] = "ṭ", ["ཋ"] = "ṭh", ["ཌ"] = "ḍ", ["ཎ"] = "ṇ", ["ཥ"] = "ṣ",
["ཫ"] = "q", ["ཬ"] = "ṛ", -- Used in Balti.
["྅"] = "ʼ", ["ྈ"] = "x", ["ྉ"] = "f", ["ྌ"] = "f", -- Used in Sanskrit.
["ཱ"] = "̄", ["ི"] = "i", ["ྀ"] = "ị", ["ུ"] = "u", ["ེ"] = "e", ["ཻ"] = "ai", ["ོ"] = "o", ["ཽ"] = "au",
["ཾ"] = "ṃ", ["ྂ"] = "ṃ", ["ྃ"] = "m̐", ["ཿ"] = "ḥ",
["ྐ"] = "k", ["ྑ"] = "kh", ["ྒ"] = "g", ["ྔ"] = "ng",
["ྕ"] = "c", ["ྖ"] = "ch", ["ྗ"] = "j", ["ྙ"] = "ny",
["ྟ"] = "t", ["ྠ"] = "th", ["ྡ"] = "d", ["ྣ"] = "n",
["ྤ"] = "p", ["ྥ"] = "ph", ["ྦ"] = "b", ["ྨ"] = "m",
["ྩ"] = "ts", ["ྪ"] = "tsh", ["ྫ"] = "dz", ["ྭ"] = "w", ["ྺ"] = "w",
["ྮ"] = "zh", ["ྯ"] = "z", ["ྰ"] = "'", ["ྱ"] = "y", ["ྻ"] = "y",
["ྲ"] = "r", ["ྼ"] = "r", ["ླ"] = "l", ["ྴ"] = "sh", ["ྶ"] = "s",
["ྷ"] = "h", ["ྸ"] = "+a",
["ྚ"] = "ṭ", ["ྛ"] = "ṭh", ["ྜ"] = "ḍ", ["ྞ"] = "ṇ", ["ྵ"] = "ṣ",
["ྍ"] = "x", ["ྎ"] = "f", ["ྏ"] = "f",
}
local symbol = {
["༠"] = "0", ["༡"] = "1", ["༢"] = "2", ["༣"] = "3", ["༤"] = "4",
["༥"] = "5", ["༦"] = "6", ["༧"] = "7", ["༨"] = "8", ["༩"] = "9",
["༪"] = "0.5", ["༫"] = "1.5", ["༬"] = "2.5", ["༭"] = "3.5", ["༮"] = "4.5",
["༯"] = "5.5", ["༰"] = "6.5", ["༱"] = "7.5", ["༲"] = "8.5", ["༳"] = "9.5",
["་"] = " ", ["༌"] = "*", ["།"] = ".", ["༎"] = ".\n\n", ["༏"] = ";",
["༑"] = "|", ["༈"] = "!", ["༔"] = ":", ["༼"] = "(", ["༽"] = ")",
["༺"] = "<", ["༻"] = ">"
}
function export.tr(text, lang, sc)
local langObj; if not lang then
error("Language code required.")
else
langObj = require("Module:languages").getByCode(lang)
end
local scObj = require("Module:scripts").getByCode("Tibt")
text = (langObj:makeEntryName(text))
text = scObj:fixDiscouragedSequences(text)
text = scObj:toFixedNFD(text)
text = gsub(text, "༒", "།")
text = gsub(text, "[་༌]+$", "")
for word in Tibt.getWords(text) do
for syllable in Tibt.getSyllables(word) do
local tr = syllable
tr = gsub(tr, "(ཱ)([ིེུ-ཽྀྲླ]+)", "%2%1")
local mainStack = gsub(Tibt.findMainStack(syllable, lang), "[ཾཿྂྃ]", "")
if match(mainStack, "([^ༀི-ཽྀ]ཱ?)$") then
local newMainStack = mainStack .. "a"
newMainStack = gsub(newMainStack, "ཱa$", "aཱ")
tr = gsub(tr, mainStack, newMainStack, 1)
end
tr = gsub(tr, "^(.*)༷(.*)$", "<u>%1%2</u>")
tr = gsub(tr, "^(.*)༵(.*)$", "<span style=\"text-decoration-style:double;\">%1%2</span>")
for letter, replacement in pairs(twoChars) do
tr = gsub(tr, letter, replacement)
end
tr = gsub(tr, ".", oneChar)
tr = gsub(tr, "(.')([^aāeiīoḷḹṛṝuū%-<])", "%1a%2")
tr = gsub(tr, "%f[^%zaāeiīoḷḹṛṝuū%->]%.", "")
tr = gsub(tr, "%.([rwy][^aāeiīoḷḹṛṝuū])", "%1")
tr = gsub(tr, "^\1", "")
tr = tr:gsub("\1", "%.")
text = gsub(text, syllable, tr, 1)
end
end
text = gsub(text, "྄a?", "")
text = gsub(text, ".", symbol)
text = gsub(text, " ' ", "")
text = gsub(text, " *· *·? *", " · ")
text = gsub(text, " *%.", ".")
text = gsub(text, "\n+", "\n\n")
text = gsub(text, "\n\n$", "")
if match(text, "%. ") or match(text, "%.\n.") or match(text, "%.$") then
text = gsub(text, "^'?.", upper)
text = gsub(text, "\n\n'?.", upper)
text = gsub(text, "%. '?.", upper)
end
-- End with a space so that concurrent parts of running text that need to be transliterated separately (e.g. due to links) are still properly separated.
return toNFC(text) .. " "
end
return export
- Tibetan script
- Tibetan modules
- Transliteration modules
- Transliteration modules by script
- Tibetan script modules
- Nyenkha modules
- Chocangaca modules
- Lunanakha modules
- Zhang-Zhung modules
- Sikkimese modules
- Dakpa modules
- Old Tibetan modules
- Brokpake modules
- Sanskrit modules
- Zangskari modules
- Adap modules
- Balti modules
- Kurtöp modules
- Gahri modules
- Dzongkha modules
- Sherpa modules
- Classical Tibetan modules
- Olekha modules
- Khengkha modules
- Kalaktang Monpa modules
- Bumthangkha modules
- Brokkat modules
- Chali modules
- Dzala modules
- Manangba modules
- Idu modules
- Tawang Monpa modules
- Tshangla modules
- Kutang Ghale modules
- Ladakhi modules
- Layakha modules
- Changthang modules
- Bokar modules