Djangoの国際化(i18n)で多言語化(前半)
Djangoの国際化(i18n)で多言語化(前半) Djangoの国際化(i18n)で日本語と英語の多言語化サイトを構築します。 コードはGitHubリポジトリにあげています。 開発環境 ソースコード multiling […]
Filter by Category
Djangoの国際化(i18n)で多言語化(前半) Djangoの国際化(i18n)で日本語と英語の多言語化サイトを構築します。 コードはGitHubリポジトリにあげています。 開発環境 ソースコード multiling […]
多次元配列から最大値、最小値を取得 Pythonで複数の配列からなる多次元配列から最大値、最小値を取得する方法です。一次元配列も同じやり方で最大値、最小値を取得可能です。 モジュールのインストール ソースコード arr1 […]
Pythonで文字列をリスト化して一文字づつ処理 Pythonで文字列をリスト化して一文字づつ処理する方法です。サンプルでは一文字づつ文字をshift-jisに変換して、変換できない文字を表示します。 開発環境 ソースコ […]
2020年GW休業のお知らせ 平素は格別のお引立てを賜り、厚く御礼申し上げます。 誠に勝手ながら、弊社では下記日程をゴールデンウィーク休業とさせて頂きます。 2020年5月2日(土)~ 2020年5月6日(水) […]
PillowでPNGファイルを変換するときの背景処理 PillowでPNGファイルをJPGに変換するときに、背景が透過のファイルを変換すると透過部分が黒くなったり、不自然な途切れ方をしたりといった時の対処方法です。 開発 […]
名前に現在時刻を入れたファイルが連番かどうか判定(後半) 前回からの続きです。 前回は連番になっていたらまとめてリスト化しましたが、今回はまとめたファイルを動画に変換して書き出します。 コードはGitHubリポジトリにあ […]
信州ベンチャーサミットに弊社代表の石井が登壇しました 2020年2月8日(土)に長野市芸術館でピッチイベント「信州ベンチャーサミット2020」に弊社代表の石井が登壇しました。
名前に現在時刻を入れたファイルが連番かどうか判定(前半) なにかアクションがあった際に生成されるファイル名に現在時刻が入ったファイルが、連番になっているかどうかを判別して連番になっていたらまとめてリスト化する方法です。手 […]
Beautiful Soupでbrタグを改行コードに変換する Beautiful Soupでスクレイピングしたdivタグ内にbrタグがあった際に改行コードに変換する方法です。以下のコードはbrタグが複数ある場合にも対応し […]
フォルダ内のファイルを複数毎にzip形式に圧縮 ファイルをまとめてzip形式に圧縮してしまうと容量が増えてしまうので、メールなどで送るために複数個に分けて圧縮ファイルを作りたいときがあります。ファイル数がそれほど多くない […]
2020年1月1日(水)ぐんま経済新聞に掲載されました 2020年1月1日(水)ぐんま経済新聞の新年特別号 IT特集に弊社代表の石井が掲載されました。
OpenCVで複数の画像から動画ファイルを作る 前回に続き、今回は複数の画像をまとめて動画ファイルに変換する方法です。gifアニメーションを生成するときはPillowを使いましたが、動画を生成するときはOpenCVを使い […]
複数の画像からgifアニメーションを作る 定点撮影などで連番になっている複数の画像をまとめてgifアニメーションに変換する方法です。 コードはGitHubリポジトリにあげています。 コード 結果 解説 import gl […]
SeleniumでChromeが立ち上がらない Pythonでスクレイピングする時にSeleniumでChromeを立ち上げますが、その際に以下のエラーが出てブラウザが起動しない場合があります。その時の解決方法です。 解 […]
Daiwa Innovation Networkに弊社代表の石井が登壇しました 2019年12月19日(木)に大和証券本店で開催された大和証券株式会社主催のピッチイベント「第82回 Daiwa Innovati […]
2019年の冬季休業のお知らせ 誠に勝手ながら、弊社では下記日程を冬季休業とさせていただきます。 冬季休業期間 2019年12月28日(土)~2020年1月5日(日) 期間中にいただきましたお問い合わせにつきましては、冬 […]
群馬イノベーションアワード2019に登壇しました 12/7(日)にヤマダグリーンドーム前橋で開催された群馬イノベーションアワード2019で弊社代表の石井がファイナリストとして登壇しました。
ダウンロードするファイルの文字コードを動的に変更 ウェブアプリケーションの中でCSVやテキストファイルをダウンロードさせた時に文字化けが発生する事があります。使用する文字コードが決まっていれば予め固定してしまう事で文字化 […]
画像のアップロード Google Colaboratoryで画像をアップロードして表示する方法です。画像解析以外にもCSVのアップロードなどの際にも同じ方法でアップロードできます。 画像のインライン表示 今度はアップロー […]
2019年10月18日(金)の上毛新聞に掲載されました
Djangoの国際化(i18n)で日本語と英語の多言語化サイトを構築します。
コードはGitHubリポジトリにあげています。
開発環境
Python 3.8.0
Django 3.0.7
.
├── app
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── manage.py
├── multilingualization
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── templates
└── index.html
multilingualization/settings.py
...
import os
from django.utils.translation import ugettext_lazy as _
...
...
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware', # ここを追加
'django.middleware.common.CommonMiddleware',
...
]
...
...
LANGUAGE_CODE = 'ja'
USE_I18N = True
...
...
LANGUAGES = [
('en', _('English')),
('ja', _('Japanese')),
]
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale')
]
...
from django.utils.translation import ugettext_lazy as _
モジュールをインポート(ugettext_lazy)は_と省略名でインポートするのが慣例
django.middleware.locale.LocaleMiddleware
を追加(注:django.middleware.common.CommonMiddlewareの上に追記してください)
LANGUAGE_CODE = 'ja'
言語を日本語に設定
USE_I18N = True
デフォルトはTrueになっています
LANGUAGES = [
('en', ('English')),
('ja', ('Japanese')),
]
使用する言語を追加
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale')
]
翻訳ファイルを保存するディレクトリを指定
multilingualization/urls.py
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.urls import path
from app.views import index
urlpatterns = i18n_patterns(
path('admin/', admin.site.urls),
path('', index),
prefix_default_language=False
)
prefix_default_language=False
URLにprefixがない場合はsettings.pyで指定されたデフォルトの言語(LANGUAGE_CODE = ‘ja’)になります
app/views.py
from django.shortcuts import render
from django.utils.translation import gettext as _
from django.utils.translation import get_language
def index(request):
language_code = get_language()
display_text = _('国際化')
context = {'display_text': display_text, 'language_code': language_code}
return render(request, 'index.html', context)
from django.utils.translation import gettext as _
インポートしたモジュール(gettext)は_と省略名にするのが慣例
from django.utils.translation import get_language
使用している言語を取得するためのモジュールをインポート
language_code = get_language()
使用している言語を取得
display_text = _('国際化')
翻訳したい文章を_(”)の中に入れます
context = {'display_text': display_text, 'language_code': language_code}
return render(request, 'index.html', context)
値をcontextにまとめてテンプレートに値を渡す
templates/index.html
{% load i18n %}
<!DOCTYPE html>
<html lang="{{ language_code }}">
<head>
<meta charset="UTF-8">
<title>{{ display_text }}</title>
</head>
<body>
<p>{% trans 'ハロー・ワールド' %}</p>
<p>{{ display_text }}</p>
</body>
</html>
{% load i18n %}
国際化するテンプレートファイルの上部に記載
<html lang="{{ language_code }}">
views.pyから受け取ったlang属性を設定
{{ display_text }}
views.pyで代入された文字(「国際化」)
{% trans 'ハロー・ワールド' %}
翻訳させたい文字はtransタグで囲む
後半から翻訳ファイルを編集していきます。
群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。
メーリングリストに登録するとファントムの最新情報をお届けします
お客様のメールアドレスを共有することはありません
Comments