;; The EN catalog is the source of truth: the other catalogs' key sets must
;; match it (add the chat-style key-set test with your black-box tests —
;; chat/client/test/i18n.test.mjs is the shape).
;;
;; A message is a string, or a map of plural variants with string keys
;; ("zero" "one" "two" "few" "many" "other" — "other" required); plurals go
;; through Intl.PluralRules in i18n/runtime.cljs, never through
;; string concatenation.
(ns __NAME__.i18n.en)
(def catalog
{;; header / chrome (app/ui.cljs)
"top.rooms.title" "your rooms"
"top.name.title" "change your name"
"top.invite.title" "copy invite link"
"peers.just-you" "just you"
"peers.here" "{n} here"
;; join overlay
"join.sub" "p2p · end-to-end encrypted · no servers hold your words"
"join.name.ph" "your name"
"join.btn" "join"
;; demo note wall
"notes.ph" "write a note…"
"notes.send" "post"
;; empty room
"empty.title" "This is your room — nobody else is here yet."
"empty.body" "Rooms live in the link itself (the part after #). Send someone this room's invite link and they'll land right here. Opening {host} without a link starts a new, separate room."
"empty.invite" "🔗 copy invite link"
"toast.invite-copied" "invite link copied — anyone with it can join & read"
;; copy fallback
"copy.manual" "copy it manually:"
"sheet.close" "close"
;; lobby (app/rooms.cljs)
"lobby.sub1" "p2p · end-to-end encrypted · rooms are private links,"
"lobby.sub2" "saved on your devices — never on a server"
"lobby.empty" "no rooms yet — start one below"
"lobby.new.ph" "new room name…"
"lobby.new" "➕ start"
"lobby.join.ph" "…or paste an invite link"
"lobby.join" "join"
"lobby.hint" "links open the room directly in a browser — in the installed app, paste the invite here"
"lobby.version" "version {v}"
"lobby.rename.title" "rename"
"lobby.forget.title" "forget"
"lobby.forget.arm" "sure?"
"lobby.bad-link" "that's not an invite link — paste the full link"
"room.word" "room"
"ago.now" "now"
"ago.m" "{n}m ago"
"ago.h" "{n}h ago"
"ago.d" "{n}d ago"
;; room boot toasts (room.cljs)
"toast.offline-delivered" {"one" "⇣ {n} offline message delivered"
"other" "⇣ {n} offline messages delivered"}
"toast.rooms-synced" {"one" "⇆ synced {n} room from your other device"
"other" "⇆ synced {n} rooms from your other device"}
"toast.restored" {"one" "⇣ restored {n} message"
"other" "⇣ restored {n} messages"}
"toast.mailbox-expired" "some offline messages expired before this device could fetch them"
;; update banner (main.cljs) — key names are load-bearing for the banner
"update.ready-v" "⬆ version {live} is ready (you're on {v}) — tap to update"
"update.ready" "⬆ a new version is ready — tap to update"
"update.updating" "updating…"})