登录 注册

登录

问题 如何汉化组件

更多
2007年08月14日 14:21 #1 作者: shirley
shirley 创建了话题: 如何汉化组件
安装了一些组件,如博客,docman等,但都是英文的,怎样可以实现汉化?

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年08月14日 21:41 #2 作者: Joomla之门
建议你在提问之前搜索一下,我专门撰写了 《Joomla!扩展(组件、模块、触发器)的汉化》 这样的文章,你为什么就不看呢?

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月02日 12:18 #3 作者: yanzi529356
yanzi529356 回复了话题: Re: 如何汉化组件
我按照你说的方法汉化了facileforms这个组件,可是为什么前台填写了表单,点确定的时候,弹出来的是乱码呢?谢谢赐教!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月02日 13:01 #4 作者: Joomla之门
facileforms 这个组件我似乎已经汉化过了。好久没有用,具体忘记了弹出窗口怎么汉化了。不过,汉化后的语言文件其字符编码必须与网站模板的字符编码、数据库的字符编码三者一致。能否说说你这些编码都是哪个?是否一致?

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月02日 14:40 #5 作者: yanzi529356
yanzi529356 回复了话题: Re: 如何汉化组件
应该都是utf-8的吧,这个是数据库是Joomla 自带的,我现在还不知道如何查看数据库的编码,我把语言文件都变成utf-8的编码了,但是还是乱码呢?

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月02日 17:15 #6 作者: Joomla之门
我说的“数据库”编码是指你在安装Joomla!中文版核心之前就应该把你的数据库服务器端字符编码设置为 utf-8。如果你安装的是Joomla!英文原版,那就根本无法支持utf-8中文。所以麻烦你把这些运行环境参数提供一下,我们再分析分析。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月02日 17:23 #7 作者: yanzi529356
yanzi529356 回复了话题: Re: 如何汉化组件
由于时间太长,joomla安装的时候编码是什么已经不记得了,但是后来我又新安装了一个站点测试,发现选择中文utf-8的编码,报错会出现乱码,只有安装成简体中文,有什么办法可以查询数据库安装的编码方式吗?网站的语言是simplified_chinese

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月02日 21:35 #8 作者: Joomla之门
刚才花了整整2个小时扎扎实实测试了一下 FacileForm 这个组件。终于理解了你的问题:

在前台填写完表单之后,会弹出一个小窗口显示一些反馈信息,内容应该是“表单发送成功”之类的,但是看到的却是乱码!

这个原因可能是该组件没有考虑多语种环境,因此在显示反馈信息的代码中,默认使用了不同于 utf-8 的其他字符编码,而我汉化的中文语言文件是 utf-8 编码,因此就成了乱码。

但是,不能据此就将语言文件的编码修改为 iso-8859-1,因为这样一来,所有后台、前台的其他中文字串就成了乱码。我们只能寻找决定弹出窗口中文字编码的那段代码,然后将其修改即可。

我测试了一下:同样的表单,如果我把中文语言文件删除(即相当于使用英文原版),我提交信息后弹出窗口中显示的是正常的英文信息!我能清楚地看到“Form successfully submitted”这句话;当我重新上传中文语言文件,把它变成中文版,然后在前台重新填写同样的表单,提交之后弹出窗口中显示的就是乱码。

但是实际上,“Form successfully submitted”这句话是位于语言文件中的,中文版本对应的在 simplified_chinese.php 文件的第 21 行。我们看到的乱码就是因为该组件在显示这句话时使用了不同于 utf-8 的其他字符编码(很可能是 iso-8859-1)。

我并不懂编程。因此, 我在 FacileForm 的官方论坛发了帖子 ,希望有人能解决这个问题。

感谢 yanzi529356 的反馈!我一直没有认真测试过这个组件(太忙了,没有时间深入研究,汗!),所以一开始没有理解你的问题,非常抱歉!

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月03日 21:43 #9 作者: gmail
gmail 回复了话题: Re: 如何汉化组件
感谢老白的辛勤努力!~

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月03日 22:50 #10 作者: Joomla之门
FacileForm 官方论坛有人提供了线索:这个弹出窗口是由 Javascript 的 alert 功能来实现的,而 Javascript 是在访客的浏览器中(客户端)运行,因此无法探测语言文件的编码。

