bugfix20250107.1
全站通知:

模块:双语歌词

来自卡拉彼丘WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:双语歌词/doc创建

local getArgs = require("Module:Arguments").getArgs
local f = string.format
local p = {}

function p.main(frame)
	local mwArgs = getArgs(frame, {
		removeBlanks = false,
	})
	local args = {}
	for k, v in pairs(mwArgs) do
		args[k] = v
	end

	local originalLang = args.llang or "ja"
	local translatedLang = args.rlang or "zh"

	local lstyle = args.lstyle or "color: rgb(255, 255, 224);"
	local rstyle = args.rstyle or "color: rgb(255, 192, 203);"

	if (#args % 2 ~= 0) then
		error(f("匿名参数数量(当前:%d)不是偶数,必须是原文+翻译成对出现。", #args))
	end

	local lyricTable = { '<div class="row">' }
	local function addLine(text)
		lyricTable[#lyricTable+1] = text
	end

	for i = 1, #args, 2 do
		local originalText = args[i]
		local translatedText = args[i + 1]

		addLine(f('<div class="col-sm-6 original-lang"><span style="%s" lang="%s">%s</span></div>', lstyle, originalLang, originalText or ""))
		addLine(f('<div class="col-sm-6 translated-lang"><span style="%s" lang="%s">%s</span></div>', rstyle, translatedLang, translatedText or ""))
	end

	addLine('</div>')
	return table.concat(lyricTable, "\n")
end

return p