{
  "@@locale": "en",
  "@@context": "Together Ledger: a private shared journey for two or more people. English is the source language. Notes for translators are the @ entries; docs/TRANSLATION.md and locales/glossary.json explain the careful words.",
  "common.journeySettings.title": "Journey settings",
  "@common.journeySettings.title": {
    "description": "The name of the settings for one journey, shown as the title of that panel on the web and as a heading on the phone. A journey is the shared space two or more people keep together; see the glossary."
  },
  "common.appearance.title": "Appearance",
  "@common.appearance.title": {
    "description": "Heading over the theme choice, in settings on the web and on the phone."
  },
  "common.theme.label": "Theme",
  "@common.theme.label": {
    "description": "Label of the menu that picks a colour theme (Light, Dark, Green, Flexoki) for this person's own screen."
  },
  "common.theme.note": "Your theme changes only your own view. Each journeyer chooses what feels right on their screen.",
  "@common.theme.note": {
    "description": "Under the theme menu. Reassures that a theme is personal: changing it never changes what the other people in the journey see. 'Journeyer' is one of the people sharing a journey; see the glossary."
  },
  "common.language.title": "Language",
  "@common.language.title": {
    "description": "Heading over the menu that chooses the language this person reads the app in, on the web and on the phone, and the spoken name of the small language menu at the top of the web's welcome page. It stays this word in every language, so someone who chose a language by mistake can find the way back."
  },
  "common.language.followDevice": "Follow my device",
  "@common.language.followDevice": {
    "description": "The first choice in the Language menu: no language chosen by hand, so the app reads in the first of the phone's or browser's own languages it offers, and keeps following them if they change. The other choices are each language's own name in its own script, which are never translated."
  },
  "common.language.note": "Your language changes only your own view. Names, journeys and moments stay as each journeyer wrote them.",
  "@common.language.note": {
    "description": "Under the Language menu. Reassures that choosing a language never translates or changes what people wrote, and never changes what the other people in the journey read. 'Journeyer' is one of the people sharing a journey; see the glossary."
  },
  "common.action.edit": "Edit",
  "@common.action.edit": {
    "description": "Button that opens something to change it. A short verb."
  },
  "common.action.delete": "Delete",
  "@common.action.delete": {
    "description": "Button that deletes something. A confirmation always follows, so this is the first step, not the final one."
  },
  "common.time.notRecorded": "Time not recorded",
  "@common.time.notRecorded": {
    "description": "Shown in place of a date and time when none was saved."
  },
  "settings.dialog.close": "Close settings",
  "@settings.dialog.close": {
    "description": "Spoken label of the × button that closes the journey settings panel on the web. Read by screen readers only."
  },
  "settings.storage.browserOnly": "Browser-only journeys stay on this device unless you download a backup.",
  "@settings.storage.browserOnly": {
    "description": "Under the settings title on the web, when the person is not signed in and the journey lives only in this browser."
  },
  "settings.storage.signedIn": "This signed-in journey is loaded from the private service. Sign out to return to your browser-only journey.",
  "@settings.storage.signedIn": {
    "description": "Under the settings title on the web, when the person is signed in and the journey comes from their account."
  },
  "settings.theme.menuLabel": "Settings color theme",
  "@settings.theme.menuLabel": {
    "description": "Spoken label of the theme menu inside settings on the web, so screen readers can tell it from the identical menu in the page header. Read by screen readers only."
  },
  "settings.backup.title": "Backup and restore",
  "@settings.backup.title": {
    "description": "Heading of the settings section that downloads all of this browser's journeys to a file and brings a file back."
  },
  "settings.backup.privacy": "Exports include every local journey, moment, practical detail, and action milestone. Internal account IDs are replaced with aliases made for that file. The file still contains private journey content, so store it with care.",
  "@settings.backup.privacy": {
    "description": "What a backup file holds, and that it is private. 'Moment' is something two people hold in their journey; see the glossary."
  },
  "settings.backup.restoreBoundary": "Import replaces this browser’s current ledger only after the whole file passes validation. Export first if you need the current ledger.",
  "@settings.backup.restoreBoundary": {
    "description": "Warns that importing a file replaces what this browser holds, and only once the whole file checks out. 'Ledger' is everything this browser keeps."
  },
  "settings.backup.export": "Export all journeys",
  "@settings.backup.export": {
    "description": "Button that downloads a backup file of every journey in this browser."
  },
  "settings.backup.import": "Import and replace",
  "@settings.backup.import": {
    "description": "Button that picks a backup file and replaces this browser's journeys with it. Keep both halves: it imports, and it replaces."
  },
  "settings.backup.exported": "Private backup downloaded.",
  "@settings.backup.exported": {
    "description": "Brief message after the backup file has been downloaded."
  },
  "settings.backup.imported": "Ledger imported on this browser.",
  "@settings.backup.imported": {
    "description": "Brief message after a backup file has replaced this browser's journeys."
  },
  "settings.reset.title": "Start fresh",
  "@settings.reset.title": {
    "description": "Heading of the settings section that clears this browser's journeys. The button below it has the same English words but is an action; its key is settings.reset.action."
  },
  "settings.reset.note": "Reset clears this browser’s journeys and starts with an empty shared space. Export first if you need a backup.",
  "@settings.reset.note": {
    "description": "What starting fresh does, under its heading."
  },
  "settings.reset.action": "Start fresh",
  "@settings.reset.action": {
    "description": "Button that asks to clear this browser's journeys. A confirmation follows. Same English words as the heading settings.reset.title, but this is a verb on a button."
  },
  "settings.reset.confirmTitle": "Clear this browser’s ledger?",
  "@settings.reset.confirmTitle": {
    "description": "Title of the confirmation asked before clearing this browser's journeys. It cannot be undone."
  },
  "settings.reset.confirmConsequence": "This browser begins again with an empty shared space. Export first if you need a backup.",
  "@settings.reset.confirmConsequence": {
    "description": "What clearing does, in the confirmation."
  },
  "settings.reset.confirmAction": "Clear ledger",
  "@settings.reset.confirmAction": {
    "description": "The button in the confirmation that clears this browser's journeys. It cannot be undone."
  },
  "settings.reset.done": "This browser has a fresh shared space.",
  "@settings.reset.done": {
    "description": "Brief message after this browser's journeys were cleared."
  },
  "settings.privacy.title": "Privacy boundary",
  "@settings.privacy.title": {
    "description": "Heading of the settings section that says where journeys are kept."
  },
  "settings.privacy.note": "Browser-only journeys stay in this browser. Signed-in private journeys are loaded from the account service and removed from view on sign-out; signing in never uploads the browser ledger.",
  "@settings.privacy.note": {
    "description": "Where journeys live: in this browser, or in the person's account. Signing in never sends the browser's journeys anywhere."
  },
  "history.screen.name": "History",
  "@history.screen.name": {
    "description": "The name of the History screen on the phone, shown when it cannot open yet. History is the journey's record of every change, newest first."
  },
  "history.screen.title": "{journey} history",
  "@history.screen.title": {
    "description": "Title of the History screen on the phone: the journey's own name, then 'history'.",
    "placeholders": {
      "journey": { "type": "String", "example": "Home in Fall", "description": "The journey's name, written by the people in it, in any script." }
    }
  },
  "history.screen.lead": "Every change in this journey: who made it, and when. Nothing here can be quietly rewritten, and something deleted leaves only a short note that it was here.",
  "@history.screen.lead": {
    "description": "Introduction at the top of History: the record is kept by the server, each change is tied to the account that made it, and tampering is detectable. HMAC is a technical name; keep it as is. A tombstone is the small, private marker left where something was deleted."
  },
  "concern.screen.signedOut": "Sign in and open a journey to see its conversations.",
  "@concern.screen.signedOut": {
    "description": "On the return-to conversation screen when nobody is signed in or no journey is open."
  },
  "concern.screen.gone": "This conversation is no longer here. It may have been deleted on another device.",
  "@concern.screen.gone": {
    "description": "On the return-to conversation screen when the conversation was deleted, perhaps on another device."
  },
  "concern.history.heading": "This conversation's history",
  "@concern.history.heading": {
    "description": "Heading over a conversation's own recorded changes, on its screen."
  },
  "concern.history.empty": "No changes recorded for this conversation yet.",
  "@concern.history.empty": {
    "description": "Under that heading when nothing has been recorded for this conversation yet."
  },
  "history.screen.signedOut": "Sign in and open a journey to see its history.",
  "@history.screen.signedOut": {
    "description": "On the History screen when nobody is signed in."
  },
  "history.concerns.heading": "Return-to conversations",
  "@history.concerns.heading": {
    "description": "Heading over the return-to conversations: on the phone's History, and on the web's ledger, where they are the second section after the moments. A return-to conversation is something the journeyers want to come back to together."
  },
  "history.concerns.start": "Start a return-to conversation",
  "@history.concerns.start": {
    "description": "Button that starts a new conversation to come back to."
  },
  "history.concerns.empty": "Nothing to return to yet. Conversations you want to come back to together will appear here.",
  "@history.concerns.empty": {
    "description": "Shown when there are no conversations to return to."
  },
  "history.concern.status": "{status, select, open {Open} other {Resolved}}",
  "@history.concern.status": {
    "description": "Small label on a conversation to return to: still open, or resolved. Shown in capitals on the phone; on the web, the two choices of the Status menu when starting or changing one.",
    "placeholders": {
      "status": { "type": "String", "example": "open", "description": "open, or anything else for resolved. Translate only the words inside the braces." }
    }
  },
  "history.concern.updated": "Updated {time}",
  "@history.concern.updated": {
    "description": "When a conversation to return to last changed.",
    "placeholders": {
      "time": { "type": "String", "example": "Oct 12, 2026, 3:04 PM", "description": "The date and time, already written for the language." }
    }
  },
  "history.concern.deleted": "Conversation deleted. The history keeps a tombstone.",
  "@history.concern.deleted": {
    "description": "Brief message after a conversation to return to was deleted. The history keeps a small, private marker that it was there."
  },
  "history.events.heading": "Recorded changes",
  "@history.events.heading": {
    "description": "Heading over the journey's record of every change, newest first."
  },
  "history.events.empty": "No recorded changes yet. Changes appear here as they happen. Activity from before the Event Manager began cannot be reconstructed.",
  "@history.events.empty": {
    "description": "Shown when the record has no changes yet. The Event Manager is the name of the record-keeping that began on a certain date."
  },
  "history.event.heading": "#{sequence, number, ::group-off} · {summary}",
  "@history.event.heading": {
    "description": "One change in the record: its number in order, then what happened. Keep the number without thousands separators.",
    "placeholders": {
      "sequence": { "type": "int", "example": "12", "description": "Where this change comes in order, from 1." },
      "summary": { "type": "String", "example": "Added a moment", "description": "What happened, as the server recorded it." }
    }
  },
  "history.event.byline": "{actor} · {time}",
  "@history.event.byline": {
    "description": "Who made a change, and when.",
    "placeholders": {
      "actor": { "type": "String", "example": "Asha", "description": "The person's name, in any script, or 'Former journeyer'." },
      "time": { "type": "String", "example": "Oct 12, 2026, 3:04 PM", "description": "The date and time, already written for the language." }
    }
  },
  "history.event.change": "{before} → {after}",
  "@history.event.change": {
    "description": "One value that changed, from what it was to what it became. It follows the name of the value, which is shown in bold and not translated.",
    "placeholders": {
      "before": { "type": "String", "example": "$12.50", "description": "The old value." },
      "after": { "type": "String", "example": "$20.00", "description": "The new value." }
    }
  },
  "history.event.noChange": "No field-level value change was stored for this event.",
  "@history.event.noChange": {
    "description": "Shown inside an opened change that recorded no individual values."
  },
  "history.event.record": "Event ID {id} · Previous {hasPrevious, select, yes {{previous}} other {none}} · server-authoritative{hasHash, select, yes { · Hash {hash}…} other {}}",
  "@history.event.record": {
    "description": "The technical record of one change: its ID, the ID of the change before it (or none), that the server keeps it, and the start of its tamper-evident hash when there is one. IDs and the hash are machine text; keep them as they come.",
    "placeholders": {
      "id": { "type": "String", "example": "8c1f0e7a-…", "description": "This change's ID." },
      "hasPrevious": { "type": "String", "example": "yes", "description": "yes when there is a change before this one. Translate only the words inside the braces." },
      "previous": { "type": "String", "example": "77b2c9d4-…", "description": "The previous change's ID." },
      "hasHash": { "type": "String", "example": "yes", "description": "yes when the change has a hash. Translate only the words inside the braces." },
      "hash": { "type": "String", "example": "3f9a1c0b77de", "description": "The first twelve characters of the hash." }
    }
  },
  "common.historyGuide.title": "How to read your history",
  "@common.historyGuide.title": {
    "description": "The guide that explains a journey's history in plain words: the button that opens it, and its title. The same words on the web and the phone."
  },
  "common.action.working": "Working…",
  "@common.action.working": {
    "description": "Shown on a button while what it started is still happening."
  },
  "common.dialog.keep": "Keep things as they are",
  "@common.dialog.keep": {
    "description": "The way out of a question asked before something happens: the button that changes nothing. It is reached first, before the button that acts."
  },
  "common.dialog.eyebrow": "Before this happens",
  "@common.dialog.eyebrow": {
    "description": "Small heading over a question asked before something that matters, such as deleting or sharing."
  },
  "common.account.fallbackError": "The account service could not complete that request.",
  "@common.account.fallbackError": {
    "description": "When signing in, creating an account or another account action failed with no reason that can be shown, including when Google or Apple did not complete a sign-in."
  },
  "common.account.registered": "Account created. Check your email to verify it.",
  "@common.account.registered": {
    "description": "After an account is created, when the verification email was sent."
  },
  "common.account.registeredEmailDelayed": "Account created, but email is delayed. Use resend verification shortly.",
  "@common.account.registeredEmailDelayed": {
    "description": "After an account is created, when the verification email could not be sent yet."
  },
  "common.account.verificationResent": "A new verification link is on its way.",
  "@common.account.verificationResent": {
    "description": "After asking for the verification email again."
  },
  "common.account.verificationDelayed": "Email delivery is still unavailable. Please try again later.",
  "@common.account.verificationDelayed": {
    "description": "When the verification email still cannot be sent."
  },
  "common.account.verified": "Email verified. You can now accept invitations.",
  "@common.account.verified": {
    "description": "After the email address is confirmed from its link."
  },
  "common.account.recoverySent": "If that account exists, a recovery link is on its way.",
  "@common.account.recoverySent": {
    "description": "After asking for a link to set a new password. It never says whether the account exists."
  },
  "common.account.passwordChanged": "Password changed. Sign in again on every device.",
  "@common.account.passwordChanged": {
    "description": "After a new password is set from a recovery link."
  },
  "common.account.passwordsDiffer": "The new passwords do not match.",
  "@common.account.passwordsDiffer": {
    "description": "When the new password and its confirmation are different."
  },
  "common.account.signedOut": "Signed out.",
  "@common.account.signedOut": {
    "description": "After signing out on this device."
  },
  "common.account.signedOutEverywhere": "Signed out on every device, this one included. Sign in again to continue.",
  "@common.account.signedOutEverywhere": {
    "description": "After signing out on every device at once."
  },
  "common.account.signedOutHere": "This device was signed out. This can happen when the password is changed, when Sign out everywhere is used, or when a sign-in runs out. Sign in again to continue.",
  "@common.account.signedOutHere": {
    "description": "When the service signed this device out. \"Sign out everywhere\" is the name of a button (common.account.signOutEverywhere); keep it the same words."
  },
  "common.account.passwordChangedHere": "Password changed. Every other device was signed out, and this one stays signed in.",
  "@common.account.passwordChangedHere": {
    "description": "After changing the password while signed in."
  },
  "common.account.deleted": "Account deleted and sessions revoked.",
  "@common.account.deleted": {
    "description": "After the account is deleted."
  },
  "common.status.loading": "Loading…",
  "@common.status.loading": {
    "description": "Shown while a screen is loading, and on the website in place of a journey's name until it has been read."
  },
  "common.welcome.eyebrow": "A shared journey, held with care",
  "@common.welcome.eyebrow": {
    "description": "Small line over the welcome headline, the first words people read."
  },
  "common.welcome.headline": "Keep what matters, {together}",
  "@common.welcome.headline": {
    "description": "The welcome headline. {together} is the end of the sentence (common.welcome.headlineTogether), set in italics; keep it where it belongs in your sentence.",
    "placeholders": {
      "together": { "type": "String", "example": "together.", "description": "common.welcome.headlineTogether, drawn in italics." }
    }
  },
  "common.welcome.headlineTogether": "together.",
  "@common.welcome.headlineTogether": {
    "description": "The italic end of the welcome headline (common.welcome.headline), with its full stop."
  },
  "common.welcome.lead": "A private place for two people to hold the moments, plans, and memories they want to come back to—without the noise of a feed.",
  "@common.welcome.lead": {
    "description": "Under the welcome headline: what the product is."
  },
  "common.action.notNow": "Not now",
  "@common.action.notNow": {
    "description": "Button that puts a choice off without answering it: an invitation, or connecting a Google or Apple sign-in to an account."
  },
  "common.account.settings": "Account settings",
  "@common.account.settings": {
    "description": "Name of the panel for a person’s own account (their name, email, password, signing out), and of the button that opens it."
  },
  "common.account.delete": "Delete account",
  "@common.account.delete": {
    "description": "The row in Settings that opens the screen that deletes the account. Nothing is deleted until that screen asks again."
  },
  "common.theme.groupLabel": "Color theme",
  "@common.theme.groupLabel": {
    "description": "What a screen reader calls the list of themes."
  },
  "common.theme.name.light": "Light",
  "@common.theme.name.light": {
    "description": "Name of the light theme, in the theme choices on the web and the phone and on a moment's own theme."
  },
  "common.theme.name.dark": "Dark",
  "@common.theme.name.dark": {
    "description": "Name of the dark theme."
  },
  "common.theme.name.green": "Green",
  "@common.theme.name.green": {
    "description": "Name of the dark green theme."
  },
  "common.theme.name.flexoki": "Flexoki",
  "@common.theme.name.flexoki": {
    "description": "Name of a warm paper-coloured theme. Flexoki is a proper name and is not translated, unless your language writes it in its own script."
  },
  "common.account.passwordsPrivate": "Passwords are never shared between journeyers.",
  "@common.account.passwordsPrivate": {
    "description": "Under the title of sign-in and Account settings. A journeyer is one of the people sharing a journey; see the glossary."
  },
  "common.account.nameLabel": "Name journeyers see",
  "@common.account.nameLabel": {
    "description": "Label of the field for the name the other people in a journey see. A journeyer is one of the people sharing a journey; see the glossary."
  },
  "common.account.saveName": "Save name",
  "@common.account.saveName": {
    "description": "Button that saves the name."
  },
  "common.account.nameSaved": "Name saved. Your journeyers see it now.",
  "@common.account.nameSaved": {
    "description": "After the name is saved."
  },
  "common.account.resendVerification": "Resend verification email",
  "@common.account.resendVerification": {
    "description": "Button that sends the email with the verification link again."
  },
  "common.action.sending": "Sending…",
  "@common.action.sending": {
    "description": "Shown on a button while an email (a recovery link, an invitation) is being sent."
  },
  "common.account.signOut": "Sign out",
  "@common.account.signOut": {
    "description": "Button that signs out on this phone."
  },
  "common.account.signOutEverywhere": "Sign out everywhere",
  "@common.account.signOutEverywhere": {
    "description": "Button that signs out on every device at once, this one included. A question is asked first."
  },
  "common.account.signingOut": "Signing out…",
  "@common.account.signingOut": {
    "description": "What Sign out everywhere says while it works."
  },
  "common.account.changePassword": "Change password",
  "@common.account.changePassword": {
    "description": "Button on Account settings that opens the screen that changes the password."
  },
  "common.account.signInTitle": "Sign in",
  "@common.account.signInTitle": {
    "description": "Title of the sign-in screen, and the heading of the website's sign-in form. The button that signs in has the same English words: common.account.signIn."
  },
  "common.account.identifier": "Email or username",
  "@common.account.identifier": {
    "description": "Label of the sign-in field that takes either the email or the username."
  },
  "common.password.hide": "Hide password",
  "@common.password.hide": {
    "description": "Accessible name for the button that hides the typed password again."
  },
  "common.password.show": "Show password",
  "@common.password.show": {
    "description": "Accessible name for the button that makes the typed password visible."
  },
  "common.account.password": "Password",
  "@common.account.password": {
    "description": "Label of the password field, on sign-in and on creating an account."
  },
  "common.account.currentPassword": "Current password",
  "@common.account.currentPassword": {
    "description": "Label of the field asking for the password in use now"
  },
  "common.account.newPassword": "New password",
  "@common.account.newPassword": {
    "description": "Label of the field for the password being set"
  },
  "common.account.confirmNewPassword": "Confirm new password",
  "@common.account.confirmNewPassword": {
    "description": "Label of the field that repeats the new password"
  },
  "common.account.signIn": "Sign in",
  "@common.account.signIn": {
    "description": "Button that signs in, and the website's header button that opens sign-in. A verb; the screen's title is common.account.signInTitle."
  },
  "common.account.signingIn": "Signing in…",
  "@common.account.signingIn": {
    "description": "What Sign in says while it works."
  },
  "common.account.forgotPassword": "I forgot my password",
  "@common.account.forgotPassword": {
    "description": "Button that opens the screen that sends a link to set a new password."
  },
  "common.account.createAccount": "Create account",
  "@common.account.createAccount": {
    "description": "Button on sign-in that opens the screen that creates an account. A verb phrase; that screen's title is common.screen.register.title."
  },
  "common.account.newAccountName": "A new account starts with your first name. You can change it in Account settings.",
  "@common.account.newAccountName": {
    "description": "Under the Continue with Google and Apple buttons. \"Account settings\" is the name of a screen (mobile.screen.account.title); keep it the same words."
  },
  "common.account.appleNoEmail": "Apple didn’t share an email address.",
  "@common.account.appleNoEmail": {
    "description": "In place of the email of an account opened with Apple's Hide My Email turned off."
  },
  "common.register.username": "Choose a username",
  "@common.register.username": {
    "description": "Label of the username field when creating an account."
  },
  "common.register.usernameHint": "3–30 lowercase letters, numbers, or single hyphens. It is for signing in and is not shown to your journeyer. You can choose the names used together when a journey calls for them.",
  "@common.register.usernameHint": {
    "description": "Under the username field. A journeyer is one of the people sharing a journey; see the glossary. A username is written in Latin letters only, whatever the language."
  },
  "common.register.email": "Email",
  "@common.register.email": {
    "description": "Label of the email field when creating an account."
  },
  "common.register.passwordHint": "Use at least 12 characters. We send a verification link before invitations can be accepted.",
  "@common.register.passwordHint": {
    "description": "Under the password field when creating an account."
  },
  "common.register.submit": "Create secure account",
  "@common.register.submit": {
    "description": "Button that creates the account."
  },
  "common.register.creating": "Creating account…",
  "@common.register.creating": {
    "description": "What the create button says while it works."
  },
  "common.signIn.connect": "Connect and sign in",
  "@common.signIn.connect": {
    "description": "Button that connects the Google or Apple sign-in to the account and signs in."
  },
  "common.signIn.connecting": "Connecting…",
  "@common.signIn.connecting": {
    "description": "What the connect button says while it works."
  },
  "common.signIn.providers": "Continue with Google or Apple",
  "@common.signIn.providers": {
    "description": "What a screen reader calls the group of Google and Apple buttons."
  },
  "common.signIn.or": "or",
  "@common.signIn.or": {
    "description": "A single word between the Google and Apple buttons and the email sign-in below them."
  },
  "common.signIn.thisEmail": "this email",
  "@common.signIn.thisEmail": {
    "description": "Stands in for an email address the service did not give, inside \"Password for {email}\"."
  },
  "common.signOutEverywhere.consequence": "Every device signed in to this account, this one included, will need to sign in again. Nothing in your journeys is deleted.",
  "@common.signOutEverywhere.consequence": {
    "description": "What signing out everywhere does, asked before it happens."
  },
  "common.signOutEverywhere.title": "Sign out everywhere?",
  "@common.signOutEverywhere.title": {
    "description": "Question asked before signing out on every device."
  },
  "common.ledger.title": "Our ledger",
  "@common.ledger.title": {
    "description": "Title of the ledger while it has no journey to show. A ledger is everything a journey keeps."
  },
  "common.action.shareNow": "Share now",
  "@common.action.shareNow": {
    "description": "Button on a moment kept to share later, that shares it now. A question is asked first."
  },
  "common.ledger.yourSpace": "Your shared space",
  "@common.ledger.yourSpace": {
    "description": "Small line over the open journey's name."
  },
  "common.ledger.newJourney": "＋ New journey",
  "@common.ledger.newJourney": {
    "description": "Button that starts a new journey. The ＋ stays."
  },
  "common.ledger.eyebrow": "Our shared journey",
  "@common.ledger.eyebrow": {
    "description": "Small line over the list of moments, and on the website over the form that holds a moment."
  },
  "common.ledger.lead": "Hold what happened in words that feel true.",
  "@common.ledger.lead": {
    "description": "Under the heading of the list of moments."
  },
  "common.ledger.emptyTitle": "No moments here yet",
  "@common.ledger.emptyTitle": {
    "description": "Where moments would be listed, when the journey has none."
  },
  "common.ledger.emptyBody": "A small truth is enough to begin.",
  "@common.ledger.emptyBody": {
    "description": "Under No moments here yet."
  },
  "common.threads.eyebrow": "What wants care",
  "@common.threads.eyebrow": {
    "description": "Small line over the list of conversations to return to."
  },
  "common.threads.lead": "A place to hold something you want to come back to together.",
  "@common.threads.lead": {
    "description": "Under Return-to conversations in the ledger."
  },
  "common.threads.emptyTitle": "No open threads",
  "@common.threads.emptyTitle": {
    "description": "When there is no open conversation to return to."
  },
  "common.threads.emptyBody": "That can be a good place to rest.",
  "@common.threads.emptyBody": {
    "description": "Under No open threads."
  },
  "common.start.eyebrow": "A place to begin",
  "@common.start.eyebrow": {
    "description": "Small line on the ledger before there is any journey."
  },
  "common.start.title": "What can live here?",
  "@common.start.title": {
    "description": "Heading on the ledger before there is any journey."
  },
  "common.start.lead": "A ledger can hold the things you want to remember, name, or return to. It begins empty.",
  "@common.start.lead": {
    "description": "Under What can live here?"
  },
  "common.start.kinds": "There are no examples here—only possibilities:",
  "@common.start.kinds": {
    "description": "Over the list of the kinds of moment a ledger can hold."
  },
  "common.start.accountReady": "Account ready. Create your first private journey.",
  "@common.start.accountReady": {
    "description": "On the ledger, signed in with no journey yet; on the website, the message after signing in to such an account."
  },
  "common.visibility.private": "Private",
  "@common.visibility.private": {
    "description": "Who can see a moment: only the person who held it. Shown on the moment and as a choice when holding one."
  },
  "common.visibility.shareLater": "Share later",
  "@common.visibility.shareLater": {
    "description": "Who can see a moment: only its holder for now, until they choose to share it."
  },
  "common.visibility.sharedNow": "Shared now",
  "@common.visibility.sharedNow": {
    "description": "Who can see a moment: everyone in the journey, including anyone who joins later."
  },
  "common.moment.sharedNote": "A shared note",
  "@common.moment.sharedNote": {
    "description": "The kind of a moment whose own kind was left blank."
  },
  "common.moment.kindFallback": "Moment",
  "@common.moment.kindFallback": {
    "description": "The kind of a moment whose kind is not known."
  },
  "common.journey.beganUnknown": "Began at an unknown time",
  "@common.journey.beganUnknown": {
    "description": "Under a journey's name, when its start is not known."
  },
  "common.journey.began": "Began {date}",
  "@common.journey.began": {
    "description": "Under a journey's name: when it began.",
    "placeholders": {
      "date": { "type": "String", "example": "Oct 12", "description": "The day it began." }
    }
  },
  "common.journey.noEnd": "No end date planned",
  "@common.journey.noEnd": {
    "description": "Under a journey's name, when it has no end."
  },
  "common.journey.endUnsure": "Ending not decided yet",
  "common.date.notSet": "Date not set",
  "@common.date.notSet": {
    "description": "In place of a moment's date when it has none. Short: it sits beside the moment's kind."
  },
  "@common.journey.endUnsure": {
    "description": "Under a journey's name, when its end is not decided."
  },
  "common.journey.ends": "Ends {date}",
  "@common.journey.ends": {
    "description": "Under a journey's name: when it ends.",
    "placeholders": {
      "date": { "type": "String", "example": "Dec 20", "description": "The day it ends." }
    }
  },
  "common.ledger.seeAll": "{count, plural, one {See all {count, number, ::group-off} moment} other {See all {count, number, ::group-off} moments}}",
  "@common.ledger.seeAll": {
    "description": "Button that shows every moment, not only the most recent.",
    "placeholders": {
      "count": { "type": "int", "example": "7", "description": "How many moments the journey holds." }
    }
  },
  "common.moment.moneyContext": "{amount} is held here as context, not a score.",
  "@common.moment.moneyContext": {
    "description": "An amount of money held with a moment, which is never added up or compared.",
    "placeholders": {
      "amount": { "type": "String", "example": "$12.50", "description": "The amount with its currency." }
    }
  },
  "common.momentKind.promise": "Promise",
  "@common.momentKind.promise": {
    "description": "A kind of moment: something promised. One of the suggestions in the Kind of moment menu, and the label on a moment."
  },
  "common.momentKind.acknowledgment": "Acknowledgment",
  "@common.momentKind.acknowledgment": {
    "description": "A kind of moment: something one person recognised in the other."
  },
  "common.momentKind.trigger": "Trigger",
  "@common.momentKind.trigger": {
    "description": "A kind of moment: something that set off a strong reaction. Gentle, not clinical."
  },
  "common.momentKind.missedChance": "Missed chance",
  "@common.momentKind.missedChance": {
    "description": "A kind of moment: a moment that passed without being taken."
  },
  "common.momentKind.heartToHeart": "Heart-to-heart",
  "@common.momentKind.heartToHeart": {
    "description": "A kind of moment: an honest, close conversation."
  },
  "common.momentKind.memory": "Memory",
  "@common.momentKind.memory": {
    "description": "A kind of moment: something to remember."
  },
  "common.momentKind.feeling": "Feeling",
  "@common.momentKind.feeling": {
    "description": "A kind of moment: a feeling named."
  },
  "common.momentKind.boundary": "Boundary",
  "@common.momentKind.boundary": {
    "description": "A kind of moment: a limit someone asked to be kept."
  },
  "common.momentKind.repairRequest": "Repair request",
  "@common.momentKind.repairRequest": {
    "description": "A kind of moment: asking to make something right between the people."
  },
  "common.momentKind.learnedSomething": "Learned something",
  "@common.momentKind.learnedSomething": {
    "description": "A kind of moment: something one person learned."
  },
  "common.momentKind.callMe": "Call me",
  "@common.momentKind.callMe": {
    "description": "A kind of moment: asking the other person to call."
  },
  "common.momentKind.calledYou": "Called you",
  "@common.momentKind.calledYou": {
    "description": "A kind of moment: noting that one person called the other."
  },
  "common.momentKind.practicalMatter": "Practical matter",
  "@common.momentKind.practicalMatter": {
    "description": "A kind of moment: a practical detail, such as a booking or a cost."
  },
  "common.momentKind.other": "+ Add your own moment",
  "@common.momentKind.other": {
    "description": "A kind of moment, chosen when holding one and shown on its card. The last choice of kind, which lets the person name their own. The + stays."
  },
  "common.momentKind.sharedJoy": "Shared Joy",
  "@common.momentKind.sharedJoy": {
    "description": "A kind of moment: happiness the people felt together."
  },
  "common.momentKind.deepGratitude": "Deep Gratitude",
  "@common.momentKind.deepGratitude": {
    "description": "A kind of moment: being deeply thankful to the other person."
  },
  "common.momentKind.milestone": "Milestone",
  "@common.momentKind.milestone": {
    "description": "A kind of moment: a step the people reached together, like an anniversary or a first."
  },
  "common.momentKind.vulnerability": "Vulnerability",
  "@common.momentKind.vulnerability": {
    "description": "A kind of moment: letting the other person see something tender or exposed."
  },
  "common.momentKind.regret": "Regret",
  "@common.momentKind.regret": {
    "description": "A kind of moment: wishing something had gone differently."
  },
  "common.momentKind.apology": "Apology",
  "@common.momentKind.apology": {
    "description": "A kind of moment: saying sorry, or being told sorry."
  },
  "common.momentKind.misunderstanding": "Misunderstanding",
  "@common.momentKind.misunderstanding": {
    "description": "A kind of moment: the people understood something differently."
  },
  "common.momentKind.hurtFeelings": "Hurt feelings",
  "@common.momentKind.hurtFeelings": {
    "description": "A kind of moment: something that hurt. Names the feeling, never blames a person."
  },
  "common.momentKind.epiphany": "Epiphany",
  "@common.momentKind.epiphany": {
    "description": "A kind of moment: a sudden understanding."
  },
  "common.momentKind.shiftInPerspective": "Shift in perspective",
  "@common.momentKind.shiftInPerspective": {
    "description": "A kind of moment: starting to see something another way."
  },
  "common.momentKind.lingeringThought": "Lingering thought",
  "@common.momentKind.lingeringThought": {
    "description": "A kind of moment: a thought that stayed afterwards."
  },
  "common.momentKind.unspokenWords": "Unspoken words",
  "@common.momentKind.unspokenWords": {
    "description": "A kind of moment: something not yet said."
  },
  "common.momentKind.quickCheckIn": "Quick check-in",
  "@common.momentKind.quickCheckIn": {
    "description": "A kind of moment: a short \"how are you\" between the people."
  },
  "common.momentKind.needSupport": "Need support",
  "@common.momentKind.needSupport": {
    "description": "A kind of moment: asking the other person to be there. Not an emergency call; the product is not monitored."
  },
  "common.momentKind.favor": "Favor",
  "@common.momentKind.favor": {
    "description": "A kind of moment: a small kindness asked for or done."
  },
  "common.momentCategory.connection": "Connection",
  "@common.momentCategory.connection": {
    "description": "A category of moment kinds in the moment form: closeness, memories and feelings. Shown as a button above the kinds it holds."
  },
  "common.momentCategory.friction": "Friction",
  "@common.momentCategory.friction": {
    "description": "A category of moment kinds in the moment form: tension, hurt and repair. Shown as a button above the kinds it holds. Describes moments, never a person or the relationship."
  },
  "common.momentCategory.reflection": "Reflection",
  "@common.momentCategory.reflection": {
    "description": "A category of moment kinds in the moment form: things noticed or understood. Shown as a button above the kinds it holds."
  },
  "common.momentCategory.touchpoints": "Touchpoints",
  "@common.momentCategory.touchpoints": {
    "description": "A category of moment kinds in the moment form: everyday contact and practical matters. Shown as a button above the kinds it holds."
  },
  "moment.form.kindCategories": "Categories of moment",
  "@moment.form.kindCategories": {
    "description": "Read aloud by screen readers for the row of category buttons above the kinds of moment."
  },
  "moment.form.yourOwnKind": "+ Your own",
  "@moment.form.yourOwnKind": {
    "description": "The last choice in every category of the moment form's kinds, which lets the person name their own kind of moment. The + stays."
  },
  "common.moment.visibilitySpoken": "Visibility: {visibility}",
  "@common.moment.visibilitySpoken": {
    "description": "What a screen reader says for a moment's visibility mark.",
    "placeholders": {
      "visibility": { "type": "String", "example": "Shared now", "description": "Private, Share later or Shared now (common.visibility.*)." }
    }
  },
  "common.moment.removedPhoto": "Removed photo",
  "@common.moment.removedPhoto": {
    "description": "Opens the list of photos removed from a moment; on the website, also the small label on each of them, kept only for the record."
  },
  "common.moment.image": "Image",
  "@common.moment.image": {
    "description": "Stands in for a photo's file name when it has none."
  },
  "common.moment.money": "Practical money context",
  "@common.moment.money": {
    "description": "An amount of money a moment can hold: the title of the fold that opens it on a moment, and on the website the label of that optional field. Money is context here, never a score."
  },
  "common.moment.heldBy": "Held by {name}",
  "@common.moment.heldBy": {
    "description": "Under a moment: who held it.",
    "placeholders": {
      "name": { "type": "String", "example": "Asha", "description": "A person's name as they chose it, in any script." }
    }
  },
  "common.person.journeyMember": "Journey member",
  "@common.person.journeyMember": {
    "description": "Stands in for a person’s name when the name could not be read. A journeyer is one of the people sharing a journey; see the glossary."
  },
  "common.moment.shapedByMany": "Shaped by more than one journeyer",
  "@common.moment.shapedByMany": {
    "description": "Badge on a moment more than one person has changed. A journeyer is one of the people sharing a journey; see the glossary."
  },
  "common.moment.photo": "Photo",
  "@common.moment.photo": {
    "description": "Small label over a photo's file name on a moment, and on the website the label of the photo picker."
  },
  "common.moment.editTitle": "Edit this moment",
  "@common.moment.editTitle": {
    "description": "Title of the form that changes a moment."
  },
  "common.moment.previewTitle": "A moment worth holding",
  "@common.moment.previewTitle": {
    "description": "Stands in for the moment's name in the live preview, until one is typed."
  },
  "common.moment.previewDetail": "The theme stays with this card. The page around it stays yours.",
  "@common.moment.previewDetail": {
    "description": "Stands in for what is held in the live preview, until something is typed."
  },
  "common.moment.lead": "Choose whether this stays with you, is shared now, or waits until you are ready.",
  "@common.moment.lead": {
    "description": "Under the title of the moment form."
  },
  "common.moment.kind": "Kind of moment",
  "@common.moment.kind": {
    "description": "Heading over the kinds of moment to choose from, and what a screen reader calls that list."
  },
  "common.moment.kindNameExample": "e.g. A small win",
  "@common.moment.kindNameExample": {
    "description": "Example inside the empty field for a kind of moment of one's own."
  },
  "common.moment.when": "When",
  "@common.moment.when": {
    "description": "Label of the date field: the day the moment happened."
  },
  "common.moment.addTime": "Add a time",
  "@common.moment.addTime": { "description": "Button under the date that shows the time and time zone fields." },
  "common.moment.time": "Time",
  "@common.moment.time": { "description": "Label of the optional time field." },
  "common.moment.timeHint": "As the clock read where it happened.",
  "@common.moment.timeHint": { "description": "Hint under the time field: the time is the local clock where the moment happened, never converted." },
  "common.moment.timeZone": "Time zone",
  "@common.moment.timeZone": { "description": "Label of the time zone choice." },
  "common.moment.thisDeviceZone": "This device’s zone · {zone}",
  "@common.moment.thisDeviceZone": { "description": "The first time zone choice: the zone this phone or browser is set to. {zone} is a time zone name such as Asia/Kolkata." },
  "common.moment.moreZones": "More time zones…",
  "@common.moment.moreZones": { "description": "Last choice in the short time zone list; choosing it shows every time zone." },
  "common.moment.removeTime": "Remove the time",
  "@common.moment.removeTime": { "description": "Button that takes the time off this moment." },
  "common.moment.name": "A short name",
  "@common.moment.name": {
    "description": "Label of the field for the moment's name."
  },
  "common.moment.nameExample": "e.g. A quiet apology after dinner",
  "@common.moment.nameExample": {
    "description": "Example inside the empty name field."
  },
  "common.moment.detailExample": "Use your own words. Keep it simple and kind.",
  "@common.moment.detailExample": {
    "description": "Inside the empty field for what happened."
  },
  "common.moment.themeHelp": "Use your theme, or choose one calm card treatment that every journeyer will see.",
  "@common.moment.themeHelp": {
    "description": "Under Moment theme. A journeyer is one of the people sharing a journey; see the glossary."
  },
  "common.moment.useMyTheme": "Use my theme",
  "@common.moment.useMyTheme": {
    "description": "The moment theme choice that draws the moment in each person's own theme."
  },
  "common.moment.place": "Enter a place",
  "@common.moment.place": {
    "description": "Label of the field for a place."
  },
  "common.moment.placeExample": "Enter a place in your own words",
  "@common.moment.placeExample": {
    "description": "Inside the empty place field."
  },
  "common.moment.addPlace": "Add place",
  "@common.moment.addPlace": {
    "description": "Button that adds the place typed."
  },
  "common.moment.removePlace": "Remove {place}",
  "@common.moment.removePlace": {
    "description": "What a screen reader says for the button that removes one place.",
    "placeholders": {
      "place": { "type": "String", "example": "Kolkata", "description": "The place, as typed." }
    }
  },
  "common.action.remove": "Remove",
  "@common.action.remove": {
    "description": "Button that takes one item (a place on a moment, a person from a journey) away. Never used for a person leaving on their own."
  },
  "common.moment.visibility": "Visibility",
  "@common.moment.visibility": {
    "description": "Heading over the choice of who sees a moment, and what a screen reader calls that choice."
  },
  "common.moment.visibilityLocked": "Already shared: everyone in this journey can see this moment, including anyone who joins later. Prior access cannot be undone.",
  "@common.moment.visibilityLocked": {
    "description": "Under Visibility, for a moment already shared, which can't be made private again."
  },
  "common.moment.visibilityHelp": "Private stays with you. Shared now opens it to everyone in this journey, including anyone who joins later. Share later stays with you until you deliberately share it.",
  "@common.moment.visibilityHelp": {
    "description": "Under Visibility. Private, Shared now and Share later are the names of the three choices (common.visibility.*); keep them the same words."
  },
  "common.moment.amount": "Amount (optional)",
  "@common.moment.amount": {
    "description": "Label of the amount field; on the website it is written inside the empty field."
  },
  "common.currency.none": "No currency",
  "@common.currency.none": {
    "description": "A choice of currency for a moment's amount. The currency choice for no currency at all."
  },
  "common.currency.usd": "USD — US dollar",
  "@common.currency.usd": {
    "description": "A choice of currency for a moment's amount. Keep the code USD."
  },
  "common.currency.eur": "EUR — Euro",
  "@common.currency.eur": {
    "description": "A choice of currency for a moment's amount. Keep the code EUR."
  },
  "common.currency.gbp": "GBP — British pound",
  "@common.currency.gbp": {
    "description": "A choice of currency for a moment's amount. Keep the code GBP."
  },
  "common.currency.cad": "CAD — Canadian dollar",
  "@common.currency.cad": {
    "description": "A choice of currency for a moment's amount. Keep the code CAD."
  },
  "common.currency.aud": "AUD — Australian dollar",
  "@common.currency.aud": {
    "description": "A choice of currency for a moment's amount. Keep the code AUD."
  },
  "common.currency.jpy": "JPY — Japanese yen",
  "@common.currency.jpy": {
    "description": "A choice of currency for a moment's amount. Keep the code JPY."
  },
  "common.currency.inr": "INR — Indian rupee",
  "@common.currency.inr": {
    "description": "A choice of currency for a moment's amount. Keep the code INR."
  },
  "common.moment.livePreview": "Live preview",
  "@common.moment.livePreview": {
    "description": "Heading over the card that shows the moment as it will look."
  },
  "common.moment.previewHelp": "{theme} · exactly as this moment will appear in the ledger.",
  "@common.moment.previewHelp": {
    "description": "Under Live preview.",
    "placeholders": {
      "theme": { "type": "String", "example": "Use my theme", "description": "The moment theme chosen." }
    }
  },
  "common.moment.save": "Save moment",
  "@common.moment.save": {
    "description": "Button that saves the changes to a moment."
  },
  "common.moment.hold": "Hold this moment",
  "@common.moment.hold": {
    "description": "Button that holds a new moment."
  },
  "common.action.cancel": "Cancel",
  "@common.action.cancel": {
    "description": "Button that closes a dialog without saving or doing anything."
  },
  "common.moment.moneyProblem": "Enter a valid optional money context.",
  "@common.moment.moneyProblem": {
    "description": "When the amount is not a number from 0 to 1,000,000."
  },
  "common.moment.tooManyPlaces": "A moment can hold up to 12 places.",
  "@common.moment.tooManyPlaces": {
    "description": "When a thirteenth place is added."
  },
  "common.moment.updated": "Moment updated.",
  "@common.moment.updated": {
    "description": "Brief message after a moment is changed."
  },
  "common.moment.shared": "Moment shared.",
  "@common.moment.shared": {
    "description": "Brief message after a new moment is held and shared."
  },
  "common.moment.heldWithYou": "Moment held with you.",
  "@common.moment.heldWithYou": {
    "description": "Brief message after a new moment is held privately or to share later."
  },
  "common.moment.deleteSharedConsequence": "“{title}” will be removed for everyone in this journey. The journey’s history will still show that it was deleted, and who deleted it.",
  "@common.moment.deleteSharedConsequence": {
    "description": "Asked before deleting a shared moment. It cannot be undone.",
    "placeholders": {
      "title": { "type": "String", "example": "Tea on the porch", "description": "The moment's name, as written." }
    }
  },
  "common.moment.deletePrivateConsequence": "“{title}” will be removed. Only you could see it, so it leaves nothing behind that anyone else can see.",
  "@common.moment.deletePrivateConsequence": {
    "description": "Asked before deleting a moment only this person could see. It cannot be undone.",
    "placeholders": {
      "title": { "type": "String", "example": "Tea on the porch", "description": "The moment's name, as written." }
    }
  },
  "common.moment.shareTitle": "Share this moment now?",
  "@common.moment.shareTitle": {
    "description": "Question asked before sharing a moment."
  },
  "common.moment.shareConsequence": "Everyone in this journey will be able to see it, including anyone who joins later. That access cannot be undone.",
  "@common.moment.shareConsequence": {
    "description": "What sharing a moment does, asked before it happens."
  },
  "common.moment.shareAction": "Share this moment",
  "@common.moment.shareAction": {
    "description": "The button that shares the moment."
  },
  "common.moment.sharedWithJourneyer": "Moment shared with your journeyer.",
  "@common.moment.sharedWithJourneyer": {
    "description": "Brief message after a moment kept to share later is shared. A journeyer is one of the people sharing a journey; see the glossary."
  },
  "common.history.none": "none",
  "@common.history.none": {
    "description": "In a journey's history, in place of a value that was empty before or after a change: \"none → Dark\". Lower case, as it sits inside a line."
  },
  "common.person.formerJourneyer": "Former journeyer",
  "@common.person.formerJourneyer": {
    "description": "Stands in for the name of someone who is no longer in the journey. Nobody is “removed” in this product’s voice; see the glossary."
  },
  "common.concern.deleteTitle": "Delete this conversation to return to?",
  "@common.concern.deleteTitle": {
    "description": "Question asked before deleting a conversation to return to."
  },
  "common.concern.deleteConsequence": "“{title}” will be removed. The event history keeps a deletion tombstone, so the change stays attributable.",
  "@common.concern.deleteConsequence": {
    "description": "What deleting a conversation does, asked before it happens. A tombstone is the record that it was deleted, and by whom.",
    "placeholders": {
      "title": { "type": "String", "example": "Money for the trip", "description": "The conversation's title, as written." }
    }
  },
  "common.concern.deleteAction": "Delete conversation",
  "@common.concern.deleteAction": {
    "description": "The button that deletes the conversation. It cannot be undone."
  },
  "error.server.authenticationRequired": "Sign in to continue.",
  "@error.server.authenticationRequired": {
    "description": "The action needs the person to be signed in."
  },
  "error.server.rateLimitExceeded": "Too many requests. Wait and try again.",
  "@error.server.rateLimitExceeded": {
    "description": "The service is refusing for a while because too much was asked of it too fast."
  },
  "error.server.accountExists": "That email or username is already in use.",
  "@error.server.accountExists": {
    "description": "Creating an account with an email or username another account has."
  },
  "error.server.emailInUse": "An account already uses this email. Sign in the way you did before.",
  "@error.server.emailInUse": {
    "description": "Signing in with Google or Apple with an email another account uses."
  },
  "error.server.identityInUse": "That sign-in already belongs to another account.",
  "@error.server.identityInUse": {
    "description": "Connecting a Google or Apple sign-in that another account holds."
  },
  "error.signIn.invalidCredentials": "Username, email, or password is incorrect.",
  "@error.signIn.invalidCredentials": {
    "description": "Shown when signing in fails. It never says which one was wrong, on purpose."
  },
  "error.moment.conflict": "This moment changed on another device.",
  "@error.moment.conflict": {
    "description": "From the service, when saving a moment: someone changed it elsewhere since this form opened, so nothing was saved."
  },
  "mobile.account.checking": "Checking this phone’s account…",
  "@mobile.account.checking": {
    "description": "While the phone asks the service who is signed in."
  },
  "mobile.account.who": "{name} · {email}",
  "@mobile.account.who": {
    "description": "The person's name and email, on Account settings.",
    "placeholders": {
      "name": { "type": "String", "example": "Asha", "description": "A person's name as they chose it, in any script." },
      "email": { "type": "String", "example": "asha@example.com", "description": "The account's email, or words saying Apple shared none." }
    }
  },
  "mobile.account.emailVerified": "Email verified.",
  "@mobile.account.emailVerified": {
    "description": "On Account settings, when the email address is confirmed."
  },
  "mobile.account.emailNotVerified": "Email not verified yet. Invitations can be accepted once it is.",
  "@mobile.account.emailNotVerified": {
    "description": "On Account settings, when the email address is not confirmed yet."
  },
  "mobile.account.nameHint": "Everyone in your journeys sees this name, and each journey notes when it changes. Your handle, @{handle}, stays private.",
  "@mobile.account.nameHint": {
    "description": "Under the name field.",
    "placeholders": {
      "handle": { "type": "String", "example": "asha-k", "description": "The account's username, shown after @. Never translated." }
    }
  },
  "mobile.account.verifiedInBrowser": "I verified it in my browser",
  "@mobile.account.verifiedInBrowser": {
    "description": "Button for someone who opened the verification link in their browser: the phone checks again."
  },
  "mobile.account.signOutNote": "Signing out removes hosted journeys from this view without deleting them.",
  "@mobile.account.signOutNote": {
    "description": "Above Sign out: signing out never deletes a journey."
  },
  "common.account.noEmailSupport": "For help with this account, write to ledger-support@together-ledger.com.",
  "@common.account.noEmailSupport": {
    "description": "For an account with no email address, which can't be sent one. Selectable so the address can be copied; keep it exactly as it is."
  },
  "mobile.action.tryAgain": "Try again",
  "@mobile.action.tryAgain": {
    "description": "Button that tries the same thing again, after something failed or could not be reached."
  },
  "mobile.action.saving": "Saving…",
  "@mobile.action.saving": {
    "description": "What a button says while it saves."
  },
  "mobile.error.offline": "You’re offline. A moment you hold now waits on this phone and is sent when you reconnect. Your journeys will be back then; until then, nothing else can be changed.",
  "@mobile.error.offline": {
    "description": "Shown while the phone has no connection, standing at the top of each screen, and when something is tried without one. Only holding a new moment can wait; nothing else can be changed until the connection returns."
  },
  "mobile.error.unreachable": "Together Ledger can’t be reached right now. You’re still signed in. Try again in a moment.",
  "@mobile.error.unreachable": {
    "description": "When the phone has a connection but the service did not answer. Together Ledger is the product's name and is never translated."
  },
  "error.client.accountsUnavailable": "Private accounts are being connected. No account details were sent.",
  "@error.client.accountsUnavailable": {
    "description": "When the service's address is not set, so nothing could be sent: on the phone, a build made without it; on the website, a copy that can't reach accounts yet."
  },
  "error.client.fallback": "The service could not complete that request.",
  "@error.client.fallback": {
    "description": "When the service refused something and gave no reason that can be shown, on the web and the phone."
  },
  "mobile.error.notFromTheApp": "That cannot be done from the app.",
  "@mobile.error.notFromTheApp": {
    "description": "When something can only be done on the website, said without pointing there."
  },
  "mobile.history.noJourney": "Your account is ready. Create a private journey, and its history will be here.",
  "@mobile.history.noJourney": {
    "description": "History, signed in but with no journey yet."
  },
  "mobile.invitation.haveOne": "Have an invitation?",
  "@mobile.invitation.haveOne": {
    "description": "Button on the welcome, the empty ledger and sign-in, for someone who was invited to join a journey. It opens a place to paste the invitation."
  },
  "mobile.journey.opening": "Opening “{journey}”…",
  "@mobile.journey.opening": {
    "description": "Under the row of journeys, while the journey just chosen is loading. The one open stays on screen meanwhile.",
    "placeholders": {
      "journey": { "type": "String", "example": "Home in Fall", "description": "The journey's name, in any script, as the people in it wrote it." }
    }
  },
  "mobile.journey.opensWhenBack": "“{journey}” opens once the connection is back.",
  "@mobile.journey.opensWhenBack": {
    "description": "Under the row of journeys, when a journey was chosen while the connection was lost.",
    "placeholders": {
      "journey": { "type": "String", "example": "Home in Fall", "description": "The journey's name, in any script, as the people in it wrote it." }
    }
  },
  "mobile.journey.screenOpensWhenBack": "{screen} opens once the connection is back.",
  "@mobile.journey.screenOpensWhenBack": {
    "description": "In place of a screen that needs a journey, such as History, while the phone is offline.",
    "placeholders": {
      "screen": { "type": "String", "example": "History", "description": "The title of the screen." }
    }
  },
  "mobile.journey.notLoaded": "Your journeys couldn’t be loaded just now.",
  "@mobile.journey.notLoaded": {
    "description": "When the journeys failed to load for a reason other than the connection. Why is said above it, in the status message."
  },
  "mobile.ledger.journeys": "Journey",
  "@mobile.ledger.journeys": {
    "description": "What a screen reader calls the row of journeys to choose between."
  },
  "mobile.moment.noRoomForPlace": "This moment has no room for another place. Room belongs to the journey, and is the same on every device. Remove a place to save the moment.",
  "@mobile.moment.noRoomForPlace": {
    "description": "When saving a moment with more places than its journey has room for. Room is not a seat or a slot; see the glossary's another place."
  },
  "mobile.moment.noRoomForPhoto": "This moment has no room for another photo. Room belongs to the journey, and is the same on every device.",
  "@mobile.moment.noRoomForPhoto": {
    "description": "When adding a photo a moment has no room for."
  },
  "mobile.moment.keptOnPhone": "Kept on this phone. It will be sent when the connection returns.",
  "@mobile.moment.keptOnPhone": {
    "description": "Brief message after holding a moment while offline."
  },
  "common.moment.photoOf": "Photo held with {title}",
  "@common.moment.photoOf": {
    "description": "What a screen reader says for a photo on a moment.",
    "placeholders": {
      "title": { "type": "String", "example": "Tea on the porch", "description": "The moment's name, as written." }
    }
  },
  "mobile.moment.photoFailed": "Photo could not be loaded.",
  "@mobile.moment.photoFailed": {
    "description": "When a photo on a moment could not be loaded."
  },
  "mobile.moment.gone": "This moment is no longer here. It may have been deleted on another device.",
  "@mobile.moment.gone": {
    "description": "When the moment being edited no longer exists."
  },
  "mobile.moment.viewLabel": "Show moments",
  "@mobile.moment.viewLabel": {
    "description": "label above the In full / Compact choice on the phone's ledger"
  },
  "mobile.moment.viewFull": "In full",
  "@mobile.moment.viewFull": {
    "description": "choice that shows each moment as a full card"
  },
  "mobile.moment.viewCompact": "Compact",
  "@mobile.moment.viewCompact": {
    "description": "choice that shows each moment as one short row"
  },
  "mobile.moment.allMoments": "All moments",
  "@mobile.moment.allMoments": {
    "description": "heading over the list when Compact shows every moment"
  },
  "mobile.moment.noJourney": "Open a journey first, then hold a moment in it.",
  "@mobile.moment.noJourney": {
    "description": "When the form to hold a moment is opened with no journey open."
  },
  "mobile.moment.backToLedger": "Back to the ledger",
  "@mobile.moment.backToLedger": {
    "description": "Button that closes the form and goes back to the ledger."
  },
  "mobile.moment.whenHint": "Year, month and day, such as 2026-09-30.",
  "@mobile.moment.whenHint": {
    "description": "Under the date field: how to type a day. The example date is typed as digits, year first."
  },
  "mobile.moment.calendar": "Choose on a calendar",
  "@mobile.moment.calendar": {
    "description": "Button that opens the phone's calendar to pick the day."
  },
  "mobile.moment.calendarDone": "Done",
  "@mobile.moment.calendarDone": {
    "description": "Button that closes the calendar."
  },
  "mobile.moment.detail": "What would you like to hold? (Optional)",
  "@mobile.moment.detail": {
    "description": "Label of the field for what happened, in the person's own words."
  },
  "mobile.moment.themeTitle": "Moment theme (Optional)",
  "@mobile.moment.themeTitle": {
    "description": "Heading over the colour treatments a moment can wear."
  },
  "common.moment.themeGroup": "Moment theme",
  "@common.moment.themeGroup": {
    "description": "What a screen reader calls the list of moment themes; on the website, also the label shown over it."
  },
  "mobile.moment.placesTitle": "Places (Optional)",
  "@mobile.moment.placesTitle": {
    "description": "Heading over the places held with a moment."
  },
  "mobile.moment.placesHelp": "Add only what helps tell the story.",
  "@mobile.moment.placesHelp": {
    "description": "Under Places."
  },
  "mobile.moment.chosen": "Chosen",
  "@mobile.moment.chosen": {
    "description": "Beside the visibility that is chosen."
  },
  "mobile.moment.moneyTitle": "Practical money context (Optional; never counted as a score)",
  "@mobile.moment.moneyTitle": {
    "description": "Heading over the amount of money a moment can hold."
  },
  "mobile.moment.currency": "Currency (optional)",
  "@mobile.moment.currency": {
    "description": "Label of the currency choice."
  },
  "mobile.moment.deleteZoneTitle": "Delete this moment",
  "@mobile.moment.deleteZoneTitle": {
    "description": "Heading of the marked box at the foot of the edit form that deletes the moment."
  },
  "mobile.moment.deleteZoneNote": "Deleting removes this moment from the ledger, and it can’t be undone. You’ll be asked once more before anything is deleted.",
  "@mobile.moment.deleteZoneNote": {
    "description": "Under Delete this moment, before the button."
  },
  "mobile.moment.delete": "Delete moment",
  "@mobile.moment.delete": {
    "description": "Button that deletes the moment, after one more question. It cannot be undone."
  },
  "mobile.moment.kindNameProblem": "A name for this kind of moment is required and must be 60 characters or fewer.",
  "@mobile.moment.kindNameProblem": {
    "description": "When the name for a kind of moment of one's own is empty or too long."
  },
  "mobile.moment.dateProblem": "Choose a valid moment date.",
  "@mobile.moment.dateProblem": {
    "description": "When the date typed is not a real day."
  },
  "mobile.moment.titleTooLong": "Moment title is required and must be 120 characters or fewer.",
  "@mobile.moment.titleTooLong": {
    "description": "When the moment's name is too long."
  },
  "mobile.moment.deleteQuestion": "Delete this moment?",
  "@mobile.moment.deleteQuestion": {
    "description": "Question asked before deleting a moment."
  },
  "mobile.moment.deleted": "Moment deleted.",
  "@mobile.moment.deleted": {
    "description": "Brief message after a moment is deleted."
  },
  "mobile.navigation.backTo": "Back to {screen}",
  "@mobile.navigation.backTo": {
    "description": "What a screen reader says for Android's back button, which goes to the screen named.",
    "placeholders": {
      "screen": { "type": "String", "example": "Settings", "description": "The title of the screen the button goes back to." }
    }
  },
  "mobile.offline.stillSignedIn": "This phone is offline. You’re still signed in.",
  "@mobile.offline.stillSignedIn": {
    "description": "In Settings, under Account settings, while the phone has no connection."
  },
  "mobile.offline.stillSignedInUnreachable": "Together Ledger can’t be reached right now. You’re still signed in.",
  "@mobile.offline.stillSignedInUnreachable": {
    "description": "In Settings, under Account settings, while the service does not answer."
  },
  "mobile.offline.ledger": "This phone is offline. You’re still signed in, and your journeys will be back here when it reconnects.",
  "@mobile.offline.ledger": {
    "description": "In the ledger, in place of the journeys, while the phone has no connection. Journeys are not kept on the phone."
  },
  "mobile.offline.account": "This phone is offline. You’re still signed in, and your account will be here when it reconnects.",
  "@mobile.offline.account": {
    "description": "On Account settings, in place of the account, while the phone has no connection."
  },
  "mobile.offline.unreachableHere": "Together Ledger can’t be reached right now. You’re still signed in on this phone. Try again in a moment.",
  "@mobile.offline.unreachableHere": {
    "description": "In the ledger or on Account settings, while the service does not answer."
  },
  "mobile.screen.welcome.title": "Welcome",
  "@mobile.screen.welcome.title": {
    "description": "The welcome screen's name, said by the back button of the screen opened from it. The welcome itself shows no title bar."
  },
  "mobile.screen.ledger.title": "Ledger",
  "@mobile.screen.ledger.title": {
    "description": "Name of the main screen, in its title bar and on the back button of screens opened from it. The ledger is where a journey's moments are kept."
  },
  "mobile.screen.settings.title": "Settings",
  "@mobile.screen.settings.title": {
    "description": "Title of the Settings screen, and the back button of screens opened from it. A noun naming the screen; the button that opens it is mobile.settings.open."
  },
  "mobile.screen.account.title": "Account settings",
  "@mobile.screen.account.title": {
    "description": "Title of the screen with the person's own account (name, email, signing out), and the back button of screens opened from it."
  },
  "common.screen.register.title": "Create account",
  "@common.screen.register.title": {
    "description": "Title of the screen that creates a new account, and the heading of the website's form that does. A noun phrase naming the screen; the button that opens it is common.account.createAccount."
  },
  "mobile.screen.recovery.title": "Account recovery",
  "@mobile.screen.recovery.title": {
    "description": "Title of the screens that send and use a link to set a new password."
  },
  "mobile.screen.verifyEmail.title": "Verify email",
  "@mobile.screen.verifyEmail.title": {
    "description": "Title of the screen that confirms an email address from a link."
  },
  "mobile.screen.changePassword.title": "Change password",
  "@mobile.screen.changePassword.title": {
    "description": "Title of the screen that changes the password while signed in."
  },
  "mobile.screen.invite.title": "Invitation",
  "@mobile.screen.invite.title": {
    "description": "Title of the screen showing an invitation to join a journey."
  },
  "mobile.screen.deleteAccount.title": "Delete account",
  "@mobile.screen.deleteAccount.title": {
    "description": "Title of the screen that explains and deletes the account. It cannot be undone."
  },
  "common.screen.moment.title": "Hold a moment",
  "@common.screen.moment.title": {
    "description": "Title of the form that adds a new moment: the phone's screen and the website's dialog. To hold a moment is this product's way of saying to record or keep it; see the glossary."
  },
  "mobile.screen.newJourney.title": "New journey",
  "@mobile.screen.newJourney.title": {
    "description": "Title of the form that starts a new journey."
  },
  "common.screen.journeySettings.title": "Journey sharing",
  "@common.screen.journeySettings.title": {
    "description": "Title of the screen with who is in a journey, invitations and proposals; on the website, the heading of that part of Journey settings."
  },
  "common.screen.privacy.title": "Privacy",
  "@common.screen.privacy.title": {
    "description": "Title of the phone's screen showing the privacy policy, and the link in the welcome page's header to the section about where a person's words are kept."
  },
  "mobile.screen.terms.title": "Terms of use",
  "@mobile.screen.terms.title": {
    "description": "Title of the screen showing the terms of use."
  },
  "common.screen.concern.title": "Return-to conversation",
  "@common.screen.concern.title": {
    "description": "The name of the form for one conversation the people in a journey want to come back to together: the phone's screen title, and the small line over the website's form."
  },
  "mobile.settings.open": "Settings",
  "@mobile.settings.open": {
    "description": "The button that opens Settings, on the welcome and in the ledger's top bar. A gear is drawn before it and is never read aloud. The screen's own title is mobile.screen.settings.title."
  },
  "mobile.settings.openWaiting": "Settings · {count, number}",
  "@mobile.settings.openWaiting": {
    "description": "The Settings button in the ledger's top bar while there are questions about who joins a journey waiting for this person's answer: the word, then how many. Keep it short; it sits in the top bar.",
    "placeholders": {
      "count": { "type": "int", "example": "2", "description": "How many questions wait for an answer, at least 1." }
    }
  },
  "mobile.settings.openWaitingSpoken": "Settings, {count, number} to answer",
  "@mobile.settings.openWaitingSpoken": {
    "description": "What a screen reader says for the Settings button while questions wait for this person's answer (mobile.settings.openWaiting).",
    "placeholders": {
      "count": { "type": "int", "example": "2", "description": "How many questions wait for an answer, at least 1." }
    }
  },
  "mobile.settings.signIn": "Sign in or create an account",
  "@mobile.settings.signIn": {
    "description": "The row in Settings when nobody is signed in on this phone."
  },
  "mobile.settings.journeyHeading": "Journey settings · {journey}",
  "@mobile.settings.journeyHeading": {
    "description": "Heading of the group in Settings for the journey that is open, with its name.",
    "placeholders": {
      "journey": { "type": "String", "example": "Home in Fall", "description": "The journey's name, in any script, as the people in it wrote it." }
    }
  },
  "mobile.settings.sharing": "Sharing",
  "@mobile.settings.sharing": {
    "description": "The row in Settings that opens who is in the journey, invitations and proposals."
  },
  "mobile.settings.sharingWaiting": "Sharing · {count, number} to answer",
  "@mobile.settings.sharingWaiting": {
    "description": "The Sharing row while questions about who joins wait for this person's answer.",
    "placeholders": {
      "count": { "type": "int", "example": "2", "description": "How many questions wait for an answer, at least 1." }
    }
  },
  "mobile.settings.history": "History and conversations",
  "@mobile.settings.history": {
    "description": "The row in Settings that opens the journey's history and its conversations to return to."
  },
  "mobile.settings.privacy": "Privacy policy",
  "@mobile.settings.privacy": {
    "description": "Link at the foot of Settings to the privacy policy."
  },
  "mobile.settings.terms": "Terms of use",
  "@mobile.settings.terms": {
    "description": "Link at the foot of Settings to the terms of use. The screen it opens has the same words as its title (mobile.screen.terms.title)."
  },
  "mobile.settings.help": "Help",
  "@mobile.settings.help": {
    "description": "Link at the foot of Settings that shows where to write for help."
  },
  "mobile.settings.helpText": "For help using Together Ledger, write to ledger-support@together-ledger.com. For anything about your privacy or your data, write to legal@together-ledger.com.",
  "@mobile.settings.helpText": {
    "description": "Shown when Help is opened, and selectable so the addresses can be copied. Keep both email addresses exactly as they are."
  },
  "mobile.settings.build": "This build: {build}",
  "@mobile.settings.build": {
    "description": "What a screen reader says for the line at the foot of Settings naming this version of the app, to quote in a report.",
    "placeholders": {
      "build": { "type": "String", "example": "0.1.0 (12) · 3f9a1c0", "description": "The version, build number and commit. Never translated." }
    }
  },
  "mobile.signIn.connectTitle": "{provider, select, apple {Connect Apple to your account} other {Connect Google to your account}}",
  "@mobile.signIn.connectTitle": {
    "description": "Heading when a Google or Apple sign-in uses an email that already has a password account: the password is asked for once to connect them. Apple and Google are names and are never translated.",
    "placeholders": {
      "provider": { "type": "String", "example": "apple", "description": "apple or google; chooses the branch, never shown." }
    }
  },
  "mobile.signIn.connectPassword": "Password for {email}",
  "@mobile.signIn.connectPassword": {
    "description": "Label of the password field when connecting a Google or Apple sign-in to an account.",
    "placeholders": {
      "email": { "type": "String", "example": "asha@example.com", "description": "The account's email, or \"this email\"." }
    }
  },
  "mobile.signOut.waitingTitle": "Sign out with moments waiting?",
  "@mobile.signOut.waitingTitle": {
    "description": "Question asked before signing out while moments held offline have not been sent."
  },
  "mobile.signOut.waitingConsequence": "{count, plural, one {One moment you held hasn’t been sent yet. Signing out removes it from this phone, and it can’t be sent later.} other {{count, number} moments you held haven’t been sent yet. Signing out removes them from this phone, and they can’t be sent later.}}",
  "@mobile.signOut.waitingConsequence": {
    "description": "What signing out does to moments not sent yet. It cannot be undone.",
    "placeholders": {
      "count": { "type": "int", "example": "2", "description": "How many moments wait, at least 1." }
    }
  },
  "mobile.signOut.waitingAction": "{count, plural, one {Sign out and remove it} other {Sign out and remove them}}",
  "@mobile.signOut.waitingAction": {
    "description": "The button that signs out and removes the moments not sent yet.",
    "placeholders": {
      "count": { "type": "int", "example": "2", "description": "How many moments wait, at least 1." }
    }
  },
  "mobile.signOutEverywhere.waitingTitle": "Sign out everywhere with moments waiting?",
  "@mobile.signOutEverywhere.waitingTitle": {
    "description": "The same question, while moments held offline have not been sent."
  },
  "mobile.signOutEverywhere.waitingConsequence": "{everywhere} {waiting}",
  "@mobile.signOutEverywhere.waitingConsequence": {
    "description": "Two sentences together: what signing out everywhere does (common.signOutEverywhere.consequence), then what it does to the moments not sent yet (mobile.signOut.waitingConsequence). Change only the space between them if your language joins sentences differently.",
    "placeholders": {
      "everywhere": { "type": "String", "example": "Every device signed in…", "description": "common.signOutEverywhere.consequence." },
      "waiting": { "type": "String", "example": "One moment you held…", "description": "mobile.signOut.waitingConsequence." }
    }
  },
  "mobile.signOutEverywhere.waitingAction": "{count, plural, one {Sign out everywhere and remove it} other {Sign out everywhere and remove them}}",
  "@mobile.signOutEverywhere.waitingAction": {
    "description": "The button that signs out on every device and removes the moments not sent yet.",
    "placeholders": {
      "count": { "type": "int", "example": "2", "description": "How many moments wait, at least 1." }
    }
  },
  "mobile.start.signedOut": "Your private journeys appear here once you sign in on this phone.",
  "@mobile.start.signedOut": {
    "description": "On the ledger, when nobody is signed in on this phone."
  },
  "mobile.store.restore": "Restore purchases",
  "@mobile.store.restore": {
    "description": "The row in Settings that asks the App Store or Google Play for what this account bought, so it is honoured again on this phone."
  },
  "mobile.store.restoring": "Checking with the store…",
  "@mobile.store.restoring": {
    "description": "What Restore purchases says while it asks the App Store or Google Play."
  },
  "mobile.store.extraPhotoReady": "An extra photo is ready on this moment. It stays with the moment for good.",
  "@mobile.store.extraPhotoReady": {
    "description": "What the person is told once our server has honoured a purchase of an extra photo."
  },
  "mobile.store.extraPlaceReady": "An extra place is ready on this moment. It stays with the moment for good.",
  "@mobile.store.extraPlaceReady": {
    "description": "What the person is told once our server has honoured a purchase of an extra place."
  },
  "mobile.store.roomPaidFor": "Room for {people} people is paid for. It starts on {date}, when the room already running ends.",
  "@mobile.store.roomPaidFor": {
    "description": "What the person is told once our server has honoured a purchase of room for people that starts later.",
    "placeholders": {
      "people": { "type": "int", "example": "4", "description": "How many people the room is for." },
      "date": { "type": "String", "example": "Oct 12, 2026", "description": "The date the room starts, already formatted." }
    }
  },
  "mobile.store.roomReadyRenewing": "Room for {people} people is ready in this journey, and renews every month.",
  "@mobile.store.roomReadyRenewing": {
    "description": "What the person is told once our server has honoured a purchase of room for people that renews monthly.",
    "placeholders": {
      "people": { "type": "int", "example": "4", "description": "How many people the room is for." }
    }
  },
  "mobile.store.roomReady": "Room for {people} people is ready in this journey.",
  "@mobile.store.roomReady": {
    "description": "What the person is told once our server has honoured a purchase of room for people with no specific end.",
    "placeholders": {
      "people": { "type": "int", "example": "4", "description": "How many people the room is for." }
    }
  },
  "mobile.store.roomReadyUntil": "Room for {people} people is ready in this journey until {date}.",
  "@mobile.store.roomReadyUntil": {
    "description": "What the person is told once our server has honoured a purchase of room for people until a specific date.",
    "placeholders": {
      "people": { "type": "int", "example": "4", "description": "How many people the room is for." },
      "date": { "type": "String", "example": "Oct 12, 2026", "description": "The date the room ends, already formatted." }
    }
  },
  "mobile.store.purchaseIncomplete": "The store didn’t complete the purchase, so nothing was charged.",
  "@mobile.store.purchaseIncomplete": {
    "description": "Message shown when a store purchase is not completed."
  },
  "mobile.theme.followPhone": "Match this phone",
  "@mobile.theme.followPhone": {
    "description": "The first theme choice: follow the phone's own light or dark setting."
  },
  "mobile.theme.followsPhone": "Theme matches this phone.",
  "@mobile.theme.followsPhone": {
    "description": "Brief message after choosing Match this phone."
  },
  "mobile.welcome.begin": "Begin your ledger →",
  "@mobile.welcome.begin": {
    "description": "The welcome's main button, which opens the ledger for the first time. The arrow stays."
  },
  "common.language.preview": "{language} · Preview",
  "@common.language.preview": {
    "description": "A language in a language menu that is offered before it is approved: its own name, then the word Preview, in the reader’s language.",
    "placeholders": {
      "language": { "type": "String", "example": "हिन्दी", "description": "The language’s own name, in its own script." }
    }
  },
  "common.language.comingSoon": "{language} · Coming soon",
  "@common.language.comingSoon": {
    "description": "A language in a language menu that is still being translated: its own name, then the words Coming soon, in the reader’s language. It is shown so people can see it is on its way, and it can’t be chosen yet.",
    "placeholders": {
      "language": { "type": "String", "example": "বাংলা", "description": "The language’s own name, in its own script." }
    }
  },
  "mobile.language.current": "Language: {language}",
  "@mobile.language.current": {
    "description": "What a screen reader says for the small language control at the top of the welcome, which opens the Language choice.",
    "placeholders": {
      "language": { "type": "String", "example": "English", "description": "The name of the language the app is in, in its own script." }
    }
  },
  "common.moment.nameMissing": "Give this moment a short name.",
  "@common.moment.nameMissing": {
    "description": "Under the name field, when a moment is saved without a name. The form scrolls to the field."
  },
  "common.action.close": "Close",
  "@common.action.close": {
    "description": "Button, or the spoken name of the × button, that closes a dialog or a photo."
  },
  "common.action.open": "Open",
  "@common.action.open": {
    "description": "Button that opens one return-to conversation to read or change it."
  },
  "common.action.dismiss": "Dismiss",
  "@common.action.dismiss": {
    "description": "Button that hides a message shown above the page once the person has read it."
  },
  "common.field.optional": "Optional",
  "@common.field.optional": {
    "description": "Small word beside a field’s name: the field can be left empty."
  },
  "common.account.soon": "Accounts soon",
  "@common.account.soon": {
    "description": "Shown in place of Sign in when this copy of the website cannot create accounts yet."
  },
  "common.theme.applied": "{theme} applied.",
  "@common.theme.applied": {
    "description": "Short message after choosing a colour theme.",
    "placeholders": {
      "theme": { "type": "String", "example": "Dark", "description": "The theme’s name, as the menu shows it." }
    }
  },
  "common.time.noEnd": "No end time recorded",
  "@common.time.noEnd": {
    "description": "Shown in place of a countdown when the time it counts to is missing."
  },
  "common.time.none": "No time left",
  "@common.time.none": {
    "description": "A countdown that has reached its end."
  },
  "common.time.underAMinute": "Less than a minute left",
  "@common.time.underAMinute": {
    "description": "A countdown with under a minute to go."
  },
  "common.time.days": "{days, number, ::group-off}d {hours, number, ::integer-width/*00}h {minutes, number, ::integer-width/*00}m left",
  "@common.time.days": {
    "description": "A countdown with a day or more to go: days, hours and minutes, the hours and minutes always two digits (3d 04h 07m left). d, h and m are the units; use your language’s short forms.",
    "placeholders": {
      "days": { "type": "Number", "example": "3", "description": "Whole days left." },
      "hours": { "type": "Number", "example": "4", "description": "Hours left after the days, 0 to 23." },
      "minutes": { "type": "Number", "example": "7", "description": "Minutes left after the hours, 0 to 59." }
    }
  },
  "common.time.hours": "{hours, number, ::group-off}h {minutes, number, ::integer-width/*00}m left",
  "@common.time.hours": {
    "description": "A countdown with under a day to go: hours, then minutes as two digits (4h 07m left).",
    "placeholders": {
      "hours": { "type": "Number", "example": "4", "description": "Whole hours left." },
      "minutes": { "type": "Number", "example": "7", "description": "Minutes left after the hours, 0 to 59." }
    }
  },
  "common.time.minutes": "{minutes, number, ::group-off}m left",
  "@common.time.minutes": {
    "description": "A countdown with under an hour to go (12m left).",
    "placeholders": {
      "minutes": { "type": "Number", "example": "12", "description": "Whole minutes left." }
    }
  },
  "common.leave.title": "Leave this journey",
  "@common.leave.title": {
    "description": "Heading of the danger zone in Journey settings, on the web and the phone, where a person can leave a journey. Leaving can’t be undone. Nobody is removed: the person leaves."
  },
  "common.leave.note": "Leaving is yours to decide. Nobody else has to agree, and nobody is asked. It can’t be undone: to come back, you would need a new invitation that everyone here agrees to.",
  "@common.leave.note": {
    "description": "Under the Leave this journey heading."
  },
  "common.leave.ownerFirst": "You hold this journey for everyone in it, so you can’t leave it yet. Make someone else here the owner first, under Journey record. Then you can leave.",
  "@common.leave.ownerFirst": {
    "description": "Shown to the journey’s owner instead of a Leave button while anyone else is in the journey. Journey record is the name of a section above it."
  },
  "common.leave.safety": "If someone keeps contacting you after you leave, write to ledger-support@together-ledger.com. Together Ledger is not an emergency service; if you are in danger, call your local emergency number.",
  "@common.leave.safety": {
    "description": "Safety note at the bottom of the leave zone. Keep the email address exactly as it is. The product name stays as it is."
  },
  "common.leave.start": "Leave this journey",
  "@common.leave.start": {
    "description": "Button that starts leaving: it opens the question that says what will happen. Same words as the heading, different job."
  },
  "common.leave.fieldLabel": "Type {word}",
  "@common.leave.fieldLabel": {
    "description": "Label of the box where the person types the word that confirms leaving.",
    "placeholders": {
      "word": { "type": "String", "example": "LEAVE", "description": "The word to type, LEAVE. It is checked exactly as it is, so it is never translated." }
    }
  },
  "common.leave.fieldHint": "This is the last step. Nothing happens until you type {word} and press Leave this journey now.",
  "@common.leave.fieldHint": {
    "description": "Under the box where the confirming word is typed. Leave this journey now is the name of the button beside it.",
    "placeholders": {
      "word": { "type": "String", "example": "LEAVE", "description": "The word to type, LEAVE. Never translated." }
    }
  },
  "common.leave.confirm": "Leave this journey now",
  "@common.leave.confirm": {
    "description": "Button that leaves the journey, after the word is typed. It can’t be undone."
  },
  "common.leave.pending": "Leaving…",
  "@common.leave.pending": {
    "description": "Shown on the Leave this journey now button while leaving is being done."
  },
  "common.leave.stay": "Stay in this journey",
  "@common.leave.stay": {
    "description": "Button that stops leaving and keeps the person in the journey."
  },
  "common.leave.consequenceTitle": "Leave “{journey}”?",
  "@common.leave.consequenceTitle": {
    "description": "Title of the question asked before leaving a journey. It cannot be undone. Use your language’s own quotation marks around the name.",
    "placeholders": {
      "journey": { "type": "String", "example": "Home in Fall", "description": "The journey’s name, as its journeyers wrote it, in any script." }
    }
  },
  "common.leave.consequence": "Your private moments here, and those you were keeping to share later, are deleted with their places and photos. Moments you shared stay with the others, still showing that you held them. Any proposal you made or invitation you sent that is still waiting is withdrawn. The journey’s History records that you left, and when. Nobody is sent an email or a notification. If you pay on the web for room in this journey, that payment has to end first. Room you pay for in the App Store or Google Play stays with this journey, and leaving doesn’t cancel it. Cancel it with Apple or Google, or it keeps renewing.",
  "@common.leave.consequence": {
    "description": "What happens when a person leaves a journey, said before anything is typed. App Store and Google Play are the stores’ own names."
  },
  "common.leave.continue": "Continue",
  "@common.leave.continue": {
    "description": "Button on the leave question: go on to the last step, typing the confirming word. Nothing has happened yet."
  },
  "common.leave.left": "You have left “{journey}”. It is no longer among your journeys.",
  "@common.leave.left": {
    "description": "Message after a person has left a journey.",
    "placeholders": {
      "journey": { "type": "String", "example": "Home in Fall", "description": "The journey’s name, as its journeyers wrote it, in any script." }
    }
  },
  "header.skip.story": "Skip to the main story",
  "@header.skip.story": {
    "description": "Link for keyboard and screen reader users, first on the welcome page: jumps past the header to the welcome’s heading."
  },
  "header.skip.ledger": "Skip to the shared ledger",
  "@header.skip.ledger": {
    "description": "Link for keyboard and screen reader users, first on the ledger: jumps past the header to the moments. The ledger is the shared space a journey keeps."
  },
  "header.brand.home": "Together Ledger home",
  "@header.brand.home": {
    "description": "Spoken name of the product’s logo and name in the header, which leads back to the top of the page. Keep the product name as it is."
  },
  "header.brand.tagline": "A shared journey, held with care.",
  "@header.brand.tagline": {
    "description": "Small line under the product’s name in the header."
  },
  "header.nav.welcome": "Welcome navigation",
  "@header.nav.welcome": {
    "description": "Spoken name of the row of links in the welcome page’s header."
  },
  "header.nav.mobileWelcome": "Mobile welcome navigation",
  "@header.nav.mobileWelcome": {
    "description": "Spoken name of the same links inside the menu on a narrow screen."
  },
  "header.nav.howItWorks": "How it works",
  "@header.nav.howItWorks": {
    "description": "Link in the welcome page’s header to the section that explains the product."
  },
  "header.nav.possibilities": "Possibilities",
  "@header.nav.possibilities": {
    "description": "Link in the welcome page’s header to the section of examples of what a ledger can hold."
  },
  "header.menu.open": "Open welcome menu",
  "@header.menu.open": {
    "description": "Spoken name of the menu button in the header on a narrow screen."
  },
  "header.theme.mobileMenuLabel": "Mobile color theme",
  "@header.theme.mobileMenuLabel": {
    "description": "Spoken name of the theme menu inside the header’s menu on a narrow screen."
  },
  "header.theme.workspaceMenuLabel": "Workspace color theme",
  "@header.theme.workspaceMenuLabel": {
    "description": "Spoken name of the theme menu in the ledger’s header."
  },
  "welcome.action.beginLedger": "Begin a ledger",
  "@welcome.action.beginLedger": {
    "description": "Button in the welcome page’s header that opens an empty ledger in this browser. Nothing is created on a server and nothing is uploaded."
  },
  "welcome.action.beginYourLedger": "Begin your ledger",
  "@welcome.action.beginYourLedger": {
    "description": "The welcome page’s main button, shown at the top and again at the end. It opens an empty ledger in this browser. An arrow is drawn after it."
  },
  "welcome.action.seeHow": "See how it works",
  "@welcome.action.seeHow": {
    "description": "Link under the welcome’s heading to the section that explains the product."
  },
  "welcome.hero.boundaryTitle": "Browser only until you choose otherwise.",
  "@welcome.hero.boundaryTitle": {
    "description": "Bold sentence under the welcome’s buttons: beginning keeps everything in this browser."
  },
  "welcome.hero.boundaryNote": "Beginning here creates no account and uploads nothing.",
  "@welcome.hero.boundaryNote": {
    "description": "Follows welcome.hero.boundaryTitle in the same line."
  },
  "welcome.example.label": "Example shared ledger for fictional journeyers Maya and Theo",
  "@welcome.example.label": {
    "description": "Spoken name of the example ledger drawn beside the welcome’s heading. Maya and Theo are invented people; you may give them names that read naturally in your language, the same everywhere they appear."
  },
  "welcome.example.title": "Our ledger",
  "@welcome.example.title": {
    "description": "Title of the example ledger on the welcome page."
  },
  "welcome.example.people": "Maya and Theo",
  "@welcome.example.people": {
    "description": "Spoken name of the two initials (M and T) in the example ledger. Keep the same names as in welcome.example.label."
  },
  "welcome.example.chapter": "Chapter 04",
  "@welcome.example.chapter": {
    "description": "Small line in the example ledger: this is the fourth part of their story."
  },
  "welcome.example.heading": "The summer we chose slowly",
  "@welcome.example.heading": {
    "description": "Heading of the example ledger: the name the two invented people gave this part of their story."
  },
  "welcome.example.lead": "Three fictional moments, held between Maya and Theo",
  "@welcome.example.lead": {
    "description": "Under the example ledger’s heading. Keep the same names as in welcome.example.label."
  },
  "welcome.example.promiseTitle": "A promise for the season",
  "@welcome.example.promiseTitle": {
    "description": "The first example moment’s name."
  },
  "welcome.example.promiseDetail": "Choose one unhurried day each week.",
  "@welcome.example.promiseDetail": {
    "description": "The first example moment’s words."
  },
  "welcome.example.shared": "Shared intentionally",
  "@welcome.example.shared": {
    "description": "Under an example moment: it was shared on purpose."
  },
  "welcome.example.roadTitle": "The road near Marlow",
  "@welcome.example.roadTitle": {
    "description": "The second example moment’s name. Marlow is a small English town; you may name another place."
  },
  "welcome.example.roadDetail": "We missed the turn and found the view we still talk about.",
  "@welcome.example.roadDetail": {
    "description": "The second example moment’s words."
  },
  "welcome.example.nextTitle": "For next time",
  "@welcome.example.nextTitle": {
    "description": "The third example moment’s name."
  },
  "welcome.example.nextDetail": "Bring the old camera. Stay until the light changes.",
  "@welcome.example.nextDetail": {
    "description": "The third example moment’s words."
  },
  "welcome.example.later": "Share later · local cue",
  "@welcome.example.later": {
    "description": "Under the third example moment: it waits to be shared, and in a browser-only ledger that is a cue, not a privacy control."
  },
  "welcome.statement.eyebrow": "Made for two",
  "@welcome.statement.eyebrow": {
    "description": "Small line above the How it works section’s heading."
  },
  "welcome.statement.title": "Not another place to post. A place to remember.",
  "@welcome.statement.title": {
    "description": "Heading of the How it works section. The words in welcome.statement.titleEmphasis are drawn in italics."
  },
  "welcome.statement.titleEmphasis": "remember.",
  "@welcome.statement.titleEmphasis": {
    "description": "The words of welcome.statement.title drawn in italics. Copy them exactly as they appear in your welcome.statement.title."
  },
  "welcome.statement.body": "You decide what belongs, how it is named, and when it is ready to be shared. The ledger begins empty because your story should not arrive prewritten. A journey holds two people to begin with, and can make room for more when you decide it should.",
  "@welcome.statement.body": {
    "description": "Under the How it works heading. “Make room for more” is a careful phrase: never seats or slots; see the glossary."
  },
  "welcome.step.holdTitle": "Hold one thing",
  "@welcome.step.holdTitle": {
    "description": "First of three steps. “Hold” is how the product says keeping a moment."
  },
  "welcome.step.holdBody": "A memory, promise, feeling, boundary, practical detail, or your own kind of moment.",
  "@welcome.step.holdBody": {
    "description": "Under the first step."
  },
  "welcome.step.nameTitle": "Name its place",
  "@welcome.step.nameTitle": {
    "description": "Second of three steps: choose who can see a moment."
  },
  "welcome.step.nameBody": "Choose a local visibility cue and use words that feel true to the two people involved.",
  "@welcome.step.nameBody": {
    "description": "Under the second step."
  },
  "welcome.step.returnTitle": "Return with care",
  "@welcome.step.returnTitle": {
    "description": "Third of three steps."
  },
  "welcome.step.returnBody": "Come back to recent moments and conversations without turning the relationship into a score.",
  "@welcome.step.returnBody": {
    "description": "Under the third step."
  },
  "welcome.possibilities.eyebrow": "Every ledger takes its own shape",
  "@welcome.possibilities.eyebrow": {
    "description": "Small line above the Possibilities section’s heading."
  },
  "welcome.possibilities.title": "Keep the ordinary things that become a life.",
  "@welcome.possibilities.title": {
    "description": "Heading of the Possibilities section."
  },
  "welcome.possibilities.momentTitle": "A moment worth keeping",
  "@welcome.possibilities.momentTitle": {
    "description": "First example of what a ledger can hold."
  },
  "welcome.possibilities.momentBody": "The call you made, the thing you learned, or the quiet apology after dinner.",
  "@welcome.possibilities.momentBody": {
    "description": "Under the first example."
  },
  "welcome.possibilities.promiseTitle": "A promise without a score",
  "@welcome.possibilities.promiseTitle": {
    "description": "Second example of what a ledger can hold."
  },
  "welcome.possibilities.promiseBody": "Something you want to remember together, without totals, rankings, or a feed.",
  "@welcome.possibilities.promiseBody": {
    "description": "Under the second example."
  },
  "welcome.possibilities.conversationTitle": "A conversation to return to",
  "@welcome.possibilities.conversationTitle": {
    "description": "Third example of what a ledger can hold."
  },
  "welcome.possibilities.conversationBody": "An open thread can rest here until both people have room to meet it again.",
  "@welcome.possibilities.conversationBody": {
    "description": "Under the third example. A thread is a conversation still open."
  },
  "welcome.privacy.eyebrow": "Privacy before performance",
  "@welcome.privacy.eyebrow": {
    "description": "Small line above the Privacy section’s heading."
  },
  "welcome.privacy.title": "Know where your words live before you write them.",
  "@welcome.privacy.title": {
    "description": "Heading of the Privacy section."
  },
  "welcome.privacy.body": "Together Ledger names the boundary at the moment it matters. The browser-local space and a signed-in private journey are separate homes.",
  "@welcome.privacy.body": {
    "description": "Under the Privacy heading. Keep the product name as it is."
  },
  "common.sync.browserOnly": "Browser only",
  "@common.sync.browserOnly": {
    "description": "Where a ledger is kept: only in this browser. A term explained on the welcome page, and the status shown on the ledger."
  },
  "welcome.privacy.browserBody": "Your first ledger stays on this device unless you export it. Beginning does not create an account.",
  "@welcome.privacy.browserBody": {
    "description": "Explains Browser only."
  },
  "common.sync.accountReady": "Account ready",
  "@common.sync.accountReady": {
    "description": "Signed in, with no private journey open yet. A term explained on the welcome page, and the status shown on the ledger."
  },
  "welcome.privacy.accountBody": "Signing in never uploads or merges the ledger already held in this browser.",
  "@welcome.privacy.accountBody": {
    "description": "Explains Account ready."
  },
  "common.sync.privateSync": "Private sync",
  "@common.sync.privateSync": {
    "description": "A journey kept by the account service and shared between its journeyers. A term explained on the welcome page, and the status shown on the ledger."
  },
  "welcome.privacy.syncBody": "Private and Share later moments stay with their creator. Shared now moments are visible to everyone in the journey, including anyone who joins later.",
  "@welcome.privacy.syncBody": {
    "description": "Explains Private sync. Private, Share later and Shared now are the three visibility choices; use the same words as common.visibility.*."
  },
  "welcome.closing.eyebrow": "Begin without performing",
  "@welcome.closing.eyebrow": {
    "description": "Small line above the welcome page’s last heading."
  },
  "welcome.closing.title": "Start with one thing worth keeping.",
  "@welcome.closing.title": {
    "description": "The welcome page’s last heading, above its last Begin button."
  },
  "welcome.closing.body": "No feed to fill. No relationship score to improve. Nothing is added until you decide.",
  "@welcome.closing.body": {
    "description": "Under the last heading."
  },
  "footer.page.note": "Local-first. Not financial advice, couples therapy, or a substitute for professional support.",
  "@footer.page.note": {
    "description": "The page’s footer, on every screen."
  },
  "home.sections.label": "Ledger sections",
  "@home.sections.label": {
    "description": "Spoken name of the row of links to the ledger’s sections."
  },
  "home.sections.moments": "Moments",
  "@home.sections.moments": {
    "description": "Link to the ledger’s moments."
  },
  "home.sections.returnTo": "Return to",
  "@home.sections.returnTo": {
    "description": "Link to the ledger’s return-to conversations: things to come back to together."
  },
  "home.trip.empty": "Nothing has been written here yet.",
  "@home.trip.empty": {
    "description": "Under the journey’s name while the ledger is empty."
  },
  "home.trip.eventHistory": "See event history ({count, number, ::group-off})",
  "@home.trip.eventHistory": {
    "description": "Button that opens the journey’s history of recorded changes, with how many there are.",
    "placeholders": {
      "count": { "type": "Number", "example": "12", "description": "How many changes are recorded." }
    }
  },
  "home.trip.editJourney": "Edit journey",
  "@home.trip.editJourney": {
    "description": "Button that opens the journey’s details (its name, place, dates) to change them."
  },
  "home.actor.label": "Acting as",
  "@home.actor.label": {
    "description": "Label of the menu that picks which of the two people in a browser-only ledger is writing now."
  },
  "home.actor.menuLabel": "Choose the local actor for new events",
  "@home.actor.menuLabel": {
    "description": "Spoken name of that menu: whose name new changes are recorded under, in this browser only."
  },
  "home.actor.changed": "New local events will be attributed to {name}.",
  "@home.actor.changed": {
    "description": "Message after choosing who is writing in a browser-only ledger.",
    "placeholders": {
      "name": { "type": "String", "example": "Asha", "description": "A journeyer’s name, as they wrote it, in any script." }
    }
  },
  "home.moment.hold": "Hold a moment",
  "@home.moment.hold": {
    "description": "Button that opens the form to keep a new moment. “Hold” is how the product says keeping something with care. A ＋ is drawn before it."
  },
  "home.moment.begin": "Begin",
  "@home.moment.begin": {
    "description": "The same button while the ledger is still empty."
  },
  "home.journey.create": "Create a journey",
  "@home.journey.create": {
    "description": "Button shown to someone signed in who has no private journey yet: it opens the form to make one."
  },
  "home.journey.new": "New journey",
  "@home.journey.new": {
    "description": "Button under the row of journeys: opens the form to begin another journey. A ＋ is drawn before it."
  },
  "home.journeyRow.label": "Switch journey",
  "@home.journeyRow.label": {
    "description": "Label of the row of journeys: choosing one opens it."
  },
  "home.journeyRow.switched": "Journey switched.",
  "@home.journeyRow.switched": {
    "description": "Message after opening another journey from the row."
  },
  "home.settings.button": "{count, plural, =0 {Journey settings} other {Journey settings · {count, number, ::group-off} to answer}}",
  "@home.settings.button": {
    "description": "The button that opens Journey settings. When proposals to add someone are waiting for this person’s answer, it says how many.",
    "placeholders": {
      "count": { "type": "Number", "example": "2", "description": "How many proposals are waiting for this person to answer; 0 for none." }
    }
  },
  "home.guidance.eyebrow": "A small place to begin",
  "@home.guidance.eyebrow": {
    "description": "Small line above the optional check-in question on the ledger."
  },
  "home.guidance.title": "One question, if now is a good time.",
  "@home.guidance.title": {
    "description": "Title of the optional check-in. It opens only when chosen."
  },
  "home.guidance.note": "Nothing you say here is saved. Open only if this feels useful today.",
  "@home.guidance.note": {
    "description": "Under the check-in’s title."
  },
  "home.guidance.progress": "Check-in {current, number, ::group-off} of {total, number, ::group-off}",
  "@home.guidance.progress": {
    "description": "Which of the check-in’s questions is showing.",
    "placeholders": {
      "current": { "type": "Number", "example": "1", "description": "The question showing." },
      "total": { "type": "Number", "example": "5", "description": "How many questions there are." }
    }
  },
  "home.guidance.next": "Next question",
  "@home.guidance.next": {
    "description": "Button: show the next check-in question."
  },
  "home.guidance.back": "Back",
  "@home.guidance.back": {
    "description": "Button: show the previous check-in question."
  },
  "home.guidance.end": "End for today",
  "@home.guidance.end": {
    "description": "Button: put the check-in away until tomorrow, before the last question."
  },
  "home.guidance.finish": "Finish for today",
  "@home.guidance.finish": {
    "description": "Button on the last check-in question: done until tomorrow."
  },
  "home.guidance.ended": "Check-in set aside for today.",
  "@home.guidance.ended": {
    "description": "Message after End for today."
  },
  "home.guidance.finished": "Check-in complete. It can rest until tomorrow.",
  "@home.guidance.finished": {
    "description": "Message after Finish for today."
  },
  "home.guidance.nameWithCare": "What feels important to name with care today?",
  "@home.guidance.nameWithCare": {
    "description": "First check-in question. Gentle, never demanding."
  },
  "home.guidance.appreciated": "What is one thing you noticed and appreciated?",
  "@home.guidance.appreciated": {
    "description": "Second check-in question."
  },
  "home.guidance.lighterThread": "Is there an open thread that would feel lighter with a small next step?",
  "@home.guidance.lighterThread": {
    "description": "Third check-in question. A thread is a conversation still open."
  },
  "home.guidance.spaciousBoundary": "What boundary would help this journey feel more spacious?",
  "@home.guidance.spaciousBoundary": {
    "description": "Fourth check-in question."
  },
  "home.guidance.rememberSeason": "What do we want to remember about this season together?",
  "@home.guidance.rememberSeason": {
    "description": "Fifth check-in question."
  },
  "home.moments.title": "Recent moments",
  "@home.moments.title": {
    "description": "Heading over the most recent moments."
  },
  "home.moments.showRecent": "Show recent",
  "@home.moments.showRecent": {
    "description": "Button that goes back to showing only the recent moments."
  },
  "home.moments.addYourOwn": "Add your own moment",
  "@home.moments.addYourOwn": {
    "description": "Button among those suggestions: hold a moment of a kind the person names. A ＋ is drawn before it."
  },
  "home.threads.start": "Start a conversation",
  "@home.threads.start": {
    "description": "Button that opens the form to start a return-to conversation. A ＋ is drawn before it."
  },
  "home.threads.open": "open",
  "@home.threads.open": {
    "description": "Small lowercase tag on a conversation that is still open."
  },
  "home.quickAction.label": "Quick action",
  "@home.quickAction.label": {
    "description": "Spoken name of the bar at the bottom of a narrow screen that holds the Hold a moment button."
  },
  "moment.photo.open": "Open photo {name}",
  "@moment.photo.open": {
    "description": "Spoken name of a photo on a moment: opens it larger.",
    "placeholders": {
      "name": { "type": "String", "example": "IMG_0412.jpg", "description": "The photo’s file name, or the word Image." }
    }
  },
  "moment.photo.openLarger": "Open larger",
  "@moment.photo.openLarger": {
    "description": "Under a photo on a moment: selecting it opens it larger."
  },
  "moment.photo.openRemoved": "Open removed photo {name}",
  "@moment.photo.openRemoved": {
    "description": "Spoken name of a removed photo: opens it larger.",
    "placeholders": {
      "name": { "type": "String", "example": "IMG_0412.jpg", "description": "The photo’s file name, or the word Image." }
    }
  },
  "moment.photo.unavailable": "Photo could not be loaded. Select to try again.",
  "@moment.photo.unavailable": {
    "description": "Shown in place of a photo that did not load."
  },
  "moment.viewer.eyebrow": "Moment photo",
  "@moment.viewer.eyebrow": {
    "description": "Small line above a photo opened larger."
  },
  "moment.viewer.close": "Close photo",
  "@moment.viewer.close": {
    "description": "Spoken name of the × that closes a photo opened larger."
  },
  "moment.form.localCopy": "Choose visibility with care. In browser-only mode, it is a local cue, not separate-account privacy.",
  "@moment.form.localCopy": {
    "description": "Under the form’s title, in a ledger kept only in this browser."
  },
  "moment.form.kindHelp": "Choose a category, or make one your own.",
  "@moment.form.kindHelp": {
    "description": "Under the Kind of moment menu."
  },
  "moment.form.kindName": "Name this kind of moment",
  "@moment.form.kindName": {
    "description": "Label of the box for naming a kind of moment the person made their own."
  },
  "moment.form.detail": "What would you like to hold?",
  "@moment.form.detail": {
    "description": "Label of the box for the moment’s own words. Optional is shown beside it."
  },
  "moment.form.photoIncluded": "One image is included with every hosted moment",
  "@moment.form.photoIncluded": {
    "description": "Small line beside Photo."
  },
  "moment.form.photoHelp": "JPEG, PNG, or WebP, up to 25 MB. One image is included with every hosted moment.",
  "@moment.form.photoHelp": {
    "description": "Under the photo picker. JPEG, PNG and WebP are file types; MB is megabytes."
  },
  "moment.form.photoHelpAddOn": "JPEG, PNG, or WebP, up to 25 MB. Another image can be added for $1, paid once.",
  "@moment.form.photoHelpAddOn": {
    "description": "Under the photo picker before the form has read the moment. Keep the price exactly as it is."
  },
  "moment.form.photoHeld": "This moment already holds its included image. Another image is $1, paid once.",
  "@moment.form.photoHeld": {
    "description": "Under the photo picker when the moment already has its photo. Keep the price exactly as it is."
  },
  "moment.form.photoReady": "Your extra image is paid for. Choose it now, up to 25 MB.",
  "@moment.form.photoReady": {
    "description": "Under the photo picker once a paid extra image is ready. Keep the price exactly as it is."
  },
  "moment.form.photoMetadataRemoved": "Its location and camera details have been removed on this device, before it is uploaded.",
  "@moment.form.photoMetadataRemoved": {
    "description": "Under the photo picker once a photo is chosen: where it was taken and what took it have been stripped from the file on this device, before it is sent anywhere. It says what has already happened, never a promise."
  },
  "moment.form.removePhoto": "Remove photo",
  "@moment.form.removePhoto": {
    "description": "Button that takes the photo off this moment."
  },
  "mobile.moment.addPhoto": "Add a photo",
  "@mobile.moment.addPhoto": {
    "description": "Button on a saved moment's form that opens the phone's photo picker and adds the chosen photo to the moment."
  },
  "moment.form.buyImage": "Add another image · $1, once",
  "@moment.form.buyImage": {
    "description": "Button that opens payment for a second image on this moment. Keep the price exactly as it is."
  },
  "moment.form.places": "Places",
  "@moment.form.places": {
    "description": "Label of the places a moment can hold. Optional is shown beside it."
  },
  "moment.form.placesPrice": "First place included · each additional place is $1/month",
  "@moment.form.placesPrice": {
    "description": "Beside Places. Keep the price exactly as it is."
  },
  "moment.form.placesHelp": "Add only what helps tell the story. Your device location is requested only when you choose it—never in the background.",
  "@moment.form.placesHelp": {
    "description": "Under Places."
  },
  "moment.form.useLocation": "Use my device location",
  "@moment.form.useLocation": {
    "description": "Button that asks the browser for this device’s location, once."
  },
  "moment.form.findingLocation": "Finding your location…",
  "@moment.form.findingLocation": {
    "description": "Shown on that button while the browser finds the location."
  },
  "moment.form.deviceLocation": "Device location ({latitude}, {longitude})",
  "@moment.form.deviceLocation": {
    "description": "The name given to a place taken from the device: its coordinates. It is kept with the moment as written.",
    "placeholders": {
      "latitude": { "type": "String", "example": "51.5072", "description": "Latitude, four decimals, written as numbers are in code." },
      "longitude": { "type": "String", "example": "-0.1276", "description": "Longitude, four decimals." }
    }
  },
  "moment.form.placeIncluded": "Included",
  "@moment.form.placeIncluded": {
    "description": "Beside the first place: it costs nothing."
  },
  "moment.form.placePrice": "$1/month",
  "@moment.form.placePrice": {
    "description": "Beside each place after the first. Keep the price exactly as it is."
  },
  "moment.form.buyPlace": "Add another place · $1/month",
  "@moment.form.buyPlace": {
    "description": "Button that opens payment for another place on this moment. Keep the price exactly as it is."
  },
  "moment.form.noGeolocation": "This browser cannot share a device location. You can still enter a place.",
  "@moment.form.noGeolocation": {
    "description": "Shown when the browser has no way to give a location."
  },
  "moment.form.locationRefused": "Location was not shared. You can still enter a place in your own words.",
  "@moment.form.locationRefused": {
    "description": "Shown when the location was refused or could not be found."
  },
  "moment.form.visibilityLocal": "Browser only: Private and Share later are local cues, not separate-account privacy controls.",
  "@moment.form.visibilityLocal": {
    "description": "Under the visibility choice in a ledger kept only in this browser."
  },
  "moment.form.moneyNote": "Optional; never counted as a score",
  "@moment.form.moneyNote": {
    "description": "Beside that label."
  },
  "moment.form.amount": "Amount",
  "@moment.form.amount": {
    "description": "Spoken name of the amount box."
  },
  "moment.form.currency": "Currency",
  "@moment.form.currency": {
    "description": "Spoken name of the currency menu."
  },
  "moment.form.heldLocally": "Moment held in this browser.",
  "@moment.form.heldLocally": {
    "description": "Message after holding a moment in a ledger kept only in this browser."
  },
  "moment.removePhoto.title": "Remove this photo?",
  "@moment.removePhoto.title": {
    "description": "Question before removing a moment’s photo."
  },
  "moment.removePhoto.consequence": "This cannot be undone. Removing a photo you paid for doesn’t refund it.",
  "@moment.removePhoto.consequence": {
    "description": "What removing the photo means."
  },
  "moment.removePhoto.pending": "Removing photo…",
  "@moment.removePhoto.pending": {
    "description": "Shown on the button while the photo is removed."
  },
  "moment.removePhoto.done": "Photo removed from this moment.",
  "@moment.removePhoto.done": {
    "description": "Message after removing a photo."
  },
  "journey.form.localEyebrow": "Local journey details",
  "@journey.form.localEyebrow": {
    "description": "Small line above the journey form in a ledger kept only in this browser."
  },
  "journey.form.privateEyebrow": "Private journey details",
  "@journey.form.privateEyebrow": {
    "description": "Small line above the journey form when signed in."
  },
  "journey.form.title": "Begin a shared journey",
  "@journey.form.title": {
    "description": "Title of the form that begins a new journey."
  },
  "journey.form.editTitle": "Edit journey details",
  "@journey.form.editTitle": {
    "description": "Title of the same form when changing a journey."
  },
  "journey.form.localCopy": "Two people share the journey. The information stays in this browser until you export it.",
  "@journey.form.localCopy": {
    "description": "Under the form’s title in a ledger kept only in this browser."
  },
  "journey.form.privateCopy": "Begin with a name. The optional details can wait until they feel useful.",
  "@journey.form.privateCopy": {
    "description": "Under the form’s title when signed in."
  },
  "journey.form.name": "Journey name",
  "@journey.form.name": {
    "description": "Label of the journey’s name."
  },
  "journey.form.namePlaceholder": "e.g. Mountain weekend",
  "@journey.form.namePlaceholder": {
    "description": "Example inside the name box."
  },
  "journey.form.place": "Place or season",
  "@journey.form.place": {
    "description": "Label of an optional place or time of year. Optional is shown beside it."
  },
  "journey.form.placePlaceholder": "Add this only if it helps you recognize the journey",
  "@journey.form.placePlaceholder": {
    "description": "Inside that box."
  },
  "journey.form.began": "When it began",
  "@journey.form.began": {
    "description": "Label of the menu for when the journey began."
  },
  "journey.form.knowDate": "I know the date",
  "@journey.form.knowDate": {
    "description": "Choice in When it began."
  },
  "journey.form.unknownDate": "I don’t remember exactly",
  "@journey.form.unknownDate": {
    "description": "Choice in When it began."
  },
  "journey.form.startDate": "Exact start date",
  "@journey.form.startDate": {
    "description": "Label of the date the journey began."
  },
  "journey.form.lasts": "How long it lasts",
  "@journey.form.lasts": {
    "description": "Label of the menu for when the journey ends."
  },
  "journey.form.forever": "Forever — no end date planned",
  "@journey.form.forever": {
    "description": "Choice in How long it lasts."
  },
  "journey.form.unsure": "Not sure yet",
  "@journey.form.unsure": {
    "description": "Choice in How long it lasts."
  },
  "journey.form.chooseEnd": "Choose an end date",
  "@journey.form.chooseEnd": {
    "description": "Choice in How long it lasts."
  },
  "journey.form.endDate": "Exact end date",
  "@journey.form.endDate": {
    "description": "Label of the date the journey ends."
  },
  "journey.form.firstPerson": "First person",
  "@journey.form.firstPerson": {
    "description": "Label of the first person’s name, in a ledger kept only in this browser."
  },
  "journey.form.secondPerson": "Second person",
  "@journey.form.secondPerson": {
    "description": "Label of the second person’s name."
  },
  "journey.form.personPlaceholder": "Name",
  "@journey.form.personPlaceholder": {
    "description": "Inside each person’s name box."
  },
  "journey.form.create": "Create journey",
  "@journey.form.create": {
    "description": "Button that begins the journey."
  },
  "journey.form.saveChanges": "Save journey changes",
  "@journey.form.saveChanges": {
    "description": "Button that saves changes to a journey."
  },
  "journey.form.synced": "Journey changes synced.",
  "@journey.form.synced": {
    "description": "Message after changing a private journey."
  },
  "journey.form.createdPrivate": "Private journey created. Invite your journeyer in Settings.",
  "@journey.form.createdPrivate": {
    "description": "Message after creating a private journey. Settings is Journey settings."
  },
  "journey.form.updatedLocal": "Journey details updated.",
  "@journey.form.updatedLocal": {
    "description": "Message after changing a journey kept in this browser."
  },
  "journey.form.createdLocal": "New journey created in this browser.",
  "@journey.form.createdLocal": {
    "description": "Message after creating a journey kept in this browser."
  },
  "concern.form.title": "Start a return-to conversation",
  "@concern.form.title": {
    "description": "Title of the form that starts one."
  },
  "concern.form.editTitle": "Edit return-to conversation",
  "@concern.form.editTitle": {
    "description": "Title of the same form when changing one."
  },
  "concern.form.lead": "Use this for something you want to come back to together. It stays open until you choose otherwise.",
  "@concern.form.lead": {
    "description": "Under the form’s title."
  },
  "concern.form.close": "Close concern",
  "@concern.form.close": {
    "description": "Spoken name of the × that closes the form."
  },
  "concern.form.subject": "What would you like to return to?",
  "@concern.form.subject": {
    "description": "Label of the conversation’s short name."
  },
  "concern.form.subjectPlaceholder": "What would feel good to return to?",
  "@concern.form.subjectPlaceholder": {
    "description": "Inside that box."
  },
  "concern.form.context": "A little context",
  "@concern.form.context": {
    "description": "Label of optional words about it. Optional is shown beside it."
  },
  "concern.form.contextPlaceholder": "Record only what everyone in this journey should see",
  "@concern.form.contextPlaceholder": {
    "description": "Inside that box."
  },
  "concern.form.status": "Status",
  "@concern.form.status": {
    "description": "Label of the menu: Open or Resolved."
  },
  "concern.form.keepOpen": "Keep this open",
  "@concern.form.keepOpen": {
    "description": "Button that starts the conversation."
  },
  "concern.form.saveChanges": "Save conversation changes",
  "@concern.form.saveChanges": {
    "description": "Button that saves changes to it."
  },
  "concern.form.synced": "Concern changes synced.",
  "@concern.form.synced": {
    "description": "Message after changing a conversation in a private journey."
  },
  "concern.form.created": "Concern securely synced.",
  "@concern.form.created": {
    "description": "Message after starting a conversation in a private journey."
  },
  "concern.form.updatedLocal": "Concern updated.",
  "@concern.form.updatedLocal": {
    "description": "Message after changing a conversation kept in this browser."
  },
  "concern.form.createdLocal": "Concern logged in this browser.",
  "@concern.form.createdLocal": {
    "description": "Message after starting a conversation kept in this browser."
  },
  "account.dialog.unavailable": "The private account service is not live on this public page yet.",
  "@account.dialog.unavailable": {
    "description": "Under the Account settings title when this copy of the website can’t create accounts."
  },
  "account.dialog.close": "Close account settings",
  "@account.dialog.close": {
    "description": "Spoken name of the × that closes Account settings."
  },
  "signIn.dialog.boundary": "Signing in never uploads, merges, or removes the ledger already held in this browser. Hosted journeys use a separate account home.",
  "@signIn.dialog.boundary": {
    "description": "Above the ways to sign in."
  },
  "signIn.social.apple": "Continue with Apple",
  "@signIn.social.apple": {
    "description": "Apple’s sign-in button. Apple asks for these exact words in English; use the wording Apple gives for your language."
  },
  "signIn.toast.refreshed": "Private journeys refreshed.",
  "@signIn.toast.refreshed": {
    "description": "Message after signing in, once the private journeys are read."
  },
  "signIn.toast.invitedEmail": "Sign in with the invited email, then reopen the invitation link.",
  "@signIn.toast.invitedEmail": {
    "description": "Message when an invitation link is opened while signed out."
  },
  "sharing.copy.signedOut": "Sign in and create a private journey to invite another journeyer.",
  "@sharing.copy.signedOut": {
    "description": "Under Journey sharing when not signed in."
  },
  "sharing.copy.needsJourney": "Your account is ready. Create a private journey to invite another journeyer.",
  "@sharing.copy.needsJourney": {
    "description": "Under Journey sharing when signed in with no private journey open."
  },
  "sharing.copy.here": "{count, plural, one {{count, number, ::group-off} person is here.} other {{count, number, ::group-off} people are here.}}",
  "@sharing.copy.here": {
    "description": "First sentence under Journey sharing: how many people are in the journey.",
    "placeholders": {
      "count": { "type": "Number", "example": "2", "description": "How many people are in the journey." }
    }
  },
  "sharing.copy.room": "There is room to add another person, and everybody here has to agree to them.",
  "@sharing.copy.room": {
    "description": "Follows the count when someone more can be added."
  },
  "sharing.copy.noRoom": "There is no open place right now.",
  "@sharing.copy.noRoom": {
    "description": "Follows the count when nobody more can be added. Never “seat” or “slot”; see the glossary."
  },
  "sharing.copy.reservedOne": "1 place is reserved for {person}, waiting for them to accept the invitation.",
  "@sharing.copy.reservedOne": {
    "description": "Follows the count when the only open place is held for one person invited.",
    "placeholders": {
      "person": { "type": "String", "example": "as•••@example.com", "description": "The person invited: their name once they have joined, otherwise their email, partly hidden with dots." }
    }
  },
  "sharing.copy.reservedMany": "{count, plural, other {{count, number, ::group-off} places are reserved, waiting for the people invited to accept.}}",
  "@sharing.copy.reservedMany": {
    "description": "Follows the count when the open places are held for several people invited (always two or more).",
    "placeholders": {
      "count": { "type": "Number", "example": "2", "description": "How many places are held." }
    }
  },
  "sharing.copy.separately": "Each person signs in separately.",
  "@sharing.copy.separately": {
    "description": "Last sentence under Journey sharing."
  },
  "sharing.invite.email": "Propose a journeyer by email",
  "@sharing.invite.email": {
    "description": "Label of the email box for proposing someone. Proposing asks everyone already in the journey first."
  },
  "sharing.invite.emailPlaceholder": "journeyer@example.com",
  "@sharing.invite.emailPlaceholder": {
    "description": "Example address inside the email box. Keep @example.com; the name before it may be a word in your language, in Latin letters."
  },
  "sharing.invite.emailNote": "Everyone already in this journey has to agree before anything is sent. Until they all do, nothing reaches this person and they learn nothing about the journey.",
  "@sharing.invite.emailNote": {
    "description": "Under the email box."
  },
  "sharing.invite.who": "Who they are",
  "@sharing.invite.who": {
    "description": "Label of an optional note about the person proposed."
  },
  "sharing.invite.whoPlaceholder": "My sister, who has been asking after you",
  "@sharing.invite.whoPlaceholder": {
    "description": "Example inside that box."
  },
  "sharing.invite.whoNote": "Optional, and shown to the journeyers deciding, so they answer about a person rather than an address.",
  "@sharing.invite.whoNote": {
    "description": "Under that box."
  },
  "sharing.invite.submit": "Propose this person",
  "@sharing.invite.submit": {
    "description": "Button that asks everyone in the journey about this person."
  },
  "sharing.invite.pending": "Proposing…",
  "@sharing.invite.pending": {
    "description": "Shown on that button while it works."
  },
  "sharing.invite.sent": "Invitation sent. The journeyer must use their own verified account.",
  "@sharing.invite.sent": {
    "description": "Message when the invitation went straight out (nobody else was there to ask)."
  },
  "sharing.invite.proposed": "Proposed. Nothing is sent to them until every journeyer agrees.",
  "@sharing.invite.proposed": {
    "description": "Message after proposing someone."
  },
  "sharing.record.title": "Journey record",
  "@sharing.record.title": {
    "description": "Heading over the people in the journey and when each joined."
  },
  "sharing.record.reserved": "Places reserved",
  "@sharing.record.reserved": {
    "description": "Heading over places held for people invited."
  },
  "sharing.record.deciding": "People being decided on",
  "@sharing.record.deciding": {
    "description": "Heading over proposals still waiting for answers."
  },
  "sharing.record.settled": "Proposals already settled",
  "@sharing.record.settled": {
    "description": "Heading over proposals that are decided."
  },
  "sharing.record.invitations": "Invitation history",
  "@sharing.record.invitations": {
    "description": "Heading over every invitation sent."
  },
  "sharing.member.createdBy": "Created by {name}",
  "@sharing.member.createdBy": {
    "description": "A row in Journey record: who created the journey.",
    "placeholders": {
      "name": { "type": "String", "example": "Asha", "description": "A journeyer’s name, as they wrote it, in any script." }
    }
  },
  "sharing.member.joined": "{name} joined the journey",
  "@sharing.member.joined": {
    "description": "A row in Journey record: someone who joined.",
    "placeholders": {
      "name": { "type": "String", "example": "Asha", "description": "A journeyer’s name, as they wrote it, in any script." }
    }
  },
  "sharing.member.createdAt": "Created {time}",
  "@sharing.member.createdAt": {
    "description": "Under the creator’s row: when.",
    "placeholders": {
      "time": { "type": "Object", "example": "Oct 12, 2026, 3:04 PM", "description": "A date and time, already written for the reader’s language. Drawn as a time element." }
    }
  },
  "sharing.member.joinedAt": "Joined {time}",
  "@sharing.member.joinedAt": {
    "description": "Under a row: when they joined.",
    "placeholders": {
      "time": { "type": "Object", "example": "Oct 12, 2026, 3:04 PM", "description": "A date and time, already written for the reader’s language. Drawn as a time element." }
    }
  },
  "sharing.member.role": "{role, select, owner {Owner} creator {Creator} other {Journeyer}}",
  "@sharing.member.role": {
    "description": "A person’s part in the journey, beside their row. Owner holds the journey for everyone; Creator made it; Journeyer is anyone else.",
    "placeholders": {
      "role": { "type": "String", "example": "owner", "description": "owner, creator or journeyer. Chosen by, never shown." }
    }
  },
  "sharing.member.roleYou": "{role, select, owner {Owner · You} creator {Creator · You} other {Journeyer · You}}",
  "@sharing.member.roleYou": {
    "description": "The same, on the reader’s own row.",
    "placeholders": {
      "role": { "type": "String", "example": "owner", "description": "owner, creator or journeyer. Chosen by, never shown." }
    }
  },
  "sharing.member.makeOwner": "Make owner",
  "@sharing.member.makeOwner": {
    "description": "Button the owner sees beside another person: hand the journey to them."
  },
  "sharing.member.showOthers": "{count, plural, one {Show the other {count, number, ::group-off} person} other {Show the other {count, number, ::group-off} people}}",
  "@sharing.member.showOthers": {
    "description": "Opens the rest of a long list of people.",
    "placeholders": {
      "count": { "type": "Number", "example": "93", "description": "How many more people there are." }
    }
  },
  "sharing.member.emptyTitle": "No one is listed yet",
  "@sharing.member.emptyTitle": {
    "description": "Shown while the list of people is empty."
  },
  "sharing.member.emptyBody": "The people in this journey appear here once the account service answers.",
  "@sharing.member.emptyBody": {
    "description": "Under No one is listed yet."
  },
  "sharing.reserved.title": "1 place reserved — waiting for {person} to accept the invitation",
  "@sharing.reserved.title": {
    "description": "A row under Places reserved.",
    "placeholders": {
      "person": { "type": "String", "example": "as•••@example.com", "description": "The person invited: their name once they have joined, otherwise their email, partly hidden with dots." }
    }
  },
  "sharing.invitation.sentBy": "Sent by {name} · {time}",
  "@sharing.invitation.sentBy": {
    "description": "Under an invitation: who sent it, and when.",
    "placeholders": {
      "name": { "type": "String", "example": "Asha", "description": "A journeyer’s name, as they wrote it, in any script." },
      "time": { "type": "Object", "example": "Oct 12, 2026, 3:04 PM", "description": "A date and time, already written for the reader’s language. Drawn as a time element." }
    }
  },
  "sharing.invitation.sentTo": "Invitation sent to {person}",
  "@sharing.invitation.sentTo": {
    "description": "A row in Invitation history.",
    "placeholders": {
      "person": { "type": "String", "example": "as•••@example.com", "description": "The person invited: their name once they have joined, otherwise their email, partly hidden with dots." }
    }
  },
  "sharing.invitation.timeToJoin": "Time to join: {left}",
  "@sharing.invitation.timeToJoin": {
    "description": "How long the person invited has left to accept.",
    "placeholders": {
      "left": { "type": "String", "example": "3d 04h 07m left", "description": "The time left, already written (common.time.*)." }
    }
  },
  "sharing.invitation.withdraw": "Withdraw the invitation",
  "@sharing.invitation.withdraw": {
    "description": "Button that takes an invitation back; also the button in the question that follows."
  },
  "sharing.invitation.sendAgainNote": "Everyone has already agreed, so it can be sent again until {time} without asking them again.",
  "@sharing.invitation.sendAgainNote": {
    "description": "Under an invitation that can be sent again.",
    "placeholders": {
      "time": { "type": "String", "example": "Oct 12, 2026, 3:04 PM", "description": "A date and time, already written." }
    }
  },
  "sharing.invitation.sendAgain": "Send it again",
  "@sharing.invitation.sendAgain": {
    "description": "Button that sends the invitation again."
  },
  "sharing.invitation.status": "{status, select, accepted {Accepted} expired {Expired} pending {Pending} revoked {Revoked} withdrawn {Withdrawn} other {Recorded}}",
  "@sharing.invitation.status": {
    "description": "Tag beside an invitation: what happened to it.",
    "placeholders": {
      "status": { "type": "String", "example": "pending", "description": "The invitation’s state. Chosen by, never shown." }
    }
  },
  "sharing.invitation.withdrawTitle": "Withdraw the invitation to {email}?",
  "@sharing.invitation.withdrawTitle": {
    "description": "Question before taking an invitation back.",
    "placeholders": {
      "email": { "type": "String", "example": "as•••@example.com", "description": "An email address, partly hidden with dots. Never translated." }
    }
  },
  "sharing.invitation.withdrawConsequence": "Their link stops working, and the place it held is free again straight away. The journey’s history keeps a record that it was withdrawn.",
  "@sharing.invitation.withdrawConsequence": {
    "description": "What taking it back means."
  },
  "sharing.invitation.withdrawn": "Withdrawn. The link no longer works, and the place is free again.",
  "@sharing.invitation.withdrawn": {
    "description": "Message afterwards."
  },
  "sharing.invitation.sentAgain": "Sent again. Everyone had already agreed, so nobody was asked again.",
  "@sharing.invitation.sentAgain": {
    "description": "Message after sending again."
  },
  "sharing.proposal.proposedBy": "Proposed by {name} · {time}",
  "@sharing.proposal.proposedBy": {
    "description": "Under a proposal: who proposed the person, and when.",
    "placeholders": {
      "name": { "type": "String", "example": "Asha", "description": "A journeyer’s name, as they wrote it, in any script." },
      "time": { "type": "Object", "example": "Oct 12, 2026, 3:04 PM", "description": "A date and time, already written for the reader’s language. Drawn as a time element." }
    }
  },
  "sharing.proposal.waiting": "{agreed, number, ::group-off} of {asked, number, ::group-off} have agreed · {pending, number, ::group-off} still to answer",
  "@sharing.proposal.waiting": {
    "description": "Under a proposal still being decided.",
    "placeholders": {
      "agreed": { "type": "Number", "example": "1", "description": "How many agreed." },
      "asked": { "type": "Number", "example": "3", "description": "How many were asked." },
      "pending": { "type": "Number", "example": "2", "description": "How many have not answered." }
    }
  },
  "sharing.proposal.agreedCount": "{agreed, number, ::group-off} of {asked, number, ::group-off} agreed",
  "@sharing.proposal.agreedCount": {
    "description": "Under a settled proposal.",
    "placeholders": {
      "agreed": { "type": "Number", "example": "3", "description": "How many agreed." },
      "asked": { "type": "Number", "example": "3", "description": "How many were asked." }
    }
  },
  "sharing.proposal.timeToAnswer": "Time to answer: {left}",
  "@sharing.proposal.timeToAnswer": {
    "description": "How long the journeyers have left to answer.",
    "placeholders": {
      "left": { "type": "String", "example": "3d 04h 07m left", "description": "The time left, already written (common.time.*)." }
    }
  },
  "sharing.proposal.agree": "Agree to add them",
  "@sharing.proposal.agree": {
    "description": "Button: agree to add the person proposed. Drawn with the same weight as Decline, on purpose."
  },
  "sharing.proposal.decline": "Decline",
  "@sharing.proposal.decline": {
    "description": "Button: decline adding the person proposed."
  },
  "sharing.proposal.withdraw": "Withdraw",
  "@sharing.proposal.withdraw": {
    "description": "Button for whoever proposed the person, or the owner: take the question back."
  },
  "sharing.proposal.whoWasAsked": "Who was asked, and when",
  "@sharing.proposal.whoWasAsked": {
    "description": "Opens the record of each person asked and their answer."
  },
  "sharing.proposal.askedWaiting": "Asked {time} · has not answered yet",
  "@sharing.proposal.askedWaiting": {
    "description": "One person’s row in the record of a proposal: when they were asked, and that they have not answered.",
    "placeholders": {
      "time": { "type": "Object", "example": "Oct 12, 2026, 3:04 PM", "description": "A date and time, already written for the reader’s language. Drawn as a time element." }
    }
  },
  "sharing.proposal.askedAnswered": "Asked {time} · {decision, select, agree {agreed} other {declined}} {answeredAt}",
  "@sharing.proposal.askedAnswered": {
    "description": "One person’s row in the record of a proposal: when they were asked, what they answered, and when.",
    "placeholders": {
      "time": { "type": "Object", "example": "Oct 12, 2026, 3:04 PM", "description": "A date and time, already written for the reader’s language. Drawn as a time element." },
      "decision": { "type": "String", "example": "agree", "description": "agree or decline. Chosen by, never shown." },
      "answeredAt": { "type": "String", "example": "Oct 12, 2026, 3:04 PM", "description": "When they answered, already written." }
    }
  },
  "sharing.proposal.status": "{status, select, open {Waiting on everyone} agreed {Agreed} declined {Declined} withdrawn {Withdrawn} lapsed {Lapsed} other {Recorded}}",
  "@sharing.proposal.status": {
    "description": "Tag beside a proposal: where it stands.",
    "placeholders": {
      "status": { "type": "String", "example": "open", "description": "The proposal’s state. Chosen by, never shown." }
    }
  },
  "sharing.proposal.decision": "{decision, select, agree {Agreed} decline {Declined} pending {Waiting} other {Recorded}}",
  "@sharing.proposal.decision": {
    "description": "Tag beside one person’s answer.",
    "placeholders": {
      "decision": { "type": "String", "example": "pending", "description": "Their answer. Chosen by, never shown." }
    }
  },
  "sharing.proposal.withdrawTitle": "Withdraw the proposal to add {email}?",
  "@sharing.proposal.withdrawTitle": {
    "description": "Question before taking a proposal back.",
    "placeholders": {
      "email": { "type": "String", "example": "as•••@example.com", "description": "An email address, partly hidden with dots. Never translated." }
    }
  },
  "sharing.proposal.withdrawConsequence": "The question is taken back, and nothing is sent to them. Nobody is recorded as having refused, and this person can be proposed again later.",
  "@sharing.proposal.withdrawConsequence": {
    "description": "What taking it back means."
  },
  "sharing.proposal.withdrawConfirm": "Withdraw the proposal",
  "@sharing.proposal.withdrawConfirm": {
    "description": "Button that takes it back."
  },
  "sharing.proposal.withdrawn": "Withdrawn. Nothing was sent, and nobody was added.",
  "@sharing.proposal.withdrawn": {
    "description": "Message afterwards."
  },
  "sharing.proposal.agreeTitle": "Agree to add {email}?",
  "@sharing.proposal.agreeTitle": {
    "description": "Question before agreeing.",
    "placeholders": {
      "email": { "type": "String", "example": "as•••@example.com", "description": "An email address, partly hidden with dots. Never translated." }
    }
  },
  "sharing.proposal.agreeConsequence": "Once every journeyer has agreed and they join, they can read every moment this journey has shared, including moments shared long before they arrived. Moments you kept private stay private.",
  "@sharing.proposal.agreeConsequence": {
    "description": "What agreeing means."
  },
  "sharing.proposal.declineTitle": "Decline adding {email}?",
  "@sharing.proposal.declineTitle": {
    "description": "Question before declining.",
    "placeholders": {
      "email": { "type": "String", "example": "as•••@example.com", "description": "An email address, partly hidden with dots. Never translated." }
    }
  },
  "sharing.proposal.declineConsequence": "This settles it for everybody straight away, and nothing is ever sent to them. Your name and the time are kept with the decision, where the other journeyers can see them.",
  "@sharing.proposal.declineConsequence": {
    "description": "What declining means."
  },
  "sharing.proposal.everyoneAgreed": "Everyone agreed. The invitation is on its way to them.",
  "@sharing.proposal.everyoneAgreed": {
    "description": "Message when the last agreement sends the invitation."
  },
  "sharing.proposal.agreed": "Your agreement is recorded. Nothing is sent until everyone has answered.",
  "@sharing.proposal.agreed": {
    "description": "Message after agreeing."
  },
  "sharing.proposal.declined": "Recorded. Nobody was added, and nothing was sent to them.",
  "@sharing.proposal.declined": {
    "description": "Message after declining."
  },
  "status.banner.storageFull": "This browser could not save that change. It shows for now, but may not be here the next time this page opens.",
  "@status.banner.storageFull": {
    "description": "Shown when the browser refused to keep a change."
  },
  "status.banner.offline": "You are offline. This journey is still here, and anything needing the account service will wait until you reconnect.",
  "@status.banner.offline": {
    "description": "Shown while the device has no connection. It clears itself."
  },
  "error.server.internalError": "The service could not complete the request.",
  "@error.server.internalError": {
    "description": "Something went wrong on the service’s side."
  },
  "error.server.invalidCsrf": "Refresh the page and try again.",
  "@error.server.invalidCsrf": {
    "description": "The page’s security check is out of date."
  },
  "error.server.invalidOrigin": "This request did not come from the Together Ledger app.",
  "@error.server.invalidOrigin": {
    "description": "A request came from somewhere else. Keep the product name as it is."
  },
  "error.server.linkRequired": "You already have an account with this email. Enter its password once to connect it.",
  "@error.server.linkRequired": {
    "description": "Signing in with Google or Apple for the first time, with the email of an account that has a password."
  },
  "error.server.invitationExists": "An invitation for that person is already waiting.",
  "@error.server.invitationExists": {
    "description": "Proposing someone already invited."
  },
  "error.server.alreadyMember": "That person is already in this journey.",
  "@error.server.alreadyMember": {
    "description": "Proposing someone already in the journey."
  },
  "error.server.proposalExists": "This journey is already deciding about that person.",
  "@error.server.proposalExists": {
    "description": "Proposing someone already proposed."
  },
  "error.server.proposalClosed": "This proposal has already been settled.",
  "@error.server.proposalClosed": {
    "description": "Answering a proposal that is decided."
  },
  "error.server.proposalLapsed": "This proposal ran out of time, and nobody was added.",
  "@error.server.proposalLapsed": {
    "description": "Answering a proposal whose time ran out."
  },
  "error.server.alreadyDecided": "You have already answered this proposal.",
  "@error.server.alreadyDecided": {
    "description": "Answering a proposal twice."
  },
  "error.server.consentIncomplete": "Not everyone in this journey has agreed yet.",
  "@error.server.consentIncomplete": {
    "description": "Something needs everyone’s agreement first."
  },
  "error.server.invalidInvitation": "This invitation is invalid, expired, or belongs to another email address.",
  "@error.server.invalidInvitation": {
    "description": "Opening an invitation link that can’t be used."
  },
  "error.server.journeyOfOne": "You are the only person in this journey, so there is nobody to leave it to.",
  "@error.server.journeyOfOne": {
    "description": "Leaving a journey nobody else is in."
  }
}
