后端开发工具【免费下载链接】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),仅供参考