很多用户希望使用Dedecms CMS程序创建中英文站点。本文将详细介绍如何使用Dedecms实现多语言网站的构建,帮助您轻松操作。

一、后台栏目设置

1. 需要为每种语言创建相应的顶级栏目。
2. 在“常规选项”中,将文件保存目录设置为cn或en。
3. 在“高级选项”中,将列表页名称设置为cn_index.htm或en_index.htm,并将所有模板文件放在同一个文件夹内。

DEDEdedecmsCMS如何做中英文多语言站
 

二、网站代码调用

标签调用与单个独立站点类似,需注意以下几点。例如:当前位置不能直接使用{dede:field name='position'/},可以改为:
{dede:type}[field:typename /]{/dede:type}。
 

三、建设每种语言下的栏目

文件名建议使用前缀区分,如cn_、en_、jp_等,每种语言相当于一个独立站点。

DEDEdedecmsCMS如何做中英文多语言站

四、分页和当前位置显示英文的方法:
列表分页出现“首页 上一页 下一页 末页”以及当前位置:“首页>about>”等问题可以通过以下方法解决:


1. 列表分页英文设置教程
使用arc.listview.class.php覆盖include/arc.listview.class.php
 

调用方法:

 {dede:pagelist listsize='5'/} 

 {dede:pagelist pagelang='en' listsize='5'/}  
pagelang:en为英文,cn为中文,默认语言中文 


function GetPageListST($list_len,$listitem="index,end,pre,next,pageno",$pagelang) {
    if($pagelang=='cn'){
        $uahome="首页";
        $uaprevious="上一页";
        $uanext="下一页";
        $ualastpage="末页";
        $uapage="页";
        $uatotal="共";
        $uarecords="条记录";
    } else {
        $uahome=" Home ";
        $uaprevious=" Previous ";
        $uanext=" Next ";
        $ualastpage=" Last Page ";
        $uapage=" Page ";
        $uatotal=" Total ";
        $uarecords=" Records. ";
    }
    $prepage = $nextpage = '';
    $prepagenum = $this->PageNo-1;
    $nextpagenum = $this->PageNo+1;
    if($list_len=='' || ereg("[^0-9]",$list_len)){
        $list_len=3;
    }
    $totalpage = ceil($this->TotalResult/$this->PageSize);
    if($totalpage<=1 && $this->TotalResult>0){
        return "
  • ".$uatotal." 1 ".$uapage." ".$this->TotalResult." ".$uarecords."
  • \\r\\n"; } if($this->TotalResult == 0){ return "
  • ".$uatotal." 0 ".$uapage." ".$this->TotalResult." ".$uarecords."
  • \\r\\n"; } $purl = $this->GetCurUrl(); $maininfo = "
  • ".$uatotal." {$totalpage} ".$uapage." ".$this->TotalResult." ".$uarecords."
  • \\r\\n"; $tnamerule = $this->GetMakeFileRule($this->Fields['id'],"list",$this->Fields['typedir'],$this->Fields['defaultname'],$this->Fields['namerule2']); $tnamerule = ereg_replace('^(.*)/','',$tnamerule); // 获得上一页和主页的链接 if($this->PageNo != 1){ $prepage.="
  • ".$uaprevious."
  • \\r\\n"; $indexpage="
  • ".$uahome."
  • \\r\\n"; } else { $indexpage="
  • ".$uahome."
  • \\r\\n"; } // 下一页,未页的链接 if($this->PageNo!=$totalpage && $totalpage>1){ $nextpage.="
  • ".$uanext."
  • \\r\\n"; $endpage="
  • ".$ualastpage."
  • \\r\\n"; } else { $endpage="
  • ".$ualastpage."
  • \\r\\n"; } // option链接 $optionlist = ''; $optionlen = strlen($totalpage); $optionlen = $optionlen*12 + 18; if($optionlen < 36) $optionlen = 36; if($optionlen > 100) $optionlen = 100; $optionlist = "
  • \\r\\n"; // 获得数字链接 $listdd=''; $total_list = $list_len * 2 + 1; if($this->PageNo >= $total_list){ $j = $this->PageNo-$list_len; $total_list = $this->PageNo+$list_len; if($total_list>$totalpage){ $total_list=$totalpage; } } else { $j=1; if($total_list>$totalpage){ $total_list=$totalpage; } } for($j;$j<=$total_list;$j++){ if($j==$this->PageNo){ $listdd.= "
  • $j
  • \\r\\n"; } else { $listdd.="
  • ".$j."
  • \\r\\n"; } } $plist = ''; if(preg_match('/index/i', $listitem)) $plist .= $indexpage; if(preg_match('/pre/i', $listitem)) $plist .= $prepage; if(preg_match('/pageno/i', $listitem)) $plist .= $listdd; if(preg_match('/next/i', $listitem)) $plist .= $nextpage; if(preg_match('/end/i', $listitem)) $plist .= $endpage; if(preg_match('/option/i', $listitem)) $plist .= $optionlist; if(preg_match('/info/i', $listitem)) $plist .= $maininfo; return $plist; }

    2. 替换{dede:field name='position'}中的“首页”为“Home”,后台栏目名称使用英文即可。
    标签:{dede:field name='position' function='str_replace("首页","Home",Html2Text("@me"))'/}