前提・実現したいこと
すでに運用中のシステムを英語対応させたいと思っています。
ブラウザ(IE、Edge、Firefox)の言語によっての切り替え(ブラウザ言語が日本語場合は日本語表示。日本語以外の場合は、英語表示)をしたいです。
発生している問題・エラーメッセージ
GoogleでDjangoの国際化の方法を調べ、実装を行ったのですが Template(htmlファイル)やForm.pyなどの表示部分は問題なくブラウザ言語によって 言語が切り替わるのですが、システムに表示するエラーメッセージ等を定義していた 外部定義(※)から読みだしたメッセージだけはブラウザ言語によって切り替わりません。 ※message.pyとしてメッセージ一覧を記載し、view.pyにてインポートすることで表示しています。 色々とパターンを試してみた結果、どうやらmessage.pyの翻訳部分のみが、 setting.pyの中のLANGUAGE_CODEに引っ張られる形で表示されているみたいです。 ※LANGUAGE_CODEはjaにしてあるので、翻訳されないというよりは、 常に翻訳されて(ブラウザ言語が英語でも、常に日本語で表示される)困るという状況です。
該当のソースコード
Django
1【settings.py】 2 3MIDDLEWARE = [ 4 'django.middleware.security.SecurityMiddleware', 5 'django.contrib.sessions.middleware.SessionMiddleware', 6 'django.middleware.locale.LocaleMiddleware', # 多言語化対応のため追記 7 'django.middleware.common.CommonMiddleware', 8 'django.middleware.csrf.CsrfViewMiddleware', 9 'django.contrib.auth.middleware.AuthenticationMiddleware', 10 'django.contrib.messages.middleware.MessageMiddleware', 11 'django.middleware.clickjacking.XFrameOptionsMiddleware', 12] 13・ 14・ 15・ 16LANGUAGE_CODE = 'ja' 17 18【view.py】 19 20from g_idf_libs import config, message_conf, module 21 22def ini_display(request): 23 str_rst_message = message_conf.str_message01 \ 24 + result_dict['str_target_email'] \ 25 + message_conf.str_message02 26 27 my_dict = ({ 28 'form': form, 29 'str_rst_message': str_rst_message, 30 'insert_forms': '初期値', }) 31 32 return render(request, 'passrst.html', my_dict) 33 34【passrst.html】 35 36※"{% trans %}"で 翻訳部分は問題なくブラウザ言語によって切り替わる。 37※上記で作成した"{{ str_rst_message }}"部分のみが、settings.pyのLANGUAGE_CODEに引っ張られる。 38 39{% extends "base.html" %} 40{% load crispy_forms_tags %} 41{% load i18n %} 42 43 44{% block header %} 45 {% trans 'Password Reset' %} 46{% endblock %} 47 48{% block body %} 49 50 <form action="" method="post"> 51 <div class="g-idf-container-body"> 52 {% csrf_token %} 53 {{ str_rst_message }} 54 {% for field in form %} 55 {{ field.as_hidden }} 56 {% endfor %} 57 <br> 58 <br> 59 </div> 60 <div class="g-idf-footer"> 61 <input type="submit" name="reset" value="{% trans 'Send' %}" class="btn btn-primary"> 62 <input type="submit" name="back" value="{% trans 'Cancel' %}" class="btn btn-primary"> 63 </div> 64 </form> 65{% endblock %} 66 67 68【message.py】 69 70from django.utils.translation import ugettext as _ 71 72str_message01 = _('Reset your password and deliver a one-time password to ') 73str_message02 = _('. Please press send button below.') 74 75 76【django.po】 77 78# SOME DESCRIPTIVE TITLE. 79# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 80# This file is distributed under the same license as the PACKAGE package. 81# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. 82# 83#, fuzzy 84msgid "" 85msgstr "" 86"Project-Id-Version: PACKAGE VERSION\n" 87"Report-Msgid-Bugs-To: \n" 88"POT-Creation-Date: 2019-06-05 19:17+0900\n" 89"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 90"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 91"Language-Team: LANGUAGE <LL@li.org>\n" 92"Language: \n" 93"MIME-Version: 1.0\n" 94"Content-Type: text/plain; charset=UTF-8\n" 95"Content-Transfer-Encoding: 8bit\n" 96"Plural-Forms: nplurals=1; plural=0;\n" 97 98#: g_idf_libs/message.py:8 99msgid "Reset your password and deliver a one-time password to " 100msgstr "パスワードをリセットし、" 101 102#: g_idf_libs/message.py:9 103msgid ". Please press send button below." 104msgstr "に仮パスワードを送付します。よろしければ、送信ボタンを押下してください。" 105 106
試したこと
html内に引数として渡されたメッセージを表示する部分が問題かとも疑いましたが
翻訳されるときには(LANGUAGE_CODEが"ja"の時は)、view.pyの中でmessage.pyを
インポートした時点ですでに翻訳されているので、あまりhtml側の問題ではないと
判断していました。
また、キャッシュ等も疑い、動作確認の際には毎回ブラウザの履歴とキャッシュファイルを削除しています。
よろしくお願いいたします!

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/07 06:23
2019/06/07 08:02