DeepLAPIを使えるように設定する
DeepLのアカウントを作成する
今回は、以下のサイトにある「DeepL API Free」でアカウントを作成し、APIを投げる際に必要となるトークンを取得します。アカウントを作成する際に不正利用防止のため、クレジットカードを登録する必要があるのでちょっとめんどくさいです
-
DeepL Pro | テキスト、Wordその他の文書ファイルをセキュアに翻訳
スピーディ、正確かつ安全に翻訳。DeepL Proは個人またはチームでご利用いただけます。
続きを読む
アクセストークンを確認する
アカウント作成後、画面右上にあるユーザーIDをクリックし、アカウントタブの下の方にアクセストークンがあります。それを使用してAPIを呼び出すことができます
文字列翻訳を呼び出す
送信するデータは先ほど確認したアクセストークンと翻訳したい言語、今回は日本語を指定しています
string postURL = "https://api-free.deepl.com/v2/translate";
// POSTするデータを作成
WebRequest req = WebRequest.Create(postURL);
req.Method = "POST";
req.Headers.Add("Authorization", $"DeepL-Auth-Key {deepAPIAuthCode}");
req.ContentType = "application/x-www-form-urlencoded";
var postData = "text=" + Uri.EscapeDataString("翻訳したい英文");
postData += "&target_lang=" + Uri.EscapeDataString("JA"); // 日本語に翻訳
上記内容で送信した結果はきちんと翻訳されていました
ファイル内翻訳を呼び出す
ファイルの翻訳は大きく3ステップになります
翻訳したいファイルをアップロードする
今回はWordファイルに英文を記載し、それを翻訳してもらいます
string uploadURL = "https://api-free.deepl.com/v2/document";
var uploadWebRequest = WebRequest.Create(uploadURL) as HttpWebRequest;
uploadWebRequest.Method = "POST";
uploadWebRequest.Headers.Add("Authorization", $"DeepL-Auth-Key {deepAPIAuthCode}");
var multipartContent = new MultipartFormDataContent();
multipartContent.Add(new StringContent("JA"), "target_lang"); // 日本語に翻訳
multipartContent.Add(new ByteArrayContent(File.ReadAllBytes("翻訳したいファイルパス")), "file", "アップロードするファイル名");
uploadWebRequest.ContentType = multipartContent.Headers.ContentType.ToString();
uploadWebRequest.ContentLength = multipartContent.Headers.ContentLength.Value;
using (var stream = uploadWebRequest.GetRequestStream())
{
multipartContent.CopyToAsync(stream).Wait();
}
アップロードしたファイルの状態を取得
アップロードしたファイルの状態を確認し、翻訳が完了しているようであれば翻訳されたファイルをダウンロードできます
string uploadFileStatusURL = $"https://api-free.deepl.com/v2/document/{documentId}";
// POSTするデータを作成(アップロードしたファイルのステータス取得用)
WebRequest uploadFileStatusRequest = WebRequest.Create(uploadFileStatusURL);
uploadFileStatusRequest.Method = "POST";
uploadFileStatusRequest.Headers.Add("Authorization", $"DeepL-Auth-Key {deepAPIAuthCode}");
uploadFileStatusRequest.ContentType = "application/x-www-form-urlencoded";
var statusPostData = "document_key=" + Uri.EscapeDataString(documentKey);
var statusData = Encoding.ASCII.GetBytes(statusPostData);
uploadFileStatusRequest.ContentLength = statusData.Length;
using (var stream = uploadFileStatusRequest.GetRequestStream())
{
stream.Write(statusData, 0, statusData.Length);
}
翻訳されたファイルをダウンロードする
上記で取得したステータスが「done」になっていると翻訳が完了しており、ダウンロードすることができるので、実際にダウンロードします
var translationFileDownloadURL = $"https://api-free.deepl.com/v2/document/{documentId}/result";
// POSTするデータを作成(翻訳されたファイル取得用)
WebRequest translationFileDownloadRequst = WebRequest.Create(translationFileDownloadURL);
translationFileDownloadRequst.Method = "POST";
translationFileDownloadRequst.Headers.Add("Authorization", $"DeepL-Auth-Key {deepAPIAuthCode}");
translationFileDownloadRequst.ContentType = "application/x-www-form-urlencoded";
var translationPostData = "document_key=" + Uri.EscapeDataString(documentKey);
var translationData = Encoding.ASCII.GetBytes(translationPostData);
translationFileDownloadRequst.ContentLength = translationData.Length;
using (var stream = translationFileDownloadRequst.GetRequestStream())
{
stream.Write(translationData, 0, translationData.Length);
}
// レスポンスデータを処理(ファイルのダウンロード)
using (var response = translationFileDownloadRequst.GetResponse())
using (var stream = response.GetResponseStream())
{
using (var fileStream = new FileStream(_outPutFilePath, FileMode.Create, FileAccess.Write))
{
stream.CopyTo(fileStream);
}
}
最後に
今回作成したコードをGitHubにアップロードしていますので、参考にしてください
-
BlogSampleCodeProjects/DeepLAPISample at main · nasuton/BlogSampleCodeProjects · GitHub
Project for sample code used in the blog.(Blogで記載しているサンプルコード ...
続きを読む
また、今回紹介している内容は以下のドキュメントに詳しく記載されています
-
Introduction | DeepL API Documentation
Learn more about the DeepL API's capabilities and common use ...
続きを読む
おまけ
curlコマンドをC#に置き換える
ネットでDeepLのことを調べていた際に、curlコマンドをC#に置き換えてくれるというWebサービスを見つけました。このサービスのおかげである程度は楽して作業ができました
よくサンプルでcurlコマンドを使ってのリクエストが書かれていることが多々あるので重宝しそう
-
curl to C# converter
curl to C# converter online
続きを読む
使用状況の確認方法
無料プランだと文字数制限があるので、それを超えないように注意が必要です
その確認方法はアカウントページのご利用状況のタブをクリックすると見れます
会社紹介
私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています
会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造
この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています
ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します
-
アドバンスド・ソリューション株式会社
アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...
サイトへ移動
-
お問い合わせ | アドバンスド・ソリューション株式会社
お問い合わせはこちら