2009-12-26 25 views
6

Từ tài liệu django:Cách đặt tên gói cho chế độ xem django javascript_catalog?

js_info_dict = { 'gói': ('your.app.package',),}

urlpatterns = mẫu ('', (r '^ jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),)

Mỗi chuỗi trong gói phải ở trong Python rải rác gói cú pháp (giống định dạng như các chuỗi trong INSTALLED_APPS) và nên tham khảo đến gói chứa thư mục địa phương .

Nó nói "một gói chứa thư mục ngôn ngữ". , nhưng tôi đã tạo các tệp dịch với djangoadmin.py makemessages -a và nó tạo ra miền địa phương ngay bên trong thư mục dự án. Không thuộc bất kỳ thư mục ứng dụng nào của tôi. Và tôi cố gắng để thiết lập các gói như

js_info_dict = { 'gói': ('my_project_dir',),}

Rõ ràng đó là không làm việc cho tôi. Mỗi chuỗi từ miền django được dịch nhưng tôi nhận được một danh mục dịch trống trong javascript từ chế độ xem javascript_catalog. Tôi đang thiếu gì ở đây?

+2

câu hỏi của bạn là rất rõ ràng .. bạn nên cung cấp thêm thông tin –

+0

Tôi có cùng một vấn đề. Tôi đoán nó liên quan đến lỗi này http://code.djangoproject.com/ticket/5494 – pocoa

Trả lời

7

Trước tiên, bạn cần phải chắc chắn rằng js_info_dict của bạn là như thế này:

js_info_dict = { 
    'domain': 'djangojs', 
    'packages': ('my_project_name',), 
} 

Và như @daonb đề nghị, thêm 'my_project_name' để INSTALLED_APPS của bạn trong settings.py.

Hãy chắc chắn rằng bạn biên dịch các thông điệp của bạn như thế này:

django-admin.py makemessages -a -d djangojs 

Đó là tất cả!

Tôi không biết tại sao Django không có thông tin đó vào tài liệu của nó. Tôi có thể tìm ra giải pháp với việc sử dụng những bài viết dưới đây:

http://www.aminche.com/blog/2010/07/06/playground-editor http://code.djangoproject.com/ticket/5494 http://osdir.com/ml/django-users/2010-04/msg00231.html

+1

Cảm ơn. Sai lầm của tôi là gọi django-admin.py makemessages ở cấp cao nhất của thư mục dự án. Điều đó tạo ra danh mục dịch cho dự án entrire. Nhưng nó chỉ ra rằng danh mục javascript cần thư mục locale trên cơ sở django app dir. Vì vậy, sau khi sử dụng 1. cd/home/my_project/my_app 2. mkdir locale 3. django-admin.py makemessages -d djangojs -l en Nó tạo ra chuỗi dịch chỉ dành riêng cho my_app dir và tôi có thể sử dụng: js_info_dict = { 'tên miền': 'djangojs', 'gói': ('my_app',), } – hamdiakoguz

+1

Bạn được chào đón. Thông thường nó phải hỗ trợ các ngôn ngữ ứng dụng. Vì vậy, nó không phải là lỗi của bạn, đó là một lỗi: http://code.djangoproject.com/ticket/5494 Chúc mừng! – pocoa

3

Hãy thử thêm 'my_project_dir' để INSTALLED_APPS trong settings.py

+0

Xin chào, tôi có cùng một vấn đề.Bạn có ý nghĩa gì với việc thêm tên dự án vào INSTALLED_APPS? – pocoa

+0

Vâng, nó phải giải quyết vấn đề, nhưng nó không. http://code.djangoproject.com/attachment/ticket/5494/root-locale-js-catalog.diff – pocoa

+0

Bản vá trên vé đó sạch hơn việc thêm dự án vào INSTALLED_APP. Tuy nhiên, nó giải quyết được vấn đề trong dự án của tôi. – daonb

0

Đối với những người khác với trường hợp đặc biệt của tôi, các thông điệp js được tạo ra và biên soạn OK nhưng không trả lại trong các mẫu hoặc các trang khi bạn sử dụng ngôn ngữ i18n url.

Điều này là do danh mục javascript nên được thêm vào mẫu i18n url, không phải mẫu bình thường.

urlpatterns += patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),) 

=>

urlpatterns += i18n_patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),) 
Các vấn đề liên quan