{
  "a11y": {
    "bold": "Bold",
    "decrement": "Decrease",
    "embeddedVideo": "Embedded video",
    "findMyLocation": "Find my location",
    "home": "Home",
    "increment": "Increase",
    "italic": "Italic",
    "link": "Link",
    "maxPrice": "Maximum price",
    "minPrice": "Minimum price",
    "openPicker": "Open picker",
    "remove": "Remove",
    "underline": "Underline",
    "uploadPreview": "Uploaded file {index}",
    "zoomIn": "Zoom in",
    "zoomOut": "Zoom out"
  },
  "account": {
    "changeEmail": "Change email",
    "changePassword": "Change password",
    "emailChangeConfirmed": "Your email has been updated.",
    "emailChangeInvalid": "This confirmation link is invalid or has expired.",
    "emailChangeSent": "Confirm the change via the link sent to your new email.",
    "emailTaken": "That email is already in use.",
    "newEmail": "New email",
    "noEmail": "Not set",
    "passwordHint": "Send a reset link to your email",
    "passwordResetSent": "We sent a password reset link to your email.",
    "telegram": {
      "hint": "Get notifications and reply to guests from Telegram",
      "link": "Link Telegram",
      "linked": "Linked",
      "title": "Telegram"
    }
  },
  "activity": {
    "activityType": {
      "Culture": "Culture",
      "Education": "Education",
      "Entertainment": "Entertainment",
      "Food": "Food & Drink",
      "Nature": "Nature",
      "Sports": "Sports",
      "Wellness": "Wellness"
    },
    "create": "Create Activity",
    "cutoffHint": "A departure stops being bookable this many minutes before it starts.",
    "cutoffMinutes": "Booking cut-off, minutes",
    "duration": "Duration (minutes)",
    "label": "{count, plural, =1 {Activity} other {Activities}}",
    "perPerson": "per person",
    "person": "person",
    "schedule": {
      "addTime": "Add time",
      "booked": "{count, plural, =1 {# booked} other {# booked}}",
      "capacity": "Seats per departure",
      "created": "{count, plural, =0 {Nothing new — those departures already exist} =1 {# departure created} other {# departures created}}",
      "deleteBlocked": "This departure has bookings and cannot be deleted.",
      "disableInstead": "Disable it",
      "empty": "No departures this month yet.",
      "generate": "Create departures",
      "label": "Schedule",
      "rule": "Add departures",
      "seatsLeft": "{count, plural, =1 {# seat left} other {# seats left}}",
      "times": "Time",
      "weekdays": "Weekdays"
    },
    "validation": {
      "createError": "Failed to create activity. Please try again.",
      "updateError": "Failed to update activity. Please try again."
    }
  },
  "admin": {
    "createConfirm": "A test key is issued right away and shown only once — be ready to copy it.",
    "createConfirmTitle": "Create merchant “{name}”?",
    "createMerchant": "Create Merchant",
    "created": "Created",
    "merchantList": "Merchants",
    "merchantName": "Merchant Name",
    "regenerate": "Regenerate key",
    "regenerateConfirm": "The current key stops working immediately — every integration using it has to be updated. The new key is shown once.",
    "regenerateConfirmTitle": "Regenerate the {mode} key?",
    "walletLabel": "Label (optional)",
    "walletLabelPlaceholder": "My wallet"
  },
  "agent": {
    "bucket": {
      "earlier": "Earlier",
      "today": "Today",
      "week": "Last 7 days",
      "yesterday": "Yesterday"
    },
    "collection": {
      "count": "{count, plural, =1 {# match} other {# matches}}",
      "empty": "No matches — try refining your query",
      "error": "Could not load this set",
      "openAll": "Open all {count, plural, =1 {match} other {matches}}",
      "title": "Matches for: {query}",
      "titleNoQuery": "A curated set for you"
    },
    "command": {
      "ambiguous": "Several entries are called “{key}” — pick one: {options}",
      "arg": {
        "key": "key"
      },
      "compact": "Compress the conversation history",
      "compactUnavailable": "Nothing to compress in a new conversation yet",
      "escape": "Start a message with // to send text that begins with /",
      "forget": "Forget something the agent remembers",
      "forgetAll": "Forget everything",
      "forgetAllMessage": "The agent will forget everything it remembers about you. This cannot be undone.",
      "forgetAllTitle": "Forget everything?",
      "forgetButton": "Forget",
      "forgotten": "Forgot “{key}”",
      "forgottenAll": "Memory cleared",
      "help": "Show available commands",
      "helpTitle": "Commands",
      "limit": "Turn limit reached — try again later",
      "memory": "Show what the agent remembers",
      "memoryEmpty": "The agent does not remember anything yet",
      "memoryTitle": "What the agent remembers",
      "new": "Start a new conversation",
      "notFound": "Nothing remembered under “{key}”",
      "nothingToCompact": "Nothing to compress",
      "unknown": "No such command: /{name}"
    },
    "compaction": {
      "done": "History compressed",
      "running": "Compressing history…"
    },
    "deleteConfirm": "This conversation will be removed permanently.",
    "deleteThread": "Delete conversation",
    "error": {
      "generic": "Something went wrong",
      "threadGone": "This conversation no longer exists"
    },
    "hint": "Describe what you're looking for in plain language.",
    "inputPlaceholder": "Ask anything…",
    "mode": "AI Mode",
    "newThread": "New thread",
    "quickSearch": "Quick Search",
    "searchThreads": "Search conversations",
    "summary": "Earlier in this conversation",
    "title": "Ask AI",
    "tool": {
      "createCheckoutLink": "Preparing checkout",
      "deleteUserPreference": "Forgetting a preference",
      "failed": "{name} — failed",
      "getActivity": "Looking up the activity",
      "getActivityOffers": "Checking departures",
      "getUnit": "Looking up the stay",
      "getUnitAvailability": "Checking availability",
      "getUnitOffers": "Checking rates",
      "getUserBookings": "Checking your bookings",
      "getUserMemory": "Recalling preferences",
      "saveUserPreference": "Saving preference"
    },
    "untitled": "Untitled"
  },
  "auth": {
    "errorThrottle": "Too many attempts. Please try again later.",
    "sessionExpired": "Your session has ended. Please sign in again."
  },
  "booking": {
    "addChild": "Add child",
    "adults": "Adults",
    "all": "All",
    "approve": "Approve",
    "board": {
      "AllInclusive": "All inclusive",
      "BedAndBreakfast": "Breakfast included",
      "FullBoard": "Full board",
      "HalfBoard": "Half board",
      "RoomOnly": "Room only"
    },
    "book": "Book Now",
    "cancel": "Cancel Booking",
    "cancelConfirm": "Are you sure you want to cancel this booking?",
    "cancellationPolicy": "Cancellation policy",
    "childUnderOne": "Under 1",
    "childYears": "{count, plural, one {# year} other {# years}}",
    "datesUnavailable": "Selected dates are not available",
    "escrowNote": "You won't be charged yet — funds escrow on host approval.",
    "guest": {
      "checkingIn": "Checking in",
      "title": "Who's checking in"
    },
    "hostSince": "Host since {year}",
    "infants": "Infants",
    "minStay": "{count, plural, =1 {Minimum stay is # night} other {Minimum stay is # nights}}",
    "night": "{count, plural, =1 {night} other {nights}}",
    "notFound": "Booking not found",
    "openChat": "Open Chat",
    "options": {
      "board": "Meals",
      "cancellation": "Cancellation",
      "chooseDeparture": "Choose a departure",
      "chooseRoom": "Choose a room",
      "feesAtProperty": "+{amount} taxes and fees at the property",
      "feesBelow": "taxes and fees below",
      "nonRefundable": "Non-refundable",
      "otherBoard": "Other meal plan",
      "picked": "selected",
      "priceChanged": "Prices or conditions changed. Please choose again.",
      "rateCount": "{count, plural, =1 {# rate} other {# rates}}",
      "refundable": "Free cancellation",
      "slotGone": "That departure is no longer available. Please pick another.",
      "stayUnit": "/ {count, plural, =1 {night} other {# nights}}",
      "taxesIncluded": "Taxes included",
      "unavailable": "These dates just became unavailable. Try different dates.",
      "unavailableCell": "unavailable",
      "viewPhotos": "View photos"
    },
    "pay": {
      "bookAgain": "Book again",
      "bridging": "Payment is bridging to Solana — this can take a few minutes and resumes automatically.",
      "expired": "This payment window has closed. Anything already sent is being returned to your wallet.",
      "info": {
        "cctp": "USDC moves from your EVM wallet into the Solana escrow via Circle CCTP. Any refund is paid in USDC to your Solana wallet — not the EVM wallet you paid from.",
        "cctpLink": "How CCTP works",
        "solana": "Your payment is held in an on-chain escrow and released to the host after check-in. If the booking is cancelled, the full amount returns to the wallet you paid from."
      },
      "method": "Payment Method",
      "now": "Pay Now",
      "processing": "Payment accepted — confirming on-chain, this can take up to a minute.",
      "qrHint": "Scan to pay",
      "submitted": "Payment submitted",
      "window": "Payment is expected within a limited time.",
      "windowClosed": "The payment window is closing.",
      "windowLeft": "Time left to pay: {time}."
    },
    "payout": {
      "held": "In escrow · auto-payout to host after {date}",
      "label": "Payout",
      "paid": "Paid out {amount} → {address}",
      "processing": "Payout processing…",
      "refunded": "Refunded",
      "resolved": "Dispute resolved"
    },
    "pets": "Pets",
    "phase": {
      "approved": "Confirmed",
      "cancelled": "Cancelled",
      "completed": "Completed",
      "declined": "Declined",
      "dispute": "In dispute",
      "disputeFavorGuest": "Resolved for guest",
      "disputeFavorHost": "Resolved for host",
      "disputeResolving": "Dispute settling",
      "expired": "Expired",
      "paid": "In escrow",
      "pending": "Awaiting payment",
      "refunding": "Refund processing",
      "requested": "Requested"
    },
    "refund": "Refund",
    "refundConfirm": "Confirm refund",
    "refundPreview": "You'll get back {amount} {currency}",
    "refundProcessing": "Refund accepted — settling on-chain, this can take up to a minute.",
    "refundRequest": "Request refund",
    "request": "Booking request",
    "search": "Search by booking or unit ID…",
    "settled": "Paid in escrow",
    "statusApproved": "Approved",
    "statusPending": "Pending",
    "stays": "Stays",
    "supply": {
      "approved": "Confirmed with the hotel",
      "cancelDisputeOpen": "Cancellation isn't available while a dispute is open.",
      "cancelledBySupplier": "We couldn't confirm this stay with the hotel.",
      "confirming": "Confirming your stay with the hotel…",
      "note": "You'll pay by card now; your stay is confirmed with the hotel after payment.",
      "payTitle": "Complete payment",
      "reference": "Reference: {reference}",
      "refundNote": "Any refund follows the hotel's cancellation policy.",
      "sessionInvalid": "This payment session is no longer valid. Cancel this booking and book again."
    },
    "toSettle": "To pay in escrow",
    "tripDetails": "Trip Details"
  },
  "cancellation": {
    "addTier": "Add tier",
    "beforeDate": "Before {date}",
    "beforeHours": "{count, plural, one {# hour before check-in} other {# hours before check-in}}",
    "error": {
      "increasing": "Refund can’t increase as check-in approaches.",
      "range": "Refund must be between 0 and 100%.",
      "zeroTier": "Add exactly one tier at 0 hours (the final refund)."
    },
    "label": "Cancellation policy",
    "leadHours": "Hours before check-in",
    "preset": {
      "flexible": "Flexible",
      "moderate": "Moderate",
      "strict": "Strict"
    },
    "refund": "{percent}% refund",
    "refundPercent": "Refund %",
    "tier": "Tier {index}"
  },
  "chat": {
    "accept": "Accept",
    "bookingTitle": "Booking #{id}",
    "copy": "Copy",
    "deleteChat": "Delete chat",
    "edited": "(edited)",
    "emptyMessage": "Message cannot be empty",
    "filterAll": "All",
    "forward": "Forward",
    "forwardTitle": "Forward to…",
    "forwarded": "Forwarded",
    "forwardedFrom": "Forwarded from {username}",
    "group": {
      "addMembers": "Add members",
      "created": "Group created",
      "demoteAdmin": "Demote to member",
      "infoTitle": "Group info",
      "makeAdmin": "Make admin",
      "memberAdded": "Member added",
      "memberRemoved": "Member removed",
      "name": "Group name",
      "online": "{count} online",
      "permissions": {
        "changeInfo": "Change group info",
        "changeInfoHint": "Edit group name and avatar.",
        "deleteMessages": "Delete messages",
        "deleteMessagesHint": "Delete any message in the chat.",
        "inviteUsers": "Invite users",
        "inviteUsersHint": "Add new members to the group.",
        "manageAdmins": "Manage admins",
        "manageAdminsHint": "Promote or demote other members.",
        "pinMessages": "Pin messages",
        "pinMessagesHint": "Pin and unpin messages in the chat.",
        "removeUsers": "Remove users",
        "removeUsersHint": "Remove members from the group.",
        "saved": "Permissions updated",
        "title": "Permissions"
      },
      "removeMember": "Remove",
      "removeMemberConfirm": "Remove {username}?",
      "removeMemberHint": "They will lose access to the chat history.",
      "roleAdmin": "Admin",
      "roleOwner": "Owner",
      "updated": "Group updated",
      "uploadAvatar": "Upload avatar"
    },
    "invitePending": "{username} invited you to chat",
    "lastSeen": {
      "long": "offline for a while",
      "recent": "recently online",
      "today": "Last seen at {time}",
      "yesterday": "Last seen yesterday at {time}"
    },
    "members": "{count, plural, one {# member} other {# members}}",
    "messageDeleted": "Message deleted",
    "messagePlaceholder": "Type a message…",
    "new": {
      "ai": "New AI chat",
      "aiDesc": "Plan a trip with Pinns AI",
      "group": "New group",
      "groupDesc": "Pick up to 50 people",
      "invite": "Invite to Pinns",
      "inviteCopied": "Invite link copied",
      "inviteDesc": "Share a link — works on any device",
      "message": "New message",
      "messageDesc": "Search by username or @handle",
      "search": "Search by name or @handle…",
      "title": "Start a conversation",
      "users": "Users"
    },
    "newChat": "New chat",
    "noChatSelected": "Select a chat to start messaging",
    "online": "Online",
    "reply": "Reply",
    "replyingTo": "Replying to {username}",
    "searchChats": "Search chats…",
    "sectionBookings": "Bookings",
    "sectionDirect": "Direct",
    "sectionGroups": "Groups",
    "sortName": "By name",
    "sortRecent": "Most recent",
    "sortUnread": "Unread first",
    "system": {
      "DisputeOpened": "Dispute opened",
      "DisputeResolvedFavorGuest": "Dispute resolved in favor of the guest",
      "DisputeResolvedFavorHost": "Dispute resolved in favor of the host",
      "SupportJoined": "Support joined the chat"
    },
    "typing": "{user} is typing…",
    "typingMultiple": "{count, plural, one {# person is typing…} other {# people are typing…}}",
    "viewListing": "View listing",
    "voice": {
      "denied": "Allow microphone access in your browser to record voice messages",
      "hint": "Hold to record a voice message",
      "recording": "Recording a voice message",
      "unavailable": "Microphone is not available"
    }
  },
  "comment": {
    "empty": "No comments yet",
    "hideReplies": "Hide replies",
    "placeholder": "Add a comment…",
    "reply": "Reply",
    "replyPlaceholder": "Write a reply…",
    "viewReplies": "View replies ({count})"
  },
  "common": {
    "activities": "Activities",
    "activityType": "Activity Type",
    "add": "Add",
    "address": "Address",
    "anyTime": "any time",
    "area": "Area",
    "attach": "Attach media",
    "back": "Back",
    "balance": "Balance",
    "booking": "Booking",
    "bookings": "Bookings",
    "cancel": "Cancel",
    "chats": "Chats",
    "checkIn": "Check-in",
    "checkOut": "Check-out",
    "close": "Close",
    "collapse": "Collapse",
    "completed": "Completed",
    "confirm": "Confirm",
    "contentLanguage": "Written in {language}",
    "copied": "Copied",
    "copy": "Copy",
    "country": "Country",
    "create": "Create",
    "currency": "Currency",
    "decline": "Decline",
    "defaultPlace": "Bangkok",
    "delete": "Delete",
    "deleteConfirm": "Are you sure you want to delete this?",
    "details": "Details",
    "disputes": "Disputes",
    "edit": "Edit",
    "email": "Email",
    "error": "Something went wrong. Please try again.",
    "favorites": "Favorites",
    "firstName": "First name",
    "firstNamePlaceholder": "Jane",
    "guestsCount": "{count, plural, one {1 guest} other {# guests}}",
    "hourShort": "h",
    "language": "Language",
    "lastName": "Last name",
    "lastNamePlaceholder": "Doe",
    "login": "Login",
    "mapArea": "Map area",
    "minuteShort": "m",
    "next": "Next",
    "ok": "OK",
    "openDetail": "Open details",
    "or": "or",
    "password": "Password",
    "pause": "Pause",
    "payments": "Payments",
    "peopleCount": "{count, plural, one {1 person} other {# people}}",
    "phone": "Phone",
    "play": "Play",
    "previous": "Previous",
    "price": "Price",
    "profile": "Profile",
    "reason": "Reason",
    "retry": "Retry",
    "save": "Save",
    "search": "Search",
    "send": "Send",
    "settings": "Settings",
    "showOnMap": "Show on map",
    "showOriginal": "Show original",
    "showTranslation": "Show translation",
    "signup": "Sign Up",
    "statistics": "Statistics",
    "status": "Status",
    "theme": {
      "dark": "Dark",
      "light": "Light"
    },
    "thisArea": "this area",
    "today": "Today",
    "total": "Total",
    "translatedFrom": "Translated from {language}",
    "username": "Username",
    "wallet": "Wallet",
    "yesterday": "Yesterday"
  },
  "confirmEmail": {
    "backToSettings": "Back to settings",
    "errorText": "This link is invalid or has expired.",
    "errorTitle": "Confirmation failed",
    "successText": "Your email address has been changed.",
    "successTitle": "Email updated",
    "title": "Email change",
    "verifying": "Confirming your new email…"
  },
  "consent": {
    "accept": "Accept",
    "text": "We use cookies to see how Pinns is used and make it better.",
    "title": "Cookies"
  },
  "create": {
    "activity": {
      "desc": "Tour, class, tasting, experience — booked per person or per group.",
      "title": "An activity"
    },
    "heading": "What do you want to list?",
    "howItWorks": "How it works",
    "start": "Start",
    "step1": {
      "desc": "Photos, price, rules. Goes live right away — free.",
      "title": "Describe & publish"
    },
    "step2": {
      "desc": "Guests book and pay into escrow. Chat to arrange details.",
      "title": "Get bookings"
    },
    "step3": {
      "desc": "KYC + tax info before your first payout (required by law).",
      "title": "Verify to get paid"
    },
    "subtitle": "Publishing is free and takes a few minutes. You can verify your identity and add payout details later — they're only needed before you get paid.",
    "unit": {
      "desc": "Apartment, cottage, room, B&B — anything guests can book by night.",
      "title": "A place to stay"
    }
  },
  "dateRange": {
    "selectDates": "Select dates"
  },
  "destination": {
    "activities": "{count, plural, =1 {# activity} other {# activities}}",
    "allActivities": "All activities in {city}",
    "allCountries": "All countries",
    "allStays": "All stays in {city}",
    "empty": "No destinations yet",
    "heading": "Where to stay in {city}",
    "intro": "Cities where hosts are taking bookings right now.",
    "monthly": "about {price} a month",
    "nearby": "Nearby cities",
    "popular": "Popular destinations",
    "reviews": "{count, plural, =1 {# review} other {# reviews}}",
    "search": "Search cities",
    "showAll": "Show all {count, plural, =1 {# city} other {# cities}}",
    "stays": "{count, plural, =1 {# stay} other {# stays}}",
    "title": "Destinations",
    "topActivities": "Things to do",
    "topStays": "Top places to stay"
  },
  "dispute": {
    "all": "All",
    "date": "Date",
    "favorGuest": "Favor Guest",
    "favorGuestResult": "Resolved in your favor",
    "favorHost": "Favor Host",
    "favorHostResult": "Resolved in favor of host",
    "filterOpen": "Open",
    "filterResolved": "Resolved",
    "goToDispute": "Go to Dispute",
    "noResolution": "No resolution provided",
    "notFound": "Dispute not found",
    "open": "Open Dispute",
    "outcome": "Outcome",
    "reasonPlaceholder": "Describe the issue…",
    "resolution": "Resolution",
    "resolutionPlaceholder": "Describe the resolution…",
    "resolve": "Resolve",
    "resolveConfirm": "Are you sure you want to resolve this dispute?",
    "resolving": "Verdict accepted — the arbiter is settling it on-chain.",
    "statusOpen": "Open",
    "statusResolved": "Resolved",
    "windowClosed": "Dispute window expired",
    "windowNotStarted": "Dispute window opens after check-in",
    "windowRemaining": "{hours}h {minutes}m left to open a dispute"
  },
  "empty": {
    "activities": "No activities yet",
    "bookings": "No bookings yet",
    "chats": "No chats yet",
    "conversations": "No conversations yet",
    "devices": "No other devices",
    "disputes": "No disputes yet",
    "favorites": "No favorites yet",
    "likes": "No liked posts yet",
    "listings": "No listings yet",
    "merchants": "No merchants yet",
    "messages": "No messages yet",
    "options": "Nothing found",
    "posts": "No posts yet",
    "reviews": "No reviews yet",
    "units": "No places yet",
    "users": "No users found",
    "wallets": "No wallets configured"
  },
  "error": {
    "loginFailed": "Login failed",
    "signupFailed": "Signup failed"
  },
  "escrow": {
    "disputeTextA": "An arbiter splits the amount between you and the host.",
    "disputeTextB": "Our fee stays at the rate fixed at booking.",
    "disputeTitle": "Dispute",
    "lead": "Pay in crypto and your payment goes into an escrow program on Solana, not into our account: the program controls it, and no private key to it exists. The recipients — you and the host — are fixed when the deal is created. Even with our keys, the money can't be sent to a stranger.",
    "refundTextA": "The money goes back to your wallet —",
    "refundTextB": "in full or in part, per the cancellation terms.",
    "refundTitle": "Cancellation",
    "releaseTextA": "After check-in, minus our fee.",
    "releaseTextB": "Anyone can trigger it — we can't hold it back.",
    "releaseTitle": "Payout to the host",
    "title": "Your payment is safe."
  },
  "favorites": {
    "savedPlaces": "{count, plural, one {# saved place} other {# saved places}}"
  },
  "feed": {
    "empty": "Your feed is empty. Follow people to see their posts.",
    "scope": {
      "following": "Following",
      "nearby": "Nearby",
      "trending": "Trending"
    },
    "title": "Feed"
  },
  "filter": {
    "active": "Active",
    "apply": "Apply",
    "availability": "Availability",
    "clear": "Clear",
    "duration": "Duration",
    "durationMax": "Max minutes",
    "durationMin": "Min minutes",
    "options": "Options",
    "priceRange": "Price Range",
    "rating": "Rating",
    "sortBest": "Best",
    "stars": "Hotel stars",
    "title": "Filters"
  },
  "footer": {
    "allRights": "All rights reserved.",
    "contactLine": "Got questions? Drop us a line at <a>{email}</a>",
    "cookies": "Cookies",
    "privacy": "Privacy policy",
    "terms": "Terms of use"
  },
  "forgot": {
    "backToLogin": "Back to login",
    "sentText": "If {email} is registered, a reset link is on its way.",
    "sentTitle": "Check your email",
    "submit": "Send reset link",
    "subtitle": "Enter your email and we'll send you a reset link.",
    "title": "Reset password"
  },
  "gallery": {
    "showAll": "Show all photos"
  },
  "home": {
    "agentCta": "Try AI search",
    "agentText": "Describe what you want in plain language — quiet villa near the sea, pet-friendly apartment for a week — and let the assistant find matches and check availability.",
    "agentTitle": "Search smarter with AI",
    "communityCta": "Open feed",
    "communityEyebrow": "Community",
    "communityText": "Real moments from hosts and travellers — bakery finds, sunrise hikes, last-minute openings.",
    "communityTitle": "From travellers you follow",
    "communityTitleTrending": "Trending in the community",
    "destinationsAll": "All destinations",
    "destinationsTitle": "Popular destinations",
    "explore": "Explore",
    "featureActivitiesText": "Tours, excursions and experiences hosted by locals, bookable right from the map",
    "featureBookingText": "Apartments, houses and hotels — book your perfect stay right from the map",
    "featureBookingTitle": "Stays",
    "featureChatText": "Coordinate check-in, ask questions, share files and resolve issues directly with your host",
    "featureChatTitle": "Built-in Chat",
    "heroSecondary": "How it works",
    "heroSubtitle": "The whole trip in one place: find it on the map, sort it out in chat, share how it went with friends",
    "heroTitle": "Trips that actually feel local",
    "linkBalanceText": "Wallet, transactions and earnings",
    "linkBook": "Book",
    "linkBookingsText": "Manage your trips and reservations",
    "linkFavoritesText": "Your saved stays and activities",
    "linkStats": "Stats",
    "linkStatsText": "Insights for hosts and travellers",
    "trending": "Trending"
  },
  "host": {
    "booking": {
      "answerBy": "reply by {date} or the request is declined",
      "chat": "Chat with guest",
      "declineConfirm": "Decline this booking request? This cannot be undone."
    },
    "calendar": {
      "pick": "Pick a listing"
    },
    "dispute": {
      "answerArbitration": "Reply to arbitration"
    },
    "kpi": {
      "awaiting": "Awaiting reply",
      "bookings": "Bookings",
      "disputes": "Open disputes",
      "products": "Listings",
      "reviewable": "Awaiting your review"
    },
    "kyc": {
      "ready": "Verified — you can publish listings"
    },
    "moderation": {
      "approve": "Approve",
      "declineReason": "Decline reason",
      "empty": "Nothing awaits moderation"
    },
    "nav": {
      "account": "Account",
      "main": "Main",
      "money": "Money",
      "products": "Listings"
    },
    "product": {
      "blocked": {
        "kyc": "Verify your identity to publish listings",
        "payout": "Add a Solana payout address to publish listings"
      },
      "createAndPublish": "Create and publish",
      "declinedReason": "Reason: {reason}",
      "deleteBlocked": "This listing has live bookings — unlist it instead",
      "deleteConfirm": "Delete this listing for good?",
      "earned": "Earned",
      "empty": "No listings yet",
      "notFound": "Listing not found",
      "publish": "Publish",
      "tab": {
        "bookings": "Bookings",
        "calendar": "Calendar",
        "reviews": "Reviews",
        "stats": "Statistics"
      },
      "unlist": "Unlist"
    },
    "queue": {
      "answer": "Reply",
      "bookingTitle": "Booking request #{id}",
      "count": "{count, plural, one {# task} other {# tasks}}",
      "disputeMeta": "Booking #{id}",
      "disputeTitle": "Dispute #{id}",
      "empty": "Nothing to do — every booking and review is handled",
      "fix": "Fix",
      "review": "Write a review",
      "reviewMeta": "Checked out {date}",
      "reviewTitle": "Stay #{id}",
      "title": "Needs your action"
    },
    "review": {
      "empty": "Nothing to review right now",
      "outgoing": "Visible only to you — publishes in {count, plural, one {# day} other {# days}}",
      "stay": "Stay #{id}"
    },
    "schedule": {
      "pick": "Pick an activity"
    },
    "section": {
      "balance": "Balance and payouts",
      "bookings": "Bookings",
      "calendar": "Calendar and rates",
      "disputes": "Disputes",
      "kyc": "Verification and payouts",
      "moderation": "Moderation",
      "overview": "Overview",
      "products": "All listings",
      "reviews": "Reviews",
      "schedule": "Activity schedule",
      "stats": "Statistics"
    },
    "title": "Hosting"
  },
  "invoice": {
    "completed": "Payment completed successfully!",
    "expired": "Invoice has expired",
    "failed": "Payment failed",
    "payWithWallet": "Pay with Wallet",
    "processing": "Processing payment…",
    "refund": "Refund required",
    "statusTitle": "Invoice Status",
    "title": "Invoice",
    "transactionFailed": "Transaction failed",
    "transactionNotConfirmed": "Transaction not confirmed",
    "waitingForPayment": "Waiting for payment…"
  },
  "kyc": {
    "Pending": "Pending",
    "Rejected": "Rejected",
    "Unverified": "Not verified",
    "Verified": "Verified",
    "approve": "Approve",
    "approveToast": "Verification approved",
    "dateOfBirth": "Date of birth",
    "decision": "Decision",
    "docType": {
      "DriverLicense": "Driver's license",
      "IdCard": "ID card",
      "Passport": "Passport"
    },
    "document": "Document {n}",
    "documentType": "Document type",
    "documents": "Documents",
    "goVerify": "Go to verification",
    "label": "Verification",
    "legalName": "Legal name",
    "noAccess": "Verification unavailable",
    "pendingNote": "Complete the form to start verification. Supported: images and PDF.",
    "reject": "Reject",
    "rejectReason": "Rejection reason",
    "rejectReasonPlaceholder": "Reason shown to the applicant",
    "rejectToast": "Verification rejected",
    "rejectedNote": "Your submission was rejected.",
    "resubmit": "Resubmit",
    "reviewedAt": "Reviewed",
    "submit": "Submit for review",
    "submitToast": "Submitted for review",
    "title": "Identity verification",
    "underReview": "Your documents are under review.",
    "validation": {
      "required": "Fill in all fields and upload your documents"
    },
    "verifiedNote": "Your identity is verified."
  },
  "ledger": {
    "empty": "No transactions yet",
    "history": "Transaction history",
    "status": {
      "Encumbered": "On hold",
      "Pending": "Pending",
      "Settled": "Settled",
      "Voided": "Voided"
    },
    "txType": {
      "Adjustment": "Adjustment",
      "Bonus": "Bonus",
      "DirectPay": "Payment",
      "DisputeResolve": "Dispute resolution",
      "EscrowDeposit": "Escrow deposit",
      "EscrowRefund": "Refund",
      "EscrowRelease": "Payout",
      "EscrowResolve": "Dispute resolution",
      "Refund": "Refund",
      "SupplyEarned": "Supply earnings",
      "SupplyReversed": "Supply reversal",
      "Withdrawal": "Withdrawal"
    }
  },
  "legal": {
    "cookies": "Cookie Policy",
    "imprint": "Legal Notice",
    "privacy": "Privacy Policy",
    "terms": "Terms of Service",
    "updated": "Last updated {date}"
  },
  "listing": {
    "basicsLabel": "Basics",
    "completeness": "Completeness",
    "descriptionLabel": "Description",
    "livePreview": "Live preview",
    "location": "Location",
    "maxGuests": "{count, plural, =1 {# Guest} other {# Guests}}",
    "maxGuestsLabel": "Max guests",
    "media": "Photos & Videos",
    "options": {
      "add": "Add option",
      "hint": "An option is a variant of the same activity — group or private, with or without transfer — each with its own price and photos. Leave this empty to sell at a single price.",
      "item": "Option {index}",
      "label": "Options",
      "priceLocked": "Price is calculated from your options.",
      "remove": "Remove option",
      "title": "Option name"
    },
    "placeCount": "{count, plural, =1 {place} other {places}}",
    "requiredFields": "Please fill in all required fields",
    "tags": "Tags",
    "tagsPlaceholder": "Search tags…",
    "title": "Title"
  },
  "location": {
    "coordinates": "Coordinates",
    "searchPlaceholder": "Search address…"
  },
  "login": {
    "continueWith": "Continue with {provider}",
    "forgotPassword": "Forgot password?",
    "heading": "Welcome back",
    "noAccount": "Don't have an account?",
    "orContinueWith": "or continue with",
    "passwordInput": "Enter password",
    "signupLink": "Sign up here",
    "subtitle": "Sign in to continue your trip",
    "title": "Login",
    "usernameInput": "Enter username",
    "welcome": "Welcome back, {name}"
  },
  "logout": {
    "allDevices": "Sign out on all devices",
    "message": "Are you sure you want to sign out?",
    "title": "Sign Out"
  },
  "map": {
    "unavailable": "The map is unavailable right now. Try again later."
  },
  "media": {
    "aspect": "Aspect",
    "zoom": "Zoom"
  },
  "merchant": {
    "address": {
      "add": "Add address",
      "addressPlaceholder": "Solana wallet address",
      "cooldown": "Available {date}",
      "cooldownInfo": "A new address can be used for withdrawals 24 hours after it's added.",
      "empty": "No addresses yet",
      "ready": "Ready",
      "remove": "Remove address",
      "removeConfirm": "Remove this withdrawal address?",
      "title": "Withdrawal addresses"
    },
    "balance": {
      "available": "Available",
      "empty": "No funds yet — sales revenue will appear here."
    },
    "closeConfirm": "Close this merchant? It stays active until the balance is withdrawn and all escrows are settled.",
    "closeConfirmTitle": "Close merchant",
    "fee": {
      "label": "Fee",
      "max": "Between 0 and {max}% — the contract rejects anything higher",
      "note": "Applies to new bookings only — deals already open keep the rate they were created with.",
      "saved": "Fee saved — it applies to new bookings"
    },
    "keyModal": {
      "copy": "Copy key",
      "title": "Secret key for {name}",
      "warning": "Copy it now — it's shown only once and can't be recovered."
    },
    "live": {
      "activate": "Activate live",
      "activated": "Live is active. Its wallet is empty — fund it before running real payments.",
      "completed": "Live was already open — the missing custody wallet has been rebuilt. Your existing live key still works.",
      "confirm": "Activating live opens the real-money books for this merchant and issues its live key — shown once. The live custody wallet is created empty and has to be funded before it can settle anything.",
      "confirmTitle": "Activate live mode",
      "info": "Live runs alongside test — its own key, wallet and balances."
    },
    "mode": {
      "Live": "Live",
      "LiveHint": "Real money",
      "Test": "Test",
      "TestHint": "Test data"
    },
    "provision": {
      "action": "Re-apply settings",
      "confirm": "The backend compares its view of the merchant with what is written on chain and fixes the difference. Running it again is safe: if the two already agree, nothing happens.",
      "confirmTitle": "Re-apply the {mode} settings?",
      "requested": "Re-apply requested"
    },
    "provisioning": "Setting up the custody wallet and on-chain config — this usually takes a few seconds.",
    "provisioningFailed": "Setup is taking longer than usual. Press “Re-apply settings” to finish the bootstrap.",
    "status": {
      "Active": "Active",
      "Pending": "Provisioning…",
      "Terminated": "Closed",
      "Terminating": "Closing…"
    },
    "terminating": "Closing this merchant — withdrawing the balance and settling open escrows.",
    "withdraw": "Withdraw",
    "withdrawal": {
      "amount": "Amount",
      "approve": "Approve",
      "count": "{count} records",
      "date": "Date",
      "empty": "No withdrawals yet",
      "handled": "This request has already been handled.",
      "history": "Withdrawal history",
      "net": "Receiver gets {amount}",
      "noAddresses": "Add a withdrawal address and wait out the 24-hour cooldown before you can withdraw.",
      "receiver": "Receiver address",
      "receiverSelect": "Select destination address",
      "reject": "Reject",
      "status": {
        "Approved": "Approved",
        "Completed": "Completed",
        "Failed": "Failed",
        "Manual": "Manual",
        "Pending": "Pending",
        "Rejected": "Rejected",
        "Sending": "Sending",
        "Submitted": "Submitted"
      },
      "title": "Withdraw {currency}"
    }
  },
  "navbar": {
    "menu": {
      "feed": "Feed",
      "map": "Map"
    }
  },
  "notification": {
    "chatUnread": "{name} · {count, plural, =1 {# new message} other {# new messages}}",
    "comment": "{name} {others, plural, =0 {commented on your post} other {and # more commented on your post}}",
    "empty": "No notifications yet",
    "likeComment": "{name} {others, plural, =0 {liked your comment} other {and # more liked your comment}}",
    "likePost": "{name} {others, plural, =0 {liked your post} other {and # more liked your post}}",
    "post": "{name} published a new post",
    "referralRewarded": "Referral reward credited to your balance",
    "reply": "{name} {others, plural, =0 {replied to your comment} other {and # more replied to your comment}}",
    "reviewReplied": "{name} {others, plural, =0 {replied to your review} other {and # more replied to your review}}",
    "title": "Notifications"
  },
  "oauth": {
    "allow": "Allow access",
    "checking": "Checking the app…",
    "deny": "Cancel",
    "invalidText": "The link is missing required parameters. Go back to the app and try again.",
    "invalidTitle": "Invalid request",
    "requestText": "Continue only if you recognise this app.",
    "requestTitle": "{client} wants access to your account",
    "scope": {
      "bookingsRead": "See your bookings",
      "memory": "Remember your preferences",
      "none": "Search and checkout links only"
    },
    "title": "App access",
    "unknownClient": "This app or its callback address isn't registered with Pinns. Go back to the app and start again."
  },
  "page": {
    "activityDetail": {
      "description": "{title} in {city}, {country}. {price} per person.",
      "title": "{title}, {city} — Pinns"
    },
    "activitySearch": {
      "description": "Tours, excursions and experiences near you. Ask the host anything in chat, book in a couple of minutes and share the trip in the feed.",
      "descriptionCity": "{count, plural, =1 {# activity} other {# activities}} in {city}, {country}. Pick a date that suits you, read what other guests say and ask the host anything before you book.",
      "title": "Activities, tours and excursions — Pinns",
      "titleCity": "Things to do in {city}, {country}: tours and experiences — Pinns"
    },
    "cookies": {
      "description": "Which cookies and local storage Pinns uses for signing in, your language and analytics, why each one is needed, and how to change your choice at any time.",
      "title": "Cookie Policy — Pinns"
    },
    "destination": {
      "description": "{count, plural, =0 {Places to stay} =1 {# place to stay} other {# places to stay}} in {city}. The best-rated stays and things to do at a glance, and what a month here usually costs.",
      "title": "{city}, {country} — stays and activities"
    },
    "destinations": {
      "description": "Cities with places to stay and things to do, booked directly with hosts and guides. Find your next trip — from buzzing capitals to quiet seaside towns.",
      "title": "Destinations — where to travel with Pinns"
    },
    "error": {
      "message": "Something went wrong on our side. Please try again.",
      "retry": "Try again",
      "title": "Something went wrong — Pinns"
    },
    "imprint": {
      "description": "Who operates Pinns, the company details behind the platform, and how to reach us about a booking, a listing, a legal notice or a press enquiry.",
      "title": "Legal Notice — Pinns"
    },
    "index": {
      "description": "Describe the trip in your own words — AI finds the stays, hotels and activities. Book in a couple of taps, pay by card or in crypto.",
      "title": "Stays, hotels and activities for your trip — Pinns"
    },
    "login": {
      "description": "Your bookings, chats with hosts, saved places and friends’ trips — right where you left them. Sign in by email, Google or GitHub.",
      "title": "Log in to Pinns — bookings, chats and saved places"
    },
    "notFound": {
      "backHome": "Go Home",
      "message": "The page you are looking for does not exist",
      "title": "Page not found — Pinns"
    },
    "privacy": {
      "description": "What data Pinns collects when you book, host or chat, who receives it, how long it is kept, and how to access, correct or delete everything we hold.",
      "title": "Privacy Policy — Pinns"
    },
    "profile": {
      "description": "{name} on Pinns: the host's listings, activities and posts, reviews left by guests and a direct way to get in touch before you book.",
      "title": "{name} — profile on Pinns"
    },
    "signup": {
      "description": "Book stays and activities, share your trips in the feed. List your own place and get paid out in crypto through on-chain escrow.",
      "title": "Sign up for Pinns — stays, hotels and activities"
    },
    "terms": {
      "description": "The rules for booking stays and activities on Pinns, listing a place of your own, paying through crypto escrow, and how cancellations and refunds work.",
      "title": "Terms of Service — Pinns"
    },
    "unitDetail": {
      "description": "{title} in {city}, {country}. From {price} per night{guests, plural, =0 {} =1 {, up to # guest} other {, up to # guests}}.",
      "title": "{title}, {city} — Pinns"
    },
    "unitSearch": {
      "description": "Apartments, houses and hotels, from private hosts and hotel partners. Filters, honest guest reviews, payment by card or in crypto.",
      "descriptionCity": "{count, plural, =1 {# place to stay} other {# places to stay}} in {city}, {country}. See them on the map, pick your dates and read what guests say before you book.",
      "title": "Stays and hotels: apartments, houses, rooms — Pinns",
      "titleCity": "Stays in {city}, {country}: apartments, houses, hotels — Pinns"
    }
  },
  "payment": {
    "card": "Card",
    "crypto": "Crypto",
    "label": "Payment"
  },
  "post": {
    "comment": "Comment",
    "composer": "New post",
    "like": "Like",
    "linkCopied": "Post link copied",
    "notFound": "Post not found",
    "placeholder": "Share something…",
    "publish": "Publish",
    "share": "Share",
    "title": "Post"
  },
  "product": {
    "from": "from {price}",
    "nearby": "Nearby",
    "related": "You might also like",
    "relatedEmpty": "Nothing to show here yet",
    "similar": "Similar",
    "status": {
      "Active": "Listed",
      "Declined": "Rejected",
      "Deleted": "Deleted",
      "Draft": "Draft",
      "Pending": "In review",
      "Unlisted": "Unlisted"
    }
  },
  "profile": {
    "bio": "Bio",
    "bioPlaceholder": "Tell people about yourself…",
    "birthday": "Birthday",
    "changeCover": "Change cover",
    "city": "City",
    "displayName": "Display name",
    "displayNamePlaceholder": "How your name appears",
    "follow": "Follow",
    "followers": "Followers",
    "following": "Following",
    "interests": "Interests",
    "joined": "Joined {date}",
    "languages": "Languages",
    "languagesPlaceholder": "Add languages…",
    "linkCopied": "Profile link copied",
    "message": "Message",
    "noFollows": "Nobody here yet",
    "notFound": "User not found",
    "notifyOff": "Turn off new post notifications",
    "notifyOn": "Notify about new posts",
    "phoneCountry": "Country code",
    "phonePlaceholder": "Enter your phone",
    "region": "Region",
    "saveInterests": "Save interests",
    "saveTravels": "Save travels",
    "share": "Share",
    "social": {
      "add": "Add link",
      "instagram": "Instagram",
      "selectType": "Choose network…",
      "telegram": "Telegram",
      "website": "Website",
      "x": "X"
    },
    "socialLinks": "Social links",
    "solanaAddress": "Solana payout address",
    "solanaAddressInvalid": "Not a valid Solana address",
    "solanaAddressNote": "Only a Solana wallet address is accepted — booking payouts are sent straight to it.",
    "solanaAddressPlaceholder": "Your Solana wallet address",
    "speaks": "Speaks {languages}",
    "tabs": {
      "likes": "Likes",
      "listings": "Listings",
      "posts": "Posts",
      "reviews": "Reviews"
    },
    "unfollow": "Unfollow",
    "updateSuccess": "Profile updated successfully",
    "visited": "{count, plural, =0 {Visited countries} one {Visited · # country} other {Visited · # countries}}"
  },
  "referral": {
    "admin": {
      "currency": "Bonus currency",
      "daysUnit": "days",
      "defaultRate": "Default rate",
      "deleteConfirm": "Remove this personal rate? The user falls back to the default.",
      "maxAmount": "Max bonus per booking",
      "maxBookings": "Bookings with a bonus",
      "newRate": "New personal rate",
      "percent": "Percent per booking",
      "saved": "Rate saved",
      "title": "Referral rates",
      "updated": "Updated {date}",
      "userId": "User id",
      "userRate": "Personal rate · user {id}",
      "windowDays": "Valid after sign-up"
    },
    "copied": "Invite link copied",
    "copy": "Copy invite link",
    "limitAmount": "up to {amount} per stay",
    "limitBookings": "{count, plural, =1 {their first booking} other {their first # bookings}}",
    "limitWindow": "{count, plural, =1 {within # day of signing up} other {within # days of signing up}}",
    "payout": "Credited once your friend checks out, as a bonus in your balance.",
    "terms": "Earn {percent}% of every completed booking your friends make",
    "title": "Invite a friend"
  },
  "region": {
    "action": {
      "import": "Update places",
      "rebuild": "Rebuild",
      "remove": "Remove supplier",
      "reset": "Reset cursor",
      "sync": "Run sync",
      "terminate": "Delete country"
    },
    "add": "Add country",
    "addSupplier": "Add {supplier}",
    "basemap": {
      "Detail": "Basemap: served countries",
      "World": "Basemap: world",
      "built": "Built {date} · {size}",
      "failed": "Build failed {date}: {error}",
      "notBuilt": "Not built yet",
      "rebuildStarted": "Basemap rebuild started"
    },
    "catalogSync": "Catalog sync",
    "clearHistory": "Clear history",
    "confirm": {
      "clearHistory": "Delete every finished job from the history?",
      "deleteJob": "Delete this job from history?",
      "remove": "Remove {supplier} from {country}? Its listings are unpublished.",
      "reset": "Reset the {supplier} cursor? The next sync walks the catalog from the start; imported listings stay.",
      "terminate": "Delete {country}? Supplier listings are unpublished and imported data is removed."
    },
    "importStarted": "Places update started",
    "jobStatus": {
      "Completed": "Completed",
      "Failed": "Failed",
      "Running": "Running"
    },
    "jobType": {
      "Backfill": "Backfill",
      "Incremental": "Incremental",
      "Retire": "Unpublish"
    },
    "jobs": "Job history",
    "jobsEmpty": "No jobs yet",
    "lastPage": "Crawled to page {page}",
    "metric": {
      "created": "Created",
      "deleted": "Deleted",
      "failed": "Failed",
      "pages": "Pages",
      "probed": "Probed",
      "skipped": "Skipped",
      "unchanged": "Unchanged",
      "unparsed": "Unparsed",
      "updated": "Updated"
    },
    "neverSynced": "Not crawled yet",
    "pausedByRegion": "Paused with the country",
    "places": "Places",
    "placesFailed": "Import failed {date}: {error}",
    "placesImported": "Places: {count, number}, imported {date}",
    "placesNotImported": "Places not imported yet",
    "regions": "Countries",
    "regionsEmpty": "No countries yet",
    "status": {
      "Active": "Active",
      "Paused": "Paused",
      "Terminated": "Deleted",
      "Terminating": "Deleting"
    },
    "syncedUntil": "Synced until {date}",
    "title": "Regions",
    "world": "Rest of the world: countries and cities"
  },
  "reset": {
    "errorInvalid": "This reset link is invalid or has expired.",
    "invalidText": "This reset link is missing or malformed. Request a new one.",
    "invalidTitle": "Invalid link",
    "requestNew": "Request a new link",
    "submit": "Update password",
    "subtitle": "Choose a strong new password for your account.",
    "success": "Password updated. Please log in.",
    "title": "Set a new password"
  },
  "review": {
    "content": "Your review",
    "contentPlaceholder": "Share your experience…",
    "create": "Write a Review",
    "hidden": "Visible only to you until the other side posts or the window closes",
    "hint": {
      "1": "Terrible",
      "2": "Poor",
      "3": "Average",
      "4": "Good",
      "5": "Excellent"
    },
    "reply": "Reply",
    "replyPlaceholder": "Write a reply…",
    "replySend": "Send reply",
    "stars": "Rating",
    "title": "Reviews",
    "windowClosed": "The review window has closed"
  },
  "security": {
    "devices": {
      "current": "This device",
      "error": "Failed to load devices",
      "lastSeen": {
        "long": "Inactive for a while",
        "recent": "Active just now",
        "today": "Active at {time}",
        "yesterday": "Active yesterday at {time}"
      },
      "refresh": "Refresh",
      "revoke": "Revoke",
      "revokeConfirm": "Revoke {label}?",
      "revokeHint": "The device will be signed out immediately.",
      "revokedToast": "Device revoked",
      "title": "Active devices",
      "unknownDevice": "Unknown device",
      "unknownDeviceWithDate": "Device added {date}"
    },
    "push": {
      "denied": "Permission blocked. Open browser settings to allow notifications.",
      "label": "Push notifications",
      "unsupported": "Push notifications are not supported in this browser."
    }
  },
  "selector": {
    "searchPlaceholder": "Search…"
  },
  "settings": {
    "account": "Account"
  },
  "signup": {
    "alreadyHaveAccount": "Already have an account?",
    "checkEmailText": "We sent a verification link to {email}. Open it to activate your account.",
    "checkEmailTitle": "Check your email",
    "confirmPassword": "Confirm Password",
    "confirmPasswordInput": "Confirm password",
    "errorTaken": "That email or username is already taken.",
    "heading": "Create account",
    "loginLink": "Login here",
    "resend": "Resend email",
    "resent": "Verification email sent again.",
    "strength": {
      "fair": "Fair",
      "good": "Good",
      "strong": "Strong",
      "weak": "Weak"
    },
    "subtitle": "Start exploring in 30 seconds",
    "title": "Sign Up",
    "validation": {
      "confirmPasswordError": "Passwords do not match",
      "confirmPasswordSuccess": "✓ Passwords match",
      "emailError": "Please enter a valid email address",
      "emailSuccess": "✓ Valid email",
      "passwordError": "Password: 8-32 chars, uppercase, lowercase, number, special (#$^+=!*()@%&)",
      "passwordSubmit": "Password must be 8-32 characters with uppercase, lowercase, number and special character",
      "passwordSuccess": "✓ Strong password",
      "usernameError": "Username: 4-24 chars, alphanumeric, no leading _ or .",
      "usernameSubmit": "Username must be 4-24 characters, alphanumeric only, cannot start with _ or .",
      "usernameSuccess": "✓ Valid username"
    }
  },
  "stats": {
    "allCurrencies": "All",
    "approved": "Approved",
    "balance": "Balance",
    "bookingCount": "{count, plural, =1 {# booking} other {# bookings}}",
    "byCurrency": "By currency",
    "byProduct": "By product",
    "currencies": "Currencies",
    "earnings": "Earnings",
    "export": "Download statement",
    "flow": "Flow (in/out)",
    "gmv": "GMV",
    "in": "In",
    "invoices": "Invoices",
    "noData": "No data available",
    "noMerchant": "No merchant selected",
    "out": "Out",
    "paidOut": "Paid out",
    "peakCurrency": "Top: {currency}",
    "peakStatus": "Top: {status}",
    "pending": "Pending payout",
    "range": {
      "1y": "1y",
      "30d": "30d",
      "7d": "7d",
      "90d": "90d",
      "all": "All",
      "ytd": "YTD"
    },
    "refunds": "Refunds",
    "statusDistribution": "Status distribution",
    "tab": {
      "bookings": "Bookings",
      "earnings": "Earnings",
      "overview": "Overview",
      "revenue": "Platform revenue"
    },
    "takeRate": "Take rate",
    "totalBookings": "Total bookings",
    "totalCount": "{count} total",
    "transactions": "Transactions",
    "txCount": "{count, plural, =1 {# transaction} other {# transactions}}",
    "wallet": "Wallet",
    "walletCount": "{count, plural, =1 {# wallet} other {# wallets}}",
    "walletsTitle": "Payment wallets"
  },
  "toast": {
    "attachment": {
      "failed": "Attachment failed: {reason}"
    },
    "booking": {
      "Approved": "Booking #{id} approved",
      "Cancelled": "Booking #{id} cancelled",
      "Completed": "Booking #{id} completed",
      "Declined": "Booking #{id} declined",
      "Expired": "Booking #{id} expired",
      "Pending": "Booking #{id} is awaiting payment",
      "Refunding": "Booking #{id} refund is processing",
      "Requested": "New booking request #{id}"
    },
    "chatInvite": "New chat invite",
    "chatMemberAddedSelf": "You were added to a chat",
    "chatMemberRemovedSelf": "You were removed from a chat",
    "deviceRevokedSelf": "This device was signed out",
    "dispute": {
      "Open": "Dispute opened for booking #{bookingId}",
      "Resolved": "Dispute on booking #{bookingId} resolved",
      "Resolving": "Dispute on booking #{bookingId} is settling"
    },
    "geo": {
      "permissionDenied": "Location access denied. Enable it in Settings → Privacy → Location Services.",
      "timeout": "Couldn't get your location in time. Try again.",
      "unavailable": "Location unavailable on this device."
    },
    "invoice": {
      "Cancelled": "Invoice #{id} cancelled",
      "Completed": "Invoice #{id} completed",
      "Expired": "Invoice #{id} expired",
      "Failed": "Invoice #{id} failed",
      "Pending": "Invoice #{id} is pending",
      "Refund": "Invoice #{id} refunded"
    },
    "merchant": {
      "active": "Your merchant is ready to accept payments",
      "terminated": "The merchant is closed",
      "walletCreated": "The custody wallet is ready"
    },
    "product": {
      "approved": "Listing #{productId} is live",
      "declined": "Listing #{productId} was declined"
    }
  },
  "unit": {
    "amenities": "Amenities",
    "amenityType": {
      "AirConditioning": "Air conditioning",
      "AirportShuttle": "Airport shuttle",
      "Balcony": "Balcony",
      "Bar": "Bar",
      "Breakfast": "Breakfast",
      "Dryer": "Dryer",
      "Elevator": "Elevator",
      "EvCharger": "EV charger",
      "Fireplace": "Fireplace",
      "Fitness": "Gym",
      "Heating": "Heating",
      "HotTub": "Hot tub",
      "Kitchen": "Kitchen",
      "LuggageStorage": "Luggage storage",
      "Parking": "Parking",
      "Pool": "Pool",
      "Restaurant": "Restaurant",
      "RoomService": "Room service",
      "Sauna": "Sauna",
      "Spa": "Spa",
      "Stove": "Stove",
      "Tv": "TV",
      "Washer": "Washer",
      "WheelchairAccessible": "Wheelchair accessible",
      "WiFi": "Wi-Fi",
      "Workspace": "Workspace"
    },
    "area": "{size} m²",
    "areaLabel": "Area",
    "bathrooms": "{count, plural, =1 {# Bathroom} other {# Bathrooms}}",
    "bathroomsLabel": "Bathrooms",
    "bedrooms": "{count, plural, =1 {# Bedroom} other {# Bedrooms}}",
    "bedroomsLabel": "Bedrooms",
    "calendar": {
      "closed": "Closed",
      "label": "Calendar",
      "legendClosed": "Closed",
      "legendImported": "From an external calendar",
      "legendOverride": "Overridden",
      "maxNights": "Max nights",
      "mergeHint": "An empty field is left as it is. Use “Clear overrides” to fall back to the base values.",
      "minNights": "Min nights",
      "pickRange": "Pick a date or a range",
      "quantity": "Rooms available",
      "reset": "Clear overrides",
      "resetConfirm": "Clear every override on the selected dates and fall back to the base values?",
      "saved": "Calendar updated",
      "scope": "Applies to",
      "scopeUnit": "The whole property",
      "selection": "{from} — {to}",
      "sync": {
        "add": "Add calendar",
        "added": "Calendar connected",
        "broken": "The link stopped working. Last successful sync: {date}. The dates it already blocked stay until it is fixed.",
        "copied": "Link copied",
        "copy": "Copy calendar link",
        "deleteConfirm": "Disconnect this calendar? Its blocked dates will be released.",
        "empty": "No external calendars yet",
        "exportHint": "Paste this link into Airbnb → Import calendar so your Pinns bookings block those dates too. They refresh it every few hours.",
        "exportTitle": "Export to other sites",
        "importHint": "In Airbnb: Listing → Availability → Sync calendars → Export. Booking and VRBO use the same format. We refresh every hour.",
        "name": "Name",
        "neverSynced": "Not synced yet",
        "room": "Applies to",
        "syncedAt": "Synced {date} · {count, plural, =0 {no blocked ranges} =1 {# blocked range} other {# blocked ranges}}",
        "title": "External calendars",
        "url": "iCal link",
        "wholeUnit": "The whole property"
      }
    },
    "checkInTime": "Check-in time",
    "checkOutTime": "Check-out time",
    "city": "City",
    "create": "Create Unit",
    "instant": "Instant booking",
    "label": "{count, plural, =1 {Unit} other {Units}}",
    "locationHeading": "Location",
    "maxNightsLabel": "Max nights",
    "minNights": "{count, plural, =1 {min # night} other {min # nights}}",
    "minNightsLabel": "Min nights",
    "notFound": "Unit not found",
    "petsAllowed": "Pets allowed",
    "prepaid": "Prepaid",
    "property": "Property type",
    "rates": {
      "add": "Add rate",
      "enabled": "Available for booking",
      "feesAtProperty": "Fees at the property",
      "hint": "A rate is one combination of price, meals and cancellation terms — for example, breakfast included, non-refundable. Rates here sell the whole place; to sell rooms separately, price them inside each room below.",
      "item": "Rate {index}",
      "label": "Rates",
      "remove": "Remove rate"
    },
    "reviewCount": "{count, plural, =1 {# review} other {# reviews}}",
    "rooms": {
      "add": "Add room",
      "hint": "A room is a category with its own photos and prices. Leave this empty if the place is rented as a whole.",
      "item": "Room {index}",
      "label": "Rooms",
      "quantity": "Rooms of this type",
      "remove": "Remove room",
      "sizeSqm": "Size, m²",
      "title": "Room name"
    },
    "sleepsLabel": "Sleeps",
    "starRating": "{count, plural, one {# star} other {# stars}}",
    "tagsMaxReached": "Maximum {max} tags allowed",
    "unitType": {
      "Apartment": "Apartment",
      "Campsite": "Campsite",
      "Chalet": "Chalet",
      "Cottage": "Cottage",
      "Hostel": "Hostel",
      "Hotel": "Hotel",
      "House": "House",
      "Loft": "Loft",
      "Resort": "Resort",
      "Studio": "Studio",
      "Villa": "Villa"
    },
    "validation": {
      "createError": "Failed to create unit. Please try again.",
      "updateError": "Failed to update unit. Please try again."
    },
    "verifiedHost": "Verified host"
  },
  "upload": {
    "dropOrClick": "Drop files here or click to upload",
    "maxReached": "Maximum {max} files reached",
    "uploading": "Wait for the upload to finish"
  },
  "user": {
    "balance": {
      "available": "Available to withdraw",
      "empty": "Your balance is empty — funds from completed bookings (escrow payouts) will appear here.",
      "inDispute": "In Dispute",
      "inEscrow": "In escrow"
    },
    "logout": "Logout"
  },
  "verify": {
    "errorExpired": "This verification link has expired. Please sign up again.",
    "errorTaken": "This account is already verified. Please log in.",
    "errorText": "This link is invalid or has expired. Try signing up again.",
    "errorTitle": "Verification failed",
    "signupAgain": "Sign up again",
    "title": "Email verification",
    "verifying": "Verifying your email…"
  },
  "wallet": {
    "add": "Add Wallet",
    "cctp": {
      "chain": {
        "arbitrum": "Arbitrum",
        "avalanche": "Avalanche",
        "base": "Base",
        "ethereum": "Ethereum",
        "optimism": "Optimism",
        "polygon": "Polygon"
      },
      "noSolana": "Connect a Solana wallet first — refunds are paid to it",
      "step": {
        "approving": "Approve USDC in your wallet…",
        "building": "Preparing transaction…",
        "burning": "Confirm the transfer…",
        "relaying": "Bridging to Solana…"
      }
    },
    "connect": "Connect another",
    "disconnect": "Disconnect",
    "method": {
      "cctp": "EVM (CCTP)",
      "solana": "Solana"
    },
    "notConnected": "Wallet not connected",
    "step": {
      "awaiting-signature": "Confirm in your wallet…",
      "building": "Preparing transaction…"
    },
    "viewAddress": "View address on explorer",
    "viewTx": "View transaction"
  }
}
