博客网 >

写点东西真不容易,这是我在www.firefox.com.cn上发的帖子,转过来留个备份。
http://www.firefox.net.cn/newforum/viewtopic.php?t=1111&postdays=0&postorder=asc&&start=75

firefox(mozilla)的插件文件后缀是xpi,如果你把这个后缀改为zip的话,你会发现它其实就是个zip的压缩文件,可以用winzip/winrar解压缩。

由于后面还要用到rar,所以建议大家不妨装一个winrar先。

比方说,我拿到了forecastfox的最新版文件"forecastfox-0.7.1-fx+mz.xpi",改后缀解压后发现它的目录结构是:

┌─[chrome]───────────forecastfox.jar

├─[components]───────nsForecastfox.js

├─[defaults]─────────[preferences]─────────forecastfox.js

├─install.js

└─install.rdf

很快遍历一遍,哈,那个"forecastfox.jar"文件果然大有玄机。jar是java打包文件,也是压缩的,可以用rar解开,所以再次把这个文件解压缩,发现里面的目录结构是:

┌─about.js
┌─[content]─────[forecastfox]────┼─forecastfox.js
│ ├─forecastfox.xul
│ └─...

│ ┌─[bg-BG]
├─[locale]──────────┼─[en-US] ┌─contents.rdf
│ ├─[zh-CN]──────[forecastfox]─────┼─forecastfox.dtd
│ └─... └─forecastfox.properties

└─[skin]

其中,locale目录中包含了众多子目录,如"de-DE"(德语)、"en-US"(美式英语)、"zh-CN"(简体中文)等,正是要找的东东耶。首先把不相干的都删掉,只保留"en-US"和"zh-CN"目录就好了。

再来看看官方提供的zh-CN目录下都有些什么?注意看里面有个"forecastfox.properties"文件,不少条目都已经翻译好了,从提供的信息来看,汉语翻译者应该是AXB或者Jose Sun,真要多多感谢了!

不过你会发现官方的这个版本只是做了菜单界面的翻译,至于天气和城市信息等则还是显示英文;还有一点就是,这个插件会自动根据firefox的版本语言选择不同的语言包,比如说,如果你装的是英文版的firefox,则天气插件的界面就是英文的——不爽!

下面我们就来解决上面两个问题。


(一) 汉化时间、天气和城市信息
其实人家早就可以汉化这些信息,只不过因为weather.com禁止修改它发布的信息,所以这些内容只好不翻译,大家看到的都是英文(具体见http: //forecastfox.mozdev.org/faq.html),官方网站能提供的就是这么多了,剩下就看咱自己能怎么鼓捣。这里要大大地感谢 jackytj兄,他把没有汉化的那些字符串全加进"forecastfox.properties"里了,如:
-------------------
day = 白天
night = 夜间
ESE = 东南偏东
SSW = 西南偏南
WNW = 西北偏西
NNE = 东北偏北
SSE = 东南偏南
WSW = 西南偏西
NNW = 西北偏北
ENE = 东北偏东
SE = 东南
SW = 西南
NW = 西北
NE = 东北
E = 东
S = 南
W = 西
N = 北
Sunday = 周日
Monday = 周一
Tuesday = 周二
Wednesday = 周三
Thursday = 周四
Friday = 周五
Saturday = 周六
Sunny = 晴
Sun = 太阳
Clear = 晴
Haze = 霾
MostlyCloudy = 多云间晴
PartlyCloudy = 晴间多云
Clouds = 云
Scattered = 局部
Mostly = 主要为
Thunderstorms = 雷雨
WintryMix = 冻雨
Fog = 雾
Smoke = 烟雾
Mist = 薄雾
Showers = 阵雨
Fair = 晴
Rain = 雨
Drizzle = 毛毛雨
Snow = 雪
SnowShowers = 阵雪
Flurries = 小雪
Cloudy = 多云
Light = 小

AbagQiChina = 中国阿巴嘎
AchengChina = 中国阿城
AihuiChina = 中国爱辉
BeijingChina = 中国北京
-------------------
等等。

把这些条目加到"forecastfox.properties"里面之后,还需要用转码工具装成ASCII字符形式表达的unicode,比如"中国北 京"转完之后就是"\u4E2D\u56FD\u5317\u4EAC"。在Java开发包(JDK)里可以找到这样的工具,叫 "native2ascii.exe",执行"native2ascii.exe forecastfox.properties"就好了,记得之前把"forecastfox.properties"做个备份。下面是转好后的样子:
-------------------
day = \u767D\u5929
night = \u591C\u95F4
ESE = \u4E1C\u5357\u504F\u4E1C
SSW = \u897F\u5357\u504F\u5357
WNW = \u897F\u5317\u504F\u897F
NNE = \u897F\u5317\u504F\u897F
SSE = \u4E1C\u5357\u504F\u5357
WSW = \u897F\u5357\u504F\u897F
NNW = \u897F\u5317\u504F\u5317
ENE = \u4E1C\u5317\u504F\u4E1C
SE = \u4E1C\u5357
SW = \u897F\u5357
NW = \u897F\u5317
NE = \u4E1C\u5317
E = \u4E1C
S = \u5357
W = \u897F
N = \u5317
Sunday = \u5468\u65E5
Monday = \u5468\u4E00
Tuesday = \u5468\u4E8C
Wednesday = \u5468\u4E09
Thursday = \u5468\u56DB
Friday = \u5468\u4E94
Saturday = \u5468\u516D
Sunny = \u6674
Sun = \u592A\u9633
Clear = \u6674
Haze = \u973E
MostlyCloudy = \u591A\u4E91\u95F4\u6674
PartlyCloudy = \u6674\u95F4\u591A\u4E91
Clouds = \u4E91
Scattered = \u5C40\u90E8
Mostly = \u4E3B\u8981\u4E3A
Thunderstorms = \u96F7\u96E8
WintryMix = \u51BB\u96E8
Fog = \u96FE
Smoke = \u70DF\u96FE
Mist = \u8584\u96FE
Showers = \u9635\u96E8
Fair = \u6674
Rain = \u96E8
Drizzle = \u6BDB\u6BDB\u96E8
Snow = \u96EA
SnowShowers = \u9635\u96EA
Flurries = \u5C0F\u96EA
Cloudy = \u591A\u4E91
Light = \u5C0F

AbagQiChina = \u4E2D\u56FD\u963F\u5DF4\u560E
AchengChina = \u4E2D\u56FD\u963F\u57CE
AihuiChina = \u4E2D\u56FD\u7231\u8F89
BeijingChina = \u4E2D\u56FD\u5317\u4EAC
-------------------

为了让插件能够读取这些新加的字串,还需要对两个"js"文件做些改动,这两个文件分别是[chrome] -> forecastfox.jar -> [content] -> [forecastfox]目录下的"forecastfox.js",以及[components]目录下的"nsForecastfox.js"。大 概是在"setLabel: function(...)"这个函数里,加上
" var weather_words = [
[/Sunday/g, strings.getString('Sunday')],
[/Monday/g, strings.getString('Monday')],
...
];
for (var x = 0; x < weather_words.length; x++)
{
text = text.replace(weather_words[x][0], weather_words[x][1]);
}
"之类的字符串替换功能。所幸jackytj兄已经改好了,再次感谢!(以后如果要添加你自己的条目,记得依样画葫芦就是了,呵呵。。。)

