From a48dd7645f2f43804883a436be320dc2601a42e4 Mon Sep 17 00:00:00 2001 From: Maurice Date: Sun, 25 Oct 2026 17:57:32 +0100 Subject: [PATCH] fix(wanderer): say so when wanderer names no author for the token's account A token whose account has no local ActivityPub author was reported as invalid_response, which the settings show as 'The answer did not come from wanderer', although wanderer had answered fine. It now has its own code, no_author, with a message in every language that says what is missing. --- server/src/nest/wanderer/wanderer.client.ts | 8 +++++++- server/tests/unit/nest/wanderer.client.test.ts | 7 +++++-- shared/src/i18n/ar/wanderer.ts | 2 ++ shared/src/i18n/az/wanderer.ts | 2 ++ shared/src/i18n/br/wanderer.ts | 2 ++ shared/src/i18n/ca/wanderer.ts | 2 ++ shared/src/i18n/cs/wanderer.ts | 2 ++ shared/src/i18n/de/wanderer.ts | 2 ++ shared/src/i18n/en/wanderer.ts | 2 ++ shared/src/i18n/es/wanderer.ts | 2 ++ shared/src/i18n/et/wanderer.ts | 2 ++ shared/src/i18n/fr/wanderer.ts | 2 ++ shared/src/i18n/gr/wanderer.ts | 2 ++ shared/src/i18n/hu/wanderer.ts | 2 ++ shared/src/i18n/id/wanderer.ts | 2 ++ shared/src/i18n/it/wanderer.ts | 2 ++ shared/src/i18n/ja/wanderer.ts | 1 + shared/src/i18n/ko/wanderer.ts | 1 + shared/src/i18n/nl/wanderer.ts | 2 ++ shared/src/i18n/pl/wanderer.ts | 2 ++ shared/src/i18n/ru/wanderer.ts | 2 ++ shared/src/i18n/sk/wanderer.ts | 2 ++ shared/src/i18n/sv/wanderer.ts | 2 ++ shared/src/i18n/th/wanderer.ts | 2 ++ shared/src/i18n/tr/wanderer.ts | 2 ++ shared/src/i18n/uk/wanderer.ts | 2 ++ shared/src/i18n/vi/wanderer.ts | 2 ++ shared/src/i18n/zh-TW/wanderer.ts | 1 + shared/src/i18n/zh/wanderer.ts | 1 + shared/src/wanderer/wanderer.schema.ts | 2 ++ 30 files changed, 64 insertions(+), 3 deletions(-) diff --git a/server/src/nest/wanderer/wanderer.client.ts b/server/src/nest/wanderer/wanderer.client.ts index f29fb7684..3b81ef014 100644 --- a/server/src/nest/wanderer/wanderer.client.ts +++ b/server/src/nest/wanderer/wanderer.client.ts @@ -259,7 +259,13 @@ export class WandererClient { const actors = (user.expand?.activitypub_actors_via_user ?? []) .filter((actor) => actor.is_local !== false && isTrailId(actor.id)) .map((actor) => actor.id); - if (actors.length === 0) throw new WandererError('invalid_response', 'wanderer named no author for the token'); + if (actors.length === 0) { + throw new WandererError( + 'no_author', + 'wanderer named no author for the token', + 'no local actor in activitypub_actors_via_user', + ); + } return actors; } diff --git a/server/tests/unit/nest/wanderer.client.test.ts b/server/tests/unit/nest/wanderer.client.test.ts index 856498218..df067e0d7 100644 --- a/server/tests/unit/nest/wanderer.client.test.ts +++ b/server/tests/unit/nest/wanderer.client.test.ts @@ -131,14 +131,17 @@ describe('WandererClient', () => { expect((await failure(() => client.check(CREDS))).code).toBe('unauthorized'); }); - it('RS-03: an owner without a local author, or with an odd id, is an answer TREK does not trust', async () => { + it('RS-03: an owner without a local author is told as such; an odd id is an answer TREK does not trust', async () => { answer({ ...OWNER, '/api/v1/user/gixauk8ukjpqabm': reply({ expand: { activitypub_actors_via_user: [{ id: 'remote1', is_local: false }] }, }), }); - expect((await failure(() => client.ownActors(CREDS))).code).toBe('invalid_response'); + // wanderer did answer, so the reason is the missing author, not an answer from somewhere else. + expect((await failure(() => client.ownActors(CREDS))).code).toBe('no_author'); + answer({ ...OWNER, '/api/v1/user/gixauk8ukjpqabm': reply({}) }); + expect((await failure(() => client.ownActors(CREDS))).code).toBe('no_author'); answer({ '/api/v1/api-token': reply({ items: [{ user: 'Not-An-Id!' }] }) }); expect((await failure(() => client.ownActors(CREDS))).code).toBe('invalid_response'); diff --git a/shared/src/i18n/ar/wanderer.ts b/shared/src/i18n/ar/wanderer.ts index 3169ab3a2..358bba312 100644 --- a/shared/src/i18n/ar/wanderer.ts +++ b/shared/src/i18n/ar/wanderer.ts @@ -38,6 +38,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_found': 'لم يعد هذا الدرب موجودًا في wanderer.', 'wanderer.error.not_own_trail': 'يمكن استيراد دروبك الخاصة في wanderer فقط.', 'wanderer.error.invalid_response': 'لم يأتِ الرد من wanderer. تحقق من أن العنوان يشير إلى wanderer نفسه.', + 'wanderer.error.no_author': + 'ردّ wanderer، لكنه لا يذكر أي مؤلف للدروب لحساب رمز API هذا، لذلك لا يستطيع TREK معرفة الدروب التي تخصّك.', 'wanderer.error.too_large': 'ملف الدرب أكبر من 10 MB.', 'wanderer.error.server_error': 'ردّ wanderer بخطأ. حاول مرة أخرى لاحقًا.', 'wanderer.error.offline': 'أنت غير متصل بالإنترنت. لا يمكن البحث في wanderer إلا عند الاتصال.', diff --git a/shared/src/i18n/az/wanderer.ts b/shared/src/i18n/az/wanderer.ts index a882e6b46..7d09851ce 100644 --- a/shared/src/i18n/az/wanderer.ts +++ b/shared/src/i18n/az/wanderer.ts @@ -35,6 +35,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_found': 'Bu cığır artıq wanderer-də yoxdur.', 'wanderer.error.not_own_trail': 'Yalnız öz wanderer cığırlarınızı idxal edə bilərsiniz.', 'wanderer.error.invalid_response': 'Cavab wanderer-dən gəlməyib. Ünvanın birbaşa wanderer-ə yönəldiyini yoxlayın.', + 'wanderer.error.no_author': + 'wanderer cavab verdi, lakin bu API tokeninin hesabı üçün heç bir cığır müəllifi göstərmir, buna görə TREK hansı cığırların sizə aid olduğunu bilə bilmir.', 'wanderer.error.too_large': 'Cığır faylı 10 MB-dan böyükdür.', 'wanderer.error.server_error': 'wanderer xəta ilə cavab verdi. Sonra yenidən cəhd edin.', 'wanderer.error.offline': 'Oflaynsınız. wanderer-də yalnız onlayn axtarış etmək olar.', diff --git a/shared/src/i18n/br/wanderer.ts b/shared/src/i18n/br/wanderer.ts index 8a5150a19..31278d90b 100644 --- a/shared/src/i18n/br/wanderer.ts +++ b/shared/src/i18n/br/wanderer.ts @@ -36,6 +36,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Só suas próprias trilhas do wanderer podem ser importadas.', 'wanderer.error.invalid_response': 'A resposta não veio do wanderer. Confira se o endereço aponta para o próprio wanderer.', + 'wanderer.error.no_author': + 'O wanderer respondeu, mas não indica nenhum autor de trilhas para a conta deste token de API, então o TREK não consegue saber quais trilhas são suas.', 'wanderer.error.too_large': 'O arquivo da trilha tem mais de 10 MB.', 'wanderer.error.server_error': 'O wanderer respondeu com um erro. Tente de novo mais tarde.', 'wanderer.error.offline': 'Você está offline. O wanderer só pode ser pesquisado online.', diff --git a/shared/src/i18n/ca/wanderer.ts b/shared/src/i18n/ca/wanderer.ts index 79f55e799..a8722e712 100644 --- a/shared/src/i18n/ca/wanderer.ts +++ b/shared/src/i18n/ca/wanderer.ts @@ -35,6 +35,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_found': 'Aquest sender ja no existeix a wanderer.', 'wanderer.error.not_own_trail': 'Només es poden importar els teus propis senders de wanderer.', 'wanderer.error.invalid_response': "La resposta no ve de wanderer. Comprova que l'adreça apunti al mateix wanderer.", + 'wanderer.error.no_author': + "wanderer ha respost, però no indica cap autor de senders per al compte d'aquest token d'API, així que TREK no pot saber quins senders són teus.", 'wanderer.error.too_large': 'El fitxer del sender ocupa més de 10 MB.', 'wanderer.error.server_error': 'wanderer ha respost amb un error. Torna-ho a provar més tard.', 'wanderer.error.offline': 'No tens connexió. Només es pot cercar a wanderer amb connexió.', diff --git a/shared/src/i18n/cs/wanderer.ts b/shared/src/i18n/cs/wanderer.ts index c2cadc8d8..13ece119e 100644 --- a/shared/src/i18n/cs/wanderer.ts +++ b/shared/src/i18n/cs/wanderer.ts @@ -36,6 +36,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Importovat lze pouze vaše vlastní trasy z aplikace wanderer.', 'wanderer.error.invalid_response': 'Odpověď nepřišla z aplikace wanderer. Zkontrolujte, zda adresa vede přímo na wanderer.', + 'wanderer.error.no_author': + 'wanderer odpověděl, ale pro účet tohoto API tokenu neuvádí žádného autora tras, takže TREK nepozná, které trasy jsou vaše.', 'wanderer.error.too_large': 'Soubor trasy je větší než 10 MB.', 'wanderer.error.server_error': 'wanderer odpověděl chybou. Zkuste to později.', 'wanderer.error.offline': 'Jste offline. V aplikaci wanderer lze vyhledávat jen online.', diff --git a/shared/src/i18n/de/wanderer.ts b/shared/src/i18n/de/wanderer.ts index 0bdbc30c2..34f7ef9ee 100644 --- a/shared/src/i18n/de/wanderer.ts +++ b/shared/src/i18n/de/wanderer.ts @@ -37,6 +37,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Nur deine eigenen wanderer-Trails können importiert werden.', 'wanderer.error.invalid_response': 'Die Antwort kam nicht von wanderer. Prüfe, ob die Adresse auf wanderer selbst zeigt.', + 'wanderer.error.no_author': + 'wanderer hat geantwortet, nennt für das Konto dieses API-Tokens aber keinen Trail-Autor. TREK kann deshalb nicht erkennen, welche Trails deine sind.', 'wanderer.error.too_large': 'Die Trail-Datei ist größer als 10 MB.', 'wanderer.error.server_error': 'wanderer hat mit einem Fehler geantwortet. Versuche es später noch einmal.', 'wanderer.error.offline': 'Du bist offline. wanderer lässt sich nur online durchsuchen.', diff --git a/shared/src/i18n/en/wanderer.ts b/shared/src/i18n/en/wanderer.ts index 01adfe011..5235513af 100644 --- a/shared/src/i18n/en/wanderer.ts +++ b/shared/src/i18n/en/wanderer.ts @@ -35,6 +35,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Only your own wanderer trails can be imported.', 'wanderer.error.invalid_response': 'The answer did not come from wanderer. Check that the address points at wanderer itself.', + 'wanderer.error.no_author': + 'wanderer answered, but names no trail author for the account of this API token, so TREK cannot tell which trails are yours.', 'wanderer.error.too_large': 'The trail file is larger than 10 MB.', 'wanderer.error.server_error': 'wanderer answered with an error. Try again later.', 'wanderer.error.offline': 'You are offline. wanderer can only be searched online.', diff --git a/shared/src/i18n/es/wanderer.ts b/shared/src/i18n/es/wanderer.ts index 271dbcc9a..0cf6f45a0 100644 --- a/shared/src/i18n/es/wanderer.ts +++ b/shared/src/i18n/es/wanderer.ts @@ -37,6 +37,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Solo se pueden importar tus propios senderos de wanderer.', 'wanderer.error.invalid_response': 'La respuesta no viene de wanderer. Comprueba que la dirección apunta al propio wanderer.', + 'wanderer.error.no_author': + 'wanderer ha respondido, pero no indica ningún autor de senderos para la cuenta de este token de API, así que TREK no puede saber qué senderos son tuyos.', 'wanderer.error.too_large': 'El archivo del sendero ocupa más de 10 MB.', 'wanderer.error.server_error': 'wanderer ha respondido con un error. Inténtalo de nuevo más tarde.', 'wanderer.error.offline': 'Estás sin conexión. Solo se puede buscar en wanderer con conexión.', diff --git a/shared/src/i18n/et/wanderer.ts b/shared/src/i18n/et/wanderer.ts index bbb47c367..16f039ba5 100644 --- a/shared/src/i18n/et/wanderer.ts +++ b/shared/src/i18n/et/wanderer.ts @@ -36,6 +36,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Importida saab ainult oma wanderer-matkaradu.', 'wanderer.error.invalid_response': 'Vastus ei tulnud wanderer-rakendusest. Kontrolli, et aadress viitab otse wanderer-rakendusele.', + 'wanderer.error.no_author': + 'wanderer vastas, kuid ei nimeta selle API-tõendi konto jaoks ühtegi matkaraja autorit, seega ei saa TREK aru, millised matkarajad on sinu omad.', 'wanderer.error.too_large': 'Matkaraja fail on suurem kui 10 MB.', 'wanderer.error.server_error': 'wanderer vastas veaga. Proovi hiljem uuesti.', 'wanderer.error.offline': 'Oled võrguühenduseta. wanderer-rakendusest saab otsida ainult võrgus olles.', diff --git a/shared/src/i18n/fr/wanderer.ts b/shared/src/i18n/fr/wanderer.ts index 9bc9102a7..de2dce8bb 100644 --- a/shared/src/i18n/fr/wanderer.ts +++ b/shared/src/i18n/fr/wanderer.ts @@ -36,6 +36,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Seuls vos propres sentiers wanderer peuvent être importés.', 'wanderer.error.invalid_response': "La réponse ne vient pas de wanderer. Vérifiez que l'adresse pointe bien vers wanderer lui-même.", + 'wanderer.error.no_author': + "wanderer a répondu, mais n'indique aucun auteur de sentiers pour le compte de ce jeton API, TREK ne peut donc pas savoir quels sentiers sont les vôtres.", 'wanderer.error.too_large': 'Le fichier du sentier dépasse 10 MB.', 'wanderer.error.server_error': 'wanderer a répondu par une erreur. Réessayez plus tard.', 'wanderer.error.offline': "Vous êtes hors ligne. wanderer ne peut être consulté qu'en ligne.", diff --git a/shared/src/i18n/gr/wanderer.ts b/shared/src/i18n/gr/wanderer.ts index 209a07e9f..3b630f212 100644 --- a/shared/src/i18n/gr/wanderer.ts +++ b/shared/src/i18n/gr/wanderer.ts @@ -38,6 +38,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Μπορούν να εισαχθούν μόνο τα δικά σας μονοπάτια του wanderer.', 'wanderer.error.invalid_response': 'Η απάντηση δεν προήλθε από το wanderer. Ελέγξτε ότι η διεύθυνση οδηγεί στο ίδιο το wanderer.', + 'wanderer.error.no_author': + 'Το wanderer απάντησε, αλλά δεν αναφέρει κανέναν δημιουργό μονοπατιών για τον λογαριασμό αυτού του API token, οπότε το TREK δεν μπορεί να ξέρει ποια μονοπάτια είναι δικά σας.', 'wanderer.error.too_large': 'Το αρχείο του μονοπατιού είναι μεγαλύτερο από 10 MB.', 'wanderer.error.server_error': 'Το wanderer απάντησε με σφάλμα. Δοκιμάστε ξανά αργότερα.', 'wanderer.error.offline': 'Είστε εκτός σύνδεσης. Η αναζήτηση στο wanderer γίνεται μόνο με σύνδεση.', diff --git a/shared/src/i18n/hu/wanderer.ts b/shared/src/i18n/hu/wanderer.ts index 22bc437bb..31b1371d9 100644 --- a/shared/src/i18n/hu/wanderer.ts +++ b/shared/src/i18n/hu/wanderer.ts @@ -36,6 +36,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Csak a saját wanderer-túraútvonalaid importálhatók.', 'wanderer.error.invalid_response': 'A válasz nem a wanderer alkalmazástól érkezett. Ellenőrizd, hogy a cím magára a wanderer alkalmazásra mutat-e.', + 'wanderer.error.no_author': + 'A wanderer válaszolt, de ennek az API-tokennek a fiókjához nem nevez meg túraútvonal-szerzőt, így a TREK nem tudja, mely túraútvonalak a tieid.', 'wanderer.error.too_large': 'A túraútvonal fájlja nagyobb 10 MB-nál.', 'wanderer.error.server_error': 'A wanderer hibával válaszolt. Próbáld újra később.', 'wanderer.error.offline': 'Offline vagy. A wanderer csak online kereshető.', diff --git a/shared/src/i18n/id/wanderer.ts b/shared/src/i18n/id/wanderer.ts index 4e1f9b110..2ca82be27 100644 --- a/shared/src/i18n/id/wanderer.ts +++ b/shared/src/i18n/id/wanderer.ts @@ -35,6 +35,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Hanya jalur wanderer milik Anda sendiri yang dapat diimpor.', 'wanderer.error.invalid_response': 'Jawaban tidak berasal dari wanderer. Pastikan alamat mengarah ke wanderer itu sendiri.', + 'wanderer.error.no_author': + 'wanderer menjawab, tetapi tidak menyebutkan penulis jalur untuk akun token API ini, sehingga TREK tidak bisa mengetahui jalur mana yang milik Anda.', 'wanderer.error.too_large': 'Berkas jalur lebih besar dari 10 MB.', 'wanderer.error.server_error': 'wanderer menjawab dengan galat. Coba lagi nanti.', 'wanderer.error.offline': 'Anda sedang offline. Pencarian di wanderer hanya bisa dilakukan saat online.', diff --git a/shared/src/i18n/it/wanderer.ts b/shared/src/i18n/it/wanderer.ts index 9cdebd7b6..029287cef 100644 --- a/shared/src/i18n/it/wanderer.ts +++ b/shared/src/i18n/it/wanderer.ts @@ -37,6 +37,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Si possono importare solo i tuoi sentieri di wanderer.', 'wanderer.error.invalid_response': "La risposta non proviene da wanderer. Controlla che l'indirizzo punti proprio a wanderer.", + 'wanderer.error.no_author': + "wanderer ha risposto, ma non indica alcun autore di sentieri per l'account di questo token API, quindi TREK non può sapere quali sentieri sono tuoi.", 'wanderer.error.too_large': 'Il file del sentiero supera i 10 MB.', 'wanderer.error.server_error': 'wanderer ha risposto con un errore. Riprova più tardi.', 'wanderer.error.offline': 'Sei offline. In wanderer si può cercare solo online.', diff --git a/shared/src/i18n/ja/wanderer.ts b/shared/src/i18n/ja/wanderer.ts index 56bc78fab..42923026b 100644 --- a/shared/src/i18n/ja/wanderer.ts +++ b/shared/src/i18n/ja/wanderer.ts @@ -36,6 +36,7 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'インポートできるのは自分のwandererトレイルのみです。', 'wanderer.error.invalid_response': '応答がwandererから返されたものではありません。アドレスがwanderer自体を指しているか確認してください。', + 'wanderer.error.no_author': 'wandererは応答しましたが、このAPIトークンのアカウントにトレイルの作成者が示されていないため、TREKはどのトレイルがあなたのものか判断できません。', 'wanderer.error.too_large': 'トレイルのファイルが10 MBを超えています。', 'wanderer.error.server_error': 'wandererがエラーを返しました。しばらくしてからもう一度お試しください。', 'wanderer.error.offline': 'オフラインです。wandererはオンライン時のみ検索できます。', diff --git a/shared/src/i18n/ko/wanderer.ts b/shared/src/i18n/ko/wanderer.ts index c3751bdd7..541901f90 100644 --- a/shared/src/i18n/ko/wanderer.ts +++ b/shared/src/i18n/ko/wanderer.ts @@ -34,6 +34,7 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_found': 'wanderer에 이 트레일이 더 이상 없습니다.', 'wanderer.error.not_own_trail': '자신의 wanderer 트레일만 가져올 수 있습니다.', 'wanderer.error.invalid_response': 'wanderer의 응답이 아닙니다. 주소가 wanderer 자체를 가리키는지 확인하세요.', + 'wanderer.error.no_author': 'wanderer가 응답했지만 이 API 토큰의 계정에 대한 트레일 작성자를 알려 주지 않아, TREK이 어떤 트레일이 내 것인지 알 수 없습니다.', 'wanderer.error.too_large': '트레일 파일이 10 MB보다 큽니다.', 'wanderer.error.server_error': 'wanderer가 오류로 응답했습니다. 나중에 다시 시도하세요.', 'wanderer.error.offline': '오프라인 상태입니다. wanderer는 온라인에서만 검색할 수 있습니다.', diff --git a/shared/src/i18n/nl/wanderer.ts b/shared/src/i18n/nl/wanderer.ts index 2ba4d9092..d19628b7b 100644 --- a/shared/src/i18n/nl/wanderer.ts +++ b/shared/src/i18n/nl/wanderer.ts @@ -37,6 +37,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Alleen je eigen wanderer-wandelroutes kunnen worden geïmporteerd.', 'wanderer.error.invalid_response': 'Het antwoord kwam niet van wanderer. Controleer of het adres naar wanderer zelf wijst.', + 'wanderer.error.no_author': + 'wanderer heeft geantwoord, maar noemt geen auteur van wandelroutes voor het account van dit API-token, dus TREK kan niet zien welke wandelroutes van jou zijn.', 'wanderer.error.too_large': 'Het bestand van de wandelroute is groter dan 10 MB.', 'wanderer.error.server_error': 'wanderer antwoordde met een fout. Probeer het later opnieuw.', 'wanderer.error.offline': 'Je bent offline. wanderer kan alleen online worden doorzocht.', diff --git a/shared/src/i18n/pl/wanderer.ts b/shared/src/i18n/pl/wanderer.ts index 8f2a3878b..81076c943 100644 --- a/shared/src/i18n/pl/wanderer.ts +++ b/shared/src/i18n/pl/wanderer.ts @@ -38,6 +38,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Można importować tylko własne szlaki z wanderer.', 'wanderer.error.invalid_response': 'Odpowiedź nie pochodzi z wanderer. Sprawdź, czy adres wskazuje bezpośrednio na wanderer.', + 'wanderer.error.no_author': + 'wanderer odpowiedział, ale nie podaje autora szlaków dla konta tego tokenu API, więc TREK nie może ustalić, które szlaki są Twoje.', 'wanderer.error.too_large': 'Plik szlaku jest większy niż 10 MB.', 'wanderer.error.server_error': 'wanderer odpowiedział błędem. Spróbuj ponownie później.', 'wanderer.error.offline': 'Jesteś offline. wanderer można przeszukiwać tylko online.', diff --git a/shared/src/i18n/ru/wanderer.ts b/shared/src/i18n/ru/wanderer.ts index ac44f583a..9997405ab 100644 --- a/shared/src/i18n/ru/wanderer.ts +++ b/shared/src/i18n/ru/wanderer.ts @@ -36,6 +36,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_found': 'Этого маршрута больше нет в wanderer.', 'wanderer.error.not_own_trail': 'Импортировать можно только собственные маршруты wanderer.', 'wanderer.error.invalid_response': 'Ответ пришёл не от wanderer. Проверьте, что адрес указывает именно на wanderer.', + 'wanderer.error.no_author': + 'wanderer ответил, но не указывает автора маршрутов для учётной записи этого API-токена, поэтому TREK не может определить, какие маршруты ваши.', 'wanderer.error.too_large': 'Файл маршрута больше 10 МБ.', 'wanderer.error.server_error': 'wanderer ответил ошибкой. Повторите попытку позже.', 'wanderer.error.offline': 'Нет подключения к сети. Поиск в wanderer доступен только онлайн.', diff --git a/shared/src/i18n/sk/wanderer.ts b/shared/src/i18n/sk/wanderer.ts index 767116e1f..c750c3b8b 100644 --- a/shared/src/i18n/sk/wanderer.ts +++ b/shared/src/i18n/sk/wanderer.ts @@ -36,6 +36,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Importovať sa dajú iba vaše vlastné trasy z aplikácie wanderer.', 'wanderer.error.invalid_response': 'Odpoveď neprišla z aplikácie wanderer. Skontrolujte, či adresa vedie priamo na wanderer.', + 'wanderer.error.no_author': + 'wanderer odpovedal, ale pre účet tohto API tokenu neuvádza žiadneho autora trás, takže TREK nevie, ktoré trasy sú vaše.', 'wanderer.error.too_large': 'Súbor trasy je väčší ako 10 MB.', 'wanderer.error.server_error': 'wanderer odpovedal chybou. Skúste to neskôr.', 'wanderer.error.offline': 'Ste offline. V aplikácii wanderer sa dá vyhľadávať iba online.', diff --git a/shared/src/i18n/sv/wanderer.ts b/shared/src/i18n/sv/wanderer.ts index 2d0d91aa0..e0be70201 100644 --- a/shared/src/i18n/sv/wanderer.ts +++ b/shared/src/i18n/sv/wanderer.ts @@ -36,6 +36,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Endast dina egna leder i wanderer kan importeras.', 'wanderer.error.invalid_response': 'Svaret kom inte från wanderer. Kontrollera att adressen pekar på själva wanderer.', + 'wanderer.error.no_author': + 'wanderer svarade, men anger ingen ledförfattare för kontot som den här API-token tillhör, så TREK kan inte avgöra vilka leder som är dina.', 'wanderer.error.too_large': 'Ledens fil är större än 10 MB.', 'wanderer.error.server_error': 'wanderer svarade med ett fel. Försök igen senare.', 'wanderer.error.offline': 'Du är offline. wanderer kan bara sökas online.', diff --git a/shared/src/i18n/th/wanderer.ts b/shared/src/i18n/th/wanderer.ts index 8ea1e0ed9..8d7ef352e 100644 --- a/shared/src/i18n/th/wanderer.ts +++ b/shared/src/i18n/th/wanderer.ts @@ -32,6 +32,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_found': 'ไม่มีเส้นทางเดินนี้ใน wanderer แล้ว', 'wanderer.error.not_own_trail': 'นำเข้าได้เฉพาะเส้นทางเดินของคุณเองใน wanderer เท่านั้น', 'wanderer.error.invalid_response': 'คำตอบไม่ได้มาจาก wanderer โปรดตรวจสอบว่าที่อยู่ชี้ไปที่ wanderer โดยตรง', + 'wanderer.error.no_author': + 'wanderer ตอบกลับแล้ว แต่ไม่ได้ระบุผู้สร้างเส้นทางเดินสำหรับบัญชีของโทเค็น API นี้ TREK จึงไม่ทราบว่าเส้นทางเดินใดเป็นของคุณ', 'wanderer.error.too_large': 'ไฟล์เส้นทางเดินมีขนาดใหญ่กว่า 10 MB', 'wanderer.error.server_error': 'wanderer ตอบกลับด้วยข้อผิดพลาด โปรดลองอีกครั้งภายหลัง', 'wanderer.error.offline': 'คุณออฟไลน์อยู่ ค้นหา wanderer ได้เฉพาะเมื่อออนไลน์เท่านั้น', diff --git a/shared/src/i18n/tr/wanderer.ts b/shared/src/i18n/tr/wanderer.ts index adcea7feb..a4d089816 100644 --- a/shared/src/i18n/tr/wanderer.ts +++ b/shared/src/i18n/tr/wanderer.ts @@ -35,6 +35,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Yalnızca kendi wanderer parkurlarınız içe aktarılabilir.', 'wanderer.error.invalid_response': 'Yanıt wanderer’dan gelmedi. Adresin doğrudan wanderer’ı gösterdiğini kontrol edin.', + 'wanderer.error.no_author': + 'wanderer yanıt verdi ancak bu API belirtecinin hesabı için hiçbir parkur yazarı belirtmiyor, bu yüzden TREK hangi parkurların sizin olduğunu bilemiyor.', 'wanderer.error.too_large': 'Parkur dosyası 10 MB’tan büyük.', 'wanderer.error.server_error': 'wanderer bir hatayla yanıt verdi. Daha sonra tekrar deneyin.', 'wanderer.error.offline': 'Çevrimdışısınız. wanderer’da yalnızca çevrimiçiyken arama yapılabilir.', diff --git a/shared/src/i18n/uk/wanderer.ts b/shared/src/i18n/uk/wanderer.ts index 962418ded..1ceaca55e 100644 --- a/shared/src/i18n/uk/wanderer.ts +++ b/shared/src/i18n/uk/wanderer.ts @@ -38,6 +38,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Імпортувати можна лише власні маршрути wanderer.', 'wanderer.error.invalid_response': 'Відповідь надійшла не від wanderer. Перевірте, що адреса вказує саме на wanderer.', + 'wanderer.error.no_author': + 'wanderer відповів, але не вказує автора маршрутів для облікового запису цього API-токена, тож TREK не може визначити, які маршрути ваші.', 'wanderer.error.too_large': 'Файл маршруту більший за 10 МБ.', 'wanderer.error.server_error': 'wanderer відповів помилкою. Спробуйте пізніше.', 'wanderer.error.offline': 'Немає підключення до мережі. Пошук у wanderer доступний лише онлайн.', diff --git a/shared/src/i18n/vi/wanderer.ts b/shared/src/i18n/vi/wanderer.ts index 0524e428e..36b90a445 100644 --- a/shared/src/i18n/vi/wanderer.ts +++ b/shared/src/i18n/vi/wanderer.ts @@ -34,6 +34,8 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_own_trail': 'Chỉ có thể nhập các cung đường wanderer của chính bạn.', 'wanderer.error.invalid_response': 'Phản hồi không đến từ wanderer. Hãy kiểm tra địa chỉ có trỏ đúng tới wanderer hay không.', + 'wanderer.error.no_author': + 'wanderer đã phản hồi nhưng không nêu tác giả cung đường nào cho tài khoản của token API này, nên TREK không biết cung đường nào là của bạn.', 'wanderer.error.too_large': 'Tệp cung đường lớn hơn 10 MB.', 'wanderer.error.server_error': 'wanderer trả về lỗi. Vui lòng thử lại sau.', 'wanderer.error.offline': 'Bạn đang ngoại tuyến. Chỉ có thể tìm kiếm wanderer khi trực tuyến.', diff --git a/shared/src/i18n/zh-TW/wanderer.ts b/shared/src/i18n/zh-TW/wanderer.ts index 0b4e77bd0..1afa84bbd 100644 --- a/shared/src/i18n/zh-TW/wanderer.ts +++ b/shared/src/i18n/zh-TW/wanderer.ts @@ -32,6 +32,7 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_found': 'wanderer 中已沒有這條步道。', 'wanderer.error.not_own_trail': '只能匯入你自己的 wanderer 步道。', 'wanderer.error.invalid_response': '這個回應並非來自 wanderer。請確認位址指向 wanderer 本身。', + 'wanderer.error.no_author': 'wanderer 已回應,但沒有為此 API 權杖所屬的帳號列出任何步道作者,因此 TREK 無法判斷哪些步道是你的。', 'wanderer.error.too_large': '步道檔案超過 10 MB。', 'wanderer.error.server_error': 'wanderer 回應了錯誤。請稍後再試。', 'wanderer.error.offline': '你目前離線。只能在連線時搜尋 wanderer。', diff --git a/shared/src/i18n/zh/wanderer.ts b/shared/src/i18n/zh/wanderer.ts index d422e5140..974908558 100644 --- a/shared/src/i18n/zh/wanderer.ts +++ b/shared/src/i18n/zh/wanderer.ts @@ -32,6 +32,7 @@ const wanderer: TranslationStrings = { 'wanderer.error.not_found': 'wanderer 中已不存在此步道。', 'wanderer.error.not_own_trail': '只能导入你自己的 wanderer 步道。', 'wanderer.error.invalid_response': '该响应并非来自 wanderer。请检查地址是否指向 wanderer 本身。', + 'wanderer.error.no_author': 'wanderer 已响应,但没有为此 API 令牌所属的账户给出任何步道作者,因此 TREK 无法判断哪些步道是你的。', 'wanderer.error.too_large': '步道文件超过 10 MB。', 'wanderer.error.server_error': 'wanderer 返回了错误。请稍后再试。', 'wanderer.error.offline': '你处于离线状态。只能在联网时搜索 wanderer。', diff --git a/shared/src/wanderer/wanderer.schema.ts b/shared/src/wanderer/wanderer.schema.ts index 8f88c77a5..5dc93b0d0 100644 --- a/shared/src/wanderer/wanderer.schema.ts +++ b/shared/src/wanderer/wanderer.schema.ts @@ -46,6 +46,8 @@ export const wandererErrorCodeSchema = z.enum([ /** The trail is someone else's: only the connected account's own trails are imported. */ 'not_own_trail', 'invalid_response', + /** wanderer answered, but named no local author for the token's account, so its own trails cannot be told apart. */ + 'no_author', 'too_large', 'server_error', ]);