庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>操作系统>Linux>中文化>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

webalizer汉化后图表乱码的处理

 作者:本站收集   日期:2005-4-16
字号选择〖 〗/ 双击滚屏 单击停止   
webalizer是一个简单易用的日志分析软件,但安装好中文版本后,出来的图表中总有让人
心烦的乱码。本文用一个简单的perl处理脚本就可让乱码不再出现。


#!/usr/bin/perl
#######################################################
# webalizer_patch.pl
# 原作:http://mail.tses.tcc.edu.tw/nuke/sections.php?op=viewarticle&artid=139
# 修改:陶然
# 功能: 解决HTML汉化后图表中乱码的问题
# 方法:图表中乱码改用英文显示就正常了
# 需要修改: graphs.c output.c webalizer_lang.h lang.h
#
# tar zxf webalizer-2.01-10-src.tgz
# cd webalizer-2.01-10
# ./configure --with-language=simplified_chinese
# perl /path/of/webalizer_patch.pl ./
# make
# make install
#
##################################################
$file_graph = "$ARGV[0]/graphs.c";
if(!(-e $file_graph)) {
print "error open $file_graph
";
print "Usage:
perl $0 DIR
";
#DIR是源文件目录,比如 ./
exit;
}

#把图表中的月份和注释改成英文
@old_var = ("msg_h_hits",
"msg_h_pages",
"msg_h_visits",
"msg_h_files",
"msg_h_sites",
"msg_h_xfer",
"s_month");

@new_var = ("msg_gh_hits",
"msg_gh_pages",
"msg_gh_visits",
"msg_gh_files",
"msg_gh_sites",
"msg_gh_xfer",
"s_gmonth");

open(IN,"<$file_graph");
@lines = ;
$size = @lines;
close(IN);

`mv $file_graph $file_graph.bak`;
open(OUT,">$file_graph");
for($i=0;$i<$size;$i++) {
for($k=0;$k<@old_var;$k++) {
if($lines[$i] =~ s/$old_var[$k]/$new_var[$k]/g) {
print "$i $old_var[$k] -> $new_var[$k]
";
print OUT "/* --- Modified --- */
";
}
}
print OUT $lines[$i];
}
close(OUT);

#把图表中的标题改成英文显示
$file_output = "$ARGV[0]/output.c";
open(IN,"<$file_output");
@lines = ;
$size = @lines;
close(IN);
`mv $file_output $file_output.bak`;
open(OUT,">$file_output");
for($i=0;$i<$size;$i++) {
if($lines[$i] =~ s/msg_hmth_du,l_month/"Daily Usage for",s_gmonth/xg) {
print "$i patched
";
print OUT "/* --- Modified --- */
";
} elsif($lines[$i] =~ s/msg_hmth_hu,l_month/"Hourly Usage for",s_gmonth/xg) {
print "$i patched
";
print OUT "/* --- Modified --- */
";
} elsif($lines[$i] =~ s/msg_ctry_use,l_month/"Usage by Country for",s_gmonth/xg) {
print "$i patched
";
print OUT "/* --- Modified --- */
";
} elsif($lines[$i] =~ s/msg_main_us/"Usage summary for"/xg) {
print "$i patched
";
print OUT "/* --- Modified --- */
";
}
print OUT $lines[$i];
}
close(OUT);

#加入新的函数给前面显示的程序用

print "
patch $ARGV[0]/webalizer_lang.h
";

$file_lang = "$ARGV[0]/webalizer_lang.h";
open(OUT,">>$file_lang");
print OUT qq~
/* --- start Add ---*/
char *msg_gh_hits = "Hits";
char *msg_gh_pages = "Pages";
char *msg_gh_visits= "Visits";
char *msg_gh_files = "Files";
char *msg_gh_sites = "Sites";
char *msg_gh_xfer = "KBytes";

char *s_gmonth[12]={ "Jan", "Feb", "Mar",
"Apr", "May", "Jun",
"Jul", "Aug", "Sep",
"Oct", "Nov", "Dec"};

/* -------------End------------- */
~;

#补充声明这些新加的函数
print "
patch $ARGV[0]/lang.h
";

$file_lang = "$ARGV[0]/lang.h";
open(OUT,">>$file_lang");
print OUT qq~
/* --- start Add ---*/
extern char *msg_gh_hits ;
extern char *msg_gh_pages ;
extern char *msg_gh_visits;
extern char *msg_gh_files ;
extern char *msg_gh_sites ;
extern char *msg_gh_xfer ;
extern char *s_gmonth[12];
/* -------------End------------- */
~;

print "Done ^_^
";

####################################################

上一篇:debian 下使用紫光输入法    下一篇:默认安装的英文版OpenOffice-1.0.1 中文化搞定  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-4-16
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