Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
Pylogmon committed Jun 21, 2024
1 parent 9ea97f0 commit 09c7b10
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 137 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: Build
on: push
permissions: write-all

jobs:
build:
Expand Down
46 changes: 15 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# Pot-App 翻译插件模板仓库 (以 [Lingva](https://github.com/TheDavidDelta/lingva-translate) 为例)

### [English](./README_EN.md) | 简体中文

### 此仓库为模板仓库,编写插件时可以直接由此仓库创建插件仓库

## 插件编写指南
Expand All @@ -23,32 +21,29 @@
- `key`: 依赖 key,对应该项依赖在配置文件中的名称,例如 `requestPath`
- `display`: 依赖显示名称,对应用户显示的名称,例如 `请求地址`
- `type`: 组件类型 `input` | `select`
- `options`: 选项列表(仅select组件需要),例如 `{"engine_a":"Engina A","engine_b":"Engina B"}`
- `options`: 选项列表(仅 select 组件需要),例如 `{"engine_a":"Engina A","engine_b":"Engina B"}`
- `language`: 插件支持的语言映射,将 pot 的语言代码和插件发送请求时的语言代码一一对应

### 3. 插件编写/编译
### 3. 插件编写

编辑 `src/lib.rs` 实现 `translate` 函数
编辑 `main.js` 实现 `translate` 函数

#### 输入参数

```rust
text: &str, // 待翻译文本
from: &str, // 源语言代码
to: &str, // 目标语言代码
detect: &str, // 检测到的语言代码(未转换)
needs: HashMap<String, String>, // 插件需要的其他配置信息,由info.json定义
```javascript
async function translate(text, from, to, options) {
const { config, utilssetResult } = options;
const { tauriFetch } = utils;
}
```

#### 返回值

```rust
// 文本翻译
// 返回用Value包裹的String
return Ok(Value::String(result));
// 词典
// 返回指定格式的json
return Ok(json!(result));
```javascript
// 文本翻译直接返回字符串
return "result";
// 流式输出使用options中的setResult函数
setResult("result");
```

词典返回 json 示例:
Expand Down Expand Up @@ -78,20 +73,11 @@
}
```

#### 测试/编译

```bash
cargo test --package plugin --lib -- tests --nocapture # 运行测试用例
cargo build --release # 编译
```

### 4. 打包 pot 插件

1.`target/release`目录找到`plugin.dll`(Windows)/`libplugin.dylib`(MacOS)/`libplugin.so`(Linux)文件,统一删除`lib`前缀.

2.`plugin.dll`/`libplugin.dylib`/`libplugin.so`文件和`info.json`以及图标文件压缩为 zip 文件。
1.`main.js` 文件和 `info.json` 以及图标文件压缩为 zip 文件。

3. 将文件重命名为`<插件id>.potext`,例如`[plugin].com.pot-app.lingva.potext`,即可得到 pot 需要的插件。
2. 将文件重命名为`<插件id>.potext`,例如`[plugin].com.pot-app.lingva.potext`,即可得到 pot 需要的插件。

## 自动编译打包

Expand All @@ -100,5 +86,3 @@ cargo build --release # 编译
每次将仓库推送到 GitHub 之后 actions 会自动运行,将打包好的插件上传到 artifact,在 actions 页面可以下载

每次提交 Tag 之后,actions 会自动运行,将打包好的插件上传到 release,在 release 页面可以下载打包好的插件

> 注意需要在仓库设置中添加一个名为`TOKEN`的 secret,值为一个有权限的 GitHub Token,用于上传 release
104 changes: 0 additions & 104 deletions README_EN.md

This file was deleted.

4 changes: 2 additions & 2 deletions main.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
async function translate(text, from, to, options) {
const { config, utils } = options;
const { tauriFetch } = utils;
const { tauriFetch: fetch } = utils;
let { requestPath: url } = config;
let plain_text = text.replaceAll("/", "@@");
let encode_text = encodeURIComponent(plain_text);
Expand All @@ -10,7 +10,7 @@ async function translate(text, from, to, options) {
if (!url.startsWith("http")) {
url = `https://${url}`;
}
const res = tauriFetch(`${url}/api/v1/${from}/${to}/${encode_text}`, {
const res = await fetch(`${url}/api/v1/${from}/${to}/${encode_text}`, {
method: 'GET',
});

Expand Down

0 comments on commit 09c7b10

Please sign in to comment.