修改技巧:评论中的语言问题
发布者:Zirafka于 2009/11/22 18:30:00 5263 次阅读网站经常受到批评,因为程序的作者或其他系统的作者没有考虑除他们自己的语言以外的语言。所以原始语言中数字显示正确,但其他语言中看起来很奇怪。
例如,如果原始模块只能区分一个或多个评论,就会出现问题,因为翻译结果是:“评论数量:3”而不是正确的“3 个评论”(以捷克语为例)。
针对我的服务器,我按照以下方式调整了“新闻”模块
文件 language/YOUR_LANGUAGE/main.php
define("_NW_NUMCOMMENTS","%s komentare");
改为
define("_NW_NUMCOMMENTS2","%s komentare"); // 2 - 4 comments
define("_NW_NUMCOMMENTS5","%s komentaru"); // more than 4 comments
文件 class/class.newsstory.php
if (XOOPS_COMMENT_APPROVENONE != $xoopsModuleConfig['com_rule'])
{
$ccount = $this->comments();
$morelink .= 'href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';
$morelink2 = 'href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';
if ( $ccount == 0 )
{
$morelink .= '">'._NW_COMMENTS.'';
}
else
{
if ( $fullcount < 1 )
{
if ( $ccount == 1 )
{
$morelink .= '">'._NW_READMORE.' | '.$morelink2.'">'._NW_ONECOMMENT.'';
}
else
{
$morelink .= '">'._NW_READMORE.' | '.$morelink2.'">';
$morelink .= sprintf(_NW_NUMCOMMENTS, $ccount);
$morelink .= '';
}
}
else
{
if ( $ccount == 1 )
{
$morelink .= '">'._NW_ONECOMMENT.'';
}
else
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS, $ccount);
$morelink .= '';
}
}
}
}
改为
if (XOOPS_COMMENT_APPROVENONE != $xoopsModuleConfig['com_rule'])
{
$ccount = $this->comments();
$morelink .= 'href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';
$morelink2 = 'href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';
if ( $ccount == 0 )
{
$morelink .= '">'._NW_COMMENTS.'';
}
else
{
if ( $fullcount < 1 )
{
if ( $ccount == 1 )
{
$morelink .= '">'._NW_READMORE.' | '.$morelink2.'">'._NW_ONECOMMENT.'';
}
else
{
if (( $ccount >1 ) && ( $ccount <5))
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS2, $ccount);
$morelink .= '';
}
else
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS5, $ccount);
$morelink .= '';
}
}
}
else
{
if ( $ccount == 1 ) {
$morelink .= '">'._NW_ONECOMMENT.'';
}
else
{
if (( $ccount >1 ) && ( $ccount <5))
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS2, $ccount);
$morelink .= '';
}
else
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS5, $ccount);
$morelink .= '';
}
}
}
}
}
修改工作将立即开始,但如果您启用了缓存,则需要首先将其清除,否则更改将在刷新后生效。
此修改技巧已在 Xoops 2.4.1 及 News 模块版本 1.63 上进行了测试
最后,谈谈修改系统之前:在进行任何处理之前,必须备份原始文件。你永远不知道哪里可能会出错。
这就是全部