Không thể tìm thấy đường dẫn ngôn ngữ để lưu trữ bản dịch cho tệp __init__.py


106

Tôi đang cố dịch một ứng dụng Django. Tôi đã tạo một số chuỗi với {% trans %}trong các mẫu của mình. Tuy nhiên, khi tôi thực thi lệnh sau trong thư mục ứng dụng của mình, tôi nhận được thông báo lỗi:

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

Tôi đã làm gì sai?

Câu trả lời:


156

Hóa ra trước tiên bạn cần tạo một localethư mục bằng cách sử dụng mkdir locale. Nếu bạn đang chạy lệnh từ bên trong thư mục ứng dụng, bạn cần một localethư mục trong thư mục ứng dụng đó.


Cảm ơn, đã giúp tôi. Chỉ cần thực hiện makemessageslệnh từ localethư mục đó nếu nó đã có sẵn.
SaeX

4
Trong Django 1.9, bạn cần xác định LOCALE_PATHSngay cả khi đó là localenếu không, văn bản đã biên dịch sẽ không thể phát hiện được.
Wtower

Lưu ý rằng thư mục này không có bất kỳ 's', và rằng nó phải nằm trong thư mục ứng dụng (như vậy bạn không có bất kỳ LOCALE_PATHSđể cấu hình)
tobiasBora

28

Trên thực tế, bạn có thể cấu hình vị trí của thư mục ngôn ngữ. Trong settings của bạn, hãy thêm:

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

Sau đó, tạo một thư mục cho từng ngôn ngữ bạn muốn dịch:

mkdir -p website/locale/de

2
bạn thực sự không cần tạo một thư mục cho mỗi ngôn ngữ. makemessages django-admin sẽ làm việc này cho bạn
MagicLAMP

Điều này thật khó hiểu, chúng ta có nên tạo một mục nhập cho mọi ứng dụng không? Hoặc lưu trữ tất cả ngôn ngữ cho tất cả các ứng dụng trong cùng một thư mục ngôn ngữ?
Vadorequest

12

Vấn đề là lệnh không chạy từ thư mục ứng dụng mà từ thư mục dự án. Đoạn mã từ tài liệu này giải thích điều đó:

Hóa ra trước tiên bạn cần tạo một localethư mục bằng cách sử dụng mkdir locale.

./manage.py makemessages[…] Chạy trên toàn bộ cây nguồn của thư mục hiện tại và kéo ra tất cả các chuỗi được đánh dấu để dịch. Nó tạo (hoặc cập nhật) một tệp tin nhắn trong thư mục conf / locale (trong cây Django) hoặc locale (cho dự án và ứng dụng).

Vì vậy, bạn có thể chạy lệnh từ thư mục ứng dụng:

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

… Hoặc bạn xác định một thư mục bản địa rộng của dự án bằng cách sử dụng LOCALE_PATHSvà bạn có thể chạy makemessagestừ thư mục chính từ đó.

Dù bằng cách nào, bạn nên kiểm tra xem ./locale/thư mục có hiện diện không và tạo nó bằng cách sử dụng

$ mkdir locale

trong trường hợp nó không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.