95669


### 環境

  * OS：Windows10 Pro
  * Python：3.11.2（venv仮想環境）
  * Django：4.1.7
  * gettext：0.19.8.1

### 発生している問題

Djangoプロジェクトで言語翻訳を実装するため、settings.pyにLOCALE関連の設定を記述した上で `py manage.py
makemessages -l en` を実行しました。

▼settings.pyの内容

[code]

    # 言語ファイル格納場所
    LOCALE_PATHS = [os.path.join(BASE_DIR, 'locale\\'),]
    # 対象言語
    LANGUAGES = [
        ('ja', _('Japanese')),
        ('en', _('English')),
    ]
    # デフォルト言語
    LANGUAGE_CODE = 'ja'
    # デフォルトタイムゾーン
    TIME_ZONE = 'Asia/Tokyo'
    USE_TZ = True
    # 自動翻訳有効
    USE_I18N = True
    # 日付フォーマット設定
    USE_L10N = True
    
[/code]

プロジェクトルート直下の'locale'ディレクトリに言語ファイル（.po）を出力する想定です。

すると、以下のエラーがコンソールに表示されました。

[code]

    CommandError: errors happened while running msgmerge
    /d/django.po: exactly 2 input files required
    Try '/d/django.po --help' for more information.
    
[/code]

この状態でも、`[project root]/locale/en/LC_MESSAGES/django.po`は出力されています。

ここから更に`py manage.py compilemessages`を実行すると、以下のエラーが表示されます。

[code]

    Execution of msgfmt failed: /d/django.po: error while opening ".po" for reading: No such file or directory
    CommandError: compilemessages generated one or more errors.
    
[/code]

この状態でも、`[project root]/locale/en/LC_MESSAGES/django.mo`は生成されますが、中身は空です。

2つのエラーメッセージに表示される`/d/django.po`というファイルパスは存在しません。  
msgmergeとmsgfmtがLOCALE_PATHSに設定したものとは違うパスを参照しているように思えるのですが、その割には.poファイルは設定したlocaleディレクトリに生成されており、何が悪いのか掴みきれない状況です。

原因に心当たりがある方がいらっしゃいましたら、対策をご教示いただけないでしょうか。  
よろしくお願いいたします。


CC BY-SA 4.0
2023-07-05T00:16:02.073
95471
2023-07-18T05:53:44.113
2023-07-08T07:31:08.580
3060
54145
question
python django
Djangoでmakemessagesを実行するとmsgmergeのCommandErrorが発生する


公式ドキュメントや様々な情報を元に原因を探っていたのですが、解決できたことを報告いたします。  
settings.pyで指定する言語ファイル（.po）の格納場所のパスを別名に変えたらうまくいきました。

[code]

        LOCALE_PATHS = [os.path.join(BASE_DIR, 'localization'),]
    
[/code]

[海外にも似たような質問](https://stackoverflow.com/questions/48253070/django-
internationalization-compilemessages-errorattributeerror-module-
loca)が出ていたのを見つけ、回答を追っていくとlocaleという名称のディレクトリは推奨できないという旨を見つけ、試しにディレクトリ名を変更すると一発で上手くいきました。  
以上で本質問スレッドを閉じさせていただきます。お騒がせしました。


CC BY-SA 4.0
2023-07-18T05:53:44.113
95669
2023-07-18T05:53:44.113
54145
95471
answer