# 快速开始
本篇内容在不借助任何 IDE 的情况下编写一个十分简单的翻译插件,你可以在任何平台上操作,下面操作截图均以 MT 管理器为例。
# 创建基础安装包
新建一个空文件夹并进入,再创建文件 manifest.json、文件夹 assets 和 src:
编辑 manifest.json 文件并填入以下内容,然后保存:
{
// MT插件系统SDK版本
// 高版本插件无法安装在低版本插件系统中
// 目前均填2
pluginSdkVersion: 2,
// 插件ID,插件的唯一标识,类似于packageName
// 只能由字母、数字、下划线和点组成
pluginID: "bin.mt.plugin.demo",
// 插件版本号,低版本插件无法覆盖安装高版本插件
versionCode: 1,
// 插件版本名称
versionName: "v1.0",
// 插件名称
name: "插件Demo",
// 插件描述
description: "这里是插件描述",
// 对外接口,接口类型会自动判断
interfaces: []
}
将以上三个文件(夹)以 zip 格式压缩,并改后缀为 .mtp:
这样我们就完成了一个最简单的插件,你可以安装它,只是这个插件没有任何功能。
# 实现翻译接口
进入 src 文件夹,创建文件 CaseTranslationEngine.java:
编辑该文件并填入以下代码,然后保存:
import android.support.annotation.NonNull;
import java.util.Arrays;
import java.util.List;
import bin.mt.plugin.api.translation.BaseTranslationEngine;
public class CaseTranslationEngine extends BaseTranslationEngine {
public CaseTranslationEngine() {
super(new ConfigurationBuilder()
// 关闭「跳过已翻译词条」
.setForceNotToSkipTranslated(true)
.build());
}
/**
* 翻译引擎名称
*/
@NonNull
@Override
public String name() {
return "大小写转换";
}
/**
* 源语言代码列表
*/
@NonNull
@Override
public List<String> loadSourceLanguages() {
return Arrays.asList("src");
}
/**
* 目标语言代码列表
*/
@NonNull
@Override
public List<String> loadTargetLanguages(String sourceLanguage) {
return Arrays.asList("upper", "lower");
}
/**
* 将语言代码转为可视化名称
* ps: 可能有些人会问为什么这么麻烦,不能直接把可视化名称写在上面吗?
* 其实这么做主要是考虑到多国语言支持,将语言名称统一在这边处理,这
* 边不多做演示,具体可以看文档后面关于本地化文本LocalString的介绍。
*/
@NonNull
@Override
public String getLanguageDisplayName(String language) {
switch (language) {
case "src":
return "原文";
case "upper":
return "大写";
case "lower":
return "小写";
}
return "???";
}
/**
* MT在翻译每一个词条时都会调用一次这个方法
*
* @param text 待翻译内容
* @param sourceLanguage 源语言代码
* @param targetLanguage 目标语言代码
* @return 翻译结果
*/
@NonNull
@Override
public String translate(String text, String sourceLanguage, String targetLanguage) {
if (targetLanguage.equals("upper"))
return text.toUpperCase(); // 转为大写
else
return text.toLowerCase(); // 转为小写
}
}
通过以上代码我们已经实现了一个简单的大小写转换翻译引擎,具体说明请看代码注释。
接着我们还需要在 manifest.json 文件中注册该接口,如下图所示:
因为源码中没有设置包名,所以接口名称填
CaseTranslationEngine
,如果设置了包名,例如aa.bb
,则需要填aa.bb.CaseTranslationEngine
编辑完成后,重新压缩文件生成插件安装包,然后安装插件。
安装插件之后,进入插件管理界面,点击我们刚刚安装的插件,选择测试翻译接口功能。
最后测试大小写转换功能。