diff --git a/CONTRIBUTING_TRANSLATIONS.md b/CONTRIBUTING_TRANSLATIONS.md index 95814c5c..845a93b2 100644 --- a/CONTRIBUTING_TRANSLATIONS.md +++ b/CONTRIBUTING_TRANSLATIONS.md @@ -5,6 +5,7 @@ Help make Ultra Card accessible to users worldwide! We welcome translation contr ## 🌍 Currently Supported Languages - 🇪🇺 Catalan (`ca.json`) +- 🇨🇳 Chinese Simplified (`zh.json`) - 🇨🇿 Czech (`cs.json`) - 🇩🇰 Danish (`da.json`) - 🇩🇪 German (`de.json`) @@ -93,7 +94,9 @@ Help make Ultra Card accessible to users worldwide! We welcome translation contr ## 🆕 Adding a New Language 1. **Copy base file**: Copy `src/translations/en.json` to `src/translations/[language-code].json` -2. **Use ISO 639-1 codes**: `de` (German), `fr` (French), `pt` (Portuguese), etc. +2. **Use ISO 639-1 codes**: `de` (German), `fr` (French), `pt` (Portuguese), etc. Use the + region-stripped code where one exists: Home Assistant reports Simplified Chinese as + `zh-Hans`, and `localize.ts` resolves it down to `zh.json`. 3. **Translate all values**: Go through each section systematically 4. **Submit PR**: Create pull request with title "Translation: Add [Language] support" diff --git a/README.md b/README.md index 41ac4707..214559ff 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ # Ultra Card +**English** · [简体中文](README.zh-CN.md) + ## The Visual Dashboard Builder for Home Assistant **Build Home Assistant dashboards without writing YAML.** Ultra Card is a modular card builder with a drag-and-drop layout engine, a large module library, and a full visual editor. You design in the UI; the card handles the rest. @@ -137,8 +139,9 @@ Browse and install community presets from inside the editor (**Presets** tab → ## Translations -Supported languages: Catalan, Czech, Danish, German, English, British English, Spanish, French, Italian, Dutch, Norwegian, Norwegian Bokmål, Norwegian Nynorsk, Polish, Swedish. +Supported languages: Catalan, Czech, Danish, German, English, British English, Spanish, French, Italian, Dutch, Norwegian, Norwegian Bokmål, Norwegian Nynorsk, Polish, Swedish, Chinese Simplified. +The card follows your Home Assistant language (Simplified Chinese maps to `zh-Hans`). To contribute translations, see [CONTRIBUTING_TRANSLATIONS.md](CONTRIBUTING_TRANSLATIONS.md). You can edit files in `src/translations/` on GitHub and open a pull request. --- diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 00000000..c1e59ff9 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,176 @@ +[![hacs_badge](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://github.com/hacs/integration) + +# Ultra Card + +## 面向 Home Assistant 的可视化仪表盘构建器 + +**无需编写 YAML,即可搭建 Home Assistant 仪表盘。** Ultra Card 是一个模块化卡片构建器,内置拖拽式布局引擎、丰富的模块库以及完整的可视化编辑器。你只需在界面中设计,其余交给卡片处理。 + +https://github.com/user-attachments/assets/e9f28eee-e587-4bc0-ad0b-cea53a3fa5a6 + +**[ultracard.io](https://ultracard.io)** · **[模块](https://ultracard.io/modules/)** · **[模板模式](https://ultracard.io/template-mode/)** · **[预设画廊](https://ultracard.io/presets/)** · **[Discord](https://discord.gg/6xVgHxzzBV)** + +--- + +## 为什么选择 Ultra Card? + +**可视化编辑器** — 所有设置都在界面里完成,无需编写 YAML。 + +**Ultra Dashboard** — 一键从你的区域生成完整仪表盘(设置 → 仪表盘 → 添加仪表盘 → 社区仪表盘)。选一个风格,接管控制权,每张卡片都能在可视化编辑器中打开。[了解更多](docs/ultra-dashboard.md)。 + +**FreeSpace** — 自由布局的仪表盘视图(任意卡片均可拖拽、缩放、旋转、分层)。安装 Ultra Card Connect 后自动可用。[了解更多](docs/freespace.md)。 + +**96 个模块** — 涵盖布局、仪表、图表、控件、媒体等。支持嵌套的列式拖拽布局,让你自由搭建想要的界面。 + +**模板模式** — 用 Jinja2 模板让模块外观随实体状态变化。对所有用户免费。 + +**预设画廊** — 浏览社区布局,一键安装,也可以分享你自己的作品。 + +**Pro 云同步与备份** — 云同步、每日自动备份(保留 30 天)以及手动快照,让你的成果在多设备间安全留存。 + +--- + +## 在 ultracard.io 上体验 + +网站运行的是真实的卡片,而不是示例截图。想在安装前先探索一番,或者需要比本 README 更深入的参考时,都可以用它。 + +- **[模块](https://ultracard.io/modules/)** — 所有免费与 PRO 模块的实时预览(66 个免费,30 个 PRO) +- **[模板模式](https://ultracard.io/template-mode/)** — 交互式演练场、属性参考与字段说明 +- **[预设画廊](https://ultracard.io/presets/)** — 可浏览并安装社区布局 +- **[常见问题](https://ultracard.io/faqs/)** — 常见问题与故障排查 + +图文教程还收录在 [GitHub wiki](https://github.com/WJDDesigns/Ultra-Card/wiki) 中,也可以在 Home Assistant 内通过 Ultra Card Hub → 文档打开。 + +--- + +uc-screener + +## 快速开始 + +### 安装 + +**HACS(推荐)** + +[![打开你的 Home Assistant 实例,在 Home Assistant 社区商店中打开一个仓库。](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=WJDDesigns&repository=Ultra-Card&category=plugin) + +或者在 HACS 中把 `https://github.com/WJDDesigns/Ultra-Card` 添加为自定义 Lovelace 仓库,安装 Ultra Card 后重启 Home Assistant。 + +**手动安装** + +1. 在[最新版本](https://github.com/WJDDesigns/Ultra-Card/releases)页面下载该版本的**全部**发布文件,而不只是 `ultra-card.js`。卡片被拆分为多个 JavaScript 文件(例如 `ultra-card.js`、`ultra-card-panel.js` 以及所有 `uc-*.js` 分片)。它们必须放在**同一个文件夹**内,浏览器才能正确加载。 +2. 将整个文件夹中的内容复制到 `config/www`(例如 `config/www/ultra-card/`),保持各文件的相对位置与文件名不变。 +3. 添加**一条** Lovelace 资源:_设置_ → _仪表盘_ → _资源_ → 添加资源 → URL 只指向**主**包,例如 `/local/ultra-card/ultra-card.js`(如果文件直接放在 `www` 下,则为 `/local/ultra-card.js`),类型选择 **JavaScript 模块**。 + +如果你使用 Ultra Card 仪表盘面板或 Hub 功能,请确保 `ultra-card-panel.js` 也在同一目录中(HACS 会自动安装全部文件)。 + +### Ultra Card Connect(使用 Hub 与 Pro 时推荐安装) + +如果需要以下功能,请安装独立的 **[Ultra Card Connect](https://github.com/WJDDesigns/ultra-card-connect)** Home Assistant 集成(HACS → 集成): + +- **Ultra Card Hub** 侧边栏(预设、账户、文档) +- 跨设备保持登录的共享 Pro 账号(凭据保存在 HA 内) +- 收藏颜色同步、通过 Connect 使用 Smart Cards、通过集成上传媒体文件 + +即使不安装 Connect,也可以正常搭建仪表盘;但要通过 HA 完成 Hub 侧边栏认证与 Pro 解锁,则必须安装 Connect。 + +(该集成的 HA 域名仍为 `ultra_card_pro_cloud`,因此已有的实体 ID 不会改变。) + +### 创建第一张卡片 + +1. 编辑仪表盘 → **添加卡片** → **自定义:Ultra Card**。 +2. 使用**布局构建器(Layout Builder)**标签页添加并排列模块。 +3. 使用每个模块上的**四标签页编辑器**(常规、动作、逻辑、设计)配置内容、点击行为、显示条件与样式。 + +**按用户可见** — 在逻辑标签页(模块、行、列)、卡片设置以及图标模块中的每个图标上,都可以针对指定的 Home Assistant 用户显示或隐藏内容,思路与 Lovelace 卡片的**可见性 → 用户**标签页相同,但这是 Ultra Card 内置的能力。如果你更习惯用 Lovelace 卡片级的用户条件来隐藏整张卡片,它也同样适用。 + +### 可选:Pro + +访问 **[ultracard.io](https://ultracard.io)** 获取 PRO 模块、云同步与备份。安装 Ultra Card Connect 集成后,通过 Hub → 账户登录即可。 + +--- + +## 模块 + +Ultra Card 内置 **94 个模块**,覆盖内容、数据、控件、布局、媒体与 PRO 等领域,包括仪表盘、图表、温控与扫地机控制、家电卡片、UniFi 网络监控、Living Canvas 动态背景等等。 + +**[浏览全部模块并查看实时预览 →](https://ultracard.io/modules/)** + +你还可以在 Ultra Card 的布局系统中嵌入原生 Home Assistant 卡片与第三方卡片(Bubble Card、Mushroom、ApexCharts 等),数量不限。该功能对所有用户免费。 + +--- + +## 模板模式 + +模板模式让一小段 Jinja2 模板决定模块的外观,并随实体状态实时变化:图标、颜色、标签、行的可见性等等。它随 Ultra Card 一同免费提供。 + +可在 **[ultracard.io/template-mode](https://ultracard.io/template-mode/)** 体验实时演练场与属性参考。同样的速查表在每个模块编辑器中都能一键打开。 + +--- + +## 免费版 vs Pro + +| 功能 | 免费版 | Pro | +|------|--------|-----| +| 核心模块与可视化编辑器 | 支持 | 支持 | +| 预设画廊 | 支持 | 支持 | +| 条件逻辑与模板模式 | 支持 | 支持 | +| 原生 HA 卡片 | 不限 | 不限 | +| 第三方卡片 | 不限 | 不限 | +| 云端配置同步 | - | 支持 | +| 每日自动备份(30 天) | - | 支持 | +| 手动快照(最多 30 个) | - | 支持 | +| 28 个 PRO 模块 | - | 支持 | +| 优先支持 | - | 支持 | + +**[前往 ultracard.io 获取 Pro](https://ultracard.io)** + +--- + +## 预设画廊 + +可以在编辑器内浏览并安装社区预设(**预设**标签页 → **浏览市场**),也可以在网页端访问 **[ultracard.io/presets](https://ultracard.io/presets/)**。支持一键安装、分类筛选、预览与收藏,你也可以提交自己的布局供他人使用。 + +--- + +## 翻译 + +支持的语言:加泰罗尼亚语、捷克语、丹麦语、德语、英语、英式英语、西班牙语、法语、意大利语、荷兰语、挪威语、挪威博克莫尔语、挪威尼诺斯克语、波兰语、瑞典语、简体中文。 + +UI 语言跟随 Home Assistant 的语言设置(简体中文对应 `zh-Hans`)。如需贡献翻译,请参阅 [CONTRIBUTING_TRANSLATIONS.md](CONTRIBUTING_TRANSLATIONS.md)。你可以直接在 GitHub 上编辑 `src/translations/` 中的文件并提交 Pull Request。 + +--- + +## 社区与支持 + +- **[ultracard.io](https://ultracard.io)** — 官网、模块、模板模式、预设、Pro 与账户 +- **[Discord](https://discord.gg/6xVgHxzzBV)** — 求助、分享、交流 +- **[GitHub Issues](https://github.com/WJDDesigns/Ultra-Card/issues)** — 缺陷反馈与功能建议 +- **[常见问题](https://ultracard.io/faqs/)** — 常见问题 + +Pro 订阅用户享有优先支持。你也可以通过[赞助开发](https://www.paypal.com/ncp/payment/NLHALFSPA7PUS)进行一次性打赏。 + +--- + +## 贡献 + +欢迎各种形式的贡献:翻译、预设、代码与文档。翻译相关请查看 [CONTRIBUTING_TRANSLATIONS.md](CONTRIBUTING_TRANSLATIONS.md),本地开发请查看 [DEVELOPMENT.md](DEVELOPMENT.md)(其中包含 **`npm run release:check`**,即 CI 与打标签发布所使用的同一套流水线)。提交 Pull Request 时请写清楚说明。 + +--- + +## 技术细节 + +- **环境要求:** Home Assistant 2024.1.0 及以上,现代浏览器(ES2015+)。推荐使用 HACS。 +- **技术栈:** TypeScript、智能缓存、响应式布局。 +- **隐私:** 不做任何追踪;免费版完全本地运行;Pro 同步使用加密连接。代码在 GitHub 上开源。 + +--- + +## 许可证 + +MIT — 详见 [license](license) 文件。 + +--- + +**由 [WJD Designs](https://wjddesigns.com) 创建。** 感谢 Discord 社区,以及所有贡献预设、翻译与反馈的朋友。 + +_为 Home Assistant 而生_ diff --git a/scripts/translate-locale.js b/scripts/translate-locale.js index 2a63dcad..e08b2571 100644 --- a/scripts/translate-locale.js +++ b/scripts/translate-locale.js @@ -128,6 +128,7 @@ const LANG_NAMES = { nn: 'Norwegian Nynorsk', cs: 'Czech', ca: 'Catalan', + zh: 'Simplified Chinese', }; const ALL_LANGS = Object.keys(LANG_NAMES); diff --git a/src/localize/localize.ts b/src/localize/localize.ts index e220d652..d225311a 100644 --- a/src/localize/localize.ts +++ b/src/localize/localize.ts @@ -31,6 +31,9 @@ const localeLoaders: Record Promise> = { no: () => import(/* webpackChunkName: "locale-no" */ '../translations/no.json'), pl: () => import(/* webpackChunkName: "locale-pl" */ '../translations/pl.json'), sv: () => import(/* webpackChunkName: "locale-sv" */ '../translations/sv.json'), + // Home Assistant reports Simplified Chinese as `zh-Hans`; the resolver strips + // the region so both `zh` and `zh-Hans` land here. + zh: () => import(/* webpackChunkName: "locale-zh" */ '../translations/zh.json'), }; const DEFAULT_LANG = 'en'; diff --git a/src/translations/_glossary.json b/src/translations/_glossary.json index 65756958..5a57a67d 100644 --- a/src/translations/_glossary.json +++ b/src/translations/_glossary.json @@ -203,6 +203,9 @@ }, "ca": { "formality": "Use informal \"tu\" for UI." + }, + "zh": { + "formality": "Use concise Simplified Chinese following Home Assistant zh-Hans terminology; prefer noun phrases for labels (\"标题\" not \"请设置标题\") and drop English plural 's' artifacts." } } } diff --git a/src/translations/zh.json b/src/translations/zh.json new file mode 100644 index 00000000..b8b0dae2 --- /dev/null +++ b/src/translations/zh.json @@ -0,0 +1,5792 @@ +{ + "editor": { + "tabs": { + "layout": "构建器", + "settings": "设置", + "card_settings": "卡片设置", + "about": "关于", + "pro": "Pro" + }, + "settings": { + "title": "卡片设置", + "description": "配置卡片的全局外观和行为。" + }, + "template": { + "unknown_keys_title": "无法识别的模板键(将被忽略):", + "did_you_mean": "您是不是想输入", + "supported_keys": "此模块支持的键:" + }, + "appearance": { + "title": "外观", + "description": "控制卡片的外观", + "transparent_card": "透明卡片", + "transparent_card_desc": "移除卡片的背景、边框和阴影,只显示你的内容。", + "ha_theme": "Home Assistant 主题", + "ha_theme_default": "跟随仪表盘主题", + "ha_theme_desc": "仅对此卡片应用已安装的某个 Home Assistant 主题。支持来自 HACS 的任何主题。", + "uc_theme": "Ultra Card 主题", + "uc_theme_desc": "设置此卡片上所有模块的表面外观(玻璃、柔和、扁平……)、圆角半径和默认样式。设为“继承主题”的模块将遵循该设置。", + "uc_theme_active": "当前:", + "uc_theme_manage": "在 Hub 中管理主题和全局默认值" + }, + "theme": { + "inherit": "继承主题", + "inherit_short": "主题", + "follow_global": "跟随全局默认值", + "none": "无", + "none_desc": "忽略所有主题,包括全局默认值。" + }, + "behavior": { + "title": "行为", + "description": "配置卡片对用户交互的响应方式" + }, + "pro_settings": { + "title": "Pro 设置", + "description": "Ultra Card Pro 订阅者的专属设置", + "skip_default_modules": "从空卡片开始", + "skip_default_modules_desc": "添加新的 Ultra Card 时,从空布局开始,而不是默认的初始模块" + }, + "spacing": { + "title": "间距", + "description": "控制卡片的间距与位置" + }, + "favorite_colors": { + "title": "收藏颜色", + "description": "管理显示在所有 Ultra Card 取色器中的收藏颜色。这些颜色会在你的所有 Ultra Card 之间同步。" + }, + "custom_variables": { + "title": "自定义变量", + "description": "创建引用实体的可复用变量。可在模板中通过 {{ $variable_name }} 使用。这些变量会在你的所有 Ultra Card 之间同步。", + "add_variable": "添加变量", + "add_new_variable": "新增变量", + "variable_name": "变量名称", + "variable_name_placeholder": "my_variable_name", + "variable_usage": "在模板中使用:", + "select_entity": "选择实体", + "select_entity_placeholder": "搜索实体...", + "value_type": "值类型", + "value_type_entity_id": "实体 ID", + "value_type_state": "状态值", + "value_type_attribute": "属性", + "value_type_entity_id_desc": "实体 ID(例如 sensor.temperature)", + "value_type_state_desc": "状态值(例如 23.5)", + "value_type_attribute_desc": "属性值(例如 temperature、friendly_name)", + "attribute_name": "属性名称", + "variable_scope": "变量作用域", + "global": "全局", + "this_card": "本卡片", + "global_hint": "在你的仪表盘上的所有 Ultra Card 中可用。", + "card_hint": "仅在此特定卡片中可用。", + "global_variables": "全局变量", + "card_variables": "仅本卡片", + "clear_all": "全部清除", + "clear_global": "清除全局变量", + "clear_card": "清除卡片变量", + "confirm_delete": "确定要删除此变量吗?", + "confirm_clear_all": "确定要删除全部全局变量吗?此操作无法撤销。", + "confirm_clear_card": "确定要删除所有卡片级变量吗?", + "edit_variable": "编辑变量", + "delete_variable": "删除变量", + "drag_to_reorder": "拖动排序", + "empty_title": "暂无自定义变量", + "empty_description": "添加你的第一个变量即可开始。变量可通过 {{ $variable_name }} 语法在模板中使用。" + }, + "export_import": { + "include_variables": "你有自定义变量。是否将其包含在导出中?", + "import_variables": "此卡片包含自定义变量。是否导入它们?", + "variables_found": "导入中发现 {count} 个自定义变量。" + }, + "variable_mapping": { + "title": "映射缺失变量", + "description": "此卡片使用了你系统中不存在的变量。将它们映射到实体以创建,或跳过并不导入这些变量。", + "skip": "全部跳过", + "create": "创建变量", + "skipped": "将不会创建" + }, + "cloud_sync": { + "title": "云同步", + "description": "使用你的 ultracard.io 账号在所有设备之间同步收藏、颜色和评价。", + "auto_sync": "自动同步", + "auto_sync_desc": "在后台自动同步更改" + }, + "ultra_card_pro": { + "title": "Ultra Card Pro", + "free_banner_title": "Ultra Card Pro", + "free_banner_subtitle": "专业的卡片管理与云备份", + "pro_banner_title": "Ultra Card Pro", + "pro_banner_subtitle": "感谢你成为 Pro 会员!", + "card_name": "卡片名称", + "card_name_desc": "为这张卡片命名,以便在备份中识别它", + "card_name_placeholder": "我的 Ultra Card", + "export_card": "导出卡片", + "import_card": "导入卡片", + "backup_card": "创建备份", + "view_backups": "查看所有备份", + "manual_backup_title": "为备份命名", + "manual_backup_placeholder": "输入备份名称...", + "manual_backup_desc": "创建手动备份,与你的其他所有 Ultra Card 的备份一起存储(总共最多 30 个)", + "backup_created": "备份创建成功!", + "export_success": "卡片配置已导出!", + "import_success": "卡片配置已导入!", + "upgrade_title": "解锁 Pro 功能", + "upgrade_subtitle": "为你的所有卡片提供导出、导入和手动备份功能", + "upgrade_button": "升级到 Pro - $4.99/月", + "features_title": "你将获得", + "features": { + "export": "导出完整的卡片配置", + "import": "导入卡片配置", + "backups": "所有卡片共用 30 个手动备份", + "naming": "为卡片和备份命名", + "support": "优先支持" + }, + "auto_save": "已启用自动保存", + "last_backup": "上次备份:{time}", + "saving": "正在保存备份...", + "saved": "已保存到云端", + "pending": "有未保存的更改" + }, + "fields": { + "card_background_color": "卡片背景色", + "card_background_color_desc": "整张卡片的背景色", + "border_radius": "圆角半径", + "border_radius_desc": "卡片的圆角(单位:像素)。留空则继承 Home Assistant 主题。", + "card_border_color": "边框颜色", + "card_border_color_desc": "卡片的边框颜色。重置即可继承 Home Assistant 主题。", + "card_border_width": "边框宽度", + "card_border_width_desc": "卡片边框的粗细(单位:像素)。留空则继承 Home Assistant 主题。", + "card_padding": "卡片内边距", + "card_padding_desc": "卡片内部的间距", + "card_margin": "卡片外边距", + "card_margin_desc": "卡片外部的间距", + "card_shadow_enabled": "自定义投影", + "card_shadow_enabled_desc": "为卡片启用自定义阴影", + "card_shadow_color": "阴影颜色", + "card_shadow_color_desc": "卡片阴影的颜色", + "card_shadow_horizontal": "水平偏移", + "card_shadow_horizontal_desc": "阴影的水平位置(负值 = 左,正值 = 右)", + "card_shadow_vertical": "垂直偏移", + "card_shadow_vertical_desc": "阴影的垂直位置(负值 = 上,正值 = 下)", + "card_shadow_blur": "模糊半径", + "card_shadow_blur_desc": "阴影的模糊程度", + "card_shadow_spread": "扩散半径", + "card_shadow_spread_desc": "阴影扩展或收缩的幅度", + "unit_px": "px", + "reset_default": "重置为默认值", + "reset_default_value": "重置为默认值({value})" + }, + "tooltips": { + "enter_fullscreen": "进入全屏", + "return_dashboard": "返回仪表盘", + "dashboard": "仪表盘" + }, + "common": { + "left": "左", + "center": "居中", + "right": "右", + "top": "上", + "bottom": "下", + "none": "无", + "state": "状态", + "attribute": "属性", + "attribute_name": "属性名称", + "entity": "实体", + "custom_text": "自定义文本", + "entity_state": "实体状态", + "space_between": "两端对齐", + "space_around": "环绕对齐", + "justify": "铺满对齐", + "stretch": "拉伸", + "baseline": "基线对齐", + "apart": "等距分布", + "add": "添加", + "cancel": "取消", + "save": "保存", + "delete": "删除", + "edit": "编辑", + "reset": "重置", + "error_configure_entity": "配置实体", + "error_entity_not_found": "未找到实体" + }, + "horizontal": { + "layout": { + "title": "布局配置", + "desc": "配置元素在容器内水平排列的方式。" + }, + "alignment": { + "horizontal": "水平对齐", + "horizontal_desc": "选择元素在容器内的水平对齐方式。", + "vertical": "垂直对齐", + "vertical_desc": "选择元素在容器内的垂直对齐方式。" + }, + "wrapping": { + "title": "允许换行", + "desc": "当元素超出容器宽度时,允许其换行到下一行。" + }, + "gap": { + "title": "间距配置", + "between_items": "项目之间的间距", + "desc": "设置水平元素之间的间距(单位:rem)。使用负值可让元素重叠。" + }, + "empty": { + "no_modules": "尚未添加模块", + "add_modules": "在布局构建器中添加模块即可在此看到它们" + } + }, + "vertical": { + "layout": { + "title": "布局配置", + "desc": "配置元素在容器内垂直排列的方式。" + }, + "alignment": { + "vertical": "垂直对齐", + "vertical_desc": "选择元素在容器内的垂直对齐方式。" + }, + "gap": { + "title": "间距配置", + "between_items": "项目之间的间距", + "desc": "设置垂直元素之间的间距(单位:rem)。使用负值可让元素重叠。" + }, + "empty": { + "no_modules": "尚未添加模块", + "add_modules": "在布局构建器中添加模块即可在此看到它们" + } + }, + "tabs_module": { + "orientation": { + "title": "标签页方向", + "desc": "选择标签页的排列方式。", + "horizontal": "水平", + "vertical": "垂直" + }, + "style": { + "title": "标签页样式", + "desc": "选择标签页的视觉样式。", + "type": "样式", + "switch": "开关", + "classic": "经典", + "pills": "胶囊", + "underline": "下划线", + "minimal": "简约" + }, + "alignment": { + "title": "标签页对齐", + "desc": "选择标签页在其容器内的对齐方式。", + "position": "位置" + }, + "behavior": { + "switch_on_hover": "悬停切换", + "switch_on_hover_desc": "鼠标悬停在标签页上时即切换,无需点击。" + }, + "sections": { + "title": "分区", + "desc": "管理标签页分区。拖动可重新排序,点击可编辑标题。", + "add": "添加分区", + "title_placeholder": "分区标题", + "is_default": "默认标签页", + "set_default": "设为默认", + "duplicate": "复制", + "delete": "删除" + }, + "typography": { + "title": "字体排版", + "desc": "配置标签页文字的字体设置。", + "font_size": "字号", + "font_weight": "字重", + "text_transform": "文本转换" + }, + "design": { + "active_title": "活动标签页设计", + "active_desc": "自定义当前所选标签页的外观。", + "active_text_color": "文字颜色", + "active_bg_color": "背景颜色", + "active_border_color": "边框颜色", + "inactive_title": "非活动标签页设计", + "inactive_desc": "自定义未选中标签页的外观。", + "inactive_text_color": "文字颜色", + "inactive_bg_color": "背景颜色", + "inactive_border_color": "边框颜色", + "hover_title": "悬停状态", + "hover_desc": "自定义悬停在未选中标签页上时的外观。", + "hover_text_color": "文字颜色", + "hover_bg_color": "背景颜色", + "tab_styling_title": "标签页样式设置", + "tab_gap": "标签页间距", + "tab_gap_desc": "各个标签页之间的间距(单位:像素)。", + "tab_padding": "标签页内边距", + "tab_padding_desc": "每个标签页内部的内边距(CSS 值,例如“10px 16px”)。", + "tab_border_radius": "标签页圆角半径", + "tab_border_radius_desc": "标签页的圆角半径(CSS 值,例如“8px”或“50%”)。", + "tab_border_width": "标签页边框宽度", + "tab_border_width_desc": "标签页的边框宽度(单位:像素)。", + "content_title": "内容区设计", + "content_desc": "自定义标签页下方/旁侧内容区的外观。", + "content_bg_color": "背景颜色", + "content_padding": "内容区内边距", + "content_padding_desc": "内容区周围的内边距(CSS 值)。", + "content_border_radius": "内容区圆角半径", + "content_border_radius_desc": "内容区的圆角半径(CSS 值)。", + "content_border_color": "边框颜色", + "content_border_width": "内容区边框宽度", + "content_border_width_desc": "内容区的边框宽度(单位:像素)。", + "animation_title": "动画", + "transition_duration": "过渡时长", + "transition_duration_desc": "标签页过渡所需的时间(CSS 值,例如“0.2s”)。", + "general_title": "通用容器设计" + }, + "preview": { + "no_sections": "暂无分区", + "no_sections_desc": "请在“常规”标签页中添加分区以开始使用。", + "no_modules": "尚未添加模块。请在“布局”标签页中为此分区添加模块。" + } + }, + "timer": { + "basic": { + "title": "基本", + "desc": "计时器的标题与图标。" + }, + "title": "标题", + "title_desc": "可选标签(例如 Kitchen、Door close)", + "icon": "图标", + "icon_desc": "计时器的图标", + "duration": { + "title": "时长", + "desc": "按下“开始”时的默认时长。" + }, + "duration_seconds": "默认时长(秒)", + "duration_seconds_desc": "例如 300 = 5 分钟", + "on_expire": { + "title": "计时结束时", + "desc": "倒计时归零时执行的操作(例如关灯、关闭窗帘)。" + }, + "style": { + "title": "显示样式", + "desc": "计时器的显示方式", + "circle": "圆形", + "progress_bar": "进度条", + "digital": "数字", + "background_fill": "背景填充" + }, + "advanced": { + "title": "高级" + }, + "timer_entity": "计时器实体", + "timer_entity_desc": "可选的 Home Assistant 计时器实体,用于同步", + "show_snooze_dismiss": "计时结束时显示“稍后提醒”/“关闭”", + "show_snooze_dismiss_desc": "计时结束时,显示“稍后提醒”(重新开始)和“关闭”按钮。", + "snooze_seconds": "稍后提醒时长(秒)", + "snooze_seconds_desc": "点击“稍后提醒”时,按此秒数重新开始倒计时", + "default_title": "计时器", + "times_up": "时间到!", + "snooze": "稍后提醒", + "dismiss": "关闭", + "start": "开始", + "pause": "暂停", + "resume": "继续", + "cancel": "取消", + "paused": "已暂停" + }, + "toggle": { + "display_settings": "显示设置", + "title": "标题", + "title_desc": "显示在切换开关上方的标题", + "show_title": "显示标题", + "show_title_desc": "在切换开关上方显示标题", + "visual_style": "视觉样式", + "visual_style_desc": "切换开关的显示方式", + "orientation": "方向", + "orientation_desc": "切换选项的排列方向", + "alignment": "对齐方式", + "alignment_desc": "切换开关在其容器内的对齐方式", + "size": "大小", + "size_desc": "切换开关控件的大小", + "spacing": "间距", + "spacing_desc": "切换选项之间的间距(单位:像素)", + "entity_tracking": "实体跟踪", + "entity_tracking_desc": "可选:跟踪实体状态以自动选择匹配的切换选项", + "tracking_entity": "跟踪实体", + "tracking_entity_desc": "设置后,切换开关将自动选择与实体状态匹配的选项", + "icon_settings": "图标设置", + "show_icons": "显示图标", + "show_icons_desc": "在切换选项上显示图标", + "icon_size": "图标大小", + "icon_size_desc": "图标大小(单位:像素)", + "icon_position": "图标位置", + "icon_position_desc": "图标相对于标签的位置", + "default_colors": "默认颜色", + "default_colors_desc": "切换选项的默认颜色(可按每个选项单独覆盖)", + "default_background_color": "背景颜色", + "default_text_color": "文字颜色", + "default_active_background_color": "活动态背景色", + "default_active_text_color": "活动态文字颜色", + "toggle_points": "切换选项", + "add_toggle_point": "添加切换选项", + "point_label": "标签", + "point_label_desc": "此切换选项显示的文本", + "point_icon": "图标", + "point_icon_desc": "此切换选项显示的图标", + "point_auto_select": "自动选择条件", + "point_auto_select_desc": "根据实体状态或模板条件自动选择此切换选项", + "point_match_mode": "匹配模式", + "point_match_mode_desc": "选择确定此切换选项何时处于活动状态的方式", + "match_mode_entity": "实体状态", + "match_mode_template": "模板(高级)", + "point_match_template": "匹配模板", + "point_match_template_desc": "当此选项应处于活动状态时,计算结果为真的 Jinja2 模板", + "unified_match_desc": "当此选项应处于活动状态时,返回包含 \"match\": true 的 JSON,或直接返回 true/false 字符串。", + "template_examples": "示例", + "template_example_range": "范围", + "template_example_brightness": "亮度", + "template_example_multi": "多个条件", + "point_match_entity": "匹配实体", + "point_match_entity_desc": "要匹配的实体(可选)", + "point_match_state": "匹配状态", + "point_match_state_desc": "要匹配的状态值(例如 on、off、heat)", + "point_colors": "颜色", + "point_background_color": "背景颜色", + "point_text_color": "文字颜色", + "point_active_background_color": "活动态背景色", + "point_active_text_color": "活动态文字颜色", + "point_action": "动作", + "point_action_desc": "配置激活此切换选项时执行的操作", + "template_cheatsheet": "模板速查表" + }, + "popup": { + "trigger": { + "section_title": "触发配置", + "section_desc": "配置弹窗的打开触发方式", + "type": "触发类型", + "type_desc": "选择弹窗的打开方式", + "button": "按钮", + "image": "图片", + "icon": "触发图标", + "page_load": "页面加载", + "logic": "逻辑条件", + "button_config": "按钮配置", + "button_text": "按钮文字", + "button_text_desc": "触发按钮上显示的文字", + "button_icon": "按钮图标", + "button_icon_desc": "触发按钮上显示的图标", + "image_config": "图片配置", + "image_url": "图片 URL", + "image_url_desc": "用作触发元素的图片 URL", + "icon_config": "图标配置", + "icon_desc": "用作触发元素的图标", + "logic_config": "逻辑配置", + "button_full_width": "全宽", + "button_full_width_desc": "让按钮占据容器的整个宽度", + "image_type": "图片类型", + "image_type_desc": "选择为触发元素提供图片的方式", + "image_full_width": "全宽", + "image_full_width_desc": "让图片占据容器的整个宽度", + "no_image": "未配置图片", + "alignment_section": "触发元素对齐", + "alignment_desc": "选择触发元素的对齐方式", + "alignment": "对齐方式", + "alignment_help": "将触发元素向左、居中或向右对齐" + }, + "title": { + "section_title": "标题配置", + "section_desc": "配置是否在弹窗中显示标题栏", + "show": "显示标题", + "show_desc": "在弹窗顶部显示标题栏", + "configuration": "标题配置", + "mode": "标题模式", + "mode_desc": "选择使用自定义文本还是实体状态作为标题", + "text": "标题文本", + "text_desc": "输入要在弹窗标题中显示的自定义文本", + "entity": "标题实体", + "entity_desc": "选择一个实体,其状态将用作标题", + "show_entity_name": "显示实体名称", + "show_entity_name_desc": "在状态值前显示实体的友好名称" + }, + "layout": { + "section_title": "布局设置", + "section_desc": "配置弹窗在屏幕上的显示方式", + "type": "布局", + "type_desc": "选择弹窗的布局样式", + "default": "默认", + "full_screen": "全屏", + "left_panel": "左侧面板", + "right_panel": "右侧面板", + "top_panel": "顶部面板", + "bottom_panel": "底部面板" + }, + "animation": { + "type": "动画", + "type_desc": "选择弹窗打开时的动画样式", + "fade": "淡入淡出", + "scale_up": "放大", + "scale_down": "缩小", + "slide_top": "从顶部滑入", + "slide_left": "从左侧滑入", + "slide_right": "从右侧滑入", + "slide_bottom": "从底部滑入" + }, + "popup_width": "弹窗宽度", + "popup_width_desc": "弹窗的宽度(例如 600px、100%、14rem、10vw)", + "popup_padding": "弹窗内边距", + "popup_padding_desc": "弹窗内部的内边距(例如 5%、20px、1rem、2vw)", + "popup_border_radius": "弹窗圆角半径", + "popup_border_radius_desc": "弹窗的圆角半径(例如 5px、50%、0.3em、12px 0)", + "close_button": { + "section_title": "关闭按钮", + "section_desc": "配置关闭按钮的位置和行为", + "position": "关闭按钮位置", + "position_desc": "选择关闭按钮的显示位置", + "inside": "弹窗内部", + "none": "无" + }, + "auto_close_timer": { + "section_title": "自动关闭计时器", + "section_desc": "配置在指定时间后自动关闭弹窗", + "enabled": "启用自动关闭计时器", + "enabled_desc": "在指定时间后自动关闭弹窗", + "configuration": "计时器配置", + "seconds": "关闭倒计时(秒)", + "seconds_desc": "弹窗自动关闭前的秒数" + }, + "state": { + "section_title": "默认状态", + "section_desc": "配置卡片加载时此弹窗是默认打开还是关闭", + "default_open": "默认打开", + "default_open_desc": "启用后,卡片首次加载时弹窗将处于打开状态" + }, + "trigger_logic": { + "section_title": "触发逻辑", + "section_desc": "根据条件控制此弹窗何时自动打开", + "note_title": "重要提示", + "note_message": "这些触发条件控制弹窗何时打开。这与“逻辑”标签页不同,后者控制此模块是否在卡片上显示。", + "mode_title": "弹窗状态控制", + "mode_desc": "选择弹窗状态的控制方式", + "mode_manual": "手动", + "mode_always": "始终打开", + "mode_every": "满足所有条件时打开", + "mode_any": "满足任一条件时打开", + "auto_close": "自动关闭", + "auto_close_desc": "条件变为不满足时自动关闭弹窗", + "conditions": "条件", + "add_condition": "添加条件", + "no_conditions": "点击下方“添加条件”以创建你的第一个触发条件。在添加至少一个条件之前,弹窗将保持关闭状态。", + "no_conditions_title": "未配置条件", + "helper_tip": "要基于辅助元素打开弹窗,请添加实体状态条件,选择你的辅助实体,将运算符设为=,并输入on作为值。", + "always_note": "弹窗将始终保持打开。用户仍可手动关闭它,但它会自动重新打开。", + "manual_note": "弹窗状态由用户交互手动控制。使用常规标签页中的默认状态设置,选择卡片加载时弹窗是打开还是关闭。", + "manual_mode_title": "手动模式", + "custom_name": "自定义名称", + "custom_name_desc": "可选:为此条件指定一个自定义名称", + "condition_type": "条件类型", + "type_entity_state": "实体状态", + "type_entity_attribute": "实体属性", + "type_time": "时间范围", + "type_template": "模板", + "entity": "实体", + "operator": "运算符", + "value": "值", + "attribute": "属性", + "time_from": "起始时间", + "time_to": "结束时间", + "template": "模板", + "template_desc": "用于判断是否打开弹窗的 Jinja2 模板,其结果应为 true/false" + }, + "design": { + "trigger_button": "触发按钮样式", + "trigger_button_desc": "自定义触发按钮的外观", + "title": "标题样式", + "title_desc": "自定义弹窗标题栏的外观", + "title_bg": "标题背景", + "title_text": "标题文本", + "content": "弹窗内容样式", + "content_desc": "自定义弹窗内容区的外观", + "popup_bg": "弹窗背景", + "popup_text": "弹窗文字", + "overlay": "背景遮罩", + "overlay_desc": "自定义弹窗背后的背景遮罩", + "overlay_bg": "背景遮罩", + "close_button": "关闭按钮样式", + "close_button_desc": "自定义关闭按钮的外观", + "close_button_color": "关闭按钮", + "close_button_size": "关闭按钮大小", + "close_button_size_desc": "关闭按钮图标的大小(像素)", + "close_button_icon": "关闭按钮图标", + "close_button_icon_desc": "关闭按钮上显示的图标", + "close_button_offset_x": "水平偏移", + "close_button_offset_x_desc": "水平位置偏移(例如 10px、1rem)", + "close_button_offset_y": "垂直偏移", + "close_button_offset_y_desc": "垂直位置偏移(例如 10px、1rem)", + "general_title": "通用触发条件设计" + }, + "preview": { + "no_modules": "尚未添加模块。请在“布局”标签页中向此弹窗添加模块。" + }, + "edit_page_notice": { + "title": "仅预览", + "message": "此弹窗模块预览需要进入编辑区域后才能看到。" + }, + "edit_overlay": { + "message": "编辑此模块以查看预览" + } + }, + "layout": { + "live_preview": "实时预览", + "toggle_preview": "切换预览", + "pin_preview": "固定预览(保持可见)", + "unpin_preview": "取消固定预览(随内容滚动)", + "drag_to_move_module": "拖动以移动模块", + "edit_module": "编辑模块", + "duplicate_module": "复制模块", + "delete_module": "删除模块", + "drag_to_move_layout": "拖动以移动布局模块", + "horizontal_layout": "水平布局", + "vertical_layout": "垂直布局", + "accordion_module": "手风琴", + "popup_module": "弹窗", + "add_module_to_layout": "添加模块到布局", + "layout_settings": "布局设置", + "duplicate_layout": "复制布局", + "delete_layout": "删除布局", + "click_to_add_module": "点击添加模块", + "drop_modules_here": "将模块拖放到此处", + "drag_to_reorder": "拖动排序", + "edit_child_module": "编辑子模块", + "duplicate_child_module": "复制子模块", + "delete_child_module": "删除子模块", + "module_settings_title": "模块设置", + "child_module_settings_title": "子模块设置", + "general_tab": "常规", + "actions_tab": "动作", + "other_tab": "其他", + "logic_tab": "逻辑", + "design_tab": "设计", + "drag_to_resize": "拖动以调整大小", + "hidden_by_logic": "被逻辑隐藏", + "add_row": "添加行", + "add_row_tooltip": "向布局添加新行", + "collapse_all_rows_tooltip": "折叠所有行", + "expand_all_rows_tooltip": "展开所有行", + "entity_replace_tooltip": "在此布局中查找并替换实体 ID", + "entity_replace_pick_two": "请选择两个不同的实体。", + "entity_replace_none": "此布局中没有对 “{id}” 的引用。", + "entity_replace_invalid": "替换失败:布局变为无效。", + "entity_replace_done": "已在布局中替换 {n} 处({from} → {to})。", + "undo": "撤销", + "undo_tooltip": "撤销上一次更改(Ctrl+Z)", + "redo": "重做", + "redo_tooltip": "重做上一次撤销的更改(Ctrl+Y)", + "keyboard_shortcuts": "键盘快捷键", + "keyboard_exit_fullscreen": "退出全屏", + "getting_started": "开始使用", + "getting_started_preset": "从预设开始", + "getting_started_module": "添加你的第一个模块", + "getting_started_hub": "探索 Hub", + "getting_started_dismiss": "不再显示", + "health_tooltip": "卡片健康度", + "health_badge": "{count} 个问题", + "move_up": "上移", + "move_down": "下移", + "moved_up": "已上移", + "moved_down": "已下移", + "export_card": "导出", + "export_card_tooltip": "将整个卡片配置导出到剪贴板", + "import_card": "导入", + "import_card_tooltip": "从剪贴板导入卡片配置", + "card_exporting": "正在导出卡片...", + "card_exported": "卡片已导出到剪贴板", + "card_export_failed": "卡片导出失败", + "card_imported": "卡片导入成功", + "card_import_failed": "卡片导入失败", + "no_card_to_import": "剪贴板中未找到有效的卡片数据", + "confirm_import_card": "这将替换你的整个卡片配置。确定吗?", + "row_settings": "行设置", + "column_settings": "列设置", + "row_background_color": "行背景颜色", + "column_gap": "列间距(px)", + "vertical_alignment": "垂直对齐", + "horizontal_alignment": "水平对齐", + "column_preview": "列预览", + "card_preview": "卡片预览", + "resize_preview": "拖动以调整预览大小", + "modules_count": "{count} 个模块", + "alignment_top": "上", + "alignment_center": "居中", + "alignment_bottom": "下", + "alignment_stretch": "拉伸", + "alignment_left": "左", + "alignment_right": "右", + "copy_module": "复制模块", + "paste_module": "粘贴", + "more_actions": "更多操作", + "module_copied": "模块已复制到剪贴板", + "module_pasted": "模块粘贴成功", + "module_copy_failed": "模块复制失败", + "no_module_to_paste": "没有可粘贴的模块", + "paste_failed": "模块粘贴失败", + "add_module": "添加模块", + "add_module_auto_column": "添加模块(将自动创建列)", + "copy_column": "复制列", + "copy_column_first": "请先复制一列", + "paste_column": "粘贴列", + "column_copied": "列已复制到剪贴板", + "column_pasted": "列粘贴成功", + "column_copy_failed": "列复制失败", + "no_column_to_paste": "没有可粘贴的列", + "column_paste_failed": "列粘贴失败", + "max_columns_reached": "最多允许 6 列", + "unified_visibility": { + "section_title": "统一可见性模板", + "section_desc": "返回带有布尔值 “visible” 键的 JSON(或使用 active / is_active,或纯 true/false 字符串)。启用后,它会在下方显示条件之外额外执行。使用与模块模板相同的 $variables。", + "toggle": "模板模式", + "cheatsheet_title": "模板速查表", + "placeholder": "{ \"visible\": {{ states('input_boolean.show_row') == 'on' }} }" + } + }, + "entity_mapper": { + "title": "映射实体", + "detected_entities": "检测到 {count} 个实体", + "original_entity": "原始实体", + "map_to": "映射到", + "keep_original": "保留原样", + "auto_map": "自动映射相似项", + "keep_unmapped": "保留所有未映射项", + "clear_all": "全部清除", + "apply": "应用预设", + "cancel": "取消", + "summary": "共 {total} 项,已映射 {mapped} 项,未映射 {unmapped} 项", + "suggestions": "建议", + "no_entities": "未找到实体" + }, + "layout_logic": { + "display_title": "显示此元素", + "display_desc": "控制此元素的显示时机。选择“总是”可保持其可见。选择“满足以下所有条件时”或“满足以下任一条件时”,则仅在下方添加的条件计算结果为真时才显示。", + "always": "总是", + "every": "满足以下所有条件时", + "any": "满足以下任一条件时", + "conditions": "条件", + "add_condition": "添加条件", + "no_conditions": "尚未添加条件。点击“添加条件”开始。", + "condition_types": { + "entity_state": "实体状态", + "entity_attribute": "实体属性", + "time": "时间范围", + "template": "模板" + }, + "condition_fields": { + "entity": "实体", + "operator": "运算符", + "value": "值", + "attribute": "属性", + "time_from": "起始时间", + "time_to": "结束时间", + "template": "模板" + }, + "condition_header": "条件", + "custom_name": "自定义名称", + "custom_name_desc": "可选:为此条件指定自定义名称,便于识别", + "condition_type": "条件类型" + }, + "logic": { + "hide_on_devices": "在设备上隐藏", + "hide_on_devices_desc": "在特定屏幕尺寸下隐藏此元素。可用于为不同设备创建不同布局。", + "user_visibility": { + "title": "对用户可见", + "desc": "针对特定 Home Assistant 用户显示或隐藏此元素。与 Lovelace 卡片的“可见性 → 用户”思路相同。", + "mode": "谁可以看到此内容", + "everyone": "所有人", + "show_only": "仅对以下用户显示", + "hide_for": "对以下用户隐藏", + "you": "(你)", + "no_users": "暂无可用用户。请在下方输入用户 ID。", + "manual_id": "用户 ID", + "manual_id_desc": "无法加载完整用户列表(可能需要管理员权限)。请按 ID 添加其他用户:", + "add": "添加", + "self_hidden_warning": "以该用户登录时,你将不会在实时仪表盘上看到它。卡片设置仍会保持编辑器预览可见,以便你继续编辑。" + } + }, + "hover_effects": { + "title": "悬停效果", + "description": "配置鼠标悬停在此模块、行或列上时出现的视觉效果。", + "effect": "悬停效果", + "effect_desc": "选择悬停时应用的视觉效果", + "effects": { + "none": "无", + "highlight": "高亮", + "outline": "描边", + "grow": "放大", + "shrink": "缩小", + "pulse": "脉冲", + "bounce": "弹跳", + "float": "浮动", + "glow": "发光", + "shadow": "阴影", + "rotate": "旋转", + "skew": "倾斜", + "wobble": "摇摆", + "buzz": "抖动", + "fade": "淡入淡出" + } + }, + "about": { + "developed_by": "开发者", + "desc1": "一款面向 Home Assistant 的强大模块化卡片构建工具", + "desc2": "通过专业的页面构建器界面创建自定义布局", + "desc3": "具备条件逻辑与专业设计工具的模块化布局系统", + "github_repo": "查看我们的 GitHub", + "join_discord": "加入我们的 Discord", + "support_title": "支持 Ultra Card", + "support_desc": "你慷慨的打赏将为这张卡片带来更多精彩功能的开发动力!没有像你这样的用户支持,持续创新将无从谈起。", + "leave_tip": "打赏支持(PAYPAL)", + "version": "版本" + }, + "actions": { + "title": "链接配置", + "description": "配置用户与此元素交互时发生的操作。可为点击、长按和双击手势选择不同的动作。", + "tap_action": "点击动作", + "tap_action_desc": "点击/单击模块时执行的动作", + "hold_action": "长按动作", + "hold_action_desc": "按住模块时执行的动作", + "double_tap_action": "双击动作", + "double_tap_action_desc": "双击模块时执行的动作", + "tap_behavior": "点击行为", + "tap_behavior_desc": "元素被点击/单击时执行的动作。", + "hold_behavior": "长按行为", + "hold_behavior_desc": "元素被按下并按住时执行的动作。", + "haptic_feedback": "触感反馈", + "haptic_feedback_desc": "在支持的设备上按下按钮时提供触感反馈", + "double_tap_behavior": "双击行为", + "double_tap_behavior_desc": "元素被双击时执行的动作。", + "more_info_config": "更多信息配置", + "toggle_config": "切换配置", + "entity": "实体", + "entity_more_info_desc": "选择要显示更多信息的实体", + "entity_toggle_desc": "选择要开关的实体" + }, + "icon": { + "entity_config": { + "title": "实体配置", + "desc": "配置实体及激活/未激活状态" + }, + "entity": "实体", + "entity_desc": "选择此图标所代表的实体", + "inactive_state": "未激活状态", + "inactive_state_desc": "视为“未激活”的状态值(留空则使用实际实体状态)", + "active_state": "激活状态", + "active_state_desc": "视为“激活”的状态值(留空则使用实际实体状态)", + "icon_section": { + "title": "图标配置", + "show_icon": "显示图标" + }, + "inactive_icon": "未激活图标", + "inactive_icon_desc": "未激活时显示的图标", + "inactive_icon_config": "未激活图标配置", + "inactive_icon_config_desc": "配置未激活图标设置", + "active_icon": "激活图标", + "active_icon_desc": "激活时显示的图标", + "icon_color_inactive": "未激活时的颜色", + "icon_color_active": "激活时的颜色", + "background_shape_inactive": "未激活时的背景形状", + "background_shape_active": "激活时的背景形状", + "background_color_inactive": "未激活时的背景颜色", + "background_color_active": "激活时的背景颜色", + "icon_size_inactive": "未激活时的图标大小", + "icon_size_active": "激活时的图标大小", + "inactive_icon_color": "未激活图标颜色", + "active_icon_color": "激活图标颜色", + "inactive_icon_background": "未激活图标背景", + "active_icon_background": "激活图标背景", + "inactive_icon_background_color": "未激活图标背景颜色", + "active_icon_background_color": "激活图标背景颜色", + "name_section": { + "title": "名称配置", + "show_name": "显示名称" + }, + "inactive_name": "未激活名称", + "inactive_name_desc": "未激活时的自定义名称", + "inactive_name_config": "未激活名称配置", + "inactive_name_config_desc": "配置未激活名称设置", + "active_name": "激活名称", + "active_name_desc": "激活时的自定义名称", + "custom_inactive_name": "自定义未激活名称", + "custom_inactive_name_desc": "未激活时覆盖实体名称(留空则使用实体名称)", + "custom_active_name": "自定义激活名称", + "custom_active_name_desc": "激活时覆盖实体名称(留空则使用实体名称)", + "name_color_inactive": "未激活时的名称颜色", + "name_color_active": "激活时的名称颜色", + "name_size_inactive": "未激活时的名称文字大小", + "name_size_active": "激活时的名称文字大小", + "inactive_name_color": "未激活名称颜色", + "active_name_color": "激活名称颜色", + "state_section": { + "title": "状态配置", + "show_state": "显示状态" + }, + "inactive_state_color": "未激活状态颜色", + "active_state_color": "激活状态颜色", + "inactive_state_text": "未激活状态文字", + "active_state_text": "激活状态文字", + "inactive_state_config": "未激活状态配置", + "inactive_state_config_desc": "配置未激活状态设置", + "custom_inactive_state": "自定义未激活状态", + "custom_inactive_state_desc": "未激活时的自定义文字(留空则使用实际状态)", + "custom_active_state": "自定义激活状态", + "custom_active_state_desc": "激活时的自定义文字(留空则使用实际状态)", + "state_color_inactive": "未激活时的状态颜色", + "state_color_active": "激活时的状态颜色", + "state_size_inactive": "未激活时的状态文字大小", + "state_size_active": "激活时的状态文字大小", + "background_section": { + "title": "未激活背景", + "desc": "配置未激活背景设置" + }, + "template_section": { + "title": "高级模板模式", + "desc": "使用 Jinja2 模板实现高级图标控制。模板可控制可见性(true/false 显示/隐藏图标)并自定义状态文字。为激活状态返回自定义文字,为未激活状态返回实际实体状态。" + }, + "template_mode": "高级模板模式", + "template": "模板", + "use_state_color_inactive": "使用状态颜色", + "use_state_color_inactive_desc": "使用实体状态颜色(RGB 属性)作为未激活图标颜色", + "hover_effect": "悬停效果", + "hover_effect_desc": "鼠标悬停时启用悬停动画", + "ignore_entity_state": "忽略实体状态配置", + "ignore_entity_state_desc": "启用后,上方的实体状态设置将被忽略,由模板控制动画的激活/未激活状态", + "animation_section": { + "title": "图标动画", + "desc": "配置激活和未激活状态的动画" + }, + "active_animation": "激活动画", + "active_animation_desc": "图标激活时的动画", + "inactive_animation": "未激活动画", + "inactive_animation_desc": "图标未激活时的动画", + "animation_none": "无", + "animation_pulse": "脉冲", + "animation_spin": "旋转", + "animation_bounce": "弹跳", + "animation_flash": "闪烁", + "animation_shake": "摇晃", + "animation_vibrate": "振动", + "animation_rotate_left": "向左旋转", + "animation_rotate_right": "向右旋转", + "animation_fade": "淡入淡出", + "animation_scale": "缩放", + "animation_tada": "喝彩", + "error_no_icons": "添加图标", + "error_no_icons_desc": "在“常规”标签页中配置图标", + "error_icons_need_entities": "图标需要实体" + }, + "text": { + "content_section": { + "title": "内容配置", + "desc": "配置此模块的文本内容和基本设置。" + }, + "text_content": "文本内容", + "text_content_desc": "输入要在此模块中显示的文本内容。", + "icon_section": { + "title": "图标配置", + "desc": "选择要显示在文本内容旁的图标。" + }, + "icon": "图标", + "icon_desc": "选择要显示在文本旁的图标。留空则不显示图标。", + "icon_position": "图标位置", + "icon_position_desc": "选择图标相对于文本的位置。", + "before_text": "文本之前", + "after_text": "文本之后", + "template_mode": "模板模式", + "template_mode_desc": "使用 Home Assistant 模板语法渲染文本", + "value_template": "值模板", + "value_template_desc": "使用 Jinja2 语法渲染文本的模板", + "examples_title": "常见示例:", + "example_basic": "基本值", + "example_percent": "带百分比", + "color_section": { + "title": "颜色配置", + "desc": "配置此模块的文本和图标颜色。" + }, + "text_color": "文字颜色", + "text_color_desc": "选择文本内容的颜色。", + "icon_color": "图标颜色", + "icon_color_desc": "选择图标的颜色。", + "hidden_no_link": "隐藏(无链接)", + "rich_text_content_section": { + "title": "富文本内容", + "desc": "使用工具栏为文本设置粗体、斜体、颜色、链接等格式。" + }, + "error_no_content": "输入文本内容", + "error_no_content_desc": "在“常规”标签页中添加文本", + "error_no_template": "配置模板", + "error_no_template_desc": "在“常规”标签页中输入模板代码" + }, + "markdown": { + "content": { + "title": "Markdown 内容", + "label": "内容", + "desc": "输入你的 markdown 内容,支持完整格式" + }, + "features": { + "title": "Markdown 功能" + }, + "enable_html": "启用 HTML", + "enable_html_desc": "允许在 markdown 内容中使用 HTML 标签", + "enable_tables": "启用表格", + "enable_tables_desc": "支持 markdown 表格语法", + "code_highlighting": "代码高亮", + "code_highlighting_desc": "代码块语法高亮", + "error_no_content": "添加 Markdown 内容", + "error_no_content_desc": "在“常规”标签页中输入 markdown 内容" + }, + "bar": { + "bar_settings": { + "title": "进度条设置", + "desc": "配置进度条百分比的计算与显示方式。" + }, + "perc_type": { + "entity": "实体(0-100)", + "attribute": "实体属性", + "difference": "差值", + "template": "模板", + "time_progress": "时间进度(实时)", + "range": "区间(起始到结束)" + }, + "percentage_type": { + "title": "百分比类型" + }, + "time_progress_config": { + "title": "时间进度配置", + "desc": "配置两个时间戳实体之间的实时进度。在浏览器中平滑更新,不会增加后端负载。", + "start_entity": "开始时间戳实体", + "end_entity": "结束时间戳实体", + "direction": "进度方向", + "direction_desc": "正向显示从开始到当前的已用时间。反向显示从当前到结束的剩余时间。", + "update_interval": "更新间隔(毫秒)", + "update_interval_desc": "进度条的更新间隔(毫秒)。默认:1000(1 秒)。数值越小越平滑,但 CPU 占用越高。" + }, + "time_progress": { + "forward": "正向(已用)", + "backward": "反向(剩余)" + }, + "range_config": { + "title": "区间配置", + "desc": "配置区间可视化的起始值和结束值。", + "start_entity": "区间起始实体", + "start_attribute": "起始属性(可选)", + "start_attribute_desc": "如果值位于属性中,请在此输入属性名称。", + "end_entity": "区间结束实体", + "end_attribute": "结束属性(可选)", + "end_attribute_desc": "如果值位于属性中,请在此输入属性名称。", + "current_entity": "当前值实体", + "current_color": "标记颜色" + }, + "range": { + "title": "值范围(最小/最大)", + "min": "最小值", + "max": "最大值", + "auto": "自动(0)", + "auto_total": "自动(总计实体)" + }, + "attribute_section": { + "title": "实体属性配置", + "desc": "配置实体属性设置" + }, + "attribute_entity": "属性实体", + "attribute_entity_desc": "选择包含百分比值属性的实体", + "attribute_name": "属性名称", + "attribute_name_desc": "输入包含百分比值的属性名称(例如 “battery_level”)", + "diff_section": { + "title": "差值计算配置", + "desc": "配置差值计算设置" + }, + "current_entity": "当前值实体", + "current_entity_desc": "表示当前/已使用量的实体(例如已用燃油、已消耗电量)", + "total_entity": "总值实体", + "total_entity_desc": "表示总量/最大量的实体(例如油箱容量、电池容量)", + "template_section": { + "title": "模板配置", + "desc": "配置模板设置" + }, + "percentage_template": "百分比模板", + "percentage_template_desc": "输入一个返回 0-100 之间数字的 Jinja2 模板作为百分比。示例:{{ (states('sensor.battery_level') | float) * 100 }}", + "attr_config": { + "title": "实体属性配置", + "desc": "配置实体属性设置", + "attribute_entity": "属性实体", + "attribute_entity_desc": "选择包含百分比值属性的实体", + "attribute_name": "属性名称", + "attribute_name_desc": "输入包含百分比值的属性名称(例如 “battery_level”)" + }, + "diff_config": { + "title": "差值计算配置", + "desc": "配置差值计算设置", + "current_entity": "当前值实体", + "current_entity_desc": "表示当前/已使用量的实体(例如已用燃油、已消耗电量)", + "total_entity": "总值实体", + "total_entity_desc": "表示总量/最大量的实体(例如油箱容量、电池容量)" + }, + "template_config": { + "title": "模板配置", + "desc": "配置模板设置", + "percentage_template": "百分比模板", + "percentage_template_desc": "输入一个返回 0-100 之间数字的 Jinja2 模板作为百分比。示例:{{ (states('sensor.battery_level') | float) * 100 }}" + }, + "entity": { + "title": "进度条百分比实体", + "desc_present": "为进度条提供百分比值的实体。", + "desc_empty": "选择提供百分比值(0-100)的实体。电量传感器非常适合进度条。", + "no_entity_warning": "未选择实体 - 请选择数值在 0-100 之间的传感器" + }, + "limit_entity": { + "title": "限制值实体(可选)", + "desc": "可选:在进度条上添加一条垂直指示线(例如电动车电池的充电上限)。" + }, + "appearance": { + "title": "进度条外观", + "direction": "填充方向", + "direction_desc": "选择数值增加时进度条的填充方向。", + "left_to_right": "从左到右", + "right_to_left": "从右到左", + "height": "进度条高度", + "height_desc": "以像素为单位调整进度条的粗细。", + "border_radius": "圆角半径", + "border_radius_desc": "控制进度条的圆角。", + "style": "进度条样式", + "style_desc": "选择进度条的视觉样式。", + "style_flat": "扁平(默认)", + "style_glossy": "高光", + "style_embossed": "浮雕", + "style_inset": "内凹", + "style_gradient": "渐变叠加", + "style_neon": "霓虹光晕", + "style_outline": "描边", + "style_glass": "玻璃", + "style_metallic": "金属", + "style_neumorphic": "新拟态", + "style_dashed": "虚线", + "style_dots": "圆点", + "width": "进度条宽度", + "width_desc": "以容器百分比设置进度条宽度。", + "alignment": "进度条对齐方式", + "alignment_desc": "选择进度条宽度小于 100% 时的对齐方式。" + }, + "labels": { + "alignment": "标签对齐方式", + "alignment_desc": "控制左右标签的位置。" + }, + "percentage": { + "title": "百分比文本显示", + "desc": "控制直接显示在进度条上的百分比数值的可见性与外观。这些数字可以直观地指示当前水平。", + "text_size": "文字大小", + "text_size_desc": "调整进度条上百分比文字的大小。", + "text_alignment": "百分比文本对齐方式" + }, + "text_display": { + "title": "文本显示", + "desc": "控制直接显示在进度条上的文本数值的可见性与外观。在差值和模板模式下,你可以选择显示原始实体值而不是百分比。", + "show_value": "显示数值而非百分比", + "show_value_desc": "启用后显示实际实体值而非百分比。适合显示原始传感器数值,例如用 “45 kWh” 代替 “75%”。", + "text_size": "文字大小", + "text_size_desc": "调整进度条上显示的文字大小。", + "text_alignment": "文本对齐方式" + }, + "left": { + "title": "左侧", + "desc": "配置进度条左侧显示的标题和实体值。适合显示“续航”或“电量”等标签及其对应数值。", + "title_size": "标题大小", + "value_size": "数值大小", + "template_mode": "模板模式", + "template_desc": "使用模板格式化显示的值。模板使用 Home Assistant 的 Jinja2 语法。", + "value_template": "值模板", + "value_template_desc": "使用 Jinja2 语法格式化左侧数值的模板", + "enable_toggle": "启用上方的开关以配置左侧设置" + }, + "right": { + "title": "右侧", + "desc": "配置进度条右侧显示的标题和实体值。适合放置“充满剩余时间”或次要测量值等补充信息。", + "title_size": "标题大小", + "value_size": "数值大小", + "template_mode": "模板模式", + "template_desc": "使用模板格式化显示的值。模板使用 Home Assistant 的 Jinja2 语法。", + "value_template": "值模板", + "value_template_desc": "使用 Jinja2 语法格式化右侧数值的模板", + "enable_toggle": "启用上方的开关以配置右侧设置" + }, + "colors": { + "title": "颜色", + "bar_color": "进度条颜色", + "background_color": "背景颜色", + "border_color": "边框颜色", + "limit_indicator": "限制指示器", + "percentage_text": "百分比文本", + "text_color": "文字颜色", + "text_color_desc": "选择进度条上显示文本的颜色。", + "dot_color": "圆点颜色", + "left_side": "左侧颜色", + "right_side": "右侧颜色", + "title_color": "标题颜色", + "value_color": "数值颜色" + }, + "minimal": { + "icon_config": "极简样式图标", + "icon_enabled": "启用图标", + "icon_enabled_desc": "在极简进度条指示器上显示图标", + "icon": "图标", + "icon_desc": "选择要显示的图标(例如 mdi:battery)", + "icon_mode": "显示模式", + "icon_mode_desc": "图标的显示方式", + "mode_dot_only": "仅圆点", + "mode_icon_only": "仅图标", + "mode_icon_in_dot": "圆点内图标", + "icon_size_auto": "自动缩放图标", + "icon_size_auto_desc": "图标随进度条高度自动缩放", + "icon_size": "图标大小", + "icon_size_desc": "自定义图标大小(像素)", + "use_dot_color": "使用圆点颜色", + "use_dot_color_desc": "图标使用圆点颜色(与渐变一致)", + "icon_color": "图标颜色", + "icon_color_desc": "图标的自定义颜色", + "enable_toggle": "启用上方的切换开关以配置图标设置" + }, + "gradient": { + "title": "渐变模式", + "desc": "为进度条填充应用颜色渐变。启用后,可选择渐变的显示方式,并在下方自定义色标。", + "full": "完整", + "cropped": "裁剪", + "value_based": "基于数值" + }, + "animation": { + "title": "进度条动画", + "desc": "使用充电条纹、脉冲、发光等预设为进度条填充添加动画。你可以根据实体的状态或属性触发动画,也可以在其他条件满足时覆盖该动画。", + "trigger": { + "title": "动画触发条件", + "desc": "选择要监听的实体,并定义匹配时要应用的值与动画。", + "entity_desc": "用于评估动画触发条件的实体", + "type": "触发类型", + "type_desc": "选择比较实体状态还是属性", + "attribute_name_desc": "要比较的属性名称(例如:charging_status)", + "match_value": "匹配值", + "match_value_desc": "要与状态或属性进行比较的文本(比较基于文本)。" + }, + "type": "动画类型", + "type_desc": "选择触发时进度条的动画方式。", + "types": { + "charging": "充电(斜线)", + "pulse": "脉冲", + "blinking": "闪烁", + "bouncing": "弹跳", + "glow": "发光", + "rainbow": "彩虹", + "bubbles": "气泡", + "fill": "填充", + "ripple": "涟漪", + "traffic": "流动(理发店灯柱)", + "heartbeat": "心跳", + "flicker": "摇曳", + "shimmer": "微光", + "vibrate": "振动" + }, + "override": { + "title": "动作动画覆盖", + "desc": "选择一个动作实体和状态,以定义此动画何时覆盖常规动画", + "entity_desc": "用于评估覆盖触发条件的实体", + "type_desc": "覆盖条件匹配时使用的动画。", + "attribute_name_desc": "要比较的属性名称", + "match_value": "覆盖匹配值", + "match_value_desc": "与状态或属性进行文本比较", + "type": "覆盖动画类型" + } + }, + "error_no_entity": "选择实体", + "error_no_entity_desc": "在“常规”标签页中选择一个实体", + "error_no_range": "配置范围", + "error_no_range_desc": "在“常规”标签页中设置范围的起始与结束实体", + "unified_template": { + "title": "统一模板", + "desc": "一个返回 JSON 的 Jinja 模板:value、label、color、left_label、right_label、value_min、value_max、ticks。", + "toggle": "模板模式", + "cheatsheet": "模板速查表" + } + }, + "image": { + "settings": "图像设置", + "source_type": "图像来源类型", + "source_type_desc": "选择你希望指定图像来源的方式。", + "source": { + "default": "默认图像", + "url": "图片 URL", + "upload": "上传图像", + "entity": "实体图像", + "attribute": "实体属性" + }, + "url_section": { + "title": "图像 URL 配置" + }, + "image_url": "图片 URL", + "image_url_desc": "输入要显示图像的直接 URL。", + "upload_section": { + "title": "上传图像配置" + }, + "upload": "上传图像", + "upload_desc": "点击从你的设备上传图像文件。", + "upload_choose": "选择文件", + "upload_clear": "移除文件", + "attribute_entity_desc": "选择某个属性中包含图像 URL 的实体。", + "entity_section": { + "title": "实体图像配置" + }, + "entity": "实体", + "entity_desc": "选择带有图像的实体(例如:人员、摄像头实体)。", + "attribute_section": { + "title": "实体属性配置" + }, + "entity_attr_desc": "选择某个属性中包含图像 URL 的实体。", + "attribute_name": "属性名称", + "attribute_name_desc": "输入包含图像 URL 的属性路径(支持点号表示法,例如:vehicle_data.vehicleDetails.generalDashboard)。", + "width": "宽度", + "width_desc": "设置宽度(支持 px、%、em、rem、vw、vh 等)。", + "height": "高度", + "height_desc": "设置高度(支持 px、%、em、rem、vw、vh 等)。", + "crop_fit": "裁剪与适配", + "crop_fit_desc": "控制图像在其容器内的适配方式。", + "fit": { + "cover": "覆盖(裁剪填满)", + "contain": "包含(完整显示图像)", + "fill": "填充(拉伸适配)", + "scale_down": "缩小", + "none": "无(原始尺寸)" + }, + "border_radius": "圆角半径", + "border_radius_desc": "控制图像的圆角。", + "tap_actions": "点击动作", + "filters": "滤镜", + "filter": { + "blur": "模糊", + "blur_desc": "为图像应用模糊效果。", + "brightness": "亮度(%)", + "brightness_desc": "调整图像的亮度。", + "contrast": "对比度(%)", + "contrast_desc": "调整图像的对比度。", + "saturation": "饱和度(%)", + "saturation_desc": "调整图像的饱和度。" + }, + "hover": { + "title": "悬停效果", + "effect_type": "效果类型", + "effect_type_desc": "选择悬停效果的类型。", + "scale": "缩放(放大/缩小)", + "rotate": "旋转", + "fade": "淡入淡出(不透明度变化)", + "blur": "模糊", + "brightness": "亮度", + "glow": "发光(阴影)", + "slide": "滑动(位移)", + "scale_amount": "缩放(%)", + "scale_amount_desc": "调整悬停时图像的缩放比例。", + "rotate_amount": "旋转(°)", + "rotate_amount_desc": "悬停时旋转图像。", + "opacity": "不透明度(%)", + "opacity_desc": "改变悬停时图像的不透明度。", + "blur_amount": "模糊(px)", + "blur_amount_desc": "悬停时为图像应用模糊效果。", + "brightness_amount": "亮度(%)", + "brightness_amount_desc": "调整悬停时图像的亮度。", + "glow_intensity": "发光强度", + "glow_intensity_desc": "选择悬停时发光效果的强度。", + "glow_light": "轻微发光", + "glow_medium": "中等发光", + "glow_heavy": "强烈发光", + "glow_custom": "自定义阴影", + "translate_x": "水平(px)", + "translate_x_desc": "悬停时水平移动图像。", + "translate_y": "垂直(px)", + "translate_y_desc": "悬停时垂直移动图像。" + }, + "alt": "图片", + "no_source": "未配置图像来源", + "error_no_source": "配置图像来源", + "error_url_desc": "在“常规”标签页中输入图像 URL", + "error_upload_desc": "在“常规”标签页中上传图像", + "error_entity_desc": "在“常规”标签页中选择图像实体", + "error_attribute_desc": "在“常规”标签页中选择实体和属性" + }, + "graphs": { + "chart_type": { + "title": "图表类型", + "type": "类型", + "desc": "选择数据的可视化样式。" + }, + "types": { + "line": "折线图", + "bar": "柱状图", + "pie": "饼图", + "donut": "环形图" + }, + "data_source": { + "title": "数据源", + "mode": "模式", + "desc": "在历史数据与天气预报之间选择" + }, + "mode": { + "history": "历史", + "forecast": "预报" + }, + "forecast_entity": "天气实体", + "forecast_entity_desc": "选择用于预报的天气实体", + "forecast_type": "预报类型", + "forecast_type_desc": "选择逐小时或每日预报", + "type": { + "hourly": "逐小时", + "daily": "每日" + }, + "forecast": { + "temp": "温度", + "precip": "降水量", + "wind": "风速", + "humidity": "湿度", + "pressure": "气压", + "clouds": "云量" + }, + "data_sources": { + "title": "数据源", + "no_entities": "未添加实体", + "add_first_entity": "添加第一个实体以创建图表", + "add_entity": "添加实体" + }, + "forecast_attributes": { + "title": "预报属性", + "desc": "选择要在上方已配置的天气实体中显示哪些预报值。每个属性将在图表上显示为一条独立的曲线。" + }, + "forecast_info": { + "title": "预报显示", + "desc": "预报会显示你的天气服务提供的所有可用数据。预报类型(逐小时/每日)决定了显示的时间范围。" + }, + "entity": { + "label": "实体", + "desc": "选择要绘制的实体。", + "display_name_placeholder": "显示名称(可选)", + "use_as_card_info": "用作卡片信息", + "attribute": "属性", + "attribute_desc": "使用实体状态,或选择要跟踪的特定属性。", + "state_default": "状态(默认)", + "forecast_attr": "预报属性", + "forecast_attr_desc": "要在图表上绘制哪个预报值", + "expand_options": "展开选项" + }, + "line": { + "show_points": "显示数据点", + "fill_area": "填充区域", + "line_width": "线条宽度", + "line_style": "线条样式" + }, + "line_styles": { + "solid": "实线", + "dashed": "虚线", + "dotted": "点线" + }, + "display": { + "title": "显示选项", + "show_title": "显示图表标题", + "show_value": "显示图表数值", + "chart_title": "图表标题", + "chart_title_placeholder": "输入图表标题", + "time_period": "时间范围", + "time_period_desc": "要显示多少历史数据。", + "normalize_values": "将数值归一化到同一比例", + "normalize_desc": "在比较单位不同的实体时很有用(例如:% 与英里)", + "chart_height": "图表高度", + "chart_width": "图表宽度(%)", + "chart_width_desc": "占模块可用宽度的百分比。对齐方式决定其摆放位置。", + "chart_alignment": "图表对齐方式", + "chart_alignment_desc": "图表在其容器内的对齐方式。", + "info_position": "信息位置", + "info_position_desc": "显示名称/数值的浮层位置。", + "legend_position": "图例位置", + "legend_position_desc": "启用时图例的放置位置。", + "background_color": "背景颜色", + "chart_options": "图表选项", + "show_legend": "显示图例", + "show_grid": "显示网格", + "show_grid_values": "显示网格数值", + "smooth_lines": "平滑曲线", + "show_tooltips": "显示提示框", + "add_slice_gap": "添加扇区间隙", + "title_font_size": "标题字号", + "value_font_size": "数值字号", + "bar_display_limit": "最多显示的柱数", + "bar_display_limit_desc": "0 = 不限", + "show_time_intervals": "显示时间间隔", + "chart_layout": "图表布局" + }, + "agg": { + "mean": "平均值", + "sum": "总和", + "min": "最小值", + "max": "最大值", + "median": "中位数", + "first": "首个数值", + "last": "最后数值", + "count": "计数", + "delta": "变化量" + }, + "position": { + "top": "上", + "bottom": "下", + "left": "左", + "right": "右", + "hidden": "隐藏", + "top_left": "左上角", + "top_right": "右上角", + "bottom_left": "左下角", + "bottom_right": "右下角", + "middle": "居中", + "center": "居中" + }, + "pie": { + "show_title": "在扇区内显示标题", + "show_value": "在扇区内显示数值" + }, + "period": { + "today": "今天", + "1h": "最近 1 小时", + "3h": "最近 3 小时", + "6h": "最近 6 小时", + "12h": "最近 12 小时", + "24h": "最近 24 小时", + "2d": "最近 2 天", + "7d": "最近一周", + "30d": "最近一个月", + "90d": "最近 3 个月", + "365d": "最近一年" + }, + "reset_345": "重置为默认值(345px)", + "reset_100": "重置为默认值(100%)", + "entity_desc": "选择要绘制的实体。", + "display_name_optional": "显示名称(可选)", + "use_as_card_info": "用作卡片信息", + "attribute": "属性", + "attribute_desc": "使用实体状态,或选择要跟踪的特定属性。", + "attribute_state_default": "状态(默认)", + "show_points": "显示数据点", + "fill_area": "填充区域", + "line_style": "线条样式", + "line_solid": "实线", + "line_dashed": "虚线", + "line_dotted": "点线", + "pie_show_title": "在扇区内显示标题", + "pie_show_value": "在扇区内显示数值", + "expand_options": "展开选项", + "no_entities": "未添加实体", + "add_first_entity": "添加第一个实体以创建图表", + "add_entity": "添加实体", + "display_options": { + "title": "显示选项" + }, + "show_title": "显示图表标题", + "show_value": "显示图表数值", + "chart_title": "图表标题", + "chart_title_placeholder": "输入图表标题", + "time_period": "时间范围", + "time_period_desc": "要显示多少历史数据。", + "normalize_values": "将数值归一化到同一比例", + "normalize_desc": "在比较单位不同的实体时很有用(例如:% 与英里)", + "chart_height": "图表高度", + "chart_width": "图表宽度(%)", + "error_no_chart_type": "选择图表类型", + "error_no_chart_type_desc": "在“常规”标签页中选择图表类型", + "error_no_entities": "配置实体", + "unified_template": { + "title": "统一模板", + "desc": "可选 JSON:colors(数组)、global_color、fill_area、pie_fill。", + "toggle": "模板模式", + "cheatsheet": "模板速查表" + } + }, + "dropdown": { + "basic": { + "title": "基本设置", + "desc": "配置下拉菜单的外观与行为。" + }, + "unified_template_section": { + "title": "模板模式", + "enable": "启用模板模式", + "desc": "使用单个 Jinja2 模板生成所有下拉选项,包含图标、标签和颜色。返回一个由选项对象组成的 JSON 数组。启用后,手动选项将被模板生成的选项替代。" + }, + "label": { + "title": "标签", + "desc": "下拉菜单的文本标签(可选)。" + }, + "placeholder": { + "title": "占位符", + "desc": "未选择任何选项时显示的文本。" + }, + "keep_selection_state": { + "title": "保留选中状态", + "desc": "记住并显示最后选中的选项(推荐用于场景选择器)" + }, + "label_settings": { + "title": "标签设置", + "disabled": "启用上方的切换开关以配置标签设置" + }, + "label_position": { + "title": "标签位置", + "desc": "标签相对于下拉菜单的位置" + }, + "label_positions": { + "top": "下拉菜单上方", + "left": "下拉菜单左侧", + "bottom": "下拉菜单下方", + "right": "下拉菜单右侧" + }, + "label_icon": { + "title": "标签图标", + "disabled": "启用上方的切换开关以配置标签图标" + }, + "icon": { + "title": "图标", + "desc": "要显示的图标(例如:mdi:menu-down)" + }, + "options": { + "title": "下拉选项" + }, + "option_number": "选项 {number}", + "duplicate_option": "复制选项", + "remove_option": "移除选项", + "add_option": "添加选项", + "drag_option": "拖动排序", + "default_badge": "默认", + "option": { + "label": "标签", + "label_desc": "此选项的显示文本", + "icon": "图标", + "icon_desc": "此选项的可选图标(例如:mdi:lightbulb)", + "icon_color": "图标颜色", + "use_state_color": "使用状态颜色", + "use_state_color_desc": "为图标使用实体状态颜色(覆盖自定义颜色)", + "state_color_enabled": "图标将自动使用实体状态颜色", + "action": "动作", + "action_desc": "选中此选项时执行的操作", + "more_info_config": "更多信息配置", + "more_info_entity": "实体", + "more_info_entity_desc": "用于显示更多信息的实体", + "toggle_config": "切换配置", + "toggle_entity": "实体", + "toggle_entity_desc": "要开启/关闭的实体" + }, + "error_no_entity": "配置来源实体", + "error_no_entity_desc": "在“常规”标签页中选择来源实体", + "error_no_options": "添加选项", + "error_no_options_desc": "在“常规”标签页中配置下拉选项,或启用统一模板" + }, + "info": { + "entity_section": { + "title": "实体配置" + }, + "entity": "实体", + "entity_desc": "选择要显示的实体", + "icon_section": { + "title": "图标设置" + }, + "show_icon": "显示图标", + "show_icon_desc": "在实体数值旁显示图标", + "icon": "图标", + "icon_desc": "选择要显示的图标", + "icon_color": "图标颜色", + "name_section": { + "title": "名称设置" + }, + "show_name": "显示名称", + "show_name_desc": "在数值上方显示实体名称", + "custom_name": "自定义名称", + "custom_name_desc": "用自定义名称覆盖实体名称", + "name_color": "名称颜色", + "state_section": { + "title": "状态设置" + }, + "show_state": "显示状态", + "show_state_desc": "显示实体状态/数值", + "show_units": "显示单位", + "show_units_desc": "显示计量单位(若可用)", + "state_color": "状态颜色", + "template": { + "title": "模板模式", + "desc": "使用模板格式化实体数值。模板支持使用 Home Assistant 模板语法实现复杂的格式处理。", + "mode": "模板模式", + "mode_desc": "使用 Home Assistant 模板语法格式化数值", + "value": "值模板", + "value_desc": "使用 Jinja2 语法格式化实体数值的模板" + }, + "size_section": { + "title": "尺寸设置" + }, + "icon_size": "图标大小", + "icon_size_desc": "图标尺寸(像素)", + "name_size": "名称字号", + "name_size_desc": "实体名称文本的字号(像素)", + "value_size": "数值大小", + "value_size_desc": "实体数值文本的字号(像素)", + "icon_gap": "图标间距", + "icon_gap_desc": "图标与内容之间的间距(像素)", + "layout_section": { + "title": "布局与定位" + }, + "icon_position": "图标位置", + "overall_alignment": "整体对齐", + "icon_alignment": "图标对齐", + "content_alignment": "内容对齐", + "examples_title": "常见示例:", + "example_basic": "基本值", + "example_units": "带单位", + "example_round": "保留 1 位小数", + "error_no_entities": "配置实体", + "error_no_entities_desc": "在“常规”标签页中添加信息实体", + "error_entities_need_config": "实体需要配置" + }, + "button": { + "basic": { + "title": "基本设置", + "desc": "配置按钮的外观与文本内容。" + }, + "text": { + "title": "按钮文字", + "desc": "按钮上显示的文本(留空则仅显示图标)。" + }, + "style": { + "title": "按钮样式", + "desc": "按钮的视觉样式" + }, + "alignment": { + "title": "对齐方式", + "desc": "按钮在其容器内的对齐方式" + }, + "styles": { + "flat": "扁平(默认)", + "glossy": "高光", + "embossed": "浮雕", + "inset": "内凹", + "gradient_overlay": "渐变叠加", + "neon_glow": "霓虹光晕", + "outline": "描边", + "glass": "玻璃", + "metallic": "金属" + }, + "align": { + "left": "左", + "center": "居中", + "right": "右", + "justify": "两端对齐(整行宽度)" + }, + "icon": { + "title": "图标设置", + "desc": "配置按钮的图标显示与位置。", + "before": "文本之前", + "after": "文本之后", + "enable_toggle_desc": "启用上方的切换开关以配置图标设置" + }, + "icon_field": "图标", + "show_icon": "显示图标", + "show_icon_desc": "在按钮上显示图标", + "icon_desc": "要显示的图标(例如:mdi:home)", + "icon_position": "图标位置", + "icon_position_desc": "图标相对于文本的位置", + "colors": { + "title": "颜色", + "background": "背景颜色", + "text": "文字颜色" + }, + "hover": { + "title": "悬停效果", + "effect_type": "效果类型", + "effect_type_desc": "选择此按钮的悬停效果。", + "none": "无", + "color": "颜色变化", + "scale": "缩放", + "glow": "发光", + "lift": "抬升(Y 轴位移)", + "hover_color": "悬停颜色", + "glow_color": "发光颜色", + "enable_toggle_desc": "启用上方的切换开关以配置悬停效果" + }, + "actions": { + "type": "动作类型", + "type_desc": "选择点击按钮时执行的操作", + "entity": "实体", + "entity_desc": "选择要交互的实体", + "navigation_path": "导航路径", + "navigation_path_desc": "要导航到的路径(例如:/dashboard/energy)", + "service": "服务", + "service_desc": "要调用的服务(例如:light.turn_on)", + "service_data": "服务数据(JSON)", + "service_data_desc": "传递给服务的可选数据(JSON 格式)" + }, + "tap": { + "title": "点击动作", + "desc": "点击按钮时执行的操作" + }, + "hold": { + "title": "长按动作", + "desc": "长按按钮时执行的操作" + }, + "double": { + "title": "双击动作", + "desc": "双击按钮时执行的操作" + } + }, + "spinbox": { + "entity": { + "title": "实体配置", + "desc": "可选:关联到一个 Home Assistant 实体以同步数值(例如:input_number、温控温度)。" + }, + "entity_field": "实体", + "entity_field_desc": "选择用于同步数字框数值的实体(可选)。支持 input_number、number、温控实体。", + "value": "默认值", + "min_value": "最小值", + "min_value_desc": "允许的最小值", + "max_value": "最大值", + "max_value_desc": "允许的最大值", + "step": "步长", + "step_desc": "每次按下按钮时数值的变化量", + "value_desc": "初始数值(仅在未关联实体时使用)", + "display": { + "title": "显示配置" + }, + "layout_title": "布局", + "layout_desc": "按钮与数值的排列方式", + "layout_options": { + "horizontal": "水平", + "vertical": "垂直" + }, + "show_value": "显示数值", + "show_value_desc": "显示当前数值", + "value_position_title": "数值位置", + "value_position_desc": "数值相对于按钮的显示位置", + "value_position_options": { + "center": "居中(按钮之间)", + "top": "顶部(两个按钮上方)", + "bottom": "底部(两个按钮下方)", + "left": "左侧(按钮之前)", + "right": "右侧(按钮之后)" + }, + "show_unit": "显示单位", + "show_unit_desc": "显示单位标签(例如:°C、%)", + "unit": "单位", + "unit_desc": "要显示的单位(例如:°C、%、km)", + "buttons": { + "title": "按钮配置" + }, + "button_style": "按钮样式", + "button_style_desc": "按钮的视觉样式", + "button_shape": "按钮形状", + "button_shape_desc": "按钮的形状", + "button_size": "按钮尺寸", + "button_size_desc": "按钮的尺寸(像素,宽和高)", + "button_spacing": "数值间距", + "button_spacing_desc": "按钮与数值显示之间的间距(像素)", + "button_gap": "按钮间距", + "button_gap_desc": "增加与减少按钮之间的间距(像素)", + "increment_icon": "增加按钮图标", + "increment_icon_desc": "增加按钮的图标(例如:mdi:plus、mdi:chevron-up)", + "decrement_icon": "减少按钮图标", + "decrement_icon_desc": "减少按钮的图标(例如:mdi:minus、mdi:chevron-down)", + "button_background_color": "按钮背景", + "button_text_color": "按钮图标颜色", + "value_style": { + "title": "数值显示样式" + }, + "value_color": "数值颜色", + "value_font_size": "数值字号", + "value_font_size_desc": "数值显示的字号(像素)", + "template": "值模板", + "template_mode": "启用模板模式", + "template_mode_desc": "使用 Jinja2 模板动态计算显示的数值", + "template_desc": "用于数值的 Jinja2 模板(例如:{{ states(\"input_number.temperature\") }})", + "template_examples": "常见示例:", + "template_disabled": "启用模板模式以使用动态数值", + "styles": { + "flat": "扁平(默认)", + "glossy": "高光", + "embossed": "浮雕", + "inset": "内凹", + "gradient_overlay": "渐变叠加", + "neon_glow": "霓虹光晕", + "outline": "描边", + "glass": "玻璃", + "metallic": "金属" + }, + "shapes": { + "rounded": "圆角方形(默认)", + "square": "方形", + "circle": "圆形" + }, + "unified_template": { + "title": "统一模板", + "desc": "返回 JSON,包含 value、button_background_color、button_text_color、value_color,或一个简单的数值型 Jinja 结果。", + "toggle": "模板模式", + "cheatsheet": "模板速查表" + } + }, + "layout_extra": { + "module_name": "模块名称:", + "module_name_placeholder": "为此模块指定一个自定义名称,以便在编辑器中更容易识别。", + "module_name_help": "为此模块指定一个自定义名称,以便在编辑器中更容易识别。" + }, + "camera": { + "config": { + "title": "摄像头配置", + "desc": "配置摄像头实体与显示设置。" + }, + "entity": "摄像头实体", + "entity_desc": "选择要显示的摄像头实体。它应是 Home Assistant 中的 camera 或 mjpeg 实体。", + "name": "摄像头名称", + "name_desc": "摄像头的自定义名称。留空则使用实体名称。", + "show_name": "显示摄像头名称", + "show_name_desc": "在画面上显示摄像头名称", + "show_name_toggle": { + "enable_toggle_desc": "启用上方的切换开关以配置摄像头名称显示" + }, + "name_position": { + "group_title": "摄像头名称位置", + "title": "名称位置", + "desc": "选择摄像头名称以浮层形式出现在图像上的位置。", + "options": { + "top_left": "左上角", + "top_right": "右上角", + "center": "居中", + "bottom_left": "左下角", + "bottom_right": "右下角" + } + }, + "display": { + "title": "显示设置" + }, + "view_mode": { + "title": "流模式", + "desc": "自动:静态图像每 10 秒刷新一次,与 Home Assistant 图片卡片完全一致。实时:连续不断的流。快照:按你自定义的间隔刷新静态图像。", + "options": { + "auto": "自动(HA 默认)", + "live": "始终实时", + "snapshot": "仅快照" + } + }, + "audio_enabled": { + "title": "启用音频", + "desc": "在浏览器允许的情况下以非静音方式启动视频流。浏览器会阻止非静音自动播放,直到你与页面交互,因此在你使用声音按钮之前,视频流可能会以静音开始。" + }, + "show_audio_button": { + "title": "声音按钮", + "desc": "在视频流上显示静音/取消静音按钮。" + }, + "show_controls": { + "title": "播放器控件", + "desc": "在视频流上显示浏览器的原生视频控件。" + }, + "image_fit": { + "title": "图像适配", + "desc": "画面填充取景框的方式。覆盖会裁剪以填满,包含会显示完整画面并留有黑边,填充会拉伸至取景框。", + "options": { + "cover": "覆盖", + "contain": "包含", + "fill": "填充" + } + }, + "audio": { + "mute": "静音", + "unmute": "取消静音" + }, + "unavailable": "摄像头不可用", + "snapshot_refresh": { + "section_title": "快照刷新设置" + }, + "live_view": { + "title": "实时视图", + "desc": "启用以显示摄像头实时流(需要流媒体集成)。禁用时显示静态快照。" + }, + "auto_refresh": { + "section_title": "自动刷新设置", + "title": "自动刷新", + "desc": "按固定间隔自动刷新摄像头图像" + }, + "refresh_interval": { + "title": "刷新间隔(秒)", + "desc": "自动刷新摄像头图像的频率。" + }, + "dimensions": { + "title": "尺寸" + }, + "width": "宽度(px)", + "width_desc": "设置摄像头显示的宽度。范围:100-1000px", + "height": "高度(px)", + "height_desc": "设置摄像头显示的高度。范围:100-1000px", + "link_aspect": "锁定宽高比", + "unlink_aspect": "解除宽高比锁定", + "aspect_linked": { + "title": "宽高比已锁定", + "desc": "尺寸保持 {ratio}:1 的比例。调整其中一个维度会自动更新另一个以保持比例。" + }, + "aspect_independent": { + "title": "独立尺寸", + "desc": "宽度和高度可独立调整。点击上方的链接按钮可保持宽高比。" + }, + "crop": { + "title": "裁剪与位置", + "desc": "调整摄像头画面的裁剪与位置。适用于聚焦特定区域或去除多余边缘。", + "left_title": "左侧裁剪(%)", + "left_desc": "从左侧边缘裁剪。数值越大,显示的左侧内容越少。", + "right_title": "右侧裁剪(%)", + "right_desc": "从右侧边缘裁剪。数值越大,显示的右侧内容越少。", + "top_title": "顶部裁剪(%)", + "top_desc": "从顶部边缘裁剪。数值越大,显示的顶部区域越少。", + "bottom_title": "底部裁剪(%)", + "bottom_desc": "从底部边缘裁剪。数值越大,显示的底部区域越少。", + "active_applied": "已应用生效的裁剪", + "reset_all": "重置所有裁剪" + }, + "template": { + "title": "模板模式", + "desc": "使用模板动态设置摄像头实体。模板支持使用 Home Assistant 模板语法实现条件式摄像头选择。", + "mode_label": "模板模式", + "mode_desc": "使用 Home Assistant 模板语法动态选择摄像头实体", + "camera_template_label": "摄像头模板", + "camera_template_desc": "使用 Jinja2 语法动态设置摄像头实体的模板", + "examples_title": "常见示例:", + "example1_desc": "天气晴朗时显示摄像头", + "example2_desc": "根据 input boolean 切换摄像头", + "example3_desc": "使用 input select 选择摄像头实体" + }, + "error_no_entity": "选择摄像头实体", + "error_no_entity_desc": "在“常规”标签页中选择摄像头实体", + "error_no_template": "配置模板", + "error_no_template_desc": "在“常规”标签页中输入模板代码", + "unified_template": { + "title": "统一模板", + "desc": "返回 JSON:entity、visible、overlay_text、overlay_color,或一个简单的 entity_id 字符串。", + "toggle": "模板模式", + "toggle_desc": "通过一个 Jinja 模板动态选择摄像头与浮层", + "cheatsheet": "模板速查表" + } + }, + "separator": { + "config": { + "title": "分隔线配置" + }, + "style": { + "title": "分隔线样式", + "desc": "选择分隔线的视觉样式。" + }, + "orientation": { + "title": "方向", + "desc": "选择分隔线是水平还是垂直。", + "horizontal": "水平", + "vertical": "垂直" + }, + "options": { + "solid": "实线", + "double": "双线", + "dotted": "点线", + "double_dotted": "双点线", + "shadow": "阴影", + "blank": "空白间隔" + }, + "appearance": { + "title": "外观" + }, + "thickness": "粗细(px)", + "thickness_desc": "分隔线的粗细。", + "width": "宽度(%)", + "width_desc": "分隔线宽度占容器的百分比。", + "color": { + "title": "颜色", + "desc": "分隔线的颜色。" + }, + "show_title": "显示标题", + "show_title_desc": "在分隔线中间添加文本(例如:------ Text ------)", + "show_title_toggle": { + "enable_toggle_desc": "启用上方的切换开关以配置标题设置" + }, + "text_content": { + "title": "文本内容", + "desc": "显示在分隔线中间的文本。" + }, + "font_size": "字号", + "font_size_desc": "文本的字号(像素)。", + "text_color": { + "title": "文字颜色", + "desc": "分隔线文本的颜色。" + }, + "text_format": { + "title": "文本格式", + "desc": "为分隔线文本应用格式样式。", + "bold": "加粗", + "italic": "斜体", + "underline": "下划线", + "uppercase": "全部大写", + "strikethrough": "删除线" + }, + "spacer": { + "title": "间隔高度" + }, + "height": "高度(px)", + "height_desc": "控制空白区域的视觉间距。" + }, + "design": { + "copy": "复制", + "paste": "粘贴", + "reset_all": "全部重置", + "copy_tooltip": "复制当前设计设置(适用于所有 Ultra Card)", + "paste_tooltip_has": "粘贴已复制的设计设置(来自跨卡片剪贴板)", + "paste_tooltip_none": "跨卡片剪贴板中没有设计设置", + "reset_all_tooltip": "将所有设计设置重置为默认(自定义定位会保留)", + "reset_to_theme": "重置为主题", + "reset_to_theme_tooltip": "清除背景、边框、圆角和阴影,使该元素遵循当前生效的 Ultra Card 主题", + "responsive_overrides": "响应式覆盖", + "responsive_hint": "启用后可为笔记本电脑、平板和移动设备设置不同的样式。", + "clear_device_overrides": "清除 {device} 覆盖设置", + "text_section": "文本", + "text_color": "文字颜色", + "alignment": "对齐方式", + "inherit_alignment": "继承(无对齐)", + "font_size": "字号", + "font_size_placeholder": "16px(默认)、1.2rem、max(1rem, 1.5vw)", + "reset_font_size": "将字号重置为默认", + "line_height": "行高", + "line_height_placeholder": "0(默认)、28px、1.7", + "reset_line_height": "将行高重置为默认", + "letter_spacing": "字间距", + "letter_spacing_placeholder": "auto(默认)、1px、-0.04em", + "reset_letter_spacing": "将字间距重置为默认", + "font": "字体", + "reset_font": "将字体重置为默认", + "google_fonts_warning": "Google Fonts 从 Google 的 CDN 动态加载,需要联网。在本地/离线安装环境中将无法使用。", + "font_weight": "字重", + "reset_font_weight": "将字重重置为默认", + "text_transform": "文本转换", + "reset_text_transform": "将文本转换重置为默认", + "font_style": "字体样式", + "reset_font_style": "将字体样式重置为默认", + "default_option": "– 默认 –", + "weight_thin": "100 - 细体", + "weight_light": "300 - 轻体", + "weight_normal": "400 - 常规", + "weight_medium": "500 - 中等", + "weight_semi_bold": "600 - 半粗", + "weight_bold": "700 - 粗体", + "weight_black": "900 - 特粗", + "transform_none": "无", + "transform_uppercase": "全部大写", + "transform_lowercase": "全部小写", + "transform_capitalize": "首字母大写", + "style_normal": "常规", + "style_italic": "斜体", + "style_oblique": "倾斜", + "white_space": "空白处理", + "reset_white_space": "将空白处理重置为默认", + "white_space_normal": "常规", + "white_space_nowrap": "不换行", + "white_space_pre": "保留空白", + "white_space_pre_wrap": "保留空白并换行", + "white_space_pre_line": "保留换行", + "background_section": "背景", + "background_color": "背景颜色", + "background_image_type": "背景图片类型", + "bg_none": "无", + "bg_upload": "上传图像", + "bg_entity": "实体图像", + "bg_url": "图片 URL", + "sizes_section": "尺寸", + "spacing_section": "间距", + "border_section": "边框", + "text_shadow_section": "文字阴影", + "box_shadow_section": "盒子阴影", + "position_section": "位置", + "overflow_section": "溢出", + "transform_3d_section": "3D 变换", + "transform_3d_desc": "在 3D 空间中倾斜或旋转模块。先设置透视以获得景深,再绕 X 轴(前后倾斜)、Y 轴(左右转动)或 Z 轴(旋转)。", + "transform_3d_perspective": "透视", + "transform_3d_perspective_placeholder": "none、400px、1000px", + "transform_3d_rotate_x": "绕 X 轴旋转", + "transform_3d_rotate_y": "绕 Y 轴旋转", + "transform_3d_rotate_z": "绕 Z 轴旋转", + "transform_3d_rotate_placeholder": "度数(-180 到 180)", + "transform_3d_rotate_hint": "旋转值以度数表示(-180 到 180)。", + "spacing_units_hint": "接受任意 CSS 长度:8 或 8px、1rem、0.5em、5%、2vw、auto、calc()。纯数字按 px 处理。", + "animations_section": "动画", + "width": "宽度", + "height": "高度", + "max_width": "最大宽度", + "max_height": "最大高度", + "min_width": "最小宽度", + "min_height": "最小高度", + "border_radius": "圆角半径", + "border_style": "边框样式", + "border_width": "边框宽度", + "border_color": "边框颜色", + "margin": "外边距", + "padding": "内边距", + "top": "上", + "right": "右", + "bottom": "下", + "left": "左", + "unlock_sides": "解锁后可单独编辑各边", + "lock_sides": "锁定后统一编辑所有边", + "horizontal_shift": "水平偏移", + "vertical_shift": "垂直偏移", + "blur": "模糊", + "text_shadow_color": "文字阴影颜色", + "box_shadow_color": "盒子阴影颜色", + "overflow": "溢出", + "clip_path": "Clip-path", + "upload_bg_image": "上传背景图片", + "bg_image_entity": "背景图片实体", + "bg_image_url": "背景图片 URL", + "choose_file": "选择文件", + "no_file_chosen": "未选择文件", + "backdrop_filter": "背景滤镜", + "background_filter": "背景图片滤镜", + "spread": "扩散", + "visible_default": "可见(默认)", + "examples": "示例", + "state_based_animation": "基于状态的动画", + "animation_type": "动画类型", + "animation_duration": "动画时长", + "animation_duration_desc": "动画持续时长(例如 2s、500ms、1.5s)", + "intro_outro_animations": "入场与出场动画", + "intro_animation": "入场动画", + "outro_animation": "出场动画", + "duration": "时长", + "delay": "延迟", + "timing": "时序", + "none": "无", + "ease": "缓动", + "border_style_none": "无", + "border_style_solid": "实线", + "border_style_dashed": "虚线", + "border_style_dotted": "点线", + "border_style_double": "双线", + "position_default": "– 默认 –", + "position_static": "静态", + "position_relative": "相对", + "position_absolute": "绝对", + "position_fixed": "固定", + "position_sticky": "粘性", + "copied": "已复制设计设置({count} 项)", + "copy_nothing": "没有可复制的设计设置", + "pasted": "设计设置已粘贴", + "has_modifications": "有修改", + "has_responsive_overrides": "有响应式覆盖", + "reset_field": "重置 {field}", + "reset_section": "将 {section} 重置为默认", + "clear_section_device_overrides": "清除 {section} 的 {device} 覆盖设置", + "overrides_active_hidden": "设备覆盖设置存在,并在关闭此项时保持生效。", + "device_desktop_info": "桌面端为基础。此处的更改会应用到所有设备,除非被覆盖。", + "device_override_info": "{device}({range})会覆盖桌面端样式。", + "device_desktop": "桌面端", + "device_laptop": "笔记本电脑", + "device_tablet": "平板", + "device_mobile": "移动端", + "web_safe_fonts": "网页安全字体", + "google_fonts": "Google Fonts", + "background_size": "背景尺寸", + "background_repeat": "背景重复", + "background_position": "背景位置", + "custom_width": "自定义宽度", + "custom_height": "自定义高度", + "bg_image_entity_hint": "带有图片属性的实体", + "remove_file": "移除文件", + "backdrop_filter_desc": "对该元素背后的内容进行滤镜处理(例如毛玻璃效果)。", + "background_filter_desc": "仅对背景图片应用滤镜;内容保持清晰。", + "offsets": "偏移", + "z_index": "Z-Index", + "text_shadow_hint": "需要同时设置水平和垂直偏移,阴影才会渲染。", + "entity_to_monitor": "要监控的实体", + "select_entity_first": "先选择实体,再设置触发动画的状态或属性。", + "animation_trigger_type": "触发类型", + "attribute_name": "属性名称", + "attribute_value": "属性值", + "state_value": "状态值", + "entity_not_found": "未找到实体", + "current_state": "当前状态:{state}", + "state_value_hint": "输入触发动画的确切状态值", + "attribute_name_hint": "输入要监控的属性名称", + "available_attributes": "可用:{list}", + "select_attribute_first": "请先输入属性名称", + "attribute_not_found": "该实体上未找到此属性", + "current_value": "当前值:{value}", + "custom_targeting_section": "自定义定位", + "css_var_prefix": "CSS 变量前缀", + "css_var_prefix_desc": "CSS 变量前缀(例如 \"my-row\" 会创建 --my-row-bg-color、--my-row-text-color)。可通过 card-mod 覆盖:style: | :host { --my-row-bg-color: red; }", + "extra_class": "额外 CSS 类", + "extra_class_desc": "以空格分隔的类名,应用到模块容器(用于 card-mod 或主题)。", + "element_id": "元素 ID", + "element_id_desc": "模块根节点上的可选 HTML id(请谨慎使用;页面中必须唯一)。" + }, + "modules": { + "text": "文本", + "image": "图片", + "icon": "图标", + "bar": "条形图", + "info": "信息", + "button": "按钮", + "spinbox": "数字输入框", + "separator": "分隔符", + "markdown": "Markdown", + "camera": "摄像头", + "graphs": "图表", + "dropdown": "下拉框", + "map": "地图", + "video_bg": "视频背景(Pro)", + "people": { + "title": "人员", + "description": "通过可自定义的数据项显示人员信息", + "person_entity": "人员实体", + "person_entity_desc": "选择要显示的人员实体", + "person": "人员", + "layout_style": "布局样式", + "layout_style_desc": "选择人员信息的显示方式", + "avatar_settings": "头像设置", + "avatar_size": "头像尺寸", + "border_width": "边框宽度", + "border_color": "边框颜色", + "use_state_color": "使用基于状态的边框颜色", + "use_state_color_desc": "根据在家/离家状态改变边框颜色", + "home_color": "在家颜色", + "away_color": "离家颜色", + "show_status_badge": "显示状态徽标", + "show_status_badge_desc": "在头像上显示在家/离家指示", + "badge_position": "徽标位置", + "banner_settings": "横幅设置", + "background_type": "背景类型", + "background_image": "图片 URL", + "background_entity": "带图片的实体", + "banner_height": "横幅高度", + "blur_amount": "模糊程度", + "name_settings": "名称设置", + "show_name": "显示名称", + "custom_name": "自定义名称(留空则使用友好名称)", + "name_font_size": "字号", + "name_color": "名称颜色", + "data_items": "数据项", + "data_items_desc": "拖动可重新排序,点击可配置", + "add_data_item": "+ 添加数据项", + "data_item": { + "location": "位置", + "battery": "电量", + "time_info": "时间信息", + "media": "媒体", + "sensor": "传感器", + "device_state": "设备状态", + "attribute": "属性", + "toggle": "切换开关" + }, + "associated_entities": "关联实体", + "associated_entities_desc": "关联其他实体以显示电量和媒体信息", + "battery_entity": "电量实体", + "media_player": "媒体播放器", + "layout_spacing": "布局与间距", + "gap": "间距", + "data_items_direction": "数据项排列方向", + "direction_row": "行", + "direction_column": "列", + "alignment": "对齐方式", + "align_left": "左", + "align_center": "居中", + "align_right": "右", + "badge_top_left": "左上角", + "badge_top_right": "右上角", + "badge_bottom_left": "左下角", + "badge_bottom_right": "右下角" + }, + "no_text_configured": "未配置文本", + "no_image_configured": "未配置图片", + "uploaded_image": "已上传的图片", + "icons_configured": "已配置 {count} 个图标", + "no_icons_configured": "未配置图标", + "default_entity_suggestion": "实体:sensor.battery_level", + "sample_text": "示例文本" + }, + "video_bg": { + "title": "视频背景(Pro)", + "description": "为仪表盘视图添加动态的条件视频背景", + "enable": "启用视频背景", + "enable_desc": "开启或关闭视频背景", + "editor_only": "仅编辑器", + "editor_only_desc": "启用后,背景仅在非编辑模式下可见", + "enable_on_mobile": "在移动端启用", + "enable_on_mobile_desc": "在移动设备上启用视频背景(可能影响性能)", + "controller_id": "控制器 ID", + "controller_id_desc": "可选:指定唯一 ID,用于高级多实例控制", + "source_type": "视频源类型", + "source_type_desc": "选择视频源的类型", + "video_url": "视频 URL", + "video_url_desc": "输入视频 URL 或 ID", + "youtube_url": "YouTube 视频 URL 或 ID", + "youtube_url_desc": "输入 YouTube 视频 URL 或视频 ID", + "vimeo_url": "Vimeo 视频 URL 或 ID", + "vimeo_url_desc": "输入 Vimeo 视频 URL 或视频 ID", + "loop": "循环播放视频", + "loop_desc": "视频播放结束后自动重新开始", + "start_time": "开始时间(秒)", + "start_time_desc": "从该时间偏移开始播放", + "opacity": "不透明度(%)", + "opacity_desc": "控制视频背景的整体透明度", + "blur": "模糊(px)", + "blur_desc": "为视频背景应用模糊效果", + "brightness": "亮度(%)", + "brightness_desc": "调整视频背景的亮度", + "scale": "缩放(%)", + "scale_desc": "调整视频背景的大小。可用来裁剪或缩放不同宽高比的视频", + "pause_when_hidden": "隐藏时暂停", + "pause_when_hidden_desc": "标签页隐藏时自动暂停视频以节省资源", + "respect_reduced_motion": "遵循减少动效设置", + "respect_reduced_motion_desc": "对偏好减少动效的用户禁用视频播放", + "global_transparency": "全局卡片透明度", + "global_transparency_desc": "为本视图中的所有 Ultra Card 应用一致的透明度", + "global_transparency_enable": "启用全局卡片透明度", + "global_transparency_enable_desc": "为视图中的所有 Ultra Card 应用透明效果", + "card_opacity": "卡片不透明度(%)", + "card_opacity_desc": "控制所有 Ultra Card 的透明度", + "card_blur": "卡片模糊(px)", + "card_blur_desc": "为所有 Ultra Card 应用背景模糊", + "card_color": "卡片背景颜色叠加", + "card_color_desc": "可选:为所有卡片添加色调", + "pro_required": "需要 Ultra Card Pro", + "pro_required_desc": "视频背景是 Pro 功能。安装并完成 Ultra Card Connect 集成的身份验证即可解锁此模块", + "get_pro": "获取 Ultra Card Connect", + "active": "视频背景已启用", + "enabled": "已启用", + "disabled": "已禁用", + "always_visible": "始终可见", + "preview_note": "视频预览占位符 - 实际背景将在仪表盘视图中渲染", + "info_note": "此模块控制整个视图的视频背景。它不会在仪表盘中显示为可见卡片。只有处于最上层、已启用且逻辑条件通过的模块才会渲染。", + "transparency_info": "为本视图中的所有 Ultra Card 应用一致的透明度,以在视频背景上提升可读性。禁用后,卡片将沿用其原生样式。" + }, + "map": { + "tabs": { + "general": "常规", + "markers": "标记" + }, + "provider": { + "title": "地图服务商", + "desc": "选择地图服务商", + "select": "地图服务商", + "select_desc": "OpenStreetMap 免费且无需 API 密钥。Google Maps 功能更丰富,但需要 API 密钥。", + "osm": "OpenStreetMap(免费)", + "google": "Google Maps" + }, + "google_api_key": "Google Maps API 密钥(可选)", + "google_api_key_desc": "输入你的 Google Maps API 密钥以使用完整的 JavaScript API 功能。没有密钥时将使用基础瓦片图层(功能受限)。", + "how_to_get_api_key": "如何获取 Google Maps API 密钥 →", + "style": { + "title": "地图样式", + "desc": "选择地图的视觉样式", + "select": "地图样式", + "select_desc": "选择地图样式。所有样式均可免费使用。" + }, + "type": { + "title": "地图类型", + "desc": "地图的视觉样式", + "select": "地图类型", + "select_desc": "选择地图的视觉样式", + "roadmap": "街道图", + "satellite": "卫星图", + "hybrid": "混合图", + "terrain": "地形图", + "osm_standard": "标准", + "osm_cycle": "骑行地图", + "osm_transport": "交通图", + "osm_humanitarian": "人道主义地图" + }, + "zoom": { + "title": "缩放设置", + "desc": "控制地图缩放级别和自动适配行为", + "level": "缩放级别", + "level_desc": "手动缩放级别(1-20)。数值越小显示范围越大。", + "auto": "自动缩放以适配实体", + "auto_desc": "自动计算缩放级别以显示所有实体标记。会覆盖手动缩放设置。" + }, + "controls": { + "title": "地图控件", + "desc": "配置地图交互控件", + "show": "显示地图控件", + "show_desc": "显示缩放、平移和其他地图控件", + "disable_scroll": "禁用鼠标滚轮缩放", + "disable_scroll_desc": "防止滚动页面时意外缩放", + "disable_drag": "在触摸屏上禁用拖动", + "disable_drag_desc": "阻止在移动/触摸设备上平移地图" + }, + "dimensions": { + "title": "地图尺寸", + "desc": "控制地图大小和宽高比", + "aspect_ratio": "宽高比", + "aspect_ratio_desc": "选择预设宽高比或使用自定义高度", + "height": "地图高度", + "height_desc": "自定义高度(像素)" + }, + "markers": { + "title": "地图标记", + "desc": "添加自定义标记或跟踪带有位置数据的实体", + "add": "添加标记", + "empty": "尚未添加标记", + "empty_desc": "点击 \"添加标记\" 创建第一个地图标记" + }, + "marker": { + "name": "标记名称", + "name_desc": "此标记的显示名称", + "name_placeholder": "输入标记名称", + "drag": "拖动排序", + "duplicate": "复制标记", + "delete": "删除标记", + "type_label": "标记类型", + "type_desc": "选择标记位置来源", + "manual_position": "手动位置", + "entity_tracker": "实体跟踪", + "entity": "实体", + "entity_desc": "选择 device_tracker、person 或任何带位置数据的实体", + "latitude": "纬度", + "latitude_range": "范围:-90 到 90", + "longitude": "经度", + "longitude_range": "范围:-180 到 180", + "visual": "视觉设置", + "display_type": "标记显示类型", + "display_type_desc": "选择标记的显示方式", + "icon": "标记图标", + "icon_optional": "可选 - 留空则使用纯色水滴形标记", + "icon_color": "图标颜色", + "icon_size": "图标大小", + "icon_size_range": "范围:8 到 64 像素", + "image_size": "图片尺寸", + "image_size_range": "范围:8 到 128 像素", + "custom_image": "自定义图片", + "custom_image_desc": "上传图片或输入图片 URL", + "use_entity_picture": "使用实体图片", + "use_entity_picture_desc": "使用被跟踪实体的 entity_picture 属性", + "type": { + "manual": "手动位置", + "entity": "实体跟踪" + }, + "display": { + "icon": "图标", + "custom_image": "自定义图片", + "entity_image": "实体图像" + } + } + }, + "sports": { + "data_source": "数据源", + "data_source_desc": "选择获取体育数据的方式。可使用现有的 Home Assistant 传感器(如 Team Tracker),也可直接从 ESPN 获取。", + "source_type": "来源类型", + "source_type_desc": "选择体育信息的数据来源", + "ha_sensor_config": "Home Assistant 传感器", + "sensor_entity": "传感器实体", + "sensor_entity_desc": "选择 Team Tracker 或其他体育传感器", + "sensor_status": "传感器状态", + "espn_config": "ESPN 配置", + "league": "联赛", + "league_desc": "选择体育联赛", + "team": "球队", + "team_desc": "选择你支持的球队", + "display_settings": "显示设置", + "display_style": "显示样式", + "display_style_desc": "选择比赛信息的显示方式", + "refresh_interval": "刷新间隔(分钟)", + "refresh_interval_desc": "数据刷新频率(1-60 分钟)", + "element_visibility": "元素可见性", + "element_visibility_desc": "选择要在显示中展示哪些元素", + "show_team_logos": "球队标志", + "show_team_logos_desc": "显示球队标志", + "show_team_names": "球队名称", + "show_team_names_desc": "显示球队名称", + "show_team_records": "球队战绩", + "show_team_records_desc": "显示胜负战绩", + "show_score": "比分", + "show_score_desc": "显示比赛比分", + "show_game_time": "比赛时间", + "show_game_time_desc": "显示比赛日期和时间", + "show_venue": "场地", + "show_venue_desc": "显示比赛场地/体育场", + "show_broadcast": "转播信息", + "show_broadcast_desc": "显示电视/直播频道", + "show_status_detail": "状态详情", + "show_status_detail_desc": "显示节次/时段/局数信息", + "show_odds": "博彩赔率", + "show_odds_desc": "显示让分盘和大小分", + "styling": "样式", + "use_team_colors": "使用球队配色", + "use_team_colors_desc": "自动应用球队品牌配色", + "status_colors": "状态颜色", + "in_progress_color": "直播中/进行中", + "scheduled_color": "已安排", + "win_color": "胜", + "loss_color": "负", + "font_sizes": "字号", + "score_font_size": "比分字号", + "team_name_font_size": "球队名称字号", + "logo_size": "标志尺寸" + }, + "cover": { + "entity_section": "实体", + "entity_desc": "选择要控制的窗帘(百叶窗、车库门、卷帘)。", + "entity": "窗帘实体", + "display_section": "显示", + "display_desc": "选择卡片上显示的内容。", + "show_title": "显示标题", + "show_title_desc": "显示窗帘名称", + "show_icon": "显示图标", + "show_icon_desc": "显示窗帘图标", + "show_state": "显示状态", + "show_state_desc": "显示打开/关闭/正在打开/正在关闭", + "show_position": "显示位置", + "show_position_desc": "显示位置条或百分比", + "show_position_control": "显示位置滑块", + "show_position_control_desc": "允许设置 0-100% 的位置", + "show_stop": "显示停止按钮", + "show_stop_desc": "在支持时显示停止按钮", + "layout_section": "布局", + "layout_desc": "控件的排列方式。", + "layout": "布局样式", + "layout_style_desc": "紧凑、标准或仅按钮", + "layout_compact": "紧凑", + "layout_standard": "标准", + "layout_buttons": "按钮", + "alignment": "对齐方式", + "alignment_desc": "内容左对齐、居中或右对齐", + "alignment_left": "左", + "alignment_center": "居中", + "alignment_right": "右", + "advanced_section": "高级", + "advanced_desc": "倾斜与多窗帘选项。", + "show_tilt": "显示倾斜", + "show_tilt_desc": "在支持时显示倾斜状态和控制", + "show_tilt_control": "显示倾斜滑块", + "show_tilt_control_desc": "在支持时允许设置倾斜位置", + "open": "打开", + "close": "关闭", + "stop": "停止", + "position": "位置", + "tilt": "倾斜", + "state_open": "打开", + "state_closed": "已关闭", + "state_opening": "正在打开", + "state_closing": "正在关闭", + "config_needed": "选择窗帘", + "config_needed_desc": "在常规选项卡中选择窗帘实体", + "select_entity": "选择窗帘实体", + "unavailable": "不可用" + }, + "fan": { + "error_entity": "选择风扇实体", + "entity_section": "实体", + "entity_desc": "选择要控制的风扇。", + "entity": "风扇实体", + "entity_field_desc": "Home Assistant 风扇实体", + "icon_override": "图标覆盖", + "icon_override_desc": "可选 mdi: 图标;留空则使用风扇动效图形", + "display_section": "显示", + "display_desc": "选择卡片上显示的内容。", + "show_title": "显示标题", + "show_title_desc": "显示风扇名称", + "show_icon": "显示图标", + "show_icon_desc": "显示标题图标(标准/紧凑布局)", + "show_state": "显示状态", + "show_state_desc": "显示开/关和模式文本", + "show_percentage": "显示百分比", + "show_percentage_desc": "在支持时显示速度条和数值", + "show_percentage_control": "显示速度滑块", + "show_percentage_control_desc": "在支持时允许 0–100%", + "show_preset_modes": "显示预设模式", + "show_preset_modes_desc": "在支持时显示预设标签", + "show_oscillate": "显示摆头", + "show_oscillate_desc": "在支持时显示摆头切换开关", + "show_direction": "显示方向", + "show_direction_desc": "在支持时显示正转/反转", + "show_speed_steppers": "显示速度步进按钮", + "show_speed_steppers_desc": "加速/减速按钮", + "layout_section": "布局", + "layout_desc": "视觉样式与对齐方式。", + "layout": "布局", + "layout_style_desc": "主视觉、标准或紧凑", + "layout_hero": "主视觉", + "layout_standard": "标准", + "layout_compact": "紧凑", + "alignment": "对齐方式", + "alignment_desc": "内容对齐", + "alignment_left": "左", + "alignment_center": "居中", + "alignment_right": "右", + "config_needed": "选择风扇", + "config_needed_desc": "在常规选项卡中选择风扇实体", + "unavailable": "不可用", + "state_on": "开", + "state_off": "关", + "turn_on": "打开", + "turn_off": "关闭", + "on": "开", + "off": "关", + "slower": "减速", + "faster": "加速", + "speed": "速度", + "presets_label": "送风模式", + "direction": "方向", + "oscillate": "摆头", + "forward": "正转", + "reverse": "反转" + }, + "lock": { + "error_entity": "选择门锁实体", + "entity_section": "实体", + "entity_section_desc": "选择要控制的门锁。", + "entity": "门锁实体", + "entity_field_desc": "Home Assistant 门锁实体", + "icon_override": "图标覆盖", + "icon_override_desc": "可选 mdi: 图标;留空则使用默认门锁图标", + "display_section": "显示", + "display_desc": "选择卡片上显示的内容。", + "show_title": "显示标题", + "show_title_desc": "显示门锁名称", + "show_icon": "显示图标", + "show_icon_desc": "显示门锁图标(标准/紧凑/主视觉)", + "show_state": "显示状态", + "show_state_desc": "显示已上锁/已解锁文本", + "show_open_button": "显示开启按钮", + "show_open_button_desc": "当门锁支持解锁闩(OPEN 功能)时显示 \"开启\"", + "layout_section": "布局", + "layout_desc": "视觉样式与对齐方式。", + "layout": "布局", + "layout_style_desc": "主视觉、标准或紧凑", + "layout_hero": "主视觉", + "layout_standard": "标准", + "layout_compact": "紧凑", + "alignment": "对齐方式", + "alignment_desc": "内容对齐", + "alignment_left": "左", + "alignment_center": "居中", + "alignment_right": "右", + "config_needed": "选择门锁", + "config_needed_desc": "在常规选项卡中选择门锁实体", + "unavailable": "不可用", + "locked": "已上锁", + "unlocked": "已解锁", + "locking": "正在上锁…", + "unlocking": "正在解锁…", + "jammed": "卡住", + "jammed_hint": "请检查门锁硬件。", + "action_lock": "上锁", + "action_unlock": "解锁", + "action_open": "打开", + "actions": "门锁操作" + }, + "living_canvas": { + "title": "Living Canvas", + "intro": "以全视图 WebGL 图层形式渲染(类似 Dynamic Weather),而非在卡片内部。请合理设置位置和透明度,以保持仪表盘内容清晰可读。", + "view_note": "每个视图仅运行一个胜出模块(依据逻辑条件和顺序)。请打开实时仪表盘查看效果;下方预览仅为概要。", + "enable": "启用 Living Canvas", + "enable_desc": "开启或关闭整个视图范围的画布", + "display_section": "显示", + "position": "位置", + "position_desc": "背景层位于静态背景模块之上、卡片之下;前景层则绘制在卡片之上。", + "position_bg": "背景(卡片之后)", + "position_fg": "前景(卡片之上)", + "layer_opacity": "图层不透明度", + "layer_opacity_desc": "淡化整个画布(0–100%),以保持 Lovelace 界面清晰可读", + "canvas_opacity": "画布不透明度", + "canvas_opacity_desc": "仅淡化 WebGL 画布(默认 100%)。不会影响视图中的 Ultra Card 或其他卡片。", + "colors_section": "颜色", + "colors_section_desc": "每个预设都有默认配色。可在此覆盖颜色(十六进制、主题变量或收藏色)。更改预设会更新选择器中的建议默认值。", + "color_background": "背景 / 底色", + "color_primary": "主强调色", + "color_secondary": "次强调色", + "preset": "预设", + "preset_desc": "选择视觉样式", + "preset_aurora": "极光", + "preset_plasma": "等离子", + "preset_particles": "粒子", + "preset_mesh": "网格渐变", + "speed": "速度", + "speed_desc": "动画速度(0.25–3)", + "intensity": "强度", + "intensity_desc": "效果的亮度(0–100)", + "quality": "画质", + "quality_desc": "为性能设定的像素比上限", + "quality_low": "低", + "quality_medium": "中", + "quality_high": "高", + "mobile_section": "移动端", + "enable_on_mobile": "在移动端启用", + "enable_on_mobile_desc": "关闭时,小屏幕上会隐藏画布以节省电量", + "accessibility": "无障碍", + "respect_reduced_motion": "遵循减少动效设置", + "respect_reduced_motion_desc": "当系统要求减少动效时,此视图会隐藏画布", + "drivers_heading": "可选驱动源", + "drivers_help": "驱动源会把实体的实时值作为两个额外的 0–1 控制项(驱动源 A 和驱动源 B)传入着色器。", + "drivers_detail": "工作原理:每一帧都会读取所选实体的状态。0 到 1 之间的数值直接使用。0–100 的数值会除以 100。on/off 分别映射为 1 和 0。其他数值会做柔和映射,图形依然会有响应。每个预设对 A/B 的用法不同(辉光混合、线条粗细、颜色点缀)。将某个驱动源留空即可停用。", + "driver_a": "驱动源 A", + "driver_b": "驱动源 B", + "pro_description": "Living Canvas 是 Pro 功能:全视图 WebGL 背景,带预设和可选的实体驱动源。升级后即可像 Dynamic Weather 一样使用。", + "preview_locked": "Living Canvas(Pro)。升级后即可查看此动画", + "preview_disabled": "已禁用", + "preview_preset": "预设", + "preview_opacity": "画布不透明度", + "preview_hint": "以全视图图层渲染。打开仪表盘即可查看;注册使用此卡片实例。" + }, + "pro": { + "feature_locked": "Pro 功能", + "sports_description": "Sports Score 模块需要 Ultra Card Pro 订阅才能显示实时赛事比分和球队信息。", + "upgrade_button": "升级到 Pro" + }, + "text_input": { + "entity": { + "title": "实体配置", + "desc": "关联到 Home Assistant 的 input_text 辅助实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择要绑定此文本输入框的 input_text 实体。", + "entity_info": "检测到的实体属性:", + "appearance": { + "title": "外观", + "desc": "配置文本输入框的外观。" + }, + "input_appearance": "输入框样式", + "input_appearance_desc": "输入框的视觉样式", + "appearance_options": { + "outlined": "描边", + "filled": "填充", + "underlined": "下划线" + }, + "placeholder": "占位符", + "placeholder_desc": "输入框为空时显示的占位文本", + "label": "标签", + "label_desc": "显示在输入框上方的标签", + "show_label": "显示标签", + "show_label_desc": "在输入框上方显示标签", + "multiline": "多行", + "multiline_desc": "允许多行文本(textarea)", + "rows": "行数", + "rows_desc": "可见文本行数", + "controls": { + "title": "图标与控件" + }, + "prefix_icon": "前置图标", + "prefix_icon_desc": "显示在输入框开头的图标", + "suffix_icon": "后置图标", + "suffix_icon_desc": "显示在输入框末尾的图标", + "show_clear_button": "显示清除按钮", + "show_clear_button_desc": "显示用于清空输入框的按钮", + "show_character_count": "显示字符计数", + "show_character_count_desc": "在输入框下方显示字符计数器", + "styling": { + "title": "样式" + }, + "font_size": "字号", + "font_size_desc": "输入文本的字体大小(像素)", + "text_color": "文字颜色", + "focus_color": "聚焦/强调色", + "error_configure_entity_desc": "在「常规」标签页中选择一个 input_text 实体" + }, + "datetime_input": { + "entity": { + "title": "实体配置", + "desc": "关联到 Home Assistant 的 input_datetime 辅助实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择要绑定此选择器的 input_datetime 实体。", + "entity_info": "检测到的实体属性:", + "display": { + "title": "显示配置", + "desc": "配置显示哪些选择器及其外观。" + }, + "display_mode_datetime": "显示模式", + "display_mode_datetime_desc": "要显示哪些选择器。自动模式会根据实体检测。", + "display_mode_options": { + "auto": "自动(来自实体)", + "date": "仅日期", + "time": "仅时间", + "datetime": "日期和时间" + }, + "label": "标签", + "label_desc": "显示在选择器字段上方的标签", + "show_label": "显示标签", + "show_label_desc": "在选择器上方显示标签", + "date_label": "日期", + "time_label": "时间", + "styling": { + "title": "样式" + }, + "font_size": "字号", + "font_size_desc": "日期/时间输入框的字体大小(像素)", + "text_color": "文字颜色", + "focus_color": "聚焦/强调色", + "error_configure_entity_desc": "在「常规」标签页中选择一个 input_datetime 实体" + }, + "number_input": { + "entity": { + "title": "实体配置", + "desc": "关联到 Home Assistant 的 input_number 辅助实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择要绑定此字段的 input_number 实体。", + "appearance": { + "title": "外观", + "desc": "配置数字输入框的外观。" + }, + "input_appearance": "输入框样式", + "input_appearance_desc": "输入框的视觉样式", + "appearance_options": { + "outlined": "描边", + "filled": "填充", + "underlined": "下划线" + }, + "label": "标签", + "label_desc": "显示在输入框上方的标签", + "show_label": "显示标签", + "show_label_desc": "在输入框上方显示标签", + "controls": { + "title": "控件" + }, + "show_stepper": "显示 +/- 按钮", + "show_stepper_desc": "显示递增/递减步进按钮", + "show_unit": "显示单位", + "show_unit_desc": "显示计量单位", + "styling": { + "title": "样式" + }, + "font_size": "字号", + "font_size_desc": "输入文本的字体大小(像素)", + "text_color": "文字颜色", + "focus_color": "聚焦/强调色", + "error_configure_entity_desc": "在「常规」标签页中选择一个 input_number 实体" + }, + "slider_input": { + "entity": { + "title": "实体配置", + "desc": "关联到 Home Assistant 的 input_number 辅助实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择要绑定此滑块的 input_number 实体。", + "display": { + "title": "显示", + "desc": "配置滑块上显示哪些信息。" + }, + "label": "标签", + "label_desc": "显示在滑块上方的标签", + "show_label": "显示标签", + "show_label_desc": "显示标签", + "show_value": "显示数值", + "show_value_desc": "显示当前数值", + "show_min_max": "显示最小值/最大值", + "show_min_max_desc": "在两端显示最小值和最大值", + "show_unit": "显示单位", + "show_unit_desc": "显示计量单位", + "styling": { + "title": "样式" + }, + "slider_height": "轨道高度", + "slider_height_desc": "滑块轨道的高度(像素)", + "thumb_size": "滑块按钮大小", + "thumb_size_desc": "滑块按钮的大小(像素)", + "font_size": "字号", + "font_size_desc": "标签和数值的字体大小", + "slider_color": "滑块颜色", + "track_color": "轨道颜色", + "text_color": "文字颜色", + "error_configure_entity_desc": "在「常规」标签页中选择一个 input_number 实体" + }, + "select_input": { + "entity": { + "title": "实体配置", + "desc": "关联到 Home Assistant 的 input_select 或 select 实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择要绑定的 input_select 实体。", + "appearance": { + "title": "外观", + "desc": "选择选项的显示方式。" + }, + "select_style": "选择样式", + "select_style_desc": "选项呈现给用户的方式", + "style_options": { + "dropdown": "下拉框", + "segmented": "分段按钮", + "chips": "标签 / 药丸按钮" + }, + "label": "标签", + "label_desc": "显示在选择器上方的标签", + "show_label": "显示标签", + "show_label_desc": "显示标签", + "styling": { + "title": "样式" + }, + "font_size": "字号", + "font_size_desc": "字体大小(像素)", + "active_color": "激活/选中颜色", + "text_color": "文字颜色", + "error_configure_entity_desc": "在「常规」标签页中选择一个 input_select 实体" + }, + "boolean_input": { + "entity": { + "title": "实体配置", + "desc": "关联到 Home Assistant 的 input_boolean 或 switch 实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择 input_boolean 或 switch 实体。", + "appearance": { + "title": "外观", + "desc": "配置切换开关的样式和标签。" + }, + "toggle_style": "切换开关样式", + "toggle_style_desc": "切换开关的视觉样式", + "style_options": { + "switch": "开关", + "checkbox": "复选框", + "pill": "药丸形切换开关" + }, + "label": "标签", + "label_desc": "显示在切换开关旁的标签", + "show_label": "显示标签", + "show_label_desc": "显示标签", + "show_state_text": "显示状态文字", + "show_state_text_desc": "在切换开关旁显示开/关文字", + "on_text": "开启文字", + "on_text_desc": "开启状态的自定义文字(默认:On)", + "off_text": "关闭文字", + "off_text_desc": "关闭状态的自定义文字(默认:Off)", + "styling": { + "title": "样式" + }, + "font_size": "字号", + "font_size_desc": "字体大小(像素)", + "on_color": "开启颜色", + "off_color": "关闭颜色", + "text_color": "文字颜色", + "error_configure_entity_desc": "在「常规」标签页中选择一个 input_boolean 实体" + }, + "button_input": { + "entity": { + "title": "实体配置", + "desc": "关联到 Home Assistant 的 input_button 辅助实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择按下时触发的 input_button 实体。", + "appearance": { + "title": "外观", + "desc": "配置按钮的文字、图标和样式。" + }, + "button_label": "按钮文字", + "button_label_desc": "按钮上显示的文字(留空则使用实体名称)", + "button_icon": "图标", + "button_icon_desc": "按钮上显示的图标", + "button_style": "按钮样式", + "button_style_desc": "按钮的视觉样式", + "style_options": { + "filled": "填充", + "outlined": "描边", + "text": "仅文字" + }, + "styling": { + "title": "样式" + }, + "font_size": "字号", + "font_size_desc": "字体大小(像素)", + "button_color": "按钮颜色", + "text_color": "文字颜色", + "error_configure_entity_desc": "在「常规」标签页中选择一个 input_button 实体" + }, + "counter_input": { + "entity": { + "title": "实体配置", + "desc": "关联到 Home Assistant 的 counter 辅助实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择要控制的 counter 实体。", + "appearance": { + "title": "外观", + "desc": "配置布局和显示选项。" + }, + "counter_style": "布局样式", + "counter_style_desc": "计数器与按钮的排列方式", + "style_options": { + "inline": "行内(- 数值 +)", + "stacked": "堆叠(按钮在下)", + "compact": "紧凑(小)" + }, + "label": "标签", + "label_desc": "显示在计数器上方的标签", + "show_label": "显示标签", + "show_label_desc": "显示标签", + "show_reset": "显示重置按钮", + "show_reset_desc": "显示重置按钮", + "styling": { + "title": "样式" + }, + "font_size": "数值字号", + "font_size_desc": "计数器数值的字体大小", + "button_color": "按钮颜色", + "text_color": "文字颜色", + "error_configure_entity_desc": "在「常规」标签页中选择一个 counter 实体" + }, + "color_input": { + "mode": { + "title": "颜色模式", + "desc": "选择颜色值的存储方式。" + }, + "color_mode": "颜色模式", + "color_mode_desc": "Hex 存储到 input_text,Light RGB 控制灯光实体", + "mode_options": { + "hex": "Hex(input_text)", + "light_rgb": "灯光 RGB 颜色" + }, + "entity": { + "title": "实体配置", + "desc": "选择用于存储或控制颜色的实体。" + }, + "entity_field": "实体", + "entity_field_desc": "选择一个实体。", + "display": { + "title": "显示" + }, + "label": "标签", + "label_desc": "颜色选择器上方的标签", + "show_label": "显示标签", + "show_label_desc": "显示标签", + "show_hex_input": "显示 Hex 输入框", + "show_hex_input_desc": "显示带有十六进制值的文本框", + "show_preview": "显示颜色预览", + "show_preview_desc": "显示色块预览", + "styling": { + "title": "样式" + }, + "preview_size": "预览大小", + "preview_size_desc": "颜色预览色块的大小", + "font_size": "字号", + "font_size_desc": "字体大小(像素)", + "text_color": "文字颜色", + "error_configure_entity_desc": "在「常规」标签页中选择一个实体" + }, + "gauge": { + "error_no_entity": "选择实体", + "error_no_entity_desc": "在“常规”标签页中选择一个实体", + "section_basic": "基础配置", + "section_value": "数值配置", + "section_style": "仪表样式", + "section_pointer": "指针配置", + "section_pointer_desc": "启用并自定义指示当前值的仪表指针。", + "section_color": "颜色配置", + "section_display": "显示配置", + "section_ticks": "刻度标记", + "section_animation": "动画", + "entity": "实体" + }, + "alert_center": { + "default_title": "警报中心", + "section_basic": "基本", + "section_basic_desc": "警报中心的核心行为与显示设置。", + "title": "标题", + "title_desc": "显示在警报上方的标题文字。", + "show_title": "显示标题", + "show_title_desc": "显示警报中心的标题。", + "max_alerts": "最大警报数", + "max_alerts_desc": "显示的最大活动警报数。", + "show_state": "显示状态", + "show_state_desc": "在每一行显示实体当前状态。", + "show_all_clear": "显示全部正常状态", + "show_all_clear_desc": "当没有活动警报时显示友好的全部正常提示。", + "section_sources": "自动来源", + "section_sources_desc": "选择自动监控活动警报的域。", + "include_alert_domain": "警报实体", + "include_alert_domain_desc": "监控 alert 域中的实体。", + "include_binary_sensors": "二进制传感器", + "include_binary_sensors_desc": "监控相关的二进制传感器(烟雾、漏水、门、人体移动等)。", + "include_lock_alerts": "门锁警报", + "include_lock_alerts_desc": "监控已解锁/卡住的门锁状态。", + "include_alarm_panel_alerts": "报警面板", + "include_alarm_panel_alerts_desc": "监控已布防/已触发的报警面板状态。", + "section_style": "样式", + "section_style_desc": "自定义警报颜色和卡片圆角。", + "tile_radius": "磁贴圆角", + "tile_radius_desc": "调整警报中心磁贴的圆角。", + "section_entities": "实体覆盖", + "section_entities_desc": "手动包含或排除特定实体。", + "include_entities": "始终包含的实体", + "include_entities_desc": "即使在自动来源域之外,也会检查这些实体的活动警报状态。", + "include_add": "添加包含的实体", + "hidden_entities": "隐藏的实体", + "hidden_entities_desc": "从警报中心结果中排除特定实体。", + "hidden_add": "添加隐藏实体", + "no_alerts": "无活动警报", + "no_alerts_desc": "启用 \"显示全部正常状态\" 以显示平静的兜底提示。", + "all_clear": "全部正常", + "all_clear_desc": "未检测到活动警报。" + }, + "battery_monitor": { + "error_manual_empty": "至少添加一个实体,或将发现模式切换为 Auto 或 Both。", + "section_style": "样式", + "style_list": "列表", + "style_list_desc": "紧凑行", + "style_bars": "条形", + "style_bars_desc": "全宽条形", + "style_cards": "卡片", + "style_cards_desc": "磁贴网格", + "style_rings": "环形", + "style_rings_desc": "圆形仪表", + "style_strip": "条带", + "style_strip_desc": "热力条带", + "section_display": "显示", + "title": "标题", + "title_desc": "列表上方的标题。", + "show_title": "显示标题", + "show_title_desc": "显示标题。", + "show_charging": "显示充电指示", + "show_charging_desc": "当找到充电用的 binary_sensor 时。", + "show_pct": "显示百分比", + "show_pct_desc": "在每个设备旁显示数字百分比。", + "show_item_border": "显示条目边框", + "show_item_border_desc": "在每个设备磁贴周围绘制 1px 边框。关闭可获得无边框外观。", + "max_items": "最大条目数", + "max_items_desc": "显示的最大设备数。", + "sort": "排序", + "sort_desc": "设备的排列顺序。", + "sort_low": "最低优先", + "sort_high": "最高优先", + "sort_name": "名称 A–Z", + "sort_raw": "保持不变", + "section_thresholds": "阈值", + "critical": "严重阈值", + "critical_desc": "等于或低于此百分比时使用严重颜色。", + "low": "低电量阈值", + "low_desc": "等于或低于此百分比时使用低电量颜色(高于严重阈值)。", + "only_low": "仅显示低于低电量阈值的设备", + "only_low_desc": "隐藏高于低电量阈值的设备。", + "section_source": "实体来源", + "discovery_mode": "发现模式", + "discovery_mode_desc": "Auto 会扫描 Home Assistant;manual 使用下方列表;both 会合并两者。", + "mode_auto": "自动", + "mode_manual": "手动", + "mode_both": "两者", + "include_bl_attr": "包含 battery_level 属性", + "include_bl_attr_desc": "扫地机、追踪器、手机等。", + "include_bin": "包含 binary_sensor 电池", + "include_bin_desc": "对 device_class 为 battery 的实体,映射为 on = 电量低 / off = 正常。", + "manual_entities": "手动添加的实体", + "manual_entities_desc": "选择要包含的实体。展开某一行可设置覆盖。", + "add_entity": "添加实体", + "section_colors": "颜色", + "color_critical": "严重", + "color_low": "低", + "color_ok": "OK", + "color_charging": "充电中", + "color_text": "文本", + "color_secondary": "次要文字", + "color_card_bg": "卡片背景", + "exclude_patterns": "排除模式", + "exclude_patterns_desc": "包含这些子字符串的实体 ID 会被忽略。", + "pattern_ph": "例如 test, backup", + "hidden_entities": "隐藏的实体", + "hidden_entities_desc": "已从自动发现中移除;点击 × 可重新显示。", + "no_entity": "未选择实体", + "entity": "实体", + "entity_desc": "电池或相关传感器。", + "label_override": "标签覆盖", + "icon_override": "图标覆盖", + "row_color": "行颜色覆盖", + "err_ha": "正在等待 Home Assistant", + "err_ha_desc": "正在连接实体状态…", + "err_empty": "未找到电池设备", + "err_empty_desc": "在「常规」标签页中调整发现模式、手动实体或阈值。", + "default_title": "电池监控", + "preview_remove": "从列表移除", + "strip_hint": "点击某个分段可查看更多信息。颜色反映电池电量。" + }, + "auto_entity_list": { + "default_title": "自动实体列表", + "section_style": "行样式", + "style_compact": "紧凑", + "style_compact_desc": "图标 + 名称 + 状态", + "style_detailed": "详细", + "style_detailed_desc": "两行式行", + "style_slim": "纤细", + "style_slim_desc": "仅名称,紧凑", + "style_card": "卡片", + "style_card_desc": "带强调色的药丸行", + "section_display": "显示", + "title": "标题", + "title_desc": "列表上方的标题。", + "show_title": "显示标题", + "show_title_desc": "显示标题。", + "show_icon": "显示图标", + "show_icon_desc": "显示每个实体的图标。", + "show_state": "显示状态", + "show_state_desc": "显示当前状态值。", + "show_last_changed": "显示最后变更时间", + "show_last_changed_desc": "显示 \"2 分钟前\" 样式的时间戳。", + "use_entity_color": "用实体颜色渲染状态", + "use_entity_color_desc": "当实体提供颜色(如灯泡 RGB 等)时,用它来渲染状态、图标和卡片强调色。", + "section_card_size": "卡片尺寸", + "card_height": "卡片高度", + "card_height_desc": "最小行高。0 = 自动(适应内容)。", + "card_width": "卡片宽度", + "card_width_desc": "最大行宽(像素)。0 = 填满容器。", + "max_items": "最大条目数", + "max_items_desc": "显示的最大实体数。", + "row_gap": "行间距", + "row_gap_desc": "行与行之间的垂直间距。适用于所有样式。", + "columns": "列数", + "columns_desc": "以网格排列行。1 = 单列(默认)。", + "sort_by": "排序方式", + "sort_by_desc": "实体的排列顺序。", + "sort_name": "名称 A–Z", + "sort_last_changed": "最后变更", + "sort_state": "状态(文本)", + "sort_domain": "域", + "sort_direction": "排序方向", + "sort_asc": "升序", + "sort_desc_dir": "降序", + "section_filters": "滤镜", + "include_domains": "域", + "include_domains_desc": "仅包含这些域中的实体(例如 light、binary_sensor)。留空 = 全部。", + "include_domains_ph": "例如 light, sensor", + "include_device_classes": "设备类别", + "include_device_classes_desc": "按 attributes.device_class 过滤(例如 motion、door、temperature)。", + "include_device_classes_ph": "例如 motion, door", + "state_filter": "状态条件(可选)", + "state_filter_desc": "仅显示状态匹配的实体。将运算符留空即可停用。", + "include_keywords": "包含关键词", + "include_keywords_desc": "实体 ID 必须至少包含其中一个子字符串。", + "exclude_keywords": "排除关键词", + "exclude_keywords_desc": "包含其中任一子字符串的实体 ID 会被忽略。", + "keyword_ph": "例如 living, kitchen", + "show_unavailable": "显示不可用 / 未知", + "show_unavailable_desc": "关闭时,处于 unavailable 或 unknown 状态的实体会被隐藏。", + "section_source": "实体来源", + "pinned_entities": "置顶实体", + "pinned_entities_desc": "无论筛选条件如何都始终排在最前。点击标签可编辑覆盖项;悬停可移除。", + "pin_entity": "置顶实体", + "pinned_add": "添加置顶实体", + "hidden_entities": "隐藏的实体", + "hidden_entities_desc": "已从自动列表中移除。点击标签上的 × 可移除。", + "hidden_add": "添加隐藏实体", + "no_entity": "未选择实体", + "entity": "实体", + "entity_desc": "要置顶到顶部的实体。", + "overrides_for": "覆盖设置:", + "label_override": "标签覆盖", + "icon_override": "图标覆盖", + "row_color": "行颜色覆盖", + "section_colors": "颜色", + "color_text": "文本", + "color_secondary": "次要文字", + "color_card_bg": "卡片背景", + "color_accent": "强调色 / 图标", + "color_active": "活动状态", + "color_inactive": "非活动状态", + "err_ha": "正在等待 Home Assistant", + "err_ha_desc": "正在连接实体状态…", + "err_empty": "没有匹配的实体", + "err_empty_desc": "在「常规」标签页中调整筛选条件,或置顶一些实体。", + "preview_remove": "从列表移除" + }, + "area_summary": { + "validate_area": "选择 Home Assistant 区域", + "room": "房间", + "no_climate": "无温控数据", + "section_area": "区域", + "section_area_desc": "选择此磁贴所代表的 Home Assistant 区域。", + "area": "区域", + "area_desc": "实体从区域注册表中发现。", + "area_loading": "正在加载区域…", + "area_error": "无法加载区域", + "title": "标题覆盖", + "title_desc": "留空则使用区域名称。", + "room_icon": "房间图标", + "room_icon_desc": "磁贴上显示的大图标。", + "temperature_entity": "温度实体覆盖", + "temperature_entity_desc": "可选。使用此实体获取温度,而非自动发现。", + "humidity_entity": "湿度实体覆盖", + "humidity_entity_desc": "可选。使用此实体获取湿度,而非自动发现。", + "accent": "强调色", + "accent_desc": "用于高亮和活动状态。", + "section_look": "外观风格", + "section_look_desc": "磁贴的视觉预设。选择 Photo 叠加预设时会出现照片背景选项。", + "preset_desc": "磁贴的布局与装饰风格。", + "max_quick": "最大快捷操作数", + "max_quick_desc": "已发现实体的圆形快捷方式。", + "tile_radius": "磁贴圆角", + "tile_radius_desc": "调整房间磁贴的圆角。", + "show_entity_names": "显示实体名称", + "show_entity_names_desc": "在每个快捷操作的图标旁显示其友好名称。", + "room_bg_type": "照片背景来源", + "room_bg_type_desc": "为 Photo 叠加磁贴选择无、上传、实体图片或 URL。", + "room_bg_none": "无", + "room_bg_upload": "上传", + "room_bg_entity": "实体图片", + "room_bg_url": "图片 URL", + "room_bg_url_section": "图片 URL", + "room_bg_image_url": "图片 URL", + "room_bg_image_url_desc": "图片的直接 URL(https 或 /local/…)。", + "room_bg_upload_section": "上传图片", + "room_bg_upload_btn": "上传文件", + "room_bg_upload_btn_desc": "从你的设备中选择一张图片。它会存储在你的 Ultra Card 上传路径中。", + "room_bg_uploaded": "图片已就绪", + "room_bg_upload_error": "上传失败", + "room_bg_entity_section": "实体图片", + "room_bg_entity_label": "图片实体", + "room_bg_entity_help": "选择提供 entity_picture 的实体(人员、摄像头、媒体播放器等)。", + "bg_overlay": "背景叠加 %", + "bg_overlay_desc": "将照片调暗以提高可读性。", + "section_discovery": "发现", + "section_discovery_desc": "选择哪些类别显示为快捷操作。", + "disc_lights": "灯光", + "disc_lights_d": "包含此区域中的灯光。", + "disc_climate": "温控", + "disc_climate_d": "包含温控器 / 温控实体。", + "disc_temp": "温度传感器", + "disc_temp_d": "设备类别为 temperature 的传感器。", + "disc_hum": "湿度传感器", + "disc_hum_d": "设备类别为 humidity 的传感器。", + "disc_motion": "人体移动 / 占用", + "disc_motion_d": "用于人体移动或占用的二进制传感器。", + "disc_dw": "门窗", + "disc_dw_d": "门窗的开/关传感器。", + "disc_media": "媒体播放器", + "disc_media_d": "音箱、电视和媒体播放器。", + "disc_presence": "人员", + "disc_presence_d": "该区域中的人员实体和存在传感器。", + "disc_covers": "窗帘", + "disc_covers_d": "百叶帘、窗帘、车库门。", + "disc_fans": "风扇", + "disc_fans_d": "风扇实体。", + "disc_locks": "门锁", + "disc_locks_d": "门锁实体。", + "disc_switches": "开关", + "disc_switches_d": "开关实体(不含灯光)。", + "section_pin": "置顶与隐藏", + "section_pin_desc": "将实体置顶到快捷行前部,或将其完全隐藏。", + "pinned": "置顶实体", + "pinned_desc": "当区域内存在这些实体时,会显示在快捷行最前面。点击标签上的 × 可移除。", + "pinned_add": "添加置顶实体", + "hidden": "隐藏的实体", + "hidden_desc": "从磁贴和汇总统计中排除。点击标签上的 × 可移除。", + "hidden_add": "添加隐藏实体", + "registry_error": "无法加载区域注册表。请检查 Home Assistant 连接后刷新。", + "pick_area": "选择区域", + "pick_area_desc": "在“常规”选项卡中选择一个 Home Assistant 区域,以自动发现实体。", + "resolve_error": "无法加载区域", + "retry": "重试", + "pill_lights": "灯光", + "lights_line": "{total} 盏灯中 {on} 盏亮着", + "preset_label": "样式预设", + "preset": { + "iconic_soft": "图标柔和", + "graph_glow": "图表辉光", + "compact_controls": "紧凑控件", + "photo_overlay": "照片叠加" + } + }, + "activity_feed": { + "error_waiting_ha": "正在等待 Home Assistant", + "error_waiting_ha_desc": "正在连接实体状态...", + "error_no_activity": "暂无活动", + "error_no_activity_desc": "在“常规”选项卡中配置实体或域", + "preview": { + "title_fallback": "活动动态" + } + }, + "media_player": { + "section_entity": "实体配置", + "section_entity_desc": "选择要控制的媒体播放器实体", + "entity": "媒体播放器实体", + "section_layout": "布局", + "section_layout_desc": "选择显示布局", + "section_display": "显示选项", + "section_display_desc": "选择要显示的元素", + "section_behavior": "行为", + "section_behavior_desc": "控制交互行为", + "section_visual": "外观", + "section_visual_desc": "自定义外观", + "error_no_entity": "配置实体", + "error_no_entity_desc": "在“常规”选项卡中选择一个媒体播放器实体" + }, + "slider_control": { + "error_no_bars": "添加滑动条", + "error_no_bars_desc": "在“常规”选项卡中配置滑动条", + "error_need_entities": "滑动条需要实体" + }, + "vacuum": { + "section_entity": "实体配置", + "section_entity_desc": "选择要控制的扫地机实体", + "entity": "扫地机实体", + "name": "显示名称", + "name_desc": "要显示的自定义名称(留空则使用实体名称)", + "section_animations": "动画", + "section_animations_desc": "控制扫地机动画" + }, + "navigation": { + "section_desktop": "桌面模式", + "section_desktop_desc": "配置导航栏在桌面设备上的外观与行为。", + "section_mobile": "移动模式", + "section_mobile_desc": "配置导航栏在移动设备上的外观与行为。", + "section_haptics": "触感反馈", + "section_haptics_desc": "配置交互时的触感反馈。", + "section_collapse": "折叠与自动隐藏", + "section_collapse_desc": "隐藏导航栏以腾出仪表盘空间。可选择边缘手柄、图标栏或滚动时隐藏。折叠与自动隐藏互斥。", + "collapse_enable": "启用折叠", + "collapse_enable_desc": "允许导航栏按需折叠与展开。", + "collapse_mode": "折叠模式", + "collapse_mode_desc": "导航栏折叠与重新出现的方式。", + "collapse_mode_handle": "边缘手柄", + "collapse_mode_rail": "图标栏", + "collapse_mode_scroll": "滚动时隐藏", + "start_collapsed": "启动时折叠", + "start_collapsed_desc": "若没有已保存的偏好设置,则以折叠状态开始。", + "remember_state": "记住状态", + "remember_state_desc": "在重新加载后保持折叠/展开状态。", + "handle_icon": "手柄图标", + "handle_icon_desc": "折叠时显示在边缘标签上的图标。", + "handle_size": "手柄大小", + "handle_size_desc": "边缘标签的大小(以像素为单位)。", + "handle_position": "手柄位置", + "handle_position_desc": "手柄沿边缘的位置(百分比)。", + "rail_size": "图标栏大小", + "rail_size_desc": "折叠后图标栏的宽度/高度(以像素为单位)。", + "backdrop": "背景遮罩", + "backdrop_desc": "在展开的侧边导航栏后方调暗仪表盘。左/右方向默认开启。", + "close_on_navigate": "导航后关闭", + "close_on_navigate_desc": "点击路由后折叠导航栏。", + "scroll_threshold": "滚动阈值", + "scroll_threshold_desc": "导航栏隐藏或重新出现前需滚动的像素数。", + "autohide_enable": "启用自动隐藏", + "autohide_enable_desc": "macOS 风格:闲置后隐藏,鼠标悬停到边缘时显示。仅适用于桌面鼠标。", + "autohide_delay": "隐藏延迟", + "autohide_delay_desc": "导航栏隐藏前的无操作秒数。", + "autohide_disabled_by_collapse": "启用折叠时无法使用自动隐藏。请停用折叠后再使用自动隐藏。" + }, + "climate": { + "entity_config_title": "实体配置", + "entity_config_desc": "选择要控制的温控实体", + "entity": "温控实体", + "error_no_entity": "无温控实体", + "error_no_entity_desc": "在“常规”选项卡中选择一个温控实体", + "error_not_found": "未找到实体" + }, + "energy_display": { + "error_no_nodes": "配置能源节点", + "error_no_nodes_desc": "在“常规”选项卡中添加太阳能、电网、电池和家庭用电的实体。" + }, + "people": { + "error_no_entity": "选择人员实体", + "error_no_entity_desc": "在“常规”选项卡中选择一个人员实体", + "error_not_found": "未找到实体" + }, + "virtual_pet": { + "error_waiting_ha": "正在等待 Home Assistant", + "error_waiting_ha_desc": "正在连接实体状态..." + }, + "calendar": { + "error_no_calendars": "配置日历", + "error_no_calendars_desc": "在“常规”选项卡中至少选择一个日历实体" + }, + "dynamic_list": { + "error_waiting_ha": "正在等待 Home Assistant", + "error_waiting_ha_desc": "此模块需要实时连接", + "error_no_todo": "无待办列表", + "error_no_todo_desc": "添加待办列表(例如 Local Todo),或在“常规”选项卡中选择一个。当至少有一个待办实体时,可使用“默认(第一个可用)”。", + "error_no_todo_entity_desc": "在“常规”选项卡中选择一个待办列表实体。", + "error_add_template": "添加模板", + "error_add_template_todo_desc": "在“常规”选项卡中输入 Jinja2 模板,以将待办事项映射为模块。", + "error_invalid_template": "模板输出无效", + "error_invalid_template_desc": "模板必须通过 {{ ns.mods | tojson }} 输出 JSON 数组。", + "error_configure_action": "配置动作", + "error_configure_action_desc": "在“常规”选项卡中设置域和服务。", + "error_add_template_action_desc": "在“常规”选项卡中输入 Jinja2 模板,以将服务响应映射为模块。", + "error_invalid_template_action_desc": "模板必须通过 {{ ns.mods | tojson }} 输出 JSON 数组。", + "error_add_jinja_template": "添加 Jinja2 模板", + "error_add_jinja_template_desc": "在“常规”选项卡中输入模板以动态生成模块", + "error_invalid_template_jinja_desc": "模板必须输出 JSON 数组。请在模板末尾使用 {{ ns.mods | tojson }}。" + }, + "light": { + "section_presets": "灯光预设", + "section_presets_desc": "配置具有特定颜色、亮度和效果的灯光预设。每个预设可控制不同的实体。", + "add_preset": "+ 添加新预设", + "section_layout": "布局配置", + "section_wrapping": "按钮换行", + "section_wrapping_desc": "控制按钮是否换行到下一行", + "section_import_export": "导入/导出", + "section_import_export_desc": "保存并分享你的预设配置", + "section_advanced": "高级选项", + "section_advanced_desc": "微调模块行为" + }, + "accordion": { + "preview": { + "title_fallback": "手风琴标题" + } + }, + "animated_forecast": { + "preview": { + "no_data": "暂无预报数据" + }, + "icon_style_fill": "填充", + "icon_style_line": "描边" + }, + "animated_weather": { + "entity_section": "天气实体", + "entity": "天气实体", + "layout_section": "布局设置", + "layout_spread": "布局展开度", + "layout_spread_desc": "0% 紧凑 ↔ 100% 全宽", + "left_column_gap": "左列间距", + "left_column_gap_desc": "0–32px", + "right_column_gap": "右列间距", + "right_column_gap_desc": "0–32px", + "icon_section": "中间列(天气图标)", + "icon_size": "图标大小", + "icon_size_desc": "0–300px", + "icon_style": "图标样式", + "icon_style_filled": "填充", + "icon_style_outlined": "描边", + "column_items_section": "列项目", + "column_items_desc": "拖动项目可在列内或列之间重新排序。蓝色线条会显示项目将落入的确切位置。点击眼睛图标可切换可见性,点击箭头可编辑大小与颜色。", + "left_column": "左列", + "right_column": "右列", + "item_size": "大小", + "item_color": "颜色" + }, + "status_summary": { + "title_display": "标题与显示", + "title": "标题", + "title_desc": "显示在汇总顶部的标题。", + "show_title": "显示标题", + "show_title_desc": "在汇总顶部显示标题。", + "show_last_change_header": "显示“上次变化”表头", + "show_last_change_header_desc": "显示“上次变化”列表头。", + "show_time_header": "显示“时间”表头", + "show_time_header_desc": "显示“时间”列表头。", + "sort_by": "排序方式", + "sort_by_desc": "实体列表的排序方式。", + "sort_direction": "排序方向", + "sort_direction_desc": "排序顺序的方向。", + "max_items_to_show": "最多显示项数", + "max_items_to_show_desc": "最多显示的实体数量。设为 0 表示不限制。", + "global_display_settings": "全局显示设置", + "global_display_settings_desc": "为所有实体设置默认显示选项。单个实体的设置将覆盖这些选项。", + "global_show_icon": "显示图标", + "global_show_icon_desc": "默认显示所有实体的图标。", + "global_show_state": "显示状态", + "global_show_state_desc": "默认显示所有实体的状态(例如“on”、“off”)。", + "entity_management": "实体管理", + "add_entity": "添加实体", + "auto_filter": "自动筛选", + "enable_auto_filter": "启用自动筛选", + "enable_auto_filter_desc": "根据域和设备类别筛选条件自动纳入实体。", + "include_filters": "包含筛选", + "include_filters_desc": "添加要包含的域或部分名称。示例:“binary_sensor”、“light”、“garage”、“kitchen”", + "exclude_filters": "排除筛选", + "exclude_filters_desc": "添加要排除的域或部分名称。示例:“battery”、“update”、“unavailable”", + "global_color_mode": "全局颜色模式", + "global_color_mode_desc": "为所有实体设置默认颜色模式。单个实体的颜色模式将覆盖此设置。", + "global_color_mode_select": "全局颜色模式", + "global_color_mode_select_desc": "默认的实体颜色判定方式。", + "global_unified_color_desc": "带“color”键的 JSON(CSS 颜色),或渲染为颜色字符串的普通模板。", + "time_filtering": "时间筛选", + "max_time_since_change": "距上次变化最长时间(分钟)", + "layout": "布局", + "row_height": "行高(px)", + "row_height_desc": "每个实体行的高度(以像素为单位)。", + "row_gap": "行间距(px)", + "row_gap_desc": "实体行之间的间距(以像素为单位)。", + "max_entity_name_length": "实体名称最大长度", + "max_entity_name_length_desc": "实体名称截断前最多显示的字符数。", + "show_separator_lines": "显示分隔线", + "show_separator_lines_desc": "在实体行之间显示线条。", + "default_colors": "默认颜色", + "default_text_color": "默认文字颜色", + "default_icon_color": "默认图标颜色", + "header_text_color": "表头文字颜色", + "header_background_color": "表头背景颜色", + "entity": "实体", + "entity_desc": "要监视状态的实体。", + "label": "标签覆盖", + "label_desc": "用于替代实体名称显示的自定义标签。", + "icon": "图标覆盖", + "icon_desc": "用于替代实体图标显示的自定义图标。", + "show_icon": "显示图标", + "show_icon_desc": "显示实体图标。未设置时使用全局设置。", + "show_state": "显示状态", + "show_state_desc": "显示实体状态。未设置时使用全局设置。", + "color_mode": "颜色模式", + "color_mode_desc": "此实体的颜色判定方式。", + "entity_unified_color_desc": "带“color”键的 JSON,或渲染为颜色字符串的普通模板。", + "global_state_colors": "全局状态颜色", + "add_state_color": "添加状态颜色", + "global_time_thresholds": "全局时间阈值", + "add_time_threshold": "添加时间阈值", + "state_colors": "状态颜色", + "time_thresholds": "时间阈值", + "max_time_since_change_desc": "隐藏这么多分钟内未发生变化的实体。留空表示不限制。", + "template_cheatsheet": "模板速查表" + }, + "lunar_phase": { + "pro_description": "Lunar Phase 是 Pro 功能,提供动态月亮动画、实时月球数据、月历和地平线图表。", + "config_needed": "设置位置", + "config_needed_desc": "在“常规”选项卡中选择位置来源", + "location_section": "位置", + "location_section_desc": "用于计算月亮位置、升起和落下时间的纬度与经度。", + "location_source": "位置来源", + "location_source_desc": "使用 Home Assistant 的位置、某个实体或手动坐标。", + "location_default": "系统", + "location_entity_opt": "实体", + "location_custom": "自定义", + "location_entity_group": "位置实体", + "location_entity": "具有纬度/经度属性的实体", + "location_custom_group": "自定义坐标", + "latitude": "纬度", + "latitude_desc": "十进制度数,-90 到 90", + "longitude": "经度", + "longitude_desc": "十进制度数,-180 到 180", + "southern_hemisphere": "南半球", + "southern_hemisphere_desc": "按赤道以南看到的月相镜像显示月亮图像。", + "layout_section": "视图与布局", + "layout_section_desc": "选择默认视图、布局样式和月亮图形选项。", + "default_view": "默认视图", + "default_view_desc": "卡片加载时显示的视图。", + "view_phase": "月相", + "view_calendar": "日历", + "view_horizon": "地平线", + "layout": "布局样式", + "layout_desc": "完整模式显示全部内容;紧凑样式适合较小的仪表盘位置,点击后可展开。", + "layout_full": "完整", + "layout_compact": "紧凑", + "layout_minimal": "简约", + "layout_moon_only": "仅月亮", + "moon_position": "月亮位置", + "moon_position_desc": "月亮图形位于卡片的哪一侧(完整布局)。", + "position_left": "左", + "position_right": "右", + "moon_size": "月亮大小", + "moon_size_desc": "月亮图形的直径。", + "items_per_page": "每页数据项数", + "items_per_page_desc": "列表分页前显示的行数。可滑动或点击圆点切换页面。", + "show_view_switcher": "显示视图切换器", + "show_view_switcher_desc": "用于在月相、日历和地平线视图之间切换的标题栏按钮。", + "show_date_nav": "显示日期导航", + "show_date_nav_desc": "页脚包含上一日/下一日箭头和返回今天的按钮。", + "data_section": "数据项", + "data_section_desc": "隐藏单个数据行,并控制数字与时间的格式。", + "hidden_items": "隐藏项", + "hidden_items_desc": "不应显示的数据行。", + "hide_item_add": "隐藏一项", + "number_decimals": "小数位数", + "number_decimals_desc": "照度、方位角等数值的精度。", + "use_miles": "以英里显示距离", + "use_miles_desc": "以英里而非公里显示月亮距离。", + "time_12hr": "12 小时制", + "time_12hr_desc": "使用 AM/PM 时间,而非 24 小时制。", + "graph_section": "地平线图表", + "graph_section_desc": "配置 24 小时月亮高度角图表。", + "graph_mode": "图表时间范围", + "graph_mode_desc": "今日显示从午夜到午夜;动态显示以当前时刻为中心的滚动 24 小时。", + "graph_today": "今天", + "graph_dynamic": "动态", + "graph_show_time": "显示升起/落下时间", + "graph_show_time_desc": "月出和月落标记处的时间标签。", + "graph_show_current": "显示当前位置", + "graph_show_current_desc": "月亮当前高度角处的脉动标记。", + "graph_show_highest": "显示最高点", + "graph_show_highest_desc": "月亮中天(最高高度角)处的标记。", + "graph_x_ticks": "显示时间轴", + "graph_x_ticks_desc": "图表底部的小时标签。", + "graph_y_ticks": "显示高度轴", + "graph_y_ticks_desc": "图表左侧的度数标签。", + "appearance_section": "外观", + "appearance_section_desc": "背景、星空、字体与颜色。", + "background_style": "背景", + "background_style_desc": "月亮与数据背后的背景。", + "bg_night_sky": "夜空", + "bg_theme": "主题", + "bg_custom": "图片", + "bg_transparent": "无", + "custom_bg_group": "自定义背景", + "custom_background": "背景图片", + "custom_background_desc": "上传图片或粘贴 URL。", + "show_starfield": "动态星空", + "show_starfield_desc": "叠加在背景上的闪烁星星。", + "show_compact_labels": "紧凑统计标签", + "show_compact_labels_desc": "在紧凑布局的统计项下方显示文字标签。", + "header_font_size": "标题字号", + "header_font_size_desc": "月相名称标题的字号。", + "header_text_transform": "标题文字样式", + "header_text_transform_desc": "应用于标题的文字转换。", + "header_color": "标题颜色", + "header_color_desc": "留空则使用自动颜色。", + "label_font_size": "标签字号", + "label_font_size_desc": "数据标签与数值的字号。", + "label_text_transform": "标签文字样式", + "label_text_transform_desc": "应用于数据标签的文字转换。", + "label_color": "标签颜色", + "label_color_desc": "留空则使用自动颜色。", + "accent_color": "强调色", + "accent_color_desc": "标记、选中日期、辉光和分页。留空则使用月光银色。", + "font_auto": "自动", + "font_small": "小", + "font_medium": "中", + "font_large": "大", + "font_x_large": "超大", + "font_xx_large": "特大", + "transform_none": "无", + "transform_capitalize": "首字母大写", + "transform_uppercase": "全部大写", + "transform_lowercase": "全部小写", + "today": "今天", + "back_to_today": "今天", + "prev_day": "上一日", + "next_day": "下一日", + "prev_month": "上个月", + "next_month": "下个月", + "collapse": "折叠", + "days": "天", + "age_short": "月龄", + "rise_short": "升起", + "set_short": "落下", + "over_horizon": "地平线以上", + "under_horizon": "地平线以下", + "items": { + "moon_age": "月龄", + "illumination": "照度", + "azimuth": "方位角", + "altitude": "高度角", + "distance": "距离", + "position": "位置", + "moonrise": "月出", + "moonset": "月落", + "moon_highest": "月亮最高点", + "next_full_moon": "下次满月", + "next_new_moon": "下次新月", + "next_phase": "下个月相" + }, + "phases": { + "new_moon": "新月", + "waxing_crescent": "蛾眉月", + "first_quarter": "上弦月", + "waxing_gibbous": "盈凸月", + "full_moon": "满月", + "waning_gibbous": "亏凸月", + "last_quarter": "下弦月", + "waning_crescent": "残月" + } + }, + "qr_code": { + "content_title": "内容", + "content_title_desc": "配置要编码的文字或 URL。", + "content_mode": "来源", + "content_mode_desc": "从何处获取要编码的文字", + "static": "静态 URL / 文本", + "unified_template": "统一模板", + "entity": "实体状态", + "static_content": "URL 或文本", + "static_desc": "要编码到 QR 码中的文本或 URL", + "unified_template_desc": "带“qr_content”(要编码的 URL 或文本)的 JSON,或普通 Jinja 字符串结果。", + "entity_picker": "实体", + "entity_picker_desc": "选择一个实体,其状态(或属性)将被编码到 QR 码中。", + "attribute": "属性(可选)", + "attribute_desc": "留空则使用状态;或填写如 friendly_name", + "display_title": "显示", + "alignment": "对齐方式", + "align_left": "左", + "align_center": "居中", + "align_right": "右", + "show_label": "显示标签", + "size": "大小", + "size_desc": "宽度与高度(以像素为单位)", + "label_text": "标签文字", + "label_below": "标签显示在 QR 码下方", + "style_title": "样式", + "dot_style": "点样式", + "dot_style_desc": "每个数据模块的形状", + "dot_square": "方形", + "dot_dots": "圆点", + "dot_rounded": "圆角", + "dot_extra_rounded": "超圆角", + "dot_classy": "经典", + "dot_classy_rounded": "经典圆角", + "corner_square_style": "角方块", + "corner_square_desc": "三个大定位角方块的形状", + "cs_square": "方形", + "cs_dot": "圆点", + "cs_extra_rounded": "超圆角", + "corner_dot_style": "角点", + "corner_dot_desc": "每个角方块内部小圆点的形状", + "cd_square": "方形", + "cd_dot": "圆点", + "logo_title": "Logo / 图标", + "logo_enabled": "在中心显示 Logo", + "logo_image_type": "Logo 来源", + "logo_image_type_desc": "从何处加载 Logo 图片", + "logo_source_url": "图片 URL", + "logo_source_upload": "上传图像", + "logo_source_entity": "实体图像", + "logo_source_attribute": "实体属性", + "logo_url": "Logo 图片 URL", + "logo_url_desc": "指向 PNG、JPG 或 SVG 图片的直链 URL。建议使用 /local/ 路径以获得最佳效果。", + "cors_title": "图片被 CORS 阻止", + "cors_hint": "将图片复制到 /config/www/,并改用 /local/your-image.png。", + "logo_upload_label": "上传 Logo 图片", + "logo_upload_desc": "点击从你的设备上传图片(PNG、JPG、GIF、WebP、AVIF、SVG…)。", + "logo_uploaded": "已上传", + "logo_entity": "实体", + "logo_attribute": "属性名称", + "logo_attribute_desc": "包含图片 URL 的属性路径(支持点号表示法)。", + "logo_size": "Logo 大小", + "logo_size_desc": "Logo 占 QR 码区域的比例(10–30%)。", + "logo_margin": "Logo 边距", + "logo_margin_desc": "Logo 周围的内边距(以像素为单位)。", + "logo_ec_tip_title": "提示:使用 H 级纠错", + "logo_ec_tip": "在高级部分将纠错级别设为 H(30%),可获得最清晰的 Logo。", + "logo_hide_bg_dots": "隐藏 Logo 后面的点", + "advanced_title": "高级", + "fg_color": "前景色", + "bg_color": "背景色", + "error_correction": "纠错级别", + "error_correction_desc": "级别越高 = 容错能力越强,码也越大", + "quiet_zone": "静区(边距)", + "quiet_zone_desc": "QR 码周围的模块数(0–10)", + "pro_description": "QR Code 是 Pro 功能,可根据 URL、文本、模板或实体状态生成可扫描的 QR 码。", + "no_content": "在“常规”选项卡中添加内容", + "generating": "正在生成 QR 码...", + "cors_error": "Logo 未加载。图片服务器阻止了跨域请求。请使用 /local/ 路径或支持 CORS 的 URL。", + "unified_cheatsheet": "模板速查表" + }, + "onboarding": { + "title": "开始使用", + "subtitle": "按照以下步骤构建你的第一个 Ultra Card 布局。", + "dismiss": "不再显示", + "step_add_row": "添加一行", + "step_add_module": "添加模块", + "step_pick_entity": "选择实体(可选)", + "step_preview_breakpoints": "预览断点", + "action_add_row": "添加行", + "action_add_module": "添加模块", + "action_pick_entity": "打开模块设置", + "action_preview_breakpoints": "试用断点预览", + "action_preset": "从预设开始" + }, + "health": { + "title": "卡片健康", + "close": "关闭", + "healthy": "未发现问题。这张卡片状态良好。", + "jump": "跳转", + "open_connect": "打开 Connect", + "badge_ok": "健康", + "badge_issues": "{count} 个问题", + "tooltip": "分析卡片健康状态", + "connect_not_installed": "Ultra Card Connect 未安装。Hub 侧边栏和 Pro 同步需要该集成。", + "connect_not_authenticated": "Ultra Card Connect 已安装但未登录。请打开 Hub 账户选项卡进行连接。", + "connect_needs_reauth": "Ultra Card Connect 需要重新认证。请打开 Hub 账户选项卡重新登录。", + "connect_needs_update": "Ultra Card Connect 需要更新(已安装 {current},要求 {required}+)。请更新该集成,以确保 Smart Cards、媒体上传和 Pro 同步稳定运行。" + }, + "smart": { + "title": "Smart Cards", + "subtitle": "描述一张卡片,即可获得基于你的实体生成、可直接应用的 Ultra Card 预设;若已连接 Home Assistant AI,则由 AI 进行设计。", + "refresh": "刷新", + "assist_ready": "AI 已连接", + "assist_not_ready": "未连接 AI · 内置编排器", + "pro_modules": "已启用 Pro 模块", + "free_modules": "免费模块", + "used": "已使用:{connector}", + "connector_ha_assist": "Home Assistant Assist", + "generating": "正在生成智能布局...", + "setup_assist_title": "可选:连接 AI 以获得更丰富的布局", + "setup_assist_body": "卡片由内置编排器根据你的实体生成。在 Home Assistant 中添加 AI Task 或 LLM 对话代理(OpenAI、Anthropic、Google、Ollama…),然后刷新此选项卡,即可由它设计布局。默认的 Assist 代理无法做到这一点。", + "open_assist": "打开 Assist", + "free_quota": "免费额度:", + "remaining": "剩余 {remaining} / {cap}", + "quota_exhausted": "今日免费 Smart 生成次数已用完。", + "upgrade": "升级", + "unlimited": "无限制 · 运行在你的 AI 上", + "ai_provider": "生成方式", + "ai_task": "AI Task", + "conversation_agent": "对话代理", + "prompt_label": "这张卡片应该显示什么?", + "prompt_placeholder": "例如天气和谁在家,或者带亮度滑块的客厅灯光...", + "generate": "生成卡片", + "generating_btn": "正在生成你的卡片...", + "add": "添加", + "regenerate": "重新生成", + "preview_unavailable": "预览不可用", + "preview_aria": "Smart 预设实时预览", + "preview_fallback_aria": "Smart 预设预览", + "step_status": "状态", + "step_compose": "编排", + "step_preview": "预览", + "step_apply": "应用", + "back": "上一步", + "continue": "继续", + "apply_preset": "应用预设", + "warnings_title": "警告", + "no_results": "未生成任何 Smart 预设。换个描述试试。", + "load_failed": "加载 Smart 连接器失败。", + "generate_failed": "Smart 生成失败。" + }, + "dog_duty": { + "pro_description": "Dog Duty 是一项 Pro 功能,它利用院子摄像头和 LLM Vision 标记狗狗去过的位置,并提供时间轴拖动与清理追踪。", + "entities_section": "实体", + "entities_section_desc": "驱动 Dog Duty 地图的摄像头和待办清单。", + "camera": "院子摄像头", + "camera_desc": "院子地图使用的主要摄像头。若有多个角度,可在下方添加更多。", + "extra_cameras": "其他摄像头", + "extra_cameras_desc": "可选。每个摄像头都有各自的地图;状态标签会汇总所有摄像头的数据。", + "cameras_layout": "摄像头布局", + "cameras_layout_desc": "纵向堆叠地图,或在有多个摄像头时以网格显示。", + "layout_stack": "列表(堆叠)", + "layout_grid": "网格", + "todo": "待办清单", + "todo_desc": "用于存储检测结果的本地待办清单。如果还没有,请创建一个名为 \"Dog Duty\" 的清单。不要使用 Shopping List,它无法干净地存储标记数据。", + "todo_no_description": "此清单(例如 Shopping List)无法存储条目描述。标记功能仍可使用,但建议使用名为“Dog Duty”的 Local To-do(设置 → 设备与服务 → Helpers → Local To-do)。", + "trigger": "狗狗 / 移动触发条件(可选)", + "trigger_desc": "来自 Scrypted/Frigate 狗狗检测或院子移动的二进制传感器。留空则自动化会按计划扫描。", + "scan_mode_section": "扫描方式", + "scan_mode_section_desc": "模式会根据你的配置自动选择:选择触发传感器可实现最智能的扫描,或者不设传感器让自动化按计划运行。", + "mode_active": "已启用", + "mode_sensor": "传感器触发", + "mode_sensor_desc": "狗狗 / 移动传感器会在活动结束后立即开始扫描。AI 调用次数最少,如果有传感器推荐使用。", + "mode_scheduled": "已安排", + "mode_scheduled_desc": "无需传感器。自动化会在活动时段的每 {interval} 扫描一次。每次扫描都是一次 AI 调用,无论狗狗是否出门。", + "mode_manual": "仅手动", + "mode_manual_desc": "还没有自动化。只有“立即扫描”按钮会执行扫描,不产生任何后台 AI 开销。完成设置向导即可启用自动扫描。", + "scan_interval": "定时扫描间隔", + "scan_interval_desc": "未设置触发传感器时自动化的扫描频率。间隔越短越能更快发现情况,但会带来更多 AI 调用。", + "active_hours": "活动时段", + "active_hours_desc": "定时扫描只在此时间段内运行,这样狗狗睡觉时就不会产生 AI 调用开销。", + "scan_mode_reapply": "要更改触发传感器或计划?请在向导中重新运行 \"Create automation\" 以更新现有的自动化。", + "wizard_mode_sensor": "传感器模式:{sensor} 将在活动结束后立即触发扫描,这是最省成本的运行方式。", + "wizard_mode_scheduled": "未选择触发传感器,因此自动化会在 {start} 到 {end} 之间每隔 {interval} 扫描一次。这样也能用,但 AI 调用更多。如果有狗狗/移动传感器,请在上面的“实体”中选择。", + "minutes": "分钟", + "hour": "小时", + "hours": "小时", + "provider_section": "LLM Vision", + "provider_section_desc": "用于“立即扫描”和所生成自动化的提供方配置项。", + "provider": "提供方", + "provider_desc": "在向导中运行“检查前置条件”以刷新列表。", + "provider_manual": "提供方 ID(手动)", + "provider_manual_desc": "如果未被自动检测到,请粘贴 LLM Vision 提供方的 entry_id。", + "no_provider": "未检测到", + "display_section": "显示", + "display_section_desc": "地图外观与时间范围。", + "title": "标题", + "title_desc": "留空则使用 \"Dog Duty\"。", + "show_title": "显示标题", + "show_status_bar": "显示状态栏", + "show_scrubber": "显示时间轴", + "show_scan_now": "显示“立即扫描”按钮", + "show_cleaned": "显示已清理的标记", + "show_cleaned_desc": "已完成的待办事项显示为淡色对勾。", + "show_heatmap": "默认显示热力图", + "show_heatmap_desc": "在回溯时间范围内显示常去位置的密度叠加层。", + "map_section": "地图", + "lookback": "回溯时间范围", + "lookback_desc": "时间轴和标记回溯多久。", + "marker_style": "标记样式", + "marker_x": "X", + "marker_emoji": "Emoji", + "marker_pin": "图钉", + "background_mode": "背景", + "background_mode_desc": "摄像头实时快照,或院子的固定参考照片。", + "bg_live": "实时快照", + "bg_reference": "参考照片", + "reference_image": "参考图片", + "reference_image_desc": "上传一张同一摄像头角度下拍摄的院子静态照片。", + "cooldown": "扫描冷却时间", + "cooldown_desc": "自动化运行 / “立即扫描”调用之间的最小间隔分钟数。", + "detection_section": "检测", + "detection_section_desc": "调整“立即扫描”和自动化查找排泄物的方式。AI 指令保持隐藏,你只需设置偏好。", + "automation_update_hint": "“立即扫描”会立即使用这些设置。请在下方重新创建自动化,以将其应用到自动扫描。", + "update_automation": "更新自动化", + "sensitivity": "灵敏度", + "sensitivity_desc": "严格 = 保留更少的高置信度标记。宽松 = 更愿意标记不确定的位置。", + "sensitivity_strict": "严格", + "sensitivity_balanced": "均衡", + "sensitivity_lenient": "宽松", + "detect_squatting": "狗狗下蹲时也标记", + "detect_squatting_desc": "当狗狗明显在下蹲或排便时也进行标记,而不只是地面的排泄物。", + "min_confidence": "最低置信度", + "min_confidence_desc": "忽略低于此置信度(0–100%)的 AI 结果。", + "extra_tips": "附加提示", + "extra_tips_placeholder": "例如:我家狗狗是白色的;排泄物通常是栅栏附近的深棕色", + "extra_tips_desc": "向 AI 描述你的院子。不要粘贴长段指令,简短说明效果最好。", + "example_photos": "示例照片", + "example_photos_desc": "最多 3 张照片,展示你院子里排泄物的样子。每次扫描都会作为参考一起发送(会消耗更多 token)。", + "example_photo_n": "示例 {n}", + "detect_zone": "检测区域", + "detect_zone_desc": "在预览图上拖出一个矩形,把检测限制在院子的某一部分(例如仅限草坪)。", + "detect_zone_edit": "编辑区域", + "detect_zone_done": "完成", + "detect_zone_reset": "重置为完整画面", + "detect_zone_drag": "拖动以绘制检测区域", + "detect_zone_set": "区域已设置。区域外将被忽略。", + "wizard_title": "设置向导", + "wizard_desc": "一键设置会创建待办清单 + 自动化,让扫描只在狗狗外出时运行,不浪费 token。", + "wizard_step1": "检查前置条件", + "wizard_step1_desc": "Dog Duty 需要 LLM Vision 集成(HACS)以及至少一个带视觉模型的 AI 提供方。", + "setup_guide_title": "如何设置 LLM Vision", + "setup_guide_1": "从 HACS 安装“LLM Vision”,然后重启 Home Assistant。", + "setup_guide_2": "设置 → 设备与服务 → 添加集成 → LLM Vision。在第一个设置界面(超时 / 提示词)直接按提交即可,这里不需要选择模型。", + "setup_guide_3": "在 LLM Vision 卡片上按“添加条目”(或 配置 → 添加条目),然后选择一个提供方(OpenAI、Google、OpenRouter 或 Ollama)。", + "setup_guide_4": "使用视觉模型。推荐这几个:gpt-4o-mini (OpenAI)、gemini-2.0-flash (Google)、claude-haiku-4-5 (Anthropic) 或 gemma3:12b (Ollama)。", + "setup_guide_5": "回到这里,然后按“检查前置条件”。", + "setup_guide_invalid_model": "看到“Validation error: invalid_model”或“Couldn’t generate content”?(1)选择“Anthropic Claude”,千万不要选“LLM Vision Settings”。(2)若使用 Anthropic:⋮ → 重新配置 → 将 Thinking / reasoning budget 设为 0,然后提交。LLM Vision 1.7.0 存在一个已知的 thinking-budget 浮点数 bug。", + "provider_auto_selected": "已选择提供方:{name}", + "setup_docs": "设置文档", + "providers_count": "个提供方", + "wizard_step2": "选择摄像头与清单", + "wizard_step2_desc": "在下方(实体部分)选择院子摄像头和 Dog Duty 待办清单,然后继续。如需,可在 设置 → 设备与服务 → Helpers 中创建一个名为 \"Dog Duty\" 的 Local To-do 清单。", + "wizard_step3": "创建自动化", + "wizard_step3_desc": "创建的自动化会拍摄摄像头快照,运行一次 LLM Vision 比对,并将结果写入你的待办清单。", + "wizard_step4": "测试扫描", + "wizard_step4_desc": "对当前摄像头画面执行一次按需扫描。坐标精度为近似值,请保持摄像头角度固定。", + "checking": "正在检查…", + "check_prereqs": "检查前置条件", + "llm_found": "已找到 LLM Vision", + "llm_missing": "未安装 LLM Vision。请通过 HACS 安装,添加集成,然后添加一个带视觉模型的提供方。", + "provider_missing": "LLM Vision 已安装,但尚未设置任何提供方。添加条目 → 提供方(例如 Anthropic Claude),然后重新检查。不要使用“LLM Vision Settings”作为提供方。", + "continue": "继续", + "back": "上一步", + "creating": "正在创建…", + "create_automation": "创建自动化", + "scanning": "正在扫描…", + "run_test": "运行测试扫描", + "finish": "完成", + "setup_done": "设置完成。检测结果将显示在地图上。", + "todo_manual_hint": "提示:设置 → 设备与服务 → Helpers → 创建辅助 → Local To-do,命名为 \"Dog Duty\",然后在上方的“实体”中选择它。", + "need_provider": "请先选择或粘贴一个 LLM Vision 提供方 ID。", + "automation_created": "自动化已创建:{id}。若未立即显示,请重新加载自动化。", + "automation_failed": "无法自动创建自动化。你可能需要管理员权限,也可以根据生成的模板手动创建。", + "test_found": "发现 {count} 处。标记已添加到待办清单。", + "test_none": "当前画面中未检测到排泄物。", + "default_title": "Dog Duty", + "chip_active": "待清理", + "chip_week": "本周", + "heatmap": "热力图", + "heatmap_toggle": "切换热力图", + "scan_now": "立即扫描", + "scan_found": "发现 {count} 处", + "scan_none": "未检测到排泄物", + "no_camera": "选择院子摄像头以显示地图", + "no_events": "此时间范围内没有检测结果", + "no_events_short": "没有检测结果", + "setup_hint": "打开“常规”标签页并运行设置向导,以连接摄像头、待办清单和 LLM Vision。", + "marker": "标记", + "confidence": "置信度", + "cleaned": "已清理", + "mark_cleaned": "标记为已清理", + "mark_active": "标记为待清理", + "false_alarm": "误报", + "now": "现在", + "scrubber": "时间轴", + "live": "实时", + "scrub_live_desc": "正在显示当前院子画面", + "scrub_events": "时间范围内有 {count} 条检测结果", + "return_to_live": "返回实时", + "reopen_wizard": "重新打开向导", + "chip_active_title": "查看待清理的检测结果", + "chip_week_title": "查看本周的检测结果", + "list_active_title": "待清理的检测结果", + "list_week_title": "本周", + "list_empty": "此列表中没有检测结果。", + "sort_time": "时间", + "sort_camera": "摄像头", + "sort_confidence": "置信度", + "sort_status": "状态", + "placement": "位置", + "status_active": "仍在那里" + }, + "cleaning_zones": { + "add_first_desc": "打开“常规”标签页,添加一个带名称和清洁间隔的房间。平面图图片为可选项,不使用也能正常显示列表。", + "add_first_title": "添加第一个区域", + "add_zone": "添加区域", + "advanced_section": "高级", + "all_clear": "一切按计划进行", + "auto_clean_desc": "可选。当该实体进入下方状态时,区域会自动标记为已清洁,对于会报告已清扫完哪个房间的扫地机器人非常实用。", + "auto_clean_entity": "触发实体", + "auto_clean_group": "自动清洁", + "auto_clean_state": "表示“已清洁”的状态", + "auto_clean_state_desc": "例如“docked”或“returning”。匹配时不区分大小写。", + "card_background_color": "卡片背景", + "collapse": "折叠", + "colors_section": "颜色", + "confirm_short": "再次点击", + "days_ago": "{days} 天前", + "days_short": "{days} 天", + "default_interval": "默认间隔", + "default_interval_desc": "供未单独设置间隔的区域使用。", + "default_title": "清洁区域", + "delete_zone": "删除区域", + "display_section": "显示", + "draw_too_small": "该区域太小了。请拖出一个更大的矩形。", + "due_color": "待清洁", + "due_in": "{days} 天后到期", + "due_today": "今天到期", + "due_tomorrow": "明天到期", + "edit": "编辑", + "floorplan_image": "平面图图片", + "floorplan_image_desc": "你家住宅的俯视图。任何图片都可以,直接截取扫地机器人的地图是个不错的捷径。", + "floorplan_section": "平面图", + "floorplan_section_desc": "可选。没有图片时,列表视图仍可作为简单的房间家务追踪工具使用。", + "fresh_color": "刚清洁", + "fresh_count": "{count} 个刚清洁", + "history_limit": "每个区域保留的历史条数", + "history_limit_desc": "较早的记录会被删除,以免待办清单无限增长。", + "interval_label": "每 {days} 天", + "last_by": "上次由 {name}", + "legend_due": "待清洁", + "legend_fresh": "刚清洁", + "legend_overdue": "逾期", + "loading": "正在加载清洁历史…", + "log_auto": "{name} 已自动标记为清洁", + "log_clean": "{name} 已清洁", + "log_cleaner": "记录清洁者", + "log_cleaner_desc": "在每条记录旁存储一个名字,方便查看谁做了什么。", + "logged_clean": "{name} 已标记为清洁", + "mark_clean": "标记为已清洁", + "move_down": "下移", + "move_up": "上移", + "needs_attention": "{count} 个需要处理", + "never_cleaned": "从未清洁", + "new_zone_name": "新区域", + "no_history": "尚无清洁记录", + "no_zones_editor": "还没有区域。可在下方添加,或在上面的平面图上拖出一个矩形。", + "overdue_by": "逾期 {days} 天", + "overdue_color": "逾期", + "overdue_grace": "逾期宽限期", + "overdue_grace_desc": "超过间隔多少天内房间仍只是“待清洁”,之后才转为“逾期”。", + "person_entity": "人员", + "person_entity_desc": "要记录谁的名字。卡片无法判断是谁点击的,因此这是一个固定的归属。", + "placement_hint": "在空白处拖动即可绘制新区域。拖动区域可移动它,拖动右下角可调整大小,拖动上方的手柄可旋转。旋转时按住 Shift 可按 15° 吸附。", + "placement_needs_image": "上传平面图即可通过拖动放置区域。你仍然可以添加区域并以数值方式设置其位置。", + "pos_h": "高度 %", + "pos_w": "宽度 %", + "pos_x": "左侧 %", + "pos_y": "顶部 %", + "pro_description": "Cleaning Zones 是一项 Pro 功能:在平面图上绘制房间,为每个房间设置清洁间隔,并观察它们的颜色从刚清洁渐变到逾期。点击房间即可记录它已被清洁。", + "require_confirm": "记录前确认", + "require_confirm_desc": "需要再次点击确认。对于挂在墙上的平板,建议开启以避免误触。", + "rotate_handle": "拖动旋转", + "row_every_days": "每 {days} 天", + "secondary_text_color": "次要文字", + "setup_desc": "在“常规”标签页的存储部分选择一个 Local To-do 辅助工具。你记录的每次清洁都会保存在那里。", + "setup_title": "选择清洁历史清单", + "show_legend": "显示图例", + "show_summary_bar": "显示摘要栏", + "show_summary_bar_desc": "用一行显示需要处理的数量,以及逾期最久的房间。", + "show_title": "显示标题", + "show_zone_labels": "显示区域标签", + "show_zone_labels_desc": "区域过小时会自动隐藏标签。", + "sort_interval": "间隔", + "sort_mode": "列表排序", + "sort_mode_desc": "列表视图中房间的排序方式。", + "sort_name": "名称", + "sort_staleness": "逾期最久", + "staleness_style": "陈旧样式", + "staleness_style_desc": "地图上如何突出显示逾期的房间。", + "storage_help": "清洁历史保存在待办清单中,这样家里的每台设备都能看到同一份记录。请在 设置 → 设备与服务 → Helpers → 待办清单(Local to-do)下创建一个,命名为“Cleaning”之类的名字,然后在这里选择它。", + "storage_section": "存储", + "style_badge": "徽标", + "style_heat": "热度", + "style_outline": "描边", + "text_color": "文本", + "title": "标题覆盖", + "title_desc": "留空则使用“Cleaning Zones”。", + "today": "今天", + "todo_entity": "清洁历史清单", + "todo_entity_desc": "用作存储的 Local To-do 辅助工具。记录会保存为已完成项目,因此不会出现在你的活动待办视图中。", + "todo_no_description": "此清单无法存储条目描述(Shopping List 就是这样)。追踪功能仍可使用,但存储的数据会附加到每个条目标题后面,在 Home Assistant 的待办面板中显得杂乱。使用 Local To-do 辅助工具可避免这个问题。", + "undo": "撤销", + "unit_days": "天", + "unit_degrees": "°", + "unnamed_zone": "未命名区域", + "use_default_interval": "使用模块默认值({days} 天)", + "view_both": "两者", + "view_list": "列表", + "view_map": "地图", + "view_mode": "视图", + "view_mode_desc": "卡片显示的内容。未设置图片时,地图会回退为列表。", + "worst_zone": "逾期最久:{name}", + "yesterday": "昨天", + "zone_color": "区域颜色覆盖", + "zone_color_desc": "留空则使用“刚清洁 → 逾期”渐变。", + "zone_icon": "图标", + "zone_icon_desc": "显示在列表视图以及较大的地图区域上。", + "zone_interval": "清洁周期", + "zone_interval_desc": "该区域应多久清洁一次。", + "zone_name": "名称", + "zone_name_desc": "你如何称呼这个区域,例如“厨房”、“楼上卫生间”。", + "zone_notes": "备注", + "zone_notes_desc": "可选的提醒事项,例如“用拖把,别用吸尘器”、“挪开地毯”。", + "zone_opacity": "区域不透明度", + "zone_opacity_desc": "区域着色覆盖平面图的强度。", + "zone_position": "在平面图上的位置", + "zone_position_desc": "以图片左上角为基准的百分比。通常在上面的地图上拖动设置会更方便。", + "zone_rotation": "旋转", + "zone_rotation_desc": "旋转区域角度以对齐与图片不正的房间,例如在等轴测平面图上。", + "zones_section": "区域", + "zones_section_desc": "每个房间或区域一条记录。只需要名称和间隔。" + }, + "battery_fleet": { + "add_entity": "添加电池", + "all_clear": "所有电池电量正常", + "all_clear_desc": "已检查 {count} 台设备,无需处理。", + "area_add": "添加区域", + "area_filter": "限定区域", + "area_filter_desc": "留空则包含所有区域。一旦设置筛选条件,没有区域的设备将被排除。", + "color_card_bg": "行背景", + "color_card_bg_desc": "每个设备行或磁贴背后的背景色。", + "color_charging": "充电中", + "color_charging_desc": "正在充电的可充电设备。", + "color_critical": "严重", + "color_critical_desc": "电量达到或低于临界阈值的电池。", + "color_low": "低", + "color_low_desc": "电量达到或低于低电量阈值的电池。", + "color_ok": "健康", + "color_ok_desc": "无需担心的电池。", + "color_secondary": "次要文字", + "color_secondary_desc": "耗电速率、估算值和说明文字。", + "color_text": "文本", + "color_text_desc": "设备名称和百分比。", + "colors_section": "颜色", + "conf_basis": "{label},基于 {hours} 小时观测到的放电量计算。", + "conf_high": "高置信度", + "conf_low": "低置信度", + "conf_medium": "中等置信度", + "conf_none": "已记录的放电数据还不足以做出可靠的估算。", + "critical_threshold": "严重", + "critical_threshold_desc": "电量达到或低于此百分比时,电池处于临界状态。", + "default_title": "Battery Fleet", + "devices_section": "设备", + "devices_section_desc": "自动发现无需配置即可找到 Home Assistant 中的每一块电池。切换到手动可自行管理列表。", + "discovery_mode": "发现", + "discovery_mode_desc": "自动会扫描 Home Assistant,手动仅使用下方列表,两者则合并。", + "dismiss_auto": "在卡片中隐藏此设备", + "dismiss_manual": "从手动列表中移除", + "display_section": "显示", + "empty_auto": "未找到电池设备", + "empty_auto_desc": "Home Assistant 中没有任何对象上报电量。请尝试启用 battery_level 属性或二进制传感器,或者放宽排除模式。", + "empty_manual": "添加你的电池", + "empty_manual_desc": "已开启手动发现,但列表为空。请在“常规”标签页添加实体,或将发现方式切换为自动。", + "err_ha": "正在等待 Home Assistant", + "err_ha_desc": "正在连接实体状态…", + "err_history": "Recorder 历史不可用,因此只显示电量,不做预测。", + "err_render": "Battery Fleet 无法渲染", + "error_manual_empty": "请至少添加一个电池实体,或将发现方式切换为自动或两者。", + "error_thresholds": "临界阈值必须低于低电量阈值。", + "eta_beyond": "超过 6 个月", + "eta_beyond_short": "6mo+", + "eta_charging": "充电中", + "eta_day_one": "约一天后需要更换", + "eta_days": "约 {n} 天后需要更换", + "eta_days_short": "~{n}天", + "eta_gathering": "正在收集数据", + "eta_gathering_short": "收集中…", + "eta_months": "约 {n} 个月", + "eta_months_short": "~{n}个月", + "eta_now": "立即更换", + "eta_now_short": "立即", + "eta_weeks": "约 {n} 周", + "eta_weeks_short": "~{n}周", + "exclude_patterns": "排除模式", + "exclude_patterns_desc": "任何实体 ID 或名称中包含这些词的电池都会被跳过。不区分大小写。", + "exclude_placeholder": "例如 test、spare、backup", + "footer_basis": "预测基于 {days} 天历史数据 · {total} 台设备中有 {ready} 台有足够数据", + "footer_loading": "正在读取 {days} 天的 Recorder 历史…", + "found_count": "找到 {count} 块电池", + "found_more": "还有 {count} 个", + "found_none": "尚未发现电池", + "found_none_desc": "没有匹配项。请尝试开启下方的 battery_level 属性或电池二进制传感器、放宽排除模式,或者手动添加实体。", + "group_by_area": "按区域分组", + "group_by_area_desc": "按区域标题拆分列表。没有区域的设备排在最后。", + "hidden_entities": "已忽略的设备", + "hidden_entities_desc": "已从卡片中忽略 {count} 台设备。移除标签即可恢复显示。", + "hidden_entities_empty": "没有已隐藏的设备。在实时预览中点击某一行的 × 即可隐藏该设备。", + "history_days": "历史窗口", + "history_days_desc": "从 recorder 回溯多久的数据。窗口越长越能平滑噪声,但加载开销更大。", + "include_attribute": "包含 battery_level 属性", + "include_attribute_desc": "可识别扫地机、手机、追踪器以及其他把电量作为属性而非传感器上报的设备。", + "include_binary": "包含电池二进制传感器", + "include_binary_desc": "只上报 “low” 或 “OK” 的设备。它们显示为 0% 或 100%,无法进行预测。", + "layout": "布局", + "layout_cards": "卡片", + "layout_compact": "紧凑", + "layout_desc": "表格是密集的规划视图,卡片是磁贴网格,紧凑模式每台设备一行。", + "layout_table": "表格", + "loading_history": "正在读取历史…", + "low_threshold": "低", + "low_threshold_desc": "电量低于或等于该百分比即为电量偏低。必须高于严重阈值。", + "manual_empty": "还没有手动添加的电池。请在下方添加。", + "manual_heading": "手动添加的电池", + "manual_heading_desc": "添加任何上报电量百分比的实体。展开某一行可设置友好名称、图标和电池型号。", + "max_items": "最多设备数", + "max_items_desc": "列出多少台设备。汇总栏始终统计整个设备群。", + "min_confidence_hours": "最低数据量", + "min_confidence_hours_desc": "需要观察到多少小时的耗电后才会显示估算。数值越小出结果越快,但预测越不稳定。", + "mode_auto": "自动", + "mode_both": "两者", + "mode_manual": "手动", + "no_area": "无区域", + "predict_replacement": "预测更换日期", + "predict_replacement_desc": "测量每块电池的耗电速度,并推算何时需要更换。", + "prediction_section": "预测", + "prediction_section_desc": "预测基于 recorder 历史测算,而非凭空猜测。电池需要一到两天的耗电记录后才会出现估算值。在此之前卡片会如实显示 “正在收集数据”。", + "prediction_tuning": "预测调优", + "pro_description": "Battery Fleet 会读取 recorder 历史,测量家中每块电池的耗电速度,然后按需要更换的紧急程度排序。", + "rate_per_day": "{rate}%/天", + "replacement_floor": "更换下限", + "replacement_floor_desc": "你认为电池 “已耗尽” 的百分比。预测会倒计时到该值,而不是到零。", + "restore_all": "恢复所有已隐藏项", + "row_battery_type": "电池型号", + "row_battery_type_desc": "采购电池时的备忘,例如 “CR2032 x2” 或 “AA x4”。", + "row_delete": "移除此电池", + "row_edit": "编辑此电池", + "row_entity": "实体", + "row_icon": "图标", + "row_icon_desc": "留空则使用随电量变化的电池图标。", + "row_label": "标签", + "row_label_desc": "留空则使用实体名称。", + "row_no_entity": "未选择实体", + "show_charging_indicator": "显示充电指示", + "show_charging_indicator_desc": "标记当前正在充电的可充电设备,并将其从紧急排序中排除。", + "show_drain_rate": "显示耗电速度", + "show_drain_rate_desc": "每天流失的百分比,根据历史测算。", + "show_eta": "显示更换预估", + "show_eta_desc": "“约 12 天后更换” 这一列。数据不足时会自动隐藏。", + "show_only_problems": "仅显示问题项", + "show_only_problems_desc": "隐藏状态良好的电池,这样无事可做时卡片就是空的。", + "show_sparkline": "显示迷你趋势图", + "show_sparkline_desc": "每台设备一个微型历史图表。样本过少时会跳过。", + "show_summary_bar": "显示设备群汇总", + "show_summary_bar_desc": "单行汇总,包含各类数量和最紧急的设备。", + "show_title": "显示标题", + "show_title_desc": "显示标题行。", + "sort_drain": "耗电速度", + "sort_level": "电量", + "sort_mode": "排序方式", + "sort_mode_desc": "紧急度综合了当前电量与下降速度。", + "sort_name": "名称", + "sort_urgency": "紧急度", + "sum_all_ok": "全部正常", + "sum_critical": "{count} 个严重", + "sum_low": "{count} 个电量偏低", + "sum_month": "{count} 个本月需要更换", + "sum_most_urgent": "最紧急:{name}", + "sum_total": "{count} 块电池", + "thresholds_section": "阈值", + "thresholds_section_desc": "电量低于或等于这些值的会被着色并计为问题。", + "title": "标题", + "title_desc": "列表上方显示的标题。留空则使用 “Battery Fleet”。", + "unit_days": "天", + "unit_hours": "h", + "urgent_days": "紧急窗口", + "urgent_days_desc": "预计在该天数内耗尽电量的电池会被标记为紧急,并排到最前面。" + }, + "plant_care": { + "add_first_desc": "打开常规标签页,添加一株植物并填写名称和浇水周期。照片和湿度传感器为可选项。", + "add_first_title": "添加第一株植物", + "add_plant": "添加植物", + "advanced_section": "高级", + "advanced_sensors": "高级传感器", + "advanced_sensors_desc": "若这株植物配有湿度探头,实时读数将取代按计划推算的结果;没有探头的植物仍按计划执行。", + "ago_days": "{days} 天前", + "ago_today": "今天", + "ago_yesterday": "昨天", + "card_background_color": "卡片背景", + "collapse": "折叠", + "colors_section": "颜色", + "columns": "列数", + "columns_desc": "这是目标值而非固定列数。窄屏时磁贴会自动重排。", + "default_fertilize": "默认施肥周期", + "default_fertilize_desc": "设为 0 则关闭施肥提醒。", + "default_title": "Plant Care", + "default_water": "默认浇水周期", + "delete_plant": "删除植物", + "detail_days": "{days} 天", + "detail_fertilize": "施肥", + "detail_interval": "浇水周期", + "detail_last_water": "上次浇水", + "detail_light": "光照", + "detail_reason": "原因", + "detail_temperature": "温度", + "display_section": "显示", + "display_section_desc": "选择卡片显示的内容。", + "due_in_days": "{days} 天后", + "due_overdue": "已逾期 {days} 天", + "due_today": "今天到期", + "due_tomorrow": "明天", + "edit": "编辑", + "fert_due": "该施肥了", + "fert_in_days": "{days} 天后施肥", + "fertilize_plant": "给 {name} 施肥", + "happy_color": "状态良好", + "happy_color_desc": "无需照料的植物。", + "hemisphere_north": "你的 Home Assistant 位置位于北半球,因此夏季在 7 月达到峰值。", + "hemisphere_south": "你的 Home Assistant 位置位于南半球,因此夏季在 1 月达到峰值。", + "hemisphere_today": "当前周期乘以 {factor}×。", + "history_limit": "每株植物保留的历史条数", + "history_limit_desc": "较早的养护记录会从待办列表中移除,以免列表无限增长。", + "illuminance_entity": "光照传感器", + "illuminance_entity_desc": "可选。仅显示在植物详情中,不用于排程。", + "import_add": "添加", + "import_added": "已添加", + "import_all": "添加所有缺失项", + "import_button": "从 HA 植物实体导入", + "import_done": "已导入 {count} 株植物。", + "import_help": "找到以下植物实体。导入时会复制名称以及能匹配到的湿度传感器,之后你可以随意调整。", + "import_no_sensor": "未匹配到湿度传感器,仅按计划", + "import_none": "在 Home Assistant 中未找到 plant.* 实体。请改为手动添加植物。", + "import_nothing_new": "这里的内容都已导入过了。", + "import_with_sensor": "湿度传感器:{entity}", + "layout": "布局", + "layout_desc": "网格适合看照片,列表更紧凑,平面图可把植物摆放在户型图上。", + "layout_grid": "网格", + "layout_list": "列表", + "layout_map": "地图", + "layout_section": "布局", + "loading": "正在加载养护历史…", + "log_fertilized": "已给 {name} 施肥", + "log_watered": "已给 {name} 浇水", + "map_image": "平面图", + "map_image_desc": "平面图布局的背景图。可在上方各行中为每株植物摆放位置。", + "map_needed_desc": "平面图布局需要一张背景图。请在常规标签页的布局下上传一张,然后为每株植物摆放位置。", + "map_needed_title": "添加平面图", + "map_place_hint": "所有标记都还停在中间。请在常规标签页中打开一株植物,然后点击平面图来摆放位置。", + "map_position": "在平面图上的位置", + "map_position_help": "点击平面图,把这株植物放到它实际所在的位置。", + "map_position_no_image": "在布局下上传平面图后即可点击摆放植物。在此之前请使用下方的滑块。", + "map_x": "水平位置", + "map_y": "垂直位置", + "moisture_entity": "湿度传感器", + "moisture_entity_desc": "以百分比上报土壤湿度的传感器。", + "moisture_source": "缺水判断依据", + "moisture_source_desc": "没有湿度传感器的植物始终回退为按计划判断,卡片会在每株植物上注明这一点。", + "moisture_threshold": "低于此值为缺水", + "moisture_threshold_desc": "读数低于该百分比表示植物需要浇水。", + "move_down": "下移", + "move_up": "上移", + "never_fertilized": "从未施肥", + "never_watered": "从未浇水", + "new_plant_name": "新植物", + "no_plants_editor": "还没有植物。请在下方添加,或导入你在 Home Assistant 中已有的植物实体。", + "overdue_color": "逾期", + "overdue_color_desc": "严重逾期,或已干透。", + "overdue_first": "按紧急度排序", + "overdue_first_desc": "逾期和缺水的植物会浮到最前面,而不是保持你设定的顺序。", + "plant_fertilize_interval": "施肥周期", + "plant_fertilize_interval_desc": "设为 0 可关闭该植物的施肥提醒。", + "plant_icon": "图标", + "plant_icon_desc": "没有照片时显示,照片加载失败时也作为回退显示。", + "plant_location": "位置", + "plant_location_desc": "可选的房间或位置,显示在名称下方。", + "plant_name": "名称", + "plant_name_desc": "你给这株植物的称呼,例如 “Monstera”、“Kitchen basil”。", + "plant_notes": "备注", + "plant_notes_desc": "给自己的可选提醒,例如 “只从底部浇水”、“喜欢偏干”。", + "plant_photo": "照片", + "plant_photo_desc": "可选。配上照片后,网格布局扫一眼就能看清。", + "plant_water_interval": "浇水周期", + "plant_water_interval_desc": "这株植物多久需要浇一次水。", + "plants_section": "植物", + "plants_section_desc": "你想留意的每一株植物。只需填写浇水周期即可,传感器为可选项。", + "pro_description": "Plant Care 是 Pro 功能:以可视化清单管理你的室内植物,包含浇水与施肥计划、一键记录养护,以及可选的湿度传感器。", + "reason_none": "尚无浇水记录", + "reason_schedule": "来自计划(无传感器)", + "reason_schedule_sensor_off": "来自计划", + "reason_sensor": "传感器 {value}%,阈值 {threshold}%", + "row_every_days": "每 {days} 天浇一次水", + "schedule_section": "计划默认值", + "schedule_section_desc": "供所有未单独设置周期的植物使用。", + "season_shoulder": "过渡季", + "season_summer": "夏季", + "season_tooltip": "已启用季节调整:{phase},周期 ×{factor}", + "season_winter": "冬季", + "seasonal_adjust": "季节调整", + "seasonal_adjust_desc": "冬季延长浇水周期,夏季缩短。变化在一年中平滑过渡,而不是到至日突然切换;半球根据你的 Home Assistant 位置判定。", + "seasonal_group": "季节系数", + "secondary_text_color": "次要文字", + "setup_desc": "在常规标签页的存储下选择一个 Local To-do 助手。浇水历史会保存在那里。", + "setup_title": "选择养护历史列表", + "show_detail": "显示详情", + "show_fertilize": "显示施肥", + "show_fertilize_desc": "为设置了周期的植物增加一项次要的施肥操作。", + "show_moisture": "显示湿度读数", + "show_next_due": "显示下次浇水时间", + "show_photos": "显示照片", + "show_photos_desc": "关闭后所有位置都回退为图标。", + "show_summary_bar": "显示摘要栏", + "show_summary_bar_desc": "单行统计缺水、逾期和状态良好的植物数量。", + "show_title": "显示标题", + "source_both": "两者", + "source_schedule": "计划", + "source_sensor": "传感器", + "storage_help": "浇水历史保存在待办列表中,这样家里所有设备看到的都是同一份记录。请在设置 → 设备与服务 → 辅助元素 → 待办列表(Local to-do)下创建一个,命名为 “Plant Care” 之类,然后在这里选择它。", + "storage_section": "存储", + "sum_due_soon": "即将到期", + "sum_happy": "状态良好", + "sum_never": "从未浇水", + "sum_next": "下一个:{name} {when}", + "sum_overdue": "逾期", + "sum_thirsty": "缺水", + "summer_factor": "夏季系数", + "summer_factor_desc": "低于 1 表示盛夏时节浇水更频繁。", + "tap_to_water": "点击记录浇水", + "temperature_entity": "温度传感器", + "temperature_entity_desc": "可选。仅显示在植物详情中,不用于排程。", + "text_color": "文本", + "thirsty_color": "缺水", + "thirsty_color_desc": "已到该浇水的时间,或正在变干。", + "title": "标题", + "title_desc": "留空则使用 “Plant Care”。", + "todo_entity": "养护历史列表", + "todo_entity_desc": "用作存储的 Local To-do 助手。不要让它写入其他内容。", + "todo_no_description": "该列表无法存储条目描述(购物清单就是如此)。养护历史仍可正常使用,但存储的数据会追加到每个条目的标题后面,在 Home Assistant 的待办面板中看起来比较乱。改用 Local To-do 助手可避免这一点。", + "undo": "撤销", + "undo_fertilized": "已给 {name} 施肥", + "undo_watered": "已给 {name} 浇水", + "unit_days": "天", + "unnamed_plant": "未命名植物", + "use_default_water": "使用模块默认值({days} 天)", + "water_plant": "给 {name} 浇水", + "winter_factor": "冬季系数", + "winter_factor_desc": "高于 1 表示严冬时节浇水间隔更长。" + }, + "laundry_tracker": { + "acknowledge_enabled": "允许 “已取出”", + "acknowledge_enabled_desc": "增加一个手动清除提醒的按钮。浏览器重新加载后重置。", + "add_dryer": "添加烘干机", + "add_washer": "添加洗衣机", + "advanced_detection": "高级检测", + "appliance_icon": "图标", + "appliance_icon_desc": "留空则使用该设备类型的默认值。", + "appliance_kind": "设备类型", + "appliance_kind_desc": "设定默认图标与检测阈值。烘干机的待机功率高于洗衣机。", + "appliance_name": "名称", + "appliance_name_desc": "显示在状态卡片上。", + "appliances_section": "设备", + "appliances_section_desc": "添加每台设备并为其指定功率传感器。一个智能插座就够了,无需智能家电。", + "color_alert": "被遗忘", + "color_alert_desc": "衣物还留在里面。", + "color_card_bg": "卡片背景", + "color_card_bg_desc": "每张状态卡片的背景。", + "color_done": "已完成", + "color_done_desc": "刚结束一个程序。", + "color_idle": "空闲", + "color_idle_desc": "没有任何动静。", + "color_running": "运行中", + "color_running_desc": "正在执行程序。", + "color_secondary": "次要文字", + "color_secondary_desc": "辅助说明文字。", + "color_text": "文本", + "color_text_desc": "主要文字。", + "colors_section": "颜色", + "colors_section_desc": "任意留空即跟随 Home Assistant 主题。", + "currency_symbol": "货币符号", + "currency_symbol_desc": "加在每个费用数字的前面。", + "default_title": "洗衣", + "delete_appliance": "移除设备", + "display_section": "显示", + "display_section_desc": "选择卡片显示哪些部分。", + "done_ago": "{time}前完成", + "door_entity": "机门 / 机盖传感器", + "door_entity_desc": "可选,但这是最可靠的取出信号:程序结束后打开机门即可清除提醒。", + "door_open": "机门已打开", + "drawing_now": "当前功率 {watts}", + "edit_appliance": "编辑设备", + "emptied": "已取出", + "empty_desc": "打开常规标签页,为一台设备指定功率传感器。", + "empty_title": "添加洗衣机或烘干机", + "energy_rate": "电价", + "energy_rate_desc": "用于估算单次程序费用的每 kWh 单价。", + "est_finish": "大约还剩 {time},依据最近 {count} 次程序估算", + "est_finish_soon": "随时可能结束", + "est_finish_unknown": "历史程序次数不足,暂无法估算结束时间", + "forgotten_dryer": "烘干的衣物还留在滚筒里。", + "forgotten_washer": "洗好的湿衣物还留在滚筒里。", + "handoff_sub": "{washer} 已结束,{dryer} 处于空闲", + "handoff_title": "转入烘干机", + "history_days": "历史窗口", + "history_days_desc": "窗口越长平均值越准确,但对 recorder 的查询压力也更大。", + "history_error": "无法读取 recorder 历史。实时功率仍可正常使用。", + "history_section": "历史与费用", + "history_section_desc": "从 recorder 回溯多久,以及每度电的价格。", + "kind_dryer": "烘干机", + "kind_washer": "洗衣机", + "last_cycle_ago": "上次程序在 {time}前", + "layout": "布局", + "layout_desc": "将设备纵向堆叠,或并排摆放。", + "layout_row": "行", + "layout_stack": "堆叠", + "learning": "正在学习你的洗衣程序。尚无已完成程序的记录。", + "loading_history": "正在读取程序历史…", + "min_cycle_minutes": "最短程序时长", + "min_cycle_minutes_desc": "更短的运行被视为噪声,而非一次真实洗涤。", + "move_down": "下移", + "move_up": "上移", + "no_appliances_hint": "还没有设备。添加一台洗衣机或烘干机即可开始使用。", + "no_cycles_window": "最近 {days} 天没有程序记录", + "no_source": "尚未为该设备选择功率或状态传感器。", + "notify_message": "{name} 在 {time}前结束,衣物还留在里面。", + "notify_once_note": "每次洗涤最多触发一次。只有在下一次程序结束后才会再次提醒。", + "notify_section": "通知", + "notify_section_desc": "可选:衣物在宽限期过后仍留在里面时推送通知。", + "notify_service": "通知服务", + "notify_service_desc": "例如 notify.mobile_app_pixel。留空则关闭通知。", + "notify_title": "衣物等待处理", + "phase_finished": "已完成", + "phase_forgotten": "衣物仍在里面", + "phase_idle": "空闲", + "phase_running": "运行中", + "phase_unknown": "尚未设置", + "power_entity": "功率传感器", + "power_entity_desc": "智能插座上报的功率值。程序检测读取的就是这个数据。", + "pro_description": "用一个 15 美元的智能插座打造洗衣管家:自动识别洗衣程序、遗忘衣物提醒,以及实时电费统计。", + "row_no_entity": "未选择传感器", + "running_for": "已运行 {time}", + "running_states": "运行中的状态", + "running_states_desc": "设备状态实体中表示 “运行中” 的状态。留空则使用较宽泛的默认状态集。", + "settle_minutes": "稳定时间", + "settle_minutes_desc": "设备需保持静止多久才算程序结束。可避免浸泡暂停被误判为洗涤结束。", + "show_energy": "显示能耗与费用", + "show_energy_desc": "关闭后卡片上所有 kWh 和金额数字都会被隐藏。", + "show_handoff_hint": "显示洗衣机 → 烘干机提示", + "show_handoff_hint_desc": "当洗涤结束且烘干机空闲时,建议转移衣物。", + "show_history_stats": "显示历史统计", + "show_history_stats_desc": "该时间窗口内的程序次数、能耗、费用与平均时长。", + "show_idle_alert": "显示遗忘衣物提醒", + "show_idle_alert_desc": "程序已结束但衣物仍留在机器里时显示的醒目横幅。", + "show_status_cards": "显示状态卡片", + "show_status_cards_desc": "每台设备一张卡片,显示其当前阶段。", + "show_timeline": "显示时间轴", + "show_timeline_desc": "历史窗口的条带视图,每台设备占一条轨道。", + "show_title": "显示标题", + "show_title_desc": "在设备上方显示标题。", + "sitting_for": "已放置 {time}", + "start_threshold": "启动阈值", + "start_threshold_desc": "功率高于该值即视为程序已启动。", + "state_entity": "设备状态实体", + "state_entity_desc": "没有功率传感器时的替代方案:由智能家电集成上报运行/空闲状态的实体。", + "stats_avg": "平均值", + "stats_busiest": "最繁忙", + "stats_cost": "费用", + "stats_cycles": "运行次数", + "stats_energy": "能耗", + "stats_footnote": "来自 {days} 天的历史数据", + "stats_learning": "尚无已完成的程序,仍在了解你的设备使用情况。", + "stop_threshold": "停止阈值", + "stop_threshold_desc": "功率低于该值即视为程序已结束。请保持它低于启动阈值。", + "suggest_preview": "建议:启动 {start} W,停止 {stop} W。", + "suggest_thresholds": "推荐阈值", + "suggested_applied": "已应用。若仍有程序漏检,可在高级检测中微调。", + "threshold_floor": "待机", + "threshold_helper_desc": "该传感器在历史窗口内实际记录到的数据。", + "threshold_helper_title": "阈值助手", + "threshold_loading": "正在读取该传感器的近期历史…", + "threshold_max": "最大值", + "threshold_median": "中位数", + "threshold_min": "最小值", + "threshold_no_data": "该传感器暂无 recorder 历史。先运行一次程序再回来查看。在此之前默认值也能正常工作。", + "timeline_empty": "该窗口内尚无程序记录。", + "timeline_title": "最近 {days} 天", + "title": "标题", + "title_desc": "留空则使用 “Laundry”。", + "unit_day": "d", + "unit_hour": "h", + "unit_minute": "m", + "unload_grace": "取出宽限期", + "unload_grace_desc": "程序结束后多久算作衣物被遗忘。", + "unloaded_badge": "已取出", + "unloaded_button": "已取出" + }, + "vehicle_maintenance": { + "add_preset": "从预设添加", + "add_service": "添加保养项", + "advanced": "高级", + "battery_entity": "电量", + "battery_entity_desc": "可选。适用于纯电和插电混动车型,与油量一同显示或替代油量显示。", + "cancel": "取消", + "card_background_color": "卡片背景", + "charge": "充电", + "colors_section": "颜色", + "colors_section_desc": "留空则跟随你的 Home Assistant 主题。", + "config_needed": "添加保养项", + "config_needed_desc": "请在常规标签页中至少添加一个保养周期", + "cost_per_distance": "{amount} / {unit}", + "currency_symbol": "货币符号", + "currency_symbol_desc": "加在卡片上每个费用数字的前面。", + "default_name": "我的车辆", + "delete_confirm": "删除", + "delete_log_message": "这会从保养历史中永久删除该条记录。", + "delete_log_title": "删除该条记录?", + "delete_message": "这会从卡片中移除该保养项及其周期。已写入保养日志的记录会保留。", + "delete_service": "删除保养项", + "delete_title": "删除保养项?", + "display_section": "显示", + "display_section_desc": "选择布局,并决定卡片显示哪些部分。", + "distance_unit": "距离单位", + "distance_unit_desc": "所有周期和读数使用的单位。来自使用其他单位的传感器的读数会自动换算。", + "due_in_distance": "{value} {unit}后", + "due_in_time": "{value}后", + "due_overdue_distance": "已超出 {value} {unit}", + "due_overdue_time": "已逾期 {value}", + "due_soon_color": "即将到期", + "due_soon_days": "提前提醒(时间)", + "due_soon_days_desc": "剩余天数低于此值时,保养项转为橙色预警。", + "due_soon_distance": "提前提醒", + "due_soon_distance_desc": "剩余里程低于此值时,保养项转为橙色预警。", + "due_today": "今天到期", + "due_unknown": "暂无历史记录", + "duration_day": "1 天", + "duration_days": "{value} 天", + "duration_month": "1 个月", + "duration_months": "{value} 个月", + "duration_week": "1 周", + "duration_weeks": "{value} 周", + "estimated_cost": "常规费用", + "estimated_cost_desc": "作为记录此项保养时的默认金额,并用于预测后续支出。", + "fuel": "燃油", + "fuel_entity": "油量", + "fuel_entity_desc": "可选。百分比传感器显示为一个进度条;其他类型则以数值显示。", + "hint_no_odometer": "目前仅按时间跟踪。添加里程表实体即可启用里程间隔,并在记录中附带里程数。", + "hint_odometer_unavailable": "里程表传感器当前不可用,里程间隔已暂停。按时间的跟踪仍在正常运行。", + "interval_distance": "里程间隔", + "interval_distance_desc": "两次保养之间行驶的里程,单位为 {unit}。仅按时间计算的保养项(如年检)请填 0。", + "interval_every": "每 {value}", + "interval_months": "时间间隔", + "interval_months_desc": "两次保养之间相隔的月数。仅按里程计算的保养项(如轮胎换位)请填 0。", + "interval_none": "未设置间隔", + "last_date": "上次保养日期", + "last_date_desc": "默认为添加该保养项的当天,这只是一个估计值。请设置为真实的上次保养日期。", + "last_distance": "上次保养时的里程", + "last_distance_desc": "不清楚请保留为 0。记录一次保养后,该值会被当时的里程读数覆盖。", + "layout": "布局", + "layout_compact": "紧凑", + "layout_desc": "主视图以车辆和下一次保养为主。列表显示所有保养项。紧凑模式只显示一行摘要。", + "layout_hero": "主视觉", + "layout_list": "列表", + "log_count": "{count} 条记录", + "log_empty": "尚无保养记录。在某个保养项上使用“标记为已保养”即可开始记录历史。", + "log_error": "无法从该待办清单读取保养日志。", + "log_limit": "保养日志条目", + "log_limit_desc": "卡片显示的最近条目数量。较早的记录仍保留在待办清单中。", + "log_no_storage": "在“常规”标签页选择一个待办清单,即可永久保存带费用的保养历史。", + "log_show_all": "显示全部 {count}", + "log_show_less": "收起", + "log_write_failed": "无法写入保养日志。", + "mark_confirm": "记录保养", + "mark_message_no_odometer": "将 {name} 记为今天完成。未配置里程表,因此不会记录里程读数。", + "mark_message_odometer": "将 {name} 记为今天完成,里程为 {odometer} {unit}。", + "mark_needs_list": "在“常规”标签页选择一个存储清单,即可从卡片记录保养", + "mark_serviced": "立即标记为已保养", + "mark_title": "标记为已保养?", + "marking": "正在记录…", + "move_down": "下移", + "move_up": "上移", + "new_service": "新增保养项", + "next_service": "下一次保养", + "no_reading": "无读数", + "notes": "备注", + "notes_desc": "零件号、机油标号、常去的店铺。", + "odometer": "里程表", + "odometer_converted": "由 {unit} 换算", + "odometer_entity": "里程表", + "odometer_entity_desc": "可以是汽车集成提供的传感器、OBD 适配器,或由你自行维护的 input_number。留空则仅按时间跟踪保养。", + "odometer_none": "未选择里程表。保养将仅按时间跟踪。在选择里程表之前,里程间隔不会生效。", + "odometer_offset": "里程表偏移", + "odometer_offset_applied": "已应用偏移 {value}", + "odometer_offset_desc": "会加到每一次读数上,单位为 {unit}。当传感器被重置或从零开始计数时使用,例如在已行驶 82,000 英里时加装的适配器。", + "odometer_source_unit": "传感器报告的单位为 {unit}", + "odometer_unit_assumed": "传感器未标注单位,按 {unit} 处理", + "odometer_unreadable": "该实体当前未上报数值。在恢复之前里程跟踪保持关闭;时间间隔仍正常计算。", + "ok_color": "按计划进行", + "overdue_color": "逾期", + "preset_air_filter": "空气滤清器", + "preset_battery": "电池检查", + "preset_brakes": "刹车检查", + "preset_cabin_filter": "空调滤清器", + "preset_coolant": "冷却液更换", + "preset_inspection": "安全检查", + "preset_oil": "更换机油", + "preset_registration": "年检", + "preset_spark_plugs": "火花塞", + "preset_tires": "轮胎换位", + "preset_transmission": "变速箱油", + "preset_wipers": "雨刮片", + "presets_hint": "常见周期的预设,添加后可自行调整。当单位为公里时,里程会自动换算。", + "pro_description": "按里程或时间跟踪换机油、轮胎换位和年检,任一条件先满足即触发,并基于车辆里程表生成带费用的保养日志。", + "projection": "根据 {window} 天的历史数据,按每天 {perDay} 计算,大约还剩 {days} 天。", + "row_from_log": "根据保养日志跟踪:上次完成于 {detail}。这会覆盖上面两个字段。", + "secondary_text_color": "次要文字", + "service_icon": "图标", + "service_log": "保养日志", + "service_name": "名称", + "services_empty": "暂无保养项。可在下方添加,或从预设开始。", + "services_section": "保养项", + "services_section_desc": "每个保养项按里程或时间中先到达者到期。将某一间隔设为 0 即可关闭该维度的跟踪。", + "show_costs": "显示费用", + "show_costs_desc": "在日志条目中显示金额,并添加总支出数据。", + "show_fuel": "显示油量与电量", + "show_next_service": "显示下次保养到期", + "show_odometer": "显示里程表", + "show_progress_bars": "显示进度条", + "show_service_log": "显示保养日志", + "show_title": "显示标题", + "show_vehicle_image": "显示车辆照片", + "storage_section": "保养日志存储", + "storage_section_desc": "保养历史存储在 Home Assistant 待办清单中,重启后依然保留,并会同步到所有设备。", + "tally_due_soon": "{count} 项即将到期", + "tally_ok": "全部正常", + "tally_overdue": "{count} 项已逾期", + "text_color": "文本", + "thresholds_section": "阈值", + "thresholds_section_desc": "设置保养项何时开始预警,以及显示多少条历史记录。默认值适用于大多数车辆。", + "title": "标题覆盖", + "title_desc": "留空则使用车辆名称。", + "todo_entity": "存储清单", + "todo_entity_desc": "在“设置 → 设备与服务 → 辅助元素 → 待办清单”下创建一个“本地待办清单”辅助元素,然后在此处选择它。", + "todo_missing": "没有清单将无法保存保养历史。间隔跟踪仍可使用下面每个保养项的上次保养数值。", + "todo_no_description": "该清单无法存储条目描述(购物清单就是这样)。记录功能仍然可用,但存储的数据会附加在条目标题中,在 Home Assistant 待办界面中看起来比较杂乱。建议使用“本地待办清单”辅助元素。", + "total_spend": "总支出", + "unit_days_short": "d", + "unit_km": "km", + "unit_km_long": "公里", + "unit_mi": "mi", + "unit_mi_long": "英里", + "unit_months_short": "个月", + "unit_offer": "单位已更改为 {unit}。间隔数值保持原样未做改动。是否换算?", + "unit_offer_convert": "换算数值", + "unit_offer_keep": "保持原样", + "unnamed_service": "未命名保养项", + "vehicle_image": "车辆照片", + "vehicle_image_desc": "可选。用作主视图横幅;留空时显示简洁的图标标题。", + "vehicle_name": "车辆名称", + "vehicle_name_desc": "在主视图布局中显示为标题。", + "vehicle_photo_alt": "车辆照片", + "vehicle_section": "车辆", + "vehicle_section_desc": "为车辆命名,并让模块指向它的里程表。其余内容均为可选。" + }, + "vampire_power": { + "advanced_thresholds": "高级阈值", + "analysis_section": "分析", + "analysis_section_desc": "设备的待机功耗按其从未低于的功率值衡量。时间窗口越长,估算越稳定,但加载耗时也更长。", + "baseline_percentile": "待机百分位", + "baseline_percentile_desc": "功率分布中哪个位置算作空闲。0.10 表示设备在整个窗口中处于或低于该功率水平的时间占 10%。数值越低越严格,得出的待机底线越低;数值越高则会包含轻度活动。", + "color_bar": "条形图", + "color_card_bg": "行背景", + "color_offender": "高耗设备", + "color_secondary": "次要文字", + "color_text": "文本", + "colors_section": "颜色", + "confidence_low": "基于有限历史数据估算({samples} 个样本)", + "cost_period": "费用周期", + "cost_period_desc": "年度数据足以作为行动依据;每日数据则更便于快速核对。", + "cost_section": "费用", + "cost_section_desc": "这些被浪费的电能值多少钱。费用按统一费率估算。", + "currency_symbol": "货币符号", + "currency_symbol_desc": "显示在每个费用金额之前。", + "default_title": "待机功耗", + "discovery_mode": "发现", + "discovery_mode_desc": "自动模式会在 Home Assistant 中扫描功率传感器,手动模式仅使用下方列表,两者并用则会合并。", + "dismiss_row": "隐藏此设备", + "dismissed": "已忽略的设备", + "dismissed_desc": "已有 {count} 台设备从卡片中移除,不计入排名和总计。", + "dismissed_empty": "尚未移除任何设备。在卡片预览中点击某一行的 ×,即可隐藏不想参与排名的设备。", + "display_section": "显示", + "energy_rate": "电价", + "energy_rate_desc": "每千瓦时的电价,取自你的电费账单。", + "entities": "功率传感器", + "entities_desc": "此处添加的传感器始终会被分析,即使全屋过滤器本会跳过它们。", + "entities_ph": "添加功率传感器", + "err_empty": "未找到功率传感器", + "err_empty_desc": "此模块需要以瓦特为单位上报数据的传感器,例如智能插座或能耗监测器。可在“常规”标签页的“传感器”下添加。", + "err_ha": "正在等待 Home Assistant", + "err_ha_desc": "正在连接实体状态…", + "err_history": "无法读取历史数据", + "err_history_desc": "recorder 未返回这些传感器的数据。请检查 recorder 集成是否为它们保留了历史记录。", + "error_manual_empty": "请至少添加一个功率传感器,或将发现模式切换为“自动”或“两者”。", + "error_range": "待机噪声下限必须低于常开设备阈值。", + "error_rate_negative": "电价不能为负数。", + "exclude_patterns": "排除模式", + "exclude_patterns_desc": "实体 ID 或名称中包含这些词语的传感器会被跳过。自动发现已会跳过全屋电表(名称如 total、house、grid 或 mains);对于其他不想参与排名的设备,可在此添加关键词。", + "exclude_patterns_ph": "例如:solar, inverter", + "found_capped": "为保证 recorder 查询速度,仅分析前 {max} 个。", + "found_none_hint": "智能插座和能耗监测器会提供这类传感器。切换到“手动”模式即可手工添加。", + "found_ok_hint": "全屋电表和电网电表会被跳过,以免淹没排名结果。", + "found_sensors": "找到 {count} 个功率传感器", + "highlight_threshold": "高耗设备阈值", + "highlight_threshold_desc": "待机功率达到或超过此瓦数的设备会以高耗设备颜色标示。", + "hint_many": "排名前 {count} 的设备每年仅在待机状态就要花掉 {cost}。按计划自动断电可以省下其中大部分。", + "hint_one": "仅 {name} 一项,什么都不做每年也要花掉 {cost}。用一个定时智能插座就能省下其中大部分。", + "history_days": "历史窗口", + "history_days_desc": "从 recorder 读取多久之前的数据。七天可覆盖完整的一周作息;更长的时间窗口需要 recorder 保留同等时长的历史记录。", + "layout": "布局", + "layout_cards": "卡片", + "layout_compact": "紧凑", + "layout_desc": "排名模式为每台设备显示一条柱条,磁贴模式为磁贴网格,紧凑模式为密集列表。", + "layout_ranked": "排名", + "loading_note": "正在分析 {count} 个功率传感器在 {days} 天历史数据中的表现…", + "max_items": "显示的设备数量", + "max_items_desc": "总计柱条始终覆盖所有被分析的设备,即使列表已被截断。", + "max_standby_watts": "常开设备阈值", + "max_standby_watts_desc": "待机底线高于此值的都是真正的常开电器,例如冰箱或服务器。它们会单独列出,而不作为待机浪费参与排名。", + "min_standby_watts": "噪声下限", + "min_standby_watts_desc": "低于此值的待机负载被视为测量噪声,完全不纳入统计。", + "mode_auto": "自动", + "mode_both": "两者", + "mode_manual": "手动", + "no_waste": "未发现待机浪费", + "no_waste_desc": "在过去 {days} 天里,所有传感器的待机功率都低于 {watts} W。在“分析”中调低噪声下限即可看到更小的负载。", + "note_always_on": "{count} 台常开设备即使在静止状态也消耗超过 {watts} W({names})。它们是正在运行,而非待机。", + "note_capped": "正在分析 {total} 个功率传感器中的前 {analyzed} 个。", + "note_insufficient": "还有 {count} 个传感器需要更多历史数据才能参与排名。", + "per_day": "/天", + "per_month": "/月", + "per_year": "/年", + "period_day": "天", + "period_month": "月", + "period_year": "年", + "pro_description": "待机功耗模块会读取你的 recorder 历史数据,找出从不关闭的待机负载,并告诉你每一项的年度费用。", + "restore_dismissed": "恢复已移除项", + "row_idle_fraction": "{pct}% 的时间处于空闲", + "row_peak": "峰值为 {watts} W", + "row_waste_ratio": "{pct}% 的用电属于待机", + "sensors_section": "传感器", + "sensors_section_desc": "选择要分析哪些功率传感器。自动模式会找出所有上报瓦数的传感器,因此大多数家庭无需在此设置。", + "show_bars": "显示柱条", + "show_bars_desc": "每一行都会显示一条以最耗电设备为基准的柱条。", + "show_cost": "显示费用", + "show_cost_desc": "关闭后仅显示功率。", + "show_savings_hint": "显示要点总结", + "show_savings_hint_desc": "用一行摘要说明最耗电的设备合计消耗多少。", + "show_title": "显示标题", + "show_title_desc": "在卡片上方显示标题。", + "show_total_bar": "显示合计", + "show_total_bar_desc": "全屋的汇总数据。", + "sort_cost": "费用", + "sort_mode": "排序方式", + "sort_mode_desc": "费用模式按年度浪费额排名,若数值相同则优先列出几乎纯粹待机的设备。", + "sort_name": "名称", + "sort_watts": "瓦数", + "title": "标题", + "title_desc": "留空则使用模块名称。", + "total_bar_aria": "待机负载分布在 {count} 台设备上", + "total_bar_rest": "其他设备", + "total_footer": "覆盖 {devices} 台设备,基于 {days} 天历史数据统计", + "total_label": "待机浪费", + "unit_days": "天", + "unit_watts": "W", + "watt_symbol": "W" + }, + "unifi": { + "accent_color": "强调色", + "accent_color_desc": "圆环、高亮和流量指示的强调色。", + "anim_full": "完整", + "anim_off": "关", + "anim_subtle": "轻微", + "animation": "动画", + "animation_desc": "端口闪烁、流量流动和圆环动画。遵循 prefers-reduced-motion 设置。", + "blank_background": "空白背景", + "blank_background_desc": "不显示卡片和容器背景,组件直接浮在仪表盘上。", + "client_add": "添加", + "client_list": "客户端", + "client_list_hint": "客户端需手动选择:客户端视图只显示你在此处添加的设备。", + "client_remove": "移除", + "clients_added": "已添加 {added} / {total}", + "clients_aside": "客户端视图中有 {count} 个可用网络设备。", + "clients_clear": "全部移除", + "curation_note": "显示 {total} 台 UniFi 设备中的 {shown} 台。可在“常规”标签页管理显示与否。", + "device_list": "UniFi 硬件", + "device_list_hint": "此处只显示 Ubiquiti 硬件:网络设备以及 UniFi Protect 摄像头和 NVR。已连接的手机、电脑和 IoT 设备留在客户端视图。插座和摄像头不会上架到机架——已显示的设备会出现在设备视图中。", + "empty": "未检测到 UniFi Network 集成。请先在 Home Assistant 中添加,之后此卡片便会自动发现你的设备。", + "filter_kind": "按类型筛选", + "found_clients": "{count} 个带带宽传感器的客户端", + "found_devices": "找到 {count} 台 UniFi 设备", + "found_hint": "设备会通过 UniFi Network 集成自动出现。", + "found_hint_infra": "来自 UniFi Network 集成的网关、交换机、AP 和 PDU。", + "found_infra": "找到 {count} 台 UniFi 设备(已显示 {shown} 台)", + "found_none": "暂未找到 UniFi 设备", + "hide": "隐藏", + "hide_all": "全部隐藏", + "include_clients": "包含客户端", + "include_clients_desc": "为客户端视图发现客户端带宽传感器。", + "kind_all": "全部({n})", + "kind_ap": "AP({n})", + "kind_camera": "摄像头({n})", + "kind_gateway": "网关({n})", + "kind_nvr": "NVR({n})", + "kind_pdu": "PDU({n})", + "kind_plug": "插座({n})", + "kind_switch": "交换机({n})", + "no_client_match": "没有符合此筛选条件的客户端。", + "layout_radial": "放射状", + "layout_tree": "树状", + "no_match": "没有符合此筛选条件的设备。", + "ports_device": "端口视图设备", + "ports_device_desc": "端口视图聚焦于哪台交换机或网关。", + "pro_description": "UniFi Network 基于官方 UniFi 集成构建实时虚拟机架、端口面板、拓扑图和客户端监视器,并带有动态端口指示灯、利用率圆环和一键传感器配置。", + "rack_style": "机架样式", + "rack_style_desc": "虚拟机架与面板的视觉主题。", + "search_devices": "搜索", + "search_devices_desc": "按名称或型号筛选。", + "section_colors": "颜色", + "section_colors_desc": "可选的强调色覆盖设置。", + "section_devices": "设备", + "section_devices_desc": "显示、隐藏此卡片上的 UniFi 硬件并调整其顺序。已连接的客户端另作处理。", + "section_display": "显示", + "section_display_desc": "标题、样式与视觉效果控制。", + "section_view": "视图", + "section_view_desc": "选择此卡片如何可视化你的 UniFi 网络。", + "show": "显示", + "show_advanced": "显示高级信息", + "show_advanced_desc": "额外的统计信息,如 RX/TX 速率、运行时间和端口数量。", + "show_camera_previews": "实时摄像头预览", + "show_camera_previews_desc": "在 UniFi Protect 摄像头磁贴上显示实时快照,而非产品图片。", + "topology_links": "拓扑连接", + "topology_links_hint": "这些设备未上报上行链路,因此卡片会推测其上级设备(以虚线显示)。UniFi Protect 摄像头从不上报上行链路。请手动指定它们所连接的交换机。", + "uplink_auto": "自动({name})", + "show_all": "显示全部", + "show_port_labels": "端口提示", + "show_port_labels_desc": "在面板上显示端口名称/速率的悬浮提示。", + "show_rack_gear": "仅显示机架设备", + "show_setup": "显示设置向导", + "show_sparklines": "显示迷你走势图", + "show_sparklines_desc": "在设备和 WAN 卡片上显示迷你历史曲线(需要使用 recorder)。", + "show_title": "显示标题", + "show_title_desc": "在视图上方显示卡片标题。", + "search_clients": "搜索", + "search_clients_desc": "按名称或 MAC 筛选。", + "showing_count": "显示 {total} 中的 {shown}", + "use_device_images": "真实设备照片", + "use_device_images_desc": "显示来自 ui.com 的 Ubiquiti 真实产品照片。离线时回退为绘制的面板图。", + "rack_order": "机架顺序", + "rack_order_hint": "拖动设备以从上到下排列机架。", + "move_up": "上移", + "move_down": "下移", + "style_blank": "空白", + "style_blueprint": "蓝图", + "style_dark": "暗色", + "style_glass": "玻璃", + "style_light": "光照", + "title": "标题", + "title_default": "UniFi Network", + "title_desc": "可选的标题文字。", + "topology_layout": "拓扑布局", + "topology_layout_desc": "树状图沿上行链路展开;放射图从网关向外发散。", + "view": "视图模式", + "view_clients": "客户端", + "view_desc": "机架是主布局。其余需求由端口、设备、拓扑、客户端和 WAN 视图覆盖。", + "view_devices": "设备", + "view_ports": "端口", + "view_rack": "机架", + "view_topology": "拓扑", + "view_wan": "WAN", + "wizard_admin_required": "请让 Home Assistant 管理员启用这些实体,或以管理员身份登录来使用一键配置。", + "wizard_bandwidth_option": "端口带宽传感器完全缺失。请在“设置 → 设备与服务 → UniFi Network → 配置 → 更多选项”中启用“网络客户端带宽用量传感器”,然后返回并启用新增的传感器。", + "wizard_disabled": "有 {count} 个实用的 UniFi 传感器处于停用状态(端口 RX/TX、链路速率、PoE 等)。启用它们即可显示动态端口指示灯和流量。", + "wizard_dismiss": "关闭", + "wizard_enable": "启用传感器", + "wizard_enabling": "正在启用…", + "wizard_loading": "正在检查 UniFi 设置…", + "wizard_no_devices": "未找到 Ubiquiti UniFi 设备。请先安装官方 UniFi Network 集成,然后重新加载此卡片。", + "wizard_open_integration": "打开 UniFi 集成", + "wizard_title": "UniFi 设置" + }, + "bambu": { + "title_default": "Bambu Lab", + "pro_description": "Bambu Lab 基于 ha-bambulab 集成构建实时打印机卡片,包含 AMS 料盘、温度、风扇、摄像头和农场视图。", + "view": "视图", + "view_desc": "打印机是主视图。仪表盘、摄像头、农场和紧凑视图覆盖其余场景。", + "view_printer": "打印机", + "view_dashboard": "仪表盘", + "view_camera": "摄像头", + "view_farm": "农场", + "view_compact": "紧凑", + "printer": "打印机", + "printer_desc": "显示哪台已发现的 Bambu 打印机(农场视图使用全部)。", + "printer_auto": "第一个发现的设备", + "style": "样式", + "style_desc": "表面与边框的视觉主题。", + "style_theme": "主题", + "style_dark": "暗色", + "style_light": "光照", + "style_glass": "玻璃", + "style_carbon": "碳纤维", + "animation": "动画", + "animation_desc": "风扇旋转、加热光效和进度动画。遵循 prefers-reduced-motion 设置。", + "anim_off": "关", + "anim_subtle": "轻微", + "anim_full": "完整", + "title": "标题", + "title_desc": "可选的标题文字。", + "show_title": "显示标题", + "sections": "分区", + "sections_desc": "切换所选视图中显示哪些区块。", + "show_ams": "AMS 料盘", + "ams_layout": "AMS 布局", + "ams_layout_desc": "多个 AMS / 外挂料盘的排列方式。", + "ams_layout_stacked": "堆叠", + "ams_layout_grid": "网格", + "ams_layout_strip": "仅显示料盘", + "ams_units": "AMS 单元", + "ams_units_desc": "拖动以调整 AMS 和外挂料盘单元的顺序。不需要的可隐藏。", + "show_camera": "摄像头", + "show_controls": "控件", + "show_temps": "温度", + "show_fans": "风扇", + "show_print_details": "打印详情", + "show_hms": "HMS 错误", + "show_speed": "速度配置", + "show_job": "打印任务", + "show_job_desc": "文件名、层数和剩余时间。", + "show_thumbnail": "封面缩略图", + "show_thumbnail_desc": "打印任务区块内的封面图。", + "camera_mode": "摄像头模式", + "camera_mode_desc": "快照模式轮询静态图片(流量较低)。实时模式像 Home Assistant 一样流式播放摄像头画面。", + "camera_mode_snapshot": "快照", + "camera_mode_live": "实时", + "camera_refresh": "摄像头刷新间隔(秒)", + "camera_refresh_desc": "摄像头快照的刷新频率。", + "custom_image": "自定义打印机图片", + "custom_image_desc": "可选的图片覆盖设置。热点叠加层保持不变。", + "accent_color": "强调色", + "accent_color_desc": "高亮与进度的强调色。", + "text_color": "文字颜色", + "secondary_text_color": "次要文字", + "farm_order": "农场顺序", + "farm_order_desc": "拖动以调整农场网格中打印机的顺序。不需要的可隐藏。", + "empty": "未发现 Bambu Lab 打印机。请安装 greghesp/ha-bambulab,然后重新加载此卡片。", + "hint_no_integration": "安装并配置 Bambu Lab 集成(greghesp/ha-bambulab)以自动发现打印机。", + "hint_no_printers": "已配置 Bambu Lab,但未找到打印机。", + "hint_camera_off": "摄像头已被关闭。请在打印机设备上启用摄像头开关。", + "hint_offline": "打印机似乎处于离线状态。", + "hint_no_ams": "未发现此打印机的 AMS 单元。", + "wizard_dismiss": "关闭", + "found_printers": "找到 {count} 台 Bambu 打印机" + }, + "printer_3d": { + "title_default": "3D 打印机", + "layout": "布局", + "layout_desc": "卡片的排列方式。", + "layout_hero": "主视觉", + "layout_standard": "标准", + "layout_compact": "紧凑", + "layout_camera": "摄像头", + "style": "样式", + "style_desc": "表面与边框的视觉主题。", + "style_theme": "主题", + "style_dark": "暗色", + "style_light": "光照", + "style_glass": "玻璃", + "illustration": "示意图", + "illustration_desc": "程序绘制的打印机图形,或者使用你自己的图片。", + "illustration_enclosed": "封闭式", + "illustration_bedslinger": "床动式", + "illustration_none": "无", + "illustration_image": "自定义图片", + "custom_image": "自定义图片", + "custom_image_desc": "当示意图设为自定义图片时,上传一张打印机照片。", + "title": "标题", + "title_desc": "可选的标题文字。", + "show_title": "显示标题", + "source": "来源", + "source_desc": "手动映射,或从已知集成自动填充。", + "source_manual": "手动", + "source_octoprint": "OctoPrint", + "source_moonraker": "Moonraker", + "source_prusalink": "PrusaLink", + "source_device": "设备", + "source_device_desc": "选择一个已发现的打印机设备,然后自动填充。", + "autofill": "自动填充实体", + "autofill_desc": "从所选设备映射常用实体,之后你可以自行修改。", + "bambu_hint": "用的是 Bambu Lab 打印机?Pro 的 Bambu Lab 模块支持 AMS、农场视图和自动发现。", + "mapping": "实体映射", + "mapping_desc": "把 Home Assistant 实体绑定到打印机字段。", + "status_entity": "状态", + "progress_entity": "进度", + "nozzle_temp_entity": "喷嘴温度", + "nozzle_target_entity": "喷嘴目标温度", + "bed_temp_entity": "热床温度", + "bed_target_entity": "热床目标温度", + "chamber_temp_entity": "腔体温度", + "remaining_time_entity": "剩余时间", + "end_time_entity": "结束时间", + "current_layer_entity": "当前层", + "total_layers_entity": "总层数", + "file_name_entity": "文件 / 任务名称", + "camera_entity": "摄像头", + "thumbnail_entity": "缩略图", + "pause_entity": "暂停", + "resume_entity": "继续", + "stop_entity": "停止", + "light_entity": "光照", + "fans": "风扇", + "fans_desc": "最多三个风扇实体,可带可选标签。", + "extra_stats": "额外数据", + "extra_stats_desc": "显示在详情列表中的其他传感器。", + "sections": "分区", + "show_controls": "控件", + "show_temps": "温度", + "show_fans": "风扇", + "show_camera": "摄像头", + "show_job": "打印任务", + "show_job_desc": "文件名、层数和剩余时间。", + "show_thumbnail": "封面缩略图", + "show_thumbnail_desc": "打印任务区块内的封面图。", + "camera_mode": "摄像头模式", + "camera_mode_desc": "快照模式轮询静态图片(流量较低)。实时模式像 Home Assistant 一样流式播放摄像头画面。", + "camera_mode_snapshot": "快照", + "camera_mode_live": "实时", + "camera_refresh": "摄像头刷新间隔(秒)", + "accent_color": "强调色", + "text_color": "文字颜色", + "secondary_text_color": "次要文字" + } + }, + "hub": { + "groups": { + "home": "首页", + "library": "素材库", + "account": "账户", + "help": "帮助" + }, + "tabs": { + "dashboard": "仪表盘", + "account": "账户", + "pro": "Pro", + "favorites": "收藏", + "presets": "预设", + "themes": "主题", + "colors": "颜色", + "variables": "变量", + "templates": "模板", + "docs": "文档", + "about": "关于" + }, + "loading": "加载中…", + "subtitle": "Hub", + "themes": { + "blurb": "主题一次性决定所有 Ultra Card 的外观:表面质感(玻璃、柔和、扁平)、圆角半径、阴影以及每个模块的默认样式。在此处选择全局默认值,可在“卡片设置 > 外观”中按卡片覆盖,也可用任意显式样式按模块覆盖。", + "global_title": "全局默认", + "global_desc": "供所有未单独设置主题的 Ultra Card 使用。保存在此浏览器中,并在可用时通过 Ultra Card Connect 同步。", + "paint_page": "允许主题绘制仪表盘背景", + "paint_page_desc": "Neumorphic、Wood 等主题会一并设置卡片背后的视图,好让阴影和材质正常呈现。在仪表盘配置中为视图设置的背景仍然优先。", + "sections_width": "Sections 与 FreeSpace 宽度", + "sections_width_desc": "Home Assistant 把每个 Sections 列的宽度上限设为 500px 并让视图居中,这在宽屏上会在两侧留下空白。可在此为本浏览器中的每个仪表盘加宽——FreeSpace 使用同一设置。在仪表盘配置中为视图设置的主题仍然优先。Masonry 与 Panel 视图不受影响。", + "sections_width_default": "Home Assistant 默认", + "sections_width_default_hint": "每列 500px,居中", + "sections_width_full": "全宽", + "sections_width_full_hint": "Sections 列与 FreeSpace 铺满整个屏幕", + "sections_width_custom": "自定义", + "sections_width_custom_hint": "选择每列的最大宽度", + "sections_column_width": "每列最大宽度(px)", + "sections_gap": "列间距与两侧内边距(px)", + "sections_gap_placeholder": "HA 默认(32)", + "library_title": "你的素材库", + "library_desc": "你创建、导入或安装过的主题。可在此编辑与复制,也可以把其中一个分享到目录。", + "filter_builtin": "内置", + "filter_local": "我的", + "filter_official": "官方", + "filter_community": "社区", + "new_theme": "新建主题", + "import": "导入 JSON", + "edit": "编辑", + "duplicate": "复制", + "export": "导出", + "delete": "删除", + "set_global": "设为全局默认", + "is_global": "全局默认", + "apply_title": "应用到仪表盘", + "apply_desc": "把某个主题写入仪表盘中的每一张 Ultra Card。已单独设置主题的卡片会被覆盖。之前的配置会保留下来,方便你撤销上一次应用。", + "apply_dashboard": "仪表盘", + "apply_theme": "主题", + "apply_follow_global": "跟随全局默认(清除逐卡主题)", + "apply_button": "应用到所有 Ultra Card", + "apply_confirm_title": "将主题应用到仪表盘?", + "apply_confirm": "这会重写“{dashboard}”中每一张 Ultra Card 的 uc_theme。是否继续?", + "apply_done": "已更新 {seen} 张 Ultra Card 中的 {count} 张", + "apply_none": "没有需要修改的 Ultra Card", + "apply_failed": "无法更新仪表盘", + "undo": "撤销上一次应用", + "undo_done": "已恢复之前的仪表盘配置", + "yaml_mode": "YAML 模式(只读)", + "delete_confirm_title": "删除主题?", + "delete_confirm": "“{name}”将从此浏览器中移除。使用它的卡片会回退到全局默认主题。", + "import_title": "导入主题", + "import_desc": "粘贴从 Ultra Card 导出的主题 JSON,或从主题图库下载的 JSON。", + "import_placeholder": "{ \"id\": \"my-theme\", \"name\": \"My theme\", \"tokens\": { ... } }", + "import_button": "导入", + "import_invalid": "这看起来不是有效的 Ultra Card 主题", + "import_done": "已导入“{name}”", + "import_warnings": "导入时带有警告:{warnings}", + "export_copied": "主题 JSON 已复制到剪贴板", + "saved": "已保存“{name}”", + "deleted": "已删除“{name}”", + "global_set": "全局默认:{name}", + "editor_title_new": "新建主题", + "editor_title_edit": "编辑主题", + "editor_basics": "基本信息", + "editor_tokens": "表面与外形", + "editor_card": "卡片外观", + "editor_modules": "模块默认值", + "editor_css": "自定义 CSS", + "editor_css_help": "作用域限于本卡片的 shadow root。可使用 .card-container 和模块类。允许通过 url(\"data:image/...\") 内联 SVG/PNG 图像;不允许使用远程 url()、@import 和 @font-face。", + "editor_name": "名称", + "editor_id": "ID", + "editor_description": "描述", + "editor_author": "作者", + "editor_icon": "图标(mdi:...)", + "editor_surface": "表面质感", + "editor_radius": "卡片圆角(px)", + "editor_radius_sm": "控件圆角(px)", + "editor_blur": "玻璃模糊(px)", + "editor_border_width": "边框宽度(px)", + "editor_border_color": "边框颜色", + "editor_shadow": "阴影(CSS box-shadow)", + "editor_density": "密度", + "editor_accent": "强调色", + "editor_font": "字体系列", + "editor_card_hint": "把字段留空,卡片就会回退使用 Home Assistant 自身的变量。", + "editor_card_background": "背景", + "editor_card_padding": "内边距(px)", + "editor_card_shadow": "卡片阴影", + "editor_module_inherit": "模块默认值", + "editor_module_recipe": "主题表面", + "editor_recipes": "表面样式", + "editor_recipes_hint": "决定跟随主题的模块如何绘制控件、轨道、填充和内部面板。保持“来自表面”即可从上方的表面设置派生;下方的模块默认值仍可覆盖单个模块。", + "editor_recipe_from_surface": "来自表面", + "editor_recipe_control": "控件(按钮、标签)", + "editor_recipe_track": "轨道(进度条、滑块)", + "editor_recipe_fill": "填充(进度条与滑块的填充部分)", + "editor_recipe_pane": "面板(行、磁贴)", + "editor_save": "保存主题", + "editor_cancel": "取消", + "editor_preview": "预览", + "editor_name_required": "请先为主题命名", + "editor_grayscale": "整卡去饱和度(0 = 彩色,1 = 单色)", + "editor_layers": "图层", + "editor_layers_hint": "卡片背后的页面,以及模块在其中绘制的面板(行、磁贴、标签、轨道)。留空则从表面派生面板,页面交由 Home Assistant 处理。", + "editor_page_background": "页面背景(卡片背后的视图)", + "editor_pane_background": "面板背景", + "editor_pane_border": "面板边框", + "editor_pane_shadow": "面板阴影", + "editor_color_filter": "颜色滤镜(CSS filter 链,覆盖去色设置)", + "editor_palette": "颜色", + "editor_palette_hint": "为使用此主题的卡片固定 Home Assistant 的颜色变量。留空则跟随当前 HA 主题。配套颜色(次级背景、主色上的文字、输入框填充)会由字面颜色自动派生,以保证文字仍然可读。", + "editor_palette_primary": "主色", + "editor_palette_accent": "强调色", + "editor_palette_card_bg": "卡片背景", + "editor_palette_text": "文本", + "editor_palette_text_secondary": "次要文字", + "editor_palette_divider": "分隔线", + "editor_palette_on_primary": "主色上的文字", + "ha_import": "从 HA 主题导入", + "ha_import_title": "从 Home Assistant 主题导入", + "ha_import_desc": "从已安装的 HA 主题读取卡片颜色、圆角、阴影和字体,并在编辑器中打开结果。补充表面样式和模块预设后保存即可。", + "ha_import_theme": "HA 主题", + "ha_import_mode": "模式", + "ha_import_mode_auto": "当前(跟随 HA 深色模式)", + "ha_import_mode_light": "光照", + "ha_import_mode_dark": "暗色", + "ha_import_button": "在编辑器中打开", + "ha_import_mapped": "已从“{name}”映射 {count} 个值", + "ha_import_nothing": "“{name}”没有设置任何卡片变量;将从默认值开始", + "share": "分享到目录", + "catalog_refresh": "刷新", + "catalog_loading": "正在加载目录…", + "catalog_error": "无法访问 ultracard.io", + "catalog_empty_title": "还没有社区主题", + "catalog_empty": "做第一个吧:制作一个主题并分享到目录。", + "sort_downloads": "安装最多", + "sort_date": "最新", + "sort_title": "名称", + "downloads": "安装量", + "install": "安装", + "update": "更新", + "installed": "已安装", + "installed_done": "已安装“{name}”", + "install_confirm_title": "安装“{name}”?", + "install_confirm": "在这个主题生效到你的卡片之前,请先了解它会:", + "mine_title": "已分享到目录", + "mine_desc": "你提交到 ultracard.io 的主题:审核状态、安装量和评分。", + "mine_login_title": "登录以管理你分享的主题", + "mine_login_desc": "分享、评分和编辑目录主题都通过 Ultra Card Connect 完成。", + "mine_loading": "正在加载你的主题…", + "mine_admin_only": "主题创作仅对 Home Assistant 管理员开放。请通过 Ultra Card Connect 以管理员身份登录。", + "mine_empty_title": "尚未分享任何内容", + "mine_empty": "使用素材库中某个主题的分享按钮,或者在 ultracard.io 上制作一个主题并从那里提交。", + "sign_in": "登录", + "status_pending": "审核中", + "status_revision": "更新审核中", + "status_approved": "已发布", + "status_changes": "需要修改", + "status_rejected": "已拒绝", + "withdraw": "撤回", + "withdraw_confirm_title": "撤回提交?", + "withdraw_confirm": "“{name}”会从审核队列中移出。你可以稍后编辑并重新提交。", + "withdrawn": "已撤回“{name}”", + "delete_submission_title": "从 ultracard.io 删除?", + "delete_submission_confirm": "“{name}”将对所有人从目录中移除。此操作无法撤销。", + "view_switch": "主题视图", + "view_browse": "主题", + "view_mine": "我的主题", + "browse_blurb": "一次性决定所有 Ultra Card 的外观:表面质感、圆角、阴影、颜色以及每个模块的默认样式。选择全局默认值,从目录安装更多主题,并可随时按卡片或按模块覆盖。", + "mine_blurb": "收录你在此浏览器中创建、导入或安装的主题,以及你分享到目录的主题及其审核进度。", + "search": "搜索主题…", + "search_empty": "没有匹配“{query}”的内容", + "default_title": "默认主题", + "default_desc": "内置于 Ultra Card,由 Ultra Card 团队维护。官方目录主题一键即可安装到你的素材库。", + "community_title": "社区主题", + "community_desc": "由 Ultra Card 成员在 ultracard.io 上用主题生成器制作。给你安装的主题打个分,帮其他人发现好东西。", + "library_empty_title": "还没有属于你自己的主题", + "library_empty": "在这里新建一个、导入 JSON 文件,或者从目录安装一个主题,它就会出现在这个列表中。", + "browse_catalog": "浏览主题", + "sort_rating": "评分最高", + "rating": "评分", + "rate_title": "为“{name}”评分", + "rate_thanks": "感谢评分!", + "rate_none": "暂无评分", + "rate_own": "你不能给自己的主题评分", + "rate_yours": "你给这个主题打了 {stars}/5。点击可修改。", + "rate_you": "你:{stars}", + "rate_tap": "点击评分", + "rate_sign_in": "登录后可评分", + "view_on_site": "在 ultracard.io 上查看", + "open_builder": "打开主题生成器", + "open_builder_short": "主题生成器", + "open_in_builder": "在主题生成器中打开", + "builder_title": "位于 ultracard.io、带实时预览的完整主题生成器", + "builder_hint": "想自己做一个?ultracard.io 的主题生成器为每个控件都提供实时预览,做好的主题会直接同步回这里。" + }, + "submit_theme": { + "create_title": "分享你的主题", + "create_subtitle": "提交到 ultracard.io", + "edit_title": "编辑你的主题", + "edit_subtitle": "在 ultracard.io 上更新", + "create_blurb": "把你的主题分享给 Ultra Card 社区。经审核通过后,它会出现在主题目录中,所有人都可以安装。", + "edit_blurb": "更新下方的详细信息。对已上线主题的修改会排队等待审核,期间当前版本仍然在线。", + "field_title": "主题名称", + "title_required": "名称不能为空。", + "field_description": "描述", + "description_placeholder": "这个主题长什么样,适合搭配哪些 HA 主题?", + "description_required": "描述不能为空。", + "field_tags": "标签", + "tags_hint": "以逗号分隔", + "field_json": "主题 JSON", + "json_required": "主题 JSON 不能为空。", + "json_invalid": "主题 JSON 不是有效的 JSON。", + "json_rejected": "不是有效的 Ultra Card 主题", + "json_warnings": "发布前已剔除的内容", + "json_hint": "从 Hub 主题编辑器导出。颜色可能会引用 HA 变量。", + "risk_title": "安装者将被告知此主题:", + "field_preview": "预览图片", + "optional": "(可选)", + "upload_preview": "点击上传截图", + "preview_hint": "在目录中代替生成的色卡显示", + "preview_too_large": "预览图片超过 16 MB 限制。", + "replace_preview": "移除 / 替换", + "cancel": "取消", + "send": "发送", + "save": "保存", + "sending": "发送中…", + "saving": "保存中…", + "uploading_preview": "正在上传预览图…", + "submit_failed": "提交主题失败,请重试。", + "success_create_title": "主题已提交", + "success_create_body": "感谢分享。你的主题正在等待审核,通过后会出现在目录中。", + "success_edit_title": "主题已更新", + "success_edit_review": "更新已提交审核。更新通过之前,你的在线主题会保持原样。", + "success_edit_saved": "已保存。", + "got_it": "知道了" + }, + "my_presets": { + "view_switch": "预设视图", + "browse": "浏览", + "mine": "我的预设", + "login_title": "登录以管理你的预设", + "login_message": "在此查看提交状态、审核员反馈,并更新你的预设。", + "login_button": "登录", + "admin_only_title": "需要管理员权限", + "admin_only_message": "预设创作仅对 Home Assistant 管理员开放。请通过 Ultra Card Connect 以管理员身份登录来管理你的提交。", + "blurb": "无需离开 Home Assistant,就能跟踪提交、回应审核员反馈并更新预设。", + "refresh": "刷新", + "loading": "正在加载你的预设…", + "load_error": "无法加载你的预设。", + "empty_title": "还没有提交记录", + "empty_message": "从卡片编辑器分享一个布局,即可提交你的第一个预设。", + "status": { + "pending": "等待审核", + "live": "实时", + "changes_requested": "需要修改", + "rejected": "已拒绝", + "draft": "草稿" + }, + "pending_revision": "更新等待审核", + "moderator_note": "审核员留言", + "edit": "编辑", + "withdraw": "撤回", + "delete": "删除", + "view_on_site": "在网站上查看", + "confirm_withdraw": "撤回这条等待审核的提交或修订?", + "confirm_delete": "删除此预设?此操作无法撤销。", + "withdrawn": "提交已撤回", + "deleted": "预设已删除", + "updated": "预设更新已保存" + }, + "submit_preset": { + "create_title": "分享你的布局", + "create_subtitle": "提交到 ultracard.io", + "edit_title": "编辑你的预设", + "edit_subtitle": "在 ultracard.io 上更新", + "create_blurb": "把你的布局分享给 Ultra Card 社区。填写下方的详细信息并提交。经我们的团队审核通过后,它会出现在预设图库中。", + "edit_blurb": "更新下方的详细信息。对已上线预设的修改会排队等待审核,期间当前版本仍然在线。", + "cancel": "取消", + "send": "发送", + "save": "保存", + "sending": "发送中…", + "saving": "保存中…", + "uploading_photo": "正在上传照片", + "field_title": "预设标题", + "field_description": "预设描述", + "field_category": "预设分类", + "field_tags": "预设标签", + "field_code": "预设代码", + "field_featured": "封面图片", + "field_photos": "预设照片", + "field_integrations": "集成", + "title_required": "标题不能为空。", + "description_required": "描述不能为空。", + "category_required": "请选择一个分类。", + "code_required": "预设代码不能为空。", + "featured_required": "封面图片不能为空。", + "loading_categories": "正在加载分类…", + "tags_hint": "以逗号分隔", + "code_hint_layout": "已根据你当前的卡片布局自动填充,需要时可修改。", + "code_hint_paste": "在此粘贴你的 Ultra Card 布局 JSON。", + "update_code_from_layout": "根据当前布局更新代码", + "existing_photos": "已有照片", + "kept_photo": "已上传的照片", + "gallery_photo": "图库照片", + "upload_featured": "点击上传封面图片", + "featured_hint": "必填 · 用作图库缩略图", + "replace_featured": "移除 / 替换", + "upload_photos": "点击上传更多照片", + "photos_hint": "最多 5 张", + "optional": "(可选)", + "no_new_photos": "没有其他照片", + "uploading_featured": "正在上传封面图片…", + "integrations_hint": "此预设所用集成的列表,以逗号分隔", + "success_create_title": "预设已提交!", + "success_create_body": "感谢分享!你的预设正在等待审核。经我们的团队审核通过后,它会出现在预设图库中。", + "success_edit_title": "预设已更新", + "success_edit_review": "更新已提交审核。更新通过之前,你的在线预设会保持原样。", + "success_edit_saved": "已保存。", + "got_it": "知道了,谢谢!" + }, + "dashboard": { + "presets_awaiting_review": "{count} 个预设等待审核", + "presets_changes_requested": "{count} 个需要修改", + "view_my_presets": "查看我的预设" + }, + "freespace": { + "title": "FreeSpace", + "ready": "FreeSpace 已就绪", + "desc": "一种自由布局的仪表盘:可以随意拖放、缩放、旋转任意卡片,并自由调整层级。外观像 Home Assistant 的 Sections,但拥有完全的画布自由度。随 Ultra Card Connect 提供。", + "needs_connect": "安装 Ultra Card Connect 即可解锁 FreeSpace。已有的 FreeSpace 视图在未安装时仍然可以渲染。", + "install_connect": "安装指南", + "step1": "打开一个仪表盘,点击“编辑仪表盘”", + "step2": "点击视图上的铅笔图标 → 布局 → FreeSpace (Ultra Card)", + "step3": "自由拖动卡片;用边角图标旋转;随意调整层级" + }, + "sections_width": "Sections 与 FreeSpace 宽度", + "sections_width_desc": "加宽 Sections 列与 FreeSpace 以铺满屏幕,或者保留 Home Assistant 默认的居中布局。适用于此浏览器中的每个仪表盘。Masonry 与 Panel 视图不受影响。", + "sections_width_default": "Home Assistant 默认", + "sections_width_default_hint": "每列 500px,居中", + "sections_width_full": "全宽", + "sections_width_full_hint": "Sections 列与 FreeSpace 铺满整个屏幕", + "sections_width_custom": "自定义", + "sections_width_custom_hint": "选择每列的最大宽度", + "sections_column_width": "每列最大宽度(px)", + "sections_gap": "列间距与两侧内边距(px)", + "sections_gap_placeholder": "HA 默认(32)" + }, + "freespace": { + "import_sections": "此视图仍有 {count} 张卡片位于 Sections 中。要将它们导入 FreeSpace 吗?", + "import_sections_action": "导入分区", + "requires_connect": "安装 Ultra Card Connect 才能排列 FreeSpace 卡片。", + "narrow_hint": "手机端正在使用桌面端布局,并已堆叠以便于阅读。在工具栏中选择“自定义”,即可单独排列手机端布局。", + "empty": "添加一张卡片即可开始搭建。", + "add_card": "添加卡片", + "breakpoints": "断点", + "bp_desktop": "桌面端", + "bp_laptop": "笔记本电脑", + "bp_tablet": "平板", + "bp_phone": "手机端", + "select_hint": "点击可选中,按住 Shift 点击或在空白处拖动可多选。双击进行编辑。右键打开卡片菜单。", + "device_preview_hint": "正以实际尺寸显示 {bp}。虚线标示设备边缘。", + "width_bound": "设计画布边缘", + "width_bounds_hint": "虚线标示设计画布宽度(Hub → 首页 → 全宽已关闭)。", + "outside_bounds_hint": "有些卡片位于标线之外。它们仍然可用;把它们拖回画布内即可。", + "toolbar": "FreeSpace 工具", + "tb_field_x": "X 位置", + "tb_field_y": "Y 位置", + "tb_field_w": "宽度", + "tb_field_h": "高度", + "tb_field_r": "旋转(度)", + "tb_pin": "水平固定", + "tb_pin_left": "固定左侧", + "tb_pin_center": "固定居中", + "tb_pin_right": "固定右侧", + "tb_pin_stretch": "固定左右(拉伸)", + "tb_pin_inactive": "(在 Hub → 首页开启“全宽”时生效)", + "tb_align": "对齐", + "tb_align_left": "左对齐", + "tb_align_center": "居中对齐", + "tb_align_right": "右对齐", + "tb_align_top": "顶部对齐", + "tb_layer": "图层", + "tb_front": "置于最前", + "tb_forward": "上移一层", + "tb_backward": "下移一层", + "tb_back": "置于最后", + "tb_edit": "编辑卡片", + "tb_duplicate": "复制", + "tb_delete": "删除", + "tb_snap": "对齐网格", + "tb_align_middle": "垂直居中对齐", + "tb_align_bottom": "底部对齐", + "tb_selected": "已选择 {count} 个", + "tb_distribute": "分布", + "tb_distribute_h": "水平分布", + "tb_distribute_v": "垂直分布", + "tb_distribute_need": "选择 3 张或更多卡片才能分布", + "tb_multi_hint": "按住 Shift 点击或在空白处拖动可多选", + "bp_layout": "{bp} 布局", + "use_desktop": "使用桌面端布局", + "use_desktop_hint": "跟随桌面端布局。在此移动卡片会切换为自定义。", + "custom_layout": "自定义", + "custom_layout_hint": "单独排列这一屏幕尺寸", + "reset_to_desktop_title": "使用桌面端布局?", + "reset_to_desktop_body": "你的 {bp} 位置将被移除,{bp} 将重新跟随桌面端布局。", + "reset_to_desktop_confirm": "使用桌面端布局", + "delete_selected_title": "删除 {count} 张卡片?", + "delete_selected_body": "所选卡片将从此视图中移除。", + "menu_options": "卡片选项", + "menu_edit": "编辑", + "menu_copy": "复制", + "menu_cut": "剪切", + "menu_reset_rotation": "重置旋转", + "menu_rotate": "旋转", + "menu_pin_to": "固定到", + "menu_pin_left": "左", + "menu_pin_center": "居中", + "menu_pin_right": "右", + "menu_pin_stretch": "左侧与右侧", + "editor_section": "FreeSpace 视图专属设置", + "editor_canvas_widths": "各断点的画布尺寸", + "editor_canvas_widths_help": "每个断点的画板设计宽度(默认值:桌面端 {desktop}、笔记本 {laptop}、平板 {tablet}、手机端 {phone})。在屏幕上,FreeSpace 像 Sections 一样以 1:1 填满视图,不会拉伸较小的画布来放卡片。", + "editor_default": "默认 {value}。", + "editor_desktop_help": "卡片在宽屏上使用此布局。", + "editor_phone_help": "如果手机端使用桌面端布局且“堆叠”已开启,卡片会保持堆叠,直到你选择自定义并单独排列手机端布局。", + "editor_min_height": "画板最小高度", + "editor_min_height_help": "画板高度随内容增长,这里是下限(默认 {value})。", + "editor_grid": "吸附网格(0 = 关闭)", + "editor_grid_help": "拖动与缩放时以画板为单位的吸附步长。", + "editor_narrow": "没有专属布局的手机端", + "editor_narrow_help": "当手机端使用桌面端布局时:堆叠卡片便于阅读,或者继续缩放画板。", + "editor_narrow_stack": "堆叠卡片(推荐)", + "editor_narrow_scale": "保持缩放画板", + "editor_canvas_width_legacy": "桌面端画布宽度(旧版)" + } +} diff --git a/src/translations/zh.meta.json b/src/translations/zh.meta.json new file mode 100644 index 00000000..61659bfd --- /dev/null +++ b/src/translations/zh.meta.json @@ -0,0 +1,5094 @@ +{ + "aiTranslatedKeys": [ + "editor.tabs.layout", + "editor.tabs.settings", + "editor.tabs.card_settings", + "editor.tabs.about", + "editor.tabs.pro", + "editor.settings.title", + "editor.settings.description", + "editor.template.unknown_keys_title", + "editor.template.did_you_mean", + "editor.template.supported_keys", + "editor.appearance.title", + "editor.appearance.description", + "editor.appearance.transparent_card", + "editor.appearance.transparent_card_desc", + "editor.appearance.ha_theme", + "editor.appearance.ha_theme_default", + "editor.appearance.ha_theme_desc", + "editor.appearance.uc_theme", + "editor.appearance.uc_theme_desc", + "editor.appearance.uc_theme_active", + "editor.appearance.uc_theme_manage", + "editor.theme.inherit", + "editor.theme.inherit_short", + "editor.theme.follow_global", + "editor.theme.none", + "editor.theme.none_desc", + "editor.behavior.title", + "editor.behavior.description", + "editor.pro_settings.title", + "editor.pro_settings.description", + "editor.pro_settings.skip_default_modules", + "editor.pro_settings.skip_default_modules_desc", + "editor.spacing.title", + "editor.spacing.description", + "editor.favorite_colors.title", + "editor.favorite_colors.description", + "editor.custom_variables.title", + "editor.custom_variables.description", + "editor.custom_variables.add_variable", + "editor.custom_variables.add_new_variable", + "editor.custom_variables.variable_name", + "editor.custom_variables.variable_name_placeholder", + "editor.custom_variables.variable_usage", + "editor.custom_variables.select_entity", + "editor.custom_variables.select_entity_placeholder", + "editor.custom_variables.value_type", + "editor.custom_variables.value_type_entity_id", + "editor.custom_variables.value_type_state", + "editor.custom_variables.value_type_attribute", + "editor.custom_variables.value_type_entity_id_desc", + "editor.custom_variables.value_type_state_desc", + "editor.custom_variables.value_type_attribute_desc", + "editor.custom_variables.attribute_name", + "editor.custom_variables.variable_scope", + "editor.custom_variables.global", + "editor.custom_variables.this_card", + "editor.custom_variables.global_hint", + "editor.custom_variables.card_hint", + "editor.custom_variables.global_variables", + "editor.custom_variables.card_variables", + "editor.custom_variables.clear_all", + "editor.custom_variables.clear_global", + "editor.custom_variables.clear_card", + "editor.custom_variables.confirm_delete", + "editor.custom_variables.confirm_clear_all", + "editor.custom_variables.confirm_clear_card", + "editor.custom_variables.edit_variable", + "editor.custom_variables.delete_variable", + "editor.custom_variables.drag_to_reorder", + "editor.custom_variables.empty_title", + "editor.custom_variables.empty_description", + "editor.export_import.include_variables", + "editor.export_import.import_variables", + "editor.export_import.variables_found", + "editor.variable_mapping.title", + "editor.variable_mapping.description", + "editor.variable_mapping.skip", + "editor.variable_mapping.create", + "editor.variable_mapping.skipped", + "editor.cloud_sync.title", + "editor.cloud_sync.description", + "editor.cloud_sync.auto_sync", + "editor.cloud_sync.auto_sync_desc", + "editor.ultra_card_pro.title", + "editor.ultra_card_pro.free_banner_title", + "editor.ultra_card_pro.free_banner_subtitle", + "editor.ultra_card_pro.pro_banner_title", + "editor.ultra_card_pro.pro_banner_subtitle", + "editor.ultra_card_pro.card_name", + "editor.ultra_card_pro.card_name_desc", + "editor.ultra_card_pro.card_name_placeholder", + "editor.ultra_card_pro.export_card", + "editor.ultra_card_pro.import_card", + "editor.ultra_card_pro.backup_card", + "editor.ultra_card_pro.view_backups", + "editor.ultra_card_pro.manual_backup_title", + "editor.ultra_card_pro.manual_backup_placeholder", + "editor.ultra_card_pro.manual_backup_desc", + "editor.ultra_card_pro.backup_created", + "editor.ultra_card_pro.export_success", + "editor.ultra_card_pro.import_success", + "editor.ultra_card_pro.upgrade_title", + "editor.ultra_card_pro.upgrade_subtitle", + "editor.ultra_card_pro.upgrade_button", + "editor.ultra_card_pro.features_title", + "editor.ultra_card_pro.features.export", + "editor.ultra_card_pro.features.import", + "editor.ultra_card_pro.features.backups", + "editor.ultra_card_pro.features.naming", + "editor.ultra_card_pro.features.support", + "editor.ultra_card_pro.auto_save", + "editor.ultra_card_pro.last_backup", + "editor.ultra_card_pro.saving", + "editor.ultra_card_pro.saved", + "editor.ultra_card_pro.pending", + "editor.fields.card_background_color", + "editor.fields.card_background_color_desc", + "editor.fields.border_radius", + "editor.fields.border_radius_desc", + "editor.fields.card_border_color", + "editor.fields.card_border_color_desc", + "editor.fields.card_border_width", + "editor.fields.card_border_width_desc", + "editor.fields.card_padding", + "editor.fields.card_padding_desc", + "editor.fields.card_margin", + "editor.fields.card_margin_desc", + "editor.fields.card_shadow_enabled", + "editor.fields.card_shadow_enabled_desc", + "editor.fields.card_shadow_color", + "editor.fields.card_shadow_color_desc", + "editor.fields.card_shadow_horizontal", + "editor.fields.card_shadow_horizontal_desc", + "editor.fields.card_shadow_vertical", + "editor.fields.card_shadow_vertical_desc", + "editor.fields.card_shadow_blur", + "editor.fields.card_shadow_blur_desc", + "editor.fields.card_shadow_spread", + "editor.fields.card_shadow_spread_desc", + "editor.fields.unit_px", + "editor.fields.reset_default", + "editor.fields.reset_default_value", + "editor.tooltips.enter_fullscreen", + "editor.tooltips.return_dashboard", + "editor.tooltips.dashboard", + "editor.common.left", + "editor.common.center", + "editor.common.right", + "editor.common.top", + "editor.common.bottom", + "editor.common.none", + "editor.common.state", + "editor.common.attribute", + "editor.common.attribute_name", + "editor.common.entity", + "editor.common.custom_text", + "editor.common.entity_state", + "editor.common.space_between", + "editor.common.space_around", + "editor.common.justify", + "editor.common.stretch", + "editor.common.baseline", + "editor.common.apart", + "editor.common.add", + "editor.common.cancel", + "editor.common.save", + "editor.common.delete", + "editor.common.edit", + "editor.common.reset", + "editor.common.error_configure_entity", + "editor.common.error_entity_not_found", + "editor.horizontal.layout.title", + "editor.horizontal.layout.desc", + "editor.horizontal.alignment.horizontal", + "editor.horizontal.alignment.horizontal_desc", + "editor.horizontal.alignment.vertical", + "editor.horizontal.alignment.vertical_desc", + "editor.horizontal.wrapping.title", + "editor.horizontal.wrapping.desc", + "editor.horizontal.gap.title", + "editor.horizontal.gap.between_items", + "editor.horizontal.gap.desc", + "editor.horizontal.empty.no_modules", + "editor.horizontal.empty.add_modules", + "editor.vertical.layout.title", + "editor.vertical.layout.desc", + "editor.vertical.alignment.vertical", + "editor.vertical.alignment.vertical_desc", + "editor.vertical.gap.title", + "editor.vertical.gap.between_items", + "editor.vertical.gap.desc", + "editor.vertical.empty.no_modules", + "editor.vertical.empty.add_modules", + "editor.tabs_module.orientation.title", + "editor.tabs_module.orientation.desc", + "editor.tabs_module.orientation.horizontal", + "editor.tabs_module.orientation.vertical", + "editor.tabs_module.style.title", + "editor.tabs_module.style.desc", + "editor.tabs_module.style.type", + "editor.tabs_module.style.switch", + "editor.tabs_module.style.classic", + "editor.tabs_module.style.pills", + "editor.tabs_module.style.underline", + "editor.tabs_module.style.minimal", + "editor.tabs_module.alignment.title", + "editor.tabs_module.alignment.desc", + "editor.tabs_module.alignment.position", + "editor.tabs_module.behavior.switch_on_hover", + "editor.tabs_module.behavior.switch_on_hover_desc", + "editor.tabs_module.sections.title", + "editor.tabs_module.sections.desc", + "editor.tabs_module.sections.add", + "editor.tabs_module.sections.title_placeholder", + "editor.tabs_module.sections.is_default", + "editor.tabs_module.sections.set_default", + "editor.tabs_module.sections.duplicate", + "editor.tabs_module.sections.delete", + "editor.tabs_module.typography.title", + "editor.tabs_module.typography.desc", + "editor.tabs_module.typography.font_size", + "editor.tabs_module.typography.font_weight", + "editor.tabs_module.typography.text_transform", + "editor.tabs_module.design.active_title", + "editor.tabs_module.design.active_desc", + "editor.tabs_module.design.active_text_color", + "editor.tabs_module.design.active_bg_color", + "editor.tabs_module.design.active_border_color", + "editor.tabs_module.design.inactive_title", + "editor.tabs_module.design.inactive_desc", + "editor.tabs_module.design.inactive_text_color", + "editor.tabs_module.design.inactive_bg_color", + "editor.tabs_module.design.inactive_border_color", + "editor.tabs_module.design.hover_title", + "editor.tabs_module.design.hover_desc", + "editor.tabs_module.design.hover_text_color", + "editor.tabs_module.design.hover_bg_color", + "editor.tabs_module.design.tab_styling_title", + "editor.tabs_module.design.tab_gap", + "editor.tabs_module.design.tab_gap_desc", + "editor.tabs_module.design.tab_padding", + "editor.tabs_module.design.tab_padding_desc", + "editor.tabs_module.design.tab_border_radius", + "editor.tabs_module.design.tab_border_radius_desc", + "editor.tabs_module.design.tab_border_width", + "editor.tabs_module.design.tab_border_width_desc", + "editor.tabs_module.design.content_title", + "editor.tabs_module.design.content_desc", + "editor.tabs_module.design.content_bg_color", + "editor.tabs_module.design.content_padding", + "editor.tabs_module.design.content_padding_desc", + "editor.tabs_module.design.content_border_radius", + "editor.tabs_module.design.content_border_radius_desc", + "editor.tabs_module.design.content_border_color", + "editor.tabs_module.design.content_border_width", + "editor.tabs_module.design.content_border_width_desc", + "editor.tabs_module.design.animation_title", + "editor.tabs_module.design.transition_duration", + "editor.tabs_module.design.transition_duration_desc", + "editor.tabs_module.design.general_title", + "editor.tabs_module.preview.no_sections", + "editor.tabs_module.preview.no_sections_desc", + "editor.tabs_module.preview.no_modules", + "editor.timer.basic.title", + "editor.timer.basic.desc", + "editor.timer.title", + "editor.timer.title_desc", + "editor.timer.icon", + "editor.timer.icon_desc", + "editor.timer.duration.title", + "editor.timer.duration.desc", + "editor.timer.duration_seconds", + "editor.timer.duration_seconds_desc", + "editor.timer.on_expire.title", + "editor.timer.on_expire.desc", + "editor.timer.style.title", + "editor.timer.style.desc", + "editor.timer.style.circle", + "editor.timer.style.progress_bar", + "editor.timer.style.digital", + "editor.timer.style.background_fill", + "editor.timer.advanced.title", + "editor.timer.timer_entity", + "editor.timer.timer_entity_desc", + "editor.timer.show_snooze_dismiss", + "editor.timer.show_snooze_dismiss_desc", + "editor.timer.snooze_seconds", + "editor.timer.snooze_seconds_desc", + "editor.timer.default_title", + "editor.timer.times_up", + "editor.timer.snooze", + "editor.timer.dismiss", + "editor.timer.start", + "editor.timer.pause", + "editor.timer.resume", + "editor.timer.cancel", + "editor.timer.paused", + "editor.toggle.display_settings", + "editor.toggle.title", + "editor.toggle.title_desc", + "editor.toggle.show_title", + "editor.toggle.show_title_desc", + "editor.toggle.visual_style", + "editor.toggle.visual_style_desc", + "editor.toggle.orientation", + "editor.toggle.orientation_desc", + "editor.toggle.alignment", + "editor.toggle.alignment_desc", + "editor.toggle.size", + "editor.toggle.size_desc", + "editor.toggle.spacing", + "editor.toggle.spacing_desc", + "editor.toggle.entity_tracking", + "editor.toggle.entity_tracking_desc", + "editor.toggle.tracking_entity", + "editor.toggle.tracking_entity_desc", + "editor.toggle.icon_settings", + "editor.toggle.show_icons", + "editor.toggle.show_icons_desc", + "editor.toggle.icon_size", + "editor.toggle.icon_size_desc", + "editor.toggle.icon_position", + "editor.toggle.icon_position_desc", + "editor.toggle.default_colors", + "editor.toggle.default_colors_desc", + "editor.toggle.default_background_color", + "editor.toggle.default_text_color", + "editor.toggle.default_active_background_color", + "editor.toggle.default_active_text_color", + "editor.toggle.toggle_points", + "editor.toggle.add_toggle_point", + "editor.toggle.point_label", + "editor.toggle.point_label_desc", + "editor.toggle.point_icon", + "editor.toggle.point_icon_desc", + "editor.toggle.point_auto_select", + "editor.toggle.point_auto_select_desc", + "editor.toggle.point_match_mode", + "editor.toggle.point_match_mode_desc", + "editor.toggle.match_mode_entity", + "editor.toggle.match_mode_template", + "editor.toggle.point_match_template", + "editor.toggle.point_match_template_desc", + "editor.toggle.unified_match_desc", + "editor.toggle.template_examples", + "editor.toggle.template_example_range", + "editor.toggle.template_example_brightness", + "editor.toggle.template_example_multi", + "editor.toggle.point_match_entity", + "editor.toggle.point_match_entity_desc", + "editor.toggle.point_match_state", + "editor.toggle.point_match_state_desc", + "editor.toggle.point_colors", + "editor.toggle.point_background_color", + "editor.toggle.point_text_color", + "editor.toggle.point_active_background_color", + "editor.toggle.point_active_text_color", + "editor.toggle.point_action", + "editor.toggle.point_action_desc", + "editor.toggle.template_cheatsheet", + "editor.popup.trigger.section_title", + "editor.popup.trigger.section_desc", + "editor.popup.trigger.type", + "editor.popup.trigger.type_desc", + "editor.popup.trigger.button", + "editor.popup.trigger.image", + "editor.popup.trigger.icon", + "editor.popup.trigger.page_load", + "editor.popup.trigger.logic", + "editor.popup.trigger.button_config", + "editor.popup.trigger.button_text", + "editor.popup.trigger.button_text_desc", + "editor.popup.trigger.button_icon", + "editor.popup.trigger.button_icon_desc", + "editor.popup.trigger.image_config", + "editor.popup.trigger.image_url", + "editor.popup.trigger.image_url_desc", + "editor.popup.trigger.icon_config", + "editor.popup.trigger.icon_desc", + "editor.popup.trigger.logic_config", + "editor.popup.trigger.button_full_width", + "editor.popup.trigger.button_full_width_desc", + "editor.popup.trigger.image_type", + "editor.popup.trigger.image_type_desc", + "editor.popup.trigger.image_full_width", + "editor.popup.trigger.image_full_width_desc", + "editor.popup.trigger.no_image", + "editor.popup.trigger.alignment_section", + "editor.popup.trigger.alignment_desc", + "editor.popup.trigger.alignment", + "editor.popup.trigger.alignment_help", + "editor.popup.title.section_title", + "editor.popup.title.section_desc", + "editor.popup.title.show", + "editor.popup.title.show_desc", + "editor.popup.title.configuration", + "editor.popup.title.mode", + "editor.popup.title.mode_desc", + "editor.popup.title.text", + "editor.popup.title.text_desc", + "editor.popup.title.entity", + "editor.popup.title.entity_desc", + "editor.popup.title.show_entity_name", + "editor.popup.title.show_entity_name_desc", + "editor.popup.layout.section_title", + "editor.popup.layout.section_desc", + "editor.popup.layout.type", + "editor.popup.layout.type_desc", + "editor.popup.layout.default", + "editor.popup.layout.full_screen", + "editor.popup.layout.left_panel", + "editor.popup.layout.right_panel", + "editor.popup.layout.top_panel", + "editor.popup.layout.bottom_panel", + "editor.popup.animation.type", + "editor.popup.animation.type_desc", + "editor.popup.animation.fade", + "editor.popup.animation.scale_up", + "editor.popup.animation.scale_down", + "editor.popup.animation.slide_top", + "editor.popup.animation.slide_left", + "editor.popup.animation.slide_right", + "editor.popup.animation.slide_bottom", + "editor.popup.popup_width", + "editor.popup.popup_width_desc", + "editor.popup.popup_padding", + "editor.popup.popup_padding_desc", + "editor.popup.popup_border_radius", + "editor.popup.popup_border_radius_desc", + "editor.popup.close_button.section_title", + "editor.popup.close_button.section_desc", + "editor.popup.close_button.position", + "editor.popup.close_button.position_desc", + "editor.popup.close_button.inside", + "editor.popup.close_button.none", + "editor.popup.auto_close_timer.section_title", + "editor.popup.auto_close_timer.section_desc", + "editor.popup.auto_close_timer.enabled", + "editor.popup.auto_close_timer.enabled_desc", + "editor.popup.auto_close_timer.configuration", + "editor.popup.auto_close_timer.seconds", + "editor.popup.auto_close_timer.seconds_desc", + "editor.popup.state.section_title", + "editor.popup.state.section_desc", + "editor.popup.state.default_open", + "editor.popup.state.default_open_desc", + "editor.popup.trigger_logic.section_title", + "editor.popup.trigger_logic.section_desc", + "editor.popup.trigger_logic.note_title", + "editor.popup.trigger_logic.note_message", + "editor.popup.trigger_logic.mode_title", + "editor.popup.trigger_logic.mode_desc", + "editor.popup.trigger_logic.mode_manual", + "editor.popup.trigger_logic.mode_always", + "editor.popup.trigger_logic.mode_every", + "editor.popup.trigger_logic.mode_any", + "editor.popup.trigger_logic.auto_close", + "editor.popup.trigger_logic.auto_close_desc", + "editor.popup.trigger_logic.conditions", + "editor.popup.trigger_logic.add_condition", + "editor.popup.trigger_logic.no_conditions", + "editor.popup.trigger_logic.no_conditions_title", + "editor.popup.trigger_logic.helper_tip", + "editor.popup.trigger_logic.always_note", + "editor.popup.trigger_logic.manual_note", + "editor.popup.trigger_logic.manual_mode_title", + "editor.popup.trigger_logic.custom_name", + "editor.popup.trigger_logic.custom_name_desc", + "editor.popup.trigger_logic.condition_type", + "editor.popup.trigger_logic.type_entity_state", + "editor.popup.trigger_logic.type_entity_attribute", + "editor.popup.trigger_logic.type_time", + "editor.popup.trigger_logic.type_template", + "editor.popup.trigger_logic.entity", + "editor.popup.trigger_logic.operator", + "editor.popup.trigger_logic.value", + "editor.popup.trigger_logic.attribute", + "editor.popup.trigger_logic.time_from", + "editor.popup.trigger_logic.time_to", + "editor.popup.trigger_logic.template", + "editor.popup.trigger_logic.template_desc", + "editor.popup.design.trigger_button", + "editor.popup.design.trigger_button_desc", + "editor.popup.design.title", + "editor.popup.design.title_desc", + "editor.popup.design.title_bg", + "editor.popup.design.title_text", + "editor.popup.design.content", + "editor.popup.design.content_desc", + "editor.popup.design.popup_bg", + "editor.popup.design.popup_text", + "editor.popup.design.overlay", + "editor.popup.design.overlay_desc", + "editor.popup.design.overlay_bg", + "editor.popup.design.close_button", + "editor.popup.design.close_button_desc", + "editor.popup.design.close_button_color", + "editor.popup.design.close_button_size", + "editor.popup.design.close_button_size_desc", + "editor.popup.design.close_button_icon", + "editor.popup.design.close_button_icon_desc", + "editor.popup.design.close_button_offset_x", + "editor.popup.design.close_button_offset_x_desc", + "editor.popup.design.close_button_offset_y", + "editor.popup.design.close_button_offset_y_desc", + "editor.popup.design.general_title", + "editor.popup.preview.no_modules", + "editor.popup.edit_page_notice.title", + "editor.popup.edit_page_notice.message", + "editor.popup.edit_overlay.message", + "editor.layout.live_preview", + "editor.layout.toggle_preview", + "editor.layout.pin_preview", + "editor.layout.unpin_preview", + "editor.layout.drag_to_move_module", + "editor.layout.edit_module", + "editor.layout.duplicate_module", + "editor.layout.delete_module", + "editor.layout.drag_to_move_layout", + "editor.layout.horizontal_layout", + "editor.layout.vertical_layout", + "editor.layout.accordion_module", + "editor.layout.popup_module", + "editor.layout.add_module_to_layout", + "editor.layout.layout_settings", + "editor.layout.duplicate_layout", + "editor.layout.delete_layout", + "editor.layout.click_to_add_module", + "editor.layout.drop_modules_here", + "editor.layout.drag_to_reorder", + "editor.layout.edit_child_module", + "editor.layout.duplicate_child_module", + "editor.layout.delete_child_module", + "editor.layout.module_settings_title", + "editor.layout.child_module_settings_title", + "editor.layout.general_tab", + "editor.layout.actions_tab", + "editor.layout.other_tab", + "editor.layout.logic_tab", + "editor.layout.design_tab", + "editor.layout.drag_to_resize", + "editor.layout.hidden_by_logic", + "editor.layout.add_row", + "editor.layout.add_row_tooltip", + "editor.layout.collapse_all_rows_tooltip", + "editor.layout.expand_all_rows_tooltip", + "editor.layout.entity_replace_tooltip", + "editor.layout.entity_replace_pick_two", + "editor.layout.entity_replace_none", + "editor.layout.entity_replace_invalid", + "editor.layout.entity_replace_done", + "editor.layout.undo", + "editor.layout.undo_tooltip", + "editor.layout.redo", + "editor.layout.redo_tooltip", + "editor.layout.keyboard_shortcuts", + "editor.layout.keyboard_exit_fullscreen", + "editor.layout.getting_started", + "editor.layout.getting_started_preset", + "editor.layout.getting_started_module", + "editor.layout.getting_started_hub", + "editor.layout.getting_started_dismiss", + "editor.layout.health_tooltip", + "editor.layout.health_badge", + "editor.layout.move_up", + "editor.layout.move_down", + "editor.layout.moved_up", + "editor.layout.moved_down", + "editor.layout.export_card", + "editor.layout.export_card_tooltip", + "editor.layout.import_card", + "editor.layout.import_card_tooltip", + "editor.layout.card_exporting", + "editor.layout.card_exported", + "editor.layout.card_export_failed", + "editor.layout.card_imported", + "editor.layout.card_import_failed", + "editor.layout.no_card_to_import", + "editor.layout.confirm_import_card", + "editor.layout.row_settings", + "editor.layout.column_settings", + "editor.layout.row_background_color", + "editor.layout.column_gap", + "editor.layout.vertical_alignment", + "editor.layout.horizontal_alignment", + "editor.layout.column_preview", + "editor.layout.card_preview", + "editor.layout.resize_preview", + "editor.layout.modules_count", + "editor.layout.alignment_top", + "editor.layout.alignment_center", + "editor.layout.alignment_bottom", + "editor.layout.alignment_stretch", + "editor.layout.alignment_left", + "editor.layout.alignment_right", + "editor.layout.copy_module", + "editor.layout.paste_module", + "editor.layout.more_actions", + "editor.layout.module_copied", + "editor.layout.module_pasted", + "editor.layout.module_copy_failed", + "editor.layout.no_module_to_paste", + "editor.layout.paste_failed", + "editor.layout.add_module", + "editor.layout.add_module_auto_column", + "editor.layout.copy_column", + "editor.layout.copy_column_first", + "editor.layout.paste_column", + "editor.layout.column_copied", + "editor.layout.column_pasted", + "editor.layout.column_copy_failed", + "editor.layout.no_column_to_paste", + "editor.layout.column_paste_failed", + "editor.layout.max_columns_reached", + "editor.layout.unified_visibility.section_title", + "editor.layout.unified_visibility.section_desc", + "editor.layout.unified_visibility.toggle", + "editor.layout.unified_visibility.cheatsheet_title", + "editor.layout.unified_visibility.placeholder", + "editor.entity_mapper.title", + "editor.entity_mapper.detected_entities", + "editor.entity_mapper.original_entity", + "editor.entity_mapper.map_to", + "editor.entity_mapper.keep_original", + "editor.entity_mapper.auto_map", + "editor.entity_mapper.keep_unmapped", + "editor.entity_mapper.clear_all", + "editor.entity_mapper.apply", + "editor.entity_mapper.cancel", + "editor.entity_mapper.summary", + "editor.entity_mapper.suggestions", + "editor.entity_mapper.no_entities", + "editor.layout_logic.display_title", + "editor.layout_logic.display_desc", + "editor.layout_logic.always", + "editor.layout_logic.every", + "editor.layout_logic.any", + "editor.layout_logic.conditions", + "editor.layout_logic.add_condition", + "editor.layout_logic.no_conditions", + "editor.layout_logic.condition_types.entity_state", + "editor.layout_logic.condition_types.entity_attribute", + "editor.layout_logic.condition_types.time", + "editor.layout_logic.condition_types.template", + "editor.layout_logic.condition_fields.entity", + "editor.layout_logic.condition_fields.operator", + "editor.layout_logic.condition_fields.value", + "editor.layout_logic.condition_fields.attribute", + "editor.layout_logic.condition_fields.time_from", + "editor.layout_logic.condition_fields.time_to", + "editor.layout_logic.condition_fields.template", + "editor.layout_logic.condition_header", + "editor.layout_logic.custom_name", + "editor.layout_logic.custom_name_desc", + "editor.layout_logic.condition_type", + "editor.logic.hide_on_devices", + "editor.logic.hide_on_devices_desc", + "editor.logic.user_visibility.title", + "editor.logic.user_visibility.desc", + "editor.logic.user_visibility.mode", + "editor.logic.user_visibility.everyone", + "editor.logic.user_visibility.show_only", + "editor.logic.user_visibility.hide_for", + "editor.logic.user_visibility.you", + "editor.logic.user_visibility.no_users", + "editor.logic.user_visibility.manual_id", + "editor.logic.user_visibility.manual_id_desc", + "editor.logic.user_visibility.add", + "editor.logic.user_visibility.self_hidden_warning", + "editor.hover_effects.title", + "editor.hover_effects.description", + "editor.hover_effects.effect", + "editor.hover_effects.effect_desc", + "editor.hover_effects.effects.none", + "editor.hover_effects.effects.highlight", + "editor.hover_effects.effects.outline", + "editor.hover_effects.effects.grow", + "editor.hover_effects.effects.shrink", + "editor.hover_effects.effects.pulse", + "editor.hover_effects.effects.bounce", + "editor.hover_effects.effects.float", + "editor.hover_effects.effects.glow", + "editor.hover_effects.effects.shadow", + "editor.hover_effects.effects.rotate", + "editor.hover_effects.effects.skew", + "editor.hover_effects.effects.wobble", + "editor.hover_effects.effects.buzz", + "editor.hover_effects.effects.fade", + "editor.about.developed_by", + "editor.about.desc1", + "editor.about.desc2", + "editor.about.desc3", + "editor.about.github_repo", + "editor.about.join_discord", + "editor.about.support_title", + "editor.about.support_desc", + "editor.about.leave_tip", + "editor.about.version", + "editor.actions.title", + "editor.actions.description", + "editor.actions.tap_action", + "editor.actions.tap_action_desc", + "editor.actions.hold_action", + "editor.actions.hold_action_desc", + "editor.actions.double_tap_action", + "editor.actions.double_tap_action_desc", + "editor.actions.tap_behavior", + "editor.actions.tap_behavior_desc", + "editor.actions.hold_behavior", + "editor.actions.hold_behavior_desc", + "editor.actions.haptic_feedback", + "editor.actions.haptic_feedback_desc", + "editor.actions.double_tap_behavior", + "editor.actions.double_tap_behavior_desc", + "editor.actions.more_info_config", + "editor.actions.toggle_config", + "editor.actions.entity", + "editor.actions.entity_more_info_desc", + "editor.actions.entity_toggle_desc", + "editor.icon.entity_config.title", + "editor.icon.entity_config.desc", + "editor.icon.entity", + "editor.icon.entity_desc", + "editor.icon.inactive_state", + "editor.icon.inactive_state_desc", + "editor.icon.active_state", + "editor.icon.active_state_desc", + "editor.icon.icon_section.title", + "editor.icon.icon_section.show_icon", + "editor.icon.inactive_icon", + "editor.icon.inactive_icon_desc", + "editor.icon.inactive_icon_config", + "editor.icon.inactive_icon_config_desc", + "editor.icon.active_icon", + "editor.icon.active_icon_desc", + "editor.icon.icon_color_inactive", + "editor.icon.icon_color_active", + "editor.icon.background_shape_inactive", + "editor.icon.background_shape_active", + "editor.icon.background_color_inactive", + "editor.icon.background_color_active", + "editor.icon.icon_size_inactive", + "editor.icon.icon_size_active", + "editor.icon.inactive_icon_color", + "editor.icon.active_icon_color", + "editor.icon.inactive_icon_background", + "editor.icon.active_icon_background", + "editor.icon.inactive_icon_background_color", + "editor.icon.active_icon_background_color", + "editor.icon.name_section.title", + "editor.icon.name_section.show_name", + "editor.icon.inactive_name", + "editor.icon.inactive_name_desc", + "editor.icon.inactive_name_config", + "editor.icon.inactive_name_config_desc", + "editor.icon.active_name", + "editor.icon.active_name_desc", + "editor.icon.custom_inactive_name", + "editor.icon.custom_inactive_name_desc", + "editor.icon.custom_active_name", + "editor.icon.custom_active_name_desc", + "editor.icon.name_color_inactive", + "editor.icon.name_color_active", + "editor.icon.name_size_inactive", + "editor.icon.name_size_active", + "editor.icon.inactive_name_color", + "editor.icon.active_name_color", + "editor.icon.state_section.title", + "editor.icon.state_section.show_state", + "editor.icon.inactive_state_color", + "editor.icon.active_state_color", + "editor.icon.inactive_state_text", + "editor.icon.active_state_text", + "editor.icon.inactive_state_config", + "editor.icon.inactive_state_config_desc", + "editor.icon.custom_inactive_state", + "editor.icon.custom_inactive_state_desc", + "editor.icon.custom_active_state", + "editor.icon.custom_active_state_desc", + "editor.icon.state_color_inactive", + "editor.icon.state_color_active", + "editor.icon.state_size_inactive", + "editor.icon.state_size_active", + "editor.icon.background_section.title", + "editor.icon.background_section.desc", + "editor.icon.template_section.title", + "editor.icon.template_section.desc", + "editor.icon.template_mode", + "editor.icon.template", + "editor.icon.use_state_color_inactive", + "editor.icon.use_state_color_inactive_desc", + "editor.icon.hover_effect", + "editor.icon.hover_effect_desc", + "editor.icon.ignore_entity_state", + "editor.icon.ignore_entity_state_desc", + "editor.icon.animation_section.title", + "editor.icon.animation_section.desc", + "editor.icon.active_animation", + "editor.icon.active_animation_desc", + "editor.icon.inactive_animation", + "editor.icon.inactive_animation_desc", + "editor.icon.animation_none", + "editor.icon.animation_pulse", + "editor.icon.animation_spin", + "editor.icon.animation_bounce", + "editor.icon.animation_flash", + "editor.icon.animation_shake", + "editor.icon.animation_vibrate", + "editor.icon.animation_rotate_left", + "editor.icon.animation_rotate_right", + "editor.icon.animation_fade", + "editor.icon.animation_scale", + "editor.icon.animation_tada", + "editor.icon.error_no_icons", + "editor.icon.error_no_icons_desc", + "editor.icon.error_icons_need_entities", + "editor.text.content_section.title", + "editor.text.content_section.desc", + "editor.text.text_content", + "editor.text.text_content_desc", + "editor.text.icon_section.title", + "editor.text.icon_section.desc", + "editor.text.icon", + "editor.text.icon_desc", + "editor.text.icon_position", + "editor.text.icon_position_desc", + "editor.text.before_text", + "editor.text.after_text", + "editor.text.template_mode", + "editor.text.template_mode_desc", + "editor.text.value_template", + "editor.text.value_template_desc", + "editor.text.examples_title", + "editor.text.example_basic", + "editor.text.example_percent", + "editor.text.color_section.title", + "editor.text.color_section.desc", + "editor.text.text_color", + "editor.text.text_color_desc", + "editor.text.icon_color", + "editor.text.icon_color_desc", + "editor.text.hidden_no_link", + "editor.text.rich_text_content_section.title", + "editor.text.rich_text_content_section.desc", + "editor.text.error_no_content", + "editor.text.error_no_content_desc", + "editor.text.error_no_template", + "editor.text.error_no_template_desc", + "editor.markdown.content.title", + "editor.markdown.content.label", + "editor.markdown.content.desc", + "editor.markdown.features.title", + "editor.markdown.enable_html", + "editor.markdown.enable_html_desc", + "editor.markdown.enable_tables", + "editor.markdown.enable_tables_desc", + "editor.markdown.code_highlighting", + "editor.markdown.code_highlighting_desc", + "editor.markdown.error_no_content", + "editor.markdown.error_no_content_desc", + "editor.bar.bar_settings.title", + "editor.bar.bar_settings.desc", + "editor.bar.perc_type.entity", + "editor.bar.perc_type.attribute", + "editor.bar.perc_type.difference", + "editor.bar.perc_type.template", + "editor.bar.perc_type.time_progress", + "editor.bar.perc_type.range", + "editor.bar.percentage_type.title", + "editor.bar.time_progress_config.title", + "editor.bar.time_progress_config.desc", + "editor.bar.time_progress_config.start_entity", + "editor.bar.time_progress_config.end_entity", + "editor.bar.time_progress_config.direction", + "editor.bar.time_progress_config.direction_desc", + "editor.bar.time_progress_config.update_interval", + "editor.bar.time_progress_config.update_interval_desc", + "editor.bar.time_progress.forward", + "editor.bar.time_progress.backward", + "editor.bar.range_config.title", + "editor.bar.range_config.desc", + "editor.bar.range_config.start_entity", + "editor.bar.range_config.start_attribute", + "editor.bar.range_config.start_attribute_desc", + "editor.bar.range_config.end_entity", + "editor.bar.range_config.end_attribute", + "editor.bar.range_config.end_attribute_desc", + "editor.bar.range_config.current_entity", + "editor.bar.range_config.current_color", + "editor.bar.range.title", + "editor.bar.range.min", + "editor.bar.range.max", + "editor.bar.range.auto", + "editor.bar.range.auto_total", + "editor.bar.attribute_section.title", + "editor.bar.attribute_section.desc", + "editor.bar.attribute_entity", + "editor.bar.attribute_entity_desc", + "editor.bar.attribute_name", + "editor.bar.attribute_name_desc", + "editor.bar.diff_section.title", + "editor.bar.diff_section.desc", + "editor.bar.current_entity", + "editor.bar.current_entity_desc", + "editor.bar.total_entity", + "editor.bar.total_entity_desc", + "editor.bar.template_section.title", + "editor.bar.template_section.desc", + "editor.bar.percentage_template", + "editor.bar.percentage_template_desc", + "editor.bar.attr_config.title", + "editor.bar.attr_config.desc", + "editor.bar.attr_config.attribute_entity", + "editor.bar.attr_config.attribute_entity_desc", + "editor.bar.attr_config.attribute_name", + "editor.bar.attr_config.attribute_name_desc", + "editor.bar.diff_config.title", + "editor.bar.diff_config.desc", + "editor.bar.diff_config.current_entity", + "editor.bar.diff_config.current_entity_desc", + "editor.bar.diff_config.total_entity", + "editor.bar.diff_config.total_entity_desc", + "editor.bar.template_config.title", + "editor.bar.template_config.desc", + "editor.bar.template_config.percentage_template", + "editor.bar.template_config.percentage_template_desc", + "editor.bar.entity.title", + "editor.bar.entity.desc_present", + "editor.bar.entity.desc_empty", + "editor.bar.entity.no_entity_warning", + "editor.bar.limit_entity.title", + "editor.bar.limit_entity.desc", + "editor.bar.appearance.title", + "editor.bar.appearance.direction", + "editor.bar.appearance.direction_desc", + "editor.bar.appearance.left_to_right", + "editor.bar.appearance.right_to_left", + "editor.bar.appearance.height", + "editor.bar.appearance.height_desc", + "editor.bar.appearance.border_radius", + "editor.bar.appearance.border_radius_desc", + "editor.bar.appearance.style", + "editor.bar.appearance.style_desc", + "editor.bar.appearance.style_flat", + "editor.bar.appearance.style_glossy", + "editor.bar.appearance.style_embossed", + "editor.bar.appearance.style_inset", + "editor.bar.appearance.style_gradient", + "editor.bar.appearance.style_neon", + "editor.bar.appearance.style_outline", + "editor.bar.appearance.style_glass", + "editor.bar.appearance.style_metallic", + "editor.bar.appearance.style_neumorphic", + "editor.bar.appearance.style_dashed", + "editor.bar.appearance.style_dots", + "editor.bar.appearance.width", + "editor.bar.appearance.width_desc", + "editor.bar.appearance.alignment", + "editor.bar.appearance.alignment_desc", + "editor.bar.labels.alignment", + "editor.bar.labels.alignment_desc", + "editor.bar.percentage.title", + "editor.bar.percentage.desc", + "editor.bar.percentage.text_size", + "editor.bar.percentage.text_size_desc", + "editor.bar.percentage.text_alignment", + "editor.bar.text_display.title", + "editor.bar.text_display.desc", + "editor.bar.text_display.show_value", + "editor.bar.text_display.show_value_desc", + "editor.bar.text_display.text_size", + "editor.bar.text_display.text_size_desc", + "editor.bar.text_display.text_alignment", + "editor.bar.left.title", + "editor.bar.left.desc", + "editor.bar.left.title_size", + "editor.bar.left.value_size", + "editor.bar.left.template_mode", + "editor.bar.left.template_desc", + "editor.bar.left.value_template", + "editor.bar.left.value_template_desc", + "editor.bar.left.enable_toggle", + "editor.bar.right.title", + "editor.bar.right.desc", + "editor.bar.right.title_size", + "editor.bar.right.value_size", + "editor.bar.right.template_mode", + "editor.bar.right.template_desc", + "editor.bar.right.value_template", + "editor.bar.right.value_template_desc", + "editor.bar.right.enable_toggle", + "editor.bar.colors.title", + "editor.bar.colors.bar_color", + "editor.bar.colors.background_color", + "editor.bar.colors.border_color", + "editor.bar.colors.limit_indicator", + "editor.bar.colors.percentage_text", + "editor.bar.colors.text_color", + "editor.bar.colors.text_color_desc", + "editor.bar.colors.dot_color", + "editor.bar.colors.left_side", + "editor.bar.colors.right_side", + "editor.bar.colors.title_color", + "editor.bar.colors.value_color", + "editor.bar.minimal.icon_config", + "editor.bar.minimal.icon_enabled", + "editor.bar.minimal.icon_enabled_desc", + "editor.bar.minimal.icon", + "editor.bar.minimal.icon_desc", + "editor.bar.minimal.icon_mode", + "editor.bar.minimal.icon_mode_desc", + "editor.bar.minimal.mode_dot_only", + "editor.bar.minimal.mode_icon_only", + "editor.bar.minimal.mode_icon_in_dot", + "editor.bar.minimal.icon_size_auto", + "editor.bar.minimal.icon_size_auto_desc", + "editor.bar.minimal.icon_size", + "editor.bar.minimal.icon_size_desc", + "editor.bar.minimal.use_dot_color", + "editor.bar.minimal.use_dot_color_desc", + "editor.bar.minimal.icon_color", + "editor.bar.minimal.icon_color_desc", + "editor.bar.minimal.enable_toggle", + "editor.bar.gradient.title", + "editor.bar.gradient.desc", + "editor.bar.gradient.full", + "editor.bar.gradient.cropped", + "editor.bar.gradient.value_based", + "editor.bar.animation.title", + "editor.bar.animation.desc", + "editor.bar.animation.trigger.title", + "editor.bar.animation.trigger.desc", + "editor.bar.animation.trigger.entity_desc", + "editor.bar.animation.trigger.type", + "editor.bar.animation.trigger.type_desc", + "editor.bar.animation.trigger.attribute_name_desc", + "editor.bar.animation.trigger.match_value", + "editor.bar.animation.trigger.match_value_desc", + "editor.bar.animation.type", + "editor.bar.animation.type_desc", + "editor.bar.animation.types.charging", + "editor.bar.animation.types.pulse", + "editor.bar.animation.types.blinking", + "editor.bar.animation.types.bouncing", + "editor.bar.animation.types.glow", + "editor.bar.animation.types.rainbow", + "editor.bar.animation.types.bubbles", + "editor.bar.animation.types.fill", + "editor.bar.animation.types.ripple", + "editor.bar.animation.types.traffic", + "editor.bar.animation.types.heartbeat", + "editor.bar.animation.types.flicker", + "editor.bar.animation.types.shimmer", + "editor.bar.animation.types.vibrate", + "editor.bar.animation.override.title", + "editor.bar.animation.override.desc", + "editor.bar.animation.override.entity_desc", + "editor.bar.animation.override.type_desc", + "editor.bar.animation.override.attribute_name_desc", + "editor.bar.animation.override.match_value", + "editor.bar.animation.override.match_value_desc", + "editor.bar.animation.override.type", + "editor.bar.error_no_entity", + "editor.bar.error_no_entity_desc", + "editor.bar.error_no_range", + "editor.bar.error_no_range_desc", + "editor.bar.unified_template.title", + "editor.bar.unified_template.desc", + "editor.bar.unified_template.toggle", + "editor.bar.unified_template.cheatsheet", + "editor.image.settings", + "editor.image.source_type", + "editor.image.source_type_desc", + "editor.image.source.default", + "editor.image.source.url", + "editor.image.source.upload", + "editor.image.source.entity", + "editor.image.source.attribute", + "editor.image.url_section.title", + "editor.image.image_url", + "editor.image.image_url_desc", + "editor.image.upload_section.title", + "editor.image.upload", + "editor.image.upload_desc", + "editor.image.upload_choose", + "editor.image.upload_clear", + "editor.image.attribute_entity_desc", + "editor.image.entity_section.title", + "editor.image.entity", + "editor.image.entity_desc", + "editor.image.attribute_section.title", + "editor.image.entity_attr_desc", + "editor.image.attribute_name", + "editor.image.attribute_name_desc", + "editor.image.width", + "editor.image.width_desc", + "editor.image.height", + "editor.image.height_desc", + "editor.image.crop_fit", + "editor.image.crop_fit_desc", + "editor.image.fit.cover", + "editor.image.fit.contain", + "editor.image.fit.fill", + "editor.image.fit.scale_down", + "editor.image.fit.none", + "editor.image.border_radius", + "editor.image.border_radius_desc", + "editor.image.tap_actions", + "editor.image.filters", + "editor.image.filter.blur", + "editor.image.filter.blur_desc", + "editor.image.filter.brightness", + "editor.image.filter.brightness_desc", + "editor.image.filter.contrast", + "editor.image.filter.contrast_desc", + "editor.image.filter.saturation", + "editor.image.filter.saturation_desc", + "editor.image.hover.title", + "editor.image.hover.effect_type", + "editor.image.hover.effect_type_desc", + "editor.image.hover.scale", + "editor.image.hover.rotate", + "editor.image.hover.fade", + "editor.image.hover.blur", + "editor.image.hover.brightness", + "editor.image.hover.glow", + "editor.image.hover.slide", + "editor.image.hover.scale_amount", + "editor.image.hover.scale_amount_desc", + "editor.image.hover.rotate_amount", + "editor.image.hover.rotate_amount_desc", + "editor.image.hover.opacity", + "editor.image.hover.opacity_desc", + "editor.image.hover.blur_amount", + "editor.image.hover.blur_amount_desc", + "editor.image.hover.brightness_amount", + "editor.image.hover.brightness_amount_desc", + "editor.image.hover.glow_intensity", + "editor.image.hover.glow_intensity_desc", + "editor.image.hover.glow_light", + "editor.image.hover.glow_medium", + "editor.image.hover.glow_heavy", + "editor.image.hover.glow_custom", + "editor.image.hover.translate_x", + "editor.image.hover.translate_x_desc", + "editor.image.hover.translate_y", + "editor.image.hover.translate_y_desc", + "editor.image.alt", + "editor.image.no_source", + "editor.image.error_no_source", + "editor.image.error_url_desc", + "editor.image.error_upload_desc", + "editor.image.error_entity_desc", + "editor.image.error_attribute_desc", + "editor.graphs.chart_type.title", + "editor.graphs.chart_type.type", + "editor.graphs.chart_type.desc", + "editor.graphs.types.line", + "editor.graphs.types.bar", + "editor.graphs.types.pie", + "editor.graphs.types.donut", + "editor.graphs.data_source.title", + "editor.graphs.data_source.mode", + "editor.graphs.data_source.desc", + "editor.graphs.mode.history", + "editor.graphs.mode.forecast", + "editor.graphs.forecast_entity", + "editor.graphs.forecast_entity_desc", + "editor.graphs.forecast_type", + "editor.graphs.forecast_type_desc", + "editor.graphs.type.hourly", + "editor.graphs.type.daily", + "editor.graphs.forecast.temp", + "editor.graphs.forecast.precip", + "editor.graphs.forecast.wind", + "editor.graphs.forecast.humidity", + "editor.graphs.forecast.pressure", + "editor.graphs.forecast.clouds", + "editor.graphs.data_sources.title", + "editor.graphs.data_sources.no_entities", + "editor.graphs.data_sources.add_first_entity", + "editor.graphs.data_sources.add_entity", + "editor.graphs.forecast_attributes.title", + "editor.graphs.forecast_attributes.desc", + "editor.graphs.forecast_info.title", + "editor.graphs.forecast_info.desc", + "editor.graphs.entity.label", + "editor.graphs.entity.desc", + "editor.graphs.entity.display_name_placeholder", + "editor.graphs.entity.use_as_card_info", + "editor.graphs.entity.attribute", + "editor.graphs.entity.attribute_desc", + "editor.graphs.entity.state_default", + "editor.graphs.entity.forecast_attr", + "editor.graphs.entity.forecast_attr_desc", + "editor.graphs.entity.expand_options", + "editor.graphs.line.show_points", + "editor.graphs.line.fill_area", + "editor.graphs.line.line_width", + "editor.graphs.line.line_style", + "editor.graphs.line_styles.solid", + "editor.graphs.line_styles.dashed", + "editor.graphs.line_styles.dotted", + "editor.graphs.display.title", + "editor.graphs.display.show_title", + "editor.graphs.display.show_value", + "editor.graphs.display.chart_title", + "editor.graphs.display.chart_title_placeholder", + "editor.graphs.display.time_period", + "editor.graphs.display.time_period_desc", + "editor.graphs.display.normalize_values", + "editor.graphs.display.normalize_desc", + "editor.graphs.display.chart_height", + "editor.graphs.display.chart_width", + "editor.graphs.display.chart_width_desc", + "editor.graphs.display.chart_alignment", + "editor.graphs.display.chart_alignment_desc", + "editor.graphs.display.info_position", + "editor.graphs.display.info_position_desc", + "editor.graphs.display.legend_position", + "editor.graphs.display.legend_position_desc", + "editor.graphs.display.background_color", + "editor.graphs.display.chart_options", + "editor.graphs.display.show_legend", + "editor.graphs.display.show_grid", + "editor.graphs.display.show_grid_values", + "editor.graphs.display.smooth_lines", + "editor.graphs.display.show_tooltips", + "editor.graphs.display.add_slice_gap", + "editor.graphs.display.title_font_size", + "editor.graphs.display.value_font_size", + "editor.graphs.display.bar_display_limit", + "editor.graphs.display.bar_display_limit_desc", + "editor.graphs.display.show_time_intervals", + "editor.graphs.display.chart_layout", + "editor.graphs.agg.mean", + "editor.graphs.agg.sum", + "editor.graphs.agg.min", + "editor.graphs.agg.max", + "editor.graphs.agg.median", + "editor.graphs.agg.first", + "editor.graphs.agg.last", + "editor.graphs.agg.count", + "editor.graphs.agg.delta", + "editor.graphs.position.top", + "editor.graphs.position.bottom", + "editor.graphs.position.left", + "editor.graphs.position.right", + "editor.graphs.position.hidden", + "editor.graphs.position.top_left", + "editor.graphs.position.top_right", + "editor.graphs.position.bottom_left", + "editor.graphs.position.bottom_right", + "editor.graphs.position.middle", + "editor.graphs.position.center", + "editor.graphs.pie.show_title", + "editor.graphs.pie.show_value", + "editor.graphs.period.today", + "editor.graphs.period.1h", + "editor.graphs.period.3h", + "editor.graphs.period.6h", + "editor.graphs.period.12h", + "editor.graphs.period.24h", + "editor.graphs.period.2d", + "editor.graphs.period.7d", + "editor.graphs.period.30d", + "editor.graphs.period.90d", + "editor.graphs.period.365d", + "editor.graphs.reset_345", + "editor.graphs.reset_100", + "editor.graphs.entity_desc", + "editor.graphs.display_name_optional", + "editor.graphs.use_as_card_info", + "editor.graphs.attribute", + "editor.graphs.attribute_desc", + "editor.graphs.attribute_state_default", + "editor.graphs.show_points", + "editor.graphs.fill_area", + "editor.graphs.line_style", + "editor.graphs.line_solid", + "editor.graphs.line_dashed", + "editor.graphs.line_dotted", + "editor.graphs.pie_show_title", + "editor.graphs.pie_show_value", + "editor.graphs.expand_options", + "editor.graphs.no_entities", + "editor.graphs.add_first_entity", + "editor.graphs.add_entity", + "editor.graphs.display_options.title", + "editor.graphs.show_title", + "editor.graphs.show_value", + "editor.graphs.chart_title", + "editor.graphs.chart_title_placeholder", + "editor.graphs.time_period", + "editor.graphs.time_period_desc", + "editor.graphs.normalize_values", + "editor.graphs.normalize_desc", + "editor.graphs.chart_height", + "editor.graphs.chart_width", + "editor.graphs.error_no_chart_type", + "editor.graphs.error_no_chart_type_desc", + "editor.graphs.error_no_entities", + "editor.graphs.unified_template.title", + "editor.graphs.unified_template.desc", + "editor.graphs.unified_template.toggle", + "editor.graphs.unified_template.cheatsheet", + "editor.dropdown.basic.title", + "editor.dropdown.basic.desc", + "editor.dropdown.unified_template_section.title", + "editor.dropdown.unified_template_section.enable", + "editor.dropdown.unified_template_section.desc", + "editor.dropdown.label.title", + "editor.dropdown.label.desc", + "editor.dropdown.placeholder.title", + "editor.dropdown.placeholder.desc", + "editor.dropdown.keep_selection_state.title", + "editor.dropdown.keep_selection_state.desc", + "editor.dropdown.label_settings.title", + "editor.dropdown.label_settings.disabled", + "editor.dropdown.label_position.title", + "editor.dropdown.label_position.desc", + "editor.dropdown.label_positions.top", + "editor.dropdown.label_positions.left", + "editor.dropdown.label_positions.bottom", + "editor.dropdown.label_positions.right", + "editor.dropdown.label_icon.title", + "editor.dropdown.label_icon.disabled", + "editor.dropdown.icon.title", + "editor.dropdown.icon.desc", + "editor.dropdown.options.title", + "editor.dropdown.option_number", + "editor.dropdown.duplicate_option", + "editor.dropdown.remove_option", + "editor.dropdown.add_option", + "editor.dropdown.drag_option", + "editor.dropdown.default_badge", + "editor.dropdown.option.label", + "editor.dropdown.option.label_desc", + "editor.dropdown.option.icon", + "editor.dropdown.option.icon_desc", + "editor.dropdown.option.icon_color", + "editor.dropdown.option.use_state_color", + "editor.dropdown.option.use_state_color_desc", + "editor.dropdown.option.state_color_enabled", + "editor.dropdown.option.action", + "editor.dropdown.option.action_desc", + "editor.dropdown.option.more_info_config", + "editor.dropdown.option.more_info_entity", + "editor.dropdown.option.more_info_entity_desc", + "editor.dropdown.option.toggle_config", + "editor.dropdown.option.toggle_entity", + "editor.dropdown.option.toggle_entity_desc", + "editor.dropdown.error_no_entity", + "editor.dropdown.error_no_entity_desc", + "editor.dropdown.error_no_options", + "editor.dropdown.error_no_options_desc", + "editor.info.entity_section.title", + "editor.info.entity", + "editor.info.entity_desc", + "editor.info.icon_section.title", + "editor.info.show_icon", + "editor.info.show_icon_desc", + "editor.info.icon", + "editor.info.icon_desc", + "editor.info.icon_color", + "editor.info.name_section.title", + "editor.info.show_name", + "editor.info.show_name_desc", + "editor.info.custom_name", + "editor.info.custom_name_desc", + "editor.info.name_color", + "editor.info.state_section.title", + "editor.info.show_state", + "editor.info.show_state_desc", + "editor.info.show_units", + "editor.info.show_units_desc", + "editor.info.state_color", + "editor.info.template.title", + "editor.info.template.desc", + "editor.info.template.mode", + "editor.info.template.mode_desc", + "editor.info.template.value", + "editor.info.template.value_desc", + "editor.info.size_section.title", + "editor.info.icon_size", + "editor.info.icon_size_desc", + "editor.info.name_size", + "editor.info.name_size_desc", + "editor.info.value_size", + "editor.info.value_size_desc", + "editor.info.icon_gap", + "editor.info.icon_gap_desc", + "editor.info.layout_section.title", + "editor.info.icon_position", + "editor.info.overall_alignment", + "editor.info.icon_alignment", + "editor.info.content_alignment", + "editor.info.examples_title", + "editor.info.example_basic", + "editor.info.example_units", + "editor.info.example_round", + "editor.info.error_no_entities", + "editor.info.error_no_entities_desc", + "editor.info.error_entities_need_config", + "editor.button.basic.title", + "editor.button.basic.desc", + "editor.button.text.title", + "editor.button.text.desc", + "editor.button.style.title", + "editor.button.style.desc", + "editor.button.alignment.title", + "editor.button.alignment.desc", + "editor.button.styles.flat", + "editor.button.styles.glossy", + "editor.button.styles.embossed", + "editor.button.styles.inset", + "editor.button.styles.gradient_overlay", + "editor.button.styles.neon_glow", + "editor.button.styles.outline", + "editor.button.styles.glass", + "editor.button.styles.metallic", + "editor.button.align.left", + "editor.button.align.center", + "editor.button.align.right", + "editor.button.align.justify", + "editor.button.icon.title", + "editor.button.icon.desc", + "editor.button.icon.before", + "editor.button.icon.after", + "editor.button.icon.enable_toggle_desc", + "editor.button.icon_field", + "editor.button.show_icon", + "editor.button.show_icon_desc", + "editor.button.icon_desc", + "editor.button.icon_position", + "editor.button.icon_position_desc", + "editor.button.colors.title", + "editor.button.colors.background", + "editor.button.colors.text", + "editor.button.hover.title", + "editor.button.hover.effect_type", + "editor.button.hover.effect_type_desc", + "editor.button.hover.none", + "editor.button.hover.color", + "editor.button.hover.scale", + "editor.button.hover.glow", + "editor.button.hover.lift", + "editor.button.hover.hover_color", + "editor.button.hover.glow_color", + "editor.button.hover.enable_toggle_desc", + "editor.button.actions.type", + "editor.button.actions.type_desc", + "editor.button.actions.entity", + "editor.button.actions.entity_desc", + "editor.button.actions.navigation_path", + "editor.button.actions.navigation_path_desc", + "editor.button.actions.service", + "editor.button.actions.service_desc", + "editor.button.actions.service_data", + "editor.button.actions.service_data_desc", + "editor.button.tap.title", + "editor.button.tap.desc", + "editor.button.hold.title", + "editor.button.hold.desc", + "editor.button.double.title", + "editor.button.double.desc", + "editor.spinbox.entity.title", + "editor.spinbox.entity.desc", + "editor.spinbox.entity_field", + "editor.spinbox.entity_field_desc", + "editor.spinbox.value", + "editor.spinbox.min_value", + "editor.spinbox.min_value_desc", + "editor.spinbox.max_value", + "editor.spinbox.max_value_desc", + "editor.spinbox.step", + "editor.spinbox.step_desc", + "editor.spinbox.value_desc", + "editor.spinbox.display.title", + "editor.spinbox.layout_title", + "editor.spinbox.layout_desc", + "editor.spinbox.layout_options.horizontal", + "editor.spinbox.layout_options.vertical", + "editor.spinbox.show_value", + "editor.spinbox.show_value_desc", + "editor.spinbox.value_position_title", + "editor.spinbox.value_position_desc", + "editor.spinbox.value_position_options.center", + "editor.spinbox.value_position_options.top", + "editor.spinbox.value_position_options.bottom", + "editor.spinbox.value_position_options.left", + "editor.spinbox.value_position_options.right", + "editor.spinbox.show_unit", + "editor.spinbox.show_unit_desc", + "editor.spinbox.unit", + "editor.spinbox.unit_desc", + "editor.spinbox.buttons.title", + "editor.spinbox.button_style", + "editor.spinbox.button_style_desc", + "editor.spinbox.button_shape", + "editor.spinbox.button_shape_desc", + "editor.spinbox.button_size", + "editor.spinbox.button_size_desc", + "editor.spinbox.button_spacing", + "editor.spinbox.button_spacing_desc", + "editor.spinbox.button_gap", + "editor.spinbox.button_gap_desc", + "editor.spinbox.increment_icon", + "editor.spinbox.increment_icon_desc", + "editor.spinbox.decrement_icon", + "editor.spinbox.decrement_icon_desc", + "editor.spinbox.button_background_color", + "editor.spinbox.button_text_color", + "editor.spinbox.value_style.title", + "editor.spinbox.value_color", + "editor.spinbox.value_font_size", + "editor.spinbox.value_font_size_desc", + "editor.spinbox.template", + "editor.spinbox.template_mode", + "editor.spinbox.template_mode_desc", + "editor.spinbox.template_desc", + "editor.spinbox.template_examples", + "editor.spinbox.template_disabled", + "editor.spinbox.styles.flat", + "editor.spinbox.styles.glossy", + "editor.spinbox.styles.embossed", + "editor.spinbox.styles.inset", + "editor.spinbox.styles.gradient_overlay", + "editor.spinbox.styles.neon_glow", + "editor.spinbox.styles.outline", + "editor.spinbox.styles.glass", + "editor.spinbox.styles.metallic", + "editor.spinbox.shapes.rounded", + "editor.spinbox.shapes.square", + "editor.spinbox.shapes.circle", + "editor.spinbox.unified_template.title", + "editor.spinbox.unified_template.desc", + "editor.spinbox.unified_template.toggle", + "editor.spinbox.unified_template.cheatsheet", + "editor.layout_extra.module_name", + "editor.layout_extra.module_name_placeholder", + "editor.layout_extra.module_name_help", + "editor.camera.config.title", + "editor.camera.config.desc", + "editor.camera.entity", + "editor.camera.entity_desc", + "editor.camera.name", + "editor.camera.name_desc", + "editor.camera.show_name", + "editor.camera.show_name_desc", + "editor.camera.show_name_toggle.enable_toggle_desc", + "editor.camera.name_position.group_title", + "editor.camera.name_position.title", + "editor.camera.name_position.desc", + "editor.camera.name_position.options.top_left", + "editor.camera.name_position.options.top_right", + "editor.camera.name_position.options.center", + "editor.camera.name_position.options.bottom_left", + "editor.camera.name_position.options.bottom_right", + "editor.camera.display.title", + "editor.camera.view_mode.title", + "editor.camera.view_mode.desc", + "editor.camera.view_mode.options.auto", + "editor.camera.view_mode.options.live", + "editor.camera.view_mode.options.snapshot", + "editor.camera.audio_enabled.title", + "editor.camera.audio_enabled.desc", + "editor.camera.show_audio_button.title", + "editor.camera.show_audio_button.desc", + "editor.camera.show_controls.title", + "editor.camera.show_controls.desc", + "editor.camera.image_fit.title", + "editor.camera.image_fit.desc", + "editor.camera.image_fit.options.cover", + "editor.camera.image_fit.options.contain", + "editor.camera.image_fit.options.fill", + "editor.camera.audio.mute", + "editor.camera.audio.unmute", + "editor.camera.unavailable", + "editor.camera.snapshot_refresh.section_title", + "editor.camera.live_view.title", + "editor.camera.live_view.desc", + "editor.camera.auto_refresh.section_title", + "editor.camera.auto_refresh.title", + "editor.camera.auto_refresh.desc", + "editor.camera.refresh_interval.title", + "editor.camera.refresh_interval.desc", + "editor.camera.dimensions.title", + "editor.camera.width", + "editor.camera.width_desc", + "editor.camera.height", + "editor.camera.height_desc", + "editor.camera.link_aspect", + "editor.camera.unlink_aspect", + "editor.camera.aspect_linked.title", + "editor.camera.aspect_linked.desc", + "editor.camera.aspect_independent.title", + "editor.camera.aspect_independent.desc", + "editor.camera.crop.title", + "editor.camera.crop.desc", + "editor.camera.crop.left_title", + "editor.camera.crop.left_desc", + "editor.camera.crop.right_title", + "editor.camera.crop.right_desc", + "editor.camera.crop.top_title", + "editor.camera.crop.top_desc", + "editor.camera.crop.bottom_title", + "editor.camera.crop.bottom_desc", + "editor.camera.crop.active_applied", + "editor.camera.crop.reset_all", + "editor.camera.template.title", + "editor.camera.template.desc", + "editor.camera.template.mode_label", + "editor.camera.template.mode_desc", + "editor.camera.template.camera_template_label", + "editor.camera.template.camera_template_desc", + "editor.camera.template.examples_title", + "editor.camera.template.example1_desc", + "editor.camera.template.example2_desc", + "editor.camera.template.example3_desc", + "editor.camera.error_no_entity", + "editor.camera.error_no_entity_desc", + "editor.camera.error_no_template", + "editor.camera.error_no_template_desc", + "editor.camera.unified_template.title", + "editor.camera.unified_template.desc", + "editor.camera.unified_template.toggle", + "editor.camera.unified_template.toggle_desc", + "editor.camera.unified_template.cheatsheet", + "editor.separator.config.title", + "editor.separator.style.title", + "editor.separator.style.desc", + "editor.separator.orientation.title", + "editor.separator.orientation.desc", + "editor.separator.orientation.horizontal", + "editor.separator.orientation.vertical", + "editor.separator.options.solid", + "editor.separator.options.double", + "editor.separator.options.dotted", + "editor.separator.options.double_dotted", + "editor.separator.options.shadow", + "editor.separator.options.blank", + "editor.separator.appearance.title", + "editor.separator.thickness", + "editor.separator.thickness_desc", + "editor.separator.width", + "editor.separator.width_desc", + "editor.separator.color.title", + "editor.separator.color.desc", + "editor.separator.show_title", + "editor.separator.show_title_desc", + "editor.separator.show_title_toggle.enable_toggle_desc", + "editor.separator.text_content.title", + "editor.separator.text_content.desc", + "editor.separator.font_size", + "editor.separator.font_size_desc", + "editor.separator.text_color.title", + "editor.separator.text_color.desc", + "editor.separator.text_format.title", + "editor.separator.text_format.desc", + "editor.separator.text_format.bold", + "editor.separator.text_format.italic", + "editor.separator.text_format.underline", + "editor.separator.text_format.uppercase", + "editor.separator.text_format.strikethrough", + "editor.separator.spacer.title", + "editor.separator.height", + "editor.separator.height_desc", + "editor.design.copy", + "editor.design.paste", + "editor.design.reset_all", + "editor.design.copy_tooltip", + "editor.design.paste_tooltip_has", + "editor.design.paste_tooltip_none", + "editor.design.reset_all_tooltip", + "editor.design.reset_to_theme", + "editor.design.reset_to_theme_tooltip", + "editor.design.responsive_overrides", + "editor.design.responsive_hint", + "editor.design.clear_device_overrides", + "editor.design.text_section", + "editor.design.text_color", + "editor.design.alignment", + "editor.design.inherit_alignment", + "editor.design.font_size", + "editor.design.font_size_placeholder", + "editor.design.reset_font_size", + "editor.design.line_height", + "editor.design.line_height_placeholder", + "editor.design.reset_line_height", + "editor.design.letter_spacing", + "editor.design.letter_spacing_placeholder", + "editor.design.reset_letter_spacing", + "editor.design.font", + "editor.design.reset_font", + "editor.design.google_fonts_warning", + "editor.design.font_weight", + "editor.design.reset_font_weight", + "editor.design.text_transform", + "editor.design.reset_text_transform", + "editor.design.font_style", + "editor.design.reset_font_style", + "editor.design.default_option", + "editor.design.weight_thin", + "editor.design.weight_light", + "editor.design.weight_normal", + "editor.design.weight_medium", + "editor.design.weight_semi_bold", + "editor.design.weight_bold", + "editor.design.weight_black", + "editor.design.transform_none", + "editor.design.transform_uppercase", + "editor.design.transform_lowercase", + "editor.design.transform_capitalize", + "editor.design.style_normal", + "editor.design.style_italic", + "editor.design.style_oblique", + "editor.design.white_space", + "editor.design.reset_white_space", + "editor.design.white_space_normal", + "editor.design.white_space_nowrap", + "editor.design.white_space_pre", + "editor.design.white_space_pre_wrap", + "editor.design.white_space_pre_line", + "editor.design.background_section", + "editor.design.background_color", + "editor.design.background_image_type", + "editor.design.bg_none", + "editor.design.bg_upload", + "editor.design.bg_entity", + "editor.design.bg_url", + "editor.design.sizes_section", + "editor.design.spacing_section", + "editor.design.border_section", + "editor.design.text_shadow_section", + "editor.design.box_shadow_section", + "editor.design.position_section", + "editor.design.overflow_section", + "editor.design.transform_3d_section", + "editor.design.transform_3d_desc", + "editor.design.transform_3d_perspective", + "editor.design.transform_3d_perspective_placeholder", + "editor.design.transform_3d_rotate_x", + "editor.design.transform_3d_rotate_y", + "editor.design.transform_3d_rotate_z", + "editor.design.transform_3d_rotate_placeholder", + "editor.design.transform_3d_rotate_hint", + "editor.design.spacing_units_hint", + "editor.design.animations_section", + "editor.design.width", + "editor.design.height", + "editor.design.max_width", + "editor.design.max_height", + "editor.design.min_width", + "editor.design.min_height", + "editor.design.border_radius", + "editor.design.border_style", + "editor.design.border_width", + "editor.design.border_color", + "editor.design.margin", + "editor.design.padding", + "editor.design.top", + "editor.design.right", + "editor.design.bottom", + "editor.design.left", + "editor.design.unlock_sides", + "editor.design.lock_sides", + "editor.design.horizontal_shift", + "editor.design.vertical_shift", + "editor.design.blur", + "editor.design.text_shadow_color", + "editor.design.box_shadow_color", + "editor.design.overflow", + "editor.design.clip_path", + "editor.design.upload_bg_image", + "editor.design.bg_image_entity", + "editor.design.bg_image_url", + "editor.design.choose_file", + "editor.design.no_file_chosen", + "editor.design.backdrop_filter", + "editor.design.background_filter", + "editor.design.spread", + "editor.design.visible_default", + "editor.design.examples", + "editor.design.state_based_animation", + "editor.design.animation_type", + "editor.design.animation_duration", + "editor.design.animation_duration_desc", + "editor.design.intro_outro_animations", + "editor.design.intro_animation", + "editor.design.outro_animation", + "editor.design.duration", + "editor.design.delay", + "editor.design.timing", + "editor.design.none", + "editor.design.ease", + "editor.design.border_style_none", + "editor.design.border_style_solid", + "editor.design.border_style_dashed", + "editor.design.border_style_dotted", + "editor.design.border_style_double", + "editor.design.position_default", + "editor.design.position_static", + "editor.design.position_relative", + "editor.design.position_absolute", + "editor.design.position_fixed", + "editor.design.position_sticky", + "editor.design.copied", + "editor.design.copy_nothing", + "editor.design.pasted", + "editor.design.has_modifications", + "editor.design.has_responsive_overrides", + "editor.design.reset_field", + "editor.design.reset_section", + "editor.design.clear_section_device_overrides", + "editor.design.overrides_active_hidden", + "editor.design.device_desktop_info", + "editor.design.device_override_info", + "editor.design.device_desktop", + "editor.design.device_laptop", + "editor.design.device_tablet", + "editor.design.device_mobile", + "editor.design.web_safe_fonts", + "editor.design.google_fonts", + "editor.design.background_size", + "editor.design.background_repeat", + "editor.design.background_position", + "editor.design.custom_width", + "editor.design.custom_height", + "editor.design.bg_image_entity_hint", + "editor.design.remove_file", + "editor.design.backdrop_filter_desc", + "editor.design.background_filter_desc", + "editor.design.offsets", + "editor.design.z_index", + "editor.design.text_shadow_hint", + "editor.design.entity_to_monitor", + "editor.design.select_entity_first", + "editor.design.animation_trigger_type", + "editor.design.attribute_name", + "editor.design.attribute_value", + "editor.design.state_value", + "editor.design.entity_not_found", + "editor.design.current_state", + "editor.design.state_value_hint", + "editor.design.attribute_name_hint", + "editor.design.available_attributes", + "editor.design.select_attribute_first", + "editor.design.attribute_not_found", + "editor.design.current_value", + "editor.design.custom_targeting_section", + "editor.design.css_var_prefix", + "editor.design.css_var_prefix_desc", + "editor.design.extra_class", + "editor.design.extra_class_desc", + "editor.design.element_id", + "editor.design.element_id_desc", + "editor.modules.text", + "editor.modules.image", + "editor.modules.icon", + "editor.modules.bar", + "editor.modules.info", + "editor.modules.button", + "editor.modules.spinbox", + "editor.modules.separator", + "editor.modules.markdown", + "editor.modules.camera", + "editor.modules.graphs", + "editor.modules.dropdown", + "editor.modules.map", + "editor.modules.video_bg", + "editor.modules.people.title", + "editor.modules.people.description", + "editor.modules.people.person_entity", + "editor.modules.people.person_entity_desc", + "editor.modules.people.person", + "editor.modules.people.layout_style", + "editor.modules.people.layout_style_desc", + "editor.modules.people.avatar_settings", + "editor.modules.people.avatar_size", + "editor.modules.people.border_width", + "editor.modules.people.border_color", + "editor.modules.people.use_state_color", + "editor.modules.people.use_state_color_desc", + "editor.modules.people.home_color", + "editor.modules.people.away_color", + "editor.modules.people.show_status_badge", + "editor.modules.people.show_status_badge_desc", + "editor.modules.people.badge_position", + "editor.modules.people.banner_settings", + "editor.modules.people.background_type", + "editor.modules.people.background_image", + "editor.modules.people.background_entity", + "editor.modules.people.banner_height", + "editor.modules.people.blur_amount", + "editor.modules.people.name_settings", + "editor.modules.people.show_name", + "editor.modules.people.custom_name", + "editor.modules.people.name_font_size", + "editor.modules.people.name_color", + "editor.modules.people.data_items", + "editor.modules.people.data_items_desc", + "editor.modules.people.add_data_item", + "editor.modules.people.data_item.location", + "editor.modules.people.data_item.battery", + "editor.modules.people.data_item.time_info", + "editor.modules.people.data_item.media", + "editor.modules.people.data_item.sensor", + "editor.modules.people.data_item.device_state", + "editor.modules.people.data_item.attribute", + "editor.modules.people.data_item.toggle", + "editor.modules.people.associated_entities", + "editor.modules.people.associated_entities_desc", + "editor.modules.people.battery_entity", + "editor.modules.people.media_player", + "editor.modules.people.layout_spacing", + "editor.modules.people.gap", + "editor.modules.people.data_items_direction", + "editor.modules.people.direction_row", + "editor.modules.people.direction_column", + "editor.modules.people.alignment", + "editor.modules.people.align_left", + "editor.modules.people.align_center", + "editor.modules.people.align_right", + "editor.modules.people.badge_top_left", + "editor.modules.people.badge_top_right", + "editor.modules.people.badge_bottom_left", + "editor.modules.people.badge_bottom_right", + "editor.modules.no_text_configured", + "editor.modules.no_image_configured", + "editor.modules.uploaded_image", + "editor.modules.icons_configured", + "editor.modules.no_icons_configured", + "editor.modules.default_entity_suggestion", + "editor.modules.sample_text", + "editor.video_bg.title", + "editor.video_bg.description", + "editor.video_bg.enable", + "editor.video_bg.enable_desc", + "editor.video_bg.editor_only", + "editor.video_bg.editor_only_desc", + "editor.video_bg.enable_on_mobile", + "editor.video_bg.enable_on_mobile_desc", + "editor.video_bg.controller_id", + "editor.video_bg.controller_id_desc", + "editor.video_bg.source_type", + "editor.video_bg.source_type_desc", + "editor.video_bg.video_url", + "editor.video_bg.video_url_desc", + "editor.video_bg.youtube_url", + "editor.video_bg.youtube_url_desc", + "editor.video_bg.vimeo_url", + "editor.video_bg.vimeo_url_desc", + "editor.video_bg.loop", + "editor.video_bg.loop_desc", + "editor.video_bg.start_time", + "editor.video_bg.start_time_desc", + "editor.video_bg.opacity", + "editor.video_bg.opacity_desc", + "editor.video_bg.blur", + "editor.video_bg.blur_desc", + "editor.video_bg.brightness", + "editor.video_bg.brightness_desc", + "editor.video_bg.scale", + "editor.video_bg.scale_desc", + "editor.video_bg.pause_when_hidden", + "editor.video_bg.pause_when_hidden_desc", + "editor.video_bg.respect_reduced_motion", + "editor.video_bg.respect_reduced_motion_desc", + "editor.video_bg.global_transparency", + "editor.video_bg.global_transparency_desc", + "editor.video_bg.global_transparency_enable", + "editor.video_bg.global_transparency_enable_desc", + "editor.video_bg.card_opacity", + "editor.video_bg.card_opacity_desc", + "editor.video_bg.card_blur", + "editor.video_bg.card_blur_desc", + "editor.video_bg.card_color", + "editor.video_bg.card_color_desc", + "editor.video_bg.pro_required", + "editor.video_bg.pro_required_desc", + "editor.video_bg.get_pro", + "editor.video_bg.active", + "editor.video_bg.enabled", + "editor.video_bg.disabled", + "editor.video_bg.always_visible", + "editor.video_bg.preview_note", + "editor.video_bg.info_note", + "editor.video_bg.transparency_info", + "editor.map.tabs.general", + "editor.map.tabs.markers", + "editor.map.provider.title", + "editor.map.provider.desc", + "editor.map.provider.select", + "editor.map.provider.select_desc", + "editor.map.provider.osm", + "editor.map.provider.google", + "editor.map.google_api_key", + "editor.map.google_api_key_desc", + "editor.map.how_to_get_api_key", + "editor.map.style.title", + "editor.map.style.desc", + "editor.map.style.select", + "editor.map.style.select_desc", + "editor.map.type.title", + "editor.map.type.desc", + "editor.map.type.select", + "editor.map.type.select_desc", + "editor.map.type.roadmap", + "editor.map.type.satellite", + "editor.map.type.hybrid", + "editor.map.type.terrain", + "editor.map.type.osm_standard", + "editor.map.type.osm_cycle", + "editor.map.type.osm_transport", + "editor.map.type.osm_humanitarian", + "editor.map.zoom.title", + "editor.map.zoom.desc", + "editor.map.zoom.level", + "editor.map.zoom.level_desc", + "editor.map.zoom.auto", + "editor.map.zoom.auto_desc", + "editor.map.controls.title", + "editor.map.controls.desc", + "editor.map.controls.show", + "editor.map.controls.show_desc", + "editor.map.controls.disable_scroll", + "editor.map.controls.disable_scroll_desc", + "editor.map.controls.disable_drag", + "editor.map.controls.disable_drag_desc", + "editor.map.dimensions.title", + "editor.map.dimensions.desc", + "editor.map.dimensions.aspect_ratio", + "editor.map.dimensions.aspect_ratio_desc", + "editor.map.dimensions.height", + "editor.map.dimensions.height_desc", + "editor.map.markers.title", + "editor.map.markers.desc", + "editor.map.markers.add", + "editor.map.markers.empty", + "editor.map.markers.empty_desc", + "editor.map.marker.name", + "editor.map.marker.name_desc", + "editor.map.marker.name_placeholder", + "editor.map.marker.drag", + "editor.map.marker.duplicate", + "editor.map.marker.delete", + "editor.map.marker.type_label", + "editor.map.marker.type_desc", + "editor.map.marker.manual_position", + "editor.map.marker.entity_tracker", + "editor.map.marker.entity", + "editor.map.marker.entity_desc", + "editor.map.marker.latitude", + "editor.map.marker.latitude_range", + "editor.map.marker.longitude", + "editor.map.marker.longitude_range", + "editor.map.marker.visual", + "editor.map.marker.display_type", + "editor.map.marker.display_type_desc", + "editor.map.marker.icon", + "editor.map.marker.icon_optional", + "editor.map.marker.icon_color", + "editor.map.marker.icon_size", + "editor.map.marker.icon_size_range", + "editor.map.marker.image_size", + "editor.map.marker.image_size_range", + "editor.map.marker.custom_image", + "editor.map.marker.custom_image_desc", + "editor.map.marker.use_entity_picture", + "editor.map.marker.use_entity_picture_desc", + "editor.map.marker.type.manual", + "editor.map.marker.type.entity", + "editor.map.marker.display.icon", + "editor.map.marker.display.custom_image", + "editor.map.marker.display.entity_image", + "editor.sports.data_source", + "editor.sports.data_source_desc", + "editor.sports.source_type", + "editor.sports.source_type_desc", + "editor.sports.ha_sensor_config", + "editor.sports.sensor_entity", + "editor.sports.sensor_entity_desc", + "editor.sports.sensor_status", + "editor.sports.espn_config", + "editor.sports.league", + "editor.sports.league_desc", + "editor.sports.team", + "editor.sports.team_desc", + "editor.sports.display_settings", + "editor.sports.display_style", + "editor.sports.display_style_desc", + "editor.sports.refresh_interval", + "editor.sports.refresh_interval_desc", + "editor.sports.element_visibility", + "editor.sports.element_visibility_desc", + "editor.sports.show_team_logos", + "editor.sports.show_team_logos_desc", + "editor.sports.show_team_names", + "editor.sports.show_team_names_desc", + "editor.sports.show_team_records", + "editor.sports.show_team_records_desc", + "editor.sports.show_score", + "editor.sports.show_score_desc", + "editor.sports.show_game_time", + "editor.sports.show_game_time_desc", + "editor.sports.show_venue", + "editor.sports.show_venue_desc", + "editor.sports.show_broadcast", + "editor.sports.show_broadcast_desc", + "editor.sports.show_status_detail", + "editor.sports.show_status_detail_desc", + "editor.sports.show_odds", + "editor.sports.show_odds_desc", + "editor.sports.styling", + "editor.sports.use_team_colors", + "editor.sports.use_team_colors_desc", + "editor.sports.status_colors", + "editor.sports.in_progress_color", + "editor.sports.scheduled_color", + "editor.sports.win_color", + "editor.sports.loss_color", + "editor.sports.font_sizes", + "editor.sports.score_font_size", + "editor.sports.team_name_font_size", + "editor.sports.logo_size", + "editor.cover.entity_section", + "editor.cover.entity_desc", + "editor.cover.entity", + "editor.cover.display_section", + "editor.cover.display_desc", + "editor.cover.show_title", + "editor.cover.show_title_desc", + "editor.cover.show_icon", + "editor.cover.show_icon_desc", + "editor.cover.show_state", + "editor.cover.show_state_desc", + "editor.cover.show_position", + "editor.cover.show_position_desc", + "editor.cover.show_position_control", + "editor.cover.show_position_control_desc", + "editor.cover.show_stop", + "editor.cover.show_stop_desc", + "editor.cover.layout_section", + "editor.cover.layout_desc", + "editor.cover.layout", + "editor.cover.layout_style_desc", + "editor.cover.layout_compact", + "editor.cover.layout_standard", + "editor.cover.layout_buttons", + "editor.cover.alignment", + "editor.cover.alignment_desc", + "editor.cover.alignment_left", + "editor.cover.alignment_center", + "editor.cover.alignment_right", + "editor.cover.advanced_section", + "editor.cover.advanced_desc", + "editor.cover.show_tilt", + "editor.cover.show_tilt_desc", + "editor.cover.show_tilt_control", + "editor.cover.show_tilt_control_desc", + "editor.cover.open", + "editor.cover.close", + "editor.cover.stop", + "editor.cover.position", + "editor.cover.tilt", + "editor.cover.state_open", + "editor.cover.state_closed", + "editor.cover.state_opening", + "editor.cover.state_closing", + "editor.cover.config_needed", + "editor.cover.config_needed_desc", + "editor.cover.select_entity", + "editor.cover.unavailable", + "editor.fan.error_entity", + "editor.fan.entity_section", + "editor.fan.entity_desc", + "editor.fan.entity", + "editor.fan.entity_field_desc", + "editor.fan.icon_override", + "editor.fan.icon_override_desc", + "editor.fan.display_section", + "editor.fan.display_desc", + "editor.fan.show_title", + "editor.fan.show_title_desc", + "editor.fan.show_icon", + "editor.fan.show_icon_desc", + "editor.fan.show_state", + "editor.fan.show_state_desc", + "editor.fan.show_percentage", + "editor.fan.show_percentage_desc", + "editor.fan.show_percentage_control", + "editor.fan.show_percentage_control_desc", + "editor.fan.show_preset_modes", + "editor.fan.show_preset_modes_desc", + "editor.fan.show_oscillate", + "editor.fan.show_oscillate_desc", + "editor.fan.show_direction", + "editor.fan.show_direction_desc", + "editor.fan.show_speed_steppers", + "editor.fan.show_speed_steppers_desc", + "editor.fan.layout_section", + "editor.fan.layout_desc", + "editor.fan.layout", + "editor.fan.layout_style_desc", + "editor.fan.layout_hero", + "editor.fan.layout_standard", + "editor.fan.layout_compact", + "editor.fan.alignment", + "editor.fan.alignment_desc", + "editor.fan.alignment_left", + "editor.fan.alignment_center", + "editor.fan.alignment_right", + "editor.fan.config_needed", + "editor.fan.config_needed_desc", + "editor.fan.unavailable", + "editor.fan.state_on", + "editor.fan.state_off", + "editor.fan.turn_on", + "editor.fan.turn_off", + "editor.fan.on", + "editor.fan.off", + "editor.fan.slower", + "editor.fan.faster", + "editor.fan.speed", + "editor.fan.presets_label", + "editor.fan.direction", + "editor.fan.oscillate", + "editor.fan.forward", + "editor.fan.reverse", + "editor.lock.error_entity", + "editor.lock.entity_section", + "editor.lock.entity_section_desc", + "editor.lock.entity", + "editor.lock.entity_field_desc", + "editor.lock.icon_override", + "editor.lock.icon_override_desc", + "editor.lock.display_section", + "editor.lock.display_desc", + "editor.lock.show_title", + "editor.lock.show_title_desc", + "editor.lock.show_icon", + "editor.lock.show_icon_desc", + "editor.lock.show_state", + "editor.lock.show_state_desc", + "editor.lock.show_open_button", + "editor.lock.show_open_button_desc", + "editor.lock.layout_section", + "editor.lock.layout_desc", + "editor.lock.layout", + "editor.lock.layout_style_desc", + "editor.lock.layout_hero", + "editor.lock.layout_standard", + "editor.lock.layout_compact", + "editor.lock.alignment", + "editor.lock.alignment_desc", + "editor.lock.alignment_left", + "editor.lock.alignment_center", + "editor.lock.alignment_right", + "editor.lock.config_needed", + "editor.lock.config_needed_desc", + "editor.lock.unavailable", + "editor.lock.locked", + "editor.lock.unlocked", + "editor.lock.locking", + "editor.lock.unlocking", + "editor.lock.jammed", + "editor.lock.jammed_hint", + "editor.lock.action_lock", + "editor.lock.action_unlock", + "editor.lock.action_open", + "editor.lock.actions", + "editor.living_canvas.title", + "editor.living_canvas.intro", + "editor.living_canvas.view_note", + "editor.living_canvas.enable", + "editor.living_canvas.enable_desc", + "editor.living_canvas.display_section", + "editor.living_canvas.position", + "editor.living_canvas.position_desc", + "editor.living_canvas.position_bg", + "editor.living_canvas.position_fg", + "editor.living_canvas.layer_opacity", + "editor.living_canvas.layer_opacity_desc", + "editor.living_canvas.canvas_opacity", + "editor.living_canvas.canvas_opacity_desc", + "editor.living_canvas.colors_section", + "editor.living_canvas.colors_section_desc", + "editor.living_canvas.color_background", + "editor.living_canvas.color_primary", + "editor.living_canvas.color_secondary", + "editor.living_canvas.preset", + "editor.living_canvas.preset_desc", + "editor.living_canvas.preset_aurora", + "editor.living_canvas.preset_plasma", + "editor.living_canvas.preset_particles", + "editor.living_canvas.preset_mesh", + "editor.living_canvas.speed", + "editor.living_canvas.speed_desc", + "editor.living_canvas.intensity", + "editor.living_canvas.intensity_desc", + "editor.living_canvas.quality", + "editor.living_canvas.quality_desc", + "editor.living_canvas.quality_low", + "editor.living_canvas.quality_medium", + "editor.living_canvas.quality_high", + "editor.living_canvas.mobile_section", + "editor.living_canvas.enable_on_mobile", + "editor.living_canvas.enable_on_mobile_desc", + "editor.living_canvas.accessibility", + "editor.living_canvas.respect_reduced_motion", + "editor.living_canvas.respect_reduced_motion_desc", + "editor.living_canvas.drivers_heading", + "editor.living_canvas.drivers_help", + "editor.living_canvas.drivers_detail", + "editor.living_canvas.driver_a", + "editor.living_canvas.driver_b", + "editor.living_canvas.pro_description", + "editor.living_canvas.preview_locked", + "editor.living_canvas.preview_disabled", + "editor.living_canvas.preview_preset", + "editor.living_canvas.preview_opacity", + "editor.living_canvas.preview_hint", + "editor.pro.feature_locked", + "editor.pro.sports_description", + "editor.pro.upgrade_button", + "editor.text_input.entity.title", + "editor.text_input.entity.desc", + "editor.text_input.entity_field", + "editor.text_input.entity_field_desc", + "editor.text_input.entity_info", + "editor.text_input.appearance.title", + "editor.text_input.appearance.desc", + "editor.text_input.input_appearance", + "editor.text_input.input_appearance_desc", + "editor.text_input.appearance_options.outlined", + "editor.text_input.appearance_options.filled", + "editor.text_input.appearance_options.underlined", + "editor.text_input.placeholder", + "editor.text_input.placeholder_desc", + "editor.text_input.label", + "editor.text_input.label_desc", + "editor.text_input.show_label", + "editor.text_input.show_label_desc", + "editor.text_input.multiline", + "editor.text_input.multiline_desc", + "editor.text_input.rows", + "editor.text_input.rows_desc", + "editor.text_input.controls.title", + "editor.text_input.prefix_icon", + "editor.text_input.prefix_icon_desc", + "editor.text_input.suffix_icon", + "editor.text_input.suffix_icon_desc", + "editor.text_input.show_clear_button", + "editor.text_input.show_clear_button_desc", + "editor.text_input.show_character_count", + "editor.text_input.show_character_count_desc", + "editor.text_input.styling.title", + "editor.text_input.font_size", + "editor.text_input.font_size_desc", + "editor.text_input.text_color", + "editor.text_input.focus_color", + "editor.text_input.error_configure_entity_desc", + "editor.datetime_input.entity.title", + "editor.datetime_input.entity.desc", + "editor.datetime_input.entity_field", + "editor.datetime_input.entity_field_desc", + "editor.datetime_input.entity_info", + "editor.datetime_input.display.title", + "editor.datetime_input.display.desc", + "editor.datetime_input.display_mode_datetime", + "editor.datetime_input.display_mode_datetime_desc", + "editor.datetime_input.display_mode_options.auto", + "editor.datetime_input.display_mode_options.date", + "editor.datetime_input.display_mode_options.time", + "editor.datetime_input.display_mode_options.datetime", + "editor.datetime_input.label", + "editor.datetime_input.label_desc", + "editor.datetime_input.show_label", + "editor.datetime_input.show_label_desc", + "editor.datetime_input.date_label", + "editor.datetime_input.time_label", + "editor.datetime_input.styling.title", + "editor.datetime_input.font_size", + "editor.datetime_input.font_size_desc", + "editor.datetime_input.text_color", + "editor.datetime_input.focus_color", + "editor.datetime_input.error_configure_entity_desc", + "editor.number_input.entity.title", + "editor.number_input.entity.desc", + "editor.number_input.entity_field", + "editor.number_input.entity_field_desc", + "editor.number_input.appearance.title", + "editor.number_input.appearance.desc", + "editor.number_input.input_appearance", + "editor.number_input.input_appearance_desc", + "editor.number_input.appearance_options.outlined", + "editor.number_input.appearance_options.filled", + "editor.number_input.appearance_options.underlined", + "editor.number_input.label", + "editor.number_input.label_desc", + "editor.number_input.show_label", + "editor.number_input.show_label_desc", + "editor.number_input.controls.title", + "editor.number_input.show_stepper", + "editor.number_input.show_stepper_desc", + "editor.number_input.show_unit", + "editor.number_input.show_unit_desc", + "editor.number_input.styling.title", + "editor.number_input.font_size", + "editor.number_input.font_size_desc", + "editor.number_input.text_color", + "editor.number_input.focus_color", + "editor.number_input.error_configure_entity_desc", + "editor.slider_input.entity.title", + "editor.slider_input.entity.desc", + "editor.slider_input.entity_field", + "editor.slider_input.entity_field_desc", + "editor.slider_input.display.title", + "editor.slider_input.display.desc", + "editor.slider_input.label", + "editor.slider_input.label_desc", + "editor.slider_input.show_label", + "editor.slider_input.show_label_desc", + "editor.slider_input.show_value", + "editor.slider_input.show_value_desc", + "editor.slider_input.show_min_max", + "editor.slider_input.show_min_max_desc", + "editor.slider_input.show_unit", + "editor.slider_input.show_unit_desc", + "editor.slider_input.styling.title", + "editor.slider_input.slider_height", + "editor.slider_input.slider_height_desc", + "editor.slider_input.thumb_size", + "editor.slider_input.thumb_size_desc", + "editor.slider_input.font_size", + "editor.slider_input.font_size_desc", + "editor.slider_input.slider_color", + "editor.slider_input.track_color", + "editor.slider_input.text_color", + "editor.slider_input.error_configure_entity_desc", + "editor.select_input.entity.title", + "editor.select_input.entity.desc", + "editor.select_input.entity_field", + "editor.select_input.entity_field_desc", + "editor.select_input.appearance.title", + "editor.select_input.appearance.desc", + "editor.select_input.select_style", + "editor.select_input.select_style_desc", + "editor.select_input.style_options.dropdown", + "editor.select_input.style_options.segmented", + "editor.select_input.style_options.chips", + "editor.select_input.label", + "editor.select_input.label_desc", + "editor.select_input.show_label", + "editor.select_input.show_label_desc", + "editor.select_input.styling.title", + "editor.select_input.font_size", + "editor.select_input.font_size_desc", + "editor.select_input.active_color", + "editor.select_input.text_color", + "editor.select_input.error_configure_entity_desc", + "editor.boolean_input.entity.title", + "editor.boolean_input.entity.desc", + "editor.boolean_input.entity_field", + "editor.boolean_input.entity_field_desc", + "editor.boolean_input.appearance.title", + "editor.boolean_input.appearance.desc", + "editor.boolean_input.toggle_style", + "editor.boolean_input.toggle_style_desc", + "editor.boolean_input.style_options.switch", + "editor.boolean_input.style_options.checkbox", + "editor.boolean_input.style_options.pill", + "editor.boolean_input.label", + "editor.boolean_input.label_desc", + "editor.boolean_input.show_label", + "editor.boolean_input.show_label_desc", + "editor.boolean_input.show_state_text", + "editor.boolean_input.show_state_text_desc", + "editor.boolean_input.on_text", + "editor.boolean_input.on_text_desc", + "editor.boolean_input.off_text", + "editor.boolean_input.off_text_desc", + "editor.boolean_input.styling.title", + "editor.boolean_input.font_size", + "editor.boolean_input.font_size_desc", + "editor.boolean_input.on_color", + "editor.boolean_input.off_color", + "editor.boolean_input.text_color", + "editor.boolean_input.error_configure_entity_desc", + "editor.button_input.entity.title", + "editor.button_input.entity.desc", + "editor.button_input.entity_field", + "editor.button_input.entity_field_desc", + "editor.button_input.appearance.title", + "editor.button_input.appearance.desc", + "editor.button_input.button_label", + "editor.button_input.button_label_desc", + "editor.button_input.button_icon", + "editor.button_input.button_icon_desc", + "editor.button_input.button_style", + "editor.button_input.button_style_desc", + "editor.button_input.style_options.filled", + "editor.button_input.style_options.outlined", + "editor.button_input.style_options.text", + "editor.button_input.styling.title", + "editor.button_input.font_size", + "editor.button_input.font_size_desc", + "editor.button_input.button_color", + "editor.button_input.text_color", + "editor.button_input.error_configure_entity_desc", + "editor.counter_input.entity.title", + "editor.counter_input.entity.desc", + "editor.counter_input.entity_field", + "editor.counter_input.entity_field_desc", + "editor.counter_input.appearance.title", + "editor.counter_input.appearance.desc", + "editor.counter_input.counter_style", + "editor.counter_input.counter_style_desc", + "editor.counter_input.style_options.inline", + "editor.counter_input.style_options.stacked", + "editor.counter_input.style_options.compact", + "editor.counter_input.label", + "editor.counter_input.label_desc", + "editor.counter_input.show_label", + "editor.counter_input.show_label_desc", + "editor.counter_input.show_reset", + "editor.counter_input.show_reset_desc", + "editor.counter_input.styling.title", + "editor.counter_input.font_size", + "editor.counter_input.font_size_desc", + "editor.counter_input.button_color", + "editor.counter_input.text_color", + "editor.counter_input.error_configure_entity_desc", + "editor.color_input.mode.title", + "editor.color_input.mode.desc", + "editor.color_input.color_mode", + "editor.color_input.color_mode_desc", + "editor.color_input.mode_options.hex", + "editor.color_input.mode_options.light_rgb", + "editor.color_input.entity.title", + "editor.color_input.entity.desc", + "editor.color_input.entity_field", + "editor.color_input.entity_field_desc", + "editor.color_input.display.title", + "editor.color_input.label", + "editor.color_input.label_desc", + "editor.color_input.show_label", + "editor.color_input.show_label_desc", + "editor.color_input.show_hex_input", + "editor.color_input.show_hex_input_desc", + "editor.color_input.show_preview", + "editor.color_input.show_preview_desc", + "editor.color_input.styling.title", + "editor.color_input.preview_size", + "editor.color_input.preview_size_desc", + "editor.color_input.font_size", + "editor.color_input.font_size_desc", + "editor.color_input.text_color", + "editor.color_input.error_configure_entity_desc", + "editor.gauge.error_no_entity", + "editor.gauge.error_no_entity_desc", + "editor.gauge.section_basic", + "editor.gauge.section_value", + "editor.gauge.section_style", + "editor.gauge.section_pointer", + "editor.gauge.section_pointer_desc", + "editor.gauge.section_color", + "editor.gauge.section_display", + "editor.gauge.section_ticks", + "editor.gauge.section_animation", + "editor.gauge.entity", + "editor.alert_center.default_title", + "editor.alert_center.section_basic", + "editor.alert_center.section_basic_desc", + "editor.alert_center.title", + "editor.alert_center.title_desc", + "editor.alert_center.show_title", + "editor.alert_center.show_title_desc", + "editor.alert_center.max_alerts", + "editor.alert_center.max_alerts_desc", + "editor.alert_center.show_state", + "editor.alert_center.show_state_desc", + "editor.alert_center.show_all_clear", + "editor.alert_center.show_all_clear_desc", + "editor.alert_center.section_sources", + "editor.alert_center.section_sources_desc", + "editor.alert_center.include_alert_domain", + "editor.alert_center.include_alert_domain_desc", + "editor.alert_center.include_binary_sensors", + "editor.alert_center.include_binary_sensors_desc", + "editor.alert_center.include_lock_alerts", + "editor.alert_center.include_lock_alerts_desc", + "editor.alert_center.include_alarm_panel_alerts", + "editor.alert_center.include_alarm_panel_alerts_desc", + "editor.alert_center.section_style", + "editor.alert_center.section_style_desc", + "editor.alert_center.tile_radius", + "editor.alert_center.tile_radius_desc", + "editor.alert_center.section_entities", + "editor.alert_center.section_entities_desc", + "editor.alert_center.include_entities", + "editor.alert_center.include_entities_desc", + "editor.alert_center.include_add", + "editor.alert_center.hidden_entities", + "editor.alert_center.hidden_entities_desc", + "editor.alert_center.hidden_add", + "editor.alert_center.no_alerts", + "editor.alert_center.no_alerts_desc", + "editor.alert_center.all_clear", + "editor.alert_center.all_clear_desc", + "editor.battery_monitor.error_manual_empty", + "editor.battery_monitor.section_style", + "editor.battery_monitor.style_list", + "editor.battery_monitor.style_list_desc", + "editor.battery_monitor.style_bars", + "editor.battery_monitor.style_bars_desc", + "editor.battery_monitor.style_cards", + "editor.battery_monitor.style_cards_desc", + "editor.battery_monitor.style_rings", + "editor.battery_monitor.style_rings_desc", + "editor.battery_monitor.style_strip", + "editor.battery_monitor.style_strip_desc", + "editor.battery_monitor.section_display", + "editor.battery_monitor.title", + "editor.battery_monitor.title_desc", + "editor.battery_monitor.show_title", + "editor.battery_monitor.show_title_desc", + "editor.battery_monitor.show_charging", + "editor.battery_monitor.show_charging_desc", + "editor.battery_monitor.show_pct", + "editor.battery_monitor.show_pct_desc", + "editor.battery_monitor.show_item_border", + "editor.battery_monitor.show_item_border_desc", + "editor.battery_monitor.max_items", + "editor.battery_monitor.max_items_desc", + "editor.battery_monitor.sort", + "editor.battery_monitor.sort_desc", + "editor.battery_monitor.sort_low", + "editor.battery_monitor.sort_high", + "editor.battery_monitor.sort_name", + "editor.battery_monitor.sort_raw", + "editor.battery_monitor.section_thresholds", + "editor.battery_monitor.critical", + "editor.battery_monitor.critical_desc", + "editor.battery_monitor.low", + "editor.battery_monitor.low_desc", + "editor.battery_monitor.only_low", + "editor.battery_monitor.only_low_desc", + "editor.battery_monitor.section_source", + "editor.battery_monitor.discovery_mode", + "editor.battery_monitor.discovery_mode_desc", + "editor.battery_monitor.mode_auto", + "editor.battery_monitor.mode_manual", + "editor.battery_monitor.mode_both", + "editor.battery_monitor.include_bl_attr", + "editor.battery_monitor.include_bl_attr_desc", + "editor.battery_monitor.include_bin", + "editor.battery_monitor.include_bin_desc", + "editor.battery_monitor.manual_entities", + "editor.battery_monitor.manual_entities_desc", + "editor.battery_monitor.add_entity", + "editor.battery_monitor.section_colors", + "editor.battery_monitor.color_critical", + "editor.battery_monitor.color_low", + "editor.battery_monitor.color_ok", + "editor.battery_monitor.color_charging", + "editor.battery_monitor.color_text", + "editor.battery_monitor.color_secondary", + "editor.battery_monitor.color_card_bg", + "editor.battery_monitor.exclude_patterns", + "editor.battery_monitor.exclude_patterns_desc", + "editor.battery_monitor.pattern_ph", + "editor.battery_monitor.hidden_entities", + "editor.battery_monitor.hidden_entities_desc", + "editor.battery_monitor.no_entity", + "editor.battery_monitor.entity", + "editor.battery_monitor.entity_desc", + "editor.battery_monitor.label_override", + "editor.battery_monitor.icon_override", + "editor.battery_monitor.row_color", + "editor.battery_monitor.err_ha", + "editor.battery_monitor.err_ha_desc", + "editor.battery_monitor.err_empty", + "editor.battery_monitor.err_empty_desc", + "editor.battery_monitor.default_title", + "editor.battery_monitor.preview_remove", + "editor.battery_monitor.strip_hint", + "editor.auto_entity_list.default_title", + "editor.auto_entity_list.section_style", + "editor.auto_entity_list.style_compact", + "editor.auto_entity_list.style_compact_desc", + "editor.auto_entity_list.style_detailed", + "editor.auto_entity_list.style_detailed_desc", + "editor.auto_entity_list.style_slim", + "editor.auto_entity_list.style_slim_desc", + "editor.auto_entity_list.style_card", + "editor.auto_entity_list.style_card_desc", + "editor.auto_entity_list.section_display", + "editor.auto_entity_list.title", + "editor.auto_entity_list.title_desc", + "editor.auto_entity_list.show_title", + "editor.auto_entity_list.show_title_desc", + "editor.auto_entity_list.show_icon", + "editor.auto_entity_list.show_icon_desc", + "editor.auto_entity_list.show_state", + "editor.auto_entity_list.show_state_desc", + "editor.auto_entity_list.show_last_changed", + "editor.auto_entity_list.show_last_changed_desc", + "editor.auto_entity_list.use_entity_color", + "editor.auto_entity_list.use_entity_color_desc", + "editor.auto_entity_list.section_card_size", + "editor.auto_entity_list.card_height", + "editor.auto_entity_list.card_height_desc", + "editor.auto_entity_list.card_width", + "editor.auto_entity_list.card_width_desc", + "editor.auto_entity_list.max_items", + "editor.auto_entity_list.max_items_desc", + "editor.auto_entity_list.row_gap", + "editor.auto_entity_list.row_gap_desc", + "editor.auto_entity_list.columns", + "editor.auto_entity_list.columns_desc", + "editor.auto_entity_list.sort_by", + "editor.auto_entity_list.sort_by_desc", + "editor.auto_entity_list.sort_name", + "editor.auto_entity_list.sort_last_changed", + "editor.auto_entity_list.sort_state", + "editor.auto_entity_list.sort_domain", + "editor.auto_entity_list.sort_direction", + "editor.auto_entity_list.sort_asc", + "editor.auto_entity_list.sort_desc_dir", + "editor.auto_entity_list.section_filters", + "editor.auto_entity_list.include_domains", + "editor.auto_entity_list.include_domains_desc", + "editor.auto_entity_list.include_domains_ph", + "editor.auto_entity_list.include_device_classes", + "editor.auto_entity_list.include_device_classes_desc", + "editor.auto_entity_list.include_device_classes_ph", + "editor.auto_entity_list.state_filter", + "editor.auto_entity_list.state_filter_desc", + "editor.auto_entity_list.include_keywords", + "editor.auto_entity_list.include_keywords_desc", + "editor.auto_entity_list.exclude_keywords", + "editor.auto_entity_list.exclude_keywords_desc", + "editor.auto_entity_list.keyword_ph", + "editor.auto_entity_list.show_unavailable", + "editor.auto_entity_list.show_unavailable_desc", + "editor.auto_entity_list.section_source", + "editor.auto_entity_list.pinned_entities", + "editor.auto_entity_list.pinned_entities_desc", + "editor.auto_entity_list.pin_entity", + "editor.auto_entity_list.pinned_add", + "editor.auto_entity_list.hidden_entities", + "editor.auto_entity_list.hidden_entities_desc", + "editor.auto_entity_list.hidden_add", + "editor.auto_entity_list.no_entity", + "editor.auto_entity_list.entity", + "editor.auto_entity_list.entity_desc", + "editor.auto_entity_list.overrides_for", + "editor.auto_entity_list.label_override", + "editor.auto_entity_list.icon_override", + "editor.auto_entity_list.row_color", + "editor.auto_entity_list.section_colors", + "editor.auto_entity_list.color_text", + "editor.auto_entity_list.color_secondary", + "editor.auto_entity_list.color_card_bg", + "editor.auto_entity_list.color_accent", + "editor.auto_entity_list.color_active", + "editor.auto_entity_list.color_inactive", + "editor.auto_entity_list.err_ha", + "editor.auto_entity_list.err_ha_desc", + "editor.auto_entity_list.err_empty", + "editor.auto_entity_list.err_empty_desc", + "editor.auto_entity_list.preview_remove", + "editor.area_summary.validate_area", + "editor.area_summary.room", + "editor.area_summary.no_climate", + "editor.area_summary.section_area", + "editor.area_summary.section_area_desc", + "editor.area_summary.area", + "editor.area_summary.area_desc", + "editor.area_summary.area_loading", + "editor.area_summary.area_error", + "editor.area_summary.title", + "editor.area_summary.title_desc", + "editor.area_summary.room_icon", + "editor.area_summary.room_icon_desc", + "editor.area_summary.temperature_entity", + "editor.area_summary.temperature_entity_desc", + "editor.area_summary.humidity_entity", + "editor.area_summary.humidity_entity_desc", + "editor.area_summary.accent", + "editor.area_summary.accent_desc", + "editor.area_summary.section_look", + "editor.area_summary.section_look_desc", + "editor.area_summary.preset_desc", + "editor.area_summary.max_quick", + "editor.area_summary.max_quick_desc", + "editor.area_summary.tile_radius", + "editor.area_summary.tile_radius_desc", + "editor.area_summary.show_entity_names", + "editor.area_summary.show_entity_names_desc", + "editor.area_summary.room_bg_type", + "editor.area_summary.room_bg_type_desc", + "editor.area_summary.room_bg_none", + "editor.area_summary.room_bg_upload", + "editor.area_summary.room_bg_entity", + "editor.area_summary.room_bg_url", + "editor.area_summary.room_bg_url_section", + "editor.area_summary.room_bg_image_url", + "editor.area_summary.room_bg_image_url_desc", + "editor.area_summary.room_bg_upload_section", + "editor.area_summary.room_bg_upload_btn", + "editor.area_summary.room_bg_upload_btn_desc", + "editor.area_summary.room_bg_uploaded", + "editor.area_summary.room_bg_upload_error", + "editor.area_summary.room_bg_entity_section", + "editor.area_summary.room_bg_entity_label", + "editor.area_summary.room_bg_entity_help", + "editor.area_summary.bg_overlay", + "editor.area_summary.bg_overlay_desc", + "editor.area_summary.section_discovery", + "editor.area_summary.section_discovery_desc", + "editor.area_summary.disc_lights", + "editor.area_summary.disc_lights_d", + "editor.area_summary.disc_climate", + "editor.area_summary.disc_climate_d", + "editor.area_summary.disc_temp", + "editor.area_summary.disc_temp_d", + "editor.area_summary.disc_hum", + "editor.area_summary.disc_hum_d", + "editor.area_summary.disc_motion", + "editor.area_summary.disc_motion_d", + "editor.area_summary.disc_dw", + "editor.area_summary.disc_dw_d", + "editor.area_summary.disc_media", + "editor.area_summary.disc_media_d", + "editor.area_summary.disc_presence", + "editor.area_summary.disc_presence_d", + "editor.area_summary.disc_covers", + "editor.area_summary.disc_covers_d", + "editor.area_summary.disc_fans", + "editor.area_summary.disc_fans_d", + "editor.area_summary.disc_locks", + "editor.area_summary.disc_locks_d", + "editor.area_summary.disc_switches", + "editor.area_summary.disc_switches_d", + "editor.area_summary.section_pin", + "editor.area_summary.section_pin_desc", + "editor.area_summary.pinned", + "editor.area_summary.pinned_desc", + "editor.area_summary.pinned_add", + "editor.area_summary.hidden", + "editor.area_summary.hidden_desc", + "editor.area_summary.hidden_add", + "editor.area_summary.registry_error", + "editor.area_summary.pick_area", + "editor.area_summary.pick_area_desc", + "editor.area_summary.resolve_error", + "editor.area_summary.retry", + "editor.area_summary.pill_lights", + "editor.area_summary.lights_line", + "editor.area_summary.preset_label", + "editor.area_summary.preset.iconic_soft", + "editor.area_summary.preset.graph_glow", + "editor.area_summary.preset.compact_controls", + "editor.area_summary.preset.photo_overlay", + "editor.activity_feed.error_waiting_ha", + "editor.activity_feed.error_waiting_ha_desc", + "editor.activity_feed.error_no_activity", + "editor.activity_feed.error_no_activity_desc", + "editor.activity_feed.preview.title_fallback", + "editor.media_player.section_entity", + "editor.media_player.section_entity_desc", + "editor.media_player.entity", + "editor.media_player.section_layout", + "editor.media_player.section_layout_desc", + "editor.media_player.section_display", + "editor.media_player.section_display_desc", + "editor.media_player.section_behavior", + "editor.media_player.section_behavior_desc", + "editor.media_player.section_visual", + "editor.media_player.section_visual_desc", + "editor.media_player.error_no_entity", + "editor.media_player.error_no_entity_desc", + "editor.slider_control.error_no_bars", + "editor.slider_control.error_no_bars_desc", + "editor.slider_control.error_need_entities", + "editor.vacuum.section_entity", + "editor.vacuum.section_entity_desc", + "editor.vacuum.entity", + "editor.vacuum.name", + "editor.vacuum.name_desc", + "editor.vacuum.section_animations", + "editor.vacuum.section_animations_desc", + "editor.navigation.section_desktop", + "editor.navigation.section_desktop_desc", + "editor.navigation.section_mobile", + "editor.navigation.section_mobile_desc", + "editor.navigation.section_haptics", + "editor.navigation.section_haptics_desc", + "editor.navigation.section_collapse", + "editor.navigation.section_collapse_desc", + "editor.navigation.collapse_enable", + "editor.navigation.collapse_enable_desc", + "editor.navigation.collapse_mode", + "editor.navigation.collapse_mode_desc", + "editor.navigation.collapse_mode_handle", + "editor.navigation.collapse_mode_rail", + "editor.navigation.collapse_mode_scroll", + "editor.navigation.start_collapsed", + "editor.navigation.start_collapsed_desc", + "editor.navigation.remember_state", + "editor.navigation.remember_state_desc", + "editor.navigation.handle_icon", + "editor.navigation.handle_icon_desc", + "editor.navigation.handle_size", + "editor.navigation.handle_size_desc", + "editor.navigation.handle_position", + "editor.navigation.handle_position_desc", + "editor.navigation.rail_size", + "editor.navigation.rail_size_desc", + "editor.navigation.backdrop", + "editor.navigation.backdrop_desc", + "editor.navigation.close_on_navigate", + "editor.navigation.close_on_navigate_desc", + "editor.navigation.scroll_threshold", + "editor.navigation.scroll_threshold_desc", + "editor.navigation.autohide_enable", + "editor.navigation.autohide_enable_desc", + "editor.navigation.autohide_delay", + "editor.navigation.autohide_delay_desc", + "editor.navigation.autohide_disabled_by_collapse", + "editor.climate.entity_config_title", + "editor.climate.entity_config_desc", + "editor.climate.entity", + "editor.climate.error_no_entity", + "editor.climate.error_no_entity_desc", + "editor.climate.error_not_found", + "editor.energy_display.error_no_nodes", + "editor.energy_display.error_no_nodes_desc", + "editor.people.error_no_entity", + "editor.people.error_no_entity_desc", + "editor.people.error_not_found", + "editor.virtual_pet.error_waiting_ha", + "editor.virtual_pet.error_waiting_ha_desc", + "editor.calendar.error_no_calendars", + "editor.calendar.error_no_calendars_desc", + "editor.dynamic_list.error_waiting_ha", + "editor.dynamic_list.error_waiting_ha_desc", + "editor.dynamic_list.error_no_todo", + "editor.dynamic_list.error_no_todo_desc", + "editor.dynamic_list.error_no_todo_entity_desc", + "editor.dynamic_list.error_add_template", + "editor.dynamic_list.error_add_template_todo_desc", + "editor.dynamic_list.error_invalid_template", + "editor.dynamic_list.error_invalid_template_desc", + "editor.dynamic_list.error_configure_action", + "editor.dynamic_list.error_configure_action_desc", + "editor.dynamic_list.error_add_template_action_desc", + "editor.dynamic_list.error_invalid_template_action_desc", + "editor.dynamic_list.error_add_jinja_template", + "editor.dynamic_list.error_add_jinja_template_desc", + "editor.dynamic_list.error_invalid_template_jinja_desc", + "editor.light.section_presets", + "editor.light.section_presets_desc", + "editor.light.add_preset", + "editor.light.section_layout", + "editor.light.section_wrapping", + "editor.light.section_wrapping_desc", + "editor.light.section_import_export", + "editor.light.section_import_export_desc", + "editor.light.section_advanced", + "editor.light.section_advanced_desc", + "editor.accordion.preview.title_fallback", + "editor.animated_forecast.preview.no_data", + "editor.animated_forecast.icon_style_fill", + "editor.animated_forecast.icon_style_line", + "editor.animated_weather.entity_section", + "editor.animated_weather.entity", + "editor.animated_weather.layout_section", + "editor.animated_weather.layout_spread", + "editor.animated_weather.layout_spread_desc", + "editor.animated_weather.left_column_gap", + "editor.animated_weather.left_column_gap_desc", + "editor.animated_weather.right_column_gap", + "editor.animated_weather.right_column_gap_desc", + "editor.animated_weather.icon_section", + "editor.animated_weather.icon_size", + "editor.animated_weather.icon_size_desc", + "editor.animated_weather.icon_style", + "editor.animated_weather.icon_style_filled", + "editor.animated_weather.icon_style_outlined", + "editor.animated_weather.column_items_section", + "editor.animated_weather.column_items_desc", + "editor.animated_weather.left_column", + "editor.animated_weather.right_column", + "editor.animated_weather.item_size", + "editor.animated_weather.item_color", + "editor.status_summary.title_display", + "editor.status_summary.title", + "editor.status_summary.title_desc", + "editor.status_summary.show_title", + "editor.status_summary.show_title_desc", + "editor.status_summary.show_last_change_header", + "editor.status_summary.show_last_change_header_desc", + "editor.status_summary.show_time_header", + "editor.status_summary.show_time_header_desc", + "editor.status_summary.sort_by", + "editor.status_summary.sort_by_desc", + "editor.status_summary.sort_direction", + "editor.status_summary.sort_direction_desc", + "editor.status_summary.max_items_to_show", + "editor.status_summary.max_items_to_show_desc", + "editor.status_summary.global_display_settings", + "editor.status_summary.global_display_settings_desc", + "editor.status_summary.global_show_icon", + "editor.status_summary.global_show_icon_desc", + "editor.status_summary.global_show_state", + "editor.status_summary.global_show_state_desc", + "editor.status_summary.entity_management", + "editor.status_summary.add_entity", + "editor.status_summary.auto_filter", + "editor.status_summary.enable_auto_filter", + "editor.status_summary.enable_auto_filter_desc", + "editor.status_summary.include_filters", + "editor.status_summary.include_filters_desc", + "editor.status_summary.exclude_filters", + "editor.status_summary.exclude_filters_desc", + "editor.status_summary.global_color_mode", + "editor.status_summary.global_color_mode_desc", + "editor.status_summary.global_color_mode_select", + "editor.status_summary.global_color_mode_select_desc", + "editor.status_summary.global_unified_color_desc", + "editor.status_summary.time_filtering", + "editor.status_summary.max_time_since_change", + "editor.status_summary.layout", + "editor.status_summary.row_height", + "editor.status_summary.row_height_desc", + "editor.status_summary.row_gap", + "editor.status_summary.row_gap_desc", + "editor.status_summary.max_entity_name_length", + "editor.status_summary.max_entity_name_length_desc", + "editor.status_summary.show_separator_lines", + "editor.status_summary.show_separator_lines_desc", + "editor.status_summary.default_colors", + "editor.status_summary.default_text_color", + "editor.status_summary.default_icon_color", + "editor.status_summary.header_text_color", + "editor.status_summary.header_background_color", + "editor.status_summary.entity", + "editor.status_summary.entity_desc", + "editor.status_summary.label", + "editor.status_summary.label_desc", + "editor.status_summary.icon", + "editor.status_summary.icon_desc", + "editor.status_summary.show_icon", + "editor.status_summary.show_icon_desc", + "editor.status_summary.show_state", + "editor.status_summary.show_state_desc", + "editor.status_summary.color_mode", + "editor.status_summary.color_mode_desc", + "editor.status_summary.entity_unified_color_desc", + "editor.status_summary.global_state_colors", + "editor.status_summary.add_state_color", + "editor.status_summary.global_time_thresholds", + "editor.status_summary.add_time_threshold", + "editor.status_summary.state_colors", + "editor.status_summary.time_thresholds", + "editor.status_summary.max_time_since_change_desc", + "editor.status_summary.template_cheatsheet", + "editor.lunar_phase.pro_description", + "editor.lunar_phase.config_needed", + "editor.lunar_phase.config_needed_desc", + "editor.lunar_phase.location_section", + "editor.lunar_phase.location_section_desc", + "editor.lunar_phase.location_source", + "editor.lunar_phase.location_source_desc", + "editor.lunar_phase.location_default", + "editor.lunar_phase.location_entity_opt", + "editor.lunar_phase.location_custom", + "editor.lunar_phase.location_entity_group", + "editor.lunar_phase.location_entity", + "editor.lunar_phase.location_custom_group", + "editor.lunar_phase.latitude", + "editor.lunar_phase.latitude_desc", + "editor.lunar_phase.longitude", + "editor.lunar_phase.longitude_desc", + "editor.lunar_phase.southern_hemisphere", + "editor.lunar_phase.southern_hemisphere_desc", + "editor.lunar_phase.layout_section", + "editor.lunar_phase.layout_section_desc", + "editor.lunar_phase.default_view", + "editor.lunar_phase.default_view_desc", + "editor.lunar_phase.view_phase", + "editor.lunar_phase.view_calendar", + "editor.lunar_phase.view_horizon", + "editor.lunar_phase.layout", + "editor.lunar_phase.layout_desc", + "editor.lunar_phase.layout_full", + "editor.lunar_phase.layout_compact", + "editor.lunar_phase.layout_minimal", + "editor.lunar_phase.layout_moon_only", + "editor.lunar_phase.moon_position", + "editor.lunar_phase.moon_position_desc", + "editor.lunar_phase.position_left", + "editor.lunar_phase.position_right", + "editor.lunar_phase.moon_size", + "editor.lunar_phase.moon_size_desc", + "editor.lunar_phase.items_per_page", + "editor.lunar_phase.items_per_page_desc", + "editor.lunar_phase.show_view_switcher", + "editor.lunar_phase.show_view_switcher_desc", + "editor.lunar_phase.show_date_nav", + "editor.lunar_phase.show_date_nav_desc", + "editor.lunar_phase.data_section", + "editor.lunar_phase.data_section_desc", + "editor.lunar_phase.hidden_items", + "editor.lunar_phase.hidden_items_desc", + "editor.lunar_phase.hide_item_add", + "editor.lunar_phase.number_decimals", + "editor.lunar_phase.number_decimals_desc", + "editor.lunar_phase.use_miles", + "editor.lunar_phase.use_miles_desc", + "editor.lunar_phase.time_12hr", + "editor.lunar_phase.time_12hr_desc", + "editor.lunar_phase.graph_section", + "editor.lunar_phase.graph_section_desc", + "editor.lunar_phase.graph_mode", + "editor.lunar_phase.graph_mode_desc", + "editor.lunar_phase.graph_today", + "editor.lunar_phase.graph_dynamic", + "editor.lunar_phase.graph_show_time", + "editor.lunar_phase.graph_show_time_desc", + "editor.lunar_phase.graph_show_current", + "editor.lunar_phase.graph_show_current_desc", + "editor.lunar_phase.graph_show_highest", + "editor.lunar_phase.graph_show_highest_desc", + "editor.lunar_phase.graph_x_ticks", + "editor.lunar_phase.graph_x_ticks_desc", + "editor.lunar_phase.graph_y_ticks", + "editor.lunar_phase.graph_y_ticks_desc", + "editor.lunar_phase.appearance_section", + "editor.lunar_phase.appearance_section_desc", + "editor.lunar_phase.background_style", + "editor.lunar_phase.background_style_desc", + "editor.lunar_phase.bg_night_sky", + "editor.lunar_phase.bg_theme", + "editor.lunar_phase.bg_custom", + "editor.lunar_phase.bg_transparent", + "editor.lunar_phase.custom_bg_group", + "editor.lunar_phase.custom_background", + "editor.lunar_phase.custom_background_desc", + "editor.lunar_phase.show_starfield", + "editor.lunar_phase.show_starfield_desc", + "editor.lunar_phase.show_compact_labels", + "editor.lunar_phase.show_compact_labels_desc", + "editor.lunar_phase.header_font_size", + "editor.lunar_phase.header_font_size_desc", + "editor.lunar_phase.header_text_transform", + "editor.lunar_phase.header_text_transform_desc", + "editor.lunar_phase.header_color", + "editor.lunar_phase.header_color_desc", + "editor.lunar_phase.label_font_size", + "editor.lunar_phase.label_font_size_desc", + "editor.lunar_phase.label_text_transform", + "editor.lunar_phase.label_text_transform_desc", + "editor.lunar_phase.label_color", + "editor.lunar_phase.label_color_desc", + "editor.lunar_phase.accent_color", + "editor.lunar_phase.accent_color_desc", + "editor.lunar_phase.font_auto", + "editor.lunar_phase.font_small", + "editor.lunar_phase.font_medium", + "editor.lunar_phase.font_large", + "editor.lunar_phase.font_x_large", + "editor.lunar_phase.font_xx_large", + "editor.lunar_phase.transform_none", + "editor.lunar_phase.transform_capitalize", + "editor.lunar_phase.transform_uppercase", + "editor.lunar_phase.transform_lowercase", + "editor.lunar_phase.today", + "editor.lunar_phase.back_to_today", + "editor.lunar_phase.prev_day", + "editor.lunar_phase.next_day", + "editor.lunar_phase.prev_month", + "editor.lunar_phase.next_month", + "editor.lunar_phase.collapse", + "editor.lunar_phase.days", + "editor.lunar_phase.age_short", + "editor.lunar_phase.rise_short", + "editor.lunar_phase.set_short", + "editor.lunar_phase.over_horizon", + "editor.lunar_phase.under_horizon", + "editor.lunar_phase.items.moon_age", + "editor.lunar_phase.items.illumination", + "editor.lunar_phase.items.azimuth", + "editor.lunar_phase.items.altitude", + "editor.lunar_phase.items.distance", + "editor.lunar_phase.items.position", + "editor.lunar_phase.items.moonrise", + "editor.lunar_phase.items.moonset", + "editor.lunar_phase.items.moon_highest", + "editor.lunar_phase.items.next_full_moon", + "editor.lunar_phase.items.next_new_moon", + "editor.lunar_phase.items.next_phase", + "editor.lunar_phase.phases.new_moon", + "editor.lunar_phase.phases.waxing_crescent", + "editor.lunar_phase.phases.first_quarter", + "editor.lunar_phase.phases.waxing_gibbous", + "editor.lunar_phase.phases.full_moon", + "editor.lunar_phase.phases.waning_gibbous", + "editor.lunar_phase.phases.last_quarter", + "editor.lunar_phase.phases.waning_crescent", + "editor.qr_code.content_title", + "editor.qr_code.content_title_desc", + "editor.qr_code.content_mode", + "editor.qr_code.content_mode_desc", + "editor.qr_code.static", + "editor.qr_code.unified_template", + "editor.qr_code.entity", + "editor.qr_code.static_content", + "editor.qr_code.static_desc", + "editor.qr_code.unified_template_desc", + "editor.qr_code.entity_picker", + "editor.qr_code.entity_picker_desc", + "editor.qr_code.attribute", + "editor.qr_code.attribute_desc", + "editor.qr_code.display_title", + "editor.qr_code.alignment", + "editor.qr_code.align_left", + "editor.qr_code.align_center", + "editor.qr_code.align_right", + "editor.qr_code.show_label", + "editor.qr_code.size", + "editor.qr_code.size_desc", + "editor.qr_code.label_text", + "editor.qr_code.label_below", + "editor.qr_code.style_title", + "editor.qr_code.dot_style", + "editor.qr_code.dot_style_desc", + "editor.qr_code.dot_square", + "editor.qr_code.dot_dots", + "editor.qr_code.dot_rounded", + "editor.qr_code.dot_extra_rounded", + "editor.qr_code.dot_classy", + "editor.qr_code.dot_classy_rounded", + "editor.qr_code.corner_square_style", + "editor.qr_code.corner_square_desc", + "editor.qr_code.cs_square", + "editor.qr_code.cs_dot", + "editor.qr_code.cs_extra_rounded", + "editor.qr_code.corner_dot_style", + "editor.qr_code.corner_dot_desc", + "editor.qr_code.cd_square", + "editor.qr_code.cd_dot", + "editor.qr_code.logo_title", + "editor.qr_code.logo_enabled", + "editor.qr_code.logo_image_type", + "editor.qr_code.logo_image_type_desc", + "editor.qr_code.logo_source_url", + "editor.qr_code.logo_source_upload", + "editor.qr_code.logo_source_entity", + "editor.qr_code.logo_source_attribute", + "editor.qr_code.logo_url", + "editor.qr_code.logo_url_desc", + "editor.qr_code.cors_title", + "editor.qr_code.cors_hint", + "editor.qr_code.logo_upload_label", + "editor.qr_code.logo_upload_desc", + "editor.qr_code.logo_uploaded", + "editor.qr_code.logo_entity", + "editor.qr_code.logo_attribute", + "editor.qr_code.logo_attribute_desc", + "editor.qr_code.logo_size", + "editor.qr_code.logo_size_desc", + "editor.qr_code.logo_margin", + "editor.qr_code.logo_margin_desc", + "editor.qr_code.logo_ec_tip_title", + "editor.qr_code.logo_ec_tip", + "editor.qr_code.logo_hide_bg_dots", + "editor.qr_code.advanced_title", + "editor.qr_code.fg_color", + "editor.qr_code.bg_color", + "editor.qr_code.error_correction", + "editor.qr_code.error_correction_desc", + "editor.qr_code.quiet_zone", + "editor.qr_code.quiet_zone_desc", + "editor.qr_code.pro_description", + "editor.qr_code.no_content", + "editor.qr_code.generating", + "editor.qr_code.cors_error", + "editor.qr_code.unified_cheatsheet", + "editor.onboarding.title", + "editor.onboarding.subtitle", + "editor.onboarding.dismiss", + "editor.onboarding.step_add_row", + "editor.onboarding.step_add_module", + "editor.onboarding.step_pick_entity", + "editor.onboarding.step_preview_breakpoints", + "editor.onboarding.action_add_row", + "editor.onboarding.action_add_module", + "editor.onboarding.action_pick_entity", + "editor.onboarding.action_preview_breakpoints", + "editor.onboarding.action_preset", + "editor.health.title", + "editor.health.close", + "editor.health.healthy", + "editor.health.jump", + "editor.health.open_connect", + "editor.health.badge_ok", + "editor.health.badge_issues", + "editor.health.tooltip", + "editor.health.connect_not_installed", + "editor.health.connect_not_authenticated", + "editor.health.connect_needs_reauth", + "editor.health.connect_needs_update", + "editor.smart.title", + "editor.smart.subtitle", + "editor.smart.refresh", + "editor.smart.assist_ready", + "editor.smart.assist_not_ready", + "editor.smart.pro_modules", + "editor.smart.free_modules", + "editor.smart.used", + "editor.smart.connector_ha_assist", + "editor.smart.generating", + "editor.smart.setup_assist_title", + "editor.smart.setup_assist_body", + "editor.smart.open_assist", + "editor.smart.free_quota", + "editor.smart.remaining", + "editor.smart.quota_exhausted", + "editor.smart.upgrade", + "editor.smart.unlimited", + "editor.smart.ai_provider", + "editor.smart.ai_task", + "editor.smart.conversation_agent", + "editor.smart.prompt_label", + "editor.smart.prompt_placeholder", + "editor.smart.generate", + "editor.smart.generating_btn", + "editor.smart.add", + "editor.smart.regenerate", + "editor.smart.preview_unavailable", + "editor.smart.preview_aria", + "editor.smart.preview_fallback_aria", + "editor.smart.step_status", + "editor.smart.step_compose", + "editor.smart.step_preview", + "editor.smart.step_apply", + "editor.smart.back", + "editor.smart.continue", + "editor.smart.apply_preset", + "editor.smart.warnings_title", + "editor.smart.no_results", + "editor.smart.load_failed", + "editor.smart.generate_failed", + "editor.dog_duty.pro_description", + "editor.dog_duty.entities_section", + "editor.dog_duty.entities_section_desc", + "editor.dog_duty.camera", + "editor.dog_duty.camera_desc", + "editor.dog_duty.extra_cameras", + "editor.dog_duty.extra_cameras_desc", + "editor.dog_duty.cameras_layout", + "editor.dog_duty.cameras_layout_desc", + "editor.dog_duty.layout_stack", + "editor.dog_duty.layout_grid", + "editor.dog_duty.todo", + "editor.dog_duty.todo_desc", + "editor.dog_duty.todo_no_description", + "editor.dog_duty.trigger", + "editor.dog_duty.trigger_desc", + "editor.dog_duty.scan_mode_section", + "editor.dog_duty.scan_mode_section_desc", + "editor.dog_duty.mode_active", + "editor.dog_duty.mode_sensor", + "editor.dog_duty.mode_sensor_desc", + "editor.dog_duty.mode_scheduled", + "editor.dog_duty.mode_scheduled_desc", + "editor.dog_duty.mode_manual", + "editor.dog_duty.mode_manual_desc", + "editor.dog_duty.scan_interval", + "editor.dog_duty.scan_interval_desc", + "editor.dog_duty.active_hours", + "editor.dog_duty.active_hours_desc", + "editor.dog_duty.scan_mode_reapply", + "editor.dog_duty.wizard_mode_sensor", + "editor.dog_duty.wizard_mode_scheduled", + "editor.dog_duty.minutes", + "editor.dog_duty.hour", + "editor.dog_duty.hours", + "editor.dog_duty.provider_section", + "editor.dog_duty.provider_section_desc", + "editor.dog_duty.provider", + "editor.dog_duty.provider_desc", + "editor.dog_duty.provider_manual", + "editor.dog_duty.provider_manual_desc", + "editor.dog_duty.no_provider", + "editor.dog_duty.display_section", + "editor.dog_duty.display_section_desc", + "editor.dog_duty.title", + "editor.dog_duty.title_desc", + "editor.dog_duty.show_title", + "editor.dog_duty.show_status_bar", + "editor.dog_duty.show_scrubber", + "editor.dog_duty.show_scan_now", + "editor.dog_duty.show_cleaned", + "editor.dog_duty.show_cleaned_desc", + "editor.dog_duty.show_heatmap", + "editor.dog_duty.show_heatmap_desc", + "editor.dog_duty.map_section", + "editor.dog_duty.lookback", + "editor.dog_duty.lookback_desc", + "editor.dog_duty.marker_style", + "editor.dog_duty.marker_x", + "editor.dog_duty.marker_emoji", + "editor.dog_duty.marker_pin", + "editor.dog_duty.background_mode", + "editor.dog_duty.background_mode_desc", + "editor.dog_duty.bg_live", + "editor.dog_duty.bg_reference", + "editor.dog_duty.reference_image", + "editor.dog_duty.reference_image_desc", + "editor.dog_duty.cooldown", + "editor.dog_duty.cooldown_desc", + "editor.dog_duty.detection_section", + "editor.dog_duty.detection_section_desc", + "editor.dog_duty.automation_update_hint", + "editor.dog_duty.update_automation", + "editor.dog_duty.sensitivity", + "editor.dog_duty.sensitivity_desc", + "editor.dog_duty.sensitivity_strict", + "editor.dog_duty.sensitivity_balanced", + "editor.dog_duty.sensitivity_lenient", + "editor.dog_duty.detect_squatting", + "editor.dog_duty.detect_squatting_desc", + "editor.dog_duty.min_confidence", + "editor.dog_duty.min_confidence_desc", + "editor.dog_duty.extra_tips", + "editor.dog_duty.extra_tips_placeholder", + "editor.dog_duty.extra_tips_desc", + "editor.dog_duty.example_photos", + "editor.dog_duty.example_photos_desc", + "editor.dog_duty.example_photo_n", + "editor.dog_duty.detect_zone", + "editor.dog_duty.detect_zone_desc", + "editor.dog_duty.detect_zone_edit", + "editor.dog_duty.detect_zone_done", + "editor.dog_duty.detect_zone_reset", + "editor.dog_duty.detect_zone_drag", + "editor.dog_duty.detect_zone_set", + "editor.dog_duty.wizard_title", + "editor.dog_duty.wizard_desc", + "editor.dog_duty.wizard_step1", + "editor.dog_duty.wizard_step1_desc", + "editor.dog_duty.setup_guide_title", + "editor.dog_duty.setup_guide_1", + "editor.dog_duty.setup_guide_2", + "editor.dog_duty.setup_guide_3", + "editor.dog_duty.setup_guide_4", + "editor.dog_duty.setup_guide_5", + "editor.dog_duty.setup_guide_invalid_model", + "editor.dog_duty.provider_auto_selected", + "editor.dog_duty.setup_docs", + "editor.dog_duty.providers_count", + "editor.dog_duty.wizard_step2", + "editor.dog_duty.wizard_step2_desc", + "editor.dog_duty.wizard_step3", + "editor.dog_duty.wizard_step3_desc", + "editor.dog_duty.wizard_step4", + "editor.dog_duty.wizard_step4_desc", + "editor.dog_duty.checking", + "editor.dog_duty.check_prereqs", + "editor.dog_duty.llm_found", + "editor.dog_duty.llm_missing", + "editor.dog_duty.provider_missing", + "editor.dog_duty.continue", + "editor.dog_duty.back", + "editor.dog_duty.creating", + "editor.dog_duty.create_automation", + "editor.dog_duty.scanning", + "editor.dog_duty.run_test", + "editor.dog_duty.finish", + "editor.dog_duty.setup_done", + "editor.dog_duty.todo_manual_hint", + "editor.dog_duty.need_provider", + "editor.dog_duty.automation_created", + "editor.dog_duty.automation_failed", + "editor.dog_duty.test_found", + "editor.dog_duty.test_none", + "editor.dog_duty.default_title", + "editor.dog_duty.chip_active", + "editor.dog_duty.chip_week", + "editor.dog_duty.heatmap", + "editor.dog_duty.heatmap_toggle", + "editor.dog_duty.scan_now", + "editor.dog_duty.scan_found", + "editor.dog_duty.scan_none", + "editor.dog_duty.no_camera", + "editor.dog_duty.no_events", + "editor.dog_duty.no_events_short", + "editor.dog_duty.setup_hint", + "editor.dog_duty.marker", + "editor.dog_duty.confidence", + "editor.dog_duty.cleaned", + "editor.dog_duty.mark_cleaned", + "editor.dog_duty.mark_active", + "editor.dog_duty.false_alarm", + "editor.dog_duty.now", + "editor.dog_duty.scrubber", + "editor.dog_duty.live", + "editor.dog_duty.scrub_live_desc", + "editor.dog_duty.scrub_events", + "editor.dog_duty.return_to_live", + "editor.dog_duty.reopen_wizard", + "editor.dog_duty.chip_active_title", + "editor.dog_duty.chip_week_title", + "editor.dog_duty.list_active_title", + "editor.dog_duty.list_week_title", + "editor.dog_duty.list_empty", + "editor.dog_duty.sort_time", + "editor.dog_duty.sort_camera", + "editor.dog_duty.sort_confidence", + "editor.dog_duty.sort_status", + "editor.dog_duty.placement", + "editor.dog_duty.status_active", + "editor.cleaning_zones.add_first_desc", + "editor.cleaning_zones.add_first_title", + "editor.cleaning_zones.add_zone", + "editor.cleaning_zones.advanced_section", + "editor.cleaning_zones.all_clear", + "editor.cleaning_zones.auto_clean_desc", + "editor.cleaning_zones.auto_clean_entity", + "editor.cleaning_zones.auto_clean_group", + "editor.cleaning_zones.auto_clean_state", + "editor.cleaning_zones.auto_clean_state_desc", + "editor.cleaning_zones.card_background_color", + "editor.cleaning_zones.collapse", + "editor.cleaning_zones.colors_section", + "editor.cleaning_zones.confirm_short", + "editor.cleaning_zones.days_ago", + "editor.cleaning_zones.days_short", + "editor.cleaning_zones.default_interval", + "editor.cleaning_zones.default_interval_desc", + "editor.cleaning_zones.default_title", + "editor.cleaning_zones.delete_zone", + "editor.cleaning_zones.display_section", + "editor.cleaning_zones.draw_too_small", + "editor.cleaning_zones.due_color", + "editor.cleaning_zones.due_in", + "editor.cleaning_zones.due_today", + "editor.cleaning_zones.due_tomorrow", + "editor.cleaning_zones.edit", + "editor.cleaning_zones.floorplan_image", + "editor.cleaning_zones.floorplan_image_desc", + "editor.cleaning_zones.floorplan_section", + "editor.cleaning_zones.floorplan_section_desc", + "editor.cleaning_zones.fresh_color", + "editor.cleaning_zones.fresh_count", + "editor.cleaning_zones.history_limit", + "editor.cleaning_zones.history_limit_desc", + "editor.cleaning_zones.interval_label", + "editor.cleaning_zones.last_by", + "editor.cleaning_zones.legend_due", + "editor.cleaning_zones.legend_fresh", + "editor.cleaning_zones.legend_overdue", + "editor.cleaning_zones.loading", + "editor.cleaning_zones.log_auto", + "editor.cleaning_zones.log_clean", + "editor.cleaning_zones.log_cleaner", + "editor.cleaning_zones.log_cleaner_desc", + "editor.cleaning_zones.logged_clean", + "editor.cleaning_zones.mark_clean", + "editor.cleaning_zones.move_down", + "editor.cleaning_zones.move_up", + "editor.cleaning_zones.needs_attention", + "editor.cleaning_zones.never_cleaned", + "editor.cleaning_zones.new_zone_name", + "editor.cleaning_zones.no_history", + "editor.cleaning_zones.no_zones_editor", + "editor.cleaning_zones.overdue_by", + "editor.cleaning_zones.overdue_color", + "editor.cleaning_zones.overdue_grace", + "editor.cleaning_zones.overdue_grace_desc", + "editor.cleaning_zones.person_entity", + "editor.cleaning_zones.person_entity_desc", + "editor.cleaning_zones.placement_hint", + "editor.cleaning_zones.placement_needs_image", + "editor.cleaning_zones.pos_h", + "editor.cleaning_zones.pos_w", + "editor.cleaning_zones.pos_x", + "editor.cleaning_zones.pos_y", + "editor.cleaning_zones.pro_description", + "editor.cleaning_zones.require_confirm", + "editor.cleaning_zones.require_confirm_desc", + "editor.cleaning_zones.rotate_handle", + "editor.cleaning_zones.row_every_days", + "editor.cleaning_zones.secondary_text_color", + "editor.cleaning_zones.setup_desc", + "editor.cleaning_zones.setup_title", + "editor.cleaning_zones.show_legend", + "editor.cleaning_zones.show_summary_bar", + "editor.cleaning_zones.show_summary_bar_desc", + "editor.cleaning_zones.show_title", + "editor.cleaning_zones.show_zone_labels", + "editor.cleaning_zones.show_zone_labels_desc", + "editor.cleaning_zones.sort_interval", + "editor.cleaning_zones.sort_mode", + "editor.cleaning_zones.sort_mode_desc", + "editor.cleaning_zones.sort_name", + "editor.cleaning_zones.sort_staleness", + "editor.cleaning_zones.staleness_style", + "editor.cleaning_zones.staleness_style_desc", + "editor.cleaning_zones.storage_help", + "editor.cleaning_zones.storage_section", + "editor.cleaning_zones.style_badge", + "editor.cleaning_zones.style_heat", + "editor.cleaning_zones.style_outline", + "editor.cleaning_zones.text_color", + "editor.cleaning_zones.title", + "editor.cleaning_zones.title_desc", + "editor.cleaning_zones.today", + "editor.cleaning_zones.todo_entity", + "editor.cleaning_zones.todo_entity_desc", + "editor.cleaning_zones.todo_no_description", + "editor.cleaning_zones.undo", + "editor.cleaning_zones.unit_days", + "editor.cleaning_zones.unit_degrees", + "editor.cleaning_zones.unnamed_zone", + "editor.cleaning_zones.use_default_interval", + "editor.cleaning_zones.view_both", + "editor.cleaning_zones.view_list", + "editor.cleaning_zones.view_map", + "editor.cleaning_zones.view_mode", + "editor.cleaning_zones.view_mode_desc", + "editor.cleaning_zones.worst_zone", + "editor.cleaning_zones.yesterday", + "editor.cleaning_zones.zone_color", + "editor.cleaning_zones.zone_color_desc", + "editor.cleaning_zones.zone_icon", + "editor.cleaning_zones.zone_icon_desc", + "editor.cleaning_zones.zone_interval", + "editor.cleaning_zones.zone_interval_desc", + "editor.cleaning_zones.zone_name", + "editor.cleaning_zones.zone_name_desc", + "editor.cleaning_zones.zone_notes", + "editor.cleaning_zones.zone_notes_desc", + "editor.cleaning_zones.zone_opacity", + "editor.cleaning_zones.zone_opacity_desc", + "editor.cleaning_zones.zone_position", + "editor.cleaning_zones.zone_position_desc", + "editor.cleaning_zones.zone_rotation", + "editor.cleaning_zones.zone_rotation_desc", + "editor.cleaning_zones.zones_section", + "editor.cleaning_zones.zones_section_desc", + "editor.battery_fleet.add_entity", + "editor.battery_fleet.all_clear", + "editor.battery_fleet.all_clear_desc", + "editor.battery_fleet.area_add", + "editor.battery_fleet.area_filter", + "editor.battery_fleet.area_filter_desc", + "editor.battery_fleet.color_card_bg", + "editor.battery_fleet.color_card_bg_desc", + "editor.battery_fleet.color_charging", + "editor.battery_fleet.color_charging_desc", + "editor.battery_fleet.color_critical", + "editor.battery_fleet.color_critical_desc", + "editor.battery_fleet.color_low", + "editor.battery_fleet.color_low_desc", + "editor.battery_fleet.color_ok", + "editor.battery_fleet.color_ok_desc", + "editor.battery_fleet.color_secondary", + "editor.battery_fleet.color_secondary_desc", + "editor.battery_fleet.color_text", + "editor.battery_fleet.color_text_desc", + "editor.battery_fleet.colors_section", + "editor.battery_fleet.conf_basis", + "editor.battery_fleet.conf_high", + "editor.battery_fleet.conf_low", + "editor.battery_fleet.conf_medium", + "editor.battery_fleet.conf_none", + "editor.battery_fleet.critical_threshold", + "editor.battery_fleet.critical_threshold_desc", + "editor.battery_fleet.default_title", + "editor.battery_fleet.devices_section", + "editor.battery_fleet.devices_section_desc", + "editor.battery_fleet.discovery_mode", + "editor.battery_fleet.discovery_mode_desc", + "editor.battery_fleet.dismiss_auto", + "editor.battery_fleet.dismiss_manual", + "editor.battery_fleet.display_section", + "editor.battery_fleet.empty_auto", + "editor.battery_fleet.empty_auto_desc", + "editor.battery_fleet.empty_manual", + "editor.battery_fleet.empty_manual_desc", + "editor.battery_fleet.err_ha", + "editor.battery_fleet.err_ha_desc", + "editor.battery_fleet.err_history", + "editor.battery_fleet.err_render", + "editor.battery_fleet.error_manual_empty", + "editor.battery_fleet.error_thresholds", + "editor.battery_fleet.eta_beyond", + "editor.battery_fleet.eta_beyond_short", + "editor.battery_fleet.eta_charging", + "editor.battery_fleet.eta_day_one", + "editor.battery_fleet.eta_days", + "editor.battery_fleet.eta_days_short", + "editor.battery_fleet.eta_gathering", + "editor.battery_fleet.eta_gathering_short", + "editor.battery_fleet.eta_months", + "editor.battery_fleet.eta_months_short", + "editor.battery_fleet.eta_now", + "editor.battery_fleet.eta_now_short", + "editor.battery_fleet.eta_weeks", + "editor.battery_fleet.eta_weeks_short", + "editor.battery_fleet.exclude_patterns", + "editor.battery_fleet.exclude_patterns_desc", + "editor.battery_fleet.exclude_placeholder", + "editor.battery_fleet.footer_basis", + "editor.battery_fleet.footer_loading", + "editor.battery_fleet.found_count", + "editor.battery_fleet.found_more", + "editor.battery_fleet.found_none", + "editor.battery_fleet.found_none_desc", + "editor.battery_fleet.group_by_area", + "editor.battery_fleet.group_by_area_desc", + "editor.battery_fleet.hidden_entities", + "editor.battery_fleet.hidden_entities_desc", + "editor.battery_fleet.hidden_entities_empty", + "editor.battery_fleet.history_days", + "editor.battery_fleet.history_days_desc", + "editor.battery_fleet.include_attribute", + "editor.battery_fleet.include_attribute_desc", + "editor.battery_fleet.include_binary", + "editor.battery_fleet.include_binary_desc", + "editor.battery_fleet.layout", + "editor.battery_fleet.layout_cards", + "editor.battery_fleet.layout_compact", + "editor.battery_fleet.layout_desc", + "editor.battery_fleet.layout_table", + "editor.battery_fleet.loading_history", + "editor.battery_fleet.low_threshold", + "editor.battery_fleet.low_threshold_desc", + "editor.battery_fleet.manual_empty", + "editor.battery_fleet.manual_heading", + "editor.battery_fleet.manual_heading_desc", + "editor.battery_fleet.max_items", + "editor.battery_fleet.max_items_desc", + "editor.battery_fleet.min_confidence_hours", + "editor.battery_fleet.min_confidence_hours_desc", + "editor.battery_fleet.mode_auto", + "editor.battery_fleet.mode_both", + "editor.battery_fleet.mode_manual", + "editor.battery_fleet.no_area", + "editor.battery_fleet.predict_replacement", + "editor.battery_fleet.predict_replacement_desc", + "editor.battery_fleet.prediction_section", + "editor.battery_fleet.prediction_section_desc", + "editor.battery_fleet.prediction_tuning", + "editor.battery_fleet.pro_description", + "editor.battery_fleet.rate_per_day", + "editor.battery_fleet.replacement_floor", + "editor.battery_fleet.replacement_floor_desc", + "editor.battery_fleet.restore_all", + "editor.battery_fleet.row_battery_type", + "editor.battery_fleet.row_battery_type_desc", + "editor.battery_fleet.row_delete", + "editor.battery_fleet.row_edit", + "editor.battery_fleet.row_entity", + "editor.battery_fleet.row_icon", + "editor.battery_fleet.row_icon_desc", + "editor.battery_fleet.row_label", + "editor.battery_fleet.row_label_desc", + "editor.battery_fleet.row_no_entity", + "editor.battery_fleet.show_charging_indicator", + "editor.battery_fleet.show_charging_indicator_desc", + "editor.battery_fleet.show_drain_rate", + "editor.battery_fleet.show_drain_rate_desc", + "editor.battery_fleet.show_eta", + "editor.battery_fleet.show_eta_desc", + "editor.battery_fleet.show_only_problems", + "editor.battery_fleet.show_only_problems_desc", + "editor.battery_fleet.show_sparkline", + "editor.battery_fleet.show_sparkline_desc", + "editor.battery_fleet.show_summary_bar", + "editor.battery_fleet.show_summary_bar_desc", + "editor.battery_fleet.show_title", + "editor.battery_fleet.show_title_desc", + "editor.battery_fleet.sort_drain", + "editor.battery_fleet.sort_level", + "editor.battery_fleet.sort_mode", + "editor.battery_fleet.sort_mode_desc", + "editor.battery_fleet.sort_name", + "editor.battery_fleet.sort_urgency", + "editor.battery_fleet.sum_all_ok", + "editor.battery_fleet.sum_critical", + "editor.battery_fleet.sum_low", + "editor.battery_fleet.sum_month", + "editor.battery_fleet.sum_most_urgent", + "editor.battery_fleet.sum_total", + "editor.battery_fleet.thresholds_section", + "editor.battery_fleet.thresholds_section_desc", + "editor.battery_fleet.title", + "editor.battery_fleet.title_desc", + "editor.battery_fleet.unit_days", + "editor.battery_fleet.unit_hours", + "editor.battery_fleet.urgent_days", + "editor.battery_fleet.urgent_days_desc", + "editor.plant_care.add_first_desc", + "editor.plant_care.add_first_title", + "editor.plant_care.add_plant", + "editor.plant_care.advanced_section", + "editor.plant_care.advanced_sensors", + "editor.plant_care.advanced_sensors_desc", + "editor.plant_care.ago_days", + "editor.plant_care.ago_today", + "editor.plant_care.ago_yesterday", + "editor.plant_care.card_background_color", + "editor.plant_care.collapse", + "editor.plant_care.colors_section", + "editor.plant_care.columns", + "editor.plant_care.columns_desc", + "editor.plant_care.default_fertilize", + "editor.plant_care.default_fertilize_desc", + "editor.plant_care.default_title", + "editor.plant_care.default_water", + "editor.plant_care.delete_plant", + "editor.plant_care.detail_days", + "editor.plant_care.detail_fertilize", + "editor.plant_care.detail_interval", + "editor.plant_care.detail_last_water", + "editor.plant_care.detail_light", + "editor.plant_care.detail_reason", + "editor.plant_care.detail_temperature", + "editor.plant_care.display_section", + "editor.plant_care.display_section_desc", + "editor.plant_care.due_in_days", + "editor.plant_care.due_overdue", + "editor.plant_care.due_today", + "editor.plant_care.due_tomorrow", + "editor.plant_care.edit", + "editor.plant_care.fert_due", + "editor.plant_care.fert_in_days", + "editor.plant_care.fertilize_plant", + "editor.plant_care.happy_color", + "editor.plant_care.happy_color_desc", + "editor.plant_care.hemisphere_north", + "editor.plant_care.hemisphere_south", + "editor.plant_care.hemisphere_today", + "editor.plant_care.history_limit", + "editor.plant_care.history_limit_desc", + "editor.plant_care.illuminance_entity", + "editor.plant_care.illuminance_entity_desc", + "editor.plant_care.import_add", + "editor.plant_care.import_added", + "editor.plant_care.import_all", + "editor.plant_care.import_button", + "editor.plant_care.import_done", + "editor.plant_care.import_help", + "editor.plant_care.import_no_sensor", + "editor.plant_care.import_none", + "editor.plant_care.import_nothing_new", + "editor.plant_care.import_with_sensor", + "editor.plant_care.layout", + "editor.plant_care.layout_desc", + "editor.plant_care.layout_grid", + "editor.plant_care.layout_list", + "editor.plant_care.layout_map", + "editor.plant_care.layout_section", + "editor.plant_care.loading", + "editor.plant_care.log_fertilized", + "editor.plant_care.log_watered", + "editor.plant_care.map_image", + "editor.plant_care.map_image_desc", + "editor.plant_care.map_needed_desc", + "editor.plant_care.map_needed_title", + "editor.plant_care.map_place_hint", + "editor.plant_care.map_position", + "editor.plant_care.map_position_help", + "editor.plant_care.map_position_no_image", + "editor.plant_care.map_x", + "editor.plant_care.map_y", + "editor.plant_care.moisture_entity", + "editor.plant_care.moisture_entity_desc", + "editor.plant_care.moisture_source", + "editor.plant_care.moisture_source_desc", + "editor.plant_care.moisture_threshold", + "editor.plant_care.moisture_threshold_desc", + "editor.plant_care.move_down", + "editor.plant_care.move_up", + "editor.plant_care.never_fertilized", + "editor.plant_care.never_watered", + "editor.plant_care.new_plant_name", + "editor.plant_care.no_plants_editor", + "editor.plant_care.overdue_color", + "editor.plant_care.overdue_color_desc", + "editor.plant_care.overdue_first", + "editor.plant_care.overdue_first_desc", + "editor.plant_care.plant_fertilize_interval", + "editor.plant_care.plant_fertilize_interval_desc", + "editor.plant_care.plant_icon", + "editor.plant_care.plant_icon_desc", + "editor.plant_care.plant_location", + "editor.plant_care.plant_location_desc", + "editor.plant_care.plant_name", + "editor.plant_care.plant_name_desc", + "editor.plant_care.plant_notes", + "editor.plant_care.plant_notes_desc", + "editor.plant_care.plant_photo", + "editor.plant_care.plant_photo_desc", + "editor.plant_care.plant_water_interval", + "editor.plant_care.plant_water_interval_desc", + "editor.plant_care.plants_section", + "editor.plant_care.plants_section_desc", + "editor.plant_care.pro_description", + "editor.plant_care.reason_none", + "editor.plant_care.reason_schedule", + "editor.plant_care.reason_schedule_sensor_off", + "editor.plant_care.reason_sensor", + "editor.plant_care.row_every_days", + "editor.plant_care.schedule_section", + "editor.plant_care.schedule_section_desc", + "editor.plant_care.season_shoulder", + "editor.plant_care.season_summer", + "editor.plant_care.season_tooltip", + "editor.plant_care.season_winter", + "editor.plant_care.seasonal_adjust", + "editor.plant_care.seasonal_adjust_desc", + "editor.plant_care.seasonal_group", + "editor.plant_care.secondary_text_color", + "editor.plant_care.setup_desc", + "editor.plant_care.setup_title", + "editor.plant_care.show_detail", + "editor.plant_care.show_fertilize", + "editor.plant_care.show_fertilize_desc", + "editor.plant_care.show_moisture", + "editor.plant_care.show_next_due", + "editor.plant_care.show_photos", + "editor.plant_care.show_photos_desc", + "editor.plant_care.show_summary_bar", + "editor.plant_care.show_summary_bar_desc", + "editor.plant_care.show_title", + "editor.plant_care.source_both", + "editor.plant_care.source_schedule", + "editor.plant_care.source_sensor", + "editor.plant_care.storage_help", + "editor.plant_care.storage_section", + "editor.plant_care.sum_due_soon", + "editor.plant_care.sum_happy", + "editor.plant_care.sum_never", + "editor.plant_care.sum_next", + "editor.plant_care.sum_overdue", + "editor.plant_care.sum_thirsty", + "editor.plant_care.summer_factor", + "editor.plant_care.summer_factor_desc", + "editor.plant_care.tap_to_water", + "editor.plant_care.temperature_entity", + "editor.plant_care.temperature_entity_desc", + "editor.plant_care.text_color", + "editor.plant_care.thirsty_color", + "editor.plant_care.thirsty_color_desc", + "editor.plant_care.title", + "editor.plant_care.title_desc", + "editor.plant_care.todo_entity", + "editor.plant_care.todo_entity_desc", + "editor.plant_care.todo_no_description", + "editor.plant_care.undo", + "editor.plant_care.undo_fertilized", + "editor.plant_care.undo_watered", + "editor.plant_care.unit_days", + "editor.plant_care.unnamed_plant", + "editor.plant_care.use_default_water", + "editor.plant_care.water_plant", + "editor.plant_care.winter_factor", + "editor.plant_care.winter_factor_desc", + "editor.laundry_tracker.acknowledge_enabled", + "editor.laundry_tracker.acknowledge_enabled_desc", + "editor.laundry_tracker.add_dryer", + "editor.laundry_tracker.add_washer", + "editor.laundry_tracker.advanced_detection", + "editor.laundry_tracker.appliance_icon", + "editor.laundry_tracker.appliance_icon_desc", + "editor.laundry_tracker.appliance_kind", + "editor.laundry_tracker.appliance_kind_desc", + "editor.laundry_tracker.appliance_name", + "editor.laundry_tracker.appliance_name_desc", + "editor.laundry_tracker.appliances_section", + "editor.laundry_tracker.appliances_section_desc", + "editor.laundry_tracker.color_alert", + "editor.laundry_tracker.color_alert_desc", + "editor.laundry_tracker.color_card_bg", + "editor.laundry_tracker.color_card_bg_desc", + "editor.laundry_tracker.color_done", + "editor.laundry_tracker.color_done_desc", + "editor.laundry_tracker.color_idle", + "editor.laundry_tracker.color_idle_desc", + "editor.laundry_tracker.color_running", + "editor.laundry_tracker.color_running_desc", + "editor.laundry_tracker.color_secondary", + "editor.laundry_tracker.color_secondary_desc", + "editor.laundry_tracker.color_text", + "editor.laundry_tracker.color_text_desc", + "editor.laundry_tracker.colors_section", + "editor.laundry_tracker.colors_section_desc", + "editor.laundry_tracker.currency_symbol", + "editor.laundry_tracker.currency_symbol_desc", + "editor.laundry_tracker.default_title", + "editor.laundry_tracker.delete_appliance", + "editor.laundry_tracker.display_section", + "editor.laundry_tracker.display_section_desc", + "editor.laundry_tracker.done_ago", + "editor.laundry_tracker.door_entity", + "editor.laundry_tracker.door_entity_desc", + "editor.laundry_tracker.door_open", + "editor.laundry_tracker.drawing_now", + "editor.laundry_tracker.edit_appliance", + "editor.laundry_tracker.emptied", + "editor.laundry_tracker.empty_desc", + "editor.laundry_tracker.empty_title", + "editor.laundry_tracker.energy_rate", + "editor.laundry_tracker.energy_rate_desc", + "editor.laundry_tracker.est_finish", + "editor.laundry_tracker.est_finish_soon", + "editor.laundry_tracker.est_finish_unknown", + "editor.laundry_tracker.forgotten_dryer", + "editor.laundry_tracker.forgotten_washer", + "editor.laundry_tracker.handoff_sub", + "editor.laundry_tracker.handoff_title", + "editor.laundry_tracker.history_days", + "editor.laundry_tracker.history_days_desc", + "editor.laundry_tracker.history_error", + "editor.laundry_tracker.history_section", + "editor.laundry_tracker.history_section_desc", + "editor.laundry_tracker.kind_dryer", + "editor.laundry_tracker.kind_washer", + "editor.laundry_tracker.last_cycle_ago", + "editor.laundry_tracker.layout", + "editor.laundry_tracker.layout_desc", + "editor.laundry_tracker.layout_row", + "editor.laundry_tracker.layout_stack", + "editor.laundry_tracker.learning", + "editor.laundry_tracker.loading_history", + "editor.laundry_tracker.min_cycle_minutes", + "editor.laundry_tracker.min_cycle_minutes_desc", + "editor.laundry_tracker.move_down", + "editor.laundry_tracker.move_up", + "editor.laundry_tracker.no_appliances_hint", + "editor.laundry_tracker.no_cycles_window", + "editor.laundry_tracker.no_source", + "editor.laundry_tracker.notify_message", + "editor.laundry_tracker.notify_once_note", + "editor.laundry_tracker.notify_section", + "editor.laundry_tracker.notify_section_desc", + "editor.laundry_tracker.notify_service", + "editor.laundry_tracker.notify_service_desc", + "editor.laundry_tracker.notify_title", + "editor.laundry_tracker.phase_finished", + "editor.laundry_tracker.phase_forgotten", + "editor.laundry_tracker.phase_idle", + "editor.laundry_tracker.phase_running", + "editor.laundry_tracker.phase_unknown", + "editor.laundry_tracker.power_entity", + "editor.laundry_tracker.power_entity_desc", + "editor.laundry_tracker.pro_description", + "editor.laundry_tracker.row_no_entity", + "editor.laundry_tracker.running_for", + "editor.laundry_tracker.running_states", + "editor.laundry_tracker.running_states_desc", + "editor.laundry_tracker.settle_minutes", + "editor.laundry_tracker.settle_minutes_desc", + "editor.laundry_tracker.show_energy", + "editor.laundry_tracker.show_energy_desc", + "editor.laundry_tracker.show_handoff_hint", + "editor.laundry_tracker.show_handoff_hint_desc", + "editor.laundry_tracker.show_history_stats", + "editor.laundry_tracker.show_history_stats_desc", + "editor.laundry_tracker.show_idle_alert", + "editor.laundry_tracker.show_idle_alert_desc", + "editor.laundry_tracker.show_status_cards", + "editor.laundry_tracker.show_status_cards_desc", + "editor.laundry_tracker.show_timeline", + "editor.laundry_tracker.show_timeline_desc", + "editor.laundry_tracker.show_title", + "editor.laundry_tracker.show_title_desc", + "editor.laundry_tracker.sitting_for", + "editor.laundry_tracker.start_threshold", + "editor.laundry_tracker.start_threshold_desc", + "editor.laundry_tracker.state_entity", + "editor.laundry_tracker.state_entity_desc", + "editor.laundry_tracker.stats_avg", + "editor.laundry_tracker.stats_busiest", + "editor.laundry_tracker.stats_cost", + "editor.laundry_tracker.stats_cycles", + "editor.laundry_tracker.stats_energy", + "editor.laundry_tracker.stats_footnote", + "editor.laundry_tracker.stats_learning", + "editor.laundry_tracker.stop_threshold", + "editor.laundry_tracker.stop_threshold_desc", + "editor.laundry_tracker.suggest_preview", + "editor.laundry_tracker.suggest_thresholds", + "editor.laundry_tracker.suggested_applied", + "editor.laundry_tracker.threshold_floor", + "editor.laundry_tracker.threshold_helper_desc", + "editor.laundry_tracker.threshold_helper_title", + "editor.laundry_tracker.threshold_loading", + "editor.laundry_tracker.threshold_max", + "editor.laundry_tracker.threshold_median", + "editor.laundry_tracker.threshold_min", + "editor.laundry_tracker.threshold_no_data", + "editor.laundry_tracker.timeline_empty", + "editor.laundry_tracker.timeline_title", + "editor.laundry_tracker.title", + "editor.laundry_tracker.title_desc", + "editor.laundry_tracker.unit_day", + "editor.laundry_tracker.unit_hour", + "editor.laundry_tracker.unit_minute", + "editor.laundry_tracker.unload_grace", + "editor.laundry_tracker.unload_grace_desc", + "editor.laundry_tracker.unloaded_badge", + "editor.laundry_tracker.unloaded_button", + "editor.vehicle_maintenance.add_preset", + "editor.vehicle_maintenance.add_service", + "editor.vehicle_maintenance.advanced", + "editor.vehicle_maintenance.battery_entity", + "editor.vehicle_maintenance.battery_entity_desc", + "editor.vehicle_maintenance.cancel", + "editor.vehicle_maintenance.card_background_color", + "editor.vehicle_maintenance.charge", + "editor.vehicle_maintenance.colors_section", + "editor.vehicle_maintenance.colors_section_desc", + "editor.vehicle_maintenance.config_needed", + "editor.vehicle_maintenance.config_needed_desc", + "editor.vehicle_maintenance.cost_per_distance", + "editor.vehicle_maintenance.currency_symbol", + "editor.vehicle_maintenance.currency_symbol_desc", + "editor.vehicle_maintenance.default_name", + "editor.vehicle_maintenance.delete_confirm", + "editor.vehicle_maintenance.delete_log_message", + "editor.vehicle_maintenance.delete_log_title", + "editor.vehicle_maintenance.delete_message", + "editor.vehicle_maintenance.delete_service", + "editor.vehicle_maintenance.delete_title", + "editor.vehicle_maintenance.display_section", + "editor.vehicle_maintenance.display_section_desc", + "editor.vehicle_maintenance.distance_unit", + "editor.vehicle_maintenance.distance_unit_desc", + "editor.vehicle_maintenance.due_in_distance", + "editor.vehicle_maintenance.due_in_time", + "editor.vehicle_maintenance.due_overdue_distance", + "editor.vehicle_maintenance.due_overdue_time", + "editor.vehicle_maintenance.due_soon_color", + "editor.vehicle_maintenance.due_soon_days", + "editor.vehicle_maintenance.due_soon_days_desc", + "editor.vehicle_maintenance.due_soon_distance", + "editor.vehicle_maintenance.due_soon_distance_desc", + "editor.vehicle_maintenance.due_today", + "editor.vehicle_maintenance.due_unknown", + "editor.vehicle_maintenance.duration_day", + "editor.vehicle_maintenance.duration_days", + "editor.vehicle_maintenance.duration_month", + "editor.vehicle_maintenance.duration_months", + "editor.vehicle_maintenance.duration_week", + "editor.vehicle_maintenance.duration_weeks", + "editor.vehicle_maintenance.estimated_cost", + "editor.vehicle_maintenance.estimated_cost_desc", + "editor.vehicle_maintenance.fuel", + "editor.vehicle_maintenance.fuel_entity", + "editor.vehicle_maintenance.fuel_entity_desc", + "editor.vehicle_maintenance.hint_no_odometer", + "editor.vehicle_maintenance.hint_odometer_unavailable", + "editor.vehicle_maintenance.interval_distance", + "editor.vehicle_maintenance.interval_distance_desc", + "editor.vehicle_maintenance.interval_every", + "editor.vehicle_maintenance.interval_months", + "editor.vehicle_maintenance.interval_months_desc", + "editor.vehicle_maintenance.interval_none", + "editor.vehicle_maintenance.last_date", + "editor.vehicle_maintenance.last_date_desc", + "editor.vehicle_maintenance.last_distance", + "editor.vehicle_maintenance.last_distance_desc", + "editor.vehicle_maintenance.layout", + "editor.vehicle_maintenance.layout_compact", + "editor.vehicle_maintenance.layout_desc", + "editor.vehicle_maintenance.layout_hero", + "editor.vehicle_maintenance.layout_list", + "editor.vehicle_maintenance.log_count", + "editor.vehicle_maintenance.log_empty", + "editor.vehicle_maintenance.log_error", + "editor.vehicle_maintenance.log_limit", + "editor.vehicle_maintenance.log_limit_desc", + "editor.vehicle_maintenance.log_no_storage", + "editor.vehicle_maintenance.log_show_all", + "editor.vehicle_maintenance.log_show_less", + "editor.vehicle_maintenance.log_write_failed", + "editor.vehicle_maintenance.mark_confirm", + "editor.vehicle_maintenance.mark_message_no_odometer", + "editor.vehicle_maintenance.mark_message_odometer", + "editor.vehicle_maintenance.mark_needs_list", + "editor.vehicle_maintenance.mark_serviced", + "editor.vehicle_maintenance.mark_title", + "editor.vehicle_maintenance.marking", + "editor.vehicle_maintenance.move_down", + "editor.vehicle_maintenance.move_up", + "editor.vehicle_maintenance.new_service", + "editor.vehicle_maintenance.next_service", + "editor.vehicle_maintenance.no_reading", + "editor.vehicle_maintenance.notes", + "editor.vehicle_maintenance.notes_desc", + "editor.vehicle_maintenance.odometer", + "editor.vehicle_maintenance.odometer_converted", + "editor.vehicle_maintenance.odometer_entity", + "editor.vehicle_maintenance.odometer_entity_desc", + "editor.vehicle_maintenance.odometer_none", + "editor.vehicle_maintenance.odometer_offset", + "editor.vehicle_maintenance.odometer_offset_applied", + "editor.vehicle_maintenance.odometer_offset_desc", + "editor.vehicle_maintenance.odometer_source_unit", + "editor.vehicle_maintenance.odometer_unit_assumed", + "editor.vehicle_maintenance.odometer_unreadable", + "editor.vehicle_maintenance.ok_color", + "editor.vehicle_maintenance.overdue_color", + "editor.vehicle_maintenance.preset_air_filter", + "editor.vehicle_maintenance.preset_battery", + "editor.vehicle_maintenance.preset_brakes", + "editor.vehicle_maintenance.preset_cabin_filter", + "editor.vehicle_maintenance.preset_coolant", + "editor.vehicle_maintenance.preset_inspection", + "editor.vehicle_maintenance.preset_oil", + "editor.vehicle_maintenance.preset_registration", + "editor.vehicle_maintenance.preset_spark_plugs", + "editor.vehicle_maintenance.preset_tires", + "editor.vehicle_maintenance.preset_transmission", + "editor.vehicle_maintenance.preset_wipers", + "editor.vehicle_maintenance.presets_hint", + "editor.vehicle_maintenance.pro_description", + "editor.vehicle_maintenance.projection", + "editor.vehicle_maintenance.row_from_log", + "editor.vehicle_maintenance.secondary_text_color", + "editor.vehicle_maintenance.service_icon", + "editor.vehicle_maintenance.service_log", + "editor.vehicle_maintenance.service_name", + "editor.vehicle_maintenance.services_empty", + "editor.vehicle_maintenance.services_section", + "editor.vehicle_maintenance.services_section_desc", + "editor.vehicle_maintenance.show_costs", + "editor.vehicle_maintenance.show_costs_desc", + "editor.vehicle_maintenance.show_fuel", + "editor.vehicle_maintenance.show_next_service", + "editor.vehicle_maintenance.show_odometer", + "editor.vehicle_maintenance.show_progress_bars", + "editor.vehicle_maintenance.show_service_log", + "editor.vehicle_maintenance.show_title", + "editor.vehicle_maintenance.show_vehicle_image", + "editor.vehicle_maintenance.storage_section", + "editor.vehicle_maintenance.storage_section_desc", + "editor.vehicle_maintenance.tally_due_soon", + "editor.vehicle_maintenance.tally_ok", + "editor.vehicle_maintenance.tally_overdue", + "editor.vehicle_maintenance.text_color", + "editor.vehicle_maintenance.thresholds_section", + "editor.vehicle_maintenance.thresholds_section_desc", + "editor.vehicle_maintenance.title", + "editor.vehicle_maintenance.title_desc", + "editor.vehicle_maintenance.todo_entity", + "editor.vehicle_maintenance.todo_entity_desc", + "editor.vehicle_maintenance.todo_missing", + "editor.vehicle_maintenance.todo_no_description", + "editor.vehicle_maintenance.total_spend", + "editor.vehicle_maintenance.unit_days_short", + "editor.vehicle_maintenance.unit_km", + "editor.vehicle_maintenance.unit_km_long", + "editor.vehicle_maintenance.unit_mi", + "editor.vehicle_maintenance.unit_mi_long", + "editor.vehicle_maintenance.unit_months_short", + "editor.vehicle_maintenance.unit_offer", + "editor.vehicle_maintenance.unit_offer_convert", + "editor.vehicle_maintenance.unit_offer_keep", + "editor.vehicle_maintenance.unnamed_service", + "editor.vehicle_maintenance.vehicle_image", + "editor.vehicle_maintenance.vehicle_image_desc", + "editor.vehicle_maintenance.vehicle_name", + "editor.vehicle_maintenance.vehicle_name_desc", + "editor.vehicle_maintenance.vehicle_photo_alt", + "editor.vehicle_maintenance.vehicle_section", + "editor.vehicle_maintenance.vehicle_section_desc", + "editor.vampire_power.advanced_thresholds", + "editor.vampire_power.analysis_section", + "editor.vampire_power.analysis_section_desc", + "editor.vampire_power.baseline_percentile", + "editor.vampire_power.baseline_percentile_desc", + "editor.vampire_power.color_bar", + "editor.vampire_power.color_card_bg", + "editor.vampire_power.color_offender", + "editor.vampire_power.color_secondary", + "editor.vampire_power.color_text", + "editor.vampire_power.colors_section", + "editor.vampire_power.confidence_low", + "editor.vampire_power.cost_period", + "editor.vampire_power.cost_period_desc", + "editor.vampire_power.cost_section", + "editor.vampire_power.cost_section_desc", + "editor.vampire_power.currency_symbol", + "editor.vampire_power.currency_symbol_desc", + "editor.vampire_power.default_title", + "editor.vampire_power.discovery_mode", + "editor.vampire_power.discovery_mode_desc", + "editor.vampire_power.dismiss_row", + "editor.vampire_power.dismissed", + "editor.vampire_power.dismissed_desc", + "editor.vampire_power.dismissed_empty", + "editor.vampire_power.display_section", + "editor.vampire_power.energy_rate", + "editor.vampire_power.energy_rate_desc", + "editor.vampire_power.entities", + "editor.vampire_power.entities_desc", + "editor.vampire_power.entities_ph", + "editor.vampire_power.err_empty", + "editor.vampire_power.err_empty_desc", + "editor.vampire_power.err_ha", + "editor.vampire_power.err_ha_desc", + "editor.vampire_power.err_history", + "editor.vampire_power.err_history_desc", + "editor.vampire_power.error_manual_empty", + "editor.vampire_power.error_range", + "editor.vampire_power.error_rate_negative", + "editor.vampire_power.exclude_patterns", + "editor.vampire_power.exclude_patterns_desc", + "editor.vampire_power.exclude_patterns_ph", + "editor.vampire_power.found_capped", + "editor.vampire_power.found_none_hint", + "editor.vampire_power.found_ok_hint", + "editor.vampire_power.found_sensors", + "editor.vampire_power.highlight_threshold", + "editor.vampire_power.highlight_threshold_desc", + "editor.vampire_power.hint_many", + "editor.vampire_power.hint_one", + "editor.vampire_power.history_days", + "editor.vampire_power.history_days_desc", + "editor.vampire_power.layout", + "editor.vampire_power.layout_cards", + "editor.vampire_power.layout_compact", + "editor.vampire_power.layout_desc", + "editor.vampire_power.layout_ranked", + "editor.vampire_power.loading_note", + "editor.vampire_power.max_items", + "editor.vampire_power.max_items_desc", + "editor.vampire_power.max_standby_watts", + "editor.vampire_power.max_standby_watts_desc", + "editor.vampire_power.min_standby_watts", + "editor.vampire_power.min_standby_watts_desc", + "editor.vampire_power.mode_auto", + "editor.vampire_power.mode_both", + "editor.vampire_power.mode_manual", + "editor.vampire_power.no_waste", + "editor.vampire_power.no_waste_desc", + "editor.vampire_power.note_always_on", + "editor.vampire_power.note_capped", + "editor.vampire_power.note_insufficient", + "editor.vampire_power.per_day", + "editor.vampire_power.per_month", + "editor.vampire_power.per_year", + "editor.vampire_power.period_day", + "editor.vampire_power.period_month", + "editor.vampire_power.period_year", + "editor.vampire_power.pro_description", + "editor.vampire_power.restore_dismissed", + "editor.vampire_power.row_idle_fraction", + "editor.vampire_power.row_peak", + "editor.vampire_power.row_waste_ratio", + "editor.vampire_power.sensors_section", + "editor.vampire_power.sensors_section_desc", + "editor.vampire_power.show_bars", + "editor.vampire_power.show_bars_desc", + "editor.vampire_power.show_cost", + "editor.vampire_power.show_cost_desc", + "editor.vampire_power.show_savings_hint", + "editor.vampire_power.show_savings_hint_desc", + "editor.vampire_power.show_title", + "editor.vampire_power.show_title_desc", + "editor.vampire_power.show_total_bar", + "editor.vampire_power.show_total_bar_desc", + "editor.vampire_power.sort_cost", + "editor.vampire_power.sort_mode", + "editor.vampire_power.sort_mode_desc", + "editor.vampire_power.sort_name", + "editor.vampire_power.sort_watts", + "editor.vampire_power.title", + "editor.vampire_power.title_desc", + "editor.vampire_power.total_bar_aria", + "editor.vampire_power.total_bar_rest", + "editor.vampire_power.total_footer", + "editor.vampire_power.total_label", + "editor.vampire_power.unit_days", + "editor.vampire_power.unit_watts", + "editor.vampire_power.watt_symbol", + "editor.unifi.accent_color", + "editor.unifi.accent_color_desc", + "editor.unifi.anim_full", + "editor.unifi.anim_off", + "editor.unifi.anim_subtle", + "editor.unifi.animation", + "editor.unifi.animation_desc", + "editor.unifi.blank_background", + "editor.unifi.blank_background_desc", + "editor.unifi.client_add", + "editor.unifi.client_list", + "editor.unifi.client_list_hint", + "editor.unifi.client_remove", + "editor.unifi.clients_added", + "editor.unifi.clients_aside", + "editor.unifi.clients_clear", + "editor.unifi.curation_note", + "editor.unifi.device_list", + "editor.unifi.device_list_hint", + "editor.unifi.empty", + "editor.unifi.filter_kind", + "editor.unifi.found_clients", + "editor.unifi.found_devices", + "editor.unifi.found_hint", + "editor.unifi.found_hint_infra", + "editor.unifi.found_infra", + "editor.unifi.found_none", + "editor.unifi.hide", + "editor.unifi.hide_all", + "editor.unifi.include_clients", + "editor.unifi.include_clients_desc", + "editor.unifi.kind_all", + "editor.unifi.kind_ap", + "editor.unifi.kind_camera", + "editor.unifi.kind_gateway", + "editor.unifi.kind_nvr", + "editor.unifi.kind_pdu", + "editor.unifi.kind_plug", + "editor.unifi.kind_switch", + "editor.unifi.no_client_match", + "editor.unifi.layout_radial", + "editor.unifi.layout_tree", + "editor.unifi.no_match", + "editor.unifi.ports_device", + "editor.unifi.ports_device_desc", + "editor.unifi.pro_description", + "editor.unifi.rack_style", + "editor.unifi.rack_style_desc", + "editor.unifi.search_devices", + "editor.unifi.search_devices_desc", + "editor.unifi.section_colors", + "editor.unifi.section_colors_desc", + "editor.unifi.section_devices", + "editor.unifi.section_devices_desc", + "editor.unifi.section_display", + "editor.unifi.section_display_desc", + "editor.unifi.section_view", + "editor.unifi.section_view_desc", + "editor.unifi.show", + "editor.unifi.show_advanced", + "editor.unifi.show_advanced_desc", + "editor.unifi.show_camera_previews", + "editor.unifi.show_camera_previews_desc", + "editor.unifi.topology_links", + "editor.unifi.topology_links_hint", + "editor.unifi.uplink_auto", + "editor.unifi.show_all", + "editor.unifi.show_port_labels", + "editor.unifi.show_port_labels_desc", + "editor.unifi.show_rack_gear", + "editor.unifi.show_setup", + "editor.unifi.show_sparklines", + "editor.unifi.show_sparklines_desc", + "editor.unifi.show_title", + "editor.unifi.show_title_desc", + "editor.unifi.search_clients", + "editor.unifi.search_clients_desc", + "editor.unifi.showing_count", + "editor.unifi.use_device_images", + "editor.unifi.use_device_images_desc", + "editor.unifi.rack_order", + "editor.unifi.rack_order_hint", + "editor.unifi.move_up", + "editor.unifi.move_down", + "editor.unifi.style_blank", + "editor.unifi.style_blueprint", + "editor.unifi.style_dark", + "editor.unifi.style_glass", + "editor.unifi.style_light", + "editor.unifi.title", + "editor.unifi.title_default", + "editor.unifi.title_desc", + "editor.unifi.topology_layout", + "editor.unifi.topology_layout_desc", + "editor.unifi.view", + "editor.unifi.view_clients", + "editor.unifi.view_desc", + "editor.unifi.view_devices", + "editor.unifi.view_ports", + "editor.unifi.view_rack", + "editor.unifi.view_topology", + "editor.unifi.view_wan", + "editor.unifi.wizard_admin_required", + "editor.unifi.wizard_bandwidth_option", + "editor.unifi.wizard_disabled", + "editor.unifi.wizard_dismiss", + "editor.unifi.wizard_enable", + "editor.unifi.wizard_enabling", + "editor.unifi.wizard_loading", + "editor.unifi.wizard_no_devices", + "editor.unifi.wizard_open_integration", + "editor.unifi.wizard_title", + "editor.bambu.title_default", + "editor.bambu.pro_description", + "editor.bambu.view", + "editor.bambu.view_desc", + "editor.bambu.view_printer", + "editor.bambu.view_dashboard", + "editor.bambu.view_camera", + "editor.bambu.view_farm", + "editor.bambu.view_compact", + "editor.bambu.printer", + "editor.bambu.printer_desc", + "editor.bambu.printer_auto", + "editor.bambu.style", + "editor.bambu.style_desc", + "editor.bambu.style_theme", + "editor.bambu.style_dark", + "editor.bambu.style_light", + "editor.bambu.style_glass", + "editor.bambu.style_carbon", + "editor.bambu.animation", + "editor.bambu.animation_desc", + "editor.bambu.anim_off", + "editor.bambu.anim_subtle", + "editor.bambu.anim_full", + "editor.bambu.title", + "editor.bambu.title_desc", + "editor.bambu.show_title", + "editor.bambu.sections", + "editor.bambu.sections_desc", + "editor.bambu.show_ams", + "editor.bambu.ams_layout", + "editor.bambu.ams_layout_desc", + "editor.bambu.ams_layout_stacked", + "editor.bambu.ams_layout_grid", + "editor.bambu.ams_layout_strip", + "editor.bambu.ams_units", + "editor.bambu.ams_units_desc", + "editor.bambu.show_camera", + "editor.bambu.show_controls", + "editor.bambu.show_temps", + "editor.bambu.show_fans", + "editor.bambu.show_print_details", + "editor.bambu.show_hms", + "editor.bambu.show_speed", + "editor.bambu.show_job", + "editor.bambu.show_job_desc", + "editor.bambu.show_thumbnail", + "editor.bambu.show_thumbnail_desc", + "editor.bambu.camera_mode", + "editor.bambu.camera_mode_desc", + "editor.bambu.camera_mode_snapshot", + "editor.bambu.camera_mode_live", + "editor.bambu.camera_refresh", + "editor.bambu.camera_refresh_desc", + "editor.bambu.custom_image", + "editor.bambu.custom_image_desc", + "editor.bambu.accent_color", + "editor.bambu.accent_color_desc", + "editor.bambu.text_color", + "editor.bambu.secondary_text_color", + "editor.bambu.farm_order", + "editor.bambu.farm_order_desc", + "editor.bambu.empty", + "editor.bambu.hint_no_integration", + "editor.bambu.hint_no_printers", + "editor.bambu.hint_camera_off", + "editor.bambu.hint_offline", + "editor.bambu.hint_no_ams", + "editor.bambu.wizard_dismiss", + "editor.bambu.found_printers", + "editor.printer_3d.title_default", + "editor.printer_3d.layout", + "editor.printer_3d.layout_desc", + "editor.printer_3d.layout_hero", + "editor.printer_3d.layout_standard", + "editor.printer_3d.layout_compact", + "editor.printer_3d.layout_camera", + "editor.printer_3d.style", + "editor.printer_3d.style_desc", + "editor.printer_3d.style_theme", + "editor.printer_3d.style_dark", + "editor.printer_3d.style_light", + "editor.printer_3d.style_glass", + "editor.printer_3d.illustration", + "editor.printer_3d.illustration_desc", + "editor.printer_3d.illustration_enclosed", + "editor.printer_3d.illustration_bedslinger", + "editor.printer_3d.illustration_none", + "editor.printer_3d.illustration_image", + "editor.printer_3d.custom_image", + "editor.printer_3d.custom_image_desc", + "editor.printer_3d.title", + "editor.printer_3d.title_desc", + "editor.printer_3d.show_title", + "editor.printer_3d.source", + "editor.printer_3d.source_desc", + "editor.printer_3d.source_manual", + "editor.printer_3d.source_octoprint", + "editor.printer_3d.source_moonraker", + "editor.printer_3d.source_prusalink", + "editor.printer_3d.source_device", + "editor.printer_3d.source_device_desc", + "editor.printer_3d.autofill", + "editor.printer_3d.autofill_desc", + "editor.printer_3d.bambu_hint", + "editor.printer_3d.mapping", + "editor.printer_3d.mapping_desc", + "editor.printer_3d.status_entity", + "editor.printer_3d.progress_entity", + "editor.printer_3d.nozzle_temp_entity", + "editor.printer_3d.nozzle_target_entity", + "editor.printer_3d.bed_temp_entity", + "editor.printer_3d.bed_target_entity", + "editor.printer_3d.chamber_temp_entity", + "editor.printer_3d.remaining_time_entity", + "editor.printer_3d.end_time_entity", + "editor.printer_3d.current_layer_entity", + "editor.printer_3d.total_layers_entity", + "editor.printer_3d.file_name_entity", + "editor.printer_3d.camera_entity", + "editor.printer_3d.thumbnail_entity", + "editor.printer_3d.pause_entity", + "editor.printer_3d.resume_entity", + "editor.printer_3d.stop_entity", + "editor.printer_3d.light_entity", + "editor.printer_3d.fans", + "editor.printer_3d.fans_desc", + "editor.printer_3d.extra_stats", + "editor.printer_3d.extra_stats_desc", + "editor.printer_3d.sections", + "editor.printer_3d.show_controls", + "editor.printer_3d.show_temps", + "editor.printer_3d.show_fans", + "editor.printer_3d.show_camera", + "editor.printer_3d.show_job", + "editor.printer_3d.show_job_desc", + "editor.printer_3d.show_thumbnail", + "editor.printer_3d.show_thumbnail_desc", + "editor.printer_3d.camera_mode", + "editor.printer_3d.camera_mode_desc", + "editor.printer_3d.camera_mode_snapshot", + "editor.printer_3d.camera_mode_live", + "editor.printer_3d.camera_refresh", + "editor.printer_3d.accent_color", + "editor.printer_3d.text_color", + "editor.printer_3d.secondary_text_color", + "hub.groups.home", + "hub.groups.library", + "hub.groups.account", + "hub.groups.help", + "hub.tabs.dashboard", + "hub.tabs.account", + "hub.tabs.pro", + "hub.tabs.favorites", + "hub.tabs.presets", + "hub.tabs.themes", + "hub.tabs.colors", + "hub.tabs.variables", + "hub.tabs.templates", + "hub.tabs.docs", + "hub.tabs.about", + "hub.loading", + "hub.subtitle", + "hub.themes.blurb", + "hub.themes.global_title", + "hub.themes.global_desc", + "hub.themes.paint_page", + "hub.themes.paint_page_desc", + "hub.themes.sections_width", + "hub.themes.sections_width_desc", + "hub.themes.sections_width_default", + "hub.themes.sections_width_default_hint", + "hub.themes.sections_width_full", + "hub.themes.sections_width_full_hint", + "hub.themes.sections_width_custom", + "hub.themes.sections_width_custom_hint", + "hub.themes.sections_column_width", + "hub.themes.sections_gap", + "hub.themes.sections_gap_placeholder", + "hub.themes.library_title", + "hub.themes.library_desc", + "hub.themes.filter_builtin", + "hub.themes.filter_local", + "hub.themes.filter_official", + "hub.themes.filter_community", + "hub.themes.new_theme", + "hub.themes.import", + "hub.themes.edit", + "hub.themes.duplicate", + "hub.themes.export", + "hub.themes.delete", + "hub.themes.set_global", + "hub.themes.is_global", + "hub.themes.apply_title", + "hub.themes.apply_desc", + "hub.themes.apply_dashboard", + "hub.themes.apply_theme", + "hub.themes.apply_follow_global", + "hub.themes.apply_button", + "hub.themes.apply_confirm_title", + "hub.themes.apply_confirm", + "hub.themes.apply_done", + "hub.themes.apply_none", + "hub.themes.apply_failed", + "hub.themes.undo", + "hub.themes.undo_done", + "hub.themes.yaml_mode", + "hub.themes.delete_confirm_title", + "hub.themes.delete_confirm", + "hub.themes.import_title", + "hub.themes.import_desc", + "hub.themes.import_placeholder", + "hub.themes.import_button", + "hub.themes.import_invalid", + "hub.themes.import_done", + "hub.themes.import_warnings", + "hub.themes.export_copied", + "hub.themes.saved", + "hub.themes.deleted", + "hub.themes.global_set", + "hub.themes.editor_title_new", + "hub.themes.editor_title_edit", + "hub.themes.editor_basics", + "hub.themes.editor_tokens", + "hub.themes.editor_card", + "hub.themes.editor_modules", + "hub.themes.editor_css", + "hub.themes.editor_css_help", + "hub.themes.editor_name", + "hub.themes.editor_id", + "hub.themes.editor_description", + "hub.themes.editor_author", + "hub.themes.editor_icon", + "hub.themes.editor_surface", + "hub.themes.editor_radius", + "hub.themes.editor_radius_sm", + "hub.themes.editor_blur", + "hub.themes.editor_border_width", + "hub.themes.editor_border_color", + "hub.themes.editor_shadow", + "hub.themes.editor_density", + "hub.themes.editor_accent", + "hub.themes.editor_font", + "hub.themes.editor_card_hint", + "hub.themes.editor_card_background", + "hub.themes.editor_card_padding", + "hub.themes.editor_card_shadow", + "hub.themes.editor_module_inherit", + "hub.themes.editor_module_recipe", + "hub.themes.editor_recipes", + "hub.themes.editor_recipes_hint", + "hub.themes.editor_recipe_from_surface", + "hub.themes.editor_recipe_control", + "hub.themes.editor_recipe_track", + "hub.themes.editor_recipe_fill", + "hub.themes.editor_recipe_pane", + "hub.themes.editor_save", + "hub.themes.editor_cancel", + "hub.themes.editor_preview", + "hub.themes.editor_name_required", + "hub.themes.editor_grayscale", + "hub.themes.editor_layers", + "hub.themes.editor_layers_hint", + "hub.themes.editor_page_background", + "hub.themes.editor_pane_background", + "hub.themes.editor_pane_border", + "hub.themes.editor_pane_shadow", + "hub.themes.editor_color_filter", + "hub.themes.editor_palette", + "hub.themes.editor_palette_hint", + "hub.themes.editor_palette_primary", + "hub.themes.editor_palette_accent", + "hub.themes.editor_palette_card_bg", + "hub.themes.editor_palette_text", + "hub.themes.editor_palette_text_secondary", + "hub.themes.editor_palette_divider", + "hub.themes.editor_palette_on_primary", + "hub.themes.ha_import", + "hub.themes.ha_import_title", + "hub.themes.ha_import_desc", + "hub.themes.ha_import_theme", + "hub.themes.ha_import_mode", + "hub.themes.ha_import_mode_auto", + "hub.themes.ha_import_mode_light", + "hub.themes.ha_import_mode_dark", + "hub.themes.ha_import_button", + "hub.themes.ha_import_mapped", + "hub.themes.ha_import_nothing", + "hub.themes.share", + "hub.themes.catalog_refresh", + "hub.themes.catalog_loading", + "hub.themes.catalog_error", + "hub.themes.catalog_empty_title", + "hub.themes.catalog_empty", + "hub.themes.sort_downloads", + "hub.themes.sort_date", + "hub.themes.sort_title", + "hub.themes.downloads", + "hub.themes.install", + "hub.themes.update", + "hub.themes.installed", + "hub.themes.installed_done", + "hub.themes.install_confirm_title", + "hub.themes.install_confirm", + "hub.themes.mine_title", + "hub.themes.mine_desc", + "hub.themes.mine_login_title", + "hub.themes.mine_login_desc", + "hub.themes.mine_loading", + "hub.themes.mine_admin_only", + "hub.themes.mine_empty_title", + "hub.themes.mine_empty", + "hub.themes.sign_in", + "hub.themes.status_pending", + "hub.themes.status_revision", + "hub.themes.status_approved", + "hub.themes.status_changes", + "hub.themes.status_rejected", + "hub.themes.withdraw", + "hub.themes.withdraw_confirm_title", + "hub.themes.withdraw_confirm", + "hub.themes.withdrawn", + "hub.themes.delete_submission_title", + "hub.themes.delete_submission_confirm", + "hub.themes.view_switch", + "hub.themes.view_browse", + "hub.themes.view_mine", + "hub.themes.browse_blurb", + "hub.themes.mine_blurb", + "hub.themes.search", + "hub.themes.search_empty", + "hub.themes.default_title", + "hub.themes.default_desc", + "hub.themes.community_title", + "hub.themes.community_desc", + "hub.themes.library_empty_title", + "hub.themes.library_empty", + "hub.themes.browse_catalog", + "hub.themes.sort_rating", + "hub.themes.rating", + "hub.themes.rate_title", + "hub.themes.rate_thanks", + "hub.themes.rate_none", + "hub.themes.rate_own", + "hub.themes.rate_yours", + "hub.themes.rate_you", + "hub.themes.rate_tap", + "hub.themes.rate_sign_in", + "hub.themes.view_on_site", + "hub.themes.open_builder", + "hub.themes.open_builder_short", + "hub.themes.open_in_builder", + "hub.themes.builder_title", + "hub.themes.builder_hint", + "hub.submit_theme.create_title", + "hub.submit_theme.create_subtitle", + "hub.submit_theme.edit_title", + "hub.submit_theme.edit_subtitle", + "hub.submit_theme.create_blurb", + "hub.submit_theme.edit_blurb", + "hub.submit_theme.field_title", + "hub.submit_theme.title_required", + "hub.submit_theme.field_description", + "hub.submit_theme.description_placeholder", + "hub.submit_theme.description_required", + "hub.submit_theme.field_tags", + "hub.submit_theme.tags_hint", + "hub.submit_theme.field_json", + "hub.submit_theme.json_required", + "hub.submit_theme.json_invalid", + "hub.submit_theme.json_rejected", + "hub.submit_theme.json_warnings", + "hub.submit_theme.json_hint", + "hub.submit_theme.risk_title", + "hub.submit_theme.field_preview", + "hub.submit_theme.optional", + "hub.submit_theme.upload_preview", + "hub.submit_theme.preview_hint", + "hub.submit_theme.preview_too_large", + "hub.submit_theme.replace_preview", + "hub.submit_theme.cancel", + "hub.submit_theme.send", + "hub.submit_theme.save", + "hub.submit_theme.sending", + "hub.submit_theme.saving", + "hub.submit_theme.uploading_preview", + "hub.submit_theme.submit_failed", + "hub.submit_theme.success_create_title", + "hub.submit_theme.success_create_body", + "hub.submit_theme.success_edit_title", + "hub.submit_theme.success_edit_review", + "hub.submit_theme.success_edit_saved", + "hub.submit_theme.got_it", + "hub.my_presets.view_switch", + "hub.my_presets.browse", + "hub.my_presets.mine", + "hub.my_presets.login_title", + "hub.my_presets.login_message", + "hub.my_presets.login_button", + "hub.my_presets.admin_only_title", + "hub.my_presets.admin_only_message", + "hub.my_presets.blurb", + "hub.my_presets.refresh", + "hub.my_presets.loading", + "hub.my_presets.load_error", + "hub.my_presets.empty_title", + "hub.my_presets.empty_message", + "hub.my_presets.status.pending", + "hub.my_presets.status.live", + "hub.my_presets.status.changes_requested", + "hub.my_presets.status.rejected", + "hub.my_presets.status.draft", + "hub.my_presets.pending_revision", + "hub.my_presets.moderator_note", + "hub.my_presets.edit", + "hub.my_presets.withdraw", + "hub.my_presets.delete", + "hub.my_presets.view_on_site", + "hub.my_presets.confirm_withdraw", + "hub.my_presets.confirm_delete", + "hub.my_presets.withdrawn", + "hub.my_presets.deleted", + "hub.my_presets.updated", + "hub.submit_preset.create_title", + "hub.submit_preset.create_subtitle", + "hub.submit_preset.edit_title", + "hub.submit_preset.edit_subtitle", + "hub.submit_preset.create_blurb", + "hub.submit_preset.edit_blurb", + "hub.submit_preset.cancel", + "hub.submit_preset.send", + "hub.submit_preset.save", + "hub.submit_preset.sending", + "hub.submit_preset.saving", + "hub.submit_preset.uploading_photo", + "hub.submit_preset.field_title", + "hub.submit_preset.field_description", + "hub.submit_preset.field_category", + "hub.submit_preset.field_tags", + "hub.submit_preset.field_code", + "hub.submit_preset.field_featured", + "hub.submit_preset.field_photos", + "hub.submit_preset.field_integrations", + "hub.submit_preset.title_required", + "hub.submit_preset.description_required", + "hub.submit_preset.category_required", + "hub.submit_preset.code_required", + "hub.submit_preset.featured_required", + "hub.submit_preset.loading_categories", + "hub.submit_preset.tags_hint", + "hub.submit_preset.code_hint_layout", + "hub.submit_preset.code_hint_paste", + "hub.submit_preset.update_code_from_layout", + "hub.submit_preset.existing_photos", + "hub.submit_preset.kept_photo", + "hub.submit_preset.gallery_photo", + "hub.submit_preset.upload_featured", + "hub.submit_preset.featured_hint", + "hub.submit_preset.replace_featured", + "hub.submit_preset.upload_photos", + "hub.submit_preset.photos_hint", + "hub.submit_preset.optional", + "hub.submit_preset.no_new_photos", + "hub.submit_preset.uploading_featured", + "hub.submit_preset.integrations_hint", + "hub.submit_preset.success_create_title", + "hub.submit_preset.success_create_body", + "hub.submit_preset.success_edit_title", + "hub.submit_preset.success_edit_review", + "hub.submit_preset.success_edit_saved", + "hub.submit_preset.got_it", + "hub.dashboard.presets_awaiting_review", + "hub.dashboard.presets_changes_requested", + "hub.dashboard.view_my_presets", + "hub.freespace.title", + "hub.freespace.ready", + "hub.freespace.desc", + "hub.freespace.needs_connect", + "hub.freespace.install_connect", + "hub.freespace.step1", + "hub.freespace.step2", + "hub.freespace.step3", + "hub.sections_width", + "hub.sections_width_desc", + "hub.sections_width_default", + "hub.sections_width_default_hint", + "hub.sections_width_full", + "hub.sections_width_full_hint", + "hub.sections_width_custom", + "hub.sections_width_custom_hint", + "hub.sections_column_width", + "hub.sections_gap", + "hub.sections_gap_placeholder", + "freespace.import_sections", + "freespace.import_sections_action", + "freespace.requires_connect", + "freespace.narrow_hint", + "freespace.empty", + "freespace.add_card", + "freespace.breakpoints", + "freespace.bp_desktop", + "freespace.bp_laptop", + "freespace.bp_tablet", + "freespace.bp_phone", + "freespace.select_hint", + "freespace.device_preview_hint", + "freespace.width_bound", + "freespace.width_bounds_hint", + "freespace.outside_bounds_hint", + "freespace.toolbar", + "freespace.tb_field_x", + "freespace.tb_field_y", + "freespace.tb_field_w", + "freespace.tb_field_h", + "freespace.tb_field_r", + "freespace.tb_pin", + "freespace.tb_pin_left", + "freespace.tb_pin_center", + "freespace.tb_pin_right", + "freespace.tb_pin_stretch", + "freespace.tb_pin_inactive", + "freespace.tb_align", + "freespace.tb_align_left", + "freespace.tb_align_center", + "freespace.tb_align_right", + "freespace.tb_align_top", + "freespace.tb_layer", + "freespace.tb_front", + "freespace.tb_forward", + "freespace.tb_backward", + "freespace.tb_back", + "freespace.tb_edit", + "freespace.tb_duplicate", + "freespace.tb_delete", + "freespace.tb_snap", + "freespace.tb_align_middle", + "freespace.tb_align_bottom", + "freespace.tb_selected", + "freespace.tb_distribute", + "freespace.tb_distribute_h", + "freespace.tb_distribute_v", + "freespace.tb_distribute_need", + "freespace.tb_multi_hint", + "freespace.bp_layout", + "freespace.use_desktop", + "freespace.use_desktop_hint", + "freespace.custom_layout", + "freespace.custom_layout_hint", + "freespace.reset_to_desktop_title", + "freespace.reset_to_desktop_body", + "freespace.reset_to_desktop_confirm", + "freespace.delete_selected_title", + "freespace.delete_selected_body", + "freespace.menu_options", + "freespace.menu_edit", + "freespace.menu_copy", + "freespace.menu_cut", + "freespace.menu_reset_rotation", + "freespace.menu_rotate", + "freespace.menu_pin_to", + "freespace.menu_pin_left", + "freespace.menu_pin_center", + "freespace.menu_pin_right", + "freespace.menu_pin_stretch", + "freespace.editor_section", + "freespace.editor_canvas_widths", + "freespace.editor_canvas_widths_help", + "freespace.editor_default", + "freespace.editor_desktop_help", + "freespace.editor_phone_help", + "freespace.editor_min_height", + "freespace.editor_min_height_help", + "freespace.editor_grid", + "freespace.editor_grid_help", + "freespace.editor_narrow", + "freespace.editor_narrow_help", + "freespace.editor_narrow_stack", + "freespace.editor_narrow_scale", + "freespace.editor_canvas_width_legacy" + ], + "lastRun": "2026-09-30T06:46:18.527Z", + "engine": "openai:gpt-4o-mini" +}