Help us understand the problem. What is going on with this article?

DjangoのテンプレートをAWS boto3を組み込んで翻訳

各国の言語に対応した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 %}が理想なので
お次はこのタグをつくります。フィルターは簡単そうだったので作ってみました。
これからタグつくるのでメモはここまででまた更新します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away