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 @@
+[](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 → 文档打开。
+
+---
+
+
+
+## 快速开始
+
+### 安装
+
+**HACS(推荐)**
+
+[](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"
+}