<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Adocumentation%2Ftranslit</id>
	<title>Module:documentation/translit - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3Adocumentation%2Ftranslit"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:documentation/translit&amp;action=history"/>
	<updated>2026-05-09T15:35:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=Module:documentation/translit&amp;diff=516447&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;local export = {}  local function fake_frame(args, parent_args) 	return { 		args = args, 		getParent = function() 			return { 				args = parent_args, 			} 		end 	} end  function get_by_code(code) 	return require(&quot;Module:languages&quot;).getByCode(code, nil, true, true) or require(&quot;Module:scripts&quot;).getByCode(code) end  local function get_code_from_title_without_namespace(title_without_namespace) 	local prefix = title_without_namespace:match(&quot;^(.+)%-translit%f[/%z]&quot;) 	if not pr...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=Module:documentation/translit&amp;diff=516447&amp;oldid=prev"/>
		<updated>2026-05-08T12:30:20Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local export = {}  local function fake_frame(args, parent_args) 	return { 		args = args, 		getParent = function() 			return { 				args = parent_args, 			} 		end 	} end  function get_by_code(code) 	return require(&amp;quot;Module:languages&amp;quot;).getByCode(code, nil, true, true) or require(&amp;quot;Module:scripts&amp;quot;).getByCode(code) end  local function get_code_from_title_without_namespace(title_without_namespace) 	local prefix = title_without_namespace:match(&amp;quot;^(.+)%-translit%f[/%z]&amp;quot;) 	if not pr...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local export = {}&lt;br /&gt;
