Module:fulf-translit: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 84: | Line 84: | ||
} | } | ||
function export.tr(text, lang, sc) | function export.tr(text, lang, sc) | ||
| Line 104: | Line 92: | ||
return nil | return nil | ||
elseif lang == "fulf" then | elseif lang == "fulf" then | ||
return export. | return export.b_tr(text) | ||
elseif lang == "hbo" then --though useless | elseif lang == "hbo" then --though useless | ||
return export. | return export.b_tr(text) | ||
end | end | ||
end | end | ||
Revision as of 06:29, 28 June 2026
- The following documentation is generated by Module:documentation/functions/translit. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
This module will transliterate Fulfathic language 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:fulf-translit/testcases.
Functions
tr(text, lang, sc)- Transliterates a given piece of
textwritten in the script specified by the codesc, and language specified by the codelang. - When the transliteration fails, returns
nil.
local export = {}
--Contributors: Malku H₂n̥rés, Sartma, Erutuon, Metaknowledge
local m_str_utils = require("Module:string utilities")
local gcodepoint = m_str_utils.gcodepoint
local match = m_str_utils.match
local s = m_str_utils.gsub
local U = m_str_utils.char
local bidirectional_control_characters =
U(0x061C) .. U(0x200E) .. U(0x200F) .. U(0x202A) .. "-" .. U(0x202E)
.. U(0x2066) .. "-" .. U(0x2069)
local word_end = "%f[%s%z" .. bidirectional_control_characters .. "%-]"
local word_start = "%f[^%s%z" .. bidirectional_control_characters .. "%-]"
-- Bidirectional control characters should be avoided as much as possible,
-- but they are easily picked up when copying and pasting, so the module needs
-- to account for them.
-- This list is from [[w:Bidirectional control character]].
local V = "[aeiouāēīōū][̂̄̆]?́?"
local C = "[ʔḇḡḏhwzḥṭylsʕqrśšṯ'ḵmnfṣbdgptkjc″vḫẓġTZCDK]"
local c = { --direct translit
--full char ie. C
["א"] = "ʔ",
["ב"] = "ḇ",
["ג"] = "ḡ",
["ד"] = "ḏ",
["ה"] = "h",
["ו"] = "w",
["ז"] = "z",
["ח"] = "ḥ",
["ט"] = "ṭ",
["י"] = "y",
["ל"] = "l",
["ס"] = "s",
["ע"] = "ʕ",
["ק"] = "q",
["ר"] = "r",
["ש"] = "š",
["ת"] = "ṯ",
--miscellaneous:
["׳"] = "'", --geresh
["־"] = "-", --hyphen
["׃"] = " .", --dot
["ּ"] = "·", --dagesh
["ֽ"] = "+", --meteg
--niqqud ie. V
["ַ"] = "a",
["ָ"] = "ɔ",
["ֶ"] = "ɛ",
["ֵ"] = "e",
["ִ"] = "i",
["ֳ"] = "ɔ̆",
["ֲ"] = "ă",
["ֱ"] = "ɛ̆",
["ְ"] = "ü",
["ֹ"] = "o",
["ֺ"] = "o",
["ֻ"] = "u",
["ׇ"] = "ɔ",
}
local b = { --BH
--bgdkft: fricative + dagesh > stop
{"ḇ·", "b"},
{"ḡ·", "g"},
{"ḏ·", "d"},
{"ṯ·", "t"},
{"ḵ·", "k"},
{"f·", "p"},
--vowel lengthenings
{"ey", "ē%1"},
{"ow", "ō%1"},
{"aʔ", "ā%1"},
{"iy", "ī%1"},
{"uw", "ū%1"},
{"ē(" .. V .. ")", "ey%1"},
{"ō(" .. V .. ")", "ow%1"},
{"ī(" .. V .. ")", "iy%1"},
{"ū(" .. V .. ")", "uw%1"},
}
function export.tr(text, lang, sc)
if not sc then
sc = require("Module:languages").getByCode(lang, nil, true):findBestScript(text):getCode()
end
if sc ~= "Hebr" or not match(text, "[ְ-ֻ־ׇ״]") then
return nil
elseif lang == "fulf" then
return export.b_tr(text)
elseif lang == "hbo" then --though useless
return export.b_tr(text)
end
end
function export.tr_all(frame)
return export.BH_tr(frame.args[1]) .. ", " .. export.MH_tr(frame.args[1])
end
return export