| 1 | { |
| 2 | "examples.actor.blurb": "谁做了某件事,用文字表示:一个人的名字,或者代理以及它代表的人。没有徽章,也没有图标。", |
| 3 | "examples.actor.states.an-agent-acting-for-a-person": "先是代理的名字,然后是它代为行事的那个人。如果是应用本身做的事,就什么都不显示。", |
| 4 | "examples.api-tokens.blurb": "API 令牌页面:一次性显示、创建表单、列表和撤销按钮。", |
| 5 | "examples.api-tokens.states.four-tokens-two-of-them-live": "撤销表单提交到页面自身路径下的 /tokens/revoke、/tokens/revoke-agent 和 /tokens/revoke-all。把它们指向你的应用处理它们的地方。", |
| 6 | "examples.api-tokens.states.just-created-the-secret-shown-once": "在创建表单本身的响应里显示这个,并且不要重定向:秘密只在那个响应里,别处没有。", |
| 7 | "examples.back-nav.blurb": "往上一级的返回链接,放在详情页或编辑页的上方。", |
| 8 | "examples.badge.blurb": "一枚大写字母的带边框小标记。它和 status-pill 不同:后者表示记录的状态。", |
| 9 | "examples.box.blurb": "带内边距的分节卡片,以及坐在它外面的那个标题。", |
| 10 | "examples.bulk-bar.blurb": "选择模式下的顶部条,取代列表工具栏:计数、一个扩大选择的链接,以及操作菜单。", |
| 11 | "examples.bulk-bar.states.three-rows-selected": "破坏性的那一项放在最后:第一项才是外层表单按 Enter 时的隐含默认。", |
| 12 | "examples.button.blurb": "按钮有四种样式和三种尺寸,链接也可以做成按钮的样子。表单提交时显示的加载圈,见 form-foot。", |
| 13 | "examples.callout.blurb": "唯一的一套提示语汇:着色条、色调图标、可选的粗体标题、一段正文。", |
| 14 | "examples.callout.states.negative-announced-as-an-alert": "role=\"alert\" 让屏幕阅读器在它出现时立即播报。只把它留给不能等的消息。", |
| 15 | "examples.choice-field.blurb": "选项卡片:推荐的单选或多选分组。标题保持简短,解释交给描述。", |
| 16 | "examples.confirm-form.blurb": "确认页的操作行。破坏性操作有自己的路由而不是一个对话框,所以没有什么需要写脚本。", |
| 17 | "examples.confirm-form.states.ordinary-default-cancel-wording": "取消链接写的是「取消」,这是通常的措辞。当表单自己的说法更清楚时,就改掉它。", |
| 18 | "examples.detail-list.blurb": "详情页上关于某条记录的定义列表。等宽标记用于偏机器的值。", |
| 19 | "examples.dropdown.blurb": "一个零 JavaScript 的折叠块:一个 summary 按钮,下面是一板普通链接。把它放在一行里,挨着它作用的对象,不要让它独占一行。", |
| 20 | "examples.dropdown.states.menu-idiom": "藏在页眉溢出菜单和列表工具栏筛选背后的 details/summary 菜单,外加一枚可移除的已应用筛选标签。", |
| 21 | "examples.empty-state.blurb": "空状态卡片。空状态,并给出开始的入口。", |
| 22 | "examples.error-page.blurb": "错误响应的整个主体:状态码、一句实话、一条回头的路,以及管理员用得上的 500 参考编号。", |
| 23 | "examples.error-page.states.500-server-error": "500 是唯一带参考编号的状态:运维人员可以用它在日志里 grep。", |
| 24 | "examples.error-page.states.anything-else-the-generic-pair": "任何没有专门措辞的状态都会用这一对通用文字:一个说有些地方不对的标题,和一段让你再试一次的正文。", |
| 25 | "examples.field-check.blurb": "唯一的一种开关做法:一个真正的复选框,外观做成开关,键盘和读屏器都照常可用。", |
| 26 | "examples.field-date.blurb": "一个原生日期输入框,外加输入框带 data-rst-date 时 datetime.js 添加的自然语言组合框。试着输入 「明天」。", |
| 27 | "examples.field-date.states.enhanced-input-type-tomorrow-or-in-3-weeks": "它能解析的词在 data-rst-date-words 上,这里用的是页面的语言。i18n/<lang>.json 里有十二种语言的版本,所以无论页面用哪种语言,字段都能解析。", |
| 28 | "examples.field-date.states.plain-the-bare-native-input": "完全没有增强属性,所以 datetime.js 找不到任何东西。原生选择器照样打得开。", |
| 29 | "examples.field-daterange.blurb": "起点和终点作为一个带标签的 fieldset。给每个输入框各自的 name 和 id。", |
| 30 | "examples.field-daterange.states.date-and-time-seeded": "在结束时间还空着的时候确定开始时间,datetime.js 会把结束填成一小时之后。标记里没有任何东西做这件事,是脚本做的。", |
| 31 | "examples.field-datetime.blurb": "一个输入框里的日期和时间,一个值。", |
| 32 | "examples.field-datetime.states.enhanced-input-type-tomorrow-or-in-3-weeks": "它能解析的词在 data-rst-date-words 上,这里用的是页面的语言。i18n/<lang>.json 里有十二种语言的版本,所以无论页面用哪种语言,字段都能解析。", |
| 33 | "examples.field-datetime.states.plain-the-bare-native-input": "完全没有增强属性,所以 datetime.js 找不到任何东西。原生选择器照样打得开。", |
| 34 | "examples.field-money.blurb": "单一货币的金额。货币代码显示在标签旁,并随表单一起提交,因此如果有人输入期间货币发生了变化,保存时就会被发现。", |
| 35 | "examples.field-select.blurb": "包住原生 select 的字段外壳。加上 data-rst-select,select.js 就会把它变成可筛选的组合框;表单提交的仍然是原生 select。大约十个选项以上才值得用。", |
| 36 | "examples.field-select.states.hand-written-with-optgroups": "分组的选项是你自己写的 optgroup。select.js 会保留分组,而不是丢掉;select 也可以用 data-rst-select=\"false\" 彻底拒绝增强。", |
| 37 | "examples.field-select.states.twelve-options-the-filterable-combobox": "大约十个选项以上再加 data-rst-select。少于这个数就别加:在几项之间搜索只是摆设,不是帮助。", |
| 38 | "examples.field-text.blurb": "一个带标签的文本输入框。必填标记的星号是 aria-hidden,输入框的 required 属性才是程序可读的信号。", |
| 39 | "examples.field-text.states.the-headline-field": "给表单的主字段(例如标题或名称)加上 rst-input=\"primary\",输入框会更醒目。", |
| 40 | "examples.field-textarea.blurb": "field-text 的外壳,包住一个 textarea。", |
| 41 | "examples.field-time.blurb": "同样的外壳,包着一个原生时间输入框。这次增强读的是钟点,不是日历。", |
| 42 | "examples.field-url.blurb": "网址输入框,example.com 带不带 https:// 都可以。读取表单的一方要自己补上协议并检查地址。", |
| 43 | "examples.field.blurb": "标签、输入框、可选提示、帮助文本和错误。通用的类文本控件,带一个显式 ID。", |
| 44 | "examples.form-error.blurb": "表单的错误摘要行,role=\"alert\"。没有错误时就不要放。", |
| 45 | "examples.form-foot.blurb": "表单的收尾行:一个主提交按钮,外加可选的取消链接。取消是一个链接,因为离开表单是导航。", |
| 46 | "examples.form-foot.states.idle-the-button-before-anything-happens": "会改变什么的按钮有加载状态;只是展开什么的按钮(例如折叠、下拉、标签页)没有。busy.js 对每个表单里的每个提交按钮都套用这条规则,无需选择启用。", |
| 47 | "examples.form-foot.states.working-what-busy-js-writes-on-the-way-out": "只有被点击的那个按钮:表单里其他提交按钮都保留自己的 name 和 value,表单本身也会防住第二次提交。data-busy=\"false\" 可以退出,写在表单上或某一个按钮上;data-busy-label 用来替换文字。关掉脚本,这些都不会发生,表单照旧提交,所以拦住第二次提交仍然是你的应用的事。", |
| 48 | "examples.form-layout.blurb": "给表单节奏感和保存栏的那些属性。它们包住你自己拼出来的一串字段。", |
| 49 | "examples.format-abbr.blurb": "<abbr> 标签在你把鼠标悬停上去时会显示完整说法。这在手机上没用,屏幕阅读器也常常跳过它。第一次出现时,还是要把完整的字写出来。", |
| 50 | "examples.format-addresses.blurb": "<address> 标签不是用来写邮寄地址的。它是用来说明这个页面是谁写的。收货地址就是普通文字。员工名单就是一个列表。", |
| 51 | "examples.format-dates.blurb": "把日期放进 <time> 标签,并附上一份计算机能读的写法。日期本身按你的读者习惯的样子写。Fiesta 不会替你格式化。", |
| 52 | "examples.format-durations.blurb": "时长也用 <time>。计算机能读的写法看起来有点怪:PT2H30M 表示 2 小时 30 分钟。", |
| 53 | "examples.format-filesizes.blurb": "显示一个取整后的大小,比如 4 MB,把精确的字节数放进 <data> 标签。屏幕阅读器读的是屏幕上的内容,会忽略这个标签,所以取整后的大小本身就得够用。", |
| 54 | "examples.format-identifiers.blurb": "这些不要分组。是订单 4471,不是订单 4,471。年份、版本号和端口号也一样。用 rst-mono 让它们看起来像代码,并且永远不要把它们放进 <time> 标签,哪怕它长得像日期。", |
| 55 | "examples.format-money.blurb": "每个金额都以货币最小单位(例如分)的整数存储,旁边附上货币代码。写出来的样子跟随读者的语言。货币始终来自你的数据,从不来自读者。", |
| 56 | "examples.format-numbers.blurb": "给长数字分组,让人一眼就能读出来:英文写 54,173,德文写 54.173,阿拉伯文写 ٥٤٬١٧٣。不要把长数字直接写成一串数字。在表格里用等宽的数字,这样各列才能对齐。", |
| 57 | "examples.format-output.blurb": "当你的页面把东西加起来时,把结果放进 <output> 标签。比如累计合计、换算后的价格、倒计时。", |
| 58 | "examples.format-people.blurb": "名字可以是任何语言,包括从右往左读的语言。当名字出现在一行的中间时,用 <bdi> 把它包起来,否则它会把周围的文字顺序弄乱。要显示名字并在旁边配一张头像,就用 person。", |
| 59 | "examples.format-ratios.blurb": "用 <meter> 表示某样东西有多满,用 <progress> 表示一项工作进行到哪里。永远把数字写在条子旁边。一根条子本身对看不见的读者什么也没说。", |
| 60 | "examples.help.blurb": "一个带边框的问号,链接到帮助文章。它的 CSS 提示只是装饰;链接自己带着完整句子的标签。", |
| 61 | "examples.job-status.blurb": "后台任务的进度:一个转圈、一行文字和一条进度条。data-poll 属性说明页面可以从哪里、多久取一次新的副本。Fiesta 不带做这件事的脚本,所以要你自己接上,任务完成后就去掉这些属性。", |
| 62 | "examples.job-status.states.running": "data-poll 属性是脚本会去哪里、多久取一次新副本。Fiesta 里没有东西做这件事,所以在这一页上它会一直处于运行中。", |
| 63 | "examples.layout-column.blurb": "应用起步用的那张朴素居中页面:一个跳转链接、一个标题、内容列,和放语言与配色方案菜单的页脚行。", |
| 64 | "examples.layout-console-page.blurb": "顶部一条栏,侧边一条导航栏,两者同时在场,大多数管理控制台就是这个形状。在手机上,顶栏的菜单以卡片形式打开,导航栏是一个目录页。不需要 JavaScript。", |
| 65 | "examples.layout-console.blurb": "顶部一条栏,侧边一条导航栏,两者同时在场,大多数管理控制台就是这个形状。在手机上,顶栏的菜单以卡片形式打开,导航栏是一个目录页。不需要 JavaScript。", |
| 66 | "examples.layout-sidebar-page.blurb": "页面旁边的导航栏。在手机上,导航栏是一个目录页,其他每个页面都有一个返回控件。不需要 JavaScript。", |
| 67 | "examples.layout-sidebar.blurb": "页面旁边的导航栏。在手机上,导航栏是一个目录页,其他每个页面都有一个返回控件。不需要 JavaScript。", |
| 68 | "examples.layout-stage.blurb": "一张卡片,位于铺满整页的背景正中,给独立成页的界面用。它就是为登录界面准备的。", |
| 69 | "examples.layout-topbar.blurb": "顶部横排的品牌、导航和账户菜单,页面下方有页脚。", |
| 70 | "examples.list-bar-search.blurb": "只做搜索的列表使用的独立搜索表单。一个普通的 method=\"get\" 表单。", |
| 71 | "examples.list-bar-search.states.empty-accessible-name-from-the-catalog": "没有 placeholder。输入框的可访问名称是它的 aria-label,由应用用页面的语言来写。", |
| 72 | "examples.list-bar-search.states.with-a-query": "这个 ✕ 是一个链接,指向去掉查询后的同一屏幕。状态筛选放在隐藏输入里,因此会保留下来。", |
| 73 | "examples.list-bar-search.states.with-a-query-on-page-4": "页码放在隐藏输入里,所以新的搜索会把 page=4 带进一个已经不足四页的结果集。✕ 链接会去掉它:把它指向列表的第一页。", |
| 74 | "examples.list-bar.blurb": "列表卡片顶部的工具栏,带搜索和筛选。", |
| 75 | "examples.list-grid.blurb": "真正的数据表格语汇:卡片一次性定好列,行只负责挑单元格。", |
| 76 | "examples.list-row-action.blurb": "一条列表行:记录名称作为主链接、一行附加信息,以及一个次要操作。", |
| 77 | "examples.list-row-action.states.a-short-status-beside-the-name": "rst-status=\"inline\" 让手机上的简短状态留在名称那一行。没有它,状态会移到名称下方。", |
| 78 | "examples.list-search-submit.blurb": "搜索表单真正的提交按钮:视觉上隐藏,但在 Tab 顺序里,一旦获得键盘焦点就现身。", |
| 79 | "examples.list-search-submit.states.default-label": "在你用 Tab 键进入之前,这里什么都看不到。", |
| 80 | "examples.locale-menu.blurb": "语言切换器:一个 details 菜单,里面是单字段的 POST 表单,这样选择会发送到你的应用,读者仍留在同一个路径上。", |
| 81 | "examples.locale-menu.states.twelve-languages-current-highlighted": "每种语言都是一个单字段表单,所以选一种就是一次由你的应用来回应的 POST。静态站点可以改用一个普通链接组成的菜单。", |
| 82 | "examples.media-grid.blurb": "图片图块组成的网格。每个框都是 4:3,所以高的截图和宽的横幅可以整齐地放在同一个网格里。", |
| 83 | "examples.media-grid.states.screenshots-a-logo-and-a-banner": "给标志或横幅加上 rst-media-frame=\"contain\"。截图保持默认,显示它的顶部。没有描述的图块会显示「没有描述」。", |
| 84 | "examples.media-grid.states.select-mode-one-tile-selected": "把网格和 bulk-bar 放在同一个表单里。每个图块的复选框以 \"id\" 为名提交它的值;如果你的应用要的是别的名字,就改掉它。在表单内,菜单项必须是链接。", |
| 85 | "examples.meter.blurb": "带数字的容量条。", |
| 86 | "examples.meter.states.over-budget": "超出预算时,进度条是满的,超了多少由数字来说:写 value=\"100\",真实的数字留给文字。", |
| 87 | "examples.modal.blurb": "模态框是它自己的一个网址,而不是客户端状态:下面的页面标记为 inert,面板浮在它上面,关闭是一个普通链接。", |
| 88 | "examples.notice.blurb": "重定向之后的一行确认:一个带 role=\"status\" 的段落里的一句话。没什么可说时就不要放。", |
| 89 | "examples.page-header.blurb": "页面的标题栏:一个 h1、可选的副标题,以及一个主操作。", |
| 90 | "examples.pagination.blurb": "一排带编号的普通链接,所以关掉 JavaScript 也照样能翻页。", |
| 91 | "examples.pagination.states.first-page-default-accessible-name": "nav 的 aria-label 是简单的「分页」二字。一页里有不止一个时,说明它分的是哪个列表。", |
| 92 | "examples.person.blurb": "首字母头像、姓名和邮箱。用来快速辨认代表人的记录。", |
| 93 | "examples.row-menu.blurb": "该行的其他操作,收在 ⋮ 按钮后面。破坏性的操作链接到它的确认页面。", |
| 94 | "examples.row-menu.states.links-a-form-and-a-destructive-item": "把破坏性项目放在最后,标签以 … 结尾。它会打开一个页面,在删除任何内容之前先询问。", |
| 95 | "examples.row-menu.states.links-only-for-a-list-inside-a-selection-form": "在表单内,每个项目都必须是链接。需要提交的操作要经过它自己的页面。", |
| 96 | "examples.scheme-menu.blurb": "配色切换:一个 details 菜单,里面是「浅色」「深色」「跟随系统」的单字段 POST 表单。提交时,选择发送到你的应用;独立使用时,fiesta.js 在浏览器里记住它。", |
| 97 | "examples.scheme-menu.states.standalone": "背后没有应用:这些表单没有 action,而 <html> 元素上有 data-rst-scheme-store=\"local\" 时,fiesta.js 会在浏览器里记住选择。图库自己的页眉用的就是这个。", |
| 98 | "examples.scheme-menu.states.three-choices-dark-current": "每种配色都是一个单字段表单,所以选一种就是一次由你的应用回应的 POST,页面返回时会把选中的配色标为当前。", |
| 99 | "examples.seg-tabs.blurb": "由链接或按钮组成的分段控件。当前链接是 aria-current;按下的按钮是 aria-pressed=\"true\"。", |
| 100 | "examples.seg-tabs.states.buttons-that-switch-in-place": "按钮,用于在原地改变页面的选择,比如视图。你的脚本会把 aria-pressed 移到按下的按钮上。", |
| 101 | "examples.selbox.blurb": "列表行在选择模式下佩戴的那个勾选框。它的标签会把这一行的身份再说一遍。", |
| 102 | "examples.shell-sidebar.blurb": "sidebar 外壳在内容页上的框架:在手机上,是一个返回目录的控件。", |
| 103 | "examples.shell-topbar.blurb": "顶栏外壳自己的框架,以标记形式呈现。它所属的整页是页面外壳下的 layout-topbar。", |
| 104 | "examples.side-nav.blurb": "面板里的侧边栏:一列链接,位于面板内容旁边。面板较窄时,链接变成一行,可以左右滚动。", |
| 105 | "examples.side-nav.states.four-sections-the-first-open": "rst-side 的宽度由父元素决定。在 flex 行中,请给它 flex: 1 1 0,否则它可能会缩到没有宽度。", |
| 106 | "examples.signin.blurb": "登录屏幕经历的每一种状态:询问地址、回来时、链接寄出之后、出了问题时,以及其他进入方式。", |
| 107 | "examples.signin.states.a-passkey": "对已经有通行密钥的人来说这是最快的方式,什么都不用输。但也要提供第二种方式:人会弄丢设备,而一把用不了的通行密钥就是一道锁死的门。", |
| 108 | "examples.signin.states.after-the-link-is-sent": "把地址原样显示回去。这是在苦等一封永远不会来的邮件之前,唯一能发现打错字的机会。", |
| 109 | "examples.signin.states.after-the-link-is-sent-in-another-browser": "如果地址不是这个浏览器提交的,页面不会去猜它。", |
| 110 | "examples.signin.states.an-address-that-does-not-look-right": "提示属于这个输入框,焦点也从这里开始。", |
| 111 | "examples.signin.states.asking-for-an-address": "一个输入框和一个按钮。没什么要记,也没什么可偷。", |
| 112 | "examples.signin.states.coming-back-with-an-email-link": "地址就在按钮上,所以什么都不用输。", |
| 113 | "examples.signin.states.coming-back-with-keymail": "给回来的人:上次用过的地址就在按钮上,点一下就能发送。记住这个地址并重新核对,是你的应用的事。", |
| 114 | "examples.signin.states.email-and-password": "如果你确实要用密码,沿用同样的“一个主入口”布局,并把重设密码的入口直接放在按钮下面,而不是藏起来。", |
| 115 | "examples.signin.states.google-apple-and-the-rest": "我们给你按钮,按各家公司的规定画好。我们不提供登录本身:那要你自己接到所用的服务商。", |
| 116 | "examples.signin.states.on-the-way-to-keymail": "把人送去登录期间的等候页。你的应用会自动让页面往前走;链接是为它没有往前走时准备的。", |
| 117 | "examples.signin.states.when-keymail-could-not-confirm-it": "按钮会改成改寄链接,这样谁都不会被卡住。", |
| 118 | "examples.signin.states.when-keymail-was-offered-and-a-link-went-out": "用一句话说明这次寄的是链接,不去猜原因。", |
| 119 | "examples.signin.warnings.email-and-password.body": "人们会重复使用密码,密码会泄露,而安全保存它们的活儿就落到了你头上。用邮件里的链接加通行密钥,或者只用通行密钥。标记放在这里,是因为有些产品还需要它。", |
| 120 | "examples.signin.warnings.email-and-password.title": "我们不建议使用密码", |
| 121 | "examples.snippet.blurb": "一行要复制的代码:代码放在框中,另有一个“复制”按钮,浏览器有剪贴板时由 copy.js 显示。", |
| 122 | "examples.stat-band.blurb": "仪表板顶部的一排数字。", |
| 123 | "examples.stat-band.states.two-to-a-line-on-a-phone": "rst-stats=\"pairs\" 让手机上一行放两个数字。没有它,就一行一个往下排。", |
| 124 | "examples.stat.blurb": "仪表板上的一个数字,带标签,以及它变化了多少。", |
| 125 | "examples.stat.states.a-shortened-number": "显示 4.1k 而不是 4120?把完整数字放进 <data> 标签的 value。屏幕阅读器只读屏幕上的内容,所以人需要的东西都要留在数字本身里。", |
| 126 | "examples.stat.states.a-smaller-number": "你只需要一个标签和一个数字。其余都是可选的。", |
| 127 | "examples.stat.states.the-big-number": "给一行里的某一个数字加上 rst-stat=\"lead\",它就会变大。还是同一个组件,只是更大。", |
| 128 | "examples.stat.states.when-going-down-is-good": "颜色由你决定,不是由组件决定。这里数字下降了,而这是好消息,所以变化显示为绿色。", |
| 129 | "examples.stat.states.when-going-up-is-bad": "这里数字上升了,而这是坏消息,所以变化显示为红色。", |
| 130 | "examples.stat.states.when-you-cannot-say": "不设颜色,变化就是灰色的。说不准是好是坏时,就这样做。", |
| 131 | "examples.status-pill.blurb": "记录状态显示为带底色的胶囊标签,有颜色也有文字。", |
| 132 | "examples.status-pill.states.neutral": "neutral 是默认色调,所以 rst-tone=\"neutral\" 可以省略。", |
| 133 | "examples.tblock.blurb": "一张带边框的卡片,只有在它的开关打开时才通过 :has() 显示内容。开关是权威;显示只是便利。", |
| 134 | "families.choices-and-actions.blurb": "用来在选项中做选择的控件,以及收尾一个表单的行。每一个都放在带内边距的 rst-box 里,因为表单就放在这样的卡片里。", |
| 135 | "families.choices-and-actions.title": "选择与操作", |
| 136 | "families.date-and-time.blurb": "datetime.js 增强的四个字段,每个都在底层保留原生输入控件,因此没有脚本的读者得到的是朴素的控件,而不是坏掉的控件。", |
| 137 | "families.date-and-time.title": "日期与时间", |
| 138 | "families.display.blurb": "拼出一个页面的那些小块语汇:状态、身份、进度,以及唯一的那种提示形状。", |
| 139 | "families.display.title": "展示", |
| 140 | "families.form.blurb": "人会在里面打字的字段,处于真实表单会让它们出现的状态。每一个都放在带内边距的 rst-box 里,因为表单就放在这样的卡片里。", |
| 141 | "families.form.title": "表单", |
| 142 | "families.formats.blurb": "如何显示日期、数字、金额、名字和地址,以及哪些容易被搞混。", |
| 143 | "families.formats.title": "日期、数字和名字", |
| 144 | "families.list-screen.blurb": "通用列表页:标题、工具栏和行,桌面和移动端都适用。", |
| 145 | "families.list-screen.title": "列表页", |
| 146 | "families.primitives.blurb": "组件无法成为的那些形状,因为它们包住的主体只有调用方知道:卡片、数据网格、菜单,以及外壳自身的框架。", |
| 147 | "families.primitives.title": "界面基元", |
| 148 | "families.route.blurb": "这些片段本身就是一整个响应,而不是响应里的一块。", |
| 149 | "families.route.title": "路由", |
| 150 | "families.screens.blurb": "用组件搭出来的完整页面。从其中一个开始做你自己的。", |
| 151 | "families.screens.title": "页面示例", |
| 152 | "families.shells.blurb": "应用在其中搭建的页面框架:一栏、一条顶栏、一条侧栏、一个控制台和一个舞台。每个都以全宽打开。", |
| 153 | "families.shells.title": "页面外壳", |
| 154 | "gallery.back": "返回设计系统", |
| 155 | "gallery.brand": "Fiesta", |
| 156 | "gallery.copied": "已复制", |
| 157 | "gallery.copy": "复制", |
| 158 | "gallery.copy.failed": "复制失败。请选中代码,自己复制。", |
| 159 | "gallery.demo.callout.body": "每个页面都是独立的一页,是侧栏外壳里的普通 HTML,关掉 JavaScript 也照样工作。在手机上,各个部分是一个列表,每个页面都有返回的路。", |
| 160 | "gallery.demo.heading": "演示应用", |
| 161 | "gallery.demo.lead": "一个完全用这套系统搭出来的可用应用:一块仪表板、一份列表、一条打开的记录。每一个都有自己的地址。不用 JavaScript。", |
| 162 | "gallery.demo.open": "打开演示应用", |
| 163 | "gallery.demos.app": "演示应用", |
| 164 | "gallery.demos.modal": "模态框那条路由", |
| 165 | "gallery.demos.shell": "{shell} 外壳", |
| 166 | "gallery.example.html": "HTML 显示可复制的标记。", |
| 167 | "gallery.example.live": "每个示例都能真实操作,但其中的链接不会跳转到任何地方。", |
| 168 | "gallery.filter": "筛选", |
| 169 | "gallery.filter.empty": "无匹配项", |
| 170 | "gallery.frame.title": "{example}:{state}", |
| 171 | "gallery.html": "HTML", |
| 172 | "gallery.icons.kebab": "kebab 和 menu 是最值得分清的一对:kebab 是那三个点,意思是「这一行还有更多操作」;menu 是那三条线,意思是导航。外壳收起时用的是 menu。", |
| 173 | "gallery.icons.lead": "{total} 个来自 Lucide 的图标,每个都是内联 SVG,大小由 tokens.css 自己的 .icon 规则按旁边的文字决定,这里显示的就是这个大小。", |
| 174 | "gallery.icons.lucide": "完整的一套在 {link}。", |
| 175 | "gallery.icons.names.body": "{total} 个中有 {renamed} 个与 lucide.dev 公布的名称不同。如果图标下面最后一行没有重复它的名字,那就是其中之一。以后无论用哪套图标来画,名称都保持不变。", |
| 176 | "gallery.icons.names.heading": "名称是 Fiesta 自己的", |
| 177 | "gallery.icons.source": "这些字形从哪里来", |
| 178 | "gallery.icons.source.body": "Lucide,采用 ISC 许可,复制进仓库而不是另行获取。发布版带有内联 SVG 和一个 sprite;图库画每个图标的方式和组件一样。", |
| 179 | "gallery.kind.getting-started": "快速开始", |
| 180 | "gallery.kind.icons": "图标", |
| 181 | "gallery.kind.overview": "概览", |
| 182 | "gallery.kind.tokens": "设计变量", |
| 183 | "gallery.language": "语言", |
| 184 | "gallery.language.current": ",当前是{language}", |
| 185 | "gallery.locale.name": "简体中文", |
| 186 | "gallery.modal.account": "账户", |
| 187 | "gallery.modal.billing": "账单", |
| 188 | "gallery.modal.body": "更新整个账户里显示的名字和照片。", |
| 189 | "gallery.modal.close": "关闭设置", |
| 190 | "gallery.modal.inapp": "在真实应用里,✕ 会把你带回背后的那个页面。", |
| 191 | "gallery.modal.nojs": "关闭链接的设计,不用 JS 也能用。", |
| 192 | "gallery.modal.notifications": "通知", |
| 193 | "gallery.modal.own": "模态框有自己的网址。", |
| 194 | "gallery.modal.profile": "个人资料", |
| 195 | "gallery.modal.settings": "设置", |
| 196 | "gallery.modal.sub": "模态框覆盖住的那一页。它被标记为 inert,所以面板打开期间,这里的东西既不接受焦点也到不了读屏器。", |
| 197 | "gallery.nav.demos": "演示", |
| 198 | "gallery.nav.overview": "概览", |
| 199 | "gallery.nav.overview.aria": "{section}概览", |
| 200 | "gallery.nav.sections": "章节与演示", |
| 201 | "gallery.newtab": "在新标签页中打开", |
| 202 | "gallery.overview.intro": "Fiesta 是 Rastrillo 的设计系统,独立成一个项目:一致、精致、无障碍的组件,适用于任何网站或应用,用任何技术栈或者不用都行,不需要或只需要极少的 JavaScript,支持十二种语言,用干净、现代的 HTML 和 CSS 写成。一个样式表就够了;标记随你复制、随你改编。", |
| 203 | "gallery.overview.next": "接下来去哪里", |
| 204 | "gallery.prefs": "显示设置", |
| 205 | "gallery.primitives.modal.live": "到它真正属于的那个网址上去看它运行", |
| 206 | "gallery.primitives.sidebar.live": "打开侧栏外壳演示,一个独立预览。", |
| 207 | "gallery.primitives.topbar.live": "打开顶栏外壳演示,一个专门的预览。", |
| 208 | "gallery.route.tokens": "构成整个系统的每一个自定义属性:主题的颜色与字体,以及字号、间距和圆角的比例。", |
| 209 | "gallery.routes": "在应用里,这会到达 {routes}。在这里,它的链接和表单哪儿也不去。", |
| 210 | "gallery.routes.getting-started": "发布的内容:一条链接就能用的样式表、每个主题、可选的脚本和字符串,以及每个文件的大小。", |
| 211 | "gallery.routes.icons": "每个图标 slug,按组件绘制时的大小显示,附上要复制的文件和它在 lucide.dev 上的名称。", |
| 212 | "gallery.shell.open": "打开 {shell} 外壳", |
| 213 | "gallery.skip": "跳到内容", |
| 214 | "gallery.started.file.anchor-js": "在不支持 CSS 锚点定位的浏览器中,让下拉菜单留在屏幕内。在支持的浏览器中它什么也不做:等你支持的所有浏览器都支持后,就可以删除它。", |
| 215 | "gallery.started.file.bundle": "设计变量和 {theme} 主题放在一个文件里:每个组件类、每个比例尺,以及颜色,每种颜色都以 light-dark() 一对声明一次。", |
| 216 | "gallery.started.file.busy-js": "忙碌规则:表单提交期间,按钮至少显示 650ms 的转圈并拒绝第二次提交,返回时恢复原样。", |
| 217 | "gallery.started.file.calendar-js": "该字段的日历按钮打开的月份网格。在 datetime.js 向它索取面板之前是惰性的,也可以单独删除:没有它,按钮就回退到浏览器自带的选择器。", |
| 218 | "gallery.started.file.copy-js": "代码片段的“复制”按钮:复制代码,显示“已复制”,在没有剪贴板的浏览器里保持隐藏。可以单独删除。", |
| 219 | "gallery.started.file.datetime-js": "日期字段的自然语言输入。在某个字段用 data-rst-date 或 data-rst-time 主动启用之前是惰性的,也可以单独删除。", |
| 220 | "gallery.started.file.fiesta-js": "大多数页面都需要的增强:在外面点击或按 Escape 就会关闭的菜单、开关的拖动、iOS 的按下状态,以及配色菜单。最先加载它。", |
| 221 | "gallery.started.file.light-js": "深度样式读取的光:随时刻照出的阴影,以及指针下的按钮上的一层光泽。删除它即可得到静止的设计。", |
| 222 | "gallery.started.file.select-js": "field-select 的可搜索下拉框。在某个 select 用 data-rst-select 主动启用之前是惰性的,也可以单独删除。", |
| 223 | "gallery.started.file.shell-css": "手机上页面之间的滑动切换,供 sidebar 和 console 外壳使用。可与 shell.js 一起删除。", |
| 224 | "gallery.started.file.shell-js": "sidebar 和 console 外壳的手机导航:页面之间的滑动切换、复用浏览历史的“返回”,以及把焦点还给你离开的那个栏目。可以单独删除。", |
| 225 | "gallery.started.file.sprite": "每个图标一个 symbol 的 sprite,供自己提供 Fiesta 副本的站点使用。如果用 CDN,就改为内联 icons/<slug>.svg 里的 SVG。", |
| 226 | "gallery.started.file.strings": "select.js、datetime.js 和 copy.js 显示在屏幕上的文字,{language} 版。加载与你页面的 lang 相符的那个。", |
| 227 | "gallery.started.file.theme": "{theme} 主题的颜色、字体族和形状:一个 :root 块,每个颜色以 light-dark() 成对声明一次。", |
| 228 | "gallery.started.file.tokens": "结构:所有组件类、所有比例,没有任何颜色字面量。在每个主题下都是同一个文件。", |
| 229 | "gallery.started.file.transition-js": "防止 column、stage 和 topbar 页面在跳过页面过渡时记录错误。请在样式表之前加载它,不要加 defer。sidebar 和 console 页面不需要它。", |
| 230 | "gallery.started.lead": "Fiesta 是一个样式表加几个可选的脚本。关掉脚本一切照常工作;脚本是增强,每个都是单独的文件,所以你只加载页面用到的那些,别的不用。", |
| 231 | "gallery.started.link.body": "从 CDN 链接 fiesta.css,你的标记就有了样式。/1/ 是最新的 1.x;会破坏现有标记的改动是新的主版本。需要永远不变的字节时,就锁定确切的版本。", |
| 232 | "gallery.started.link.heading": "一条链接", |
| 233 | "gallery.started.own.body": "从某个发布版取 tokens.css 和一个主题,或者合并后的文件,和你的站点一起提供;仓库里 releases/<version>/ 下的文件附有 SHA256SUMS。先链接 tokens.css。", |
| 234 | "gallery.started.own.heading": "自己托管一份副本", |
| 235 | "gallery.started.scripts": "脚本", |
| 236 | "gallery.started.scripts.body": "fiesta.js 负责关闭菜单、让开关的旋钮可以拖动、给 iOS 按下状态,并运行配色菜单;最先加载它。busy.js、light.js、anchor.js、shell.js、transition.js、copy.js、select.js、datetime.js 和 calendar.js 在页面用到它们增强的东西之前都不做任何事,每个都可以单独删除。最后加载 calendar.js。", |
| 237 | "gallery.started.stylesheets": "样式表", |
| 238 | "gallery.started.stylesheets.body": "fiesta.css 是 tokens.css 和 Day 主题合并而成,去掉了注释,gzip 后不到 25 KiB。设计变量承载每个组件的布局和行为;主题给它们上色。fiesta-plain.css 和 fiesta-signal.css 是同一套设计变量配上 Plain 和 Signal 主题。使用 sidebar 或 console 外壳的页面还要链接 shell.css;别的都不需要。", |
| 239 | "gallery.started.total": "一个链接了 fiesta.css 和所有脚本的页面,会收到原样 {raw} 的 CSS 和 JavaScript,gzip 后 {gzip}。", |
| 240 | "gallery.started.upgrading": "升级", |
| 241 | "gallery.started.upgrading.body": "使用 /1/ 的页面会在每个 1.x 版本发布当天收到它;更新日志会说明改了什么。锁定到确切版本的页面,要等你改了链接才会变,之前不会。", |
| 242 | "gallery.started.weight": "原样 {raw} · gzip 压缩后 {gzip} · 去掉注释再压缩后 {stripped}", |
| 243 | "gallery.started.weights": "每个文件的体积", |
| 244 | "gallery.started.weights.note": "大小以 KiB 为单位。访客实际下载的是 gzip 压缩后的版本。", |
| 245 | "gallery.step.next": "下一页:{page}", |
| 246 | "gallery.step.prev": "上一页:{page}", |
| 247 | "gallery.steps.label": "上一页和下一页", |
| 248 | "gallery.theme.label": "主题", |
| 249 | "gallery.title": "{page} · Fiesta · {theme}", |
| 250 | "gallery.tokens.group.accent": "强调色", |
| 251 | "gallery.tokens.group.controls": "控件", |
| 252 | "gallery.tokens.group.depth": "层次", |
| 253 | "gallery.tokens.group.radius": "圆角", |
| 254 | "gallery.tokens.group.spacing": "间距", |
| 255 | "gallery.tokens.group.status-tones": "状态色调", |
| 256 | "gallery.tokens.group.surfaces-and-lines": "底面与线条", |
| 257 | "gallery.tokens.group.text": "文字", |
| 258 | "gallery.tokens.group.type-choices": "排版选择", |
| 259 | "gallery.tokens.group.type-family": "字体族", |
| 260 | "gallery.tokens.group.type-scale": "字号级数", |
| 261 | "gallery.tokens.lead": "每个组件都会读取的自定义属性。颜色、字体族和形状来自主题 css/themes/{theme}.css。字号比例和间距级数是结构,每个主题都一样,来自 css/tokens.css。", |
| 262 | "gallery.tokens.note": "显示的是浅色值。每种颜色都以 light-dark() 一对声明一次,色块跟随上方的配色菜单。WCAG 2.2 AA 下限:文字 4.5:1,控件边框 3:1。", |
| 263 | "gallery.up": "返回{name}", |
| 264 | "gallery.up.label": "栏目", |
| 265 | "gallery.view.desktop": "桌面", |
| 266 | "gallery.view.legend": "预览", |
| 267 | "gallery.view.mobile": "手机", |
| 268 | "gallery.wrap": "把这段放进 {wrapper} 里。", |
| 269 | "labels.actor.a-person": "一个人", |
| 270 | "labels.actor.an-agent-acting-for-a-person": "代表某人行动的代理", |
| 271 | "labels.api-tokens.four-tokens-two-of-them-live": "四个令牌,其中两个有效", |
| 272 | "labels.api-tokens.just-created-the-secret-shown-once": "刚创建:秘密只显示一次", |
| 273 | "labels.api-tokens.no-tokens-yet": "还没有令牌", |
| 274 | "labels.back-nav.back-to-a-record": "返回一条记录", |
| 275 | "labels.badge.negative": "negative", |
| 276 | "labels.badge.neutral": "neutral", |
| 277 | "labels.badge.no-tone-quiet-default": "无色调(安静的默认值)", |
| 278 | "labels.badge.positive": "positive", |
| 279 | "labels.badge.warning": "warning", |
| 280 | "labels.bulk-bar.three-rows-selected": "选中了三行", |
| 281 | "labels.callout.info": "info", |
| 282 | "labels.callout.negative": "negative", |
| 283 | "labels.callout.negative-announced-as-an-alert": "negative,并作为警报播报", |
| 284 | "labels.callout.positive": "positive", |
| 285 | "labels.callout.warning": "warning", |
| 286 | "labels.choice-field.pick-any": "可多选", |
| 287 | "labels.choice-field.pick-one": "只能选一个", |
| 288 | "labels.confirm-form.destructive": "破坏性操作", |
| 289 | "labels.confirm-form.ordinary-default-cancel-wording": "普通情况,取消用默认措辞", |
| 290 | "labels.detail-list.four-facts-one-machine-ish": "四条信息,其中一条偏机器", |
| 291 | "labels.dropdown.a-filter-menu-with-one-choice-applied": "已应用一项选择的筛选菜单", |
| 292 | "labels.empty-state.sentence-only": "只有一句话", |
| 293 | "labels.empty-state.with-a-post-call-to-action": "带一个 POST 的行动召唤", |
| 294 | "labels.error-page.403-forbidden": "403:无权限", |
| 295 | "labels.error-page.404-not-found": "404:找不到", |
| 296 | "labels.error-page.422-unprocessable": "422:无法处理", |
| 297 | "labels.error-page.500-server-error": "500:服务器错误", |
| 298 | "labels.error-page.503-unavailable": "503:暂时不可用", |
| 299 | "labels.error-page.anything-else-the-generic-pair": "其他任何情况:通用的一对", |
| 300 | "labels.field-check.disabled": "已禁用", |
| 301 | "labels.field-check.off": "关", |
| 302 | "labels.field-check.on": "开", |
| 303 | "labels.field-date.bounded": "有上下限", |
| 304 | "labels.field-date.enhanced-input-type-tomorrow-or-in-3-weeks": "增强输入:键入“明天”或“3 周后”", |
| 305 | "labels.field-date.plain-the-bare-native-input": "Plain:不加修饰的原生输入框", |
| 306 | "labels.field-date.required-with-an-error": "必填,并带错误", |
| 307 | "labels.field-daterange.date-and-time-seeded": "日期和时间,已预填", |
| 308 | "labels.field-daterange.dates-only-with-an-error-on-the-end": "只有日期,结束一侧带错误", |
| 309 | "labels.field-datetime.bounded": "有上下限", |
| 310 | "labels.field-datetime.enhanced-input-type-tomorrow-or-in-3-weeks": "增强输入:键入“明天”或“3 周后”", |
| 311 | "labels.field-datetime.plain-the-bare-native-input": "Plain:不加修饰的原生输入框", |
| 312 | "labels.field-datetime.required-with-an-error": "必填,并带错误", |
| 313 | "labels.field-money.bare": "最简", |
| 314 | "labels.field-money.with-a-hint": "带一条提示", |
| 315 | "labels.field-money.with-an-error": "带一个错误", |
| 316 | "labels.field-select.hand-written-with-optgroups": "手写的,带 optgroup 分组", |
| 317 | "labels.field-select.required-with-an-error": "必填,并带错误", |
| 318 | "labels.field-select.three-options-a-native-select": "三个选项:原生 select", |
| 319 | "labels.field-select.twelve-options-plain-the-enhancement-opted-out": "十二个选项,Plain:明确不要增强", |
| 320 | "labels.field-select.twelve-options-the-filterable-combobox": "十二个选项:可筛选的组合框", |
| 321 | "labels.field-text.bare": "最简", |
| 322 | "labels.field-text.required": "必填", |
| 323 | "labels.field-text.the-headline-field": "主字段", |
| 324 | "labels.field-text.with-a-hint": "带一条提示", |
| 325 | "labels.field-text.with-an-error": "带一个错误", |
| 326 | "labels.field-textarea.bare": "最简", |
| 327 | "labels.field-textarea.required": "必填", |
| 328 | "labels.field-textarea.with-a-hint": "带一条提示", |
| 329 | "labels.field-textarea.with-an-error": "带一个错误", |
| 330 | "labels.field-time.bounded": "有上下限", |
| 331 | "labels.field-time.enhanced-input-type-half-seven-or-noon": "增强输入:键入“七点半”或“中午”", |
| 332 | "labels.field-time.plain-the-bare-native-input": "Plain:不加修饰的原生输入框", |
| 333 | "labels.field-time.required-with-an-error": "必填,并带错误", |
| 334 | "labels.field-url.bare": "最简", |
| 335 | "labels.field-url.with-a-hint": "带一条提示", |
| 336 | "labels.field-url.with-an-error": "带一个错误", |
| 337 | "labels.field.bare": "最简", |
| 338 | "labels.field.required": "必填", |
| 339 | "labels.field.short": "窄", |
| 340 | "labels.field.the-headline-field": "主字段", |
| 341 | "labels.field.with-a-hint": "带一条提示", |
| 342 | "labels.field.with-an-error": "带一个错误", |
| 343 | "labels.field.with-help-under-the-control": "控件下方带一行帮助文字", |
| 344 | "labels.form-error.a-rejected-submission": "一次被拒绝的提交", |
| 345 | "labels.form-foot.idle-the-button-before-anything-happens": "空闲:任何事情发生之前的按钮", |
| 346 | "labels.form-foot.save-and-cancel": "保存和取消", |
| 347 | "labels.form-foot.submit-only": "只有提交", |
| 348 | "labels.form-foot.working-what-busy-js-writes-on-the-way-out": "处理中:表单发出时 busy.js 写下的内容", |
| 349 | "labels.job-status.failed": "失败", |
| 350 | "labels.job-status.finished": "已完成", |
| 351 | "labels.job-status.running": "进行中", |
| 352 | "labels.list-bar-search.empty-accessible-name-from-the-catalog": "空,可访问名称取自目录", |
| 353 | "labels.list-bar-search.with-a-query": "已有查询", |
| 354 | "labels.list-bar-search.with-a-query-on-page-4": "已有查询,第 4 页", |
| 355 | "labels.list-bar.search-with-a-filter-dropdown": "搜索,外加一个筛选下拉菜单", |
| 356 | "labels.list-row-action.a-short-status-beside-the-name": "名称旁的简短状态", |
| 357 | "labels.list-row-action.lead-marker-status-and-an-action": "前导标记、状态和一个操作", |
| 358 | "labels.list-row-action.name-and-meta-line-only": "只有名称和辅助信息行", |
| 359 | "labels.list-search-submit.default-label": "默认标签", |
| 360 | "labels.locale-menu.twelve-languages-current-highlighted": "十二种语言,当前的一种被标出。", |
| 361 | "labels.media-grid.screenshots-a-logo-and-a-banner": "截图、一个标志和一个横幅", |
| 362 | "labels.media-grid.select-mode-one-tile-selected": "选择模式,选中了一个图块", |
| 363 | "labels.meter.empty": "空", |
| 364 | "labels.meter.full": "已满", |
| 365 | "labels.meter.nearly-full": "快满了", |
| 366 | "labels.meter.over-budget": "超出额度", |
| 367 | "labels.meter.part-way": "进行到一半", |
| 368 | "labels.notice.a-saved-message": "一条“已保存”的消息", |
| 369 | "labels.page-header.title-only": "只有标题", |
| 370 | "labels.page-header.title-subhead-and-a-primary-action": "标题、副标题和一个主要操作", |
| 371 | "labels.pagination.first-page-default-accessible-name": "第一页,使用默认的可访问名称", |
| 372 | "labels.pagination.middle-of-a-long-list": "长列表的中间", |
| 373 | "labels.person.large-the-show-header-size": "大号,详情页页眉的尺寸", |
| 374 | "labels.person.name-and-email": "姓名和邮箱", |
| 375 | "labels.person.no-initial": "没有首字母", |
| 376 | "labels.row-menu.links-a-form-and-a-destructive-item": "链接、表单和一个破坏性项目", |
| 377 | "labels.row-menu.links-only-for-a-list-inside-a-selection-form": "仅链接,用于选择表单中的列表", |
| 378 | "labels.scheme-menu.standalone": "独立:页面记住选择", |
| 379 | "labels.scheme-menu.three-choices-dark-current": "三个选项,当前为深色。", |
| 380 | "labels.seg-tabs.buttons-that-switch-in-place": "原地切换的按钮", |
| 381 | "labels.seg-tabs.two-sections": "两个分区", |
| 382 | "labels.side-nav.four-sections-the-first-open": "四个分区,第一个已打开", |
| 383 | "labels.signin.a-passkey": "通行密钥", |
| 384 | "labels.signin.after-the-link-is-sent": "链接寄出之后", |
| 385 | "labels.signin.after-the-link-is-sent-in-another-browser": "链接寄出之后,在另一个浏览器里", |
| 386 | "labels.signin.an-address-that-does-not-look-right": "看起来不对的地址", |
| 387 | "labels.signin.asking-for-an-address": "询问地址", |
| 388 | "labels.signin.coming-back-with-an-email-link": "用邮件链接再次登录", |
| 389 | "labels.signin.coming-back-with-keymail": "用 Keymail 再次登录", |
| 390 | "labels.signin.email-and-password": "邮箱和密码", |
| 391 | "labels.signin.google-apple-and-the-rest": "Google、Apple 等等", |
| 392 | "labels.signin.on-the-way-to-keymail": "正在前往 Keymail", |
| 393 | "labels.signin.when-keymail-could-not-confirm-it": "Keymail 无法确认时", |
| 394 | "labels.signin.when-keymail-was-offered-and-a-link-went-out": "提供的是 Keymail,寄出的却是链接", |
| 395 | "labels.snippet.a-line-to-copy": "要复制的一行", |
| 396 | "labels.stat-band.two-to-a-line-on-a-phone": "手机上一行两个", |
| 397 | "labels.stat.a-shortened-number": "缩短过的数字", |
| 398 | "labels.stat.a-smaller-number": "较小的数字", |
| 399 | "labels.stat.the-big-number": "那个大数字", |
| 400 | "labels.stat.when-going-down-is-good": "下降是好事的时候", |
| 401 | "labels.stat.when-going-up-is-bad": "上升是坏事的时候", |
| 402 | "labels.stat.when-you-cannot-say": "说不准的时候", |
| 403 | "labels.status-pill.negative": "negative", |
| 404 | "labels.status-pill.neutral": "neutral", |
| 405 | "labels.status-pill.positive": "positive", |
| 406 | "labels.status-pill.warning": "warning", |
| 407 | "pages.idioms.box.body": "rst-list 和 rst-card 故意没有内边距:它们装的是一串行,每行自己有内边距。把表单、段落、一排链接或任何不是行的东西直接塞进去,就会紧贴着边框渲染;文字碰到边缘就是那个信号。给任意内容用的有内边距卡片是 rst-box,它的标题是放在它前面的兄弟节点 rst-box-head。", |
| 408 | "pages.idioms.box.title": "哪张卡片是哪一种", |
| 409 | "pages.idioms.list-grid.body": "一个页面就是一列:page-header,然后 section-header + 卡片,再下一个 section-header + 卡片,按阅读顺序排下去。横向排列只留给自带它的写法:rst-box-head、rst-field-row、rst-lbar、rst-lrow 单元格、rst-seg-tabs。", |
| 410 | "pages.idioms.list-grid.title": "页面是竖着堆起来的" |
| 411 | } |
| 412 | |