2012-04-19 37 views
21

Tôi có một chuỗi có thể được dịch thành một phần khác biệt của mã theo hai cách khác nhau.Cùng một chuỗi với các bản dịch khác nhau

Bây giờ nếu makemessages Sử dụng django-admin -l nó

tôi nhận được trong django.po này:

#: pingapi/ping.py:17 pingapi/nots.py:10 
msgid "may" 
msgstr "maggio" 

Nhưng tôi muốn hai bản dịch khác nhau:

#: pingapi/ping.py:17 
msgid "may" 
msgstr "posso" 

#: pingapi/nots.py:10 
msgid "may" 
msgstr "maggio" 

Nếu tôi chạy django-admin compilemessage với các tập tin dịch được đăng lên, tôi nhận được:

Error: errors happened while running msgmerge 
error 'duplicate message definition' 

Bất kỳ gợi ý nào? Tôi đang sử dụng Django.

+2

[this] (https://docs.djangoproject.com/en/dev/topics/i18n/translation/#contextual-markers) có giúp được không? – dgel

+0

@ dgel: Thật không may, thật không may. –

+0

Ah ... tôi hiểu rồi. 'pgettext' chỉ cung cấp một chuỗi ngữ cảnh để giúp người dịch. – dgel

Trả lời

24

Bạn có thể sử dụng ngữ cảnh của gettext cho điều đó. Django đã thêm hỗ trợ cho rằng trong 1.3 phát hành (trong code) và 1,4 (đối với các mẫu), xem https://docs.djangoproject.com/en/dev/topics/i18n/translation/#contextual-markers

Cập nhật:

Ví dụ đoạn mã sau:

from django.utils.translation import pgettext, ugettext 

month = pgettext("month name", "May") 
month = pgettext("fifth month", "May") 
month = ugettext("May") 

Chuyển thành:

#: foo/views.py:4 
msgctxt "month name" 
msgid "May" 
msgstr "" 

#: foo/views.py:5 
msgctxt "fifth month" 
msgid "May" 
msgstr "" 

#: foo/views.py:6 
msgid "May" 
msgstr "" 

Mỗi thư khác nhau và có thể được dịch khác nhau.

+0

Bạn đã đọc nhận xét cho câu hỏi chưa? –

+5

Có, nhưng pgettext không chỉ cung cấp thông tin cho người dịch, nó còn phân biệt thông điệp cho gettext và biến chúng thành các thông điệp khác nhau. –

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