#各国の言語に対応したWebアプリが必要だったのでAWSのboto3を使ってタグを生成
メモとして活用します。
完成したら細かいところを記述したいと思います。
環境
djang == 2.1
boto3 == 1.0.0?
python == 3.6 ?
やりたいこと
クライアントが言語選択したらその言語で翻訳して表示
中身
boto3を組み込んだタグを作って
HTML内でタグに囲んだ部分を翻訳する。
⇓イメージ
{% translate %}ここ翻訳{% endtranslate %}
すでにDjangoには{% trans %}という翻訳用のタグがあるようだけど
自分でpoファイルやら何やらよりも
AWSの翻訳API使った方が一程度無料でクオリティ高いかな~と思ったので
まずはやってみる。
##事前準備
・AWS登録
・pip install boto3
##テンプレートタグについて
djangoはサーバサイドの言語だからHTMLを生成するような便利な機能が必要だったのでDTL(django template language)という便利機能が組み込まれました。
DTLには4つ種類があり、
1つは、変数=>{{ first_name }}
2つ目は、タグ=>{% block %}{% endblock %}
3つ目は、フィルター=>{{ value | filter }}
4つ目は、、、4つ目は、忘れた、とりあえず一時的メモなので後ほど
##タグの生成
タグの作り方は、djangoのドキュメントでテンプレートエンジンの仕組みのところを通読すると
その後スムーズにできます。
タグの生成下準備
①アプリは直下に templatetags ファイル生成
②templatetags 内に init.pyを生成 <=これでテンプレートエンジンが探索してくれる
③templatetags 内に translate.py 生成 <=ファイル名は何でもオッケー
translate.py の中身(まだ途中)
from django import template
import boto3
register = template.Library()
REGION = 'ap-northeast-1'
SRC_LANG = 'ja'
TRG_LANG = 'en'
@register.filter(name="translate", is_safe=True, needs_autoescape=True)
def translate(value, autoescape=True):
translate = boto3.client(service_name='translate', region_name=REGION,use_ssl=True)
result = translate.translate_text(Text=value,
SourceLanguageCode=SRC_LANG,
TargetLanguageCode=TRG_LANG)
return result.get('TranslatedText')
とりあえずこれはフィルターを生成してみました
HTMLファイルで
{{ '箱' |translate }}
とすると
Box
とブラウザで表示されます。
この'箱'部分に本文をいれれば翻訳されて返ってきますが
今回は{% translate %}ここ翻訳{% endtranslate %}が理想なので
お次はこのタグをつくります。フィルターは簡単そうだったので作ってみました。
これからタグつくるのでメモはここまででまた更新します。