Module:fa-translit

From Wiktionary, the free dictionary
Jump to navigation Jump to search

Generates both the Classical romanization and the Iranian romanization, from the classical vocalization, using module:fa-cls-translit as a backend. Still a work-in-progress. To transliterate Classical Persian and Iranian Persian text independently use their independent transliteration modules listed below:

Override Iranian romanization

[edit]

The outputted Iranian romanization can be overwritten by vocalizing the word twice (using classical vocalization) with both vocalizations separated by //. This will cause the text to the left of the // to be the outputted classical romanization and the text on the right to be the outputted Iranian romanization. Be aware that, due to how MediaWiki processes bidirectional text, the vocalizations may appear to switch sides when viewed from the Wikitext editor.

Example 1
Input: نَمی‌دَانَم//نِمی‌دَانَم
Output: namē-dānamnemi-dânam
Example 2
Input: خَانَگِی//خَانِگِی
Output: xānagīxânegi
Example 3
Input: موز//مَوْز
Output: mōzmowz

Tests

[edit]

All tests passed. (refresh)

TextExpectedActual
test_translit_persian:
Passedگویَا کِهgōyā kiguyâ kegōyā kiguyâ ke
Passedحُقُوقhuqūqhoğuğhuqūqhoğuğ
Passedدَقِیقَهdaqīqadağiğedaqīqadağiğe
Passedخْوَرَاسَانxwarāsānxorâsânxwarāsānxorâsân
Passedخْویشxwēšxišxwēšxiš
Passedروزrōzruzrōzruz
Passedوَلیکِنwalēkinvalikenwalēkinvaliken
Passedشُویْšūyšuyšūyšuy
Passedشویْšōyšuyšōyšuy
Passedشِیرšīrširšīršir
Passedشیرšērširšēršir
Passedشَوْهَرšawharšowharšawharšowhar
Passedکَسیkasēkasikasēkasi
Passedگویِشgōyišguyešgōyišguyeš
Passedبَیْنُ‌المِلَلِیbaynu-l-milalībeyno-l-melalibaynu-l-milalībeyno-l-melali
Passedشَوِیšawīšavišawīšavi
Passedشِوِیšiwīševišiwīševi
Passedشُویšuwēšovišuwēšovi
Passedخْوَدْرَوxwadrawxodrowxwadrawxodrow
Passedحقوق(nil)(nil)
Passedعشق(nil)(nil)
Passedنَمی‌دَانَمنِمی‌دَانَمnamē-dānamnemi-dânamnamē-dānamnemi-dânam
Passedخَانَگِیخَانِگِیxānagīxânegixānagīxânegi
Passedموزمَوْزmōzmowzmōzmowz

local export = {}
local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local EOW = "([" .. "%s" .. "\n" .. "%p" .. "%x" .. "])"
local POW = "([" .. "%S" .. "]+)"
local hyphen = "<span class=\"Zsym mention\" style=\"font-size:85%;\">/</span>"

local function basetr(text, lang, sc)
	return require("Module:fa-cls-translit").tr(text, lang, sc)
end

function export.CLS_tr(text)
	-- if // is present, ignore // and everything AFTER
	text = gsub(text, "(//)" .. ".*", "")
	text = basetr(text, lang, sc)
	if text == nil then
		return nil
		end
	return text
end

function export.IRA_tr(text)
	-- if // is present, ignore // and everything BEFORE
	text = gsub(text, "^" .. ".*" .. "(//)", "")
	text = basetr(text, lang, sc)
	if text == nil then
		return nil
	end
	text = require('Module:fa-IPA').romanize_ira(text)
	return text
end

function export.tr(text)
	if export.CLS_tr(text) == nil or export.IRA_tr(text) == nil then
		return nil
		else
	text = export.CLS_tr(text) .. hyphen .. export.IRA_tr(text)
	end
	return text
end

-- for other modules
function export.frame_xlit(text1, text2)
	text = text1 .. hyphen .. text2
	return text
	end

return export