export const zh = { brand: "nomadro", tagline: "用一行代码环游世界", nav: { map: "🗺️ 地图", mapShort: "地图", destinations: "🌍 目的地", plan: "🗓️ 计划", compare: "⚖️ 对比", tools: "🛠️ 工具箱", nextStop: "🧭 下一站", meetups: "🎉 活动", community: "💬 社区", dating: "💕 匹配", chat: "✉️ 私信", digital: "🎓 学院", join: "✨ 会员", gigs: "💼 赏金", pricing: "💎 定价", notifications: "🔔 通知", ebook: "📖 电子书", services: "🛎️ 服务", feedback: "💬 反馈", ai: "🤖 AI", visa: "📋 签证", blog: "📝 博客", blogShort: "博客", login: "登录", theme: "切换主题", menu: "菜单", lang: "语言", exploreGroup: "探索", connectGroup: "连接", growGroup: "成长", }, hero: { badge: "全球数字游民正在路上", titleLine1: "用一行代码", titleLine2: "环游世界", ctaExplore: "从城市开始", ctaPlan: "🗓️ 旅居计划", ctaCompare: "⚖️ 城市对比", ctaMatch: "🎯 智能匹配去哪", scroll: "向下滚动", statCountries: "🗺️ 可探索国家", statCost: "💰 平均月生活费 (千元)", statHappy: "😊 生活满意度 %", }, strip: { title: "⚡ 核心路径", openPlan: "打开旅居计划 →", plan: "计划", compare: "对比", destinations: "目的地", visa: "签证", tools: "工具箱", weekend: "周末", cost: "费用", changelog: "更新", }, journey: { tag: "PATH", title: "一条路径,三环相扣", subtitle: "先选城市,再遇见人,最后成长赚钱——按需进入,不必一次看完。", step1Title: "发现去哪", step1Desc: "匹配偏好或点选地图,锁定下一座城市。", step1Cta: "开始发现", step2Title: "遇见同行", step2Desc: "同城活动与社区讨论,先认识真实的人。", step2Cta: "去活动", step3Title: "成长变现", step3Desc: "学院、赏金与小工具,在路上继续做事。", step3Cta: "打开学院", matchCta: "开始匹配", step4Title: "工具箱", step4Desc: "费用、时差、打包、防坑……几十个小工具按需取用。", step4Cta: "打开工具箱", }, ring: { tag: "NEXT", continue: "接下来你可以", plan: "写入旅居计划", planDesc: "把这座城市排进时间线与预算。", meetups: "同城活动", meetupsDesc: "先线下遇见,再深入聊天。", meetupsFromCommunity: "从讨论走向线下见面。", meetupsFromDating: "匹配后一起参加活动。", community: "社区讨论", communityDesc: "签证、住宿、远程工作经验。", communityWork: "远程工作话题与协作。", dating: "游民匹配", datingDesc: "朋友、室友或联创伙伴。", chat: "打开私信", chatDesc: "继续刚才的对话。", nextStop: "下一站决策", nextStopDesc: "不确定去哪时,用决策器收窄选择。", digital: "游民学院", digitalDesc: "课程与远程工作路径。", compareDesc: "并排对比后再写入计划。", }, home: { mapTag: "🗺️ WORLD MAP", mapTitle: "全球游民热力图", mapSubtitle: "点击标记查看城市详情,或下滑浏览完整目的地列表", mapPick: "选择一个城市", mapPickHint: "点击地图上的标记查看详情", mapCost: "月生活费", mapSpeed: "网速", mapTemp: "均温", mapRating: "评分", mapBrowse: "浏览全部目的地 →", destTag: "🌴 TOP DESTINATIONS", destTitle: "热门旅居目的地", destSubtitle: "筛选、收藏,点击进入城市详情了解更多", destMatcher: "不知道去哪?智能匹配", destSearch: "搜索城市…", destEmpty: "没有找到匹配的目的地", destShowMore: "展开更多城市", destShowLess: "收起", destAddPlan: "加入计划", destInPlan: "已在计划中", destCompareHint: "已选 {n}/4 · 再选 {need} 座可对比", compareBarNeed: "再选 1 座可对比", visaTag: "📋 VISA GUIDE", visaTitle: "数字游民签证指南", visaSubtitle: "热门远程工作签证一览——决定后写入旅居计划", visaShowMore: "查看全部签证方案", visaShowLess: "收起", visaToPlan: "写入旅居计划 →", blogTag: "📝 BLOG", blogTitle: "游民博客", blogSubtitle: "深度攻略与旅居经验", blogMore: "阅读更多文章 →", faqTag: "❓ FAQ", faqTitle: "常见问题", faqSubtitle: "关于数字游民生活,你可能想知道的一切", faqSearch: "搜索问题…", filterAll: "🌏 全部", filterSea: "🌴 东南亚", filterEurope: "🏰 欧洲", filterLatam: "🌮 拉美", filterAsia: "🏯 东亚", sortRating: "⭐ 评分排序", sortCostAsc: "💰 价格从低到高", sortCostDesc: "💰 价格从高到低", sortSpeed: "📶 网速排序", }, common: { backHome: "← 返回首页", browseDest: "浏览目的地", loading: "加载中…", copy: "复制", share: "分享", clear: "清空", save: "保存", cancel: "取消", open: "打开", learnMore: "了解更多", select: "请选择…", detail: "查看详情 →", alreadyInTrip: "该城市已在行程中", alreadyInPlan: "该城市已在计划中", addedToPlanMonths: "{emoji} {city} 已加入旅居计划({months} 个月)", cityOverBudget: "💰 月生活费 ¥{cost} 高于你的计划月预算 ¥{budget}", linkCopied: "链接已复制到剪贴板 📋", copyFail: "复制失败,请手动复制地址栏", favorite: "🤍 收藏", favorited: "❤️ 已收藏", loginFavorite: "🤍 登录收藏", monthsUnit: "月", addToPlan: "🗓️ 加入旅居计划", inPlanOpen: "✓ 已在计划中 · 打开 →", stayLabel: "停留", goCompare: "⚖️ 去对比", findNext: "🧭 找下一站", cityMeetups: "🍹 同城活动", shareBtn: "📤 分享", loadingDepth: "加载城市深度信息…", viewTimezone: "查看时区看板", }, plan: { tag: "🗓️ MOVE PLAN", defaultTitle: "我的旅居计划", titleAria: "计划标题", loading: "加载计划中…", subtitle: "把多城路线、预算、签证提醒和出发清单放在一页——真正能拿去执行的旅居计划。", syncing: "同步中…", synced: "✓ 已登录 · 计划云端同步", offline: "离线 · 仅保存在本机", loggedIn: "已登录", syncNow: "立即同步", loginSync: "登录后跨设备同步计划 →", startMonth: "预计出发月", budgetCap: "月预算上限(¥)", budgetPlaceholder: "如 8000", cities: "城市", duration: "总时长", totalBudget: "总预算", avgMonth: "均月开销", readiness: "出发就绪", monthsUnit: "月", stay: "停留", timeline: "路线时间轴", exportMd: "导出 MD", exportIcs: "导出日历", addCity: "添加城市", destination: "目的地", stayMonths: "停留月数", joinTimeline: "加入时间轴", checklist: "出发就绪清单", empty: "还没有城市。从目的地加入,或在下方添加第一站。", goDest: "去选目的地 →", emptyNextStop: "智能下一站", emptyCompare: "城市对比", moveUp: "上移", moveDown: "下移", removeStop: "移除", visas: "本行程签证方案", visaGuide: "签证指南 →", visaMissing: "当前行程国家暂无收录的游民签证条目,请对照停留提醒与官方政策。", compareInTrip: "行程内城市对比", openCompare: "打开对比台 →", notePlaceholder: "备注:住房、签证节点、必办事项…", overBudget: "均月开销已超过月预算上限。可缩短高消费城市停留,或调高预算。", overStay: "站停留可能超过常见免签/短签上限", markVisa: "标记「已确认签证」", needStartMonth: "请先设置预计出发月,再导出日历", icsFail: "无法生成日历,请检查行程", icsDone: "已下载日历文件,可导入手机/Google Calendar", mdDone: "已下载 Markdown 计划", copied: "计划已复制", shareCopied: "分享链接已复制", importedShare: "已导入分享的行程", addedToPlan: "已加入计划", syncedManual: "已手动同步到账号", syncFail: "同步失败,请稍后重试", cleared: "已清空行程", colCost: "月费", colSpeed: "网速", colClimate: "气候", colRating: "评分", colCommunity: "社区", exportStartMonth: "出发月:{month}", exportNote: "备注:", exportVisa: "签证:", exportStop: "{n}. {emoji} **{name}, {country}** — {months} 个月 · ¥{cost}{range}{note}{visa}", exportTotal: "> 总计 **{months} 个月** · **¥{cost}** · 均月 ¥{avg}", exportReady: "> 出发就绪度 **{pct}%**({checked}/{total})", exportFooter: "_由 nomadro 旅居计划中心生成 · {date}_", plainStop: "{n}. {emoji} {name}, {country} — {months}个月 ¥{cost}{range}", plainTotal: "总计: {months}个月 · ¥{cost} · 就绪 {pct}%", visaDuration: "时长", visaIncome: "收入要求", visaApproval: "审批", visaDifficulty: "难度", visaMissingCountries: "暂无收录:{countries} — 请以官方政策为准,并确认免签天数。", }, compare: { tag: "⚖️ COMPARE", title: "城市对比台", subtitle: "最多 4 城并排对比费用、网速、气候与评分。决定后一键写入旅居计划。", pick: "选择城市", clear: "清空", copyLink: "复制链接", needMore: "再选至少", needMoreSuffix: "座城市开始对比", backDest: "回首页勾选对比", addWinner: "推荐城写入计划", addAll: "全部写入旅居计划 →", dest: "目的地", plan: "旅居计划", maxCities: "最多对比 4 座城市", alreadyInPlan: "这些城市已在计划中", alreadyOne: "该城已在计划中", addedN: "已加入", citiesUnit: "座城市", skipped: "跳过", wrotePlan: "已写入计划", needShare: "至少选 2 座城市再分享", linkCopied: "对比链接已复制", winner: "👑 综合推荐", history: "最近对比", clearHistory: "清空记录", restore: "恢复", snapshot: "复制对比快照", snapshotOk: "对比快照已复制", snapshotTitle: "⚖️ nomadro 城市对比", scoreLabel: "综合 {score}", loadingDest: "目的地数据加载中或暂不可用", winnerMeetups: "🍹 {city} 同城活动", openPlan: "打开计划中心", }, login: { welcome: "欢迎回来", join: "加入 nomadro", loginHint: "登录后同步收藏与个人偏好,跨设备继续你的旅居探索", registerHint: "创建账号,保存收藏与偏好,随时随地继续", hintExplore: "登录后同步收藏与个人偏好,跨设备继续探索", hintProfile: "查看收藏、行程进度与个人设置", hintPlan: "同步旅居计划、收藏与就绪清单", hintCompare: "登录后继续你的城市对比", hintTools: "登录后使用需要账号的工具与服务", hintDestination: "登录后回到该城市页面,收藏与计划自动同步", hintDating: "登录后开始滑动匹配,成功可私信聊天", hintChat: "登录后查看与回复私信", hintMeetups: "登录后报名活动或发起聚会", hintJoin: "登录后开通或管理 VIP 会员", hintNotifications: "登录后查看通知与提醒", hintGigs: "登录后申请赏金或发布任务", hintCommunity: "登录后发帖与参与讨论", hintSubmit: "登录后提交内容投稿", hintDigital: "登录后继续数字游民课程与成长路径", hintVideos: "登录后收藏访谈并同步稍后再看", hintJobs: "登录后收藏远程岗位并继续申请", hintAi: "登录后使用旅居助手并保存提问记录", hintNextStop: "登录后继续下一站决策并写入计划", hintMap: "登录后查看游民分布与数据报告", redirectTo: "登录后将前往", planMergeNote: "检测到本机已有行程,登录后会自动与账号合并", destHome: "首页", destProfile: "个人中心", destPlan: "旅居计划", destCompare: "城市对比", destTools: "工具箱", destDestination: "城市详情", destDating: "游民匹配", destChat: "私信", destMeetups: "游民活动", destJoin: "会员中心", destNotifications: "通知中心", destGigs: "赏金任务", destCommunity: "社区讨论", destSubmit: "内容投稿", destDigital: "数字游民学院", destVideos: "游民访谈", destJobs: "远程岗位", destAi: "旅居助手", destNextStop: "下一站决策", destMap: "游民地图", tabLogin: "登录", tabRegister: "注册", nickname: "昵称", email: "邮箱", password: "密码", nickPlaceholder: "你的游民昵称", pwdPlaceholder: "至少 6 位", submitLoginDefault: "登录", submitLoginPlan: "登录并同步计划", submitRegister: "创建账号", demo: "体验演示账号", demoHintDefault: "无需注册,一键体验完整功能", demoHintPlan: "演示账号含示例行程,适合体验计划与同步", or: "或", processing: "处理中…", welcomeToastDefault: "欢迎回来!", welcomeToastPlan: "欢迎回来,计划正在同步", registerToast: "账号已创建,欢迎加入 nomadro", demoToast: "演示账号已登录", loginError: "邮箱或密码错误", registerError: "注册失败,邮箱可能已被使用", nameMin: "昵称至少 2 个字符", pwdMin: "密码至少 6 位", showPwd: "显示密码", pwdHint: "至少 6 位,建议包含字母与数字", pwdNeed: "还差 {n} 位", pwdOk: "可用 · 再长一点更安全", pwdStrong: "强度不错", }, footer: { explore: "探索", connect: "连接", grow: "成长", tools: "工具", account: "账户", tagline: "让每个人都能自由地工作和生活在这个星球上 🌏", destinations: "目的地", plan: "旅居计划", compare: "城市对比", visa: "签证指南", blog: "博客", about: "关于 nomadro", toolkit: "实用工具", ebook: "游牧代码 · 电子书", planHub: "计划中心", compareHub: "对比台", calculator: "费用计算器", changelog: "更新日志", login: "登录 / 注册", profile: "用户中心", privacy: "隐私政策", nextStop: "下一站决策", meetups: "游民活动", community: "社区讨论", dating: "游民匹配", chat: "私信", digital: "游民学院", join: "开通会员", gigs: "赏金任务", pricing: "会员定价", notifications: "通知中心", feedback: "意见反馈", help: "帮助中心", contact: "联系我们", videos: "游民访谈", services: "游民服务", ai: "旅居助手", mapPage: "游民地图", report: "数据报告", }, dating: { tag: "💕 MATCH", title: "游民匹配", subtitle: "按意图滑动 —— 交朋友、约会、找室友或联创伙伴", loginTitle: "登录后开始匹配", loginDesc: "完善资料后即可滑动卡片,匹配成功可私信聊天", joinFirst: "先完善你的游民资料", joinBtn: "一键加入匹配", joinOk: "资料已完善,开始匹配", joinFail: "加入失败", swipeFail: "滑动失败,请检查登录或配额", empty: "暂时没有更多候选,明天再来看看", matched: "你和", keepSwiping: "继续滑", chatNow: "去聊天", likesTitle: "喜欢", likesSubtitle: "你右滑喜欢的游民会出现在这里", likesEmpty: "还没有喜欢任何人,去滑一张卡片吧", backSwipe: "返回匹配", undo: "撤销", goSwipe: "去滑动匹配", globalNomad: "全球游民", noBio: "这位游民还没写自我介绍", meetAtEvents: "去活动认识人", moreIntents: "更多意图…", intentFriends: "交朋友", intentDating: "约会", intentPartner: "伴侣", intentRoommate: "合租", intentCofounder: "联创", intentExplore: "探索", vipUnlimited: "✨ VIP 无限滑", quotaLeft: "今日剩余 {remaining}/{limit} 次", vipUnlock: "开通 VIP 无限匹配", loadingCandidates: "加载候选人…", loadingProfile: "加载匹配资料…", refresh: "刷新", viewChats: "查看对话", openVip: "开通 VIP", defaultCity: "全球", defaultBio: "nomadro 游民", swipeHint: "← 左滑跳过 · 右滑喜欢 → · 上滑超级喜欢(也可点按钮 / 方向键)", swipeLeft: "跳过", swipeRight: "喜欢", swipeUp: "超级喜欢", likesReceivedTab: "喜欢我的", likesMineTab: "我喜欢的", likesReceivedSubtitle: "对你右滑的游民会出现在这里", likesReceivedEmpty: "还没有人喜欢你,先去完善资料并滑动匹配", likesYou: "喜欢了你", likeBack: "回赞 / 匹配", likeSent: "已发送喜欢", viewProfile: "查看资料", }, chat: { tag: "✉️ MESSAGES", title: "私信", loginTitle: "登录后查看私信", loginDesc: "匹配成功或活动结识的游民,在这里继续对话", empty: "还没有对话,去匹配页滑一张卡片吧", noMessages: "暂无消息", sayHi: "打个招呼开始对话吧", loadingMessages: "加载消息…", loadingList: "加载对话…", sendFail: "发送失败,请稍后重试", peerFallback: "游民", goDating: "去匹配", back: "返回列表", placeholder: "输入消息…", send: "发送", draftRestored: "已恢复未发送草稿", }, join: { tag: "✨ MEMBERSHIP", title: "加入 nomadro 会员", subtitle: "完善资料并开通 VIP,解锁无限匹配、活动直播与付费课程", step1: "完善资料", step2: "开通 VIP", city: "当前城市", bio: "一句话介绍", saveProfile: "保存资料", vipDesc: "一次开通,全站 VIP 权益", perk1: "无限滑动匹配", perk2: "私信无限制", perk3: "活动直播房间", perk4: "学院付费课程", payBtn: "立即开通", profileOk: "资料已保存", profileFail: "保存失败", payFail: "创建订单失败", paidLoading: "正在确认支付…", paidOk: "欢迎成为 VIP 会员!", paidFail: "支付确认失败,请联系客服或重试", goDating: "去匹配", goDigital: "去学院", retry: "返回开通页", draftHint: "资料草稿会自动保存在本机", saving: "保存中…", vipActive: "✨ 你已是 VIP · 权益已生效", }, live: { loading: "加载直播间…", loginRequired: "登录并报名后可进入直播", vipRequired: "VIP 会员可进入此活动直播", back: "返回活动", unavailable: "无法打开直播间", unavailableDesc: "活动可能不存在,或暂时不可用", hostRequired: "仅主办方可进入此房间", offlineOnly: "此活动为线下场次,没有在线直播间", layoutSplit: "分屏", layoutVideo: "视频", layoutChat: "聊天", linksMissing: "直播链接尚未配置", openVideo: "新窗口打开视频", openChat: "新窗口打开聊天", iframeHint: "若画面空白,请用上方按钮在新窗口打开", }, digital: { tag: "🎓 ACADEMY", title: "数字游民学院", subtitle: "系统课程、游牧代码电子书与精选远程岗位", course: "视频课程", courseTag: "COURSE", modules: "模块", lessons: "课时", free: "免费", ebook: "游牧代码", ebookDesc: "完整电子书,在独立阅读器中打开", jobs: "远程岗位", jobsTag: "JOBS", jobsDesc: "精选远程/游民友好职位", jobsSubtitle: "每周更新,点击直达招聘页", jobsEmpty: "暂无岗位", jobsGoGigs: "去赏金任务", jobsGoCommunity: "社区求助", jobsSave: "收藏", jobsSaved: "已收藏", jobsUnsaved: "已取消收藏", jobsSavedList: "收藏的岗位", jobsClearSaved: "清空收藏", jobsSearch: "搜索岗位、公司或城市…", jobsFilterAll: "全部", apply: "查看职位", vip: "VIP 会员", vipDesc: "解锁全部付费课时与直播", vipUnlocked: "✨ VIP 已解锁付费课时", vipHint: "免费课时可直接学 · VIP 课时需开通会员", unlockVip: "开通解锁", courseEmpty: "课程内容准备中", loadingLesson: "加载课时…", missingLesson: "课时不存在", backCatalog: "返回课程目录", dayGuide: "每日指南", dayGuideDesc: "从税务居民到落地验网,三天起步清单", back: "学院首页", backCourse: "课程目录", locked: "此课时需要 VIP", lockedDesc: "开通会员即可观看全部课程与活动直播", prev: "上一课", next: "下一课", }, tools: { tag: "🛠️ TOOLKIT", title: "nomadro 工具箱", subtitle: "规划、金钱、工作、生活与安全——一站直达所有旅居工具", backHub: "← 返回工具箱", open: "打开 →", searchPlaceholder: "搜索工具,如「签证」「机票」「笔记」…", featuredHint: "先用这几个", loading: "加载工具…", showAll: "展开全部 {n} 个工具", empty: "没有匹配的工具,试试其他关键词", clearFilter: "清除筛选", goNextStop: "去下一站", corePlan: "旅居计划中心", corePlanDesc: "时间轴 · 签证 · 预算 · 日历导出", coreCompare: "城市对比台", coreCompareDesc: "并排指标 · 一键写入计划", coreSync: "登录同步", coreSyncDesc: "跨设备保存计划与收藏", hubNextStop: "下一站决策", hubNextStopDesc: "预算 · 网速 · 气候智能推荐", hubMeetups: "游民活动", hubMeetupsDesc: "线上圆桌与线下聚会 RSVP", hubCommunity: "社区讨论", hubCommunityDesc: "签证远程住宿经验交流", hubDating: "游民匹配", hubDatingDesc: "滑动匹配同路游民", hubChat: "私信", hubChatDesc: "与匹配成功的游民聊天", hubDigital: "游民学院", hubDigitalDesc: "课程电子书与远程岗位", hubJoin: "开通会员", hubJoinDesc: "VIP 解锁直播与付费课", metaSuffix: "工具箱", metaFallback: "工具 · nomadro", }, nextStop: { tag: "🧭 NEXT STOP", title: "下一站决策", subtitle: "根据预算、网络、气候与偏好,从 nomadro 目的地库中智能推荐下一座旅居城市", budget: "月预算", internet: "最低网速", climate: "气候偏好", tags: "生活方式标签", bestMatch: "最佳匹配", score: "匹配分", viewCity: "查看城市", addPlan: "加入计划", detail: "详情", loading: "计算推荐中…", routes: "推荐路线", days: "天", addRoute: "写入计划", routeAdded: "路线已写入旅居计划", addedPlan: "已将 {city} 加入计划", meetups: "近期活动", allMeetups: "全部活动", climateMild: "🌤️ 温和", climateWarm: "☀️ 偏暖", climateCool: "🍂 偏凉", tagLowCost: "低成本", tagFastNet: "高速网络", tagWarm: "温暖气候", tagCommunity: "社区活跃", tagVisa: "签证友好", tagBeach: "海滨", tagFood: "美食", reasonInBudget: "预算内", reasonOverBudget: "略超预算", reasonNetOk: "网络达标", reasonNetCheck: "需确认网络", moreTags: "更多标签…", resetPrefs: "重置偏好", prefsSaved: "偏好已记住", }, meetups: { tag: "🎉 MEETUPS", title: "游民活动", subtitle: "线上圆桌、线下聚会与混合活动 —— 连接同城的数字游民", all: "全部", rsvp: "人已报名", rsvpBtn: "报名参加", rsvpDone: "已报名", rsvpOk: "报名成功", rsvpFail: "报名失败,请稍后重试", alreadyRsvp: "你已经报名过了", viewCity: "查看目的地", liveBtn: "进入直播", hostBtn: "发起活动", hostTitle: "发起游民活动", hostSubtitle: "线上活动自动创建 MiroTalk 房间与 Lounge 频道", hostName: "活动名称", hostCity: "城市", hostMode: "形式", hostDate: "日期 / 时间", hostVenue: "地点", hostDesc: "活动介绍", hostSubmit: "发布活动", hostOk: "活动已发布", hostFail: "发布失败", hostNeedFields: "请填写活动名称和日期", hosting: "创建中…", modeOnline: "线上", modeOffline: "线下", modeHybrid: "混合", loginHint: "登录后报名,名额会同步到你的账号", loginToast: "登录后报名,名额才会保留", cancelRsvp: "取消报名", cancelOk: "已取消报名", exportCal: "导出日历", exportCalDone: "已下载活动日历", exportCalFail: "没有可导出的活动日期", addToCal: "加入日历", loginDesc: "登录后即可创建线上或线下游民活动", empty: "暂无匹配的活动", draftRestored: "已恢复未发布的活动草稿", draftHint: "内容会自动保存在本机", tripEvents: "行程城市活动", meetPeers: "同城可能认识的人", goDating: "去匹配", rsvpCalCta: "导出日历", viewRsvps: "查看报名", viewProfile: "查看资料", }, community: { tag: "💬 COMMUNITY", title: "社区讨论", subtitle: "签证、远程工作、住宿与安全 —— 和游民们交流真实经验", bannerTitle: "不知道下一站去哪?", bannerDesc: "先用决策台筛选城市,再来社区问细节。", bannerCta: "打开下一站决策", hot: "热门讨论", search: "搜索话题…", empty: "没有匹配的讨论", loginDesc: "登录后即可发布话题并参与讨论", back: "返回社区", readMore: "阅读全文", replies: "回复", noReplies: "暂无回复", replyHint: "登录后可参与回复", newTopic: "发起讨论", newTitle: "发起新讨论", newSubject: "标题", newCategory: "分类", newBody: "内容", newSubmit: "发布", createOk: "讨论已发布", createFail: "发布失败", replyPlaceholder: "写下你的回复…", replySend: "发送回复", replySending: "发送中…", replyNeed: "请先写一点回复内容", replyOk: "回复已发布", replyFail: "回复失败", noRepliesYet: "还没有回复,来做第一个吧", catAll: "全部", catVisa: "签证", catRemote: "远程工作", catHousing: "住宿", catSafety: "安全", catCommunity: "社区", draftRestored: "已恢复未发布草稿", draftNeed: "标题必填,正文至少 10 字", draftHint: "内容会自动保存在本机", replyDraftRestored: "已恢复未发送的回复草稿", }, gigs: { tag: "💼 GIGS", title: "赏金任务", subtitle: "远程协作与小任务,游民接单赚外快", apply: "提交申请", applyPlaceholder: "简述你的经验与报价…", applyOk: "申请已提交", applyFail: "申请失败", applyNeed: "请先填写申请说明", applying: "提交中…", applied: "✓ 已申请", loginFirst: "请先登录", empty: "暂时没有开放任务", emptyHint: "你可以发布一条赏金,或先去学院看看远程岗位", save: "收藏", saved: "已收藏", unsaved: "已取消收藏", savedList: "收藏的赏金", clearSaved: "清空收藏", postTitle: "发布赏金任务", postName: "任务标题", postDesc: "任务描述与交付要求", postBudget: "预算(如 ¥800)", postSubmit: "发布", posting: "发布中…", postNeed: "请填写标题和描述", postOk: "任务已发布", postFail: "发布失败", budgetNegotiable: "面议", draftHint: "草稿会自动保存在本机", back: "返回赏金列表", }, notifications: { title: "通知", empty: "暂无通知", markRead: "全部标为已读", loginDesc: "登录后查看匹配、报名与回复提醒", markOne: "标为已读", emptyHint: "去互动一下,通知会出现在这里", }, pricing: { title: "会员方案", subtitle: "免费探索,VIP 解锁完整社区能力", free: "免费版", freeDesc: "适合初次体验", free1: "每日 25 次匹配滑动", free2: "参与社区讨论与活动 RSVP", vip: "VIP 会员", year: "年", try: "开始匹配", }, feedback: { tag: "💬 FEEDBACK", title: "意见反馈", subtitle: "Bug、功能建议或安全问题 —— 我们会认真阅读", placeholder: "描述你遇到的问题或建议…", submit: "提交反馈", submitting: "提交中…", ok: "感谢反馈!", fail: "提交失败", minLength: "请至少写 5 个字", guestHint: "未登录也可提交;登录后便于我们回复你", thanksTitle: "已收到,谢谢", thanksDesc: "我们会认真阅读每一条反馈", writeAgain: "再写一条", goCommunity: "去社区", catGeneral: "一般反馈", catBug: "Bug 报告", catFeature: "功能建议", catSafety: "安全问题", draftRestored: "已恢复未提交草稿", draftHint: "内容会自动保存在本机", widgetTitle: "给 nomadro 提建议", widgetSubtitle: "功能想法、体验问题,或只是想说喜欢", openFull: "打开完整反馈页", failRetry: "发送失败,请稍后重试或去反馈页", fabAria: "反馈", fabTitle: "反馈建议", close: "关闭", sendBtn: "发送反馈 🚀", }, videos: { tag: "🎬 VIDEOS", title: "游民访谈", subtitle: "真实旅居故事与目的地实录", back: "返回视频列表", empty: "视频内容准备中", readEbook: "先读电子书", goDigital: "去学院", noPlayer: "播放链接暂未配置", relatedMeetups: "相关活动", saveLater: "稍后再看", saved: "已加入稍后再看", unsaved: "已移出稍后再看", watchLater: "稍后再看", clearSaved: "清空", savedEmpty: "还没有收藏视频", }, digest: { tag: "📌 DIGEST", title: "今日游民摘要", subtitle: "计划、活动、视频与最近探索,一页收口", planCities: "计划城市", readiness: "就绪", rsvps: "已报名", noUpcoming: "暂无即将开始的活动", watchLater: "稍后再看", openVideos: "打开访谈", lastAi: "最近提问", askAi: "去问旅居助手", resumeTitle: "接着探索", resumeSub: "从计划、活动或最近看过的城市继续", }, mapPage: { tag: "🗺️ MAP", title: "游民地图", subtitle: "看看同路游民分布在哪里", weather: "目的地天气", hint: "完整交互地图见首页世界地图区块", loading: "加载地图…", empty: "暂无公开会员分布", weatherEmpty: "天气暂不可用", goDating: "去匹配", goMeetups: "去活动", }, services: { tag: "🛎️ SERVICES", title: "游民服务", subtitle: "认证顾问与志愿者提供的落地支持", name: "你的姓名", email: "邮箱", message: "需求描述", inquire: "咨询", submitting: "提交中…", leadOk: "咨询已提交", leadFail: "提交失败", needFields: "请填写姓名、邮箱和需求说明", needEmail: "请填写有效邮箱地址", sent: "✓ 已提交咨询,我们会尽快联系你", empty: "服务清单准备中", emptyCta: "先去社区问问", draftRestored: "已恢复未提交的咨询草稿", draftHint: "内容会自动保存在本机", }, report: { tag: "📊 REPORT", title: "数据报告", subtitle: "城市热度与游民分布快照", ranking: "城市排名", members: "活跃游民", viewMap: "查看地图", loading: "加载报告…", rankEmpty: "排名数据暂不可用", membersEmpty: "会员分布暂不可用", goNextStop: "去智能下一站", snapshot: "复制报告快照", snapshotOk: "报告快照已复制", }, submit: { tag: "📝 SUBMIT", title: "内容投稿", subtitle: "分享你的旅居文章、视频或电子书,审核后展示", article: "文章", video: "视频", ebook: "电子书", subject: "标题", url: "链接(如有)", notes: "补充说明", send: "提交审核", submitting: "提交中…", ok: "投稿已收到", fail: "提交失败", needTitle: "请填写更完整的标题", needUrl: "文章/视频请填写有效链接(http/https)", thanksTitle: "投稿已收到", thanksDesc: "审核通过后会出现在博客或视频区", writeAgain: "再投一篇", goCommunity: "去社区", draftHint: "草稿会自动保存在本机", }, ai: { tag: "🤖 AI", title: "旅居助手", subtitle: "描述预算、网速、气候偏好 —— 智能推荐城市", placeholder: "例如:预算 8000、要网速快、气候温暖…", ask: "获取推荐", fail: "暂时无法回答,请稍后再试", nextStop: "打开下一站决策", thinking: "思考中…", needQuestion: "先写一个问题", noCityData: "推荐城市暂无完整数据,请从详情页加入计划", writeFail: "未能写入计划", writePlan: "写入计划", compareCities: "城市对比", sendHint: "Ctrl/⌘ + Enter 发送", history: "最近提问", clearHistory: "清空历史", tip1: "预算 6000,想找网速好的东南亚城市", tip2: "适合第一次远程办公的城市?", tip3: "清迈和巴厘岛怎么选?", draftRestored: "已恢复未发送的提问草稿", draftHint: "提问草稿会自动保存在本机", }, recent: { tag: "👀 RECENT", title: "最近浏览", subtitle: "接着探索你刚看过的城市,或一键对比", compareRecent: "对比最近浏览", searchLabel: "最近看过", }, search: { trigger: "搜索...", aria: "搜索", placeholder: "搜城市、活动、工具… 或从下方路径进入", loading: "搜索中...", empty: "😢 没有找到「{q}」相关结果", ringLabel: "从一条路径开始", kbdHint: "⌨️ ↑↓ 选择 · Enter 跳转 · Esc 关闭", typeDestination: "目的地", typeBlog: "博客", typeVisa: "签证", typeFaq: "FAQ", typeTool: "工具", typePage: "页面", ringDiscover: "智能发现", ringDiscoverSub: "匹配偏好,锁定下一座城市", ringNext: "下一站决策", ringNextSub: "预算网速气候智能推荐", ringMeetups: "游民活动", ringMeetupsSub: "先遇见人,再深入聊", ringCommunity: "社区讨论", ringCommunitySub: "签证远程住宿经验", ringDigital: "游民学院", ringDigitalSub: "课程与远程路径", ringTools: "实用工具", ringToolsSub: "按需取用,不堆菜单", pagePlan: "旅居计划中心", pagePlanSub: "时间轴、预算、签证提醒与出发清单", pageCompare: "城市对比台", pageCompareSub: "并排对比费用网速气候,写入计划", pageDating: "游民匹配", pageDatingSub: "滑动匹配同路游民", pageChat: "私信", pageChatSub: "与匹配成功的游民聊天", pageGigs: "赏金任务", pageGigsSub: "远程小任务接单", pageJoin: "开通会员", pageJoinSub: "VIP 匹配直播与课程", pageBook: "游牧代码电子书", pageBookSub: "在线阅读与下载版", pageVideos: "游民访谈", pageVideosSub: "真实旅居视频", pageServices: "游民服务", pageServicesSub: "签证税务落地咨询", pageAi: "旅居助手", pageAiSub: "AI 推荐下一站城市", pageMap: "游民地图", pageMapSub: "会员分布与天气", pageReport: "数据报告", pageReportSub: "城市排名快照", pageFeedback: "意见反馈", pageFeedbackSub: "Bug 与建议", pageSubmit: "内容投稿", pageSubmitSub: "文章视频电子书", pageHelp: "帮助中心", pageHelpSub: "常见问题", pageContact: "联系我们", pageContactSub: "合作与媒体", pagePricing: "会员定价", pagePricingSub: "免费版与 VIP 方案", pageNotif: "通知中心", pageNotifSub: "匹配与社区动态", pageAbout: "关于 nomadro", pageAboutSub: "品牌与联系方式", pageChangelog: "更新日志", pageChangelogSub: "功能迭代记录", pagePrivacy: "隐私政策", pagePrivacySub: "Cookie 与数据说明", pageCommunitySub: "签证远程住宿经验交流", pageMeetupsSub: "线上圆桌与线下聚会", pageDigitalSub: "课程电子书与远程岗位", pageTools: "工具箱", pageToolsSub: "旅居小工具按需取用", }, share: { button: "📤 分享", aria: "分享", system: "📱 系统分享", copy: "📋 复制链接", twitter: "🐦 分享到 X", }, destDetail: { guide: "🧭 落地指南", bestFor: "适合:", radar: "📊 城市画像", scoreValue: "性价比", scoreSpeed: "网速", scoreClimate: "气候", scoreRating: "评分", scoreCommunity: "社区", timezone: "时区", nomadCommunity: "游民社区", active: "活跃", climate: "气候", livable: "宜居", costBreak: "💸 月度成本拆解", pros: "👍 优势", cons: "👎 注意", reviews: "💬 游民评价", localChat: "💬 同城社群", peopleUnit: "人", recentTopics: "近期话题:", relatedMeetups: "🍹 相关活动", relatedDiscussions: "🧵 相关讨论", relatedContent: "📚 相关内容", relatedRegion: "🔗 同区域推荐", viewFallback: "查看", snapCost: "月生活费 ¥{cost} · 网速 {speed}Mbps · 评分 {rating}", snapClimate: "均温 {temp}°C · 游民 {nomads}", snapVisa: "签证提示:{visa}", snapDetail: "详情:{url}", perMonth: "/月", }, profile: { myRsvps: "我报名的活动", rsvpEmpty: "还没有报名活动", goMeetups: "去看看活动 →", openLive: "进入直播", snapshotOk: "城市快照已复制", snapshotBtn: "📋 复制快照", exportRsvps: "导出已报名日历", logout: "退出登录", changeAvatar: "更换头像", uploading: "上传中…", avatarOk: "头像已更新", avatarFail: "上传失败", avatarTooBig: "图片请小于 5MB", syncing: "计划同步中…", synced: "✓ 计划已云端同步", offline: "计划仅本机", loggedIn: "账号已登录", statFavs: "收藏目的地", statCities: "计划城市", statReady: "出发就绪", statBadges: "成就徽章", connectStrip: "Connect 动态", statLikes: "喜欢我的", statMatches: "互相喜欢", statChats: "私信会话", statRsvps: "已报名活动", openPlan: "打开计划中心", tripEmpty: "还没有规划行程", goPlan: "去规划 →", startLabel: "出发 {month}", budgetLabel: "月预算 ¥{budget}", avgMonthLabel: " · 均月 ¥{avg}", readyCount: "就绪 {checked}/{total}", monthsCost: "{months} 个月 · ¥{cost}", totalLine: "总计", monthsUnit: "个月", compareTrip: "对比行程城市", keepEditing: "继续编辑 →", achievements: "🏅 游民成就", myFavs: "❤️ 我的收藏", favsToPlan: "收藏写入计划({n})", favsAlready: "收藏城市都已在计划中", favsAdded: "已将 {n} 座收藏城市写入计划", favsEmpty: "还没有收藏目的地", goExplore: "去探索 →", loading: "加载中...", perMonth: "/月", quickLinks: "🚀 快捷入口", qDest: "🌍 浏览目的地", qPlan: "🗓️ 旅居计划", qCompare: "⚖️ 城市对比", qNext: "🧭 智能下一站", qMeetups: "🎉 游民活动", qDating: "💕 游民匹配", qChat: "✉️ 私信", qNotif: "🔔 通知", qVip: "✨ 开通 VIP", qVipMember: "✨ VIP 会员", qDigital: "🎓 游民学院", qAi: "🤖 旅居助手", qTools: "🛠️ 工具箱", badgeNewbie: "初出茅庐", badgeNewbieDesc: "加入 nomadro", badgeCollector: "收藏家", badgeCollectorDesc: "收藏 3+ 目的地", badgePlanner: "行程达人", badgePlannerDesc: "规划 3+ 城市行程", badgeLongStay: "长期旅居", badgeLongStayDesc: "行程总计 6+ 个月", badgeReady: "出发就绪", badgeReadyDesc: "就绪清单 ≥ 50%", badgeGlobal: "环球游民", badgeGlobalDesc: "探索 5+ 城市", }, notifSettings: { title: "通知设置", loginDesc: "登录后可管理匹配、活动与社区通知偏好", back: "返回通知", save: "保存设置", saved: "设置已保存", fail: "保存失败", loading: "加载偏好…", saving: "保存中…", match: "匹配通知", meetup: "活动提醒", community: "社区动态", push: "推送通知 (ntfy)", email: "邮件摘要", marketing: "活动营销", }, newsletter: { title: "订阅游民周报", subtitle: "活动预告、签证变动与社区精选 —— 每周一封", email: "你的邮箱", submit: "订阅", ok: "订阅成功", fail: "订阅失败", }, pwa: { installHint: "可安装到主屏幕,离线也能打开计划入口", }, matcher: { tag: "🎯 MATCHER · {n}/{total}", resultsTag: "✨ YOUR MATCHES", close: "关闭", cancel: "取消", back: "← 上一步", budgetTitle: "你的月预算?", budgetSub: "包含住宿、餐饮、交通等日常开销", climateTitle: "偏好什么气候?", climateSub: "选择最让你舒适的环境", priorityTitle: "最看重什么?", prioritySub: "我们会据此为你智能排序", regionTitle: "想去哪个区域?", regionSub: "可以选「不限」探索全球", budgetLow: "精打细算", budgetLowDesc: "¥5,000 以下/月", budgetMed: "舒适适中", budgetMedDesc: "¥5,000 – 9,000/月", budgetHigh: "品质优先", budgetHighDesc: "¥9,000 以上/月", climateWarm: "热带温暖", climateWarmDesc: "25°C 以上,阳光沙滩", climateMild: "温和宜人", climateMildDesc: "18–25°C,四季舒适", climateCool: "凉爽清爽", climateCoolDesc: "18°C 以下,清爽干燥", priCost: "生活成本", priCostDesc: "花最少的钱过最好的生活", priSpeed: "网络速度", priSpeedDesc: "稳定高速,会议不掉线", priCommunity: "游民社区", priCommunityDesc: "结识同行,快速融入", priLifestyle: "生活方式", priLifestyleDesc: "文化、美食与体验", regionAny: "不限", regionAnyDesc: "全球探索", regionSea: "东南亚", regionSeaDesc: "性价比之王", regionEurope: "欧洲", regionEuropeDesc: "历史与签证友好", regionLatam: "拉美", regionLatamDesc: "活力与北美时区", regionAsia: "东亚", regionAsiaDesc: "安全高效现代", resultsTitle: "为你推荐的目的地", resultsSub: "偏好已保存。可一键写入旅居计划,或先对比再决定。", empty: "暂无匹配结果,目的地数据可能未加载", retry: "重新测试", goNextStop: "去智能下一站", matchPct: "{n}% 匹配", addPlan: "+ 计划", retryBtn: "🔄 重新测试", compareTop: "⚖️ 对比 Top {n}", writeTop: "把 Top {n} 写入计划 →", alreadyAll: "这几座城已在计划中", addFail: "未能加入计划", addedTop: "已将 Top {n} 城写入旅居计划", skipped: "(跳过 {n} 座已有)", }, shortcuts: { title: "键盘快捷键", subtitle: "提升浏览效率,按 ? 随时唤起", aria: "键盘快捷键", close: "关闭", search: "全局搜索", matcher: "智能匹配", nextStop: "下一站", plan: "旅居计划", tools: "打开工具箱", help: "快捷键帮助", esc: "关闭弹窗", }, tips: { title: "游民小贴士", more: "了解更多 →", close: "关闭", tip1: "入住前用 Speedtest 测网速,低于 20Mbps 慎重签约", tip2: "准备一张无外汇手续费的信用卡,省下不少换汇成本", tip3: "出发前购买国际医疗保险,月费约 $40+", tip4: "选时区重叠 ≥4 小时的城市,远程协作更轻松", tip5: "护照有效期建议预留 6 个月以上,避免登机被拒", tip6: "先订 1 周短租探路,再决定长期租房", }, faqUi: { empty: "没有匹配的问题", clear: "清除搜索", help: "帮助中心", askAi: "问 AI", showAll: "展开全部 {n} 个问题", still: "还在选城?", browse: "继续看目的地", }, cookies: { body: "我们使用本地存储保存主题、行程与登录会话,不做广告追踪。", privacy: "隐私政策", cookies: "Cookie 说明", ok: "知道了 ✓", }, onboard: { aria: "新手引导", skip: "跳过", next: "下一步 →", startMatch: "开始匹配 →", goDigital: "去学院看看 →", step1Title: "发现去哪", step1Desc: "用智能匹配或地图,先锁定下一座城市", step2Title: "遇见同行", step2Desc: "同城活动与社区讨论,先认识真实的人", step3Title: "成长变现", step3Desc: "学院与赏金任务,在路上继续做事", }, lang: { zh: "中文", en: "EN", }, } as const; export const en: { [K in keyof typeof zh]: typeof zh[K] extends string ? string : { [P in keyof typeof zh[K]]: string } } = { brand: "nomadro", tagline: "Code your way around the world", nav: { map: "🗺️ Map", mapShort: "Map", destinations: "🌍 Destinations", plan: "🗓️ Plan", compare: "⚖️ Compare", tools: "🛠️ Tools", nextStop: "🧭 Next stop", meetups: "🎉 Events", community: "💬 Community", dating: "💕 Match", chat: "✉️ Messages", digital: "🎓 Academy", join: "✨ VIP", gigs: "💼 Gigs", pricing: "💎 Pricing", notifications: "🔔 Alerts", ebook: "📖 Ebook", services: "🛎️ Services", feedback: "💬 Feedback", ai: "🤖 AI", visa: "📋 Visas", blog: "📝 Blog", blogShort: "Blog", login: "Log in", theme: "Toggle theme", menu: "Menu", lang: "Language", exploreGroup: "Explore", connectGroup: "Connect", growGroup: "Grow", }, hero: { badge: "digital nomads on the move worldwide", titleLine1: "Ship code.", titleLine2: "See the world", ctaExplore: "Start with a city", ctaPlan: "🗓️ Move plan", ctaCompare: "⚖️ Compare cities", ctaMatch: "🎯 Match where to go", scroll: "Scroll down", statCountries: "🗺️ Countries to explore", statCost: "💰 Avg monthly cost (k CNY)", statHappy: "😊 Satisfaction %", }, strip: { title: "⚡ Core path", openPlan: "Open move plan →", plan: "Plan", compare: "Compare", destinations: "Cities", visa: "Visas", tools: "Toolkit", weekend: "Weekend", cost: "Costs", changelog: "Updates", }, journey: { tag: "PATH", title: "One path. Three linked rings.", subtitle: "Pick a city, meet people, then grow on the road — open only what you need next.", step1Title: "Find where", step1Desc: "Match preferences or tap the map to lock your next city.", step1Cta: "Start discovering", step2Title: "Meet people", step2Desc: "Local meetups and community threads before you go deep.", step2Cta: "See events", step3Title: "Grow & earn", step3Desc: "Academy, gigs, and small tools — keep shipping while you travel.", step3Cta: "Open academy", matchCta: "Start matching", step4Title: "Toolkit", step4Desc: "Costs, jet lag, packing, scam tips — dozens of helpers on demand.", step4Cta: "Open toolkit", }, ring: { tag: "NEXT", continue: "What you can do next", plan: "Add to move plan", planDesc: "Put this city on your timeline and budget.", meetups: "Local meetups", meetupsDesc: "Meet offline first, then keep talking.", meetupsFromCommunity: "Take the thread offline.", meetupsFromDating: "Join an event together.", community: "Community", communityDesc: "Visas, housing, remote-work tips.", communityWork: "Remote work threads and collab.", dating: "Nomad match", datingDesc: "Friends, roommates, or cofounders.", chat: "Open messages", chatDesc: "Continue the conversation.", nextStop: "Next-stop picker", nextStopDesc: "Narrow choices when you are unsure.", digital: "Academy", digitalDesc: "Courses and remote-work tracks.", compareDesc: "Compare side-by-side, then add to plan.", }, home: { mapTag: "🗺️ WORLD MAP", mapTitle: "Nomad heatmap", mapSubtitle: "Tap a pin for details, or scroll down for the full city list", mapPick: "Pick a city", mapPickHint: "Tap a pin on the map", mapCost: "Monthly cost", mapSpeed: "Wi‑Fi", mapTemp: "Avg temp", mapRating: "Rating", mapBrowse: "Browse all cities →", destTag: "🌴 TOP DESTINATIONS", destTitle: "Top nomad cities", destSubtitle: "Filter, favorite, tap a city for full details", destMatcher: "Not sure where? Smart match", destSearch: "Search cities…", destEmpty: "No cities match your filters", destShowMore: "Show more cities", destShowLess: "Show less", destAddPlan: "Add to plan", destInPlan: "In your plan", destCompareHint: "{n}/4 picked · pick {need} more to compare", compareBarNeed: "Pick 1 more to compare", visaTag: "📋 VISA GUIDE", visaTitle: "Digital nomad visas", visaSubtitle: "Popular remote-work visas — then add stops to your move plan", visaShowMore: "Show all visa options", visaShowLess: "Show less", visaToPlan: "Open move plan →", blogTag: "📝 BLOG", blogTitle: "Nomad blog", blogSubtitle: "Guides and field notes", blogMore: "More articles →", faqTag: "❓ FAQ", faqTitle: "FAQ", faqSubtitle: "What nomads ask before they go", faqSearch: "Search questions…", filterAll: "🌏 All", filterSea: "🌴 SE Asia", filterEurope: "🏰 Europe", filterLatam: "🌮 LatAm", filterAsia: "🏯 East Asia", sortRating: "⭐ Rating", sortCostAsc: "💰 Cost low → high", sortCostDesc: "💰 Cost high → low", sortSpeed: "📶 Wi‑Fi speed", }, common: { backHome: "← Back home", browseDest: "Destinations", loading: "Loading…", copy: "Copy", share: "Share", clear: "Clear", save: "Save", cancel: "Cancel", open: "Open", learnMore: "Learn more", select: "Select…", detail: "Details →", alreadyInTrip: "Already in your trip", alreadyInPlan: "Already in your plan", addedToPlanMonths: "{emoji} {city} added to move plan ({months} mo)", cityOverBudget: "💰 Monthly cost ¥{cost} is above your plan budget ¥{budget}", linkCopied: "Link copied 📋", copyFail: "Copy failed — copy from the address bar", favorite: "🤍 Save", favorited: "❤️ Saved", loginFavorite: "🤍 Sign in to save", monthsUnit: "mo", addToPlan: "🗓️ Add to move plan", inPlanOpen: "✓ In plan · Open →", stayLabel: "Stay", goCompare: "⚖️ Compare", findNext: "🧭 Next stop", cityMeetups: "🍹 Local events", shareBtn: "📤 Share", loadingDepth: "Loading city depth…", viewTimezone: "See timezone board", }, plan: { tag: "🗓️ MOVE PLAN", defaultTitle: "My move plan", titleAria: "Plan title", loading: "Loading plan…", subtitle: "Timeline, budget, visa alerts and a readiness checklist — a plan you can actually execute.", syncing: "Syncing…", synced: "✓ Signed in · plan synced", offline: "Offline · local only", loggedIn: "Signed in", syncNow: "Sync now", loginSync: "Sign in to sync across devices →", startMonth: "Start month", budgetCap: "Monthly budget cap (¥)", budgetPlaceholder: "e.g. 8000", cities: "Cities", duration: "Duration", totalBudget: "Total budget", avgMonth: "Avg / month", readiness: "Readiness", monthsUnit: "mo", stay: "Stay", timeline: "Route timeline", exportMd: "Export MD", exportIcs: "Export calendar", addCity: "Add city", destination: "Destination", stayMonths: "Stay (months)", joinTimeline: "Add to timeline", checklist: "Departure checklist", empty: "No cities yet. Pick destinations or add your first stop below.", goDest: "Browse destinations →", emptyNextStop: "Smart next stop", emptyCompare: "Compare cities", moveUp: "Move up", moveDown: "Move down", removeStop: "Remove", visas: "Visas for this trip", visaGuide: "Visa guide →", visaMissing: "No nomad-visa entries for these countries yet — check stay hints and official policy.", compareInTrip: "Compare trip cities", openCompare: "Open compare →", notePlaceholder: "Notes: housing, visa milestones, todos…", overBudget: "Avg monthly cost exceeds your budget cap. Shorten pricey stops or raise the cap.", overStay: "stop(s) may exceed typical visa-free limits", markVisa: "Mark visa researched", needStartMonth: "Set a start month before exporting the calendar", icsFail: "Could not build calendar — check your trip", icsDone: "Calendar downloaded — import on phone / Google Calendar", mdDone: "Markdown plan downloaded", copied: "Plan copied", shareCopied: "Share link copied", importedShare: "Shared trip imported", addedToPlan: "added to plan", syncedManual: "Synced to your account", syncFail: "Sync failed — try again later", cleared: "Trip cleared", colCost: "Cost", colSpeed: "Wi‑Fi", colClimate: "Climate", colRating: "Rating", colCommunity: "Community", exportStartMonth: "Start month: {month}", exportNote: "Note: ", exportVisa: "Visa: ", exportStop: "{n}. {emoji} **{name}, {country}** — {months} mo · ¥{cost}{range}{note}{visa}", exportTotal: "> Total **{months} mo** · **¥{cost}** · avg ¥{avg}/mo", exportReady: "> Readiness **{pct}%** ({checked}/{total})", exportFooter: "_Generated by nomadro move plan · {date}_", plainStop: "{n}. {emoji} {name}, {country} — {months}mo ¥{cost}{range}", plainTotal: "Total: {months}mo · ¥{cost} · readiness {pct}%", visaDuration: "Duration", visaIncome: "Income", visaApproval: "Approval", visaDifficulty: "Difficulty", visaMissingCountries: "No entries yet: {countries} — check official policy and visa-free days.", }, compare: { tag: "⚖️ COMPARE", title: "City compare", subtitle: "Compare up to 4 cities on cost, Wi‑Fi, climate and rating — then add winners to your plan.", pick: "Pick cities", clear: "Clear", copyLink: "Copy link", needMore: "Pick at least", needMoreSuffix: "more cities to compare", backDest: "Pick on homepage", addWinner: "Add recommended city", addAll: "Add all to move plan →", dest: "Destinations", plan: "Move plan", maxCities: "Compare up to 4 cities", alreadyInPlan: "These cities are already in your plan", alreadyOne: "Already in your plan", addedN: "Added", citiesUnit: "cities", skipped: "skipped", wrotePlan: "added to plan", needShare: "Pick at least 2 cities to share", linkCopied: "Compare link copied", winner: "👑 Top pick", history: "Recent compares", clearHistory: "Clear history", restore: "Restore", snapshot: "Copy compare snapshot", snapshotOk: "Compare snapshot copied", snapshotTitle: "⚖️ nomadro city compare", scoreLabel: "score {score}", loadingDest: "Destinations loading or unavailable", winnerMeetups: "🍹 Events in {city}", openPlan: "Open plan hub", }, login: { welcome: "Welcome back", join: "Join nomadro", loginHint: "Sync favorites and preferences across your devices", registerHint: "Create an account to save favorites and pick up anywhere", hintExplore: "Sync favorites and keep exploring across devices", hintProfile: "View favorites, trip progress and account settings", hintPlan: "Sync your move plan, favorites and checklist", hintCompare: "Continue your city comparison after sign-in", hintTools: "Access tools and services that need an account", hintDestination: "Return to this city with favorites and plans in sync", hintDating: "Sign in to swipe matches and chat on mutual like", hintChat: "Sign in to read and reply to messages", hintMeetups: "Sign in to RSVP or host nomad events", hintJoin: "Sign in to manage or upgrade VIP membership", hintNotifications: "Sign in to view alerts and reminders", hintGigs: "Sign in to apply for gigs or post bounties", hintCommunity: "Sign in to post and join discussions", hintSubmit: "Sign in to submit content", hintDigital: "Continue digital nomad courses and growth tracks", hintVideos: "Save interviews and sync watch-later", hintJobs: "Save remote roles and keep applying", hintAi: "Use the travel assistant and keep your questions", hintNextStop: "Continue next-stop decisions and write to plan", hintMap: "Explore member map and city reports", redirectTo: "After sign-in you'll go to", planMergeNote: "Local trip data found — we'll merge it with your account", destHome: "Home", destProfile: "Profile", destPlan: "Move plan", destCompare: "Compare", destTools: "Toolkit", destDestination: "City page", destDating: "Nomad match", destChat: "Messages", destMeetups: "Events", destJoin: "Membership", destNotifications: "Notifications", destGigs: "Bounty gigs", destCommunity: "Community", destSubmit: "Content submit", destDigital: "Digital academy", destVideos: "Nomad videos", destJobs: "Remote jobs", destAi: "Travel assistant", destNextStop: "Next stop", destMap: "Nomad map", tabLogin: "Log in", tabRegister: "Sign up", nickname: "Nickname", email: "Email", password: "Password", nickPlaceholder: "Your nomad nickname", pwdPlaceholder: "At least 6 characters", submitLoginDefault: "Log in", submitLoginPlan: "Log in & sync plan", submitRegister: "Create account", demo: "Try demo account", demoHintDefault: "No sign-up needed — explore with one click", demoHintPlan: "Demo includes a sample trip for testing plan sync", or: "or", processing: "Working…", welcomeToastDefault: "Welcome back!", welcomeToastPlan: "Welcome back — syncing your plan", registerToast: "Account created — welcome to nomadro", demoToast: "Signed in with demo account", loginError: "Wrong email or password", registerError: "Sign-up failed — email may already be in use", nameMin: "Name must be at least 2 characters", pwdMin: "Password must be at least 6 characters", showPwd: "Show password", pwdHint: "At least 6 characters — letters and numbers recommended", pwdNeed: "{n} more characters needed", pwdOk: "OK · a bit longer is safer", pwdStrong: "Looking strong", }, footer: { explore: "Explore", connect: "Connect", grow: "Grow", tools: "Tools", account: "Account", tagline: "Work and live freely anywhere on this planet 🌏", destinations: "Destinations", plan: "Move plan", compare: "Compare", visa: "Visas", blog: "Blog", about: "About nomadro", toolkit: "Utility tools", ebook: "Nomad Code · Ebook", planHub: "Plan hub", compareHub: "Compare hub", calculator: "Cost calculator", changelog: "Changelog", login: "Log in / Sign up", profile: "Profile", privacy: "Privacy", nextStop: "Next stop", meetups: "Events", community: "Community", dating: "Nomad match", chat: "Messages", digital: "Academy", join: "Membership", gigs: "Bounty gigs", pricing: "Pricing", notifications: "Notifications", feedback: "Feedback", help: "Help", contact: "Contact", videos: "Videos", services: "Services", ai: "AI assistant", mapPage: "Nomad map", report: "Data report", }, dating: { tag: "💕 MATCH", title: "Nomad match", subtitle: "Swipe by intent — friends, dating, roommates or cofounders", loginTitle: "Sign in to start matching", loginDesc: "Complete your profile, then swipe cards and chat on match", joinFirst: "Complete your nomad profile first", joinBtn: "Join matching", joinOk: "Profile ready — start matching", joinFail: "Could not join", swipeFail: "Swipe failed — check login or quota", empty: "No more candidates — check back tomorrow", matched: "You matched with", keepSwiping: "Keep swiping", chatNow: "Open chat", likesTitle: "Likes", likesSubtitle: "Profiles you swiped right on", likesEmpty: "No likes yet — go swipe some cards", backSwipe: "Back to match", undo: "Undo", goSwipe: "Start swiping", globalNomad: "Global nomad", noBio: "This nomad hasn't written a bio yet", meetAtEvents: "Meet people at events", moreIntents: "More intents…", intentFriends: "Friends", intentDating: "Dating", intentPartner: "Partner", intentRoommate: "Roommate", intentCofounder: "Cofounder", intentExplore: "Explore", vipUnlimited: "✨ VIP unlimited swipes", quotaLeft: "{remaining}/{limit} left today", vipUnlock: "Get VIP for unlimited matching", loadingCandidates: "Loading candidates…", loadingProfile: "Loading match profile…", refresh: "Refresh", viewChats: "View chats", openVip: "Get VIP", defaultCity: "Global", defaultBio: "nomadro nomad", swipeHint: "← Swipe left to pass · right to like → · up for superlike (or use buttons / arrows)", swipeLeft: "Pass", swipeRight: "Like", swipeUp: "Super like", likesReceivedTab: "Liked you", likesMineTab: "You liked", likesReceivedSubtitle: "People who swiped right on you", likesReceivedEmpty: "No incoming likes yet — keep your profile fresh and swipe", likesYou: "Liked you", likeBack: "Like back", likeSent: "Like sent", viewProfile: "View profile", }, chat: { tag: "✉️ MESSAGES", title: "Messages", loginTitle: "Sign in to view messages", loginDesc: "Continue conversations with nomads you matched or met at events", empty: "No conversations yet — swipe on the match page", noMessages: "No messages yet", sayHi: "Say hi to start the conversation", loadingMessages: "Loading messages…", loadingList: "Loading conversations…", sendFail: "Could not send — try again", peerFallback: "Nomad", goDating: "Go match", back: "Back to inbox", placeholder: "Type a message…", send: "Send", draftRestored: "Unsent draft restored", }, join: { tag: "✨ MEMBERSHIP", title: "Join nomadro VIP", subtitle: "Complete your profile and unlock unlimited matching, live events and paid lessons", step1: "Profile", step2: "VIP", city: "Current city", bio: "Short bio", saveProfile: "Save profile", vipDesc: "One membership, all VIP perks", perk1: "Unlimited swipes", perk2: "Unlimited DMs", perk3: "Live event rooms", perk4: "Paid academy lessons", payBtn: "Get VIP", profileOk: "Profile saved", profileFail: "Could not save profile", payFail: "Could not create order", paidLoading: "Confirming payment…", paidOk: "Welcome to VIP!", paidFail: "Payment confirmation failed — retry or contact support", goDating: "Go to match", goDigital: "Go to academy", retry: "Back to membership", draftHint: "Profile draft autosaves on this device", saving: "Saving…", vipActive: "✨ You're VIP — perks are active", }, live: { loading: "Loading live room…", loginRequired: "Sign in and RSVP to join the live room", vipRequired: "VIP required for this live event", back: "Back to events", unavailable: "Can't open live room", unavailableDesc: "This event may not exist or is temporarily unavailable", hostRequired: "Only the host can enter this room", offlineOnly: "This is an offline event — no live room", layoutSplit: "Split", layoutVideo: "Video", layoutChat: "Chat", linksMissing: "Live links are not configured yet", openVideo: "Open video in new tab", openChat: "Open chat in new tab", iframeHint: "If the embed is blank, open the rooms in a new tab above", }, digital: { tag: "🎓 ACADEMY", title: "Nomad academy", subtitle: "Courses, the Nomad Code ebook and curated remote jobs", course: "Video courses", courseTag: "COURSE", modules: "modules", lessons: "lessons", free: "Free", ebook: "Nomad Code", ebookDesc: "Full ebook in the dedicated reader", jobs: "Remote jobs", jobsTag: "JOBS", jobsDesc: "Curated remote-friendly roles", jobsSubtitle: "Updated weekly — links open employer pages", jobsEmpty: "No jobs listed", jobsGoGigs: "Browse gigs", jobsGoCommunity: "Ask community", jobsSave: "Save", jobsSaved: "Saved", jobsUnsaved: "Removed from saved", jobsSavedList: "Saved jobs", jobsClearSaved: "Clear saved", jobsSearch: "Search role, company or city…", jobsFilterAll: "All", apply: "View role", vip: "VIP membership", vipDesc: "Unlock all paid lessons and live events", vipUnlocked: "✨ VIP unlocked — paid lessons available", vipHint: "Free lessons are open · VIP lessons need membership", unlockVip: "Unlock with VIP", courseEmpty: "Course content coming soon", loadingLesson: "Loading lesson…", missingLesson: "Lesson not found", backCatalog: "Back to catalog", dayGuide: "Daily guides", dayGuideDesc: "Tax residency to landing Wi‑Fi — a 3-day starter checklist", back: "Academy home", backCourse: "Course catalog", locked: "VIP required", lockedDesc: "Get VIP to watch all lessons and join live events", prev: "Previous", next: "Next", }, tools: { tag: "🛠️ TOOLKIT", title: "nomadro toolkit", subtitle: "Planning, money, work, life and safety — every nomad tool in one place", backHub: "← Back to toolkit", open: "Open →", searchPlaceholder: "Search tools, e.g. visa, flights, notes…", featuredHint: "Start with these", loading: "Loading tool…", showAll: "Show all {n} tools", empty: "No tools match — try another keyword", clearFilter: "Clear filters", goNextStop: "Next stop", corePlan: "Move plan", corePlanDesc: "Timeline · visas · budget · ICS", coreCompare: "City compare", coreCompareDesc: "Side-by-side · add to plan", coreSync: "Sign in & sync", coreSyncDesc: "Keep plan & favorites across devices", hubNextStop: "Next stop", hubNextStopDesc: "Budget · speed · climate picks", hubMeetups: "Nomad events", hubMeetupsDesc: "Online roundtables & meetups", hubCommunity: "Community", hubCommunityDesc: "Visas, remote work & housing tips", hubDating: "Nomad match", hubDatingDesc: "Swipe to meet fellow nomads", hubChat: "Messages", hubChatDesc: "Chat with your matches", hubDigital: "Academy", hubDigitalDesc: "Courses, ebook & remote jobs", hubJoin: "VIP membership", hubJoinDesc: "Unlock live events & lessons", metaSuffix: "Toolkit", metaFallback: "Tools · nomadro", }, nextStop: { tag: "🧭 NEXT STOP", title: "Next stop", subtitle: "Budget, internet, climate and tags — smart picks from the nomadro destination library", budget: "Monthly budget", internet: "Min speed", climate: "Climate", tags: "Lifestyle tags", bestMatch: "Best match", score: "score", viewCity: "View city", addPlan: "Add to plan", detail: "Details", loading: "Crunching recommendations…", routes: "Suggested routes", days: "days", addRoute: "Add route to plan", routeAdded: "Route added to your plan", addedPlan: "{city} added to plan", meetups: "Upcoming events", allMeetups: "All events", climateMild: "🌤️ Mild", climateWarm: "☀️ Warm", climateCool: "🍂 Cool", tagLowCost: "Low cost", tagFastNet: "Fast internet", tagWarm: "Warm climate", tagCommunity: "Active community", tagVisa: "Visa friendly", tagBeach: "Beach", tagFood: "Food", reasonInBudget: "In budget", reasonOverBudget: "Slightly over budget", reasonNetOk: "Internet OK", reasonNetCheck: "Check internet", moreTags: "More tags…", resetPrefs: "Reset prefs", prefsSaved: "Preferences remembered", }, meetups: { tag: "🎉 MEETUPS", title: "Nomad events", subtitle: "Online roundtables, meetups and hybrid gatherings", all: "All", rsvp: "RSVPs", rsvpBtn: "RSVP", rsvpDone: "RSVP'd", rsvpOk: "You're in!", rsvpFail: "RSVP failed — try again", alreadyRsvp: "You already RSVP'd", viewCity: "View destination", liveBtn: "Join live", hostBtn: "Host event", hostTitle: "Host a nomad event", hostSubtitle: "Online events get MiroTalk + Lounge rooms automatically", hostName: "Event title", hostCity: "City", hostMode: "Format", hostDate: "Date / time", hostVenue: "Venue", hostDesc: "Description", hostSubmit: "Publish", hostOk: "Event published", hostFail: "Could not publish", hostNeedFields: "Please fill in the title and date", hosting: "Publishing…", modeOnline: "Online", modeOffline: "In person", modeHybrid: "Hybrid", loginHint: "Sign in to RSVP — seats sync to your account", loginToast: "Sign in to RSVP and keep your seat", cancelRsvp: "Cancel RSVP", cancelOk: "RSVP cancelled", exportCal: "Export calendar", exportCalDone: "Event calendar downloaded", exportCalFail: "No events with dates to export", addToCal: "Add to calendar", loginDesc: "Sign in to host online or in-person nomad events", empty: "No events match this filter", draftRestored: "Unpublished event draft restored", draftHint: "Draft autosaves on this device", tripEvents: "Events near your trip", meetPeers: "People you may meet nearby", goDating: "Go match", rsvpCalCta: "Export calendar", viewRsvps: "View RSVPs", viewProfile: "View profile", }, community: { tag: "💬 COMMUNITY", title: "Community", subtitle: "Visas, remote work, housing and safety — real talk from nomads", bannerTitle: "Not sure where to go next?", bannerDesc: "Use the decision hub first, then ask for details here.", bannerCta: "Open next-stop hub", hot: "Hot thread", search: "Search topics…", empty: "No discussions match", loginDesc: "Sign in to post topics and join discussions", back: "Back to community", readMore: "Read more", replies: "replies", noReplies: "No replies yet", replyHint: "Sign in to reply", newTopic: "New topic", newTitle: "Start a discussion", newSubject: "Title", newCategory: "Category", newBody: "Content", newSubmit: "Publish", createOk: "Discussion published", createFail: "Could not publish", replyPlaceholder: "Write a reply…", replySend: "Post reply", replySending: "Sending…", replyNeed: "Write a reply first", replyOk: "Reply posted", replyFail: "Reply failed", noRepliesYet: "No replies yet — be the first", catAll: "All", catVisa: "Visa", catRemote: "Remote work", catHousing: "Housing", catSafety: "Safety", catCommunity: "Community", draftRestored: "Unpublished draft restored", draftNeed: "Title required, body at least 10 characters", draftHint: "Draft autosaves on this device", replyDraftRestored: "Unsent reply draft restored", }, gigs: { tag: "💼 GIGS", title: "Bounty gigs", subtitle: "Small remote tasks for nomads", apply: "Apply", applyPlaceholder: "Your experience and rate…", applyOk: "Application sent", applyFail: "Application failed", applyNeed: "Write a short application note first", applying: "Sending…", applied: "✓ Applied", loginFirst: "Sign in first", empty: "No open gigs right now", emptyHint: "Post a bounty, or browse academy remote jobs", save: "Save", saved: "Saved", unsaved: "Removed from saved", savedList: "Saved gigs", clearSaved: "Clear saved", postTitle: "Post a gig", postName: "Task title", postDesc: "Description and deliverables", postBudget: "Budget (e.g. ¥800)", postSubmit: "Publish", posting: "Publishing…", postNeed: "Title and description are required", postOk: "Gig published", postFail: "Could not publish", budgetNegotiable: "Negotiable", draftHint: "Draft autosaves on this device", back: "Back to gigs", }, notifications: { title: "Notifications", empty: "No notifications", markRead: "Mark all read", loginDesc: "Sign in to see matches, RSVPs and replies", markOne: "Mark read", emptyHint: "Interact a bit — alerts will show up here", }, pricing: { title: "Plans", subtitle: "Explore free — unlock the full community with VIP", free: "Free", freeDesc: "Great to start", free1: "25 swipes per day", free2: "Discussions & event RSVPs", vip: "VIP", year: "year", try: "Start matching", }, feedback: { tag: "💬 FEEDBACK", title: "Feedback", subtitle: "Bugs, ideas, or safety issues — we read every message", placeholder: "Describe your issue or suggestion…", submit: "Send feedback", submitting: "Sending…", ok: "Thanks for your feedback!", fail: "Could not send", minLength: "Please write at least 5 characters", guestHint: "No login required — sign in if you want a reply", thanksTitle: "Got it — thank you", thanksDesc: "We read every piece of feedback", writeAgain: "Write another", goCommunity: "Go to community", catGeneral: "General", catBug: "Bug report", catFeature: "Feature request", catSafety: "Safety", draftRestored: "Unsaved draft restored", draftHint: "Draft autosaves on this device", widgetTitle: "Suggest improvements for nomadro", widgetSubtitle: "Feature ideas, UX issues, or just say you like it", openFull: "Open full feedback page", failRetry: "Send failed — retry later or open the feedback page", fabAria: "Feedback", fabTitle: "Send feedback", close: "Close", sendBtn: "Send feedback 🚀", }, videos: { tag: "🎬 VIDEOS", title: "Nomad interviews", subtitle: "Real stories from the road", back: "Back to videos", empty: "Videos coming soon", readEbook: "Read the ebook", goDigital: "Academy", noPlayer: "Playback link not configured yet", relatedMeetups: "Related events", saveLater: "Watch later", saved: "Saved to watch later", unsaved: "Removed from watch later", watchLater: "Watch later", clearSaved: "Clear", savedEmpty: "No saved videos yet", }, digest: { tag: "📌 DIGEST", title: "Today's nomad digest", subtitle: "Plan, events, videos and recent explores in one place", planCities: "Plan cities", readiness: "Ready", rsvps: "RSVPs", noUpcoming: "No upcoming events", watchLater: "Watch later", openVideos: "Open videos", lastAi: "Last question", askAi: "Ask the assistant", resumeTitle: "Pick up where you left off", resumeSub: "Continue from plan, events, or recent cities", }, services: { tag: "🛎️ SERVICES", title: "Nomad services", subtitle: "Vetted advisors and city volunteers", name: "Your name", email: "Email", message: "What do you need?", inquire: "Inquire", submitting: "Sending…", leadOk: "Inquiry sent", leadFail: "Could not send", needFields: "Name, email and message are required", needEmail: "Enter a valid email address", sent: "✓ Inquiry sent — we'll get back to you soon", empty: "Services listing coming soon", emptyCta: "Ask in the community", draftRestored: "Unsent inquiry draft restored", draftHint: "Draft autosaves on this device", }, ai: { tag: "🤖 AI", title: "Travel assistant", subtitle: "Budget, internet, climate — get city picks", placeholder: "e.g. budget 8000, fast internet, warm climate…", ask: "Get picks", fail: "Could not answer — try again", nextStop: "Open next-stop hub", thinking: "Thinking…", needQuestion: "Write a question first", noCityData: "No full city data yet — add from the detail page", writeFail: "Could not add to plan", writePlan: "Add to plan", compareCities: "Compare cities", sendHint: "Ctrl/⌘ + Enter to send", history: "Recent questions", clearHistory: "Clear history", tip1: "Budget 6000, fast internet in Southeast Asia", tip2: "Best cities for first-time remote work?", tip3: "Chiang Mai vs Bali — which fits me?", draftRestored: "Unsent question draft restored", draftHint: "Question draft autosaves on this device", }, recent: { tag: "👀 RECENT", title: "Recently viewed", subtitle: "Pick up where you left off, or compare them", compareRecent: "Compare recent cities", searchLabel: "Recently viewed", }, search: { trigger: "Search...", aria: "Search", placeholder: "Cities, events, tools… or pick a path below", loading: "Searching...", empty: "😢 No results for “{q}”", ringLabel: "Start from a path", kbdHint: "⌨️ ↑↓ select · Enter go · Esc close", typeDestination: "City", typeBlog: "Blog", typeVisa: "Visa", typeFaq: "FAQ", typeTool: "Tool", typePage: "Page", ringDiscover: "Smart discover", ringDiscoverSub: "Match preferences to your next city", ringNext: "Next stop", ringNextSub: "Budget, Wi‑Fi, climate picks", ringMeetups: "Events", ringMeetupsSub: "Meet people first", ringCommunity: "Community", ringCommunitySub: "Visas, remote work, housing", ringDigital: "Academy", ringDigitalSub: "Courses and remote paths", ringTools: "Tools", ringToolsSub: "Grab what you need", pagePlan: "Move plan hub", pagePlanSub: "Timeline, budget, visa tips, checklist", pageCompare: "City compare", pageCompareSub: "Side-by-side cost, Wi‑Fi, climate", pageDating: "Nomad match", pageDatingSub: "Swipe to meet fellow nomads", pageChat: "Messages", pageChatSub: "Chat with matches", pageGigs: "Bounty gigs", pageGigsSub: "Small remote tasks", pageJoin: "Membership", pageJoinSub: "VIP matching, live events, courses", pageBook: "Nomad Code ebook", pageBookSub: "Read online or download", pageVideos: "Videos", pageVideosSub: "Real nomad stories", pageServices: "Services", pageServicesSub: "Visa, tax, landing help", pageAi: "AI assistant", pageAiSub: "City picks for your next stop", pageMap: "Nomad map", pageMapSub: "Member map and weather", pageReport: "Data report", pageReportSub: "City ranking snapshot", pageFeedback: "Feedback", pageFeedbackSub: "Bugs and ideas", pageSubmit: "Submit content", pageSubmitSub: "Articles, videos, ebooks", pageHelp: "Help", pageHelpSub: "FAQ", pageContact: "Contact", pageContactSub: "Partners and press", pagePricing: "Pricing", pagePricingSub: "Free and VIP plans", pageNotif: "Notifications", pageNotifSub: "Matches and community", pageAbout: "About nomadro", pageAboutSub: "Brand and contact", pageChangelog: "Changelog", pageChangelogSub: "Product updates", pagePrivacy: "Privacy", pagePrivacySub: "Cookies and data", pageCommunitySub: "Visa and housing tips from nomads", pageMeetupsSub: "Online roundtables and meetups", pageDigitalSub: "Courses, ebook, remote jobs", pageTools: "Toolkit", pageToolsSub: "Nomad utilities on demand", }, share: { button: "📤 Share", aria: "Share", system: "📱 System share", copy: "📋 Copy link", twitter: "🐦 Share on X", }, destDetail: { guide: "🧭 Arrival guide", bestFor: "Best for:", radar: "📊 City profile", scoreValue: "Value", scoreSpeed: "Wi‑Fi", scoreClimate: "Climate", scoreRating: "Rating", scoreCommunity: "Community", timezone: "Timezone", nomadCommunity: "Nomad community", active: "active", climate: "Climate", livable: "Best months", costBreak: "💸 Monthly cost breakdown", pros: "👍 Pros", cons: "👎 Watch-outs", reviews: "💬 Nomad reviews", localChat: "💬 Local chats", peopleUnit: "people", recentTopics: "Recent topics:", relatedMeetups: "🍹 Related events", relatedDiscussions: "🧵 Related threads", relatedContent: "📚 Related content", relatedRegion: "🔗 Same region", viewFallback: "View", snapCost: "Cost ¥{cost}/mo · {speed}Mbps · rating {rating}", snapClimate: "Avg {temp}°C · nomads {nomads}", snapVisa: "Visa tip: {visa}", snapDetail: "Details: {url}", perMonth: "/mo", }, profile: { myRsvps: "My RSVPs", rsvpEmpty: "No event RSVPs yet", goMeetups: "Browse events →", openLive: "Join live", snapshotOk: "City snapshot copied", snapshotBtn: "📋 Copy snapshot", exportRsvps: "Export RSVP calendar", logout: "Sign out", changeAvatar: "Change avatar", uploading: "Uploading…", avatarOk: "Avatar updated", avatarFail: "Upload failed", avatarTooBig: "Image must be under 5MB", syncing: "Syncing plan…", synced: "✓ Plan synced to cloud", offline: "Plan local only", loggedIn: "Signed in", statFavs: "Favorites", statCities: "Plan cities", statReady: "Readiness", statBadges: "Badges", connectStrip: "Connect pulse", statLikes: "Liked you", statMatches: "Matches", statChats: "Chats", statRsvps: "RSVPs", openPlan: "Open plan hub", tripEmpty: "No trip planned yet", goPlan: "Start planning →", startLabel: "Start {month}", budgetLabel: "Budget ¥{budget}/mo", avgMonthLabel: " · avg ¥{avg}", readyCount: "Ready {checked}/{total}", monthsCost: "{months} mo · ¥{cost}", totalLine: "Total", monthsUnit: "mo", compareTrip: "Compare trip cities", keepEditing: "Keep editing →", achievements: "🏅 Nomad badges", myFavs: "❤️ My favorites", favsToPlan: "Add favorites to plan ({n})", favsAlready: "Favorite cities are already in your plan", favsAdded: "Added {n} favorite cities to plan", favsEmpty: "No favorite destinations yet", goExplore: "Explore →", loading: "Loading...", perMonth: "/mo", quickLinks: "🚀 Quick links", qDest: "🌍 Destinations", qPlan: "🗓️ Move plan", qCompare: "⚖️ Compare", qNext: "🧭 Next stop", qMeetups: "🎉 Events", qDating: "💕 Match", qChat: "✉️ Messages", qNotif: "🔔 Alerts", qVip: "✨ Get VIP", qVipMember: "✨ VIP member", qDigital: "🎓 Academy", qAi: "🤖 AI assistant", qTools: "🛠️ Tools", badgeNewbie: "Newcomer", badgeNewbieDesc: "Joined nomadro", badgeCollector: "Collector", badgeCollectorDesc: "Favorited 3+ destinations", badgePlanner: "Route planner", badgePlannerDesc: "Planned 3+ cities", badgeLongStay: "Long stay", badgeLongStayDesc: "Trip totals 6+ months", badgeReady: "Departure ready", badgeReadyDesc: "Checklist ≥ 50%", badgeGlobal: "Global nomad", badgeGlobalDesc: "Explored 5+ cities", }, report: { tag: "📊 REPORT", title: "Data report", subtitle: "City rankings and member snapshot", ranking: "City ranking", members: "Active nomads", viewMap: "View map", loading: "Loading report…", rankEmpty: "Ranking data unavailable", membersEmpty: "Member map unavailable", goNextStop: "Open next-stop hub", snapshot: "Copy report snapshot", snapshotOk: "Report snapshot copied", }, mapPage: { tag: "🗺️ MAP", title: "Nomad map", subtitle: "Where community members are based", weather: "Destination weather", hint: "Full interactive map on the homepage", loading: "Loading map…", empty: "No public member locations yet", weatherEmpty: "Weather unavailable", goDating: "Go match", goMeetups: "Browse events", }, submit: { tag: "📝 SUBMIT", title: "Submit content", subtitle: "Share articles, videos, or ebooks for review", article: "Article", video: "Video", ebook: "Ebook", subject: "Title", url: "Link (optional)", notes: "Notes", send: "Submit", submitting: "Submitting…", ok: "Submission received", fail: "Could not submit", needTitle: "Please enter a fuller title", needUrl: "Articles/videos need a valid http/https link", thanksTitle: "Submission received", thanksDesc: "Approved items appear in blog or videos", writeAgain: "Submit another", goCommunity: "Go to community", draftHint: "Draft autosaves on this device", }, notifSettings: { title: "Notification settings", loginDesc: "Sign in to manage match, event and community alert preferences", back: "Back to inbox", save: "Save", saved: "Settings saved", fail: "Could not save", loading: "Loading preferences…", saving: "Saving…", match: "Match alerts", meetup: "Event reminders", community: "Community", push: "Push (ntfy)", email: "Email digest", marketing: "Marketing", }, newsletter: { title: "Nomad weekly", subtitle: "Events, visa updates & community picks — weekly email", email: "Your email", submit: "Subscribe", ok: "Subscribed", fail: "Could not subscribe", }, pwa: { installHint: "Install to home screen — open plan offline-ready", }, matcher: { tag: "🎯 MATCHER · {n}/{total}", resultsTag: "✨ YOUR MATCHES", close: "Close", cancel: "Cancel", back: "← Back", budgetTitle: "Monthly budget?", budgetSub: "Housing, food, transport and daily costs", climateTitle: "Preferred climate?", climateSub: "Pick the environment that feels right", priorityTitle: "What matters most?", prioritySub: "We'll rank cities with this in mind", regionTitle: "Which region?", regionSub: "Choose Anywhere to explore the world", budgetLow: "Budget-first", budgetLowDesc: "Under ¥5,000 / month", budgetMed: "Comfortable", budgetMedDesc: "¥5,000 – 9,000 / month", budgetHigh: "Quality first", budgetHighDesc: "¥9,000+ / month", climateWarm: "Tropical warm", climateWarmDesc: "25°C+, sun and beach", climateMild: "Mild", climateMildDesc: "18–25°C, comfortable year-round", climateCool: "Cool & dry", climateCoolDesc: "Under 18°C, crisp and dry", priCost: "Cost of living", priCostDesc: "More life for less money", priSpeed: "Internet speed", priSpeedDesc: "Stable and fast for meetings", priCommunity: "Nomad community", priCommunityDesc: "Meet peers and settle in fast", priLifestyle: "Lifestyle", priLifestyleDesc: "Culture, food and experiences", regionAny: "Anywhere", regionAnyDesc: "Global explore", regionSea: "Southeast Asia", regionSeaDesc: "Best value", regionEurope: "Europe", regionEuropeDesc: "History and visa-friendly", regionLatam: "LatAm", regionLatamDesc: "Energy and US timezones", regionAsia: "East Asia", regionAsiaDesc: "Safe, efficient, modern", resultsTitle: "Destinations for you", resultsSub: "Prefs saved. Add to your move plan, or compare first.", empty: "No matches yet — destination data may still be loading", retry: "Retake quiz", goNextStop: "Open next-stop hub", matchPct: "{n}% match", addPlan: "+ Plan", retryBtn: "🔄 Retake quiz", compareTop: "⚖️ Compare Top {n}", writeTop: "Add Top {n} to plan →", alreadyAll: "These cities are already in your plan", addFail: "Could not add to plan", addedTop: "Added Top {n} cities to your move plan", skipped: " (skipped {n} already there)", }, shortcuts: { title: "Keyboard shortcuts", subtitle: "Browse faster — press ? anytime", aria: "Keyboard shortcuts", close: "Close", search: "Global search", matcher: "Smart matcher", nextStop: "Next stop", plan: "Move plan", tools: "Open toolkit", help: "Shortcut help", esc: "Close dialog", }, tips: { title: "Nomad tip", more: "Learn more →", close: "Close", tip1: "Speedtest Wi‑Fi before signing a lease — under 20Mbps is risky", tip2: "Carry a no-FX-fee card to save on currency conversion", tip3: "Get international health insurance before you fly (~$40+/mo)", tip4: "Pick cities with ≥4h timezone overlap for easier remote work", tip5: "Keep 6+ months passport validity to avoid boarding issues", tip6: "Book 1 week short-term first, then commit to a longer lease", }, faqUi: { empty: "No FAQ matched", clear: "Clear search", help: "Help center", askAi: "Ask AI", showAll: "Show all {n} questions", still: "Still exploring? ", browse: "Browse destinations", }, cookies: { body: "We use local storage for theme, trip and login session — no ad tracking.", privacy: "Privacy", cookies: "Cookie notice", ok: "Got it ✓", }, onboard: { aria: "Onboarding", skip: "Skip", next: "Next →", startMatch: "Start matching →", goDigital: "See the academy →", step1Title: "Find where to go", step1Desc: "Use smart match or the map to lock your next city", step2Title: "Meet peers", step2Desc: "Local events and community — meet real people first", step3Title: "Grow on the road", step3Desc: "Academy and gigs so you keep building while traveling", }, lang: { zh: "中文", en: "EN", }, }; export const dictionaries = { zh, en } as const;