打开/关闭搜索
搜索
打开/关闭菜单
937
1
5.7万
DOL ShipMaker Wiki
索引
首页
返回主站点
世界地图
特殊页面
上传文件
游戏资料
游戏介绍
国家介绍
人物介绍
历代版本
EP1 Original
EP2 La Frontera
EP3 Cruz del Sur
EP4 El Oriente
EP5 Tierra Americana
EP6 2nd Age
EP7 Gran Atlas
EP8 Atlantis
EP9 Age of Revolution
EP10 Order of the Prince
EP11 Lost Memories
EP12 Seven Wonders
EP12 Extra Polars
冒险专区
发现物
冒险任务
书库地图
遗迹地下城
沉船打捞
睿智之书
传说任务
学术论战
商人专区
交易品
商业任务
特产品
南蛮贸易
大投资战
稀少交易品
学术论战
打开/关闭外观设置菜单
notifications
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“︁模块:Lang”︁的源代码
来自DOL ShipMaker Wiki
查看
阅读
查看源代码
查看历史
associated-pages
模块
讨论
更多操作
←
模块:Lang
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于这些用户组的用户执行:
管理员
、editor
您可以查看和复制此页面的源代码。
-- Module:Lang -- 用途:给定一个页面路径(如 "交易品/葡萄酒"、"城市/塞维利亚"), -- 读取该页面的 wikitext,解析 |zh= |zh-tw= |ja= |en= 字段, -- 生成带多语言 span 的链接 HTML。 -- -- 调用方式: -- {{#invoke:Lang|link|交易品/葡萄酒}} -- {{#invoke:Lang|link|城市/塞维利亚|prefix=书库:}} -- {{#invoke:Lang|link|交易品/葡萄酒|nolink=1}} -- {{#invoke:Lang|links|技能/地理学 技能/生态调查}} local p = {} -- 页面路径前缀 → CSS class 前缀映射 local CLASS_MAP = { ['交易品'] = 'goods-lang', ['城市'] = 'city-lang', ['发现物'] = 'discovery-lang', ['书库地图'] = 'map-lang', ['技能'] = 'skill-lang', ['海域'] = 'sea-lang', } -- 从 wikitext 中解析单个参数值 local function parseParam( wikitext, key ) -- 匹配 |key=value,value 到下一个 | 或 }} 为止 local val = wikitext:match( '|' .. key .. '=([^|{}]*)' ) if val then val = val:match( '^%s*(.-)%s*$' ) -- trim end return val or '' end -- 生成多语言 span HTML(不含链接) local function makeSpans( cssPrefix, zh, zhtw, ja, en ) local function span( lang, text, hidden ) local style = hidden and ' style="display:none"' or '' return string.format( '<span class="%s %s-%s"%s>%s</span>', cssPrefix, cssPrefix, lang, style, text ) end return span('zh', zh, false) .. span('zh-tw', zhtw ~= '' and zhtw or zh, true) .. span('ja', ja ~= '' and ja or zh, true) .. span('en', en ~= '' and en or zh, true) end -- 主函数:生成带链接的多语言 span function p.link( frame ) local pagePath = frame.args[1] or '' pagePath = pagePath:match( '^%s*(.-)%s*$' ) if pagePath == '' then return '' end local prefix = frame.args['prefix'] or '' local nolink = frame.args['nolink'] or '' -- 取页面前缀(斜杠前的部分) local ns = pagePath:match( '^([^/]+)/' ) or '' local cssPrefix = CLASS_MAP[ ns ] or 'lang' -- 读取目标页面 wikitext local title = mw.title.new( pagePath ) if not title then return '[[' .. pagePath .. ']]' end local wikitext = title:getContent() or '' -- 解析多语言字段 local zh = parseParam( wikitext, 'zh' ) local zhtw = parseParam( wikitext, 'zh%-tw' ) local ja = parseParam( wikitext, 'ja' ) local en = parseParam( wikitext, 'en' ) -- 没有 zh 字段说明页面不存在或格式不对,回退到红链 if zh == '' then local name = pagePath:match( '/(.+)$' ) or pagePath zh = name end local spans = makeSpans( cssPrefix, zh, zhtw, ja, en ) if nolink == '1' then return prefix .. spans else return prefix .. '[[' .. pagePath .. '|' .. spans .. ']]' end end -- 批量生成:空格分隔多个页面路径,常用于技能列表 -- {{#invoke:Lang|links|技能/地理学 技能/生态调查|sep= }} function p.links( frame ) local input = frame.args[1] or '' local sep = frame.args['sep'] or ' ' local nolink = frame.args['nolink'] or '' local results = {} for path in input:gmatch( '%S+' ) do local inner = frame:callParserFunction( '#invoke', { 'Lang', 'link', path, nolink = nolink } ) -- 直接调用 p.link local f = { args = { path, nolink = nolink } } table.insert( results, p.link( f ) ) end return table.concat( results, sep ) end return p
该页面使用的模板:
模块:Lang/doc
(
查看源代码
)
返回
模块:Lang
。
查看“︁模块:Lang”︁的源代码
来自DOL ShipMaker Wiki