diff --git a/src/controllers/api/translate.ts b/src/controllers/api/translate.ts index f2ca9eae..e1577478 100644 --- a/src/controllers/api/translate.ts +++ b/src/controllers/api/translate.ts @@ -132,7 +132,10 @@ const translateController: AppController = async (c) => { dittoTranslations.set(translatedId, { data: mastodonTranslation }); return c.json(mastodonTranslation, 200); - } catch { + } catch (e) { + if (e instanceof Error && e.message?.includes('not supported')) { + return c.json({ error: `Translation of source language '${event.language}' not supported` }, 422); + } return c.json({ error: 'Service Unavailable' }, 503); } }; diff --git a/src/translators/DeepLTranslator.ts b/src/translators/DeepLTranslator.ts index d97c59a1..5c457903 100644 --- a/src/translators/DeepLTranslator.ts +++ b/src/translators/DeepLTranslator.ts @@ -68,6 +68,9 @@ export class DeepLTranslator implements DittoTranslator { const response = await this.fetch(request); const json = await response.json(); + if (!response.ok) { + throw new Error(json['message']); + } const data = DeepLTranslator.schema().parse(json); return data; diff --git a/src/translators/LibreTranslateTranslator.ts b/src/translators/LibreTranslateTranslator.ts index d632c71e..a7d4eb85 100644 --- a/src/translators/LibreTranslateTranslator.ts +++ b/src/translators/LibreTranslateTranslator.ts @@ -68,6 +68,9 @@ export class LibreTranslateTranslator implements DittoTranslator { const response = await this.fetch(request); const json = await response.json(); + if (!response.ok) { + throw new Error(json['error']); + } const data = LibreTranslateTranslator.schema().parse(json); return data;