🖥
#GCP ( Google Cloud Platform ) の Google翻訳API で #MarkDown を翻訳するとスタイルが崩れ
Prepare
sudo gem install reverse_markdown
sudo gem install redcarpet
- install gcloud
- setting Google Translate API on GCP
tmp/example.md
<pre>
# あまがみヘッダー
*そうだ京都行かない。*
## うずらの卵
- 神風パラダイス
- おおむね大丈夫です
print('孫氏や老師の楽園')
print('一寸先はホタテ')
</pre>
# ~/.secret/google-service-credential.json
your GCP service account file json
# get-token.sh
GOOGLE_APPLICATION_CREDENTIALS=~/.secret/google-service-credential.json gcloud auth
# translate.sh
#!/usr/bin/env bash
basedir=$(dirname "$0")
TOKEN=
"$basedir"/translate.py |
jq --raw-output '.data.translations[].translatedText'
# translate.py
Google Translate API では resouce として html 形式を指定することが出来る (デフォルトはこちら)
[Method: translate | Cloud Translation API | Google Cloud](https://cloud.google.com/translate/docs/reference/rest/v2/translate)
```py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, sys, requests, json, fileinput, re
#resource_message = ''
#for text in sys.stdin.readlines():
# resource_message += re.sub(r'\\n', "\n", text)
resource_message = sys.stdin.read()
from_language = os.environ.get('FROM') if os.environ.get('FROM') else 'ja'
to_language = os.environ.get('TO') if os.environ.get('TO') else 'en'
translate_format = os.environ.get('FORMAT') if os.environ.get('FORMAT') else 'text'
data = {
'q': resource_message,
'source': from_language,
'target': to_language,
'format': translate_format
}
url = 'https://translation.googleapis.com/language/translate/v2'
token = os.environ['TOKEN']
headers = {
'Authorization': 'Bearer {}'.format(token),
'Content-Type': 'application/json',
}
res = requests.post(url, headers=headers, json=data)
print(json.dumps(res.json()))
exe
- テキストは翻訳され、コードは翻訳されていないのが分かる
- PHP / Github スタイルのバッククォート複数個での コードブロック記法が、半角スペース4個でのベーシック記法に崩れてしまっているが、良い ruby gem や python module などが見つからなかったのでとりあえず放置
$ redcarpet --parse=fenced_code_blocks ./tmp/example.md | FORMAT=html ./translate.sh | reverse_markdown
ただしGoogle翻訳時にコードブロック内の改行が崩れてしまうようなので、独自対応する必要があるかもしれない
# Amagami header
_Yes I can not go to Kyoto._
## Quail egg
- Kamikaze Paradise
- Mostly okay
print('孫氏や老師の楽園') print('一寸先はホタテ')
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2019-04-11
Discussion