Wire up i18n in both apps
Initialize i18n via initI18n() in both root.tsx files and replace all hardcoded user-facing strings with useTranslation() calls. Adds missing translation keys for planner (profiles, connection states, save flow) and journal (auth pages, route management, passkey prompts). Both English and German translations are complete. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
69ba510530
commit
b96b32cb53
14 changed files with 172 additions and 76 deletions
|
|
@ -7,6 +7,9 @@ export default {
|
|||
close: "Schließen",
|
||||
loading: "Wird geladen...",
|
||||
error: "Etwas ist schiefgelaufen",
|
||||
goHome: "Zur Startseite",
|
||||
pageNotFound: "Seite nicht gefunden",
|
||||
serviceUnavailable: "Dienst vorübergehend nicht verfügbar. Bitte versuche es später erneut.",
|
||||
},
|
||||
planner: {
|
||||
title: "trails.cool Planer",
|
||||
|
|
@ -14,11 +17,22 @@ export default {
|
|||
newSession: "Neue Sitzung",
|
||||
saveRoute: "Route speichern",
|
||||
exportGpx: "GPX exportieren",
|
||||
profile: "Routing-Profil",
|
||||
profile: "Profil",
|
||||
connecting: "Verbinde...",
|
||||
loadingMap: "Karte wird geladen...",
|
||||
computingRoute: "Route wird berechnet...",
|
||||
host: "Host",
|
||||
connected: "Verbunden",
|
||||
saveToJournal: "Im Journal speichern",
|
||||
saving: "Speichert...",
|
||||
saved: "Gespeichert!",
|
||||
returnToJournal: "Zurück zum Journal",
|
||||
profiles: {
|
||||
trekking: "Wandern",
|
||||
bike: "Radfahren",
|
||||
fastbike: "Radfahren (schnell)",
|
||||
safety: "Radfahren (sicher)",
|
||||
shortest: "Kürzeste",
|
||||
car: "Auto",
|
||||
},
|
||||
elevation: {
|
||||
gain: "Höhenmeter aufwärts",
|
||||
|
|
@ -29,16 +43,25 @@ export default {
|
|||
journal: {
|
||||
title: "trails.cool",
|
||||
subtitle: "Dein Outdoor-Aktivitäten-Tagebuch",
|
||||
welcome: "Willkommen,",
|
||||
addPasskeyPrompt: "Füge einen Passkey hinzu, um dich schneller auf diesem Gerät anzumelden.",
|
||||
addPasskey: "Passkey hinzufügen",
|
||||
settingUp: "Wird eingerichtet...",
|
||||
passkeyAdded: "Passkey hinzugefügt! Du kannst dich jetzt sofort auf diesem Gerät anmelden.",
|
||||
routes: {
|
||||
title: "Routen",
|
||||
myRoutes: "Meine Routen",
|
||||
new: "Neue Route",
|
||||
edit: "Route bearbeiten",
|
||||
editInPlanner: "Im Planer bearbeiten",
|
||||
opening: "Öffne...",
|
||||
importGpx: "GPX importieren",
|
||||
exportGpx: "GPX exportieren",
|
||||
delete: "Route löschen",
|
||||
distance: "Strecke",
|
||||
elevationGain: "Höhenmeter",
|
||||
noRoutesYet: "Noch keine Routen. Erstelle deine erste Route!",
|
||||
saveChanges: "Änderungen speichern",
|
||||
},
|
||||
activities: {
|
||||
title: "Aktivitäten",
|
||||
|
|
@ -52,8 +75,20 @@ export default {
|
|||
register: "Registrieren",
|
||||
logout: "Abmelden",
|
||||
email: "E-Mail",
|
||||
password: "Passwort",
|
||||
username: "Benutzername",
|
||||
signInWithPasskey: "Mit Passkey anmelden",
|
||||
authenticating: "Authentifiziere...",
|
||||
useMagicLink: "Kein Passkey auf diesem Gerät? Nutze stattdessen einen Magic Link",
|
||||
magicLinkHelp: "Wir senden dir einen Anmeldelink per E-Mail.",
|
||||
sendMagicLink: "Magic Link senden",
|
||||
sending: "Wird gesendet...",
|
||||
backToPasskey: "Zurück zur Passkey-Anmeldung",
|
||||
checkEmail: "Prüfe deine E-Mails! Wir haben einen Anmeldelink gesendet an",
|
||||
linkExpires: "Der Link ist 15 Minuten gültig.",
|
||||
noAccount: "Noch kein Konto?",
|
||||
registerDescription: "Registriere dich mit einem Passkey — kein Passwort nötig.",
|
||||
registerWithPasskey: "Mit Passkey registrieren",
|
||||
creatingPasskey: "Erstelle Passkey...",
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ export default {
|
|||
close: "Close",
|
||||
loading: "Loading...",
|
||||
error: "Something went wrong",
|
||||
goHome: "Go home",
|
||||
pageNotFound: "Page not found",
|
||||
serviceUnavailable: "Service temporarily unavailable. Please try again later.",
|
||||
},
|
||||
planner: {
|
||||
title: "trails.cool Planner",
|
||||
|
|
@ -14,11 +17,22 @@ export default {
|
|||
newSession: "New Session",
|
||||
saveRoute: "Save Route",
|
||||
exportGpx: "Export GPX",
|
||||
profile: "Routing Profile",
|
||||
profile: "Profile",
|
||||
connecting: "Connecting...",
|
||||
loadingMap: "Loading map...",
|
||||
computingRoute: "Computing route...",
|
||||
host: "Host",
|
||||
connected: "Connected",
|
||||
saveToJournal: "Save to Journal",
|
||||
saving: "Saving...",
|
||||
saved: "Saved!",
|
||||
returnToJournal: "Return to Journal",
|
||||
profiles: {
|
||||
trekking: "Hiking",
|
||||
bike: "Cycling",
|
||||
fastbike: "Cycling (fast)",
|
||||
safety: "Cycling (safe)",
|
||||
shortest: "Shortest",
|
||||
car: "Car",
|
||||
},
|
||||
elevation: {
|
||||
gain: "Elevation Gain",
|
||||
|
|
@ -29,16 +43,25 @@ export default {
|
|||
journal: {
|
||||
title: "trails.cool",
|
||||
subtitle: "Your outdoor activity journal",
|
||||
welcome: "Welcome,",
|
||||
addPasskeyPrompt: "Add a passkey for faster sign-in on this device.",
|
||||
addPasskey: "Add Passkey",
|
||||
settingUp: "Setting up...",
|
||||
passkeyAdded: "Passkey added! You can now sign in instantly on this device.",
|
||||
routes: {
|
||||
title: "Routes",
|
||||
myRoutes: "My Routes",
|
||||
new: "New Route",
|
||||
edit: "Edit Route",
|
||||
editInPlanner: "Edit in Planner",
|
||||
opening: "Opening...",
|
||||
importGpx: "Import GPX",
|
||||
exportGpx: "Export GPX",
|
||||
delete: "Delete Route",
|
||||
distance: "Distance",
|
||||
elevationGain: "Elevation Gain",
|
||||
noRoutesYet: "No routes yet. Create your first route!",
|
||||
saveChanges: "Save Changes",
|
||||
},
|
||||
activities: {
|
||||
title: "Activities",
|
||||
|
|
@ -48,12 +71,24 @@ export default {
|
|||
createRouteFromActivity: "Create Route from Activity",
|
||||
},
|
||||
auth: {
|
||||
login: "Log In",
|
||||
register: "Sign Up",
|
||||
login: "Sign In",
|
||||
register: "Register",
|
||||
logout: "Log Out",
|
||||
email: "Email",
|
||||
password: "Password",
|
||||
username: "Username",
|
||||
signInWithPasskey: "Sign in with Passkey",
|
||||
authenticating: "Authenticating...",
|
||||
useMagicLink: "No passkey on this device? Use a magic link instead",
|
||||
magicLinkHelp: "We'll send a login link to your email.",
|
||||
sendMagicLink: "Send Magic Link",
|
||||
sending: "Sending...",
|
||||
backToPasskey: "Back to passkey login",
|
||||
checkEmail: "Check your email! We sent a login link to",
|
||||
linkExpires: "The link expires in 15 minutes.",
|
||||
noAccount: "Don't have an account?",
|
||||
registerDescription: "Register with a passkey — no password needed.",
|
||||
registerWithPasskey: "Register with Passkey",
|
||||
creatingPasskey: "Creating passkey...",
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue