OTRS安装使用系列之十一—&md…
来源:互联网 发布:python微信自定义菜单 编辑:程序博客网 时间:2024/06/06 17:57
因为试用产品的时候,碰到了界面的显示问题,所以把中文化提到前面,搜索放到后面再说。
不知道你怎么看中文化问题? 也即软件汉化问题。
不知道你是否有过类似的体会。刚开始以为这是一件很容易的事情,认为我的英文不错,这还有什么难的吗?如果你尝试过,你就会知道,这其中绝不仅仅那么简单。
一个国外软件能够汉化好的三个条件:
1、对英语词汇的理解足够深。此处说英语水平,主要指对英文单词的熟悉程度,英语跟中文一样,可能一个单词对应中文可以翻译成很多个中文词汇,那选择哪个词汇更合适呢?如果你对该英文单词掌握的不够深,那么可能恰恰需要用到那个翻译;
2、对计算机专业要比较熟悉,了解计算机专业词汇。不是只有生活英语就足够的;
3、最难得一点:你要对产品比较熟悉。上面两点还是比较容易具备的。但是对产品熟悉这一点把很多人拒之门外。产品对于翻译的重要性,形象地比喻为英语里对于词汇理解时,老师反复强调的“上下文”(也即:Context)。
一、先说姓名:
国外软件拿到中国来,首先碰到名字问题,显示顺序都是“名字姓”这样的格式,看起来很别扭。怎么办呢?对于OTRS来说,需要修改对应的文件了。
在官方论坛有一篇帖子介绍怎么正确地显示中文名,居然有三个人前后做了说明和再说明。我摘抄在下面,方便大家一起参考,不要再翻来翻去了
================================================================
一) micshi OTRS expert说法:
OTRS在显示中文的姓名时,仍然沿用西方人的习惯。
例如,它会将“郭美美”显示成“美美 郭”。虽然是个小问题,但总觉得别扭,与OTRS的高品质不相符。
下面举例介绍如何让OTRS正确地显示中文姓名。
1. cd /opt/otrs/Kernel/Output/HTML/Standard
2. vi Adminuser.dtl 或 vi AdminCustomerUser.dtl
3. 将文件中的字符串
- 代码:
<td>$QData{"UserFirstname"}$QData{"UserLastname"}</td>
替换为:
- 代码:
<td>$QData{"UserLastname"}$QData{"UserFirstname"}</td>
最后,访问http://yourURL/otrs/index.pl?Action=AdminUser或http://yourURL/otrs/index.pl?Action=AdminCustomerUser,验证一下中文姓名是否显示正确(见下图)。
- 附件
- Name.PNG (12.39 KiB) 被浏览 46 次
二)LennyOTRS newbie 说法:
修改模板:
otrs/Kernel/Output/HTML/Standard/AgentTicketZoom.dtl
包括负责人,所有者:
- 代码:
<!-- dtl:block:Owner-->
<tr valign="top">
<td><b>$Text{"Owner"}:</b></td>
<td>
<divtitle="$QData{"UserLogin"}($QData{"UserFirstname"}$QData{"UserLastname"})">
$QData{"UserLogin","18"}($Quote{"$Data{"UserFirstname"}$Data{"UserLastname"}","18"})
</div>
</td>
</tr>
<!-- dtl:block:Owner -->
<!-- dtl:block:Responsible -->
<tr valign="top">
<td><b>$Text{"Responsible"}:</b></td>
<td>
<divtitle="$QData{"UserLogin"}($QData{"UserFirstname"}$QData{"UserLastname"})">
$QData{"UserLogin","18"}($Quote{"$Data{"UserFirstname"}$Data{"UserLastname"}","18"})
</div>
</td>
</tr>
<!-- dtl:block:Responsible-->
调整为:
- 代码:
<!-- dtl:block:Owner-->
<tr valign="top">
<td><b>$Text{"Owner"}:</b></td>
<td>
<divtitle="$QData{"UserLogin"}($QData{"UserFirstname"}$QData{"UserLastname"})">
$QData{"UserLogin","18"}($Quote{"$Data{"UserLastname"}$Data{"UserFirstname"}","18"})
</div>
</td>
</tr>
<!-- dtl:block:Owner -->
<!-- dtl:block:Responsible -->
<tr valign="top">
<td><b>$Text{"Responsible"}:</b></td>
<td>
<divtitle="$QData{"UserLogin"}($QData{"UserFirstname"}$QData{"UserLastname"})">
$QData{"UserLogin","18"}($Quote{$Data{"UserLastname"}$Data{"UserFirstname"}","18"})
</div>
</td>
</tr>
<!-- dtl:block:Responsible–>
三)micshiOTRS expert 再次说:
下面列出的.dtl和.pm文件都与“姓名”显示相关。若逐个找开这些文件,再手工调换Firstname和Lastname的顺序,那会很辛苦且容易出错。
./Kernel/Output/HTML/Standard/AdminSession.dtl
./Kernel/Output/HTML/Standard/AgentTicketOverviewPrevi
./Kernel/Output/HTML/Standard/AgentTicketZoom.dtl
./Kernel/Output/HTML/Standard/AdminCustomerUser.dtl
./Kernel/Output/HTML/Standard/AgentDashboardUserOnline
./Kernel/Output/HTML/Standard/AdminUser.dtl
./Kernel/Output/HTML/Standard/AgentTicketOverviewMediu
./Kernel/Output/HTML/Standard/AgentTicketPrint.dtl
./Kernel/Output/HTML/Standard/AgentTicketOverviewSmall
./Kernel/Output/HTML/Standard/AdminGenericAgent.dtl
./Kernel/Output/HTML/Standard/AgentTicketHistory.dtl
./Kernel/Output/HTML/Standard/AgentTicketZoom.dtl
./Kernel/Output/HTML/Standard/AgentTicketSearchResultP
./Kernel/Output/HTML/Standard/Header.dtl
./Kernel/Output/HTML/Standard/CustomerNavigationBar.dtl
./Kernel/Output/HTML/Standard/PrintHeader.dtl
./Kernel/Output/HTML/Standard/Test.dtl
./Kernel/Output/HTML/Standard/CustomerHeader.dtl
./Kernel/Modules/AgentTicketPhoneOutbound
./Kernel/Modules/AgentTicketMove.pm
./Kernel/Modules/CustomerTicketMessage.pm
./Kernel/Modules/AgentTicketActionCommon.pm
./Kernel/Modules/AgentTicketBulk.pm
./Kernel/Modules/CustomerTicketZoom.pm
./Kernel/Modules/AgentTicketSearch.pm
下面介绍的shell脚本是利用正规表达式自动调换上述文件中Firstname和Lastname的显示顺序。
注意:执行shell脚本前,务必做好备份。
- 代码:
cd /opt/otrs/Kernel/Output/HTML/Standard
perl -p -i.bak -w -e's/(\$QData\{\"UserFirstname\"\})(\$QData\{\"UserLastname\"\})/$2$1/g'*.dtl
perl -p -i.bak -w -e's/(\$Quote\{\")(\$Data\{\"UserFirstname\"\})(\$Data\{\"UserLastname\"\})/$1$3$2/g'*.dtl
perl -p -i.bak -w -e's/(\$Env\{\"UserFirstname\"\})(\$Env\{\"UserLastname\"\})/$2$1/g'*.dtl
cd /opt/otrs/Kernel/Modules
perl -p -i.bak -w -e's/(\$Quote\{\")(\$Data\{\"UserFirstname\"\})(\$Data\{\"UserLastname\"\})/$1$3$2/g'*.pm
perl -p -i.bak -w -e 's/(\$Self->\{UserFirstname\})(\$Self->\{UserLastname\})/$2$1/g' *.pm
上述shell脚本的意思是:在指定目录中逐个找开每一个.dtl或.pm文件。若在当前文件中查找到匹配的字符串后,就执行替换操作(调换Firstname和Lastname的顺序并去掉它们之间的空格)。
最后需要说明的是,shell脚本执行后,会在指定目录中生成*.bak临时文件,可以按下述步骤将其删除。
cd /opt/otrs/Kernel/Output/HTML/Standard
rm *.bak
cd /opt/otrs/Kernel/Modules
rm *.bak
================================================================
我想micshi最后的总结应该是可行并且修改比较完整彻底的了。可惜的是,我是在Windows环境下做的测试,所以暂时没有用到他们提到的方法。我用的土办法。
1、我首先完成了上述micshi第一次说的方法,发现还有些没改过来;主要是界面右上角的“您以登录为:名字 姓”;
2、我使用EMEDITOR工具软件的“在文件中查找/替换”的方法,这可以发现不少文件中涉及到类似问题,全部备份并纠正。下面可以看到找出的这些文件,以及他们所在的行数。但是替换完了以后,界面右上角的“您以登录为:名字姓”依然如故,反复刷新,仍然如此。另一个困难的是,OTRS对URL做了屏蔽,并不能一目了然地看到控制这个部分的显示在哪个文件中。
3、看来还有别的文件在控制这个部分,切换到英文状态,看到它显示的“You ard logged inas”,呵呵,好了,我们可以根据它去找了。(稍微了解现代程序程序结构的都清楚为什么这样做了)。结果如下:
紧接着修改跟在绿色显示部分后面的字符串的顺序就可以了。
到此,中文姓名的问题,也基本得到解决。也算是micshi提供的方法之外的另外一个土办法吧,呵呵。。
二、接下来说说软件汉化:
对于OTRS的Windows安装来说,国际化文件位于C:\ProgramFiles\OTRS\OTRS\Kernel\Language目录下,
zh_CN.pm应该对应的基本模块HelpDesk的中文对照表。其他文件是因为我安装了相应的ITSM、FAQ等组件模块才有的。我试图完善zh_CN.pm。但是很费劲,仅仅过一遍就要花不少时间。285k大小,1k=1024英文/512汉字,285k*1024=?即使285k*512=?,总共十几、二十万字呢,呵呵。
我修改了一部分,然后碰到一些问题,认识到我不能这么做了。真的是比较头疼,看来只能先用起来,逐步完善修改了。
我碰到的问题在哪呢?本篇开头我提到的三点,第1、2点对我来说不成问题,问题在于第3点。我刚试用,还不熟悉系统,霸王硬上弓地翻译下去,难免没有异常情况出现。
所以,最终决定先试用,再逐步完善。
本节,暂时到这里吧。有必要以后再补充。
- OTRS安装使用系列之十一—&md…
- OTRS安装使用系列之六—&mdas…
- OTRS安装使用系列之七—&mdas…
- OTRS安装使用系列之八—&mdas…
- OTRS安装使用系列之九—&mdas…
- OTRS安装使用系列之十——处理工单
- OTRS安装使用系列之三——不同的OTRS…
- OTRS安装使用系列之四——[转载]OTRS…
- OTRS安装使用系列之五——[转载]OTRS…
- OTRS安装使用系列之二——安装系统组…
- OTRS安装使用系列之一——安装及初始…
- 安装OTRS
- TAO教程系列之二. 简介——非常简单的服务端
- OTRS的安装和配置
- IOS开发系列—Objective-C之基础概览
- IOS开发系列—Objective-C之Foundation框架
- PHP性能之语言性能优化:安装VLD扩展——检测性能
- kylin安装---安装系列十一
- C# 获取安装程序的路径
- OTRS安装使用系列之九—&mdas…
- Selenium 学习积累
- OTRS安装使用系列之十——处理工单
- Linux基本命令学习 《二》
- OTRS安装使用系列之十一—&md…
- SecureCRT_6.7.3-x86破解方…
- 关于OTRS3.1.3软件包管理器的一个…
- redhat 安装 ZeroMQ, pyzmq 错误解…
- vtiger CRM
- Linux与Windows之间使用FTP互传文…
- ESX常用的TCP/IP端口
- Linux 使用sudo时,报错 is not in the sudoers file. This incident will be reported 解决
- ServiceDesk Plus 8.0&n…