Add translations

This commit is contained in:
Andras Schmelczer 2026-04-04 09:27:55 +01:00
parent c14d28f430
commit a7aaf5effa
5 changed files with 4222 additions and 0 deletions

View file

@ -0,0 +1,804 @@
import type { Translations } from './en';
const zh: Translations = {
// ── Common ──────────────────────────────────────────
common: {
save: '保存',
cancel: '取消',
close: '关闭',
delete: '删除',
open: '打开',
share: '分享',
copy: '复制',
copied: '已复制!',
copiedToClipboard: '已复制到剪贴板',
loading: '加载中...',
loadMore: '加载更多',
remaining: '剩余 {{count}} 项',
search: '搜索',
all: '全部',
none: '无',
viewDataSource: '查看数据来源',
total: '总计',
min: '分钟',
or: '或',
area: '区域',
properties: '房产',
postcode: '邮编',
noAreaSelected: '未选择区域',
noAreaSelectedDesc: '点击地图上任意彩色区域,查看犯罪率、学校、房价等信息',
clickForDetails: '点击查看详情',
property: '处房产',
propertiesPlural: '处房产',
},
// ── Header / Nav ───────────────────────────────────
header: {
appName: 'Perfect Postcode',
dashboard: '地图面板',
learn: '了解更多',
pricing: '价格',
inviteFriends: '邀请好友',
saved: '已保存',
logIn: '登录',
createAccount: '注册账户',
sharing: '分享中...',
exportLabel: '导出',
exporting: '导出中...',
exportToExcel: '导出为 Excel',
openMenu: '打开菜单',
closeMenu: '关闭菜单',
},
// ── User Menu ──────────────────────────────────────
userMenu: {
fullAccess: '完整访问',
demo: '演示版',
themeLight: '主题:浅色',
themeDark: '主题:深色',
account: '账户',
logOut: '退出登录',
},
// ── Mobile Menu ────────────────────────────────────
mobileMenu: {
menu: '菜单',
home: '首页',
},
// ── Auth Modal ─────────────────────────────────────
auth: {
logIn: '登录',
createAccount: '注册账户',
resetPassword: '重置密码',
valueProp: '保存搜索、收藏房产,随时继续浏览。',
continueWithGoogle: '使用 Google 账号继续',
email: '邮箱',
emailPlaceholder: 'you@example.com',
password: '密码',
passwordPlaceholderRegister: '至少 8 个字符',
passwordPlaceholderLogin: '您的密码',
forgotPassword: '忘记密码?',
resetSent: '请查收邮件中的重置链接。',
pleaseWait: '请稍候...',
sendResetLink: '发送重置链接',
backToLogin: '返回登录',
},
// ── Upgrade Modal ──────────────────────────────────
upgrade: {
title: '查看整个英格兰',
description: '您目前正在浏览演示区域。获取终身访问权限,覆盖每个邮编、每项筛选条件、每个社区。一次付款,永久使用。',
free: '免费',
once: '/一次性',
freeForEarly: '早期用户免费。无需信用卡。',
oneTimePayment: '一次性付款。终身访问。30天无条件退款。',
redirecting: '跳转中...',
claimFreeAccess: '领取免费访问权限',
upgradeFor: '升级仅需 {{price}}',
registerAndUpgrade: '注册并升级',
alreadyHaveAccount: '已有账户?请登录',
continueWithDemo: '继续使用演示版',
checkoutFailed: '结账失败',
},
// ── Save Search Modal ──────────────────────────────
saveSearch: {
title: '保存搜索',
saved: '搜索已保存',
savedSuccess: '您的搜索已成功保存。',
viewSavedSearches: '查看已保存的搜索',
name: '名称',
namePlaceholder: '我的搜索',
saving: '保存中...',
},
// ── License Success ────────────────────────────────
licenseSuccess: {
title: '激活成功!',
subtitle: '您的终身访问权限已生效。',
description: '完整访问所有功能、所有邮编,覆盖整个英格兰。',
startExploring: '开始探索',
},
// ── Filters ────────────────────────────────────────
filters: {
activeFilters: '当前筛选条件',
addFilter: '添加筛选条件',
historical: '历史交易',
buy: '买房',
rent: '租房',
findingPerfectPostcode: '寻找理想的邮编',
addFiltersHint: '添加以下筛选条件,将地图缩小到符合您要求的区域',
upgradePrompt: '查看犯罪率、学校、噪音、宽带等 50 多项筛选条件,覆盖整个英格兰。',
oneTimeLifetime: '一次性付款,终身访问。',
upgradeToFullMap: '升级到完整地图',
chooseFilters: '选择您关心的筛选条件,地图会随之实时更新。',
searchFeatures: '搜索数据指标...',
noMatchingFeatures: '没有匹配的数据指标',
tryDifferentSearch: '尝试不同的搜索词',
allFeaturesActive: '所有数据指标已启用',
removeFilterHint: '移除一个筛选条件以查看可用的数据指标',
featureInfo: '数据指标信息',
replayTutorial: '重新播放交互教程',
},
// ── Philosophy Popup ───────────────────────────────
philosophy: {
intro: '从必须满足的条件开始,再逐步添加加分项。每添加一个筛选条件,地图范围就会缩小。剩下的区域就是最适合您的。',
step1Title: '预算和基本条件',
step1Desc: '(价格范围、建筑面积、房产类型)',
step2Title: '通勤',
step2Desc: '(驾车、骑行或公共交通到工作地点的时间)',
step3Title: '安全',
step3Desc: '(犯罪率、噪音水平、地面稳定性)',
step4Title: '学校',
step4Desc: '(附近 Ofsted 评级为"良好"或"优秀"的学校)',
step5Title: '生活方式',
step5Desc: '(餐厅、公园、宽带速度)',
step6Title: '能源',
step6Desc: '(能源性能证书评级、保温、供暖费用)',
tip: '提示:如果没有匹配结果,尝试逐个放宽条件,看看哪个让步能带来最多选择。',
},
// ── Travel Time ────────────────────────────────────
travel: {
travelTime: '通勤时间({{mode}}',
maxTime: '最长时间',
selectDestination: '选择目的地...',
bestCase: '最佳情况',
bestCaseTitle: '最佳通勤时间',
bestCaseDesc: '使用最快的实际出行时间(如果您把握好出发时间并赶上良好的换乘)。默认使用<strong>中位数</strong>,代表无论何时出发的典型出行时间。',
previewOnMap: '在地图上预览',
stopPreviewing: '停止预览',
removeTravelTime: '移除通勤时间',
addTravelTime: '添加{{mode}}通勤时间',
clearDestination: '清除目的地',
typeToFilter: '输入以筛选...',
noDestinations: '未找到目的地',
modeCar: '驾车',
modeBicycle: '骑行',
modeWalking: '步行',
modeTransit: '公共交通',
modeCarDesc: '经最快道路的驾车时间',
modeBicycleDesc: '经自行车友好路线的骑行时间',
modeWalkingDesc: '经人行道和步行路线的步行时间',
modeTransitDesc: '乘火车、地铁和公交车的出行时间',
},
// ── Travel Time Info Popup ─────────────────────────
travelInfo: {
transitDesc: '乘坐公共交通(公交车、火车、地铁)。时间根据典型工作日早晨时段计算。',
carDesc: '驾车出行,基于典型道路速度和路网计算。',
bicycleDesc: '骑自行车出行,使用自行车友好路线。',
walkingDesc: '步行出行,使用人行道和步行路线。',
mainDesc: '显示从每个区域到达所选目的地所需的时间',
sliderHint: '使用滑块设置您的最长通勤时间。',
},
// ── AI Filter ──────────────────────────────────────
aiFilter: {
describeIdealArea: '用 AI 描述您的理想区域',
aiSearch: 'AI 搜索',
describeHint: '描述您要找的区域',
placeholder: '例如:安静的区域,低于 \u00A340万靠近好学校...',
example1: '安全的区域,靠近好学校',
example2: '到国王十字站30分钟通勤低于 \u00A350万',
example3: '安静的村庄3间卧室快速宽带',
analysing: '正在分析您的需求...',
searchingDestinations: '正在搜索目的地...',
generatingFilters: '正在生成筛选条件...',
refiningResults: '正在优化结果...',
weeklyLimitReached: '您已达到每周 AI 使用上限。下周将自动重置。',
},
// ── Map Legend ─────────────────────────────────────
mapLegend: {
clearColourView: '清除颜色视图',
},
// ── Properties Pane ────────────────────────────────
propertyCard: {
unknownAddress: '地址未知',
unsaveProperty: '取消收藏',
saveProperty: '收藏房产',
lastSold: '上次成交价:\u00A3{{price}}',
estValue: '估计价值:',
type: '类型:',
builtForm: '建筑形式:',
tenure: '产权:',
floorArea: '建筑面积:',
bedrooms: '卧室:',
bathrooms: '浴室:',
rooms: '房间:',
built: '建造年份:',
epcRating: '能源评级:',
epcPotential: '潜在能源评级:',
listed: '上市日期:',
keyFeatures: '主要特点',
renovations: '翻新记录',
viewExternalListing: '查看外部房源',
perMonth: '/月',
perSqm: '/m\u00B2',
searchPlaceholder: '按地址或邮编搜索...',
propertyData: '房产数据',
propertyDataDesc: '价格来自英国土地注册局(买家实际支付的金额)。建筑面积、能源评级、建造年份和产权来自官方能源性能证书调查。两个数据源通过每个邮编内的地址进行匹配。',
},
// ── Area Pane ──────────────────────────────────────
areaPane: {
areaStatistics: '区域统计',
statsFor: '该{{type}}内所有房产的统计数据',
matchingFilters: ',满足所有当前筛选条件',
viewProperties: '查看 {{count}} 处房产',
priceHistory: '价格历史',
journeysFrom: '从 {{label}} 出发的路线',
to: '到 {{destination}}',
noJourneyData: '暂无出行数据',
viewOnGoogleMaps: '在 Google Maps 上查看',
walk: '步行',
cycle: '骑行',
},
// ── Histogram Legend ───────────────────────────────
histogramLegend: {
tealBars: '青色柱状图',
tealBarsDesc: '显示所选区域内的分布情况',
greyBars: '灰色柱状图',
greyBarsDesc: '显示所有区域的整体分布情况',
dashedLine: '虚线',
dashedLineDesc: '表示全国平均值',
},
// ── Street View ────────────────────────────────────
streetView: {
title: '街景视图',
},
// ── POI Pane ───────────────────────────────────────
poiPane: {
pois: '兴趣点',
pointsOfInterest: '兴趣点',
poiDescription: '数据来自 OpenStreetMap。涵盖公共交通站点、商店、餐厅、医疗机构、休闲场所等。定期更新类别覆盖完整。',
searchCategories: '搜索类别...',
dataSourceInfo: '数据来源信息',
},
// ── External Search Links ──────────────────────────
externalSearch: {
searchOn: '在 {{radius}} 范围内搜索',
outcodeNotRecognised: '无法识别该邮编区域',
},
// ── Location Search ────────────────────────────────
locationSearch: {
placeholder: '搜索地点或邮编...',
postcodeNotFound: '未找到该邮编',
lookupFailed: '查询失败',
searchLabel: '搜索地点或邮编',
locateMe: '转到我的位置',
geolocationUnsupported: '您的浏览器不支持地理定位',
geolocationFailed: '无法确定您的位置',
},
// ── Mobile Drawer ──────────────────────────────────
mobileDrawer: {
closeDrawer: '关闭抽屉',
},
// ── Home Page ──────────────────────────────────────
home: {
heroTitle1: '最大',
heroTitle2: '价值',
heroTitle3: '最小妥协。',
heroSubtitle: '正在找房?让您最大的投资成为最明智的决定。',
heroDescription: '选择太多,找到合适的可能让人不知所措。我们的交互式地图让一切变得简单:选择您的必要条件,立即看到符合的区域。',
exploreTheMap: '探索地图',
seeTheDifference: '看看有何不同',
statProperties: '处房产',
statFilters: '项筛选条件',
statEvery: '覆盖',
statPostcodeInEngland: '英格兰每个邮编',
ourPhilosophy: '我们的理念',
philosophyP1: '在 Rightmove 上,您需要先选一个区域,然后期望它足够好。最终您不得不在十几个标签页中交叉对比犯罪数据、学校报告和宽带速度,一个邮编一个邮编地查。',
philosophyP2: '我们反其道而行。告诉我们您的需求(预算、通勤、学校、安全),我们为您展示英格兰所有符合条件的区域。不用猜测,不浪费看房时间。',
howToUseIt: '使用方法',
howStep1Title: '设定必要条件',
howStep1Desc: '预算、通勤、学校——地图只显示符合条件的区域。',
howStep2Title: '探索区域,发现隐藏的好地方',
howStep2Desc: '放大查看,深入了解细节和加分项。',
howStep3Title: '深入邮编级别',
howStep3Desc: '查看单个房产、成交价、建筑面积,并进行比较。',
howStep4Title: '自信地列出候选名单',
howStep4Desc: '您名单上的每个区域都满足您的实际需求——而不只是当周恰好有房源。',
othersVs: '其他平台 vs',
listingPortals: '房源网站',
checkMyPostcode: '"查查我的邮编"类网站',
areaGuides: '区域指南',
compSearchWithout: '无需先选区域即可搜索',
compSearchWithoutSub: '(从需求出发,而非地点)',
compAreaData: '区域数据',
compAreaDataSub: '(犯罪率、学校、噪音、宽带)',
compPropertyData: '房产专属数据',
compPropertyDataSub: '(价格、能源性能证书、建筑面积)',
compFilters: '56 项可组合筛选条件,尽在一处',
compFiltersSub: '(所有信息,一张交互式地图)',
ctaTitle: '让您最大的投资成为最明智的\u00A0决定。',
ctaDescription: '这值得用专业的工具来做,别全靠运气。',
},
// ── Pricing Page ───────────────────────────────────
pricingPage: {
title: '早期访问价格',
subtitle: '一次付款,永久访问。越早加入,价格越优惠。',
costContext: '买房需要支付超过 \u00A310,000 的印花税、\u00A31,500 的律师费、\u00A3500 的房屋评估费。选错区域,您可能要忍受漫长的通勤、差劲的学校,或一条您事先不知道的嘈杂马路。',
lessThanSurvey: '不到一次房屋评估的费用,却有用得多。',
currentTier: '当前档位',
firstNUsers: '前 {{count}} 名用户',
everyoneAfter: '之后的所有人',
nextNUsers: '接下来 {{count}} 名用户',
lifetime: '/终身',
spotsRemaining: '剩余 {{count}} 个名额',
spotsRemainingPlural: '剩余 {{count}} 个名额',
filled: '已满',
openDashboard: '打开地图面板',
getStarted: '立即开始',
getStartedPrice: '立即开始 - {{price}}',
noCreditCard: '无需信用卡',
moneyBackGuarantee: '30天无条件退款保证',
soldOut: '已售罄',
upcoming: '即将开放',
failedToLoad: '加载价格信息失败,请稍后重试。',
feat1: '56 个数据图层,覆盖整个英格兰',
feat2: '每个邮编均有评分,支持筛选',
feat3: '无限制地图浏览和数据导出',
feat4: '数十年的历史价格数据',
feat5: '犯罪率、学校、交通、宽带等',
feat6: '包含所有未来数据更新',
},
// ── Learn Page ─────────────────────────────────────
learnPage: {
faq: '常见问题',
dataSources: '数据来源',
support: '支持',
dataSourcesIntro: '本应用整合了 {{count}} 个开放数据集,涵盖房产价格、能源性能、交通、人口统计、犯罪、环境等领域。',
faqIntro: '无论您是购房、租房还是单纯浏览,以下是 Perfect Postcode 如何帮助您找到理想区域。',
supportIntro: '有问题?请查看我们的常见问题或直接联系我们。',
source: '来源:',
optOut: '退出公开披露',
attribution: '数据引用声明',
attrLandRegistry: '包含 HM Land Registry 数据 © Crown copyright and database right 2025。',
attrOgl: '包含根据以下许可证授权的公共部门信息:',
attrOglLink: 'Open Government Licence v3.0',
attrOs: '包含 OS 数据 © Crown copyright and database rights 2025。',
attrTfl: '由 TfL Open Data 提供支持。',
attrOsm: '包含来自',
attrOsmContrib: '© OpenStreetMap contributors',
attrOsmLicense: '的数据,依据',
attrOsmLicenseLink: 'Open Data Commons Open Database License (ODbL)',
// Data source names & descriptions
dsPricePaidName: 'Price Paid Data',
dsPricePaidOrigin: 'HM Land Registry',
dsPricePaidUse: '英格兰完整的历史房产成交价格数据。',
dsEpcName: 'Energy Performance Certificates (EPC)',
dsEpcOrigin: 'Ministry of Housing, Communities & Local Government',
dsEpcUse: '住宅能源性能证书,提供建筑面积、房间数量、建造年份、能源评级、房产类型和建筑形式等信息。通过每个邮编内的地址与成交价格数据进行匹配。业主可以退出公开披露。',
dsNsplName: 'National Statistics Postcode Lookup (NSPL)',
dsNsplOrigin: 'ONS / ArcGIS',
dsNsplUse: '将邮编映射到坐标和统计区域代码,用于将所有区域级数据集关联到各个房产。',
dsIodName: 'English Indices of Deprivation 2025',
dsIodOrigin: 'Ministry of Housing, Communities & Local Government',
dsIodUse: '英格兰每个社区在收入、就业、教育、健康、犯罪和居住环境方面的相对贫困指数。',
dsEthnicityName: '按族裔划分的人口2021 年人口普查)',
dsEthnicityOrigin: 'ONS',
dsEthnicityUse: '按族裔群体(南亚裔、东亚裔、黑人、混血、白人、其他)划分的各地方政府辖区人口百分比。',
dsCrimeName: 'Street-level Crime Data',
dsCrimeOrigin: 'data.police.uk',
dsCrimeUse: '2023 年至 2025 年的街道级犯罪数据,按 LSOA 和犯罪类型(暴力犯罪、入室盗窃、反社会行为、毒品、车辆犯罪等)汇总为年均值。',
dsOsmName: 'OpenStreetMap POIs',
dsOsmOrigin: 'OpenStreetMap contributors / Geofabrik',
dsOsmUse: '涵盖大不列颠地区的商店、餐厅、医疗、休闲、旅游等兴趣点。',
dsGreenspaceName: 'OS Open Greenspace',
dsGreenspaceOrigin: 'Ordnance Survey',
dsGreenspaceUse: '大不列颠地区权威的绿地边界数据,包括公共公园、花园、运动场和游乐场。多边形质心用于公园邻近度计数和最近公园距离计算。',
dsNaptanName: 'NaPTAN (Public Transport Stops)',
dsNaptanOrigin: 'Department for Transport',
dsNaptanUse: '英格兰各地铁路、公交、地铁/有轨电车、渡轮和机场的站点位置。',
dsNoiseName: 'Defra Noise Mapping',
dsNoiseOrigin: 'Defra / Environment Agency',
dsNoiseUse: '来自 2022 年战略噪音测绘的道路噪音水平24 小时加权平均值),经高分辨率建模并在每个邮编处采样。',
dsOfstedName: 'Ofsted School Inspections',
dsOfstedOrigin: 'Ofsted',
dsOfstedUse: '公立学校最新督察结果(截至 2025 年 4 月。按邮编取平均值得出当地学校质量评分1=优秀至4=不合格)。',
dsBroadbandName: 'Ofcom Broadband Performance',
dsBroadbandOrigin: 'Ofcom',
dsBroadbandUse: '来自 Ofcom Connected Nations 2025 的各区域固定宽带覆盖率和最大下载速度。',
dsCouncilTaxName: 'Council Tax Levels 2025-26',
dsCouncilTaxOrigin: 'Ministry of Housing, Communities & Local Government',
dsCouncilTaxUse: '英格兰所有 296 个计费机构的 A 至 H 等级年度市政税税率,适用于两名成年人居住的住宅。通过 NSPL 邮编查询中的地方政府区域代码关联到房产。',
dsRentalName: 'Private Rental Market Statistics',
dsRentalOrigin: 'ONS / Valuation Office Agency',
dsRentalUse: '按地方政府辖区和卧室类别划分的月度私人租金中位数2022 年 10 月至 2023 年 9 月)。通过地方政府区域代码和估算卧室数量关联到房产。',
// FAQ section titles
faqFindingTitle: '寻找理想区域',
faqCommuteTitle: '通勤与出行',
faqBudgetTitle: '预算与性价比',
faqSafetyTitle: '安全与社区环境',
faqFamiliesTitle: '家庭与学校',
faqEnvironmentTitle: '环境与生活质量',
faqWhyTitle: '为什么选择 Perfect Postcode',
faqPricingTitle: '价格与访问权限',
faqTipsTitle: '使用技巧',
// FAQ items — Finding Your Area
faqFinding1Q: '我完全不知道该看哪些区域,这个工具能帮到我吗?',
faqFinding1A: '这正是它的用途。设置您的筛选条件(预算、通勤时间、低犯罪率、好学校),地图就会亮起来,显示所有符合条件的区域。不用再半夜搜索"曼彻斯特附近最好的居住区"了。',
faqFinding2Q: '我要搬到一个从未去过的地方,该从何开始?',
faqFinding2A: '设置您关心的筛选条件,地图会立即高亮显示符合条件的区域。从"我一条街都不认识"到得出候选名单,只需几分钟。',
faqFinding3Q: '如何找到同时满足我所有要求的区域?',
faqFinding3A: '叠加多个筛选条件(犯罪率低于平均水平、好学校、通勤时间少于 40 分钟),然后按价格为地图着色,找出性价比最高的区域。拖动滑块时地图会实时更新,让您即时看到变化。',
// FAQ items — Commute and Travel
faqCommute1Q: '我能看到从不同区域到公司的实际通勤时间吗?',
faqCommute1A: '设置您的工作地点作为目的地,我们会按通勤时间为每个邮编着色——无论是开车、骑车还是公共交通。筛选出您的最大通勤时间,其余区域就会消失。',
faqCommute2Q: '这比查 Google Maps 好在哪里?',
faqCommute2A: 'Google Maps 一次只能查看一条路线。我们一次性将英格兰每个邮编按通勤时间着色,让您可以同时比较数百个区域,而不是逐个搜索。',
// FAQ items — Budget and Value
faqBudget1Q: '如何找到单位面积性价比最高的区域?',
faqBudget1A: '按每平方米价格筛选,您会立即看到哪些邮编的单位面积价格最低。搭配能源评级筛选,避免取暖费用过高的房产。',
faqBudget2Q: '怎么确定一个便宜的区域不是因为有问题才便宜?',
faqBudget2A: '将贫困指数、犯罪统计、学校评级和宽带速度叠加在价格旁边查看。如果一个邮编价格实惠且在各项重要指标上表现良好,那您就找到了真正的高性价比——而不是隐藏着您还没发现的问题的低价。',
// FAQ items — Safety and Neighbourhood
faqSafety1Q: '搬家前如何查看一个区域是否安全?',
faqSafety1A: '我们将真实的警方犯罪记录数据按类型细分,叠加到英格兰每个社区上。按暴力犯罪、入室盗窃或反社会行为筛选,立即看到哪些邮编的犯罪数据最低。',
faqSafety2Q: '我总是找到网上看起来很好的房子,到了才发现周边环境很差。',
faqSafety2A: '这正是这个工具存在的意义。在一张地图上叠加犯罪率、噪音水平、贫困指数、附近的酒吧和公园以及宽带速度,这样您在预约看房之前就能了解一个社区的真实面貌。',
// FAQ items — Families and Schools
faqFamilies1Q: '我能在一次搜索中找到学校好又犯罪率低的区域吗?',
faqFamilies1A: '可以。叠加 Ofsted 评级、犯罪率、公园等对您家庭重要的筛选条件,地图只会高亮显示符合所有条件的区域。不用再在五个不同网站之间交叉比对了。',
faqFamilies2Q: '如何知道一个社区附近是否有公园和游乐场?',
faqFamilies2A: '打开公园和绿地 POI 图层,直接在地图上查看。您还可以按每个邮编步行范围内的公园数量进行筛选。',
// FAQ items — Environment and Quality of Life
faqEnv1Q: '能找到不在嘈杂马路旁的节能住宅吗?',
faqEnv1A: '按 EPC 评级A 至 C筛选然后叠加道路噪音数据排除超过您阈值的区域。按任一指标为地图着色一目了然地找到安静且节能的街道。',
faqEnv2Q: '有洪水或地基沉降风险数据吗?',
faqEnv2A: '我们包含地基稳定性数据,让您在购房前检查沉降、膨胀收缩黏土和其他地质风险。尽早排除高风险区域。',
faqEnv3Q: '能找到宽带速度快又安静的区域吗?',
faqEnv3A: '将宽带速度筛选与道路噪音数据叠加,找到连接速度快且交通噪音低的街道。按任一指标着色,一目了然地比较各区域。',
// FAQ items — Why Perfect Postcode
faqWhy1Q: '我已经在用 Rightmove 了,这个工具有什么额外价值?',
faqWhy1A: 'Rightmove 展示房源,我们展示区域。犯罪率、学校评级、宽带速度、噪音水平、贫困指数等等——全部可在一张地图上筛选。您可以在查看房源之前先了解一个社区。',
faqWhy2Q: '我不能自己免费查到这些信息吗?',
faqWhy2A: '您当然可以逐个邮编地交叉比对警方数据、Ofsted 报告、EPC 登记、Land Registry 记录和 ONS 统计数据。或者,您可以在几秒钟内在一张地图上筛选和查看所有信息。',
faqWhy3Q: '数据到底来自哪里?',
faqWhy3A: '每个数据集都来自英国官方政府来源Land Registry、EPC 登记、ONS、Ofsted、Ofcom、data.police.uk 和 Defra。我们不抓取房产中介数据也不编造任何信息。您可以对照原始来源验证任何记录。',
// FAQ items — Pricing and Access
faqPricing1Q: '花钱买一个找房工具真的值得吗?',
faqPricing1A: '买房可能是您一生中最大的一笔支出。在做决定之前发现一个问题(嘈杂的马路、差劲的宽带、上升的犯罪率)就可能让您避免多年的后悔。而这个工具的费用还不到一箱油钱。',
faqPricing2Q: '这是订阅制吗?',
faqPricing2A: '不是。一次性付款,永久使用。在找房期间密集使用,对新区域好奇时随时回来看,将来再搬家时它依然在。',
faqPricing3Q: '免费版能用哪些功能?',
faqPricing3A: '免费用户可以在演示区域(伦敦市中心,大约 1 至 2 区)内探索所有功能。要访问英格兰其他地区的数据,需要获取终身访问权限。',
faqPricing4Q: '可以退款吗?',
faqPricing4A: '当然可以。我们提供 30 天退款保证。如果您不满意,请在 30 天内发送邮件至 support@perfect-postcode.co.uk 申请全额退款。',
// FAQ items — Tips and Tricks
faqTips1Q: '如何使用 AI 筛选功能,而不是逐个添加筛选条件?',
faqTips1A: '用自然语言描述您的需求,例如"安静的区域、好学校附近、宽带速度快、40 万英镑以下",系统会一次性设置所有相关筛选条件。之后您可以手动微调。',
faqTips2Q: '我能保存搜索条件以后再用吗?',
faqTips2A: '点击保存按钮,所有内容都会被记录:您的筛选条件、缩放级别以及当前着色的数据图层。下次从上次离开的地方继续,或将链接分享给您的伴侣。',
faqTips3Q: '我能导出正在查看的数据吗?',
faqTips3A: '使用导出按钮将当前筛选后的房产下载为电子表格。导出结果会遵循您所有的活动筛选条件,确保您获得的正是所需的数据。',
},
// ── Account Page ───────────────────────────────────
accountPage: {
emailLabel: '邮箱',
subscriptionLabel: '订阅',
upgrade: '升级',
redirecting: '跳转中\u2026',
receiveNewsletter: '接收新闻邮件',
needHelp: '需要帮助?请发邮件至',
responseTime: '我们通常在 24 小时内回复。',
},
// ── Saved Page ─────────────────────────────────────
savedPage: {
searches: '搜索',
noSavedSearches: '暂无保存的搜索',
noSavedSearchesDesc: '保存您的筛选条件和地图视图,随时从上次的位置继续浏览。',
noSavedProperties: '暂无保存的房产',
noSavedPropertiesDesc: '在浏览过程中收藏房产,建立您的候选名单,不会遗漏任何一处。',
openPostcode: '打开邮编',
viewListing: '查看房源',
clickToRename: '点击重命名',
notesPlaceholder: '记下您的想法...',
deleteSearch: '删除搜索',
deleteSearchConfirm: '确定要删除这个保存的搜索吗?此操作无法撤销。',
deleteProperty: '删除房产',
deletePropertyConfirm: '确定要删除这个保存的房产吗?此操作无法撤销。',
bed: '卧室',
epc: '能源评级',
},
// ── Invites Page ───────────────────────────────────
invitesPage: {
inviteLinksLicensed: '邀请链接仅对已授权用户开放。',
inviteAdminLabel: '邀请好友100% 折扣)',
inviteReferralLabel: '邀请好友7折优惠',
generateFreeInvite: '生成免费邀请链接',
generateReferralLink: '生成推荐链接',
copyInviteLink: '复制邀请链接',
adminInvitesTitle: '管理员邀请100% 折扣)',
referralInvitesTitle: '推荐邀请7折优惠',
yourInviteLinks: '您的邀请链接',
noInvitesYet: '暂无已生成的邀请',
link: '链接',
status: '状态',
created: '创建时间',
redeemed: '已兑换',
pending: '待兑换',
},
// ── Invite Page ────────────────────────────────────
invitePage: {
youreInvited: '您收到了邀请!',
specialOffer: '特别优惠!',
invitedByFree: '{{name}} 邀请您获取免费终身访问权限。',
invitedByDiscount: '{{name}} 与您分享了终身访问的7折优惠。',
genericFreeInvite: '您已被邀请获取免费终身访问权限。',
genericDiscount: '一位朋友与您分享了终身访问的7折优惠。',
exploreEvery: '探索英格兰的每一个社区',
propertyInfo: '房价、能源评级、犯罪数据、学校评级等',
invalidInvite: '无效的邀请',
inviteAlreadyUsed: '邀请已被使用',
inviteAlreadyUsedDesc: '此邀请链接已被兑换。',
invalidInviteLink: '无效的邀请链接',
invalidInviteLinkDesc: '此邀请链接无效或已过期。',
licenseActivated: '授权已激活!',
fullAccessGranted: '您现在拥有 Perfect Postcode 的完整访问权限。',
activating: '激活中...',
activateLicense: '激活授权',
claimDiscount: '领取优惠',
registerToClaim: '注册以领取',
youAlreadyHaveLicense: '您已拥有授权',
accountHasFullAccess: '您的账户已拥有完整访问权限。',
failedToValidate: '验证邀请链接失败',
},
// ── Map Page ───────────────────────────────────────
mapPage: {
unsavedProperty: '取消收藏',
savedProperty: '已收藏',
},
// ── Server-derived values ──────────────────────────
// Keyed by the English server value. ts() looks up translations at display time.
// The English keys MUST match exactly what the API returns.
server: {
// ─ Feature group names ─
'Properties': '\u623F\u4EA7',
'Transport': '\u4EA4\u901A',
'Education': '\u6559\u80B2',
'Deprivation': '\u8D2B\u56F0\u6307\u6570',
'Crime': '\u72AF\u7F6A',
'Demographics': '\u4EBA\u53E3\u7EDF\u8BA1',
'Amenities': '\u914D\u5957\u8BBE\u65BD',
// ─ Feature names (Properties) ─
'Listing status': '\u623F\u6E90\u72B6\u6001',
'Property type': '\u623F\u4EA7\u7C7B\u578B',
'Leasehold/Freehold': '\u79DF\u8D41\u4EA7\u6743/\u6C38\u4E45\u4EA7\u6743',
'Last known price': '\u4E0A\u6B21\u6210\u4EA4\u4EF7',
'Estimated current price': '\u4F30\u8BA1\u5F53\u524D\u4EF7\u683C',
'Asking price': '\u6302\u724C\u4EF7',
'Price per sqm': '\u6BCF\u5E73\u65B9\u7C73\u4EF7\u683C',
'Est. price per sqm': '\u4F30\u8BA1\u6BCF\u5E73\u65B9\u7C73\u4EF7\u683C',
'Asking price per sqm': '\u6302\u724C\u4EF7\u6BCF\u5E73\u65B9\u7C73',
'Estimated monthly rent': '\u4F30\u8BA1\u6708\u79DF',
'Asking rent (monthly)': '\u6708\u79DF',
'Total floor area (sqm)': '\u603B\u5EFA\u7B51\u9762\u79EF\uFF08\u5E73\u65B9\u7C73\uFF09',
'Number of bedrooms & living rooms': '\u5367\u5BA4\u548C\u5BA2\u5385\u6570\u91CF',
'Bedrooms': '\u5367\u5BA4',
'Bathrooms': '\u6D74\u5BA4',
'Construction year': '\u5EFA\u9020\u5E74\u4EFD',
'Date of last transaction': '\u4E0A\u6B21\u4EA4\u6613\u65E5\u671F',
'Listing date': '\u4E0A\u5E02\u65E5\u671F',
'Former council house': '\u539F\u516C\u5171\u4F4F\u623F',
'Current energy rating': '\u5F53\u524D\u80FD\u6E90\u8BC4\u7EA7',
'Potential energy rating': '\u6F5C\u5728\u80FD\u6E90\u8BC4\u7EA7',
'Interior height (m)': '\u5BA4\u5185\u5C42\u9AD8\uFF08\u7C73\uFF09',
// ─ Feature names (Transport) ─
'Distance to nearest train or tube station (km)': '\u5230\u6700\u8FD1\u706B\u8F66\u6216\u5730\u94C1\u7AD9\u7684\u8DDD\u79BB\uFF08\u516C\u91CC\uFF09',
'Train or tube stations within 1km': '1\u516C\u91CC\u5185\u706B\u8F66\u6216\u5730\u94C1\u7AD9\u6570\u91CF',
// ─ Feature names (Education) ─
'Good+ primary schools within 2km': '2\u516C\u91CC\u5185\u826F\u597D+\u5C0F\u5B66\u6570\u91CF',
'Good+ secondary schools within 2km': '2\u516C\u91CC\u5185\u826F\u597D+\u4E2D\u5B66\u6570\u91CF',
'Good+ primary schools within 5km': '5\u516C\u91CC\u5185\u826F\u597D+\u5C0F\u5B66\u6570\u91CF',
'Good+ secondary schools within 5km': '5\u516C\u91CC\u5185\u826F\u597D+\u4E2D\u5B66\u6570\u91CF',
'Education, Skills and Training Score': '\u6559\u80B2\u3001\u6280\u80FD\u548C\u57F9\u8BAD\u5F97\u5206',
// ─ Feature names (Deprivation) ─
'Income Score (rate)': '\u6536\u5165\u5F97\u5206\uFF08\u6BD4\u7387\uFF09',
'Employment Score (rate)': '\u5C31\u4E1A\u5F97\u5206\uFF08\u6BD4\u7387\uFF09',
'Health Deprivation and Disability Score': '\u5065\u5EB7\u4E0E\u6B8B\u969C\u5F97\u5206',
'Living Environment Score': '\u5C45\u4F4F\u73AF\u5883\u5F97\u5206',
'Indoors Sub-domain Score': '\u5BA4\u5185\u5B50\u9886\u57DF\u5F97\u5206',
'Outdoors Sub-domain Score': '\u5BA4\u5916\u5B50\u9886\u57DF\u5F97\u5206',
// ─ Feature names (Crime) ─
'Serious crime per 1k residents (avg/yr)': '\u6BCF\u5343\u4EBA\u4E25\u91CD\u72AF\u7F6A\uFF08\u5E74\u5747\uFF09',
'Minor crime per 1k residents (avg/yr)': '\u6BCF\u5343\u4EBA\u8F7B\u5FAE\u72AF\u7F6A\uFF08\u5E74\u5747\uFF09',
'Serious crime (avg/yr)': '\u4E25\u91CD\u72AF\u7F6A\uFF08\u5E74\u5747\uFF09',
'Minor crime (avg/yr)': '\u8F7B\u5FAE\u72AF\u7F6A\uFF08\u5E74\u5747\uFF09',
'Violence and sexual offences (avg/yr)': '\u66B4\u529B\u548C\u6027\u72AF\u7F6A\uFF08\u5E74\u5747\uFF09',
'Burglary (avg/yr)': '\u5165\u5BA4\u76D7\u7A83\uFF08\u5E74\u5747\uFF09',
'Robbery (avg/yr)': '\u62A2\u52AB\uFF08\u5E74\u5747\uFF09',
'Vehicle crime (avg/yr)': '\u8F66\u8F86\u72AF\u7F6A\uFF08\u5E74\u5747\uFF09',
'Anti-social behaviour (avg/yr)': '\u53CD\u793E\u4F1A\u884C\u4E3A\uFF08\u5E74\u5747\uFF09',
'Criminal damage and arson (avg/yr)': '\u5211\u4E8B\u6BC1\u574F\u548C\u7EB5\u706B\uFF08\u5E74\u5747\uFF09',
'Other theft (avg/yr)': '\u5176\u4ED6\u76D7\u7A83\uFF08\u5E74\u5747\uFF09',
'Theft from the person (avg/yr)': '\u4EBA\u8EAB\u76D7\u7A83\uFF08\u5E74\u5747\uFF09',
'Shoplifting (avg/yr)': '\u5546\u5E97\u76D7\u7A83\uFF08\u5E74\u5747\uFF09',
'Bicycle theft (avg/yr)': '\u81EA\u884C\u8F66\u76D7\u7A83\uFF08\u5E74\u5747\uFF09',
'Drugs (avg/yr)': '\u6BD2\u54C1\u72AF\u7F6A\uFF08\u5E74\u5747\uFF09',
'Possession of weapons (avg/yr)': '\u975E\u6CD5\u6301\u6709\u6B66\u5668\uFF08\u5E74\u5747\uFF09',
'Public order (avg/yr)': '\u6270\u4E71\u516C\u5171\u79E9\u5E8F\uFF08\u5E74\u5747\uFF09',
'Other crime (avg/yr)': '\u5176\u4ED6\u72AF\u7F6A\uFF08\u5E74\u5747\uFF09',
// ─ Feature names (Demographics) ─
'Median age': '\u4E2D\u4F4D\u5E74\u9F84',
'% White': '% \u767D\u4EBA',
'% South Asian': '% \u5357\u4E9A\u88D4',
'% Black': '% \u9ED1\u4EBA',
'% East Asian': '% \u4E1C\u4E9A\u88D4',
'% Mixed': '% \u6DF7\u8840',
'% Other': '% \u5176\u4ED6',
// ─ Feature names (Amenities) ─
'Distance to nearest park (km)': '\u5230\u6700\u8FD1\u516C\u56ED\u7684\u8DDD\u79BB\uFF08\u516C\u91CC\uFF09',
'Number of parks within 2km': '2\u516C\u91CC\u5185\u516C\u56ED\u6570\u91CF',
'Number of restaurants within 2km': '2\u516C\u91CC\u5185\u9910\u5385\u6570\u91CF',
'Number of grocery shops and supermarkets within 2km': '2\u516C\u91CC\u5185\u98DF\u54C1\u5E97\u548C\u8D85\u5E02\u6570\u91CF',
'Noise (dB)': '\u566A\u97F3\uFF08\u5206\u8D1D\uFF09',
'Max available download speed (Mbps)': '\u6700\u5927\u53EF\u7528\u4E0B\u8F7D\u901F\u5EA6\uFF08Mbps\uFF09',
// ─ Enum values ─
'Historical sale': '\u5386\u53F2\u4EA4\u6613',
'For sale': '\u5728\u552E',
'For rent': '\u51FA\u79DF',
'Detached': '\u72EC\u7ACB\u5F0F\u4F4F\u5B85',
'Semi-Detached': '\u534A\u72EC\u7ACB\u5F0F\u4F4F\u5B85',
'Terraced': '\u8054\u6392\u4F4F\u5B85',
'Flats/Maisonettes': '\u516C\u5BD3/\u590D\u5F0F\u516C\u5BD3',
'Other': '\u5176\u4ED6',
'Freehold': '\u6C38\u4E45\u4EA7\u6743',
'Leasehold': '\u79DF\u8D41\u4EA7\u6743',
'Yes': '\u662F',
'No': '\u5426',
// ─ Stacked chart labels ─
'Serious crime': '\u4E25\u91CD\u72AF\u7F6A',
'Minor crime': '\u8F7B\u5FAE\u72AF\u7F6A',
'Ethnic composition': '\u65CF\u88D4\u7EC4\u6210',
// ─ POI group names ─
'Public Transport': '\u516C\u5171\u4EA4\u901A',
'Leisure': '\u4F11\u95F2',
'Health': '\u5065\u5EB7',
'Emergency Services': '\u7D27\u6025\u670D\u52A1',
'Groceries': '\u98DF\u54C1\u6742\u8D27',
'Local Businesses': '\u672C\u5730\u5546\u4E1A',
'Culture': '\u6587\u5316',
'Services': '\u670D\u52A1',
'Shops': '\u5546\u5E97',
// ─ POI categories ─
'Airport': '\u673A\u573A',
'Ferry': '\u6E21\u8F6E',
'Rail station': '\u706B\u8F66\u7AD9',
'Bus stop': '\u516C\u4EA4\u7AD9',
'Bus station': '\u516C\u4EA4\u67A2\u7EBD',
'Taxi rank': '\u51FA\u79DF\u8F66\u7AD9',
'Metro or Tram stop': '\u5730\u94C1\u6216\u6709\u8F68\u7535\u8F66\u7AD9',
'Caf\u00E9': '\u5496\u5561\u9986',
'Restaurant': '\u9910\u5385',
'Pub': '\u9152\u5427',
'Bar': '\u9152\u5427',
'Fast Food': '\u5FEB\u9910',
'Nightclub': '\u591C\u5E97',
'Cinema': '\u7535\u5F71\u9662',
'Theatre': '\u5267\u9662',
'Live Music & Events': '\u73B0\u573A\u97F3\u4E50\u4E0E\u6D3B\u52A8',
'Park': '\u516C\u56ED',
'Playground': '\u6E38\u4E50\u573A',
'Sports Centre': '\u4F53\u80B2\u4E2D\u5FC3',
'Entertainment': '\u5A31\u4E50',
'Supermarket': '\u8D85\u5E02',
'Convenience Store': '\u4FBF\u5229\u5E97',
'Bakery': '\u9762\u5305\u623A',
'Butcher & Fishmonger': '\u8089\u94FA\u4E0E\u9C7C\u94FA',
'Greengrocer': '\u679C\u852C\u5E97',
'Off-Licence': '\u9152\u7C7B\u5546\u5E97',
'Deli & Specialty': '\u719F\u98DF\u4E0E\u7279\u4EA7\u5E97',
'Fashion & Clothing': '\u65F6\u88C5\u670D\u9970',
'Electronics': '\u7535\u5B50\u4EA7\u54C1',
'Charity Shop': '\u6148\u5584\u5546\u5E97',
'DIY & Hardware': '\u5EFA\u6750\u4E94\u91D1',
'Home & Garden': '\u5BB6\u5C45\u4E0E\u56ED\u827A',
'Bookshop': '\u4E66\u5E97',
'Pet Shop': '\u5BA0\u7269\u5E97',
'Sports & Outdoor': '\u4F53\u80B2\u4E0E\u6237\u5916',
'Newsagent': '\u62A5\u520A\u4EAD',
'Department Store': '\u767E\u8D27\u5546\u5E97',
'Gift & Hobby': '\u793C\u54C1\u4E0E\u7231\u597D',
'Specialist Shop': '\u4E13\u4E1A\u5546\u5E97',
'Hairdresser & Beauty': '\u7F8E\u53D1\u4E0E\u7F8E\u5BB9',
'Gym & Fitness': '\u5065\u8EAB\u623F',
'Dry Cleaner & Laundry': '\u5E72\u6D17\u4E0E\u6D17\u8863',
'Car Services': '\u6C7D\u8F66\u670D\u52A1',
'Post Office': '\u90AE\u5C40',
'Vet & Pet Care': '\u5BA0\u7269\u533B\u9662\u4E0E\u62A4\u7406',
'Bank': '\u94F6\u884C',
'Travel Agent': '\u65C5\u884C\u793E',
'Police': '\u8B66\u5BDF',
'Fire Station': '\u6D88\u9632\u7AD9',
'Ambulance Station': '\u6025\u6551\u7AD9',
'GP Surgery': '\u5168\u79D1\u8BCA\u6240',
'Dentist': '\u7259\u79D1',
'Pharmacy': '\u836F\u623F',
'Hospital & Clinic': '\u533B\u9662\u4E0E\u8BCA\u6240',
'Optician': '\u773C\u955C\u5E97',
'Physiotherapy': '\u7406\u7597',
'Counselling & Therapy': '\u5FC3\u7406\u54A8\u8BE2\u4E0E\u6CBB\u7597',
'Care Home': '\u517B\u8001\u9662',
'Medical & Mobility': '\u533B\u7597\u5668\u68B0\u4E0E\u8F85\u52A9\u8BBE\u5907',
'Museum': '\u535A\u7269\u9986',
'Gallery': '\u7F8E\u672F\u9986',
'Library': '\u56FE\u4E66\u9986',
'Place of Worship': '\u5B97\u6559\u573A\u6240',
'Arts Centre': '\u827A\u672F\u4E2D\u5FC3',
'Zoo': '\u52A8\u7269\u56ED',
'Tourist Attraction': '\u65C5\u6E38\u666F\u70B9',
'School': '\u5B66\u6821',
'Hotel': '\u9152\u5E97',
'Local Business': '\u672C\u5730\u5546\u4E1A',
'Offices': '\u5199\u5B57\u697C',
'EV Charging': '\u7535\u52A8\u8F66\u5145\u7535\u7AD9',
'Fuel Station': '\u52A0\u6CB9\u7AD9',
'Community Centre': '\u793E\u533A\u4E2D\u5FC3',
// ─ Suffixes (used in formatters) ─
'/mo': '/\u6708',
'/yr': '/\u5E74',
' sqm': ' \u5E73\u65B9\u7C73',
' km': ' \u516C\u91CC',
' m': ' \u7C73',
' dB': ' \u5206\u8D1D',
' years': ' \u5E74',
' rooms': ' \u95F4',
},
};
export default zh;