feat: post translation in Traditional Chinese

This commit is contained in:
naskya 2023-08-29 14:20:54 +09:00
parent c47272ceea
commit 8abed1108a
Signed by: naskya
GPG key ID: 164DFF24E2D40139
4 changed files with 20 additions and 2 deletions

View file

@ -10,6 +10,8 @@
## 主要な変更点 ## 主要な変更点
- 繁体中文への投稿翻訳を繁体字で表示する
- DeepL 翻訳や LibreTranslate は簡体中文への翻訳しか提供していない……。
- モデレーターでない一般ユーザーにもカスタム絵文字の管理権を与えられるように - モデレーターでない一般ユーザーにもカスタム絵文字の管理権を与えられるように
- カスタム絵文字の管理が大変なサーバー管理者さんがたくさんいらっしゃったのでこの機能を追加するべきではないか他の開発者に訊いたところロール機能の実装を待つべきだと言われてしまったが、Firefish のロール機能は現状では仕様がまだ固まっておらず実装までに時間が掛かると考えられるため - カスタム絵文字の管理が大変なサーバー管理者さんがたくさんいらっしゃったのでこの機能を追加するべきではないか他の開発者に訊いたところロール機能の実装を待つべきだと言われてしまったが、Firefish のロール機能は現状では仕様がまだ固まっておらず実装までに時間が掛かると考えられるため
- 以下の権限を与えられます - 以下の権限を与えられます

View file

@ -98,6 +98,7 @@
"nodemailer": "6.9.4", "nodemailer": "6.9.4",
"nsfwjs": "2.4.2", "nsfwjs": "2.4.2",
"oauth": "^0.10.0", "oauth": "^0.10.0",
"opencc-js": "^1.0.5",
"os-utils": "0.0.14", "os-utils": "0.0.14",
"otpauth": "^9.1.4", "otpauth": "^9.1.4",
"parse5": "7.1.2", "parse5": "7.1.2",

View file

@ -1,6 +1,7 @@
import { URLSearchParams } from "node:url"; import { URLSearchParams } from "node:url";
import fetch from "node-fetch"; import fetch from "node-fetch";
import config from "@/config/index.js"; import config from "@/config/index.js";
import { Converter } from "opencc-js";
import { getAgentByUrl } from "@/misc/fetch.js"; import { getAgentByUrl } from "@/misc/fetch.js";
import { fetchMeta } from "@/misc/fetch-meta.js"; import { fetchMeta } from "@/misc/fetch-meta.js";
import { Notes } from "@/models/index.js"; import { Notes } from "@/models/index.js";
@ -38,6 +39,13 @@ export const paramDef = {
required: ["noteId", "targetLang"], required: ["noteId", "targetLang"],
} as const; } as const;
function convertChinese(convert: boolean, src: string) {
if (!convert) return src;
const converter = Converter({ from: "cn", to: "twp" });
return converter(src);
}
export default define(meta, paramDef, async (ps, user) => { export default define(meta, paramDef, async (ps, user) => {
const note = await getNote(ps.noteId, user).catch((err) => { const note = await getNote(ps.noteId, user).catch((err) => {
if (err.id === "9725d0ce-ba28-4dde-95a7-2cbb2c15de24") if (err.id === "9725d0ce-ba28-4dde-95a7-2cbb2c15de24")
@ -93,7 +101,7 @@ export default define(meta, paramDef, async (ps, user) => {
return { return {
sourceLang: json.detectedLanguage?.language, sourceLang: json.detectedLanguage?.language,
text: json.translatedText, text: convertChinese(ps.targetLang === "zh-TW", json.translatedText),
}; };
} }
@ -128,6 +136,6 @@ export default define(meta, paramDef, async (ps, user) => {
return { return {
sourceLang: json.translations[0].detected_source_language, sourceLang: json.translations[0].detected_source_language,
text: json.translations[0].text, text: convertChinese(ps.targetLang === "zh-TW", json.translations[0].text),
}; };
}); });

View file

@ -297,6 +297,9 @@ importers:
oauth: oauth:
specifier: ^0.10.0 specifier: ^0.10.0
version: 0.10.0 version: 0.10.0
opencc-js:
specifier: ^1.0.5
version: 1.0.5
os-utils: os-utils:
specifier: 0.0.14 specifier: 0.0.14
version: 0.0.14 version: 0.0.14
@ -12143,6 +12146,10 @@ packages:
is-wsl: 2.2.0 is-wsl: 2.2.0
dev: true dev: true
/opencc-js@1.0.5:
resolution: {integrity: sha512-LD+1SoNnZdlRwtYTjnQdFrSVCAaYpuDqL5CkmOaHOkKoKh7mFxUicLTRVNLU5C+Jmi1vXQ3QL4jWdgSaa4sKjg==}
dev: false
/opencollective-postinstall@2.0.3: /opencollective-postinstall@2.0.3:
resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==}
hasBin: true hasBin: true