Mô đun:Documentation/translit
Giao diện
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("Module:languages").getByCode(code, nil, true, true) or require("Module:scripts").getByCode(code)
end
local function get_code_from_title_without_namespace(title_without_namespace)
local prefix = title_without_namespace:match("^(.+)%-translit%f[/%z]")
if not prefix then
error("Base segment of title should end in -translit: " .. title_without_namespace)
end
local code = prefix
local lang_or_family_or_script = get_by_code(code)
if not lang_or_family_or_script then
-- Accommodate modules with multiple codes in the title.
-- The first code should be used.
-- Right now it strips segments from the end until it finds a match:
-- Module:Deva-Beng-translit -> Deva-Beng -> Deva
-- Module:inc-pra-Deva-translit -> inc-pra-Deva -> inc-pra
-- Module:Deva-mnc-Mong-translit -> Deva-mnc-Mong -> Deva-mnc -> Deva
while true do
new_code = code:match("^(.+)%-[^%-]+$")
if new_code then
code = new_code
else
break
end
lang_or_family_or_script = get_by_code(new_code)
if lang_or_family_or_script then
break
end
end
end
return code, lang_or_family_or_script
end
function export.documentation(title_without_namespace, explanation)
local code, lang_or_family_or_script = get_code_from_title_without_namespace(title_without_namespace)
return export.documentation_from_code(code, explanation, title_without_namespace)
end
function export.documentation_from_code(code, explanation, title_without_namespace)
local lang_or_family_or_script = get_by_code(code)
if not lang_or_family_or_script then
return "Language code in page name (<code>" .. code .. "</code>) not recognized."
end
local category_name = lang_or_family_or_script:getCategoryName()
local transliteration_input
if lang_or_family_or_script:hasType("script") then
transliteration_input = "text in the [[:Category:" .. category_name .. "|" .. category_name .. "]]"
elseif lang_or_family_or_script:hasType("family") then
transliteration_input = "text in one of the [[:Category:" .. category_name .. "|" .. category_name .. "]]"
else -- language
transliteration_input = "[[:Category:" .. category_name .. "|" .. category_name .. "]] text"
end
local tr_page = "WT:" .. mw.ustring.upper(code) .. " TR"
return "This module will transliterate " .. transliteration_input
.. (explanation and " " .. explanation or "")
.. (mw.title.new(tr_page).exists and " per [[" .. tr_page .. "]]" or "")
.. ". "
.. require("Module:Documentation").translitModuleLangList({args = { [1] = title_without_namespace:gsub("/documentation$", "") }})
.. [=[
Mô đun này không nên được gọi trực tiếp từ các bản mẫu hoặc mô đun khác.
Để sử dụng từ một bản mẫu, dùng <code>{{[[Bản mẫu:xlit|xlit]]}}</code>.
Trong một mô đun, dùng [[Mô đun:languages#Language:transliterate]].
Đối với trường hợp kiểm thử, xem [[Mô đun:]=] .. title_without_namespace:gsub("/documentation$", "") .. [=[/testcases]].
== Chức năng ==
; <code>tr(text, lang, sc)</code>
: Chuyển tự một <code>text</code> (văn bản) được đưa ra và viết bằng chữ viết được xác định bởi mã <code>sc</code>, và ngôn ngữ được xác định bởi mã <code>lang</code>.
: Nếu chuyển tự thất bại, nó sẽ gọi giá trị <code>nil</code>.]=]
.. require("Module:module categorization").categorize(fake_frame({
is_template = "1",
[1] = title_without_namespace,
}, {
[1] = code,
}))
end
function export.documentation_template(frame)
-- Parameters to {{translit module documentation}}:
-- |code|description
-- Ignore code because we get it from the page name.
local pagename = mw.title.getCurrentTitle().text
local args = frame:getParent().args
if args[1] and get_code_from_title_without_namespace(pagename) ~= args[1] then
-- [[Special:WhatLinksHere/Template:tracking/translit/input different from title]]
require("Module:debug").track("translit/input different from title")
end
if args[1] then
return export.documentation_from_code(args[1], args[2], pagename)
else
return export.documentation(pagename, args[2])
end
end
return export