我正在尝试查找/替换长语言文件:
$_LANG['accountinformation'] = "Account Information";
$_LANG['accountstatistics'] = "Account Statistics";
成为:
$_LANG['accountinformation'] = "Informations du compte";
$_LANG['accountstatistics'] = "Statistiques du compte";
知道我在这样的文件中有完整的翻译:
Informations du compte
Statistiques du compte
有没有办法用文本编辑器替换这些短语,比如BBedit使用grep或其他东西而不是手工复制/粘贴每一个?
答案 0 :(得分:0)
以下是使用批处理/ vbs混合脚本的方法:
@echo off
setlocal
call :FindReplace "Account Statistics" "Statistiques du compte" Thefile.txt
call :FindReplace "Account Information" "Informations du compte" Thefile.txt
exit /b
:FindReplace <findstr> <replstr> <file>
set tmp="%temp%\tmp.txt"
If not exist %temp%\_.vbs call :MakeReplace
for /f "tokens=*" %%a in ('dir "%3" /s /b /a-d /on') do (
for /f "usebackq" %%b in (`Findstr /mic:"%~1" "%%a"`) do (
echo(&Echo Replacing "%~1" with "%~2" in file %%~nxa
<%%a cscript //nologo %temp%\_.vbs "%~1" "%~2">%tmp%
if exist %tmp% move /Y %tmp% "%%~dpnxa">nul
)
)
del %temp%\_.vbs
exit /b
:MakeReplace
>%temp%\_.vbs echo with Wscript
>>%temp%\_.vbs echo set args=.arguments
>>%temp%\_.vbs echo .StdOut.Write _
>>%temp%\_.vbs echo Replace(.StdIn.ReadAll,args(0),args(1),1,-1,1)
>>%temp%\_.vbs echo end with
将file.txt更改为您的文件名。将脚本保存为文本编辑器中的replace.cmd,然后从命令行运行它。
答案 1 :(得分:0)
如果你试图说文件是对齐的 - 英文文件中每行只有一个字符串定义,而法语包含相同顺序的翻译等价,每行一个 - 然后是一个简单{ {1}}进行一些后期处理应该这样做。
paste
如果您的paste strings.def fr.txt |
sed 's/"[^"]*";\t\(.*\)/"\1";/' >output.txt
方言不支持sed
标签,则必须在许多shell中提供文字标签( ctrl-v标签)。< / p>