&lt;br /&gt;
local function fake_frame(args, parent_args)&lt;br /&gt;
	return {&lt;br /&gt;
		args = args,&lt;br /&gt;
		getParent = function()&lt;br /&gt;
			return {&lt;br /&gt;
				args = parent_args,&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function get_by_code(code)&lt;br /&gt;
	return require(&amp;quot;Module:languages&amp;quot;).getByCode(code, nil, true, true) or require(&amp;quot;Module:scripts&amp;quot;).getByCode(code)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_code_from_title_without_namespace(title_without_namespace)&lt;br /&gt;
	local prefix = title_without_namespace:match(&amp;quot;^(.+)%-translit%f[/%z]&amp;quot;)&lt;br /&gt;
	if not prefix then&lt;br /&gt;
		error(&amp;quot;Base segment of title should end in -translit: &amp;quot; .. title_without_namespace)&lt;br /&gt;
	end&lt;br /&gt;
	local code = prefix&lt;br /&gt;
	local lang_or_family_or_script = get_by_code(code)&lt;br /&gt;
	if not lang_or_family_or_script then&lt;br /&gt;
		-- Accommodate modules with multiple codes in the title.&lt;br /&gt;
		-- The first code should be used.&lt;br /&gt;
		-- Right now it strips segments from the end until it finds a match:&lt;br /&gt;
		-- Module:Deva-Beng-translit -&amp;gt; Deva-Beng -&amp;gt; Deva&lt;br /&gt;
		-- Module:pra-Deva-translit -&amp;gt; pra-Deva -&amp;gt; pra&lt;br /&gt;
		-- Module:Deva-mnc-Mong-translit -&amp;gt; Deva-mnc-Mong -&amp;gt; Deva-mnc -&amp;gt; Deva&lt;br /&gt;
		while true do&lt;br /&gt;
			new_code = code:match(&amp;quot;^(.+)%-[^%-]+$&amp;quot;)&lt;br /&gt;
			if new_code then&lt;br /&gt;
				code = new_code&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
			lang_or_family_or_script = get_by_code(new_code)&lt;br /&gt;
			if lang_or_family_or_script then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return code, lang_or_family_or_script&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.documentation(title_without_namespace, explanation)&lt;br /&gt;
	local code, lang_or_family_or_script = get_code_from_title_without_namespace(title_without_namespace)&lt;br /&gt;
	return export.documentation_from_code(code, explanation, title_without_namespace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.documentation_from_code(code, explanation, title_without_namespace)&lt;br /&gt;
	local lang_or_family_or_script = get_by_code(code)&lt;br /&gt;
	&lt;br /&gt;
	if not lang_or_family_or_script then&lt;br /&gt;
		return &amp;quot;Language code in page name (&amp;lt;code&amp;gt;&amp;quot; .. code .. &amp;quot;&amp;lt;/code&amp;gt;) not recognized.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local category_name = lang_or_family_or_script:getCategoryName()&lt;br /&gt;
	&lt;br /&gt;
	local transliteration_input&lt;br /&gt;
	if lang_or_family_or_script:hasType(&amp;quot;script&amp;quot;) then&lt;br /&gt;
		transliteration_input = &amp;quot;text in the [[:Category:&amp;quot; .. category_name .. &amp;quot;|&amp;quot; .. category_name .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	elseif lang_or_family_or_script:hasType(&amp;quot;family&amp;quot;) then&lt;br /&gt;
		transliteration_input = &amp;quot;text in one of the [[:Category:&amp;quot; .. category_name .. &amp;quot;|&amp;quot; .. category_name .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	else -- language&lt;br /&gt;
		transliteration_input = &amp;quot;[[:Category:&amp;quot; .. category_name .. &amp;quot;|&amp;quot; .. category_name .. &amp;quot;]] text&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local tr_page = &amp;quot;WT:&amp;quot; .. mw.ustring.upper(code) .. &amp;quot; TR&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	return &amp;quot;This module will transliterate &amp;quot; .. transliteration_input&lt;br /&gt;
		.. (explanation and &amp;quot; &amp;quot; .. explanation or &amp;quot;&amp;quot;)&lt;br /&gt;
		.. (mw.title.new(tr_page).exists and &amp;quot; per [[&amp;quot; .. tr_page .. &amp;quot;]]&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
		.. &amp;quot;. &amp;quot;&lt;br /&gt;
		.. require(&amp;quot;Module:documentation&amp;quot;).translitModuleLangList({args = { [1] = title_without_namespace:gsub(&amp;quot;/documentation$&amp;quot;, &amp;quot;&amp;quot;) }})&lt;br /&gt;
		.. [=[&lt;br /&gt;
&lt;br /&gt;
The module should preferably not be called directly from templates or other modules.&lt;br /&gt;
To use it from a template, use &amp;lt;code&amp;gt;{{[[Template:xlit|xlit]]}}&amp;lt;/code&amp;gt;.&lt;br /&gt;
Within a module, use [[Module:languages#Language:transliterate]].&lt;br /&gt;
&lt;br /&gt;
For testcases, see [[Module:]=] .. title_without_namespace:gsub(&amp;quot;/documentation$&amp;quot;, &amp;quot;&amp;quot;) .. [=[/testcases]].&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
; &amp;lt;code&amp;gt;tr(text, lang, sc)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Transliterates a given piece of &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; written in the script specified by the code &amp;lt;code&amp;gt;sc&amp;lt;/code&amp;gt;, and language specified by the code &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt;.&lt;br /&gt;
: When the transliteration fails, returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.]=]&lt;br /&gt;
		.. require(&amp;quot;Module:module categorization&amp;quot;).categorize(fake_frame({&lt;br /&gt;
				is_template = &amp;quot;1&amp;quot;,&lt;br /&gt;
				[1] = title_without_namespace,&lt;br /&gt;
			}, {&lt;br /&gt;
				[1] = code,&lt;br /&gt;
			}))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function export.documentation_template(frame)&lt;br /&gt;
	-- Parameters to {{translit module documentation}}:&lt;br /&gt;
	-- |code|description&lt;br /&gt;
	-- Ignore code because we get it from the page name.&lt;br /&gt;
	local pagename = mw.title.getCurrentTitle().text -- DO NOT replace with mw.loadData(&amp;quot;Module:headword/data&amp;quot;).pagename as we need the root portion&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	if args[1] and get_code_from_title_without_namespace(pagename) ~= args[1] then&lt;br /&gt;
		-- [[Special:WhatLinksHere/Wiktionary:Tracking/translit/input different from title]]&lt;br /&gt;
		require(&amp;quot;Module:debug&amp;quot;).track(&amp;quot;translit/input different from title&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		return export.documentation_from_code(args[1], args[2], pagename)&lt;br /&gt;
	else&lt;br /&gt;
		return export.documentation(pagename, args[2])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return export&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>