/templets/default/
目录下,文件名为header.htm
或者类似名称。,,2. 打开该文件,找到导航菜单的HTML代码,通常会使用`和
标签来构建菜单结构。,,3. 在每个菜单项的
标签中,添加
hreflang属性,并设置其值为"en",表示链接目标页面的语言为英文。,,
`html,Home,
“,,4. 保存文件并上传到服务器,然后刷新网站页面,导航菜单中的链接就会带有英文描述。,,注意:以上步骤仅为一般性指导,实际操作可能因DedeCMS版本和模板的不同而有所差异。建议参考官方文档或相关教程进行操作。让DedeCMS导航菜单同时显示英文栏目名称
在全球化的今天,一个多语言的网站可以吸引更多的国际用户,DedeCMS作为一款流行的内容管理系统,其导航菜单通常只显示中文,这对一些需要国际化的用户来说可能不够友好,本文将介绍如何在DedeCMS中实现导航菜单的中英文双语显示。
手动版设置方法
1、打开文件:打开/include/extend.func.php
文件。
2、添加代码:在文件中添加以下代码:
/**
* 获取 DedeCMS 中栏目的中文名称和英文名称注意创建栏目时请使用格式“新闻中心/News”
*/
function mutiTypeName($typename = '', $index = 0){
if (FALSE === strpos($typename, '/')) return $typename;
$typename = explode("/", $typename);
return $typename[0];
}
function cnName($typename = '', $index = 0){
return mutiTypeName($typename, $index);
}
function enName($typename = '', $index = 1){
return mutiTypeName($typename, $index);
}
3、修改模板文件:在模板文件中,使用如下代码来显示中英文栏目名称:
{dede:channel type='top'} <li> <a href="[field:typeurl/]" [field:rel/]>[field:typename function="cnName(@me)"/] <div>[field:typename function="enName(@me)"/]</div> </a> </li> {/dede:channel}
这种方法虽然翻译准确,但会在导航路径中出现“当前位置:首页 > 新闻中心/News > 列表”的情况。
自动版设置方法
1、打开文件:同样地,首先打开/include/extend.func.php
文件。
2、添加代码:在文件中添加以下代码:
/** * 用于DedeCMS的中文翻译为英文的函数 */ function cn2en($text, $language = 'zhCN|en', $forNavi = TRUE){ global $cfg_dataurl; $text = trim($text); if (empty($text)) return ''; $outText = ''; // 最后输出的、翻译好的文字 $dictFile = str_replace('|','2',$language); $dictFile = str_replace('/','2',$dictFile); $dictFile = str_replace('\','2',$dictFile); $dictFile = DEDEDATA . '/lang/'.$dictFile.'.dict'; // 存放翻译结果的字典文件 // 内置数据 if (empty($outText)){ $privateData = array( '首页'=>'Home', '主页'=>'Index', '产品中心'=>'Product', '产品展示'=>'Product', '新闻中心'=>'News', '留言板'=>'Feedback', '在线留言'=>'Feedback', '资质荣誉'=>'Honor', '公司简介'=>'About Us', '联系方式'=>'Contact Us', '人才招聘'=>'Jobs', '招商加盟'=>'Join', '优惠活动'=>'Promotion', '服务项目'=>'Service', '服务流程'=>'Process', '合作单位'=>'Partner', '销售网络'=>'Network', '工程案例'=>'Case', '服务网络'=>'Network', '技术服务'=>'TServices', '企业文化'=>'Culture', '售后服务'=>'Aftersales', ); foreach ($privateData as $i => $v){ if ($text == $i) $outText = $v; } } // 读缓存的字典文件,若无再查Google。 if (empty($outText)){ $dictFile = $cfg_dataurl . 'translate.dict'; if (!file_exists($dictFile)) @file_put_contents($dictFile,''); if (!is_writable($dictFile)) return 'UnRead'; $dictData = file_get_contents($dictFile); $dict = (array)json_decode($dictData); if (isset($dict[$text])) $outText = $dict[$text]; } return $outText; }
3、修改模板文件:在模板文件中,使用如下代码来显示中英文栏目名称:
{dede:channel type='top'} <li> <a href="[field:typeurl/]" [field:rel/]>[field:typename/] <div>[field:typename function="cn2en(@me)"/]</div> </a> </li> {/dede:channel}
这种方法可以避免手动版中的问题,但如果字典不够全面,翻译可能不准确,可以通过Google翻译API进行实时翻译,但这需要申请API密钥并编写JavaScript代码来实现。
FAQs常见问题解答
1、问题一:如何确保导航菜单的中英文显示正确无误?
解答:为了确保翻译的准确性,建议在手动版中使用格式如“新闻中心/News”的方式创建栏目,这样可以保证中英文对照的准确性,对于自动版,可以通过完善字典文件或使用Google翻译API来提高翻译的准确性。
2、问题二:如果我希望在导航菜单中只显示英文怎么办?
解答:如果只需要显示英文,可以在模板文件中仅使用英文字段,
{dede:channel type='top'} <li> <a href="[field:typeurl/]" [field:rel/]>[field:typename function="enName(@me)"/]</a> </li> {/dede:channel}
这样设置后,导航菜单将只显示英文栏目名称。
序号 | 菜单名称 | 英文名称 |
1 | 首页 | Home |
2 | 关于我们 | About Us |
3 | 产品展示 | Products |
4 | 新闻动态 | News |
5 | 联系我们 | Contact Us |
6 | 在线留言 | Leave Message |
7 | 加入我们 | Join Us |
8 | 成功案例 | Case Studies |
9 | 在线咨询 | Online Consultation |
10 | 常见问题 | FAQ |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1190558.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复