Weblate 的 Flat XML 文件格式:从组件配置到自定义标签结构解析
后端开发工具【免费下载链接】weblateWeb based localization tool with tight version control integration.项目地址https://gitcode.com/gh_mirrors/we/weblate点击查看免费下载本篇技术指南以 Weblate 官方文档 docs/formats/flatxml.rst 为骨架系统讲解 Weblate 对扁平 XMLFlat XML翻译文件的支持方式包括它的文件结构约定、单语种Monolingual工作流、组件配置方法以及自 5.13 版本起引入的标签名/属性名自定义能力。读完本文你将能独立把基于str key...结构的扁平 XML 资源文件接入 Weblate并针对自有 XML 方言灵活定制解析规则。Flat XML 是什么Flat XML扁平 XML是一种结构非常简单的 XML 翻译资源格式所有待翻译字符串都以扁平的元素列表形式平铺在根节点下不包含嵌套的分组或属性式元数据。Weblate 通过 translate-toolkit 的flatxml加载器解析这类文件并在前端界面中将其命名为Flat XML fileAPI 标识符为flatxml。一个典型的 Flat XML 文件如下来自仓库测试数据 weblate/trans/tests/data/cs-flat.xml?xml version1.0 encodingUTF-8? root str keyhello_worldHello World!/str str keyresource_keyTranslated value./str /root从源码角度看Weblate 的实现位于 weblate/formats/ttkit.py 中的FlatXMLFormat类format_id flatxmlloader (flatxml, FlatXMLFile)第 3372–3399 行。其关键特征如下monolingual True该格式是单语种格式翻译文件本身就是键 → 目标语言文本的映射源字符串source实际上取自该语言文件中的目标文本unit_class FlatXMLUnitFlatXMLUnit第 1265–1284 行中context在存在模板时返回模板的 source否则返回自身 sourcesource则取自mainunit.target即把文件里的文本当作源内容处理supports_flags True支持为字符串附加翻译标记flags空文件模板?xml version1.0 encodingutf-8?\nroot/root新建翻译时以此为初始内容。另外FlatXMLFormat也是 Weblate 中 ResourceDictionary 格式XAML 资源字典的父类实现说明扁平 XML 解析逻辑具备良好的复用性。支持的格式特性一览根据文档自动生成的特性清单 docs/snippets/format-features/flatxml-features.rstFlat XML 在 Weblate 中的能力边界可以总结为下表特性支持情况文件扩展名.xml语言模式单语种Monolingual复数形式不支持字符串描述Description不支持解释Explanation不支持上下文Context不支持位置Location不支持翻译标记Flags支持API 标识符flatxml只读字符串不支持移除过时字符串不支持这里需要特别提醒两点一是 Flat XML 是单语种格式因此使用它时通常需要配置单语种基础语言文件详见下一节组件配置二是它不支持复数翻译复数相关字符串时需要采用其他格式方案。组件配置单语种工作流的典型设置在 Weblate 中接入 Flat XML 翻译时组件Component的典型配置如下对应 docs/formats/flatxml.rst 中的 Weblate configuration 一节配置项建议值File mask文件掩码locale/*.xmlMonolingual base language file单语种基础语言文件locale/en.xmlTemplate for new translations新翻译模板留空EmptyFile format文件格式Flat XML file这套配置的含义File mask使用locale/*.xml匹配各语言目录下的 XML 文件*位置会被替换为语言代码例如cs_CZ、de等Weblate 依据该掩码自动发现语言Monolingual base language file指向locale/en.xml即英文基准文件。由于 Flat XML 是单语种格式Weblate 需要以某个语言文件作为源基准来比较和跟踪其他语言的翻译进度Template for new translations 留空单语种格式的新语言文件通常直接以基础语言文件或空模板为起点生成不需要额外的*.pot模板File format选择Flat XML file即绑定到上述FlatXMLFormat实现。在 weblate/formats/tests/test_formats.py 的FlatXMLFormatTest第 3536–3552 行中测试用例也印证了这一约定MASK xml/*.xml、BASE TEST_FLATXML即同一个基准文件、EXPECTED_PATH xml/cs_CZ.xml翻译后的文件按语言代码命名输出。自定义标签与属性名自 5.13 起自 Weblate5.13版本起Flat XML 的标签名和属性名可以通过 文件格式参数file format params 定制。这意味着你不再被root/str/key这套默认命名束缚可以直接适配自有项目的 XML 方言。三个可定制参数参数名默认值作用flatxml_root_namerootXML 根节点名称flatxml_value_namestr承载翻译文本的元素名称值元素flatxml_key_namekey承载字符串键名的属性名称这三个参数在 weblate/trans/file_format_params.py 中注册第 627–655 行均限定file_formats (flatxml,)类型为CharFieldmin_length 1。也就是说参数值至少 1 个字符且不会被截断为空。如何映射到解析器参数通过FlatXMLFormat.get_format_class_kwargs()与get_unit_class_kwargs()两个方法传入 translate-toolkit 加载器weblate/formats/ttkit.py 第 3382–3399 行return { root_name: params.get(flatxml_root_name), value_name: params.get(flatxml_value_name), key_name: params.get(flatxml_key_name), }其中root_name/value_name/key_name传给文件加载器用于定位根节点、值元素与键属性element_name/attribute_name则传给FlatXMLUnit用于在写入单个单元时生成正确的元素结构。实战示例自定义命名仓库测试数据 weblate/trans/tests/data/cs-flat-custom.xml 展示了一种完全不同的命名风格?xml version1.0 encodingUTF-8? dictionary entry namehello_worldHello World!/entry entry nameresource_keyTranslated value./entry /dictionary对应的参数配置为见 weblate/formats/tests/test_formats.py 中CustomFlatXMLFormatTest第 3555–3563 行FILE_FORMAT_PARAMS { flatxml_root_name: dictionary, flatxml_value_name: entry, flatxml_key_name: name, }测试同时验证了写入行为新建单元时生成entry namekeySource string/entry\nNEW_UNIT_MATCH证明自定义命名不仅影响读取解析也完整作用于写入输出。参数空白的自动归一化test_parameter_whitespace_is_normalized第 3565–3573 行专门验证即便传入带前后空白的参数值如 dictionary 、 entry 、 name 解析器也能正确归一化并正常解析全部单元。因此在实际配置时不必担心手误输入多余空格导致解析失败。在 Web 界面中配置自定义参数在 Weblate 的组件创建/编辑表单中选中Flat XML file格式后文件格式参数区会显示上述三个字段FlatXML Root name、FlatXML value name、FlatXML key name对应file_format_params.py中的label。填写时注意默认值即可开箱即用若你的文件就是rootstr key....../str/root结构三个参数均可留空采用默认值仅当文件方言不同才需要自定义例如根节点为dictionary、值元素为entry、键属性为name时才显式填写对应参数每个参数至少 1 个字符不能填空字符串参数对所有使用该格式的翻译文件统一生效属于组件级配置而不是单文件级。与相关格式的衔接理解 Flat XML 的定位还需要把它放进 Weblate 的格式生态中看待它依赖translate-toolkit的flatxml加载器属于数据库式/轻量 XML一族与 ResourceDictionaryXAML 资源字典共享同一套实现基类作为单语种格式其工作流与双语格式如 Gettext PO、XLIFF截然不同——没有独立的msgid/msgstr结构而是键 目标文本直接映射因此必须配置单语种基础语言文件来充当源基准由于不支持复数、描述、上下文等高级特性它最适合结构扁平的键值型 XML 资源场景若需要复数支持应评估改用其他格式。小结Flat XML 是 Weblate 中处理扁平键值型 XML 资源的标准方案默认结构rootstr keykeytext/str/root开箱即用单语种配置File mask 基础语言文件清晰简单自 5.13 起引入的flatxml_root_name/flatxml_value_name/flatxml_key_name三个格式参数则让你能无缝接入dictionary/entry/name等任意自有命名的 XML 方言且解析与写入行为完全一致、空白自动归一化。配合 docs/formats/flatxml.rst 官方文档与 weblate/formats/tests/test_formats.py 中的测试用例你可以快速验证和落地这套配置。赞分享后端开发工具【免费下载链接】weblateWeb based localization tool with tight version control integration.项目地址https://gitcode.com/gh_mirrors/we/weblate点击查看免费下载相关推荐Weblate Flat XML 文件格式深度指南单语 XML 翻译支持与自定义标签配置Weblate Flat XML 文件格式深度指南单语 XML 翻译支持与自定义标签配置 导读 本文聚焦 Weblate 对 Flat XML扁平 XML后端开发工具Weblate 支持 WPF ResourceDictionary.xaml格式从文件结构到组件配置的完整指南Weblate 支持 WPF ResourceDictionary.xaml格式从文件结构到组件配置的完整指南 ResourceDictionary 是后端开发工具Jekyll Theme Chirpy 版本演进全解析从 5.2 到 7.6 的功能变迁与技术内幕Jekyll Theme Chirpy 版本演进全解析从 5.2 到 7.6 的功能变迁与技术内幕 本文基于仓库 docs/CHANGELOG.md http后端开发工具上一篇解读 docker-selenium 4.34.0 的 Firefox 113 镜像发布记录与标签体系下一篇如何实现无痛目录迁移FreeMove专业工具终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

