Module:bo-translit

Definition from Wiktionary, the free dictionary
Jump to: navigation, search
The following documentation is located at Module:bo-translit/documentation. [edit]
Useful links: subpage listtransclusionstestcases

This module will transliterate Tibetan language text per the Wylie transliteration scheme.

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:bo-translit/testcases.

Functions[edit]

tr(text, lang, sc)
Transliterates a given piece of text written in the script specified by sc, and language specified by lang. When the transliteration fails, returns nil.

Sample text[edit]

བོད་རྒྱལ་རབས་དེ་སྤྱིར་བོད་བརྒྱུད་ནང་བསྟན་ཆོས་ལུགས་ཀྱི་ལོ་རྒྱུས་དང་ཧ་ཅང་འབྲེལ་ཡོད། རྒྱུ་རྐྱེན་གཙོ་བོ་ནི་བོད་རིགས་དང་ སོག་རིགས་ མན་ཇུ་རིགས་སོགས་ཀྱི་རིག་གནས་འཕེལ་རྒྱས་དང་འབྲེལ་ཡོད་ མ་ཟད་སྔོན་བྱོན་ཀྱི་ལོ་རྒྱུས་མཁས་ཅན་ཕལ་ཆེ་བ་ནི་ནང་ཆོས་རྒྱུད་འཛིན་པ་ཡིན།།བོད་གངས་ཅན་ཞེས་པའི་རྒྱལ་ཁབ་ཆེན་པོ་འདི་ཉིད། ཆེས་སྔ་བའི་དུས་བོད་ཀྱི་ཡུལ་ཆ་ཤས་རྒྱ་ཆེ་བ་རྒྱ་མཚོ་ཡིན་པ་དང༌། རིམ་གྱིས་མཚོའི་རྒྱུན་སྐམ་ནས་ཡུལ་ལྗོངས་ཆགས། དེ་ནས་མིའི་འགྲོ་བ་བྱུང་ཞིང༌། དེ་ཡང་མིའི་འགྲོ་བ་ནི་འཕགས་མཆོག་སྤྱན་རས་གཟིགས་ཀྱི་རྣམ་སྤྲུལ་ཕ་སྤྲེའུ་བྱང་ ཆུབ་སེམས་དཔའ་དང༌། མ་སྒྲོལ་མའི་རྣམ་སྤྲུལ་མ་བྲག་སྲིན་མོ་གཉིས་དུས་པ་ལས་ བྱུང་བ་ཡིན་པ་རེད། གངས་ཅན་བོད་རྒྱལ་ཁབ་ཀྱི་ས་ཁྱོན་ནི་སྤྱི་ལེ་གྲུ་བཞི་མ་འབུམ་ ༢༥ ཡིན་ཞིང༌། རྒྱ་ཁྱོན་དེ་ནི་བལ་ཡུལ་གྱི་རྒྱ་ཁྱོན་ལྔ་བཅུ་ཙམ་ཞིག་ཡིན་པ་དང༌། ཁོར་ཡུག་ནི། ཤར་དུ་རྒྱ་ནག་དང༌། མན་ཇུ། སོག་པོ། ནུབ་ཏུ་བལ་ཡུལ་དང༌། རྒྱ་གར། པ་ཀི་སི་ཐན། ཨབ་གྷ་ནི་སི་ཏན། བྱང་དུ་ཏུར་ཀི་སི་ ཏན་དང༌། ཨུ་རུ་སུ། ལྷོ་རུ་འབྲུག་དང༌། འབྲས་ལྗོངས། འབར་མ། བྷང་ལ་སྡེ་ཤི་བཅས་ཀྱི་དབུས་སུ་གནས་ཡོད། དེ་ལྟ་བུའི་རྒྱ་ཁྱོན་ཅན་གྱི་བོད་ཀྱི་རྒྱལ་ཁབ་དེ། ཕྱི་ལོ་མ་བྱུང་བའི་ལོ་ ༡༢༧ གོང་རྒྱལ་པོའི་ཐོག་མ་གཉའ་ཁྲི་བཙན་པོ་བྱུང་བ་ནས་བཟུང་རྒྱལ་པོ་གླང་ དར་མའི་བར་མི་ལོ་དགུ་བརྒྱ་ལྷག་གི་རིང་ཆོས་དང་སྲིད་ཀྱི་བྱུང་བ་མཐའ་ཡས་པ་བྱུང། ཕྱི་ལོ་ ༩༠༠ ཙམ་ནས་མི་ལོ་ ༣༤༧ ཙམ་རིང་བོད་ཡུལ་མདོ་སྟོད་སྨད་དང༌། དབུས་གཙང་བཅས་པ་སིལ་བུར་འཐོར་ཏེ་བོད་ཁམས་ཉམས་རྒྱུད་ཇེ་ཆེར་གྱུར། རིམ་པས་ས་སྐྱའི་ཁྲི་རབས་ཉི་ཤུས་ལོ་ ༩༦ རིང་བོད་སྤྱི་ལ་དབང་བསྒྱུར་ཞིང༌། དེ་རྗེས་ཕག་མོ་གྲུབ་པ་ཁྲི་རབས་བཅུ་གཅིག་གིས་ལོ་ ༨༦དང༌། རིན་སྤུངས་པ་ཁྲི་རབས་བཞི་ནས་ལོ་ ༡༣༠ དང༌། སྡེ་པ་གཙང་པའི་ཁྲི་རབས་གསུམ་གྱིས་ལོ་ ༧༦ བཅས་དབང་སྒྱུར། དགའ་ལྡན་ཕོ་བྲང་གི་དུས་རབས། སྤྱི་ལོ་ ༡༦༤༢ ནས་ ༡༩༥༠ བར་ལོ་ ༣༦༧སོགས་ཡིན།

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 dnga༌ 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' dnga༌ 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 dnga༌ khor yug ni shar du rgya nag dnga༌ man ju sog po nub tu bal yul dnga༌ rgya gar pa ki si than ab gha ni si tan byang du tur ki si tan dnga༌ u ru su lho ru 'brug dnga༌ '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 phyi 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 phyi lo 900 tsam nas mi lo 347 tsam ring bod yul mdo stod smad dnga༌ 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 86dnga༌ rin spungs pa khri rabs bzhi nas lo 130 dnga༌ 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 export = {}
 
