2011-08-14 32 views
7

Tôi đang cố gắng chạy nội dung ngôn ngữ Django trên một dự án, nhưng makemessages luôn bỏ qua các mẫu html trong thư mục mẫu của tôi.Tại sao chức năng makemessages cho nội dung ngôn ngữ Django bỏ qua các tệp html?

Tôi đang chạy python manage.py makemessages -a từ gốc dự án và tất cả các chuỗi được đánh dấu để dịch bên trong các tệp .py ở bất kỳ đâu trong dự án được thêm thành công vào tệp .po.

Bất kỳ chuỗi nào trong các mẫu html, tức là, {{ trans "String_to_translate" }} đều bị bỏ qua và không được thêm vào tệp .po mặc dù mô-đun cần thiết được tải ở đầu mẫu, {% load i18n %}.

Để kiểm tra khả năng toàn bộ thư mục mẫu đã bị loại trừ khỏi hàm makemessages, tôi đã tạo một tệp .py và bao gồm một chuỗi để dịch ở đó và nó đã được thêm thành công vào tệp .po.

Với tất cả những gì được nói, có ai biết điều gì có thể gây ra sự cố này không? Cảm ơn trước sự giúp đỡ của bạn!

EDIT: Giải pháp bao gồm duy nhất của việc thay đổi cú pháp của {{ trans "string" }}-{% trans "string" %}

Trả lời

3

thư mục của bạn templates một trong hai cần phải được trong một ứng dụng đã được liệt kê trong INSTALLED_APPS hoặc trong một thư mục đã được liệt kê trong TEMPLATE_DIRS - trong bạn settings.py file

+0

Cả hai thứ đó đều đã được định cấu hình và ứng dụng hoạt động thành công với các mẫu, ngoại trừ chức năng makemessages trên mẫu. – dlmccoy

+1

Giả sử ứng dụng django của bạn được gọi là 'ứng dụng', có một thư mục trong đó được gọi là 'mẫu'? Tệp '.py' này bạn đã tạo, ở đâu? Con đường? Làm thế nào bạn đề cập đến nó trong mã? Bạn cũng có thể dán các cài đặt 'INSTALLED_APPS' và' TEMPLATE_DIRS' vào đây không? –

+0

Bên trong myproject/app, thực sự có một thư mục mẫu và các mẫu được tìm thấy thành công từ bên trong nó bằng bất kỳ khung nhìn nào cần mẫu. Makemessages tìm thành công chuỗi dịch bên trong views.py bình thường, như ugettext ("String_to_translate"). Tôi cũng đã tạo ra example.py bên trong thư mục templates để kiểm tra xem các makemessages có bao giờ nhìn vào bên trong thư mục đó cho bất cứ thứ gì không, và nó tìm thấy ugettext ("Một chuỗi khác") bên trong đó. TEMPLATE_DIRS = ('/ home/dlmccoy/webapps/projectname/myproject/app/templates',), INSTALLED_APPS = ( 'myproject.app', ) – dlmccoy

4

Thử tạo liên kết tượng trưng cho thư mục templates trong thư mục app của bạn. Sau đó gọi makemessages từ thư mục ứng dụng của bạn với công tắc liên kết tượng trưng django-admin.py makemessages --all --symlinks

cd /myproject 
ln -s /myproject/templates /myproject/myapp/templates  
cd /myproject/myapp 
django-admin.py makemessages --all --symlinks 

makemessages bỏ qua TEMPLATE_DIRSINSTALLED_APPS. Thư mục mẫu cần phải nằm trong thư mục ứng dụng của bạn và cần phải gọi số makemessages từ bên trong thư mục ứng dụng của bạn.

Các vấn đề liên quan