Module:fa-ira-translit
- The following documentation is located at Module:fa-ira-translit/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
This module will transliterate Iranian Persian text.
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:fa-ira-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
.
Notes
THIS MODULE SHOULD NOT BE USED FOR CLASSICAL PERSIAN OR DARI Due to pronunciation differences between modern Iranian Persian from other varieties of Persian, as well ans differences in vowel notation, Iranian Persian cannot be transliterated the same way as other varieties of Persian. If you need to transliterate a variety of Persian other than modern Iranian Persian, use Module:fa-cls-translit.
This module uses Module:fa-cls-translit as a backend.
Test cases
3 of 38 tests failed. (refresh)
Text | Expected | Actual | Differs at | |
---|---|---|---|---|
سَرْاَنْجام | sar-anjâm | sar-anjâm | ||
کُروز | koruz | koruz | ||
کُرُوز | korowz | korowz | ||
واو | vâv | vâv | ||
نُوروز | nowruz | nowruz | ||
قَهْوِهای | ğahve-i | ğahve-i | ||
خوانْدَن | xândan | xândan | ||
خویش | xiš | xiš | ||
خوَد | xod | xod | ||
چامِهسَرایی | čâme-sarâyi | čâme-sarâyi | ||
چامهسَرایی | (nil) | (nil) | N/A | |
طَنین | tanin | tanin | ||
طَنِین | taneyn | taneyn | ||
لِهٰذا | lehâzâ | lehâzâ | ||
عَصاً | asan | asan | ||
خانه | (nil) | (nil) | N/A | |
خانِه | xâne | xâne | ||
کُرِهٔ شُمالی | kore-ye šomâli | kore-ye šomâli | ||
ضَمّه | (nil) | (nil) | N/A | |
ضَمِّه | zamme | zamme | ||
وُدْکا | vodkâ | vodkâ | ||
اَرْمَنِسْتان | armanestân | armanestân | ||
باکو | bâku | bâku | ||
بَرادَرِ بُزُرْگ | barâdar-e bozorg | barâdar-e bozorg | ||
قُرونِ وُسْطیٰ | ğorun-e vostâ | ğorun-e vostâ | ||
دَرْ-آمَد | dar-âmad | dar-âmad | ||
بازیِ شَطْرَنْج | bâzi-ye šatranj | bâzi-ye šatranj | ||
متعلق | (nil) | (nil) | N/A | |
مُتَعَلِّق | mota'alleğ | mota'alleğ | ||
اِتِّحادِیِهٔ اُروپا | ettehâdiye-ye orupâ | ettehâdiye-ye orupâ | ||
آیَتُاللّٰه | âyato-llâh | âyato-l-lâh | 8 | |
شِیْخ | šeyx | šeyx | ||
نُوْروز | nowruz | nowruz | ||
پَیام | payâm | peyâm | 2 | |
اَیّوب | ayyub | eyّub | 1 | |
شِبْهِجَزیرِه | šebh-e-jazire | šebh-e-jazire | ||
پایْگاهِدادِه | pâygâh-e-dâde | pâygâh-e-dâde | ||
صَحْرایِ غَرْبی | sahrâ-ye ğarbi | sahrâ-ye ğarbi |
local export = {}
local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local U = m_str_utils.char
local fatHatan = U(0x64B)
local zabar = U(0x64E)
local zer = U(0x650)
local pesh = U(0x64F)
local tashdid = U(0x651) -- also called shadda
local jazm = "ْ"
local he = "ه"
local zwnj = U(0x200C)
local highhmz = U(0x654)
local alef_wasla = "ٱ"
local balticons = "ڃڇڑڗݜݨݩǩ"
local consonants = "ءبپتټٹثجچحخدډڈذرزژسشصضطظعغفقکگلمنؤهئ"
local consonants2 = "ءبپتټٹثجچحخدډڈذرزژسشصضطظعغفقکگلمنوؤهیئyw" .. balticons -- including semivowels
local ain = "ع"
local alif = "ا"
local ye = "ی"
local ye2 = "ئ"
local ye3 = "ے" -- for balti
local vao = "و"
local function clscheck(text, lang, sc)
return require("Module:fa-cls-translit").tr(text, lang, sc)
end
-- this has the fa-cls-translit perform the diactic check and other basic functions
function export.tr(text, lang, sc)
text = gsub(text, alif .. fatHatan, fatHatan)
text = gsub(text, "([" .. consonants2 .. "])" .. alif, "%1" .. zabar .. alif)
text = gsub(text, pesh .. vao .. "([" .. consonants .. jazm .. "])", zabar .. vao .. "%1")
text = gsub(text, zer .. ye .. "([" .. consonants .. jazm .. "])", zabar .. ye .. "%1")
-- alows an alif without a zabar to work
text = clscheck(text, lang, sc)
if text == nil then --prevent module from breaking if diacritic check fails
return nil
end
text = gsub(text, "e" .. " ", "e-ye")
text = gsub(text, "iy", "ēy")
text = gsub(text, "y%-i", "ē-yi")
text = gsub(text, "q", "ğ")
text = gsub(text, "ww", "vv")
text = gsub(text, "i", "e")
text = gsub(text, "u", "o")
text = gsub(text, "ē", "i")
text = gsub(text, "ay([^yaâeoiu])", "ī%1")
text = gsub(text, "ī", "ey")
text = gsub(text, "ō", "u")
text = gsub(text, "ā", "â")
text = gsub(text, "w([aâeoiu])", "v%1")
text = gsub(text, "aw", "ū")
text = gsub(text, "w", "v")
text = gsub(text, "ū", "ow")
return text
end
return export