模块:Lyrics:修订间差异

来自KemalWiki
跳转到导航 跳转到搜索
zhmoe>D41D8CD98F
= =改变默认 style,增加 vertical-align:top。默认 style 可以在 lstyle 和 rstyle 里覆盖
zhmoe>猥琐帝
垂直对齐方式改为底部对齐 或许可以解决带假名注释的歌词左右不齐的问题
第9行: 第9行:
local llang = args.llang or 'ja'
local llang = args.llang or 'ja'
local rlang = args.rlang or 'zh'
local rlang = args.rlang or 'zh'
local lstyle = 'width:49.85%;min-width:300px;display:inline-block;vertical-align:top;white-space:pre-wrap;' .. (args.lstyle or '')
local lstyle = 'width:49.85%;min-width:300px;display:inline-block;vertical-align:bottom;white-space:pre-wrap;' .. (args.lstyle or '')
local rstyle = 'width:49.85%;min-width:300px;display:inline-block;vertical-align:top;white-space:pre-wrap;' .. (args.rstyle or '')
local rstyle = 'width:49.85%;min-width:300px;display:inline-block;vertical-align:bottom;white-space:pre-wrap;' .. (args.rstyle or '')


if args.original:match('<ruby') then
if args.original:match('<ruby') then

2016年12月22日 (四) 09:55的版本

en:Template:LyricsKai

模板:TemplateCate

该模块提供了一种简便的创建大段带翻译歌词的方法。

该模板便会为您按照行一一对应的关系生成原文和译文的对照。在高分辨率情况下,这会是左右对齐的对照。在低分辨率,原文译文会各占一行。该模块对应的模板是{{LyricsKai}}。

若要在歌词中使用多种颜色来分辨不同的演唱者,请参考使用{{LyricsKai/colors}}。注意:不建议在只有单个演唱者的歌曲条目中使用该模板。

若歌词有多个翻译版本歌词,请参考使用{{LyricsKai/multi}}。

若需要全文添加罗马字,请参考使用{{LyricsKai/Roma}}。

若要实现当指针悬停于歌词上时改变歌词背景颜色,请参考使用{{LyricsKai/hover}}。

参数

该模板目前有以下参数

  • original: 歌词原文。
  • translated: 歌词译文。歌词原文和译文的行数需要匹配。
  • llang: 原文语言标签。不指定时默认为日语(ja)。请参考Help:语言标签
  • rlang: 译文语言标签。不指定是默认为中文(zh)。格式同上。
  • lstyle: 原文部分的样式。颜色等样式可以在这里指定。
  • rstyle: 译文部分的样式。颜色等样式可以在这里指定。
  • width:設計模板的寬度,默認為100%
  • containerstyle:对整个容器应用的样式。背景颜色等同时作用于原文和译文部分的样式可以在这里指定。

此外,还有与著作权标记相关的两个参数:

  • author: 词作者/歌曲版权所有者,如果在站内有条目的可以写成内链的形式。
  • override: 当且仅当值为“1”时隐藏著作权标记,请只在该模板被用于非歌词场合或重复标记时使用。

使用方法

模板:Color

{{LyricsKai
|lstyle=color:左边字体颜色;
|rstyle=color:右边字体颜色;
|original=
原文
|translated=
译文
}}

背景颜色示例

上面一个例子示范了更改字体颜色,这个例子用于更改整个歌词部分的背景色。

{{LyricsKai
|containerstyle=background:背景颜色;
|original=
原文
|translated=
译文
}}

例子

U&I 是一个现成的使用{{LyricsKai}}的例子。


local p = {}

local getArgs = require('Module:Arguments').getArgs
local lang = require('Module:Lang')

function p._lyrics(args)
	local orig = mw.text.split(args.original or '', '\n')
	local tran = mw.text.split(args.translated or '', '\n')
	local llang = args.llang or 'ja'
	local rlang = args.rlang or 'zh'
	local lstyle = 'width:49.85%;min-width:300px;display:inline-block;vertical-align:bottom;white-space:pre-wrap;' .. (args.lstyle or '')
	local rstyle = 'width:49.85%;min-width:300px;display:inline-block;vertical-align:bottom;white-space:pre-wrap;' .. (args.rstyle or '')

	if args.original:match('<ruby') then
		lstyle = 'line-height:2.1;' .. lstyle
		rstyle = 'line-height:2.1;' .. rstyle
	end

	local html = mw.html.create()

	for i, v in pairs(orig) do
		html:
			tag('div')
				:tag('div')
					:cssText(lstyle)
					:node(lang.wrap(v, llang))
					:tag('br')
						:done()
					:done()
				:tag('div')
					:cssText(rstyle)
					:node(lang.wrap(tran[i], rlang))
					:tag('br')
						:done()
					:done()
	end
	
	-- Clear the floating
	html:tag('div'):cssText('clear:both')

	return tostring(html)
end

function p.lyrics(frame)
	local args = getArgs(frame, {wrappers='Template:LyricsKai'})
	return p._lyrics(args)
end

return p