feat(native): the apps load the server's own UI

The apps ship only an address screen now. Once a server is picked, the
native side points the WebView at it: TrekBridgeViewController on iOS and a
config copy with server.url on Android. The UI then comes from that server,
in the version it runs and on its own origin, so the session cookie,
uploads, /ws and plugins work exactly as in a browser and no app release
has to keep pace with the servers out there.

The address screen (native-shell/, built into native-dist/) probes
/api/health/features through native HTTP, tries https before http when no
scheme was typed, and refuses servers without the nativeApp flag. It also
serves as the error page when the remembered server does not load: retry,
change server, or on iOS the stored copy of the server's start page.

TrekShell is the app's own plugin for all of that: remember, change and
reload the server, sign in through ASWebAuthenticationSession or a Custom
Tab, and on iOS keep and open the offline copy of the start page, because
WKWebView runs no service worker for a domain the app does not list.

Plugins the frame does not use are gone (push, camera, geolocation,
calendar, file transfer, in-app browser and more): the WebView covers the
camera and location itself, and push needs a relay before it is worth
shipping. With them go the push entitlement, the calendar usage strings
and the Firebase bits. The iOS scheme falls back to capacitor://, since
Capacitor drops an iosScheme of https, and the arm64 capability replaces
armv7.
This commit is contained in:
Maurice
2026-09-24 12:30:32 +02:00
parent 9832d12751
commit c5765bbf15
79 changed files with 1600 additions and 448 deletions
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'الاتصال بـ TREK',
'native.connect.hint': 'أدخل العنوان الذي تفتح به TREK في متصفحك.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'اتصال',
'native.connect.checking': 'جارٍ التحقق…',
'native.connect.errorInvalid': 'لا يبدو هذا عنوان ويب.',
'native.connect.errorUnreachable': 'لا يستجيب أي خادم على هذا العنوان. تحقق من العنوان ومن اتصالك.',
'native.connect.errorNotTrek': 'الخادم على هذا العنوان ليس TREK.',
'native.connect.errorTooOld': 'خادم TREK هذا قديم جدًا بالنسبة للتطبيق. يحتاج إلى تحديث أولًا.',
'native.offline.title': 'تعذّر الوصول إلى الخادم',
'native.offline.hint': 'تعذّر على TREK الوصول إلى {server}. تحقق من اتصالك ثم حاول مرة أخرى.',
'native.offline.retry': 'إعادة المحاولة',
'native.changeServer': 'تغيير الخادم',
'native.login.failed': 'تعذّر تسجيل الدخول. يرجى المحاولة مرة أخرى.',
'native.handoff.title': 'المتابعة في التطبيق',
'native.handoff.hint': 'لقد سجّلت الدخول باسم {name}. افتح تطبيق TREK لإكمال تسجيل الدخول هناك.',
'native.handoff.open': 'فتح تطبيق TREK',
'native.handoff.switchAccount': 'استخدام حساب آخر',
'native.settings.server': 'الخادم',
'native.settings.serverHint': 'هذا التطبيق متصل بـ {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Conectar ao TREK',
'native.connect.hint': 'Digite o endereço em que você abre o TREK no navegador.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Conectar',
'native.connect.checking': 'Verificando…',
'native.connect.errorInvalid': 'Isso não parece um endereço da web.',
'native.connect.errorUnreachable': 'Nenhum servidor respondeu neste endereço. Verifique o endereço e sua conexão.',
'native.connect.errorNotTrek': 'O servidor neste endereço não é o TREK.',
'native.connect.errorTooOld': 'Este servidor TREK é antigo demais para o app. Ele precisa ser atualizado primeiro.',
'native.offline.title': 'Servidor inacessível',
'native.offline.hint': 'O TREK não conseguiu acessar {server}. Verifique sua conexão e tente novamente.',
'native.offline.retry': 'Tentar novamente',
'native.changeServer': 'Trocar de servidor',
'native.login.failed': 'Não foi possível entrar. Tente novamente.',
'native.handoff.title': 'Continuar no app',
'native.handoff.hint': 'Você entrou como {name}. Abra o app TREK para concluir o login por lá.',
'native.handoff.open': 'Abrir o app TREK',
'native.handoff.switchAccount': 'Usar outra conta',
'native.settings.server': 'Servidor',
'native.settings.serverHint': 'Este app está conectado a {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Connecta amb TREK',
'native.connect.hint': 'Introdueix l’adreça amb què obres TREK al navegador.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Connecta',
'native.connect.checking': 'S’està comprovant…',
'native.connect.errorInvalid': 'Això no sembla una adreça web.',
'native.connect.errorUnreachable': 'Cap servidor respon en aquesta adreça. Comprova l’adreça i la connexió.',
'native.connect.errorNotTrek': 'El servidor d’aquesta adreça no és TREK.',
'native.connect.errorTooOld': 'Aquest servidor de TREK és massa antic per a l’app. Primer cal actualitzar-lo.',
'native.offline.title': 'No es pot accedir al servidor',
'native.offline.hint': 'TREK no ha pogut connectar amb {server}. Comprova la connexió i torna-ho a provar.',
'native.offline.retry': 'Torna-ho a provar',
'native.changeServer': 'Canvia de servidor',
'native.login.failed': 'No s’ha pogut iniciar la sessió. Torna-ho a provar.',
'native.handoff.title': 'Continua a l’app',
'native.handoff.hint': 'Has iniciat la sessió com a {name}. Obre l’app de TREK per acabar d’iniciar-hi la sessió.',
'native.handoff.open': 'Obre l’app de TREK',
'native.handoff.switchAccount': 'Fes servir un altre compte',
'native.settings.server': 'Servidor',
'native.settings.serverHint': 'Aquesta app està connectada a {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Připojit k TREK',
'native.connect.hint': 'Zadejte adresu, na které otevíráte TREK v prohlížeči.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Připojit',
'native.connect.checking': 'Ověřování…',
'native.connect.errorInvalid': 'To nevypadá jako webová adresa.',
'native.connect.errorUnreachable': 'Na této adrese neodpovídá žádný server. Zkontrolujte adresu a připojení.',
'native.connect.errorNotTrek': 'Server na této adrese není TREK.',
'native.connect.errorTooOld': 'Tento server TREK je pro aplikaci příliš starý. Nejprve potřebuje aktualizaci.',
'native.offline.title': 'Server není dostupný',
'native.offline.hint': 'TREK se nepodařilo spojit s {server}. Zkontrolujte připojení a zkuste to znovu.',
'native.offline.retry': 'Zkusit znovu',
'native.changeServer': 'Změnit server',
'native.login.failed': 'Přihlášení se nezdařilo. Zkuste to prosím znovu.',
'native.handoff.title': 'Pokračovat v aplikaci',
'native.handoff.hint': 'Jste přihlášeni jako {name}. Otevřete aplikaci TREK a dokončete přihlášení v ní.',
'native.handoff.open': 'Otevřít aplikaci TREK',
'native.handoff.switchAccount': 'Použít jiný účet',
'native.settings.server': 'Server',
'native.settings.serverHint': 'Tato aplikace je připojena k {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Mit TREK verbinden',
'native.connect.hint': 'Gib die Adresse ein, unter der du TREK im Browser öffnest.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Verbinden',
'native.connect.checking': 'Wird geprüft…',
'native.connect.errorInvalid': 'Das sieht nicht nach einer Webadresse aus.',
'native.connect.errorUnreachable': 'Unter dieser Adresse antwortet kein Server. Prüfe die Adresse und deine Verbindung.',
'native.connect.errorNotTrek': 'Unter dieser Adresse läuft kein TREK.',
'native.connect.errorTooOld': 'Dieser TREK-Server ist zu alt für die App. Er braucht zuerst ein Update.',
'native.offline.title': 'Server nicht erreichbar',
'native.offline.hint': 'TREK konnte {server} nicht erreichen. Prüfe deine Verbindung und versuche es erneut.',
'native.offline.retry': 'Erneut versuchen',
'native.changeServer': 'Server wechseln',
'native.login.failed': 'Die Anmeldung hat nicht geklappt. Bitte versuche es erneut.',
'native.handoff.title': 'Weiter in der App',
'native.handoff.hint': 'Du bist als {name} angemeldet. Öffne die TREK-App, um die Anmeldung dort abzuschließen.',
'native.handoff.open': 'TREK-App öffnen',
'native.handoff.switchAccount': 'Anderes Konto verwenden',
'native.settings.server': 'Server',
'native.settings.serverHint': 'Diese App ist mit {server} verbunden.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Connect to TREK',
'native.connect.hint': 'Enter the address you open TREK at in your browser.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Connect',
'native.connect.checking': 'Checking…',
'native.connect.errorInvalid': 'That does not look like a web address.',
'native.connect.errorUnreachable': 'No server answered at this address. Check the address and your connection.',
'native.connect.errorNotTrek': 'The server at this address is not TREK.',
'native.connect.errorTooOld': 'This TREK server is too old for the app. It needs an update first.',
'native.offline.title': 'Server not reachable',
'native.offline.hint': 'TREK could not reach {server}. Check your connection and try again.',
'native.offline.retry': 'Try again',
'native.changeServer': 'Change server',
'native.login.failed': 'Signing in did not work. Please try again.',
'native.handoff.title': 'Continue in the app',
'native.handoff.hint': 'You are signed in as {name}. Open the TREK app to finish signing in there.',
'native.handoff.open': 'Open the TREK app',
'native.handoff.switchAccount': 'Use a different account',
'native.settings.server': 'Server',
'native.settings.serverHint': 'This app is connected to {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Conectar con TREK',
'native.connect.hint': 'Introduce la dirección con la que abres TREK en tu navegador.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Conectar',
'native.connect.checking': 'Comprobando…',
'native.connect.errorInvalid': 'Eso no parece una dirección web.',
'native.connect.errorUnreachable': 'Ningún servidor responde en esta dirección. Revisa la dirección y tu conexión.',
'native.connect.errorNotTrek': 'El servidor de esta dirección no es TREK.',
'native.connect.errorTooOld': 'Este servidor de TREK es demasiado antiguo para la app. Primero necesita una actualización.',
'native.offline.title': 'Servidor no disponible',
'native.offline.hint': 'TREK no pudo conectar con {server}. Revisa tu conexión e inténtalo de nuevo.',
'native.offline.retry': 'Reintentar',
'native.changeServer': 'Cambiar de servidor',
'native.login.failed': 'No se pudo iniciar sesión. Inténtalo de nuevo.',
'native.handoff.title': 'Continuar en la app',
'native.handoff.hint': 'Has iniciado sesión como {name}. Abre la app de TREK para terminar de iniciar sesión allí.',
'native.handoff.open': 'Abrir la app de TREK',
'native.handoff.switchAccount': 'Usar otra cuenta',
'native.settings.server': 'Servidor',
'native.settings.serverHint': 'Esta app está conectada a {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Se connecter à TREK',
'native.connect.hint': 'Saisissez l’adresse à laquelle vous ouvrez TREK dans votre navigateur.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Se connecter',
'native.connect.checking': 'Vérification…',
'native.connect.errorInvalid': 'Cela ne ressemble pas à une adresse web.',
'native.connect.errorUnreachable': 'Aucun serveur ne répond à cette adresse. Vérifiez l’adresse et votre connexion.',
'native.connect.errorNotTrek': 'Le serveur à cette adresse n’est pas TREK.',
'native.connect.errorTooOld': 'Ce serveur TREK est trop ancien pour l’application. Il doit d’abord être mis à jour.',
'native.offline.title': 'Serveur injoignable',
'native.offline.hint': 'TREK n’a pas pu joindre {server}. Vérifiez votre connexion et réessayez.',
'native.offline.retry': 'Réessayer',
'native.changeServer': 'Changer de serveur',
'native.login.failed': 'La connexion n’a pas abouti. Veuillez réessayer.',
'native.handoff.title': 'Continuer dans l’application',
'native.handoff.hint': 'Vous êtes connecté en tant que {name}. Ouvrez l’application TREK pour y terminer la connexion.',
'native.handoff.open': 'Ouvrir l’application TREK',
'native.handoff.switchAccount': 'Utiliser un autre compte',
'native.settings.server': 'Serveur',
'native.settings.serverHint': 'Cette application est connectée à {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Σύνδεση στο TREK',
'native.connect.hint': 'Πληκτρολογήστε τη διεύθυνση με την οποία ανοίγετε το TREK στο πρόγραμμα περιήγησης.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Σύνδεση',
'native.connect.checking': 'Έλεγχος…',
'native.connect.errorInvalid': 'Αυτό δεν μοιάζει με διεύθυνση ιστού.',
'native.connect.errorUnreachable': 'Κανένας διακομιστής δεν απαντά σε αυτή τη διεύθυνση. Ελέγξτε τη διεύθυνση και τη σύνδεσή σας.',
'native.connect.errorNotTrek': 'Ο διακομιστής σε αυτή τη διεύθυνση δεν είναι TREK.',
'native.connect.errorTooOld': 'Αυτός ο διακομιστής TREK είναι πολύ παλιός για την εφαρμογή. Χρειάζεται πρώτα ενημέρωση.',
'native.offline.title': 'Ο διακομιστής δεν είναι προσβάσιμος',
'native.offline.hint': 'Το TREK δεν μπόρεσε να συνδεθεί στο {server}. Ελέγξτε τη σύνδεσή σας και δοκιμάστε ξανά.',
'native.offline.retry': 'Δοκιμάστε ξανά',
'native.changeServer': 'Αλλαγή διακομιστή',
'native.login.failed': 'Η σύνδεση δεν ολοκληρώθηκε. Δοκιμάστε ξανά.',
'native.handoff.title': 'Συνέχεια στην εφαρμογή',
'native.handoff.hint': 'Έχετε συνδεθεί ως {name}. Ανοίξτε την εφαρμογή TREK για να ολοκληρώσετε εκεί τη σύνδεση.',
'native.handoff.open': 'Άνοιγμα της εφαρμογής TREK',
'native.handoff.switchAccount': 'Χρήση άλλου λογαριασμού',
'native.settings.server': 'Διακομιστής',
'native.settings.serverHint': 'Αυτή η εφαρμογή είναι συνδεδεμένη στο {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Csatlakozás a TREK-hez',
'native.connect.hint': 'Add meg azt a címet, amelyen a böngésződben megnyitod a TREK-et.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Csatlakozás',
'native.connect.checking': 'Ellenőrzés…',
'native.connect.errorInvalid': 'Ez nem úgy néz ki, mint egy webcím.',
'native.connect.errorUnreachable': 'Ezen a címen nem válaszol szerver. Ellenőrizd a címet és a kapcsolatot.',
'native.connect.errorNotTrek': 'Az ezen a címen futó szerver nem TREK.',
'native.connect.errorTooOld': 'Ez a TREK-szerver túl régi az alkalmazáshoz. Előbb frissíteni kell.',
'native.offline.title': 'A szerver nem érhető el',
'native.offline.hint': 'A TREK nem érte el ezt: {server}. Ellenőrizd a kapcsolatot, és próbáld újra.',
'native.offline.retry': 'Újra',
'native.changeServer': 'Szerver módosítása',
'native.login.failed': 'A bejelentkezés nem sikerült. Próbáld újra.',
'native.handoff.title': 'Folytatás az alkalmazásban',
'native.handoff.hint': '{name} néven vagy bejelentkezve. Nyisd meg a TREK alkalmazást, hogy ott befejezd a bejelentkezést.',
'native.handoff.open': 'TREK alkalmazás megnyitása',
'native.handoff.switchAccount': 'Másik fiók használata',
'native.settings.server': 'Szerver',
'native.settings.serverHint': 'Ez az alkalmazás ehhez csatlakozik: {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Hubungkan ke TREK',
'native.connect.hint': 'Masukkan alamat yang kamu gunakan untuk membuka TREK di browser.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Hubungkan',
'native.connect.checking': 'Memeriksa…',
'native.connect.errorInvalid': 'Itu tidak terlihat seperti alamat web.',
'native.connect.errorUnreachable': 'Tidak ada server yang merespons di alamat ini. Periksa alamat dan koneksimu.',
'native.connect.errorNotTrek': 'Server di alamat ini bukan TREK.',
'native.connect.errorTooOld': 'Server TREK ini terlalu lama untuk aplikasi. Server perlu diperbarui terlebih dahulu.',
'native.offline.title': 'Server tidak dapat dijangkau',
'native.offline.hint': 'TREK tidak dapat menjangkau {server}. Periksa koneksimu dan coba lagi.',
'native.offline.retry': 'Coba lagi',
'native.changeServer': 'Ganti server',
'native.login.failed': 'Gagal masuk. Silakan coba lagi.',
'native.handoff.title': 'Lanjutkan di aplikasi',
'native.handoff.hint': 'Kamu masuk sebagai {name}. Buka aplikasi TREK untuk menyelesaikan proses masuk di sana.',
'native.handoff.open': 'Buka aplikasi TREK',
'native.handoff.switchAccount': 'Gunakan akun lain',
'native.settings.server': 'Server',
'native.settings.serverHint': 'Aplikasi ini terhubung ke {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Connetti a TREK',
'native.connect.hint': 'Inserisci l’indirizzo con cui apri TREK nel browser.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Connetti',
'native.connect.checking': 'Verifica in corso…',
'native.connect.errorInvalid': 'Non sembra un indirizzo web.',
'native.connect.errorUnreachable': 'Nessun server risponde a questo indirizzo. Controlla l’indirizzo e la connessione.',
'native.connect.errorNotTrek': 'Il server a questo indirizzo non è TREK.',
'native.connect.errorTooOld': 'Questo server TREK è troppo vecchio per l’app. Deve prima essere aggiornato.',
'native.offline.title': 'Server non raggiungibile',
'native.offline.hint': 'TREK non è riuscito a raggiungere {server}. Controlla la connessione e riprova.',
'native.offline.retry': 'Riprova',
'native.changeServer': 'Cambia server',
'native.login.failed': 'L’accesso non è riuscito. Riprova.',
'native.handoff.title': 'Continua nell’app',
'native.handoff.hint': 'Hai effettuato l’accesso come {name}. Apri l’app TREK per completare lì l’accesso.',
'native.handoff.open': 'Apri l’app TREK',
'native.handoff.switchAccount': 'Usa un altro account',
'native.settings.server': 'Server',
'native.settings.serverHint': 'Questa app è collegata a {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'TREK に接続',
'native.connect.hint': 'ブラウザで TREK を開くときのアドレスを入力してください。',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': '接続',
'native.connect.checking': '確認中…',
'native.connect.errorInvalid': 'Web アドレスではないようです。',
'native.connect.errorUnreachable': 'このアドレスで応答するサーバーがありません。アドレスと接続を確認してください。',
'native.connect.errorNotTrek': 'このアドレスのサーバーは TREK ではありません。',
'native.connect.errorTooOld': 'この TREK サーバーはアプリに対して古すぎます。先に更新が必要です。',
'native.offline.title': 'サーバーに接続できません',
'native.offline.hint': 'TREK は {server} に接続できませんでした。接続を確認して、もう一度お試しください。',
'native.offline.retry': '再試行',
'native.changeServer': 'サーバーを変更',
'native.login.failed': 'ログインできませんでした。もう一度お試しください。',
'native.handoff.title': 'アプリで続行',
'native.handoff.hint': '{name} としてログインしています。TREK アプリを開いて、そちらでログインを完了してください。',
'native.handoff.open': 'TREK アプリを開く',
'native.handoff.switchAccount': '別のアカウントを使う',
'native.settings.server': 'サーバー',
'native.settings.serverHint': 'このアプリは {server} に接続されています。',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'TREK에 연결',
'native.connect.hint': '브라우저에서 TREK을 여는 주소를 입력하세요.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': '연결',
'native.connect.checking': '확인 중…',
'native.connect.errorInvalid': '웹 주소가 아닌 것 같습니다.',
'native.connect.errorUnreachable': '이 주소에서 응답하는 서버가 없습니다. 주소와 연결 상태를 확인하세요.',
'native.connect.errorNotTrek': '이 주소의 서버는 TREK이 아닙니다.',
'native.connect.errorTooOld': '이 TREK 서버는 앱에서 사용하기에 너무 오래되었습니다. 먼저 업데이트가 필요합니다.',
'native.offline.title': '서버에 연결할 수 없음',
'native.offline.hint': 'TREK이 {server}에 연결하지 못했습니다. 연결 상태를 확인한 후 다시 시도하세요.',
'native.offline.retry': '다시 시도',
'native.changeServer': '서버 변경',
'native.login.failed': '로그인하지 못했습니다. 다시 시도하세요.',
'native.handoff.title': '앱에서 계속',
'native.handoff.hint': '{name}(으)로 로그인되어 있습니다. TREK 앱을 열어 로그인을 완료하세요.',
'native.handoff.open': 'TREK 앱 열기',
'native.handoff.switchAccount': '다른 계정 사용',
'native.settings.server': '서버',
'native.settings.serverHint': '이 앱은 {server}에 연결되어 있습니다.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Verbinden met TREK',
'native.connect.hint': 'Voer het adres in waarop je TREK in je browser opent.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Verbinden',
'native.connect.checking': 'Controleren…',
'native.connect.errorInvalid': 'Dat lijkt geen webadres.',
'native.connect.errorUnreachable': 'Er reageert geen server op dit adres. Controleer het adres en je verbinding.',
'native.connect.errorNotTrek': 'De server op dit adres is geen TREK.',
'native.connect.errorTooOld': 'Deze TREK-server is te oud voor de app. Hij moet eerst worden bijgewerkt.',
'native.offline.title': 'Server niet bereikbaar',
'native.offline.hint': 'TREK kon {server} niet bereiken. Controleer je verbinding en probeer het opnieuw.',
'native.offline.retry': 'Opnieuw proberen',
'native.changeServer': 'Server wijzigen',
'native.login.failed': 'Inloggen is niet gelukt. Probeer het opnieuw.',
'native.handoff.title': 'Verder in de app',
'native.handoff.hint': 'Je bent ingelogd als {name}. Open de TREK-app om daar het inloggen af te ronden.',
'native.handoff.open': 'TREK-app openen',
'native.handoff.switchAccount': 'Ander account gebruiken',
'native.settings.server': 'Server',
'native.settings.serverHint': 'Deze app is verbonden met {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Połącz z TREK',
'native.connect.hint': 'Wpisz adres, pod którym otwierasz TREK w przeglądarce.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Połącz',
'native.connect.checking': 'Sprawdzanie…',
'native.connect.errorInvalid': 'To nie wygląda na adres internetowy.',
'native.connect.errorUnreachable': 'Pod tym adresem nie odpowiada żaden serwer. Sprawdź adres i połączenie.',
'native.connect.errorNotTrek': 'Serwer pod tym adresem to nie TREK.',
'native.connect.errorTooOld': 'Ten serwer TREK jest za stary dla aplikacji. Najpierw wymaga aktualizacji.',
'native.offline.title': 'Serwer nieosiągalny',
'native.offline.hint': 'TREK nie mógł połączyć się z {server}. Sprawdź połączenie i spróbuj ponownie.',
'native.offline.retry': 'Spróbuj ponownie',
'native.changeServer': 'Zmień serwer',
'native.login.failed': 'Logowanie się nie powiodło. Spróbuj ponownie.',
'native.handoff.title': 'Kontynuuj w aplikacji',
'native.handoff.hint': 'Zalogowano jako {name}. Otwórz aplikację TREK, aby tam dokończyć logowanie.',
'native.handoff.open': 'Otwórz aplikację TREK',
'native.handoff.switchAccount': 'Użyj innego konta',
'native.settings.server': 'Serwer',
'native.settings.serverHint': 'Ta aplikacja jest połączona z {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Подключение к TREK',
'native.connect.hint': 'Введите адрес, по которому вы открываете TREK в браузере.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Подключиться',
'native.connect.checking': 'Проверка…',
'native.connect.errorInvalid': 'Это не похоже на веб-адрес.',
'native.connect.errorUnreachable': 'По этому адресу не отвечает ни один сервер. Проверьте адрес и подключение.',
'native.connect.errorNotTrek': 'Сервер по этому адресу не является TREK.',
'native.connect.errorTooOld': 'Этот сервер TREK слишком старый для приложения. Сначала его нужно обновить.',
'native.offline.title': 'Сервер недоступен',
'native.offline.hint': 'TREK не удалось подключиться к {server}. Проверьте подключение и повторите попытку.',
'native.offline.retry': 'Повторить',
'native.changeServer': 'Сменить сервер',
'native.login.failed': 'Не удалось войти. Попробуйте ещё раз.',
'native.handoff.title': 'Продолжить в приложении',
'native.handoff.hint': 'Вы вошли как {name}. Откройте приложение TREK, чтобы завершить вход в нём.',
'native.handoff.open': 'Открыть приложение TREK',
'native.handoff.switchAccount': 'Использовать другой аккаунт',
'native.settings.server': 'Сервер',
'native.settings.serverHint': 'Приложение подключено к {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Anslut till TREK',
'native.connect.hint': 'Ange adressen du öppnar TREK på i webbläsaren.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Anslut',
'native.connect.checking': 'Kontrollerar…',
'native.connect.errorInvalid': 'Det ser inte ut som en webbadress.',
'native.connect.errorUnreachable': 'Ingen server svarar på den här adressen. Kontrollera adressen och din anslutning.',
'native.connect.errorNotTrek': 'Servern på den här adressen är inte TREK.',
'native.connect.errorTooOld': 'Den här TREK-servern är för gammal för appen. Den behöver uppdateras först.',
'native.offline.title': 'Servern går inte att nå',
'native.offline.hint': 'TREK kunde inte nå {server}. Kontrollera din anslutning och försök igen.',
'native.offline.retry': 'Försök igen',
'native.changeServer': 'Byt server',
'native.login.failed': 'Inloggningen misslyckades. Försök igen.',
'native.handoff.title': 'Fortsätt i appen',
'native.handoff.hint': 'Du är inloggad som {name}. Öppna TREK-appen för att slutföra inloggningen där.',
'native.handoff.open': 'Öppna TREK-appen',
'native.handoff.switchAccount': 'Använd ett annat konto',
'native.settings.server': 'Server',
'native.settings.serverHint': 'Den här appen är ansluten till {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'TREK’e bağlan',
'native.connect.hint': 'TREK’i tarayıcında açtığın adresi gir.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Bağlan',
'native.connect.checking': 'Kontrol ediliyor…',
'native.connect.errorInvalid': 'Bu bir web adresine benzemiyor.',
'native.connect.errorUnreachable': 'Bu adreste yanıt veren bir sunucu yok. Adresi ve bağlantını kontrol et.',
'native.connect.errorNotTrek': 'Bu adresteki sunucu TREK değil.',
'native.connect.errorTooOld': 'Bu TREK sunucusu uygulama için çok eski. Önce güncellenmesi gerekiyor.',
'native.offline.title': 'Sunucuya ulaşılamıyor',
'native.offline.hint': 'TREK, {server} adresine ulaşamadı. Bağlantını kontrol edip tekrar dene.',
'native.offline.retry': 'Tekrar dene',
'native.changeServer': 'Sunucuyu değiştir',
'native.login.failed': 'Giriş yapılamadı. Lütfen tekrar dene.',
'native.handoff.title': 'Uygulamada devam et',
'native.handoff.hint': '{name} olarak giriş yaptın. Girişi tamamlamak için TREK uygulamasını aç.',
'native.handoff.open': 'TREK uygulamasını aç',
'native.handoff.switchAccount': 'Başka bir hesap kullan',
'native.settings.server': 'Sunucu',
'native.settings.serverHint': 'Bu uygulama {server} adresine bağlı.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Підключення до TREK',
'native.connect.hint': 'Введіть адресу, за якою ви відкриваєте TREK у браузері.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Підключитися',
'native.connect.checking': 'Перевірка…',
'native.connect.errorInvalid': 'Це не схоже на вебадресу.',
'native.connect.errorUnreachable': 'За цією адресою не відповідає жоден сервер. Перевірте адресу та з’єднання.',
'native.connect.errorNotTrek': 'Сервер за цією адресою не є TREK.',
'native.connect.errorTooOld': 'Цей сервер TREK застарий для застосунку. Спершу його потрібно оновити.',
'native.offline.title': 'Сервер недоступний',
'native.offline.hint': 'TREK не вдалося підключитися до {server}. Перевірте з’єднання та спробуйте ще раз.',
'native.offline.retry': 'Спробувати ще раз',
'native.changeServer': 'Змінити сервер',
'native.login.failed': 'Не вдалося увійти. Спробуйте ще раз.',
'native.handoff.title': 'Продовжити в застосунку',
'native.handoff.hint': 'Ви увійшли як {name}. Відкрийте застосунок TREK, щоб завершити вхід у ньому.',
'native.handoff.open': 'Відкрити застосунок TREK',
'native.handoff.switchAccount': 'Використати інший обліковий запис',
'native.settings.server': 'Сервер',
'native.settings.serverHint': 'Застосунок підключено до {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': 'Kết nối với TREK',
'native.connect.hint': 'Nhập địa chỉ bạn dùng để mở TREK trong trình duyệt.',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': 'Kết nối',
'native.connect.checking': 'Đang kiểm tra…',
'native.connect.errorInvalid': 'Đây có vẻ không phải là địa chỉ web.',
'native.connect.errorUnreachable': 'Không có máy chủ nào phản hồi tại địa chỉ này. Hãy kiểm tra địa chỉ và kết nối của bạn.',
'native.connect.errorNotTrek': 'Máy chủ tại địa chỉ này không phải TREK.',
'native.connect.errorTooOld': 'Máy chủ TREK này quá cũ đối với ứng dụng. Máy chủ cần được cập nhật trước.',
'native.offline.title': 'Không kết nối được máy chủ',
'native.offline.hint': 'TREK không thể kết nối tới {server}. Hãy kiểm tra kết nối và thử lại.',
'native.offline.retry': 'Thử lại',
'native.changeServer': 'Đổi máy chủ',
'native.login.failed': 'Đăng nhập không thành công. Vui lòng thử lại.',
'native.handoff.title': 'Tiếp tục trong ứng dụng',
'native.handoff.hint': 'Bạn đã đăng nhập với tên {name}. Mở ứng dụng TREK để hoàn tất đăng nhập ở đó.',
'native.handoff.open': 'Mở ứng dụng TREK',
'native.handoff.switchAccount': 'Dùng tài khoản khác',
'native.settings.server': 'Máy chủ',
'native.settings.serverHint': 'Ứng dụng này đang kết nối với {server}.',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': '連線到 TREK',
'native.connect.hint': '請輸入你在瀏覽器中開啟 TREK 時使用的網址。',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': '連線',
'native.connect.checking': '正在檢查…',
'native.connect.errorInvalid': '這看起來不像網址。',
'native.connect.errorUnreachable': '此網址沒有伺服器回應。請檢查網址與網路連線。',
'native.connect.errorNotTrek': '此網址上的伺服器不是 TREK。',
'native.connect.errorTooOld': '此 TREK 伺服器版本過舊,無法用於 App。請先更新伺服器。',
'native.offline.title': '無法連線到伺服器',
'native.offline.hint': 'TREK 無法連線到 {server}。請檢查網路連線後再試一次。',
'native.offline.retry': '再試一次',
'native.changeServer': '更換伺服器',
'native.login.failed': '登入未成功,請再試一次。',
'native.handoff.title': '在 App 中繼續',
'native.handoff.hint': '你已以 {name} 身分登入。請開啟 TREK App,在那裡完成登入。',
'native.handoff.open': '開啟 TREK App',
'native.handoff.switchAccount': '使用其他帳號',
'native.settings.server': '伺服器',
'native.settings.serverHint': '此 App 已連線到 {server}。',
};
export default native;
+2
View File
@@ -17,6 +17,7 @@ import help from './help';
import inspector from './inspector';
import journey from './journey';
import login from './login';
import native from './native';
import map from './map';
import members from './members';
import memories from './memories';
@@ -66,6 +67,7 @@ const locale = {
...share,
...shared,
...login,
...native,
...register,
...vacay,
...collection,
+26
View File
@@ -0,0 +1,26 @@
import type { TranslationStrings } from '../types';
const native: TranslationStrings = {
'native.connect.title': '连接到 TREK',
'native.connect.hint': '请输入你在浏览器中打开 TREK 时使用的地址。',
'native.connect.placeholder': 'trek.example.com',
'native.connect.submit': '连接',
'native.connect.checking': '正在检查…',
'native.connect.errorInvalid': '这看起来不像网址。',
'native.connect.errorUnreachable': '此地址没有服务器响应。请检查地址和网络连接。',
'native.connect.errorNotTrek': '此地址上的服务器不是 TREK。',
'native.connect.errorTooOld': '此 TREK 服务器版本过旧,无法用于应用。请先更新服务器。',
'native.offline.title': '无法连接服务器',
'native.offline.hint': 'TREK 无法连接到 {server}。请检查网络连接后重试。',
'native.offline.retry': '重试',
'native.changeServer': '更换服务器',
'native.login.failed': '登录未成功,请重试。',
'native.handoff.title': '在应用中继续',
'native.handoff.hint': '你已以 {name} 身份登录。请打开 TREK 应用,在那里完成登录。',
'native.handoff.open': '打开 TREK 应用',
'native.handoff.switchAccount': '使用其他账号',
'native.settings.server': '服务器',
'native.settings.serverHint': '此应用已连接到 {server}。',
};
export default native;