改完后记得把改动的文件打包进"forecastfox.jar"里面,就省事的办法就是用winrar了,用鼠标直接拖进去就成了。


(二) 在非简体中文版FF中让天气插件显示汉字
这个问题其实比较简单,还记得开始解开的目录里有叫"install.js"和"install.rdf"的文件吗?

打开install.js这个文件会发现里面有一项"LOCALE_LIST",列了N多的语言:["en-US", "ca-AD", "el-GR", "es-ES", "fr-FR", "it-IT", "nl-NL", "pt-BR", "ru-RU", "sk-SK", "sl-SI", "sv-SE", "tr-TR", "zh-CN", "zh-TW", "pl-PL", "de-DE", "cs-CZ", "ko-KR", "bg-BG", "da-DK"]! 看来咱是用不了那么多了,其它统统删掉,就保留"zh-CN"好了。改好的样子如下:
const LOCALE_LIST = ["zh-CN"];

打开install.rdf,找到 -> 里的项,会看到许多语言;删除其余的项,只保留
locale/zh-CN/forecastfox/
这一条。

是不是很轻松就解决了在英文版ff里天气插件显示汉字的问题?!


(三) 其它小的修改
比如,在[defaults] -> [preferences]下的forecastfox.js,里面定义的缺省单位是美制:
pref("forecastfox.general.units", 1); //1=american,2=english,3=metric
而中国人使用习惯是公制,可以把"1"改为"3":
pref("forecastfox.general.units", 3); //1=american,2=english,3=metric

接下来需要把改好的jar文件连同其它改动的文件放回forecastfox.xpi文件里,同样是用winrar。怎么样,一个最新的汉化版出来了吧!

<< IBM PC之父:埃斯特利奇(Z... / 评论:特定用户群给寻呼的“一线生... >>

专题推荐

不平凡的水果世界

不平凡的水果世界

平凡的水果世界,平凡中的不平凡。 今朝看水果是水果 ,看水果还是水果 ,看水果已不是水果。这境界,谁人可比?在不平凡的水果世界里,仁者见仁,智者见智。

中国春节的那些习俗

中国春节的那些习俗

正月是农历新年的开始,人们往往将它看作是新的一年年运好坏的兆示期。所以,过年的时候“禁忌”特别多。当然,各个地方的风俗习惯不一样,过年的禁忌也是不一样的。

评论
0/200
表情 验证码:

刘晓曦

  • 文章总数0
  • 画报总数0
  • 画报点击数0
  • 文章点击数0
个人排行
        博文分类
        日期归档