diff options
| author | Marie <marie@kaifa.ch> | 2024-02-03 17:54:59 +0000 |
|---|---|---|
| committer | Marie <marie@kaifa.ch> | 2024-02-03 17:54:59 +0000 |
| commit | d3d0e510d8b552eb1df5793f68bf8f0c200fd73b (patch) | |
| tree | 0b65cf43e5200705fe52713079b66e2cb4770adf /packages/backend/src/server/api/endpoints/notes | |
| parent | merge: some fixes to NoteEdit and muting (!376) (diff) | |
| parent | upd: add i18n (diff) | |
| download | sharkey-d3d0e510d8b552eb1df5793f68bf8f0c200fd73b.tar.gz sharkey-d3d0e510d8b552eb1df5793f68bf8f0c200fd73b.tar.bz2 sharkey-d3d0e510d8b552eb1df5793f68bf8f0c200fd73b.zip | |
merge: DeepLX-JS support (!396)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/396
Closes #324
Approved-by: Amelia Yukii <amelia.yukii@shourai.de>
Approved-by: dakkar <dakkar@thenautilus.net>
Diffstat (limited to 'packages/backend/src/server/api/endpoints/notes')
| -rw-r--r-- | packages/backend/src/server/api/endpoints/notes/translate.ts | 49 |
1 files changed, 36 insertions, 13 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/translate.ts b/packages/backend/src/server/api/endpoints/notes/translate.ts index 698c37b616..1397e0d6fe 100644 --- a/packages/backend/src/server/api/endpoints/notes/translate.ts +++ b/packages/backend/src/server/api/endpoints/notes/translate.ts @@ -81,19 +81,23 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- const instance = await this.metaService.fetch(); - if (instance.deeplAuthKey == null) { + if (instance.deeplAuthKey == null && !instance.deeplFreeMode) { return 204; // TODO: 良い感じのエラー返す } + if (instance.deeplFreeMode && !instance.deeplFreeInstance) { + return 204; + } + let targetLang = ps.targetLang; if (targetLang.includes('-')) targetLang = targetLang.split('-')[0]; const params = new URLSearchParams(); - params.append('auth_key', instance.deeplAuthKey); + if (instance.deeplAuthKey) params.append('auth_key', instance.deeplAuthKey); params.append('text', note.text); params.append('target_lang', targetLang); - const endpoint = instance.deeplIsPro ? 'https://api.deepl.com/v2/translate' : 'https://api-free.deepl.com/v2/translate'; + const endpoint = instance.deeplFreeMode && instance.deeplFreeInstance ? instance.deeplFreeInstance : instance.deeplIsPro ? 'https://api.deepl.com/v2/translate' : 'https://api-free.deepl.com/v2/translate'; const res = await this.httpRequestService.send(endpoint, { method: 'POST', @@ -103,18 +107,37 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint- }, body: params.toString(), }); + if (instance.deeplAuthKey) { + const json = (await res.json()) as { + translations: { + detected_source_language: string; + text: string; + }[]; + }; - const json = (await res.json()) as { - translations: { - detected_source_language: string; - text: string; - }[]; - }; + return { + sourceLang: json.translations[0].detected_source_language, + text: json.translations[0].text, + }; + } else { + const json = (await res.json()) as { + code: number, + message: string, + data: string, + source_lang: string, + target_lang: string, + alternatives: string[], + }; - return { - sourceLang: json.translations[0].detected_source_language, - text: json.translations[0].text, - }; + const languageNames = new Intl.DisplayNames(['en'], { + type: 'language', + }); + + return { + sourceLang: languageNames.of(json.source_lang), + text: json.data, + }; + } }); } } |