2016年5月
FARR 自己写翻译插件
FARR 全称 Find And Run Robot。在快速启动软件属于排名靠前的。最强大的地方在于它的完全自定义。用户可以完全根据自己的喜好修改这款软件。而且有极其丰富的插件支持。几乎支持大部分流行语言如C#、JavaScript、C++等
经常关注 善用佳软,也经常关注快速启动。老实讲,我使用过善用佳软推荐的Altrun,使用过好几个年头。也一直期待着它的更新。但是几年过去了,仍然没有。因为这款软件虽然极其好用,也小巧。但是偶发性崩溃,配置丢失问题,是不能忍受的。
FARR 是我的备选,从未用过。于今年开始正式使用。我所需要的快速启动应该能够满足的需求是搜索、快速定位文件、即时翻译、计算以及打开收藏文件等。 Altrun 的主要功能便是“收藏”、“打开”和“快速定位”。它只此三个功能,便可以傲视群雄。 FARR在这三点上便不如。但是 FARR 优势在于搜索及其丰富的插件以实现你需要的功能。
废话不多说了。开始讲述制作翻译插件的内容。我使用的是 ecaradec 在 FARR论坛 写的怎样使用 Javascript 开发 FARR 插件的教程。
使用 Javascript 开发的插件放置在目录 Plugins\CZB_pack。
在其下新建文件夹:Plugins\CZB_pack\Taliove_Translate
在新文件夹下新建文件:fsubscript.js 最好直接拷贝插件目录下其它文件夹的这个文件
文件 fsubscript.js 内输入代码:
plugins["Taliove_Translate"] = {
version: "1.0",
lastChange: new Date(fso.GetFile(currentDirectory + "\\fsubscript.js").DateLastModified).toDateString(),
displayName: "添雨翻译",
directory: currentDirectory,
icon: currentDirectory + "\\icon.ico", //此图片放在你的插件目录下即可
aliasstr: "fy",
description: "即时翻译",
help: currentDirectory + "\\..\\help.html#open:[[Taliove Translate]]:HideMainMenu"
};
上述代码中的 aliasstr 为你的命令。当前设置为 fy 。即使用 fy xxx 来翻译xxx的内容。
本插件使用的是百度翻译,前往百度翻译申请接入,然后下载百度翻译的 JS SDK ,将其中的 md5.js 拷贝到插件目录。接下来在 fsubscript.js 文件中插入如下代码:
(function () {
var name = "Taliove_Translate";
var js = plugins[name];
var fyResult = "";
var init = false;
js.search = function onSearchBegin(querykey, explicit, queryraw, querynokeyword, modifierstring, triggermethod) {
if (!explicit) return;
var reg = new RegExp("^fy");
var word = queryraw.replace(reg, "").trim();
if (word) {
var jsStr = "<p>翻译:" + word + "</p>" +
"<p>结果:<span id='result'></span></p>" +
"<script src='http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js'></script>" +
"<script src='" + js.directory + "/md5.js'></script>" +
"<script src='" + js.directory + "/func.js'></script>" +
"<script type='text/javascript'>" +
"$('#result').text('正在翻译,请稍候...');" +
"fy('" + word + "').done(function(msg){" +
"$('#result').text(msg);" +
"});" +
"</script>";
showHTML(jsStr);
} else {
showHTML("请输入完整的值");
}
};
}());
在插件目录新增文件 func.js ,代码如下:
function getType(obj) {
return obj == null ?
String(obj) :
{
"[object Array]": "array",
"[object Boolean]": "boolean",
"[object Date]": "date",
"[object Function]": "function",
"[object Number]": "number",
"[object Object]": "object",
"[object RegExp]": "regexp",
"[object String]": "string"
}[Object.prototype.toString.call(obj)] || "object";
}
function fy(query, from, to) {
var appid = '';//你接入百度翻译后的appid
var key = '';//你接入百度翻译后的key
var salt = (new Date).getTime();
from = from || 'auto';
to = to || 'auto';
var str1 = appid + query + salt + key;
var sign = MD5(str1);
var def = $.Deferred();
$.ajax({
url: 'http://api.fanyi.baidu.com/api/trans/vip/translate',
type: 'get',
dataType: 'jsonp',
data: {
q: query,
appid: appid,
salt: salt,
from: from,
to: to,
sign: sign
},
success: function (data) {
var result = data["trans_result"];
if (result) {
def.resolve(result[0]["dst"]);
return;
}
def.resolve('翻译失败');
},
error: function () {
def.resolve("翻译失败");
}
});
return def.promise();
}
至此,可以呼出 FARR 控制台,输入 fy 翻译,即可看到结果显示。