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

如何按语言拆分嵌套字典生成独立JSON文件并后续合并回原结构

嵌套翻译字典拆分与合并实现方案

拆分逻辑说明

  • 先从原始字典的所有翻译key中提取唯一语言标识,比如es_ES、it_IT等,去掉前缀label_即可得到
  • 每个语言对应独立字典,结构为{ 顶层分类键: 对应语言的翻译值 },拆分后可直接导出为单个JSON文件

合并逻辑说明

  • 遍历所有拆分后的语言字典,把语言标识拼回label_xx_XX格式,按顶层分类键聚合所有语言的翻译,还原为原始嵌套结构

完整可运行代码

import json
from collections import defaultdict
import glob

# 按语言拆分函数
def split_translations_by_lang(origin_data: dict) -> dict:
    lang_dict = defaultdict(dict)
    # 遍历所有顶层分类
    for category, trans_map in origin_data.items():
        for trans_key, value in trans_map.items():
            # 提取语言标识 如 label_en_EN 提取出 en_EN
            lang = trans_key.split("_", 1)[1]
            lang_dict[lang][category] = value
    return lang_dict

# 拆分后合并还原函数
def merge_translations(lang_files: list) -> dict:
    merge_result = defaultdict(dict)
    for lang_file in lang_files:
        # 从文件名提取语言标识 如 trans_en_EN.json 提取 en_EN
        lang = lang_file.replace("trans_", "").replace(".json", "")
        with open(lang_file, 'r', encoding='utf-8') as f:
            lang_data = json.load(f)
        # 拼回原始结构
        for category, value in lang_data.items():
            merge_result[category][f'label_{lang}'] = value
    return dict(merge_result)

if __name__ == '__main__':
    # 读取原始翻译文件
    with open('translations.json', 'r', encoding='utf-8') as f:
        origin_data = json.load(f)
    
    # 执行拆分
    split_result = split_translations_by_lang(origin_data)
    
    # 每种语言单独导出为JSON文件
    for lang, data in split_result.items():
        with open(f'trans_{lang}.json', 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, indent=2)
    
    # 读取所有拆分后的文件合并还原
    all_lang_files = glob.glob("trans_*.json")
    merged_data = merge_translations(all_lang_files)
    
    # 校验合并结果正确性
    assert merged_data == origin_data, "合并后数据与原始数据不一致"
    
    # 导出合并后的文件
    with open('merged_translations.json', 'w', encoding='utf-8') as f:
        json.dump(merged_data, f, ensure_ascii=False, indent=2)

代码特性说明

  • 自动识别所有存在的语言,无需手动枚举支持的语言类型
  • 导出的JSON文件兼容中文等非ASCII字符,不会出现乱码
  • 自带一致性校验逻辑,避免合并过程中出现数据丢失或错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:54:01