4.3. UseModWiki 的汉化

从 0.92 版本开始,UseModWiki 就引入了一个翻译对照表,实现界面的汉化。wiki.pl 中用函数 T 实现该功能:


sub T {
  my ($text) = @_;

  if (1) {   # Later make translation optional?
    if (defined($Translate{$text}) && ($Translate{$text} ne ''))  {
      return $Translate{$text};
    }
  }
  return $text;
}

问题的关键是构建一个哈希表:%Translate。UseModWiki 软件包自带的工具 misc/umtrans.pl 即是完成此功能的工具。

bash% umtrans.pl wiki.pl > trans.pl

该命令的作用是提取 wiki.pl 脚本中函数 T 的所有调用,并提取相应的字符串生成翻译对照表文件 trans.pl。打开文件 trans.pl,我们可以看到如下的内容:


%Translate = split('\n',<<END_OF_TRANSLATION);
Could not create %s

Showing revision %s

Revision %s not available

showing current revision instead

Updates since %s

Updates in the last %s day

Updates in the last %s days

... ...
... ...
END_OF_TRANSLATION

翻译过程无非是将文字对照的写在相应英文的下一行。

在 UseModWiki 的网站上已经有了已经翻译好的对照表,去上面抓一个即可。如果对翻译的不满意,还可以自己去修改,其本身就是用 Wiki 维护的。

将制作(下载)好的翻译词表拷贝至 UseModWiki 的数据目录,修改 config 文件,加上如下一行代码:

do "/opt/UseModWiki/trans_cn.pl";
[注意]

如果 UseModWiki 安装在 Windows 上,可能需要用 Windows 格式的路径,如:do "E:/REPOS/UseModWiki/trans_cn.pl";

即加载翻译词表文件,初始化哈希表 %Translate。

这时再打开浏览器,看看我们构建好的 Wiki 网站。界面汉化是成功了,但是中间的内容怎么出现了乱码?(UseModWiki 0.92 版本)

中文界面中有乱码

中文界面中有乱码