local conv = {
	['ཀ'] = "k", ['ཁ'] = "kh", ['ག'] = "g", ['ང'] = "ng", 
	['ཅ'] = "c", ['ཆ'] = "ch", ['ཇ'] = "j", ['ཉ'] = "ny", 
	['ཏ'] = "t", ['ཐ'] = "th", ['ད'] = "d", ['ན'] = "n", 
	['པ'] = "p", ['ཕ'] = "ph", ['བ'] = "b", ['མ'] = "m", 
	['ཙ'] = "ts", ['ཚ'] = "tsh", ['ཛ'] = "dz", ['ཝ'] = "w", 
	['ཞ'] = "zh", ['ཟ'] = "z", ['འ'] = "'", ['ཡ'] = "y", 
	['ར'] = "r", ['ལ'] = "l", ['ཤ'] = "sh", ['ས'] = "s", 
	['ཧ'] = "h", ['ཨ'] = "a", 
	['ཊ'] = "ṭ", ['ཋ'] = "ṭh", ['ཌ'] = "ḍ", ['ཎ'] = "ṇ", ['ཥ'] = "ṣ", 
 
	['\224\189\178'] = "i", 
	['\224\189\180'] = "u", 
	['\224\189\186'] = "e", 
	['\224\189\188'] = "o", 
	['\224\189\177'] = "ā", 
	['\224\189\177\224\189\178'] = "ī", 
	['\224\189\177\224\189\180'] = "ū", 
	['\224\189\187'] = "ai", 
	['\224\189\189'] = "au", 
	['\224\190\178\224\190\128'] = "ṛ", 
	['\224\189\183'] = "ṝ", 
	['\224\190\179\224\190\128'] = "ḷ", 
	['\224\189\185'] = "ḹ", 
	['\224\189\190'] = 'ṃ', 
	['\224\190\131'] = "ṃ", 
	['\224\189\191'] = "aḥ", 
 
	['ྐ'] = "k", ['ྑ'] = "kh", ['ྒ'] = "g", ['ྔ'] = "ng", 
	['ྕ'] = "c", ['ྖ'] = "ch", ['ྗ'] = "j", ['ྙ'] = "ny", 
	['ྟ'] = "t", ['ྠ'] = "th", ['ྡ'] = "d", ['ྣ'] = "n", 
	['ྤ'] = "p", ['ྥ'] = "ph", ['ྦ'] = "b", ['ྨ'] = "m", 
	['ྩ'] = "ts", ['ྪ'] = "tsh", ['ྫ'] = "dz", ['ྭ'] = "w", 
	['ྮ'] = "zh", ['ྯ'] = "z", ['ྰ'] = "'", ['ྱ'] = "y", 
	['ྲ'] = "r", ['ླ'] = "l", ['ྴ'] = "sh", ['ྶ'] = "s", 
	['ྷ'] = "h", ['ྸ'] = "a", 
	['ྚ'] = "ṭ", ['ྛ'] = "ṭh", ['ྜ'] = "ḍ", ['ྞ'] = "ṇ", ['ྵ'] = "ṣ"
}
 
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',
}
 
