你的论点似乎是“产品”永远是“产品”。正如其他人所指出的那样,情况并非如此,因为(1)它可能打印翻译,(2)它可以通过主题中的过滤器或安装的任何插件进行更改。
关于第一点:译者的内容不应该被认为是可信的(在我看来),因此您应该总是(在可能的情况下*)转义任何本地化字符串。即使你个人信任你的翻译人员,他们也可能无辜地输入文本,如果不加处理,会破坏你的网页。
因此,对于您最初的问题“这是esc\\U html\\U e的正确用法吗?”
是的,这对你的两个例子都是绝对正确的
如果你真的担心esc_html
如果过度使用(可能您担心性能),您至少应该使用PHP的本机htmlspecialchars function. 我可能会因为这一建议而被处以私刑,因为从WordPress的角度来看,这不是最佳做法。(您将错过各种其他过滤器和字符集检查)。
这里还有另一个值得讨论的案例:
如果翻译是intended to contain HTML, 喜欢this example 然后,您将经常看到作者打印未替换的字符串。理想情况下,不受信任的HTML应该在打印前进行清理,但即使是WordPress核心也不能做到这一点。
清理HTML比简单地转义HTML带来更大的开销,这可能解释了为什么WordPress也有未转义HTML翻译的示例。Here\'s one in twenty seventeen. 可能是用户在中提供了搜索查询%s
已清理,但翻译尚未清理。打开您最喜爱的PO编辑器,输入如下翻译:
#: search.php:19
msgid "Search Results for: %s"
msgstr "Oh dear <script>alert(\\"HACKED\\")</script>"
瞧。脚本注入搜索结果页面。试试看。这实际上适用于2017年。
我们可以整天争论译者的内容是否值得信任。我认为不是。一个流浪汉,但完全无辜"<"
可能会破坏你的页面。