自然拼读记忆体系:从字母音到拼读规则,七天攻克英语认读

自然拼读记忆体系:从字母音到拼读规则,七天攻克英语认读

孩子背单词像看天书?一个字母一个字母死记 hard 拼成 h-a-r-d,转头就忘。做了三年英语启蒙,我见过太多家长卡在“认读”这一步。今天这篇不整虚的,把英语 Phonics(自然拼读)的完整记忆体系拆开揉碎&#xf…

2026/10/11 12:52:50 阅读更多 →
研发总监用AI补齐设计短板的五个实战场景

研发总监用AI补齐设计短板的五个实战场景

1. 为什么研发总监要用 AI 补齐设计短板研发总监这个位置,最尴尬的事情之一就是:产品要上线,UI 还没定稿;运营要物料,设计排不上期;老板看重品牌质感,团队里却一个专职设计师都没有。你心里清楚…

2026/10/10 8:46:20 阅读更多 →
2026论文季降AIGC实战:10个工具组合与完整改写方法论

2026论文季降AIGC实战:10个工具组合与完整改写方法论

2026年的论文季,很多本科生已经发现:导师的审核清单里悄悄多了一项“AIGC检测报告”。查重只是查你有没有抄,AIGC检测查的却是“这段话到底是不是机器写的”。于是“降AIGC”成了校园里最实际的需求。这篇内容不谈投机取巧,而是从…

