何コレ?
大量の英語ファイルをWeb版のDeeplにコピペして翻訳させるのが面倒だったので、フォルダ直下の英語ファイルをまとめて翻訳してしまえ。という欲求から出来ています。(Auto-GPTの出力結果英語なんだもん…)
まぁ、今時、ブラウザがいい感じに翻訳してくれるので、ここまでしなくてもとも思います。
このまま利用する場合、コードの部分をテキストエディタにコピーして拡張子「.vbs」で保存してください。
備考
翻訳したすると元のファイル名の先頭に「translated_」と付いたコピーが作成されます。ちなみに、目は通していますが、ChatGpt4に書かせたコードを手直ししたものです。処理対象は拡張子「txt」に限定されます。
免責に関して
悪意を持ってスクリプトを書いてはいませんが、このスクリプトを参照、利用して発生したあらゆる損害は免責されるものとします。このスクリプトを利用された時点でこの免責事項を承諾されたものとみなします。当然ですが、当スクリプトを改変の上利用された場合も同様に免責されます。
'■■■宣言部■■■ Option Explicit '■■■設定部 '□DeepL API URL( '有料版ではapiのURLが違います。その場合は上のURLを利用してください 'Const apiURL = "https://api.deepl.com/v2/translate" Const apiURL = "https://api-free.deepl.com/v2/translate" '□DeepL API キーを設定 Const apiKey = "your-api-key" '□翻訳したいファイルを格納するフォルダを設定 '仮にC直下に「translng」というフォルダを作成する前提です Const folderPath = "C:\translng" '□入力される言語 Const sourceLang = "EN" '□翻訳したい言語 Const targetLang = "JA" '■■■処理部■■■ Function TranslateText(text, sourceLang, targetLang, apiKey) Dim url, xmlhttp, params, responseText, translation url = apiURL Set xmlhttp = CreateObject("MSXML2.XMLHTTP") xmlhttp.Open "POST", url, False xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" params = "auth_key=" & apiKey & "&text=" & text & "&source_lang=" & sourceLang & "&target_lang=" & targetLang xmlhttp.Send params responseText = xmlhttp.responseText translation = Mid(responseText, InStr(responseText, "text") + 8) translation = Left(translation, InStr(translation, """") - 1) TranslateText = translation End Function Sub TranslateFilesInFolder(folderPath, sourceLang, targetLang, apiKey) Dim fso, folder, file, content, translatedText, translatedFilePath Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(folderPath) For Each file In folder.Files If LCase(fso.GetExtensionName(file.Name)) = "txt" Then content = fso.OpenTextFile(file.Path, 1).ReadAll() translatedText = TranslateText(content, sourceLang, targetLang, apiKey) translatedFilePath = folderPath & "\translated_" & file.Name fso.CreateTextFile(translatedFilePath, True).Write(translatedText) WScript.Echo "Translated " & file.Name & " and saved as " & translatedFilePath End If Next End Sub TranslateFilesInFolder folderPath, sourceLang, targetLang, apiKey