永久保护模块

模板翻译

来自MyaWiki.Org
跳转到导航 跳到搜索
模块文档

此模板用于显示当前页语言中的可翻译模板。

地方的  = {}

功能 .检查语言子页面 违约
    - [首先检查是否有任何无效字符会导致
My.Lang.EngEngEngAgEtAg函数()抛出异常:
-在[\\\\\ 031 \ 127 ]中的所有ASCII控件,
-双引号(“”),尖符号(α),安培(and),撇号(′),
-斜杠(/),冒号(:),分号(;),低于(<),大于(>),
-括号和括号([,],{,}),管(()),反斜杠(\)
所有其他字符都被接受,包括空间和所有非ASCII字符。
字符(包括192,在UTF-8中无效)。
----]
    如果 兆瓦级.语言.IS-验证码子页面  兆瓦级.语言.已知语言子页面
    [[然而“支持语言”)过于严格,因为他们抛弃了许多语言。
有效的BCP47脚本变体(仅因为MyaWiKi还没有)
为他们定义自动音译器,例如“EN DSRT”或
“Fr.BrAI”用于法语盲文音译)和国家变体
(在本地化数据中有用,即使它们不再用于
翻译,如ZH-CN,也适用于遗留代码。
我们希望避免匹配包含任何大写字母的子页面名,
(即使它们在BCP 47中被认为是有效的,它们是
不区分大小写;它们不是MyaWiKi的“支持语言”,所以
它们不是MyaWiKi的“知识语言”。
为了更严格,我们排除任何字符。
*不是ASCII,不是小写字母,减连字符或数字,
或者不是以字母开头,也不是以字母或数字结束;
*或连字符之间有超过8个字符;
*或有两个连字符;
*或具有特定用途的模板子页和不可用的语言。
----]
      寻找子页面 “^ [%L] [%-%D%L] *[%D%L] $” ~= 
     寻找子页面 [%d%L] [%d%L] [%d%L] [%d%L] [%d%L] [%d%L] [%d%L] [%d%L] = 
     寻找子页面 “%-%-” = 
     子页面 ~= “博士”
     子页面 ~= “布局”
     子页面 ~= “沙盒”
     子页面 ~= “测试用例”
     子页面 ~= “初始化”
     子页面 ~= “预载”
    然后
        返回 子页面
    结束
    否则当前没有已知的语言子页
    返回 违约
结束

- [如果它是翻译的话,获取任意页面的最后子页面。
从模板中使用。
] ]
功能 .获取语言页面框架
	当地 头衔 = 框架  框架.阿尔茨海默病[]
	如果  头衔  头衔 =  然后
		头衔 = 兆瓦级.头衔.获取当前标题()
	结束
	返回 .第三语言头衔
结束

- [如果它是翻译的话,获取任意页面的最后子页面。
用于Lua。
] ]
功能 .第三语言头衔
	如果 类型头衔 = “弦” 然后
		头衔 = 兆瓦级.头衔.头衔
	结束
	如果  头衔 然后
		无效的标题
		返回 
	结束
	[[此代码不在转换工具工作的所有命名空间中工作]。
-它在元命名空间上工作,因为它允许子页面
-它不会在英文维基百科的主要命名空间中工作(但是
文章在维基上独具一格。
在元维基上,主空间使用子页面,并对其页面进行翻译。
翻译工具允许在所有命名空间中转换页面,即使
-命名空间正式没有子页面。
——在元wiki上,类别命名空间仍然没有启用子页面,
——即使它们对分类模板非常有用,但确实如此。
-子页面(用于文档和TStbox页面)。这是一个错误配置
元Wiki的错误。周围的工作是分割整个标题,然后
-获得最后的标题部分。
本地子页面=标题
----]
	地方的 标题部分 = 兆瓦级.文本.分裂头衔.全文 “/”
	地方的 子页面 = 标题部分[γ标题部分]
	返回 .检查语言子页面 
结束

- [如果当前页是翻译,则获取当前页的最后一个子页。
] ]
功能 .获取当前语言()
	返回 .第三语言兆瓦级.头衔.获取当前标题()
