You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular i18n:JSON格式翻译文件能否支持嵌套键式翻译标记?

Angular i18n JSON 嵌套结构支持说明

Angular 原生的 ng extract-i18n 命令在生成 JSON 格式的翻译文件时,不支持自动将带点分隔符的键(如 parent.child)转换为嵌套 JSON 结构,默认只会生成扁平的键值对,也就是你看到的 {"parent.child":"Test translation"} 这种形式。

不过你可以通过以下方式实现嵌套结构的需求:

  • 编写脚本批量转换:提取完成后,用脚本遍历扁平的 JSON 对象,将带点的键拆分层级,构建嵌套结构。比如可以用一段简单的 Node.js 脚本:

    const fs = require('fs');
    const path = require('path');
    
    const inputPath = path.join(__dirname, 'src/locale/messages.json');
    const outputPath = path.join(__dirname, 'src/locale/messages-nested.json');
    
    const flatMessages = JSON.parse(fs.readFileSync(inputPath, 'utf8'));
    const nestedMessages = {};
    
    Object.keys(flatMessages).forEach(key => {
      const keys = key.split('.');
      let current = nestedMessages;
      keys.forEach((k, index) => {
        if (index === keys.length - 1) {
          current[k] = flatMessages[key];
        } else {
          current[k] = current[k] || {};
          current = current[k];
        }
      });
    });
    
    fs.writeFileSync(outputPath, JSON.stringify(nestedMessages, null, 2));
    

    运行这个脚本就能把扁平的 JSON 转换成嵌套结构。

  • 自定义提取流程:如果需要完全自动化,可以基于 Angular 提供的 i18n 提取工具 API,在提取过程中直接处理键的结构生成嵌套 JSON,不过这种方式需要对 Angular 的 i18n 底层逻辑有一定了解,实现成本稍高。

需要注意的是,Angular 在加载翻译文件时,无论是扁平还是嵌套结构都能正常识别,所以转换后的嵌套文件可以直接用于本地化。

内容的提问来源于stack exchange,提问作者user2439203

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:20:31