在网上搜索“Javascript alert 乱码”能找到很多同样的问题,但是没有一个跟这个完全一样,所以找到的那些解决方法也用不上。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月04日 06:38 #11 作者: eric
eric 回复了话题: Re: 如何汉化组件
老白,辛苦了

joomla网站建设---www.zsunad.com
本人有些joomla扩展,欢迎索取,QQ:184461298。

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月04日 17:41 #12 作者: Joomla之门
我在官方网站论坛上的帖子今天得到 Bitsqueezer 的回复,他的说法提醒了我:既然这个“alert乱码”问题与浏览器有很大关系,我们可以尝试自己来定义新的 Javascript 代码。

经过测试,下面的方法显示了正常的中文:

进入 Joomla! 后台,点击顶部菜单上的“组件 -> FacileForm -> 管理脚本”,进入“管理脚本库”页面,如果你没有看到很长的脚本列表,就点击页面上部中央的“软件包”下拉框,选择“FF”,然后就能看到所有的脚本列表。在页面下部,找到“Show submitted status”(ff_showsubmitted)这个脚本,点击其名称,进入设置页面,在底部的“代码”框中,删除原有的代码(请复制到别处备份,以免我的方法有错),填写如下代码进去:
function ff_showsubmitted(status, message)
{
    alert('表单提交成功!');
} 

然后点击页面底部的“保存”按钮。现在回到网站前台,尝试提交表单,看看反馈信息是否显示了正常的中文?我测试的时候确实显示了正常的中文。

不过,这是我自己随便想出来的代码,不知道是否合乎规范。因为我只考虑了“提交成功”,而没有考虑“提交失败”。估计还是有问题。但是起码可以证明,在“管理脚本”这个页面上,我们可以利用自定义的 javascript 代码来解决乱码问题。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月05日 17:27 #13 作者: yanzi529356
yanzi529356 回复了话题: Re: 如何汉化组件
非常感谢白大哥的支持,感谢你这么有心的去追踪这个问题,真的很感谢!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月05日 18:03 #14 作者: yanzi529356
yanzi529356 回复了话题: Re: 如何汉化组件
但是我觉得这样不能解决问题,function ff_showsubmitted(status, message)
{
    alert(message);
},message是一个变量,由代码提供给他的,如果换成了这个写死了的语句的话,那么这个验证起不了什么作用了,希望我们大家加油,把这个问题攻克了,加油!

登录 或者   注册一个会员帐号 来参与讨论

更多
2007年11月06日 09:53 #15 作者: Joomla之门
没错,不仅 message 是一个变量,status 也是变量。我只是提供一个思路,我并不懂 Javascript 编程,希望有高手能够写出自定义脚本来解决这个问题。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年03月29日 15:17 #16 作者: tomato18
tomato18 回复了话题: Re: 如何汉化组件
我在使用FacileForms也遇到了这个问题,这个组件很强大实在是舍不得换,于是上网搜了一下,发现了这个帖子,我按着老白的思路重写了一下ff_showsubmitted函数,利用了status这个参数能够按着不同的状态输出不同的消息,是个笨方法,但是现在我自己试验过,可以用,也算是个解决办法吧,欢迎提出意见。
function ff_showsubmitted(status, message)
{
switch (status)
{
case 0:
  alert("表单提交成功");
  break;
case 1:
  alert("表单已被取消发布");
  break;
case 2:
  alert("保存记录失败");
  break;
case 3:
  alert("保存二级记录失败");
  break;
case 4:
  alert("上传文件失败");
  break;
case 5:
  alert("发送邮件失败");
  break;
case 6:
  alert("创建附件文件失败");
  break;
default:
}
} // ff_showsubmitted

登录 或者   注册一个会员帐号 来参与讨论