5
1

More than 1 year has passed since last update.

DeepL glossary(用語集)を API から使って Google Slide を翻訳してみる

Last updated at Posted at 2022-11-25

DeepL glossary(用語集)とは

Announcing glossary support for the DeepL API

2021年8月から glossary が API でサポートされています。

English into Japanese (EN -> JA) もサポートされ、最大1000個までの用語集を管理できます。

Translate your way with the DeepL glossary feature

2022年5月から GUI でも対応開始しています。

用語集の csv ファイル作成

こちらのような csv ファイルを作成して活用します。

kyouheicf/deepl-glossary

例えば製品特有なワードとして登録して、変な翻訳を防ぎたいシーンがあります。

deepl-glossary.csv
Cloudflare,Cloudflare
Workers,ワーカーズ
Rate Limiting,レートリミット
Zero Trust,ゼロトラスト
Remote Browser Isolation,リモートブラウザ分離
Pages,ページズ
Durable Objects,Durable Objects
Images,イメージズ

DeepL glossary(用語集)の作成

こちらの API ドキュメントを参考にします。

Manage Glossaries - DeepL API

entries= の部分は URL エンコードされた文字列になるように csv から変換をかけています。

例えば、"sourceEntry1,targetEntry1\nsourceEntry2,targetEntry2"

"sourceEntry1%2CtargetEntry1%0AsourceEntry2%2CtargetEntry2" というように指定します。

export DEEPL_API_KEY='YOUR_DEEPL_API_KEY'
export ENTRIES=$(awk -v d="\\\n" '{s=(NR==1?s:s d)$0}END{print s}' deepl-glossary.csv | nkf -WMQ | sed 's/=$//g' | tr -d '\n' | tr = % | sed 's/%5Cn/%0A/g')

curl -X POST 'https://api-free.deepl.com/v2/glossaries' \
	-H "Authorization: DeepL-Auth-Key $DEEPL_API_KEY" \
	-d 'name=My%20Glossary' \
	-d 'source_lang=en' \
	-d 'target_lang=ja' \
	-d 'entries='${ENTRIES}'' \
	-d 'entries_format=csv'

以下のように glossary_id が結果として得られますので、Google Slide の翻訳に活用します。

result.json
{
  "glossary_id": "bab585c6-62f8-4660-b11a-37c2941271e9",
  "name": "My Glossary",
  "ready": true,
  "source_lang": "en",
  "target_lang": "ja",
  "creation_time": "2022-11-25T15:51:12.392537+00:00",
  "entry_count": 8
}

Google App Script

以前のコードを DeepL glossary(用語集)を活用できるように変更しましたので、こちらを使います。

Google App Script コード - Google Slides を翻訳する Google App Script - Qiita

結果

以下のスライド内容を比較してみると、おおむね、うまく機能させられたことがわかります。

ただ Cloudflare,Cloudflare は機能していますが、Durable Objects,Durable Objects は「耐久性のあるオブジェクト」となり、機能していません。

英語を英語のまま残しておくような指定の仕方だと結果として翻訳にかけられてしまう可能性があるので、適切な日本語訳を日本語で明示的に指定してあげる使い方が良さそうです。

オリジナル

glossaryTest1

DeepL glossary(用語集)なし

glossaryTest2

DeepL glossary(用語集)あり

glossaryTest3

感想

こうなると次は用語が増えるほど用語集の管理が大変になってくるかもしれませんが、積み重ねで翻訳フィードバックの蓄積を反映できるのは長い目で見たときには品質を改善することにつながってくると思います。

参考

参考:List Glossaries

curl -s 'https://api-free.deepl.com/v2/glossaries' \
	-H "Authorization: DeepL-Auth-Key $DEEPL_API_KEY" | jq

参考:Delete Glossaries

curl -sX DELETE 'https://api-free.deepl.com/v2/glossaries/9c1a9bb8-c3bf-4b73-96ff-01eb741e1830' \
	-H "Authorization: DeepL-Auth-Key $DEEPL_API_KEY" | jq

参考:Delete All Glossaries

curl -s 'https://api-free.deepl.com/v2/glossaries' -H "Authorization: DeepL-Auth-Key $DEEPL_API_KEY" | jq -r '.glossaries[].glossary_id' | while read line
do
  curl -sX DELETE "https://api-free.deepl.com/v2/glossaries/$line" \
	-H "Authorization: DeepL-Auth-Key $DEEPL_API_KEY"
done
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1