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

使用Notepad++或脚本查找重复的翻译键行

嘿,我来帮你搞定这个重复翻译键的检测问题!我整理了几个实用的方案,你可以根据自己的习惯选一个:

方案1:用 Notepad++ 正则快速定位重复键

如果你习惯用Notepad++处理文本,这个方法最直接:

  1. 打开你的翻译文件,按下Ctrl+F调出查找面板,切换到正则表达式模式,记得勾选「匹配换行符」(在查找面板的左下角)。
  2. 输入这个正则表达式:^(\w+):.*\R(?=.*^\1:)
    • 简单解释:^(\w+): 精准匹配行首的翻译键(\w包含下划线,刚好符合你键的规则),并把键捕获下来;.*\R 匹配该行剩下的内容和换行;后面的(?=.*^\1:)是正向预查,用来确认这个键在后面的行里还出现过。
  3. 点击「查找全部」,所有存在重复的键的第一行会被高亮出来。如果你想给重复项做标记,也可以切换到替换面板,把匹配内容替换成[重复键] $0,这样一眼就能看到哪些行有问题。
    • 额外小技巧:如果你的文件行数很多,先按字典序排序(编辑→行操作→按字典序排序),重复的键会自动挨在一起,然后用正则^(\w+):.*\R\1:就能快速找到相邻的重复行,更直观!
方案2:Batch 脚本自动统计重复键

如果你喜欢用Windows批处理,这个脚本可以帮你自动统计每个键的出现次数,直接输出重复项:

@echo off
setlocal enabledelayedexpansion

set "file=your_translation_file.txt"  REM 把这里换成你的翻译文件路径
set "tempfile=temp_counts.txt"

REM 提取所有键并计数
for /f "tokens=1 delims=:" %%a in (%file%) do (
    set /a count[%%a]+=1
)

REM 输出重复的键
echo 检测到的重复翻译键:
for /f "tokens=2 delims==" %%a in ('set count[') do (
    if %%a gtr 1 (
        set "key=%%a"
        set "key=!key:count[=!"
        set "key=!key:]=!"
        echo !key! 一共出现了 %%a 次
    )
)

del %tempfile% 2>nul
endlocal

使用方法:把脚本存成check_duplicates.bat,替换掉文件路径,双击运行就能看到结果啦。

方案3:Node.js 脚本精准定位重复行号

如果你的翻译文件很大,或者想知道重复键具体在哪些行,Node.js脚本会更灵活:

const fs = require('fs');
const path = require('path');

const filePath = './your_translation_file.txt'; // 替换成你的文件路径
const keyCounts = new Map();
const duplicateKeys = new Map();

// 逐行读取并处理
fs.readFileSync(filePath, 'utf8').split('\n').forEach((line, index) => {
    line = line.trim();
    if (!line) return; // 跳过空行
    const colonIndex = line.indexOf(':');
    if (colonIndex === -1) return; // 跳过格式不对的行
    const key = line.slice(0, colonIndex).trim();
    if (!key) return;

    if (keyCounts.has(key)) {
        // 记录重复的行号(行号从1开始)
        const existingLines = duplicateKeys.get(key) || [keyCounts.get(key)];
        existingLines.push(index + 1);
        duplicateKeys.set(key, existingLines);
    } else {
        keyCounts.set(key, index + 1);
    }
});

// 输出结果
console.log('=== 重复翻译键检测结果 ===');
if (duplicateKeys.size === 0) {
    console.log('✅ 没有找到任何重复的翻译键!');
} else {
    duplicateKeys.forEach((lineNumbers, key) => {
        console.log(`⚠️ 键 "${key}" 在以下行重复出现:${lineNumbers.join(', ')}`);
    });
}

使用方法:把脚本存成check_duplicates.js,修改文件路径,然后在命令行里运行node check_duplicates.js,就能看到每个重复键的具体行号,直接定位修改超方便!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:52:42