Ich verwende Django==1.8.4
.Grub Zeichenketten zu .po Dateien, die an Ugettext als Variablen übergeben wurden
Innerhalb django Anwendung i ugettext bin mit übersetzte Nachricht in der nächsten Weg zu bekommen:
id = 1
message = "Some message %(id)s" % {'id':id}
return JsonResponse({'message': ugettext(message)})
In django offizieller Dokumentation gibt es Anmerkung bezüglich Variablen mit ugettext übersetzen.
(Die Einschränkung mit Variablen oder berechneten Werten, wie sie in den beiden vorangegangenen Beispielen ist, dass Djangos Übersetzung-string-Erkennung Dienstprogramm, django-admin makemessages, nicht in der Lage sein, diese Strings zu finden .. Mehr zu makemessages später
Quelle: Django documentation page
gibt es eine andere Art und Weise sind Nachrichten zu roden Dateien ohne Refactoring alle Aufruf von ugettext
automatisch .PO (Pass DIREC t Zeichenfolge in Ugettext statt Variable)?
Danke, ich weiß, dass das möglich ist. Die Frage ist, wie man ein solches Refactoring vermeiden kann. –
Ich glaube nicht, dass es ist. Die Variable "message" wird jedes Mal anders sein, also müsste sie Nachrichten für jede Version in der .po-Datei generieren. Wie möchten Sie Ihre .po Datei Nachrichten aussehen? BTW, Sie vergaßen die {} um das Diktat im Argument zu JsonResponse; 'JsonResponse ({'Nachricht': Ugettext (Nachricht)})'. – Alvra
Der ** kanonische ** Weg besteht darin, alle übersetzten Quellstrings im Quelltext zu kommentieren, dh 'message = _ (" Einige Nachrichten% (id) s ")% {'id': id}', so dass Drittanbieter-Tools finde alle diese Strings, also für die statische Analyse. (Obv, 'von xx import ugettext as _') Beachten Sie, dass dieses" Refactoring "nur 3 Zeichen für jede benutzerorientierte Zeichenkette' _() 'enthält. Die Alternative ist es, eine eigene Toolchain zu erstellen ... Und dann versuchen Sie es einfach einem anderen Entwickler zu erklären, der später Ihren Code unterstützen muss. –