十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何用 multi_lang.json 本地覆盖 Xiaomi Home 集成实体名称的多语言翻译?

如何用 multi_lang.json 本地覆盖 Xiaomi Home 集成实体名称的多语言翻译? 如何用 multi_lang.json 本地覆盖 Xiaomi Home 集成实体名称的多语言翻译【免费下载链接】ha_xiaomi_homeXiaomi Home Integration for Home Assistant项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home在 Home Assistant 中Xiaomi Home 集成导入米家设备后实体的显示名称来自设备厂商配置在 MIoT Cloud 上的多语言文件。如果某台设备的翻译缺失、译名不准确或者你想按自己的习惯统一实体叫法可以编辑集成内置的multi_lang.json它是本地维护的多语言字典优先级高于从云端下载的多语言文件用于补充或修改设备的多语言翻译。本文说明如何定位要覆盖的 MIoT-Spec-V2 实例、按文档格式写入覆盖条目并在集成中执行“更新实体转换规则”使修改生效。前提条件来自 README.md 的安装说明Home Assistant 版本要求 Core ≥ 2024.4.4Operating System ≥ 13.0且已完成 Xiaomi Home 集成的安装与登录。multi_lang.json 的作用与格式文件位于集成目录下custom_components/xiaomi_home/miot/specs/multi_lang.json即 custom_components/xiaomi_home/miot/specs/multi_lang.json当前文件中已包含网关、扫地机、门锁、温控器等设备的多语言覆盖条目可以直接参考其写法。multi_lang.json的结构如下README.md 与 doc/README_zh.md “多语言支持”一节{ MIoT-Spec-V2 device instance: { language code: { instance code: translation: str } } }三层键的取法设备实例urn键为 MIoT-Spec-V2 设备实例的 urn不含版本号 “version” 字段。urn 的完整格式是urn:namespace:type:name:value[:vendor-product:version]所以写键时取冒号分隔的前 6 段例如urn:miot-spec-v2:device:health-pot:0000A051:chunmi-a1。language code取值为zh-Hans、zh-Hant、en、es、ru、fr、de、ja、it、nl、pt、pt-BR、tr对应集成配置选项中可选的十三种语言。注意加载逻辑见 custom_components/xiaomi_home/miot/miot_spec.py 中的_MIoTSpecMultiLang.set_spec_async只读取与当前集成语言一致的那组翻译需要覆盖其他语言时要分别写入对应语言码的条目。instance code要覆盖的 MIoT-Spec-V2 实例代码格式如下其中 siid、piid、eiid、aiid、value 均为十进制三位整数service:siid # 服务 service:siid:property:piid # 属性 service:siid:property:piid:valuelist:value # 属性取值列表的索引值 service:siid:event:eiid # 事件 service:siid:action:aiid # 方法以文件中已有的条目为例现有内容摘录{ urn:miot-spec-v2:device:plant-monitor:0000A030:hhcc-v1: { en: { service:002:property:001: Soil Moisture }, zh-Hans: { service:002:property:001: 土壤湿度, service:002:property:003: 光照强度 } } }添加一条覆盖翻译文档给出的标准示例覆盖一款健康壶在繁体中文下的服务、属性、取值列表、方法与事件名称{ urn:miot-spec-v2:device:health-pot:0000A051:chunmi-a1: { zh-Hant: { service:002: 養生壺, service:002:property:001: 工作狀態, service:002:property:001:valuelist:000: 待機中, service:002:action:002: 停止烹飪, service:005:event:001: 烹飪完成 } } }写入自己设备的条目时按以下顺序操作确认目标设备的 urn。集成依据设备实例的 urn 解析 MIoT-Spec-V2 并翻译实例名称你需要找到目标设备对应的 urn去掉末尾的 version 段后作为字典键。如果 urn 带了版本字段例如多了第 7 段本地条目将无法命中翻译不会生效。确定要改的实例服务名、属性名、取值项valuelist 索引、事件或方法分别对应上面的 5 种 instance code 格式。只写你要覆盖的键不写表示沿用云端翻译。在你的 Home Assistant 配置目录中找到custom_components/xiaomi_home/miot/specs/multi_lang.json并编辑。编辑时保持整个文件仍是合法 JSON键名用双引号、条目间用逗号分隔改坏格式会导致本地文件无法加载。让修改生效更新实体转换规则修改custom_components/xiaomi_home/miot/specs目录下的任何文件spec_filter.yaml、spec_modify.yaml、multi_lang.json等后必须在集成配置页执行“更新实体转换规则”才会生效文档给出的路径是Settings Devices services Configured Xiaomi Home CONFIGURE Update entity conversion rules具体过程与 config_flow.py 中async_step_update_trans_rules的实现一致打开集成的 CONFIGURE 选项页勾选update_trans_rules中文界面为“更新实体转换规则”点击 Next进入“更新实体转换规则”页面。页面会提示该操作将更新当前集成实例中设备的实体信息包含 MIoT-Spec-V2 多语言配置、布尔值翻译、过滤规则并显示待更新的规则条数{urn_count}勾选confirm中文界面为“确认更新”并点击 Next 开始更新不勾选则跳过更新本地修改不会生效。两点需要注意均来自该步骤页面的说明该配置为全局配置会更新本地缓存影响所有集成实例该操作会耗费一定时间执行期间不要中途离开配置流程。验证结果更新完成后在 Home Assistant 中查看对应设备的实体名称。实体名称按当前集成语言展示你写入的翻译如示例中的“土壤湿度”“養生壺”应替换掉原来的云端译名。如果multi_lang.json的 JSON 格式不合法加载会在日志中报错multi lang, load json file error见 miot_spec.py此时本地覆盖不会应用需要回到文件修正格式后再次执行更新。若集成未能从云端获取多语言文件日志会输出get multi lang from cloud failed, urn, 错误。云端获取失败不影响本地文件的加载顺序本地条目仍会覆盖云端内容。限制每次加载只使用与当前集成语言匹配的语言码条目集成支持的语言就是上面列出的 13 种语言码写错等于没有写。instance code 中的 siid、piid、eiid、aiid、value 必须是十进制三位整数如001、000位数不对的键会被加载逻辑丢弃。CHANGELOG.md 中记录过v0.3.0 变更了部分实体 unique_id 的生成规则勾选“更新实体转换规则”会导致部分实体已配置的自动化失效如果你升级时担心自动化受影响可按该说明中的补丁处理。完成上述步骤后实体名称即可按你在multi_lang.json中定义的译文显示且不会再被云端多语言文件覆盖后续调整译文时改文件并再次执行“更新实体转换规则”即可。【免费下载链接】ha_xiaomi_homeXiaomi Home Integration for Home Assistant项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表