{
  "app": {
    "errorTitle": "Something went wrong",
    "errorDescription": "An error occurred while rendering the page. Please reload and try again.",
    "notFoundTitle": "Page not found",
    "notFoundDescription": "The URL may be incorrect, or the page may have been removed.",
    "skipToMain": "Skip to main content",
    "offlineBanner": "You’re offline. Some changes can’t be saved until you’re back online.",
    "close": "Close"
  },
  "home": {
    "tagline": "Free bill splitter, no signup. Share one URL to start.",
    "baseCurrency": "Base currency",
    "baseCurrencyAria": "Select base currency",
    "start": "Start a new split",
    "reuseHeading": "Recent splits",
    "reuseOpenAria": "Open \"{{title}}\"",
    "reuseOpenExpiredAria": "Open \"{{title}}\" (may have expired)",
    "reuseExpiredHint": "(may have expired)",
    "reuseTemplateShort": "Reuse members",
    "reuseTemplateAria": "Start a new split with the members of \"{{title}}\"",
    "reuseRemove": "Remove from history",
    "reuseRemoveAria": "Remove \"{{title}}\" from history",
    "reuseRemovedToast": "Removed \"{{title}}\" from history",
    "reuseRemoveUndo": "Undo",
    "reuseUntitledByDate": "Split from {{date}}",
    "reuseEmptyMembers": "No members yet",
    "heroPitch": "Splitting bills? Three seconds.",
    "autoCreating": "Creating your new split…",
    "autoCreateFailed": "Couldn’t create a new split group",
    "autoCreateFailedBody": "This might be a connection issue. Check your network and try again.",
    "autoCreateRetry": "Try again",
    "autoCreateDismiss": "Dismiss"
  },
  "nav": {
    "startNewAria": "Start a new split"
  },
  "site": {
    "footer": {
      "operator": "Operator",
      "privacy": "Privacy Policy",
      "terms": "Terms of Service",
      "cookieSettings": "Cookie Settings"
    }
  },
  "group": {
    "untitledPlaceholder": "Untitled split",
    "titleLabel": "Group name",
    "titleHintOptional": "Optional",
    "titleInputPlaceholder": "e.g. Hokkaido trip",
    "notFound": "Group not found",
    "backToTop": "Back to home",
    "members": "Members",
    "expenses": "Expenses",
    "noExpensesYet": "No expenses yet",
    "addFirstMemberFirst": "Add at least one member first",
    "addExpense": "+ Add expense",
    "detailsToggle": "Show spending",
    "expensesTotal": "Total",
    "settlement": "Settlement",
    "settled": "All settled up",
    "settlementCopy": "Copy result",
    "settlementCopyAria": "Copy settlement to clipboard",
    "settlementCopyDone": "Copied",
    "settlementCopyFailed": "Copy failed",
    "settlementCopyHeader": "{{title}} — settlement",
    "fxPendingBalances": "Some expenses are missing exchange rates, so balances are not finalized.",
    "fxPendingSettlement": "Some expenses are missing exchange rates, so settlement is on hold.",
    "settlementOvershootNote": "More was settled than was owed at that point, so a transfer below may point the other way. That happens when the original expense is deleted or its amount lowered.",
    "fxPendingBadge": "FX pending",
    "approxPrefix": "≈",
    "unknownMember": "Unknown",
    "expensesCopy": "Copy expenses",
    "expensesCopyAria": "Copy expenses as a table (for Excel / Sheets)",
    "expensesCopyDone": "Copied",
    "expensesCopyFailed": "Could not copy expenses",
    "settingsAria": "Group settings",
    "roundingUnit": "Rounding unit",
    "titleEditAria": "Edit title \"{{title}}\"",
    "titleEditEmptyAria": "Edit title",
    "titleUpdateFailed": "Failed to update title",
    "titleSaved": "Title saved",
    "titleAria": "Split title",
    "paidByConnector": " paid",
    "splitTargetsAriaLabel": "Split among {{names}}",
    "splitTargetsCompact": "{{head}} +{{rest}} more",
    "copyLink": "Copy URL",
    "copyLinkCopied": "Copied",
    "copyLinkAria": "Copy group URL",
    "copyLinkFailed": "Failed to copy URL",
    "share": "Share",
    "shareAria": "Share group URL",
    "shareDefaultText": "Split the bill",
    "sharePasswordReminder": "Send the password through a different channel",
    "memberSeparator": ", ",
    "settlementRoundingNote": "Settlements are rounded to {{unit}}, so they may differ slightly from each member’s balance.",
    "settledBadge": "Settled",
    "settledUndoAria": "Undo the settled {{amount}} from {{from}} to {{to}}",
    "settledUndoConfirmTitle": "Undo this settlement?",
    "settledUndoConfirm": "{{amount}} from {{from}} to {{to}} goes back to unsettled.",
    "settledUndoProceed": "Undo",
    "settledUndoDone": "Settlement undone",
    "settledUndoFailed": "Couldn’t undo the settlement",
    "expenseEditAria": "Edit {{description}}",
    "expenseDeleteFailed": "Failed to delete expense",
    "expenseDeleteDone": "Expense deleted",
    "expenseDeleteConfirmTitle": "Delete this expense?",
    "expenseDeleteConfirm": "\"{{description}}\" will be deleted. This action cannot be undone. Settlements you marked as paid are kept.",
    "expenseDeleteProceed": "Delete",
    "templateCopiedFrom": "Members, currency, rounding unit and expiry copied from \"{{title}}\".",
    "templateCopiedFromUntitled": "Members, currency, rounding unit and expiry copied from the previous split.",
    "expiredTitle": "This URL has expired",
    "expiredDescription": "This group is no longer accessible, and the data cannot be restored.",
    "expiredPreventionHint": "Next time, pick \"None\" to keep the group around longer.",
    "startNewSplit": "Start a new split",
    "notFoundTitle": "Group not found",
    "notFoundDescription": "This URL doesn’t match any group, or the group has been deleted. Ask the person who shared it to double-check the URL, or start a new split.",
    "createNew": "Start a new split",
    "loadFailedTitle": "Connection unstable",
    "loadFailedDescription": "Check your network connection and try again.",
    "retry": "Retry",
    "loadingMessage": "Loading your group",
    "loadingSlowHint": "Your connection seems slow",
    "loadingSlowAction": "Reload",
    "hero": {
      "settled": "✓ Settled up",
      "noExpenses": "Record your first expense",
      "addExpense": "+ Add expense",
      "addExpenseFab": "Add expense (floating button)",
      "fxPending": "Waiting for exchange rates",
      "fxPendingDescription": "Open an expense flagged as pending and tap \"Update\" to re-fetch the latest rates.",
      "pickFromMembers": "Pick yourself to see your balance",
      "youBadge": "You",
      "receive": "<amt>{{amount}}</amt> to receive",
      "pay": "<amt>{{amount}}</amt> to pay",
      "receiveFrom": "<amt>{{amount}}</amt> to receive <who>(from {{names}})</who>",
      "payTo": "<amt>{{amount}}</amt> to pay <who>(to {{names}})</who>"
    },
    "pageTitle": "{{title}} · bill split",
    "ogDescription_one": "{{count}} person is splitting this bill. Open it and pick yourself to see what you owe or get back. No sign-up, no app.",
    "ogDescription_other": "{{count}} people are splitting this bill. Open it and pick yourself to see what you owe or get back. No sign-up, no app.",
    "ogDescriptionEmpty": "A bill split with no sign-up. Just open the link to join."
  },
  "passwordGate": {
    "title": "Enter password",
    "description": "This group is password-protected. Enter the password shared by the creator.",
    "placeholder": "Password",
    "submit": "Open",
    "wrongPassword": "Wrong password",
    "saltUnavailable": "Reload the page and try again",
    "networkError": "Could not connect. Check your network and try again.",
    "failedAttempts_one": "{{count}} failed attempt",
    "failedAttempts_other": "{{count}} failed attempts",
    "lockedTitle": "Temporarily locked",
    "lockedDescription": "Locked due to repeated failures. Try again in about {{minutes}} minute(s).",
    "rememberLabel": "Remember on this browser",
    "rememberHint": "Skip the password next time. Leave OFF on shared devices."
  },
  "shareSheet": {
    "title": "Share the link",
    "close": "Close",
    "line": "LINE",
    "whatsapp": "WhatsApp",
    "email": "Email",
    "copy": "Copy URL",
    "copied": "Copied",
    "system": "Share via…"
  },
  "csv": {
    "headerCreatedAt": "Created at",
    "headerDescription": "Item",
    "headerCurrency": "Currency",
    "headerAmount": "Amount",
    "headerBaseCurrency": "Base currency",
    "headerAmountInBase": "Amount in base",
    "headerExchangeRate": "FX rate",
    "headerPaidBy": "Paid by",
    "headerPayers": "Owed by"
  },
  "expenseForm": {
    "titleCreate": "Add expense",
    "titleEdit": "Edit expense",
    "titleEditWith": "Edit \"{{description}}\"",
    "sheetDescription": "Enter who paid, how much, and how the cost is shared.",
    "description": "Description",
    "descriptionPlaceholder": "e.g. Dinner",
    "amount": "Amount",
    "currencyAria": "Currency for this expense",
    "paidBy": "Paid by",
    "paidByPlaceholder": "Select a payer",
    "splitTabsAria": "Split method",
    "tabEqual": "Equal",
    "tabWeighted": "Weighted",
    "tabExact": "Exact",
    "splitTargetsLegend": "Split among (at least 1)",
    "splitTargetsLegendCount": "Split among ({{selected}}/{{total}})",
    "splitTargetsPerPerson": "{{amount}} per person",
    "splitTargetsRequired": "Select at least 1 person",
    "errorDescriptionRequired": "Enter a description",
    "errorPayerRequired": "Select who paid",
    "errorAmountRequired": "Enter the amount",
    "errorAmountPositive": "Enter an amount greater than 0",
    "errorAmountTooLarge": "Amount exceeds the maximum ({{max}})",
    "exactLegend": "Exact amounts (must sum to total)",
    "exactSumLine": "Sum {{sum}} / {{total}}",
    "exactSumLineEmpty": "Sum {{sum}} / —",
    "exactShortBy": "({{amount}} short)",
    "exactOverBy": "({{amount}} over)",
    "exactClearAll": "Clear exact amounts and revert to equal split",
    "weightedLegend": "Weight = ratio relative to 1 (2.0 = pays double, 0.5 = pays half, 0 = doesn’t pay)",
    "weightedSum": "Sum of weights {{sum}}",
    "weightedSumWithUnit": "Sum of weights {{sum}} (= {{unit}} per weight 1.0)",
    "weightZeroLabel": "no share",
    "weightDecreaseAria": "Decrease {{name}}’s weight by 0.5",
    "weightDecreaseDisabledAria": "{{name}} is set to \"no share\" — can’t be lowered further",
    "weightIncreaseAria": "Increase {{name}}’s weight by 0.5",
    "weightAria": "{{name}}’s weight",
    "errorExactNeedOne": "Enter an amount for at least one person",
    "errorExactSumMismatch": "Sum doesn’t match total (sum {{sum}} / total {{total}})",
    "errorWeightedNeedOne": "Nobody would be charged — give at least one person a weight between 0.1 and 10",
    "errorWeightedSumZero": "Sum of weights must be greater than 0",
    "errorAmountInvalid": "Enter the amount as a number",
    "errorWeightInvalid": "Enter each weight as a number",
    "errorWeightBlank": "{{name}}’s weight is blank — enter 0 to 10",
    "errorCreateFailed": "Failed to add expense",
    "errorUpdateFailed": "Failed to update expense",
    "submitCreate": "Add",
    "submitUpdate": "Update",
    "cancel": "Cancel",
    "tabSwitchConfirmTitle": "Switch tab?",
    "tabSwitchConfirm": "Switching to another split mode will discard what you’ve entered. Continue?",
    "tabSwitchProceed": "Switch",
    "createdAt": "Recorded on {{date}}",
    "delete": "Delete this expense",
    "close": "Close"
  },
  "memberAdd": {
    "tabsAria": "Add method",
    "tabSingle": "One by one",
    "tabBulk": "Paste many",
    "memberDeleteFailed": "Failed to remove member",
    "memberDeleteDone": "Removed {{name}}",
    "memberDeleteConfirmTitle": "Remove {{name}}?",
    "memberDeleteConfirm": "{{name}} will be removed from this group.",
    "memberDeleteConfirmWithExpenses_one": "{{name}} will be removed from this group. {{count}} expense will keep them listed as \"unknown\" and cannot be restored.",
    "memberDeleteConfirmWithExpenses_other": "{{name}} will be removed from this group. {{count}} expenses will keep them listed as \"unknown\" and cannot be restored.",
    "memberDeleteProceed": "Remove",
    "addMoreToggle": "Add a member…",
    "memberUpdateFailed": "Failed to update member name",
    "memberNameAria": "Member name",
    "singlePlaceholder": "Add a member",
    "singlePlaceholderEmpty": "Enter the first member’s name",
    "submitAdd": "Add",
    "bulkPlaceholder": "e.g.\nAlice, Bob\nCharlie\tDave",
    "bulkSeparatorHint": "Separators: comma / tab / newline / Japanese comma / full-width space (regular space is kept for first/last name)",
    "bulkAddCount": "Adding {{count}}",
    "bulkSkippedDup_one": "({{count}} duplicate skipped)",
    "bulkSkippedDup_other": "({{count}} duplicates skipped)",
    "bulkSkippedTooLong": "({{count}} skipped — over {{max}} characters)",
    "bulkOverflow": "({{count}} cannot be added — exceeds the 50-member limit)",
    "bulkPreviewAria": "Preview of members to be added",
    "errorBulkFailed": "Bulk add failed",
    "errorNameRequired": "Enter a member name",
    "errorBulkRequired": "Paste the names",
    "errorBulkNoneToAdd": "No names left to add",
    "submitBulkAddCount": "Add {{count}} at once",
    "thisIsMeAria": "Select {{name}} as yourself",
    "claimHint": "Tap if this is you"
  },
  "groupSettings": {
    "title": "Group settings",
    "description": "Settings for this group — base currency, rounding, URL expiration, and password.",
    "close": "Close",
    "expirySection": "URL expiration",
    "expiryRemaining": "{{days}} day(s) left. Counted from the last activity (a member added, an expense saved, etc.), so it stays alive while you’re using it.",
    "expiryNoneActive": "No expiration — anyone with the URL can view it indefinitely. Pick a number of days and the URL expires that many days after the last activity (a member added, an expense saved, etc.).",
    "baseCurrency": "Base currency",
    "baseCurrencyHint": "Switches the currency used to display totals. The amounts you entered stay the same.",
    "baseCurrencyChanged": "Base currency changed to {{currency}}",
    "baseCurrencyFxUnavailable": "Couldn’t fetch exchange rates. Please try again.",
    "baseCurrencyFxPairMissing": "No exchange rate available for {{currency}}, so we can’t switch.",
    "baseCurrencyChangeFailed": "Couldn’t change the base currency. Please try again.",
    "roundingUnitHint": "Rounds each person’s transfer to this unit so it’s easier to see who owes whom.",
    "expiryNone": "None",
    "expiryDays": "{{days}} days",
    "createdAt": "Created {{date}}",
    "passwordSection": "Password protection",
    "passwordEnabled": "On",
    "passwordDisabled": "Off",
    "passwordIntro": "Restrict access to people who know the URL and the password.",
    "passwordPlaceholder": "New password (8+ chars)",
    "passwordConfirmPlaceholder": "Repeat password",
    "passwordCurrentPlaceholder": "Current password",
    "passwordSet": "Set password",
    "passwordChange": "Change password",
    "passwordClear": "Remove password",
    "passwordClearConfirmTitle": "Remove password protection?",
    "passwordClearConfirm": "Anyone with the URL will be able to access this group. You can re-enable protection at any time.",
    "passwordWarning": "If you forget the password, nobody can recover it. Note it down somewhere safe.",
    "passwordMismatch": "Passwords don’t match",
    "passwordPolicyShort": "Password must be at least 8 characters",
    "passwordCurrentRequired": "Enter your current password",
    "passwordCurrentWrong": "Current password is wrong",
    "passwordLocked": "Temporarily locked due to repeated failures. Wait a while and try again",
    "passwordSaveFailed": "Failed to save",
    "passwordCacheActive": "A password is saved on this browser",
    "passwordCacheClear": "Forget"
  },
  "transfer": {
    "buttonAria": "Send {{amount}} from {{from}} to {{to}}",
    "dialogTitle": "Send {{amount}} to {{name}}",
    "dialogTitleReceive": "Receive {{amount}} from {{name}}",
    "description": "Transfer screen from {{from}} to {{to}}.",
    "amountToSend": "Amount to send",
    "amountToReceive": "Amount to receive",
    "copyAmount": "Copy amount",
    "amountCopied": "Amount copied",
    "close": "Close",
    "markAsPaid": "Mark as paid",
    "markAsPaidConfirmTitle": "Mark as settled?",
    "markAsReceived": "Mark as received",
    "markAsPaidConfirm": "This adds a settlement record of {{amount}} from {{from}} to {{to}}. You can undo it later by tapping its row under Settlement.",
    "markAsPaidProceed": "Mark as settled",
    "markAsPaidDescription": "{{from}} → {{to}} (settlement)",
    "markAsPaidFailed": "Failed to add settlement record",
    "markAsPaidDone": "Marked as settled"
  },
  "currencySelect": {
    "searchPlaceholder": "Search by code / country / symbol",
    "noResults": "No matches",
    "sectionRecent": "Recent",
    "sectionMajor": "Major currencies",
    "sectionOthers": "Others"
  },
  "lang": {
    "switcherAria": "Language",
    "ja": "日本語",
    "en": "English",
    "zh": "中文(简体)",
    "ko": "한국어",
    "de": "Deutsch",
    "es": "Español",
    "fr": "Français",
    "pt": "Português"
  },
  "memberSheet": {
    "description": "Rename this member, switch to their viewpoint, or remove them",
    "descriptionNoClaim": "Rename or remove this member",
    "nameLabel": "Name",
    "thisIsMe": "This is me",
    "delete": "Remove this member",
    "openAria": "{{name}} details",
    "openAriaYou": "{{name}} (you) details",
    "titleYou": "{{name}} (you)",
    "close": "Close"
  }
}
