From 5cbe4e2fa3c8bb32ad18e21a53834d284ecaf618 Mon Sep 17 00:00:00 2001 From: Maurice Date: Tue, 10 Nov 2026 09:17:26 +0100 Subject: [PATCH] feat(native): the app needs TREK 5.1.3 on the server and checks a remembered one once after the update The fixes that keep the app's sign-in in the app live in the server's UI, so an updated app on a 5.1.2 server still ended in the browser. The server now reports nativeApi 2 and the app refuses anything below it, naming 5.1.3. A server the app remembers from before is not loaded unchecked: the first launch after the update shows the address screen filled in with it, says why and checks it right away. A server that is new enough loads again with its session; an older one gets the update hint. --- .../java/com/liketrek/trek/MainActivity.java | 1 + .../com/liketrek/trek/TrekServerStore.java | 27 ++++++++++++++- .../com/liketrek/trek/TrekShellPlugin.java | 2 ++ .../App/App/TrekBridgeViewController.swift | 34 ++++++++++++++++++- client/ios/App/App/TrekShellPlugin.swift | 5 ++- client/native-shell/main.ts | 19 ++++++++--- client/src/native/serverAddress.test.ts | 20 +++++++---- client/src/native/serverAddress.ts | 10 +++--- client/src/native/trekShell.ts | 7 +++- server/src/nest/health/features.controller.ts | 5 ++- .../unit/nest/features.controller.test.ts | 10 +++--- shared/src/i18n/ar/native.ts | 5 ++- shared/src/i18n/az/native.ts | 5 ++- shared/src/i18n/br/native.ts | 5 ++- shared/src/i18n/ca/native.ts | 5 ++- shared/src/i18n/cs/native.ts | 5 ++- shared/src/i18n/de/native.ts | 5 ++- shared/src/i18n/en/native.ts | 5 ++- shared/src/i18n/es/native.ts | 4 ++- shared/src/i18n/et/native.ts | 5 ++- shared/src/i18n/fr/native.ts | 5 ++- shared/src/i18n/gr/native.ts | 4 ++- shared/src/i18n/he/native.ts | 5 ++- shared/src/i18n/hu/native.ts | 5 ++- shared/src/i18n/id/native.ts | 5 ++- shared/src/i18n/it/native.ts | 5 ++- shared/src/i18n/ja/native.ts | 3 +- shared/src/i18n/ko/native.ts | 3 +- shared/src/i18n/nl/native.ts | 5 ++- shared/src/i18n/pl/native.ts | 5 ++- shared/src/i18n/ru/native.ts | 5 ++- shared/src/i18n/sk/native.ts | 5 ++- shared/src/i18n/sv/native.ts | 5 ++- shared/src/i18n/th/native.ts | 5 ++- shared/src/i18n/tr/native.ts | 5 ++- shared/src/i18n/uk/native.ts | 5 ++- shared/src/i18n/vi/native.ts | 5 ++- shared/src/i18n/zh-TW/native.ts | 3 +- shared/src/i18n/zh/native.ts | 3 +- 39 files changed, 217 insertions(+), 53 deletions(-) diff --git a/client/android/app/src/main/java/com/liketrek/trek/MainActivity.java b/client/android/app/src/main/java/com/liketrek/trek/MainActivity.java index 64c27faf5..9f1ad1c1d 100644 --- a/client/android/app/src/main/java/com/liketrek/trek/MainActivity.java +++ b/client/android/app/src/main/java/com/liketrek/trek/MainActivity.java @@ -26,6 +26,7 @@ public class MainActivity extends BridgeActivity { // runs and on its own origin. BridgeActivity reads `config` while it // builds the bridge inside super.onCreate(). boolean restarting = TrekServerStore.consumeRestart(this); + TrekServerStore.recheckAfterUpdate(this); String server = TrekServerStore.getUrl(this); boolean onServer = server != null && !TrekServerStore.consumeShellOnce(this); config = TrekServerStore.configFor(this, onServer ? server : null, restarting); diff --git a/client/android/app/src/main/java/com/liketrek/trek/TrekServerStore.java b/client/android/app/src/main/java/com/liketrek/trek/TrekServerStore.java index b134f67a7..3bfa22911 100644 --- a/client/android/app/src/main/java/com/liketrek/trek/TrekServerStore.java +++ b/client/android/app/src/main/java/com/liketrek/trek/TrekServerStore.java @@ -22,6 +22,16 @@ final class TrekServerStore { private static final String PREFS = "trek_shell"; private static final String KEY_URL = "server_url"; + private static final String KEY_PREVIOUS_URL = "previous_server_url"; + private static final String KEY_SERVER_CHECK = "server_check"; + + /** + * The server API this build needs (MIN_NATIVE_API in serverAddress.ts). A + * server remembered under a lower value is checked once more: the first + * launch after an update that raised it puts the address screen back up, + * filled in with that server (getPreviousUrl). Raise both together. + */ + private static final int SERVER_CHECK = 2; private static final String KEY_SIGN_IN_HOSTS = "sign_in_hosts"; private static final String KEY_SHELL_ONCE = "shell_once"; private static final String KEY_RESTART = "restart"; @@ -56,6 +66,21 @@ final class TrekServerStore { return prefs(context).getString(KEY_URL, null); } + /** Runs before the bridge is built, so a server picked under an older minimum is not loaded unchecked. */ + static void recheckAfterUpdate(Context context) { + SharedPreferences prefs = prefs(context); + if (prefs.getInt(KEY_SERVER_CHECK, 0) >= SERVER_CHECK) return; + String server = getUrl(context); + SharedPreferences.Editor editor = prefs.edit().putInt(KEY_SERVER_CHECK, SERVER_CHECK); + if (server != null) editor.remove(KEY_URL).remove(KEY_SIGN_IN_HOSTS).putString(KEY_PREVIOUS_URL, server); + editor.commit(); + } + + /** The server an update asked to check again, until a server is set. */ + static String getPreviousUrl(Context context) { + return prefs(context).getString(KEY_PREVIOUS_URL, null); + } + /** Remembers the server; its sign-in hosts go with it and are replaced or dropped too. */ static void setUrl(Context context, String url) { setServer(context, url, null); @@ -66,7 +91,7 @@ final class TrekServerStore { if (url == null) { editor.remove(KEY_URL); } else { - editor.putString(KEY_URL, url); + editor.putString(KEY_URL, url).remove(KEY_PREVIOUS_URL); } if (signInHosts == null || signInHosts.isEmpty()) { editor.remove(KEY_SIGN_IN_HOSTS); diff --git a/client/android/app/src/main/java/com/liketrek/trek/TrekShellPlugin.java b/client/android/app/src/main/java/com/liketrek/trek/TrekShellPlugin.java index fa24e4c2d..dedd6a10d 100644 --- a/client/android/app/src/main/java/com/liketrek/trek/TrekShellPlugin.java +++ b/client/android/app/src/main/java/com/liketrek/trek/TrekShellPlugin.java @@ -310,8 +310,10 @@ public class TrekShellPlugin extends Plugin { @PluginMethod public void getServer(PluginCall call) { String url = TrekServerStore.getUrl(getContext()); + String previous = TrekServerStore.getPreviousUrl(getContext()); JSObject result = new JSObject(); result.put("url", url == null ? JSONObject.NULL : url); + result.put("previousUrl", previous == null ? JSONObject.NULL : previous); call.resolve(result); } diff --git a/client/ios/App/App/TrekBridgeViewController.swift b/client/ios/App/App/TrekBridgeViewController.swift index 3a2ce111a..3f6434c74 100644 --- a/client/ios/App/App/TrekBridgeViewController.swift +++ b/client/ios/App/App/TrekBridgeViewController.swift @@ -10,6 +10,7 @@ import WebKit class TrekBridgeViewController: CAPBridgeViewController { override func instanceDescriptor() -> InstanceDescriptor { let descriptor = super.instanceDescriptor() + TrekServerStore.recheckAfterUpdate() if let server = TrekServerStore.url { // The trailing slash matters: Capacitor treats every URL that starts // with this string as the app's own, and without it that would take @@ -157,13 +158,44 @@ enum TrekKeyCommands { enum TrekServerStore { private static let key = "TrekServerURL" + private static let previousKey = "TrekPreviousServerURL" + + private static let checkedKey = "TrekServerCheck" + + /// The server API this build needs (MIN_NATIVE_API in serverAddress.ts). + /// A server remembered under a lower value is checked once more: the first + /// launch after an update that raised it puts the address screen back up, + /// filled in with that server (previousURL). Raise both together. + private static let serverCheck = 2 + + /// Runs before the first bridge is built, so a server picked under an older + /// minimum is not loaded unchecked. + static func recheckAfterUpdate() { + let defaults = UserDefaults.standard + guard defaults.integer(forKey: checkedKey) < serverCheck else { return } + defaults.set(serverCheck, forKey: checkedKey) + guard let server = url else { return } + url = nil + defaults.set(server, forKey: previousKey) + } + + /// The server an update asked to check again, until a server is set. + static var previousURL: String? { + UserDefaults.standard.string(forKey: previousKey) + } + private static let signInHostsKey = "TrekServerSignInHosts" /// Setting the server drops the sign-in hosts of the one before it. static var url: String? { get { UserDefaults.standard.string(forKey: key) } set { - if let newValue { UserDefaults.standard.set(newValue, forKey: key) } else { UserDefaults.standard.removeObject(forKey: key) } + if let newValue { + UserDefaults.standard.set(newValue, forKey: key) + UserDefaults.standard.removeObject(forKey: previousKey) + } else { + UserDefaults.standard.removeObject(forKey: key) + } UserDefaults.standard.removeObject(forKey: signInHostsKey) try? FileManager.default.removeItem(at: offlineCopyURL) } diff --git a/client/ios/App/App/TrekShellPlugin.swift b/client/ios/App/App/TrekShellPlugin.swift index d32b71d09..c6952d57e 100644 --- a/client/ios/App/App/TrekShellPlugin.swift +++ b/client/ios/App/App/TrekShellPlugin.swift @@ -348,7 +348,10 @@ public class TrekShellPlugin: CAPPlugin, CAPBridgedPlugin, ASWebAuthenticationPr private var authSession: ASWebAuthenticationSession? @objc func getServer(_ call: CAPPluginCall) { - call.resolve(["url": TrekServerStore.url ?? NSNull()]) + call.resolve([ + "url": TrekServerStore.url ?? NSNull(), + "previousUrl": TrekServerStore.previousURL ?? NSNull(), + ]) } @objc func setServer(_ call: CAPPluginCall) { diff --git a/client/native-shell/main.ts b/client/native-shell/main.ts index 56814ae6f..72eec1d12 100644 --- a/client/native-shell/main.ts +++ b/client/native-shell/main.ts @@ -275,7 +275,12 @@ function showWelcome(opts: { back?: boolean } = {}): void { } // ── Connect (address) ─────────────────────────────────────────────────────── -function showConnect(prefill = '', opts: { back?: boolean } = {}): void { +/** + * `recheck`: an app update needs a newer server than the one it remembered, so + * the address screen comes back once with it filled in, says why and checks it + * right away. A server that is new enough loads again without another tap. + */ +function showConnect(prefill = '', opts: { back?: boolean; recheck?: boolean } = {}): void { const input = el('input', { type: 'url', placeholder: t('native.connect.placeholder'), @@ -344,14 +349,15 @@ function showConnect(prefill = '', opts: { back?: boolean } = {}): void { [ topbar(() => showWelcome({ back: true })), el('h1', { className: 'title-sm' }, t('native.connect.title')), - el('p', { className: 'sub' }, t('native.connect.hint')), + el('p', { className: 'sub' }, t(opts.recheck ? 'native.connect.recheckHint' : 'native.connect.hint')), ], [form, footLinks(externalLink(t('native.connect.whatIsServer'), SERVER_DOCS_URL))] ) ), opts ); - requestAnimationFrame(() => input.focus()); + if (opts.recheck && prefill) form.requestSubmit(); + else requestAnimationFrame(() => input.focus()); } /** @@ -1322,8 +1328,9 @@ async function start(): Promise { followBackGesture(); letKeyboardClose(); let url: string | null; + let previousUrl: string | null | undefined; try { - ({ url } = await TrekShell.getServer()); + ({ url, previousUrl } = await TrekShell.getServer()); } catch { // No native shell under us (a web preview, or a simulator without the // plugin): there is no remembered server, so start at the welcome screen @@ -1332,7 +1339,9 @@ async function start(): Promise { await SplashScreen.hide().catch(() => {}); return; } - if (!url) { + if (!url && previousUrl) { + showConnect(previousUrl, { recheck: true }); + } else if (!url) { showWelcome(); } else { // Only reached when loading the server failed. A proxy that wanted a client diff --git a/client/src/native/serverAddress.test.ts b/client/src/native/serverAddress.test.ts index 8f4c2c225..ef57307da 100644 --- a/client/src/native/serverAddress.test.ts +++ b/client/src/native/serverAddress.test.ts @@ -3,7 +3,7 @@ import { candidateUrls, probeDemo, probeServer, type ProbeResponse } from './ser const features = ( url: string, - data: unknown = { bookingImport: false, aiParsing: false, nativeApp: true } + data: unknown = { bookingImport: false, aiParsing: false, nativeApp: true, nativeApi: 2 } ): ProbeResponse => ({ status: 200, data, url }); describe('candidateUrls', () => { @@ -26,13 +26,21 @@ describe('candidateUrls', () => { describe('probeServer', () => { it('accepts a server at the minimum native API version or above', async () => { - const data = { bookingImport: false, nativeApp: true, nativeApi: 1 }; - const get = vi.fn().mockResolvedValue(features('https://trek.example.com/api/health/features', data)); - expect(await probeServer('https://trek.example.com', get)).toEqual({ ok: true, url: 'https://trek.example.com' }); + for (const nativeApi of [2, 3]) { + const data = { bookingImport: false, nativeApp: true, nativeApi }; + const get = vi.fn().mockResolvedValue(features('https://trek.example.com/api/health/features', data)); + expect(await probeServer('https://trek.example.com', get)).toEqual({ ok: true, url: 'https://trek.example.com' }); + } }); it('calls a server below the minimum native API version too old', async () => { - const data = { bookingImport: false, nativeApp: true, nativeApi: 0 }; + const data = { bookingImport: false, nativeApp: true, nativeApi: 1 }; + const get = vi.fn().mockResolvedValue(features('https://trek.example.com/api/health/features', data)); + expect(await probeServer('https://trek.example.com', get)).toEqual({ ok: false, reason: 'tooOld' }); + }); + + it('calls a server that speaks to the app but reports no native API version too old', async () => { + const data = { bookingImport: false, nativeApp: true }; const get = vi.fn().mockResolvedValue(features('https://trek.example.com/api/health/features', data)); expect(await probeServer('https://trek.example.com', get)).toEqual({ ok: false, reason: 'tooOld' }); }); @@ -173,7 +181,7 @@ describe('probeServer behind mutual TLS', () => { }); it('connects where the proxy asked and TREK answered, with or without a certificate', async () => { - const trek = { bookingImport: false, nativeApp: true, nativeApi: 1 }; + const trek = { bookingImport: false, nativeApp: true, nativeApi: 2 }; for (const sent of [true, false]) { const get = vi.fn().mockResolvedValue(asked(200, sent, trek)); expect(await probeServer('https://trek.example.com', get)).toEqual({ ok: true, url: 'https://trek.example.com' }); diff --git a/client/src/native/serverAddress.ts b/client/src/native/serverAddress.ts index 41db0aa58..ed5d8c144 100644 --- a/client/src/native/serverAddress.ts +++ b/client/src/native/serverAddress.ts @@ -43,10 +43,12 @@ const FEATURES_PATH = '/api/health/features'; /** * The oldest server API this app can work with (`nativeApi` in the features - * response). A server from before the field existed answers without it and is - * accepted while the minimum is 1. + * response). 2 is TREK 5.1.3, the first server whose sign-in from the app does + * not end in the browser. A server without the field is older still. Raising it + * goes with SERVER_CHECK in TrekServerStore (iOS and Android), so a server the + * app remembers from before is checked against the new minimum once. */ -const MIN_NATIVE_API = 1; +export const MIN_NATIVE_API = 2; function normalize(raw: string): string | null { let parsed: URL; @@ -80,7 +82,7 @@ function judge(response: ProbeResponse): ProbeResult { if (response.status !== 200 || !isRecord(response.data)) return { ok: false, reason: 'notTrek' }; if (response.data.nativeApp === true) { const api = response.data.nativeApi; - if (typeof api === 'number' && api < MIN_NATIVE_API) return { ok: false, reason: 'tooOld' }; + if (typeof api !== 'number' || api < MIN_NATIVE_API) return { ok: false, reason: 'tooOld' }; // Follow a redirect (http to https, a canonical host) so the app loads the // address the server actually answers on. const base = response.url.endsWith(FEATURES_PATH) ? response.url.slice(0, -FEATURES_PATH.length) : null; diff --git a/client/src/native/trekShell.ts b/client/src/native/trekShell.ts index 78869c9bc..c5939aeec 100644 --- a/client/src/native/trekShell.ts +++ b/client/src/native/trekShell.ts @@ -13,7 +13,12 @@ import type { NativeCapabilities } from './capabilities'; * worker. */ export interface TrekShellPlugin { - getServer(): Promise<{ url: string | null }>; + /** + * `previousUrl`: the server this app remembered before an update asked for a + * newer one (SERVER_CHECK in TrekServerStore). Set only while no server is, + * so the address screen can check it again, pre-filled. + */ + getServer(): Promise<{ url: string | null; previousUrl?: string | null }>; /** * Remembers the server and loads it. The current page is gone afterwards. * `signInHosts` are the hosts of a proxy's sign-in page in front of it diff --git a/server/src/nest/health/features.controller.ts b/server/src/nest/health/features.controller.ts index a1d67d934..e862dbc01 100644 --- a/server/src/nest/health/features.controller.ts +++ b/server/src/nest/health/features.controller.ts @@ -69,7 +69,10 @@ export class FeaturesController { // The version of what the apps rely on from the server (the hand-off // routes, the shell bridge in the served UI). Raised only for a change an // older app cannot follow; the app refuses a server below its minimum. - nativeApi: 1, + // 2 (5.1.3): the browser sign-in starts under /api, past an older TREK's + // service worker, and the hand-off page signs in by itself. Apps from then + // on refuse a server below it, so its users stop landing in the browser. + nativeApi: 2, // The other way round: the oldest app binary this server's UI works with, // as the shell API the app reports (TrekShell.getCapabilities). An app // below it is asked to update instead of running native calls it lacks. diff --git a/server/tests/unit/nest/features.controller.test.ts b/server/tests/unit/nest/features.controller.test.ts index 0babcd507..6dc069a89 100644 --- a/server/tests/unit/nest/features.controller.test.ts +++ b/server/tests/unit/nest/features.controller.test.ts @@ -37,7 +37,7 @@ describe('FeaturesController (GET /api/health/features)', () => { aiParsing: true, aiAssistant: true, nativeApp: true, - nativeApi: 1, + nativeApi: 2, minNativeShellApi: 1, }); }); @@ -49,7 +49,7 @@ describe('FeaturesController (GET /api/health/features)', () => { aiParsing: false, aiAssistant: false, nativeApp: true, - nativeApi: 1, + nativeApi: 2, minNativeShellApi: 1, }); }); @@ -60,7 +60,7 @@ describe('FeaturesController (GET /api/health/features)', () => { aiParsing: false, aiAssistant: false, nativeApp: true, - nativeApi: 1, + nativeApi: 2, minNativeShellApi: 1, }); expect(await make(false, true).controller.features()).toEqual({ @@ -68,7 +68,7 @@ describe('FeaturesController (GET /api/health/features)', () => { aiParsing: true, aiAssistant: true, nativeApp: true, - nativeApi: 1, + nativeApi: 2, minNativeShellApi: 1, }); }); @@ -94,7 +94,7 @@ describe('FeaturesController (GET /api/health/features)', () => { it('FEAT-014: tells the native apps it speaks their sign-in hand-off, and at which version', async () => { const features = await make(false, false).controller.features(); expect(features.nativeApp).toBe(true); - expect(features.nativeApi).toBe(1); + expect(features.nativeApi).toBe(2); // And which app binaries its UI still works with. expect(features.minNativeShellApi).toBe(1); }); diff --git a/shared/src/i18n/ar/native.ts b/shared/src/i18n/ar/native.ts index 63cf4ec4c..f65d55009 100644 --- a/shared/src/i18n/ar/native.ts +++ b/shared/src/i18n/ar/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'لا يبدو هذا عنوان ويب.', 'native.connect.errorUnreachable': 'لا يستجيب أي خادم على هذا العنوان. تحقق من العنوان ومن اتصالك.', 'native.connect.errorNotTrek': 'الخادم على هذا العنوان ليس TREK.', - 'native.connect.errorTooOld': 'خادم TREK هذا قديم جدًا بالنسبة للتطبيق. يحتاج إلى تحديث أولًا.', + 'native.connect.errorTooOld': + 'يعمل على هذا الخادم إصدار أقدم من TREK. يحتاج التطبيق إلى TREK 5.1.3 أو أحدث، لذا يجب تحديث الخادم أولًا.', + 'native.connect.recheckHint': + 'يحتاج هذا الإصدار من التطبيق إلى TREK 5.1.3 أو أحدث على خادمك، لذا يتحقق من خادمك مرة أخرى.', 'native.offline.title': 'تعذّر الوصول إلى الخادم', 'native.offline.hint': 'تعذّر على TREK الوصول إلى {server}. تحقق من اتصالك ثم حاول مرة أخرى.', 'native.offline.retry': 'إعادة المحاولة', diff --git a/shared/src/i18n/az/native.ts b/shared/src/i18n/az/native.ts index e38114dd4..5006ba644 100644 --- a/shared/src/i18n/az/native.ts +++ b/shared/src/i18n/az/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'Bu, veb ünvana bənzəmir.', 'native.connect.errorUnreachable': 'Bu ünvanda heç bir server cavab vermədi. Ünvanı və bağlantınızı yoxlayın.', 'native.connect.errorNotTrek': 'Bu ünvandakı server TREK deyil.', - 'native.connect.errorTooOld': 'Bu TREK serveri tətbiq üçün çox köhnədir. Əvvəlcə onu yeniləmək lazımdır.', + 'native.connect.errorTooOld': + 'Bu serverdə köhnə TREK işləyir. Tətbiqə TREK 5.1.3 və ya daha yenisi lazımdır, ona görə əvvəlcə serveri yeniləmək lazımdır.', + 'native.connect.recheckHint': + 'Tətbiqin bu versiyası serverinizdə TREK 5.1.3 və ya daha yenisini tələb edir, ona görə serverinizi bir daha yoxlayır.', 'native.offline.title': 'Serverə çatmaq mümkün deyil', 'native.offline.hint': 'TREK {server} ünvanına çata bilmədi. Bağlantınızı yoxlayın və yenidən cəhd edin.', 'native.offline.retry': 'Yenidən cəhd et', diff --git a/shared/src/i18n/br/native.ts b/shared/src/i18n/br/native.ts index d67a8333f..b75ee0dda 100644 --- a/shared/src/i18n/br/native.ts +++ b/shared/src/i18n/br/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Este servidor roda uma versão antiga do TREK. O app precisa do TREK 5.1.3 ou mais recente, então o servidor precisa ser atualizado primeiro.', + 'native.connect.recheckHint': + 'Esta versão do app precisa do TREK 5.1.3 ou mais recente no seu servidor, por isso verifica o servidor mais uma vez.', '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', diff --git a/shared/src/i18n/ca/native.ts b/shared/src/i18n/ca/native.ts index b0a44b166..7cd8fa6ff 100644 --- a/shared/src/i18n/ca/native.ts +++ b/shared/src/i18n/ca/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Aquest servidor executa una versió antiga de TREK. L’app necessita TREK 5.1.3 o posterior, així que primer cal actualitzar el servidor.', + 'native.connect.recheckHint': + 'Aquesta versió de l’app necessita TREK 5.1.3 o posterior al teu servidor, per això el torna a comprovar.', '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', diff --git a/shared/src/i18n/cs/native.ts b/shared/src/i18n/cs/native.ts index 34110b6ce..ff7a3700b 100644 --- a/shared/src/i18n/cs/native.ts +++ b/shared/src/i18n/cs/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Na tomto serveru běží starší TREK. Aplikace potřebuje TREK 5.1.3 nebo novější, server proto nejprve potřebuje aktualizaci.', + 'native.connect.recheckHint': + 'Tato verze aplikace potřebuje na vašem serveru TREK 5.1.3 nebo novější, proto server ještě jednou zkontroluje.', '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', diff --git a/shared/src/i18n/de/native.ts b/shared/src/i18n/de/native.ts index 5d3cd47e4..a1efd1855 100644 --- a/shared/src/i18n/de/native.ts +++ b/shared/src/i18n/de/native.ts @@ -12,7 +12,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Auf diesem Server läuft ein älteres TREK. Die App braucht TREK 5.1.3 oder neuer, der Server braucht also zuerst ein Update.', + 'native.connect.recheckHint': + 'Diese Version der App braucht TREK 5.1.3 oder neuer auf deinem Server und prüft ihn deshalb einmal neu.', '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', diff --git a/shared/src/i18n/en/native.ts b/shared/src/i18n/en/native.ts index 1e28903fa..ce6d176c9 100644 --- a/shared/src/i18n/en/native.ts +++ b/shared/src/i18n/en/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'This server runs an older TREK. The app needs TREK 5.1.3 or newer, so the server needs an update first.', + 'native.connect.recheckHint': + 'This version of the app needs TREK 5.1.3 or newer on your server, so it checks your server once more.', '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', diff --git a/shared/src/i18n/es/native.ts b/shared/src/i18n/es/native.ts index 8311083ab..083855abd 100644 --- a/shared/src/i18n/es/native.ts +++ b/shared/src/i18n/es/native.ts @@ -12,7 +12,9 @@ const native: TranslationStrings = { '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.', + 'Este servidor ejecuta una versión antigua de TREK. La app necesita TREK 5.1.3 o posterior, así que primero hay que actualizar el servidor.', + 'native.connect.recheckHint': + 'Esta versión de la app necesita TREK 5.1.3 o posterior en tu servidor, así que lo comprueba una vez más.', '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', diff --git a/shared/src/i18n/et/native.ts b/shared/src/i18n/et/native.ts index 763ebece5..0a0576d55 100644 --- a/shared/src/i18n/et/native.ts +++ b/shared/src/i18n/et/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'See ei näe välja nagu veebiaadress.', 'native.connect.errorUnreachable': 'Sellel aadressil ei vastanud ükski server. Kontrolli aadressi ja oma ühendust.', 'native.connect.errorNotTrek': 'Sellel aadressil olev server ei ole TREK.', - 'native.connect.errorTooOld': 'See TREKi server on rakenduse jaoks liiga vana. Seda tuleb esmalt uuendada.', + 'native.connect.errorTooOld': + 'Selles serveris töötab vanem TREK. Rakendus vajab TREK 5.1.3 või uuemat, seega tuleb server esmalt uuendada.', + 'native.connect.recheckHint': + 'See rakenduse versioon vajab sinu serveris TREK 5.1.3 või uuemat, seega kontrollib see serverit veel kord.', 'native.offline.title': 'Server pole kättesaadav', 'native.offline.hint': 'TREK ei jõudnud serverini {server}. Kontrolli oma ühendust ja proovi uuesti.', 'native.offline.retry': 'Proovi uuesti', diff --git a/shared/src/i18n/fr/native.ts b/shared/src/i18n/fr/native.ts index 4ab9d8938..64e717822 100644 --- a/shared/src/i18n/fr/native.ts +++ b/shared/src/i18n/fr/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Ce serveur exécute une ancienne version de TREK. L’application a besoin de TREK 5.1.3 ou plus récent, le serveur doit donc d’abord être mis à jour.', + 'native.connect.recheckHint': + 'Cette version de l’application a besoin de TREK 5.1.3 ou plus récent sur votre serveur, elle le vérifie donc une nouvelle fois.', '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', diff --git a/shared/src/i18n/gr/native.ts b/shared/src/i18n/gr/native.ts index e42c1ab5e..6d3ecc35b 100644 --- a/shared/src/i18n/gr/native.ts +++ b/shared/src/i18n/gr/native.ts @@ -13,7 +13,9 @@ const native: TranslationStrings = { 'Κανένας διακομιστής δεν απαντά σε αυτή τη διεύθυνση. Ελέγξτε τη διεύθυνση και τη σύνδεσή σας.', 'native.connect.errorNotTrek': 'Ο διακομιστής σε αυτή τη διεύθυνση δεν είναι TREK.', 'native.connect.errorTooOld': - 'Αυτός ο διακομιστής TREK είναι πολύ παλιός για την εφαρμογή. Χρειάζεται πρώτα ενημέρωση.', + 'Αυτός ο διακομιστής εκτελεί παλαιότερη έκδοση του TREK. Η εφαρμογή χρειάζεται TREK 5.1.3 ή νεότερο, οπότε ο διακομιστής χρειάζεται πρώτα ενημέρωση.', + 'native.connect.recheckHint': + 'Αυτή η έκδοση της εφαρμογής χρειάζεται TREK 5.1.3 ή νεότερο στον διακομιστή σας, γι’ αυτό τον ελέγχει ξανά.', 'native.offline.title': 'Ο διακομιστής δεν είναι προσβάσιμος', 'native.offline.hint': 'Το TREK δεν μπόρεσε να συνδεθεί στο {server}. Ελέγξτε τη σύνδεσή σας και δοκιμάστε ξανά.', 'native.offline.retry': 'Δοκιμάστε ξανά', diff --git a/shared/src/i18n/he/native.ts b/shared/src/i18n/he/native.ts index effbbe130..8563522dd 100644 --- a/shared/src/i18n/he/native.ts +++ b/shared/src/i18n/he/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'זה לא נראה ככתובת אינטרנט.', 'native.connect.errorUnreachable': 'אף שרת לא ענה בכתובת הזו. בדקו את הכתובת ואת החיבור.', 'native.connect.errorNotTrek': 'השרת בכתובת הזו אינו TREK.', - 'native.connect.errorTooOld': 'שרת TREK הזה ישן מדי עבור האפליקציה. צריך קודם לעדכן אותו.', + 'native.connect.errorTooOld': + 'בשרת הזה פועלת גרסה ישנה של TREK. האפליקציה צריכה TREK 5.1.3 ומעלה, ולכן צריך קודם לעדכן את השרת.', + 'native.connect.recheckHint': + 'גרסה זו של האפליקציה צריכה TREK 5.1.3 ומעלה בשרת שלך, ולכן היא בודקת את השרת פעם נוספת.', 'native.offline.title': 'השרת לא זמין', 'native.offline.hint': 'TREK לא הצליח להגיע אל {server}. בדקו את החיבור ונסו שוב.', 'native.offline.retry': 'נסו שוב', diff --git a/shared/src/i18n/hu/native.ts b/shared/src/i18n/hu/native.ts index 10d0089ea..5743b1d32 100644 --- a/shared/src/i18n/hu/native.ts +++ b/shared/src/i18n/hu/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Ezen a szerveren régebbi TREK fut. Az alkalmazásnak TREK 5.1.3 vagy újabb kell, ezért előbb frissíteni kell a szervert.', + 'native.connect.recheckHint': + 'Az alkalmazás ezen verziójának TREK 5.1.3 vagy újabb kell a szervereden, ezért még egyszer ellenőrzi.', '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', diff --git a/shared/src/i18n/id/native.ts b/shared/src/i18n/id/native.ts index 9098fade9..d29a1b2f0 100644 --- a/shared/src/i18n/id/native.ts +++ b/shared/src/i18n/id/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Server ini menjalankan TREK versi lama. Aplikasi memerlukan TREK 5.1.3 atau lebih baru, jadi server perlu diperbarui terlebih dahulu.', + 'native.connect.recheckHint': + 'Versi aplikasi ini memerlukan TREK 5.1.3 atau lebih baru di server Anda, jadi aplikasi memeriksa server Anda sekali lagi.', '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', diff --git a/shared/src/i18n/it/native.ts b/shared/src/i18n/it/native.ts index 36e6c87e4..4a2709c25 100644 --- a/shared/src/i18n/it/native.ts +++ b/shared/src/i18n/it/native.ts @@ -12,7 +12,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Su questo server gira una versione vecchia di TREK. L’app richiede TREK 5.1.3 o successivo, quindi il server deve prima essere aggiornato.', + 'native.connect.recheckHint': + 'Questa versione dell’app richiede TREK 5.1.3 o successivo sul tuo server, quindi lo controlla ancora una volta.', 'native.offline.title': 'Server non raggiungibile', 'native.offline.hint': 'TREK non è riuscito a raggiungere {server}. Controlla la connessione e riprova.', 'native.offline.retry': 'Riprova', diff --git a/shared/src/i18n/ja/native.ts b/shared/src/i18n/ja/native.ts index 565bb6136..5e68226fa 100644 --- a/shared/src/i18n/ja/native.ts +++ b/shared/src/i18n/ja/native.ts @@ -11,7 +11,8 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'Web アドレスではないようです。', 'native.connect.errorUnreachable': 'このアドレスで応答するサーバーがありません。アドレスと接続を確認してください。', 'native.connect.errorNotTrek': 'このアドレスのサーバーは TREK ではありません。', - 'native.connect.errorTooOld': 'この TREK サーバーはアプリに対して古すぎます。先に更新が必要です。', + 'native.connect.errorTooOld': 'このサーバーでは古い TREK が動作しています。アプリには TREK 5.1.3 以降が必要なため、先にサーバーを更新してください。', + 'native.connect.recheckHint': 'このバージョンのアプリはサーバーに TREK 5.1.3 以降が必要なため、サーバーをもう一度確認します。', 'native.offline.title': 'サーバーに接続できません', 'native.offline.hint': 'TREK は {server} に接続できませんでした。接続を確認して、もう一度お試しください。', 'native.offline.retry': '再試行', diff --git a/shared/src/i18n/ko/native.ts b/shared/src/i18n/ko/native.ts index 76a2edf1e..c21776ead 100644 --- a/shared/src/i18n/ko/native.ts +++ b/shared/src/i18n/ko/native.ts @@ -11,7 +11,8 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': '웹 주소가 아닌 것 같습니다.', 'native.connect.errorUnreachable': '이 주소에서 응답하는 서버가 없습니다. 주소와 연결 상태를 확인하세요.', 'native.connect.errorNotTrek': '이 주소의 서버는 TREK이 아닙니다.', - 'native.connect.errorTooOld': '이 TREK 서버는 앱에서 사용하기에 너무 오래되었습니다. 먼저 업데이트가 필요합니다.', + 'native.connect.errorTooOld': '이 서버는 이전 버전의 TREK을 실행 중입니다. 앱에는 TREK 5.1.3 이상이 필요하므로 먼저 서버를 업데이트해야 합니다.', + 'native.connect.recheckHint': '이 버전의 앱은 서버에 TREK 5.1.3 이상이 필요하므로 서버를 한 번 더 확인합니다.', 'native.offline.title': '서버에 연결할 수 없음', 'native.offline.hint': 'TREK이 {server}에 연결하지 못했습니다. 연결 상태를 확인한 후 다시 시도하세요.', 'native.offline.retry': '다시 시도', diff --git a/shared/src/i18n/nl/native.ts b/shared/src/i18n/nl/native.ts index 2284d8b68..f43fa375d 100644 --- a/shared/src/i18n/nl/native.ts +++ b/shared/src/i18n/nl/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Op deze server draait een oudere TREK. De app heeft TREK 5.1.3 of nieuwer nodig, dus de server moet eerst worden bijgewerkt.', + 'native.connect.recheckHint': + 'Deze versie van de app heeft TREK 5.1.3 of nieuwer op je server nodig en controleert je server daarom nog een keer.', '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', diff --git a/shared/src/i18n/pl/native.ts b/shared/src/i18n/pl/native.ts index 2872947ab..209289017 100644 --- a/shared/src/i18n/pl/native.ts +++ b/shared/src/i18n/pl/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Na tym serwerze działa starsza wersja TREK. Aplikacja wymaga TREK 5.1.3 lub nowszego, więc najpierw trzeba zaktualizować serwer.', + 'native.connect.recheckHint': + 'Ta wersja aplikacji wymaga na Twoim serwerze TREK 5.1.3 lub nowszego, dlatego sprawdza go jeszcze raz.', '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', diff --git a/shared/src/i18n/ru/native.ts b/shared/src/i18n/ru/native.ts index 32fff5d11..fea20bf5d 100644 --- a/shared/src/i18n/ru/native.ts +++ b/shared/src/i18n/ru/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'Это не похоже на веб-адрес.', 'native.connect.errorUnreachable': 'По этому адресу не отвечает ни один сервер. Проверьте адрес и подключение.', 'native.connect.errorNotTrek': 'Сервер по этому адресу не является TREK.', - 'native.connect.errorTooOld': 'Этот сервер TREK слишком старый для приложения. Сначала его нужно обновить.', + 'native.connect.errorTooOld': + 'На этом сервере работает старая версия TREK. Приложению нужен TREK 5.1.3 или новее, поэтому сначала нужно обновить сервер.', + 'native.connect.recheckHint': + 'Этой версии приложения нужен TREK 5.1.3 или новее на вашем сервере, поэтому оно проверяет сервер ещё раз.', 'native.offline.title': 'Сервер недоступен', 'native.offline.hint': 'TREK не удалось подключиться к {server}. Проверьте подключение и повторите попытку.', 'native.offline.retry': 'Повторить', diff --git a/shared/src/i18n/sk/native.ts b/shared/src/i18n/sk/native.ts index 01f3b1f44..aa4718017 100644 --- a/shared/src/i18n/sk/native.ts +++ b/shared/src/i18n/sk/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'Toto nevyzerá ako webová adresa.', 'native.connect.errorUnreachable': 'Na tejto adrese neodpovedal žiadny server. Skontrolujte adresu a pripojenie.', 'native.connect.errorNotTrek': 'Server na tejto adrese nie je TREK.', - 'native.connect.errorTooOld': 'Tento server TREK je pre aplikáciu príliš starý. Najprv ho treba aktualizovať.', + 'native.connect.errorTooOld': + 'Na tomto serveri beží starší TREK. Aplikácia potrebuje TREK 5.1.3 alebo novší, preto treba server najprv aktualizovať.', + 'native.connect.recheckHint': + 'Táto verzia aplikácie potrebuje na vašom serveri TREK 5.1.3 alebo novší, preto server ešte raz skontroluje.', 'native.offline.title': 'Server nie je dostupný', 'native.offline.hint': 'TREK sa nepodarilo spojiť so serverom {server}. Skontrolujte pripojenie a skúste to znova.', 'native.offline.retry': 'Skúsiť znova', diff --git a/shared/src/i18n/sv/native.ts b/shared/src/i18n/sv/native.ts index b7b51f748..640f61795 100644 --- a/shared/src/i18n/sv/native.ts +++ b/shared/src/i18n/sv/native.ts @@ -12,7 +12,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Den här servern kör en äldre TREK. Appen behöver TREK 5.1.3 eller senare, så servern behöver uppdateras först.', + 'native.connect.recheckHint': + 'Den här versionen av appen behöver TREK 5.1.3 eller senare på din server och kontrollerar den därför en gång till.', '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', diff --git a/shared/src/i18n/th/native.ts b/shared/src/i18n/th/native.ts index ffdeccbcf..fe4378e22 100644 --- a/shared/src/i18n/th/native.ts +++ b/shared/src/i18n/th/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'ดูเหมือนว่านี่ไม่ใช่ที่อยู่เว็บ', 'native.connect.errorUnreachable': 'ไม่มีเซิร์ฟเวอร์ตอบกลับที่ที่อยู่นี้ โปรดตรวจสอบที่อยู่และการเชื่อมต่อของคุณ', 'native.connect.errorNotTrek': 'เซิร์ฟเวอร์ที่ที่อยู่นี้ไม่ใช่ TREK', - 'native.connect.errorTooOld': 'เซิร์ฟเวอร์ TREK นี้เก่าเกินไปสำหรับแอป ต้องอัปเดตก่อน', + 'native.connect.errorTooOld': + 'เซิร์ฟเวอร์นี้ใช้ TREK เวอร์ชันเก่า แอปต้องใช้ TREK 5.1.3 ขึ้นไป จึงต้องอัปเดตเซิร์ฟเวอร์ก่อน', + 'native.connect.recheckHint': + 'แอปเวอร์ชันนี้ต้องใช้ TREK 5.1.3 ขึ้นไปบนเซิร์ฟเวอร์ของคุณ จึงตรวจสอบเซิร์ฟเวอร์อีกครั้ง', 'native.offline.title': 'เข้าถึงเซิร์ฟเวอร์ไม่ได้', 'native.offline.hint': 'TREK เข้าถึง {server} ไม่ได้ โปรดตรวจสอบการเชื่อมต่อแล้วลองอีกครั้ง', 'native.offline.retry': 'ลองอีกครั้ง', diff --git a/shared/src/i18n/tr/native.ts b/shared/src/i18n/tr/native.ts index c314663d8..13b9c5c1e 100644 --- a/shared/src/i18n/tr/native.ts +++ b/shared/src/i18n/tr/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Bu sunucuda eski bir TREK sürümü çalışıyor. Uygulama TREK 5.1.3 veya daha yenisini gerektirdiğinden önce sunucunun güncellenmesi gerekiyor.', + 'native.connect.recheckHint': + 'Uygulamanın bu sürümü sunucunuzda TREK 5.1.3 veya daha yenisini gerektirdiğinden sunucunuzu bir kez daha kontrol ediyor.', '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', diff --git a/shared/src/i18n/uk/native.ts b/shared/src/i18n/uk/native.ts index 0c474f3fb..c62e1dd5c 100644 --- a/shared/src/i18n/uk/native.ts +++ b/shared/src/i18n/uk/native.ts @@ -11,7 +11,10 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': 'Це не схоже на вебадресу.', 'native.connect.errorUnreachable': 'За цією адресою не відповідає жоден сервер. Перевірте адресу та з’єднання.', 'native.connect.errorNotTrek': 'Сервер за цією адресою не є TREK.', - 'native.connect.errorTooOld': 'Цей сервер TREK застарий для застосунку. Спершу його потрібно оновити.', + 'native.connect.errorTooOld': + 'На цьому сервері працює старіша версія TREK. Застосунку потрібен TREK 5.1.3 або новіший, тож спершу потрібно оновити сервер.', + 'native.connect.recheckHint': + 'Цій версії застосунку потрібен TREK 5.1.3 або новіший на вашому сервері, тому вона ще раз перевіряє сервер.', 'native.offline.title': 'Сервер недоступний', 'native.offline.hint': 'TREK не вдалося підключитися до {server}. Перевірте з’єднання та спробуйте ще раз.', 'native.offline.retry': 'Спробувати ще раз', diff --git a/shared/src/i18n/vi/native.ts b/shared/src/i18n/vi/native.ts index 708518c0a..6f82db662 100644 --- a/shared/src/i18n/vi/native.ts +++ b/shared/src/i18n/vi/native.ts @@ -12,7 +12,10 @@ const native: TranslationStrings = { '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.connect.errorTooOld': + 'Máy chủ này đang chạy phiên bản TREK cũ. Ứng dụng cần TREK 5.1.3 trở lên, vì vậy máy chủ cần được cập nhật trước.', + 'native.connect.recheckHint': + 'Phiên bản ứng dụng này cần TREK 5.1.3 trở lên trên máy chủ của bạn, vì vậy ứng dụng kiểm tra lại máy chủ một lần nữa.', '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', diff --git a/shared/src/i18n/zh-TW/native.ts b/shared/src/i18n/zh-TW/native.ts index 5779df494..53143f6ce 100644 --- a/shared/src/i18n/zh-TW/native.ts +++ b/shared/src/i18n/zh-TW/native.ts @@ -11,7 +11,8 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': '這看起來不像網址。', 'native.connect.errorUnreachable': '此網址沒有伺服器回應。請檢查網址與網路連線。', 'native.connect.errorNotTrek': '此網址上的伺服器不是 TREK。', - 'native.connect.errorTooOld': '此 TREK 伺服器版本過舊,無法用於 App。請先更新伺服器。', + 'native.connect.errorTooOld': '此伺服器執行的是舊版 TREK。App 需要 TREK 5.1.3 或更新版本,請先更新伺服器。', + 'native.connect.recheckHint': '此版本的 App 需要伺服器執行 TREK 5.1.3 或更新版本,因此會再次檢查你的伺服器。', 'native.offline.title': '無法連線到伺服器', 'native.offline.hint': 'TREK 無法連線到 {server}。請檢查網路連線後再試一次。', 'native.offline.retry': '再試一次', diff --git a/shared/src/i18n/zh/native.ts b/shared/src/i18n/zh/native.ts index 5c784488c..c12419514 100644 --- a/shared/src/i18n/zh/native.ts +++ b/shared/src/i18n/zh/native.ts @@ -11,7 +11,8 @@ const native: TranslationStrings = { 'native.connect.errorInvalid': '这看起来不像网址。', 'native.connect.errorUnreachable': '此地址没有服务器响应。请检查地址和网络连接。', 'native.connect.errorNotTrek': '此地址上的服务器不是 TREK。', - 'native.connect.errorTooOld': '此 TREK 服务器版本过旧,无法用于应用。请先更新服务器。', + 'native.connect.errorTooOld': '此服务器运行的是旧版 TREK。应用需要 TREK 5.1.3 或更高版本,请先更新服务器。', + 'native.connect.recheckHint': '此版本的应用需要服务器运行 TREK 5.1.3 或更高版本,因此会再次检查你的服务器。', 'native.offline.title': '无法连接服务器', 'native.offline.hint': 'TREK 无法连接到 {server}。请检查网络连接后重试。', 'native.offline.retry': '重试',