从 CoSign 看开源软件本地化(2)
上文提到通过根据浏览器支持的语种列表,自适应的选择页面模板,初步实现了 CoSign 的本地化。但是这样将本来就非常冗余的页面模板扩大了一倍。我们在模板定制过程中,愈来越感觉到消除页面中冗余的必要性。这就是我们在2008年紧接下来开发的一个功能:扩展 CoSign 的模板宏,使得模板可以嵌套。
模板中的 include 宏,简化模板
CoSign 本来就支持模板的宏替换,但是支持的宏非常有限,只支持以 $ 开头外加一个字母组成的宏。例如:- $t :一般扩展为页面标题
- $e :扩展为错误信息
- $!include(PageName) 字符 $! 加上 include 关键字组成的了扩展宏。含义为将另外的页面 PageName 插入到本页面当前位置中。
- $!include(inc/*.html) 支持通配符。即将 inc 目录下的所有 html 文件包含进来
- $!include(%lang%/*.html) 支持语言通配符。即 %lang% 将被浏览器支持的语种逐一替换,直到找到缺省的文件。
- 静态页面没有本地化。静态页面是诸如重定向错误(looping.html) 等错误页面,这些页面不是模板,而是作为静态页面,由 Apache 提供页面响应。
- 认证的错误信息没有本地化。这些错误信息,是由独立于 CGI ,也独立于页面模板的认证因子返回的错误信息。