结束

- [在'-'之前获取子页的语言代码的第一部分。
] ]
功能 .GETMIN语言()
	部分 = 兆瓦级.文本.分裂 .获取当前语言() “-” 
	返回 部分[]
结束

- [如果当前的子帧是平移,则获取当前帧的最后一个子页。
不在本地使用。
] ]
功能 .GETFLAM语言框架
	返回 .第三语言框架获得亲本()获得所有权()
结束

- [获取当前页面的语言]。
不在本地使用。
] ]
功能 .获取语言()
    地方的 子页面 = 兆瓦级.头衔.获取当前标题()子页面
    返回 .检查语言子页面 兆瓦级.语言.获取内容语言()GETCODE()
结束

- [获取当前帧的语言]。
不在本地使用。
] ]
功能 .获取框架语言框架
    地方的 标题部分 = 兆瓦级.文本.分裂框架获得亲本()获得所有权() “/”
    地方的 子页面 = 标题部分[γ标题部分]
    返回 .检查语言子页面 兆瓦级.语言.获取内容语言()GETCODE()
结束

功能 .头衔命名空间 碱基名称 子页面
    地方的 消息 头衔
    地方的 页面名称 = 碱基名称
    如果 子页面   ~= 
    然后
        页面名称 = 页面名称  “/”  子页面
    结束
    地方的 有效的 头衔 = XPCALL功能()
            返回 兆瓦级.头衔.页面名称 命名空间 --昂贵的
        结束 功能味精 -捕获未记录的异常(!)?)
            -当命名空间不存在时抛出。博士仍然
            -说它应该返回一个标题,即使在那种情况下…
            消息 = 味精
        结束
    如果 有效的  头衔 ~=   头衔.身份证件   ~= 
    然后
        返回 头衔
    结束
    返回 { “伪”MW.TITLE对象,在错误的情况下具有ID= nIL
        前缀文本 = 页面名称 ——我们下面需要的唯一财产
        消息 = 消息 -仅用于调试
    }
结束

- [如果在翻译子页面(像FoBaA/DE),这个函数返回
一个给定的模板在相同的语言,如果翻译是可用的。
否则,模板将以其默认语言返回。
修改。
这是为了替换模板的当前实现:TNTN。

此版本不扩展返回的模板名称:这解决了
可移植模板需要自身时TNT中的自递归问题
传输其他可翻译模板(如Tnavbar)。
] ]
功能 .获取转换模板框架 带状态
    地方的 阿尔茨海默病 = 框架.阿尔茨海默病
    地方的 页面名称 = 阿尔茨海默病[“模板”]
    
    --[[检查页面名是否实际上在模板命名空间中,或
如果我们正在传输一个主命名空间页面。
(为模板的向后兼容性添加:TNT)
] ]
    地方的 头衔
    地方的 命名空间 = 阿尔茨海默病[“TNTNS”]  
    如果 命名空间 ~=  --检查自定义NS的TNTNS参数。
    然后
        头衔 = .头衔命名空间 页面名称 --昂贵的
    其他的 --假设设置页位于NS10中。
    	命名空间 = “模板”
        头衔 = .头衔命名空间 页面名称 --昂贵的
        如果 头衔.身份证件 = 
        然后 -在模板命名空间中找不到,假定主命名空间(向后兼容)
    	    命名空间 = 
            头衔 = .头衔命名空间 页面名称 --昂贵的
        结束
    结束
    
    -获取最后一个子页并检查它是否与已知的语言代码匹配。
    地方的 子页面 = 阿尔茨海默病[尤塞朗]  
    如果 子页面 = 
    然后
        子页面 = .获取当前语言()
    结束
    如果 子页面 = 
    然后
        --检查是否存在英文名的翻译
        地方的 新标题 = .头衔命名空间 页面名称 “恩” --昂贵的
        --当存在时使用翻译
        如果 新标题.身份证件 ~= 
        然后
            头衔 = 新标题
        结束
    其他的
        --检查该语言中是否存在PANNENEX的翻译
        地方的 新标题 = .头衔命名空间 页面名称 子页面 --昂贵的
        如果 新标题.身份证件 = 
        然后
            --检查是否存在英文名的翻译
            新标题 = .头衔命名空间 页面名称 “恩” --昂贵的
        结束
        --当存在时使用翻译
        如果 新标题.身份证件 ~= 
        然后
            头衔 = 新标题
        结束
    结束
    ——在这一点上,标题应该存在。
    如果 带状态 然后
    	——返回Lua功能状态
        返回 头衔.前缀文本 头衔.身份证件 ~= 
    其他的
    	——直接返回MyaWiKi
        退货 头衔.前缀文本
    结束
