10日均线和20日均线:让OTRS正确地显示中文姓名

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 07:56:01

让OTRS正确地显示中文姓名

OTRS在显示中文的姓名时,仍然沿用西方人的习惯。

例如,它会将“郭美美”显示成“美美 郭”。虽然是个小问题,但总觉得别扭,与OTRS的高品质不相符。

下面举例介绍如何让OTRS正确地显示中文姓名。
1. cd /opt/otrs/Kernel/Output/HTML/Standard

2. vi Adminuser.dtl 或 vi AdminCustomerUser.dtl

3. 将文件中的字符串
Code: Select all
$QData{"UserFirstname"} $QData{"UserLastname"}

替换为:
Code: Select all
$QData{"UserLastname"}$QData{"UserFirstname"}

4. 保存文件

最后,访问http://yourURL/otrs/index.pl?Action=AdminUser或http://yourURL/otrs/index.pl?Action=AdminCustomerUser,验证一下中文姓名是否显示正确(见下图)。 下面列出的.dtl和.pm文件都与“姓名”显示相关。若逐个找开这些文件,再手工调换Firstname和Lastname的顺序,那会很辛苦且容易出错。

./Kernel/Output/HTML/Standard/AdminSession.dtl
./Kernel/Output/HTML/Standard/AgentTicketOverviewPreview.dtl
./Kernel/Output/HTML/Standard/AgentTicketZoom.dtl
./Kernel/Output/HTML/Standard/AdminCustomerUser.dtl
./Kernel/Output/HTML/Standard/AgentDashboardUserOnline.dtl
./Kernel/Output/HTML/Standard/AdminUser.dtl
./Kernel/Output/HTML/Standard/AgentTicketOverviewMedium.dtl
./Kernel/Output/HTML/Standard/AgentTicketPrint.dtl
./Kernel/Output/HTML/Standard/AgentTicketOverviewSmall.dtl
./Kernel/Output/HTML/Standard/AdminGenericAgent.dtl
./Kernel/Output/HTML/Standard/AgentTicketHistory.dtl
./Kernel/Output/HTML/Standard/AgentTicketZoom.dtl
./Kernel/Output/HTML/Standard/AgentTicketSearchResultPrint.dtl
./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.pm
./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脚本前,务必做好备份。
Code: Select all
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