【问题标题】:Using custom entities in HTML documents在 HTML 文档中使用自定义实体
【发布时间】:2011-11-11 09:43:08
【问题描述】:

tl;博士

我想了解是否可以(以及支持的程度)在 HTML 文档中使用自定义实体进行本地化。


我的设想是做这样的事情:

<!DOCTYPE html "/locales/en-us.ent">
<html>
  <head>
    <title>&contactus.title;</title>
  </head>
  <body>
    <p>&contactus.youcanreach;<br>123, Example Road<br>12345 Example City</p>
    <ul id="menu">
      <li>&menu.home;</li>
      <li>&menu.products;</li>
      <li>&menu.contactus;</li>
    </ul>
  </body>
</html>

所有实体都将存储在一个文件中(每种语言一个,在上面的示例中为 en-us.ent),该文件包含在文档的顶部,例如

<!ENTITY menu.home "Home">
<!ENTITY menu.products "Products">
<!ENTITY menu.contactus "Contact us">
...

最终这甚至可以扩展为可能对所有页面有用的 HTML 片段(不确定是否真的允许)(例如标题、菜单等;在上面的示例中,整个 &lt;ul&gt; 可能是这样的片段)

现在,我的理解是,这在 XHTML 中理论上是可行的,但我想知道这是否也可以在 HTML 中完成,以防万一,浏览器(和爬虫)的处理能力如何。

【问题讨论】:

  • 嘿! +1 一个很酷的原创想法,尽管客户对此的支持可能很糟糕
  • @Pekka,我不能真正相信这个想法,因为它是一种广泛用于在 Firefox 中提供本地化支持的机制。不过,我认为这是一个绝妙的想法,可以在其他地方获利。
  • 创建一个javascript解析器应该很容易,它将加载正确的翻译文件并进行“全局查找-替换”。使用 php 或其他服务器端脚本语言更容易做到这一点。但是要让所有浏览器厂商都支持一些很少使用的功能几乎是不可能的。
  • 这个想法在“XHTML”中理论上和实践上都是可行的,如果这意味着 XHTML 文档以 XML 内容类型(例如 application/xhtml+xml)发送,但浏览器不需要处理外部实体定义.而且搜索引擎很可能根本不解释实体定义。

标签: html xhtml localization html-entities


【解决方案1】:

理论上是可以的。 HTML 4.x(和几个以前的版本)是 SGML 应用程序,因此您可以使用新实体扩展 DTD。

实际上,每个主流浏览器都实现了一个特定于 HTML 的标签汤吸食器,而不是一个真正的 SGML 解析器,所以你不能这样做。这就是为什么 HTML 4 有 list of SGML features to avoid 以及为什么 HTML 5 不是 SGML 应用程序的原因。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多