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

PowerShell脚本子目录适配及CSV翻译错位问题修复请求

PowerShell脚本修复:CSV翻译更新的两个问题解决

问题1:子目录无法匹配对应_Inglese文件

原因

原代码构造_Inglese文件路径时,硬编码使用了根目录$SourceDir,而非当前CSV文件所在的子目录,导致子目录里的CSV找不到对应的翻译文件。

修复方法

将_Inglese文件路径的构造代码从:

$column3FilePath = Join-Path -Path $SourceDir -ChildPath $column3FileName

修改为:

$column3FilePath = Join-Path -Path $csvFile.DirectoryName -ChildPath $column3FileName

问题2:带※的多行翻译内容错位

原因

原代码按索引逐行匹配CSV和_Inglese内容,但_Inglese中带※的行属于上一个条目的多行翻译内容,直接按索引匹配会导致后续翻译条目全部错位,对应到错误的CSV条目上。

修复方法

先预处理_Inglese文件,把带※的行合并到前一个有效条目里,生成和CSV条目数量一致的翻译列表,再一一对应更新。


完整修复后的脚本

param(
    $SourceDir = $PWD,
    $OutDir = $PWD,
    $OutFileSuffix = "output" # 输出文件后缀
)

# 获取所有CSV文件(包含子目录)
$csvFiles = Get-ChildItem -Path $SourceDir -Recurse -Filter "*.csv"

foreach ($csvFile in $csvFiles) {
    # 构造对应_Inglese文件的路径(修复问题1:用CSV所在目录)
    $column3FileName = "{0}_inglese.txt" -f $csvFile.BaseName
    $column3FilePath = Join-Path -Path $csvFile.DirectoryName -ChildPath $column3FileName
    
    if (Test-Path $column3FilePath) {
        # 导入CSV(自动处理跨行字段)
        $primaryCsv = Import-Csv -Encoding utf8 -Path $csvFile.FullName
        # 读取_Inglese文件内容
        $column3Data = Get-Content -Encoding utf8 $column3FilePath
        
        # 预处理_Inglese内容:合并带※的行到前一个条目
        $processedTranslations = @()
        foreach ($line in $column3Data) {
            if ($line -match "※") {
                # 带※的行,追加到最后一个条目
                if ($processedTranslations.Count -gt 0) {
                    $processedTranslations[-1] += "`n$line"
                }
            } else {
                # 普通行,添加为新条目
                $processedTranslations += $line
            }
        }

        # 一一对应更新CSV的第二列(translation列)
        for ($i = 0; $i -lt $primaryCsv.Count; $i++) {
            if ($i -lt $processedTranslations.Count) {
                $primaryCsv[$i].translation = $processedTranslations[$i]
            }
        }

        # 构造输出文件路径
        $outputFilePath = Join-Path -Path $csvFile.DirectoryName -ChildPath ("{0}{1}.csv" -f $csvFile.BaseName, $OutFileSuffix)
                    
        # 导出带BOM的UTF-8 CSV
        $primaryCsv | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding UTF8
    }
    else {
        Write-Warning "未找到$($csvFile.Name)对应的翻译文件"
    }
}

关键修复说明

  1. 子目录适配:通过$csvFile.DirectoryName定位_Inglese文件,确保子目录中的CSV能找到同目录下的翻译文件。
  2. 多行翻译合并:遍历_Inglese文件时,把带※的行直接追加到上一个翻译条目,生成和CSV条目数量匹配的翻译列表,避免索引错位。
  3. CSV跨行处理:Import-Csv会自动识别未闭合引号的跨行字段,确保CSV条目数量和实际内容一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:37:26