Tidak dapat menemukan jalur lokal untuk menyimpan terjemahan untuk file __init__.py

106

Saya mencoba menerjemahkan aplikasi Django. Saya membuat beberapa string dengan {% trans %}di template saya. Namun, ketika saya menjalankan perintah berikut di folder aplikasi saya, saya menerima pesan kesalahan:

$ django-admin.py makemessages -l fr 
CommandError: Unable to find a locale path to store translations for file __init__.py`

Apa kesalahan yang telah aku perbuat?

Antoine M.
sumber

Jawaban:

157

Ternyata Anda perlu membuat localefolder terlebih dahulu menggunakan mkdir locale. Jika Anda menjalankan perintah dari dalam folder aplikasi, Anda memerlukan localefolder di dalam folder aplikasi itu.

Antoine M.
sumber
Terima kasih, bantu saya. Jalankan saja makemessagesperintah dari localedirektori itu jika sudah tersedia.
SaeX
4
Dalam Django 1.9 anda perlu mendefinisikan LOCALE_PATHSmeskipun localesebaliknya teks yang dikompilasi tidak akan dapat ditemukan.
Wtower
Perhatikan bahwa folder ini tidak memiliki 's' apa pun, dan itu harus ada di folder aplikasi (dengan cara itu Anda tidak perlu LOCALE_PATHSmengkonfigurasi)
tobiasBora
28

Sebenarnya Anda dapat mengkonfigurasi di mana folder lokal berada. Dalam settings.py Anda tambahkan:

LOCALE_PATHS = (
    PROJECT_ROOT + '/website/locale', )

Kemudian buat folder untuk setiap bahasa yang ingin Anda terjemahkan:

mkdir -p website/locale/de
David Dehghan
sumber
2
Anda sebenarnya tidak perlu membuat folder untuk setiap bahasa. pesan django-admin akan melakukan ini untuk Anda
MagicLAMP
Ini membingungkan, apakah kita harus membuat satu entri untuk setiap aplikasi? Atau simpan semua lokal untuk semua aplikasi di folder lokal yang sama?
Vadorequest
12

Masalahnya adalah bahwa perintah tersebut tidak dijalankan dari direktori aplikasi, tetapi dari direktori proyek. Cuplikan dari dokumen ini menjelaskannya:

Ternyata Anda perlu membuat localefolder terlebih dahulu menggunakan mkdir locale.

./manage.py makemessages[…] Menjalankan seluruh pohon sumber dari direktori saat ini dan menarik semua string yang ditandai untuk terjemahan. Ini membuat (atau memutakhirkan) file pesan di direktori conf / locale (di pohon Django) atau direktori lokal (untuk proyek dan aplikasi).

Jadi, Anda juga menjalankan perintah dari direktori aplikasi:

$ cd app
$ django-admin makemessages -l <locale>

… Atau Anda mendefinisikan direktori lokal proyek menggunakan LOCALE_PATHSdan Anda dapat menjalankan makemessagesdari direktori utama dari sana.

Apa pun itu, Anda harus memeriksa apakah ./locale/direktori tersebut ada dan membuatnya menggunakan

$ mkdir locale

seandainya tidak.

jnns
sumber