结束

- [如果在翻译子页面(像FoBaA/DE),这个函数呈现
一个给定的模板在相同的语言,如果翻译是可用的。
否则,模板将以默认语言呈现。
修改。
这是为了替换模板的当前实现:TNT。
    
请注意,可翻译模板不能排除其他的模板。
可译模板,因为它会在TNT上递归。用TNTN代替
只返回有效的模板名称以展开,与
模板参数也在外部提供。
] ]
功能 .渲染转换模板框架
	地方的 头衔 建立 = .获取转换模板 
    -此时,标题应该在执行扩展之前存在。
    -在模板中,否则呈现红色链接到丢失的页面
    -(在其假定的命名空间中解析)。如果我们不在这里,
    -脚本错误将被抛出。返回一个红色链接是一致的
    ——试图排除不存在模板时的MyaWiKi行为。
	如果  建立 然后
		返回 [ [ ]  头衔  “”
	结束

    -将ARG伪表复制到适当的表中,这样我们就可以将它输入Expand模板。
    --然后呈现PigNeNe。
    地方的 阿尔茨海默病 = 框架.阿尔茨海默病
    地方的 帕格斯 = 获得亲本()  {})。阿尔茨海默病
    当地 论据 = {}
    如果 阿尔茨海默病[“虚无”]   = 
    然后
         K V 进入 帕格斯 
            -编号的ARGS>=1需要移位
            地方的 N = 音调K  
            如果 N > 
            然后
                如果 N > 
                然后
                    论据[N - ] = V
                结束
            其他的
                论据[K] = V
            结束
        结束
    其他的 ——TNT用作自动翻译的特殊情况
    	--(不要再移动在召唤中移动的东西)
         K V 进入 帕格斯 
            论据[K] = V
        结束
    结束
    论据[“模板”] = 头衔 --重写以实际模板的全名提供的基模板名的现有参数
    论据[“TNTNS”] =  --放弃指定的命名空间覆盖
    论据[尤塞朗] = 阿尔茨海默病[尤塞朗] 向父帧转发的参数
    论据[“虚无”] = 阿尔茨海默病[“虚无”] 向父帧转发的参数
    
    返回 框架扩展模板{头衔 = “:”  头衔 阿尔茨海默病 = 论据}
结束

——[特别嘲讽TNT的帮手:TemplateSandbox。TNT断裂
用这个方法嘲弄它意味着模板不会
局部化,但至少模板和盒替换将正常工作。
不能用复杂的用途。
] ]
功能 .莫克特框架
    地方的 帕格斯 = 框架获得亲本()  {})。阿尔茨海默病
    当地 论据 = {}
     K V 进入 帕格斯 
        -编号的ARGS>=1需要移位
        地方的 N = 音调K  
        如果 N > 
        然后
            如果 N > 
            然后
                论据[N - ] = V
            结束
        其他的
            论据[K] = V
        结束
    结束
    如果  帕格斯[]
    然后
    	返回 
	结束
    返回 框架扩展模板{头衔 = 模板:  帕格斯[ 阿尔茨海默病 = 论据}
结束

返回