2026/10/10 8:46:20 阅读更多 →

最新新闻

新能源充电站负荷预测数据集构建:从数据对齐到LSTM建模

新能源充电站负荷预测数据集构建:从数据对齐到LSTM建模

简介:新能源充电站负荷预测数据集面向电力系统、智能交通与机器学习领域的研究者与开发者,整合时间序列用电记录、充电行为特征与外部环境参数,可支撑充电负荷预测建模、站点效能评估及电网协同优化研究。整套资源共32个文件,压缩…

2026/10/11 12:53:39 阅读更多 →
2G树莓派5打造完全离线AI语音助手实战

2G树莓派5打造完全离线AI语音助手实战

1. 项目概述:为什么2G树莓派5能撑起一个“完全离线”的AI语音助手?最近刷到不少标题党视频,说什么“8G版树莓派5才配跑AI”,点进去一看,全是调用云端API、依赖网络唤醒词检测、语音转文字扔给OpenAI再回传——这哪是离…

2026/10/11 12:53:39 阅读更多 →
RK3588嵌入式AI手写板全链路实战:从模型训练到NPU部署

RK3588嵌入式AI手写板全链路实战:从模型训练到NPU部署

做嵌入式AI开发这么久,手写板这个项目算是我在RK3588上折腾得最尽兴的一次。很多人觉得手写板不就是一块电磁感应板加个USB线,顶多再配个压感协议,能有什么AI含量?但加上RK3588这块自带6TOPS NPU的算力板子之后,整个玩…

2026/10/11 12:53:39 阅读更多 →
GFPGAN老照片修复Python实战:从源码环境到参数调优

GFPGAN老照片修复Python实战:从源码环境到参数调优

简介:面向图像处理学习者和开发者的GFPGAN老照片修复Python源码工程,以泛用性人脸先验引导修复网络为核心,结合GAN生成对抗机制增强人脸细节,可用于老照片人像修复、画面清晰度恢复等场景。压缩包共51个文件、约6.09MB&#xff0c…

2026/10/11 12:53:39 阅读更多 →
汽车传感器与执行器实战解析:从信号链路到故障排查

汽车传感器与执行器实战解析:从信号链路到故障排查

作为一个常年泡在汽车电子电气系统里的人,我对“Automotive Sensors and Actuators”这个名字再熟悉不过。它既是车辆工程和汽车电子相关专业的一门核心课程,也是电控开发、标定、诊断人员绕不开的基本功。说白了,传感器就是电控系统的“五官…

2026/10/11 12:53:39 阅读更多 →
SL3170 降压恒压150V耐压 内置MOS管 支持输出12V1A

SL3170 降压恒压150V耐压 内置MOS管 支持输出12V1A

在非隔离辅助电源、电动工具、电动自行车和以太网供电等场景中,输入电压往往覆盖十几伏到上百伏,而控制板又常需要稳定的 12V/1A 级供电。森利威尔 SL3170 正是一款面向此类需求的高压 DC-DC 控制器:内置 150V 功率 MOSFET,支持 1…

2026/10/11 12:52:38 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →