Djangoの翻訳ベースのHTMLファイルでは機能していませんか? -- python フィールド と django フィールド と django-templates フィールド と translation フィールド 関連 問題

Django translation not working on base html file?












1
vote

問題

日本語

私は何が行方不明のものを知りません。私はDjangoの翻訳をしています。トラスフェルは、パッケージフォルダ以外のすべてのアプリ、i.eが含まれているアプリケーション、 settings.py を含むアプリケーションです。

私のファイル構造は次のようなものです:

<事前> <コード> my-project/ manage.py locale/ mysite/ __init__.py settings.py lacale/ templates/ base.html urls.py profile/ __init__.py locale/ templates/ profile/ profile.html views.py urls.py

設定ファイル:

<事前> <コード> MIDDLEWARE = [ .... 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', .... ] LANGUAGE_CODE = 'es' USE_I18N = True USE_L10N = True USE_TZ = True LANGUAGES = ( ('en-us', _('English')), ('es', _('Spanish')), ) LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), )

マイ<コード> base.html Likem この翻訳は機能しません

<事前> <コード> {% load static %} {% load i18n %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta name="author" content="Biplove Lamichhane"> <title>{% block title %}{% endblock title %}</title> </head> <body> <h1>{% trans "Base" %}</h1> {% block content %} {% endblock %} </body>

My profile.html はこのようになります、この翻訳はうまくいきます

<事前> <コード> {% extends 'base.html' %} {% load static %} {% load i18n %} {% block title %}Title{% endblock title %} {% block content %} <h2>{% trans "Check" %}</h2> {% endblock %}

また、 99887767 fileを正しく作成し、 django.mo を作成するための翻訳とコンパイル済みのメッセンジを追加しました。

編集

django.po for base.html:

<事前> <コード> # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION " "Report-Msgid-Bugs-To: " "POT-Creation-Date: 2020-09-21 12:25+0545 " "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE " "Last-Translator: FULL NAME <EMAIL@ADDRESS> " "Language-Team: LANGUAGE <LL@li.org> " "Language: " "MIME-Version: 1.0 " "Content-Type: text/plain; charset=UTF-8 " "Content-Transfer-Encoding: 8bit " "Plural-Forms: nplurals=2; plural=(n != 1); " #: profile/templates/profile/profile.html:9 msgid "Check" msgstr "Spanish check"

djanog.po プロファイル:

<事前> <コード> my-project/ manage.py locale/ mysite/ __init__.py settings.py lacale/ templates/ base.html urls.py profile/ __init__.py locale/ templates/ profile/ profile.html views.py urls.py 0
英語

I don't know what I am missing. I am working with django translation. The traslation works perfectly all apps other than the package folder, i.e app that contains settings.py.

My file structure is like this:

my-project/     manage.py     locale/     mysite/         __init__.py         settings.py         lacale/         templates/             base.html         urls.py     profile/         __init__.py         locale/         templates/             profile/                 profile.html         views.py         urls.py    

Here are the settings file:

MIDDLEWARE = [     ....     'django.contrib.sessions.middleware.SessionMiddleware',     'django.middleware.locale.LocaleMiddleware',     'django.middleware.common.CommonMiddleware',     .... ]  LANGUAGE_CODE = 'es'  USE_I18N = True  USE_L10N = True  USE_TZ = True  LANGUAGES = (     ('en-us', _('English')),     ('es', _('Spanish')), )  LOCALE_PATHS = (     os.path.join(BASE_DIR, 'locale'), ) 

My base.html looks likem This translation does not work:

{% load static %} {% load i18n %}  <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8"/>     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <meta name="author" content="Biplove Lamichhane">     <title>{% block title %}{% endblock title %}</title> </head> <body>     <h1>{% trans "Base" %}</h1>    {% block content %}     {% endblock %} </body> 

My profile.html goes like this, This translation does work:

{% extends 'base.html' %} {% load static %} {% load i18n %} {% block title %}Title{% endblock title %}          {% block content %}     <h2>{% trans "Check" %}</h2> {% endblock %} 

Also, I have correctly created django.po file and added my translation and compiled messeges to create django.mo.

Edit

django.po for base.html:

# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION " "Report-Msgid-Bugs-To:  " "POT-Creation-Date: 2020-09-21 12:25+0545 " "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE " "Last-Translator: FULL NAME <EMAIL@ADDRESS> " "Language-Team: LANGUAGE <LL@li.org> " "Language:  " "MIME-Version: 1.0 " "Content-Type: text/plain; charset=UTF-8 " "Content-Transfer-Encoding: 8bit " "Plural-Forms: nplurals=2; plural=(n != 1); " #: profile/templates/profile/profile.html:9 msgid "Check" msgstr "Spanish check" 

djanog.po for profile :

# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION " "Report-Msgid-Bugs-To:  " "POT-Creation-Date: 2020-09-21 21:44+0545 " "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE " "Last-Translator: FULL NAME <EMAIL@ADDRESS> " "Language-Team: LANGUAGE <LL@li.org> " "Language:  " "MIME-Version: 1.0 " "Content-Type: text/plain; charset=UTF-8 " "Content-Transfer-Encoding: 8bit " "Plural-Forms: nplurals=2; plural=(n != 1); " #: mysite/settings.py:146 msgid "English" msgstr ""  #: mysite/settings.py:147 msgid "Spanish" msgstr ""  #: mysite/templates/base.html:26 msgid "Base" msgstr "Spanish language for base"  
</div
           
       
       

回答リスト

2
 
vote
vote
ベストアンサー
 

私はあなたが、<コード> /mysite/locale のフォルダへの LOCALE_PATHS

を追加する必要があると思います <事前> <コード> LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), os.path.join(BASE_DIR, 'mysite', 'locale'), )

更新

キーはをプロジェクトのパッケージとのアプリのパッケージとどのようなデフォルトのフォルダ(およびファイル)各パッケージに期待されているとの違いを作ることです。 あなたのケースでは、フォルダが(ののプロジェクトパッケージでの mysite のことは明らかです:// docs.djangoproject.com/en/3.1/intro/tutorial01/」REL = 『データベースの構成、Djangoの固有オプションを含むジャンゴのインスタンスの設定のnofollowをnoreferrer』>文書の)のコレクション、および<コード> apps.py ファイル内部と認識される<強い/>アプリケーション固有の設定 NOTアプリ。さんが言ったことを、Djangoはのために期待するのアプリのように profile のような房のデフォルトのフォルダの static は、<コード> templates は、<コード> templatetags は、<コード> migrations ..と<コード> LOCALE_PATHS0 がいますが、明示的に LOCALE_PATHS1 の中でそれらを言及する必要があり、他のデフォルト以外の場所のための< / P> プロジェクトレベルまたはあなたがそうする必要があるアプリケーションに依存しないフォルダの

  • グローバルテンプレート<コード> LOCALE_PATHS2
  • (<コード> LOCALE_PATHS3 を保持します)
<事前> <コード> LOCALE_PATHS4
  • グローバル静的<コード> LOCALE_PATHS5 が(私はすでにグローバル資産JS、CSSのIMGを保持するために1持っていると思います...)
<事前> <コード> static16
  • とグローバルロケールフォルダ用の S
<事前> <コード> LOCALE_PATHS7
 

i guess you need to add /mysite/locale folder to LOCALE_PATHS

LOCALE_PATHS = (     os.path.join(BASE_DIR, 'locale'),     os.path.join(BASE_DIR, 'mysite', 'locale'), ) 

Update

the key is to make difference between project package and app package and what default folders (and files) are expected in each package.

in your case, it's obvious that mysite folder is the project package of your Django application/project which holds (as per docs) a collection of settings for an instance of Django, including database configuration, Django-specific options and application-specific settings and NOT an app which is recognizable with the the apps.py file inside. that's said, Django expects for an app like profile a bunch default folders like static, templates, templatetags, migrations .. and locale but for any other non-default location you need to explicitly mention them in mysite/settings.py:

for project level or app-independent folders you need to do so :

  • global templates /mysite/templates (which holds base.html)
TEMPLATES = [     {         ..         'DIRS': [os.path.join(BASE_DIR, 'mysite', 'templates')],         'APP_DIRS': True,         ..     }, ] 
  • global static /mysite/static (i guess you have already one to hold global assets js, css img ..)
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'mysite', 'static')] 
  • and for global locale folders
LOCALE_PATHS = (     os.path.join(BASE_DIR, 'locale'),  # underneath project root folder      os.path.join(BASE_DIR, 'mysite', 'locale'),  # underneath project package  ) 
</div
 
 
   
   
1
 
vote

は、<コード> LOCALE_PATHS8 <コード> LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), os.path.join(BASE_DIR, 'mysite', 'locale'), ) 0 として<コード> LOCALE_PATHS9 で可変手段<コード> LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), os.path.join(BASE_DIR, 'mysite', 'locale'), ) 1 ノー任意の他の<コード>ことを定義しますLOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), os.path.join(BASE_DIR, 'mysite', 'locale'), ) 2 はアプリケーションディレクトリ内のフォルダます。

私の提案は、すべての LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), os.path.join(BASE_DIR, 'mysite', 'locale'), ) 3 のあなたは、<コード> LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), os.path.join(BASE_DIR, 'mysite', 'locale'), ) 4 のディレクトリの一つにしたファイルマージすることですので。パスは、<コード> LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), os.path.join(BASE_DIR, 'mysite', 'locale'), ) 5 を

のようになりますことを確認します
 <コード> LOCALE_PATHS = (     os.path.join(BASE_DIR, 'locale'),     os.path.join(BASE_DIR, 'mysite', 'locale'), ) 6  
 

You define a LOCALE_PATHS variable in settings.py as os.path.join(BASE_DIR, 'locale') that means my_project/locale/* and no any others locale folders inside apps directories.

So my suggestion is to merge all .po files you have into one at my_projects/locale/ directory. Make sure that path should look like my_project/locale/es/LC_MESSAGES/django.po

# django.po ...  #: mysite/settings.py:146 msgid "English" msgstr ""  #: mysite/settings.py:147 msgid "Spanish" msgstr ""  #: profile/templates/profile/profile.html:9 msgid "Check" msgstr "Spanish check"  #: mysite/templates/base.html:26 msgid "Base" msgstr "Spanish language for base" 
</div
 
 
 
 

関連する質問

24  Django I18N:翻訳の一般的な原因は表示されません  ( Django i18n common causes for translations not appearing ) 
私は多言語のDjangoのウェブサイトを作っています。メッセージファイルを作成し、作成してコンパイルしました。私は私の募集言語(ヘブライ語)でサイト(この場合は管理者)をチェックし、ほとんどのフレーズは彼らがそうするべきようなヘブライ語に現れますが、一部はしま...

1  OpenGL回転と翻訳  ( Opengl rotation and translation ) 
私は一連のNehe OpenGKチュートリアルを経験しています。 チュートリアル#9 いくつかのファンシーなものをします。私はチュートリアル全体のバックボーンであると思う2つのことを除いて、すべてを理解しました。 DrawGlScene 機能では、次の行が...

2  SilverlightアプリでMicrosoft Translate APIで翻訳の終わりにある「クリック」の音を取り除く方法  ( How to get rid of the click sound at end of translation in microsoft translate ) 
MS翻訳者を使用して、私のSilverlight 4アプリで「話す」を有効にするためにテキストのWAVファイルを送ります。 しかし、翻訳すべての翻訳の終わりには、クリックノイズがあります(誰かがマイクをオンまたはオフになっているように聞こえます)。 問題...

0  翻訳プロバイダと共にシレックスフォームの検証  ( Silex form validation along with translation provider ) 
Silexの最新バージョン(PHARバージョンではありません)を使用します。翻訳プロバイダとともにフォームサービスプロバイダを実装する問題があります。 "致命的なエラー:クラス 'symfony component config resource ...

1  Vuexの状態内のKazupon / Vue-I18nを使用する  ( Using kazupon vue i18n inside a state of vuex ) 
https://github.com/kazupon/vue-i18n ローカライズのために vue.t()|| $ t()|| trans()vue-i18n によって変換されるべき鍵である文字列を受け取る こんにちは!次のコードを試してみてく...

4  日本語からの英語翻訳単語の数を推定するためのアルゴリズム  ( Algorithm to estimate number of english translation words from japanese source ) 
私は英語の言葉の数を推定する方法を思い付きようとしています日本語からの翻訳が入ります。日本語には3つのメインスクリプトがあります - kanji 、ひらがな、およびカタカナ< / a> - そしてそれぞれは平均文字間比率(最も低い、カタカナが最も高い)で...

16  Monotouchがどのように機能しますか?  ( How monotouch works ) 
私は本当に私を簡単に説明できるように、Monotouchのようなものを実装するための一般的なアプローチは何ですか?私は、人々がJavaのようないくつかのプラットフォームを取得し、それがC / Objective-Cのようなものに翻訳するときに最初の例ではないの...

14  特定のバンドルのSymfony翻訳を無効にする方法  ( How to disable the symfony translation for specific bundles ) 
Symfony 2.7で実行されているWebAppを作成しています。これは、1つの言語(固有のロケール)でのみ使用されるように設計されています。私はプロファイラですべての翻訳ドメインで多くの不足しているメッセージを見ることができますが、私はまったく翻訳を必要...

26  Rosettaに似たPHP翻訳フロントエンド?  ( Php translation frontend similar to rosetta ) 
現在、データベースベースの国際化アプローチ(http://framework.zend)に基づいて、データベースベースの国際化アプローチからWebアプリケーションを移行しています。 .com / manual / en / zend.translate.htm...

0  symfony2でJSON応答のために翻訳者を使用する方法?  ( How to use translator for json response in symfony2 ) 
私は私のsymfony2 webAppで翻訳を実装しました。これで、翻訳を処理できるTwigファイルに引数を渡す通常の 998877611 を返しますが、 shadow-root12 。 <事前> <コード> 1 - 01/01/2011 2 - 02/20/...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有