永久保护模板

模板:葩格朗

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


用法

这是用于翻译子页面(可译页)的检查语言的素材模板。用于自动替换本地化值,该值与当前页的语言匹配。也用于帮助定义文本方向(与{{)一起使用迪尔})。

从其他模板调用。翻译页或模板常用的例子:

<!——

在参数1中显示给定语言代码的语言名称,
以与当前翻译页相同的语言
使用工具提示显示用户首选语言中的语言名称。

--><跨度 =“{{BCP47 {{int:郎}}}” 头衔=“{{*语言:{{ 1 }}{{int:郎}}}({{{}}}}))><!——
--><跨度 =“{BCP47 {{PaGelang}}}” 迪尔=“{{ dir{{{Paelangang}}}” =“自称”><!——
-->{{*语言:{{ 1 }}{{PaGelang}}<!——
--><跨度>跨度>

<!——

将浮动图像对齐到正确的一侧,
取决于当前翻译页的语言

-->[文件:示例{{dir {{PaGelang}}}左(右}} 30x30px] ]

技术说明

当子页页包含任何(单个或双)引号或多个符号时,它不是有效的语言代码;Page NeNe和子Page Nealm通常HTML以它们的返回值对这些字符进行编码,因此它们可以安全地用作输入语言。但是,html的标题部分通过HTML解码来恢复这些引文或词条。

但是,当语言与单引号的“语言代码”一起使用时,会产生致命的服务器错误。

证明

这仍然有效:

{{语言:FR {{}标题部分:在MyaWikii 1 } }中有一个致命错误

这也行不通:

{{语言:FR {{PyNeNAM:在MyaWiKi}}中有一个致命错误

也不是这样:

{{语言:Fr.MIDAWIKIK}中有一个致命错误

这是一个关键的错误的语言分析器功能,显然是一个严重的安全问题,可能是由于一些聪明的插入代码在PHP后的报价。

这个错误只发生在第二个参数的语言中(目标语言中给出了第一个参数中由代码指定的语言的名称)。只检查第一个参数的有效性,而不是第二个参数。在这里,当语言无法找到语言的名称时,在任何目标语言中,它应该返回原生语言名称,如:

{{语言:FR无效语言}}
弗兰·阿斯
在这个模板中使用Word

为了避免这种严重的错误,我们要检测这些该死的在子页面名称中引用(或AppSand),因为它们在任何语言代码中都是无效的,以便返回空字符串而不是子页面名称:这样的子页名称无论如何不能是语言代码。

检测不安全语言代码的子页面的一种方法是检查它们的值是否被PyEnEnter过滤:如果它们不相等,那是因为它们包含了多个或多个引用。

为什么我们使用TITLE部分而不只是子页面名?

TITLE部分使用在这个模板中,而不是使用子页面名,但是使用子页面名也不会避免bug,因为它也可以返回包含诅咒引文的完整页面名称!(子页面名只在已激活子页面的命名空间中工作)(因此,它在主命名空间中不工作,以查看它是否使用语言代码后缀进行翻译)。

也见