function export.tr(text, lang, sc, debug_mode)
	for Tibetan_word in mw.ustring.gmatch(text, '[་-༑ཀ-ྼ]+') do
		local original_word = Tibetan_word
		local output = {}
		Tibetan_word = mw.ustring.gsub(Tibetan_word, '[\224\188\139\224\188\141]+$', '')
 
		for syllable in mw.text.gsplit(Tibetan_word, '\224\188\139', true) do
			local tr = {}
 
			local syl = mw.ustring.gsub(syllable, '\224\189\168([\224\189\177\224\189\178\224\189\186\224\189\188\224\189\178\224\189\180\224\190\178\224\189\183\224\190\179\224\189\185\224\189\190\224\189\191])', '%1')
			syl = mw.ustring.gsub(syl, '([\224\190\144\224\190\145\224\190\146\224\190\148\224\190\149\224\190\150\224\190\151\224\190\153\224\190\159\224\190\160\224\190\161\224\190\163\224\190\164\224\190\165\224\190\166\224\190\168\224\190\169\224\190\170\224\190\171\224\190\174\224\190\175\224\190\173\224\190\176\224\190\177\224\190\178\224\190\179\224\190\180\224\190\182\224\190\183\224\190\184]+)([^\224\189\177\224\189\178\224\189\186\224\189\188\224\189\178\224\189\180\224\190\178\224\189\183\224\190\179\224\189\185\224\189\190\224\189\191\224\190\144\224\190\145\224\190\146\224\190\148\224\190\149\224\190\150\224\190\151\224\190\153\224\190\159\224\190\160\224\190\161\224\190\163\224\190\164\224\190\165\224\190\166\224\190\168\224\190\169\224\190\170\224\190\171\224\190\174\224\190\175\224\190\173\224\190\176\224\190\177\224\190\178\224\190\179\224\190\180\224\190\182\224\190\183\224\190\184]*)$', '%1a%2')
			syl = mw.ustring.gsub(syl, '^([^\224\189\177\224\189\178\224\189\186\224\189\188\224\189\178\224\189\180\224\190\178\224\189\183\224\190\179\224\189\185\224\189\190\224\189\191]+)(\224\189\160[\224\189\177\224\189\178\224\189\186\224\189\188\224\189\178\224\189\180\224\190\178\224\189\183\224\190\179\224\189\185\224\189\190\224\189\191])$', '%1a%2')
			letter = mw.text.split(syl, "", true)
			for i = 1, #letter do
				tr[i] = conv[letter[i]] or letter[i]
			end
 
			if mw.ustring.find(syllable,'[\224\190\144\224\190\145\224\190\146\224\190\148\224\190\149\224\190\150\224\190\151\224\190\153\224\190\159\224\190\160\224\190\161\224\190\163\224\190\164\224\190\165\224\190\166\224\190\168\224\190\169\224\190\170\224\190\171\224\190\174\224\190\175\224\190\173\224\190\176\224\190\177\224\190\178\224\190\179\224\190\180\224\190\182\224\190\183\224\190\184\224\189\178\224\189\186\224\189\188\224\189\180\224\189\168\224\189\177\224\189\177\224\189\177\224\189\178\224\189\187\224\189\189\224\189\180\224\190\178\224\190\128\224\189\183\224\190\179\224\190\128\224\189\185\224\189\190\224\190\131\224\189\191]') then
				if #letter < 4 and letter[2] == 'འ' and mw.ustring.match(letter[3], '[\224\189\178\224\189\186\224\189\188\224\189\180]') then
					table.insert(tr, 2, "a'")
				end
			elseif #letter < 5 then
				if #letter > 3 then
					if letter[2] ~= 'འ' and letter[3] ~= 'འ' then
						table.insert(tr, 3, "a")
					end
				elseif #letter > 2 then
					if letter[3] == 'འ' then
						if letter[1] == 'འ' then
							tr = { "'", tr[2], "a", "'" }
						else
							tr = { tr[1], tr[2], "a", "'" }
						end
					elseif not mw.ustring.match(letter[1], '[གདབའམ]') or (mw.ustring.match(letter[1], '[གདབའམ]') and mw.ustring.match(letter[2], '[གངཐབམའརལ]') and mw.ustring.match(letter[3], '[ནས]')) then
						table.insert(tr, 2, "a")
					else
						table.insert(tr, 3, "a")
					end
				elseif mw.ustring.match(letter[1], '[གདབའམ]') and not mw.ustring.find(letter[2] or '', '[གངདཐབམའརལསན]') then
					table.insert(tr, "a")
				else
					table.insert(tr, 2, "a")
				end
			end
 
			tr = table.concat(tr)
			if mw.ustring.find(syllable, 'གཡ') then
				tr = mw.ustring.gsub(tr, 'gy', 'g.y')
			end
			table.insert(output, tr)
		end
		Tibetan_word = table.concat(output, " ")
		text = mw.ustring.gsub(text, original_word, Tibetan_word)
	end
 
	text = mw.ustring.gsub(text, '.', symbol)
 
	if mw.ustring.match(text, '[ཀ-ྼ]') and not debug_mode then
		return nil
	else
		return text
	end
end
 
return export