2014-11-30 5 views
9

Ich möchte ein neues Modul für mich selbst erstellen, aber ich möchte auch einige Kollegen in der Lage sein, es zu verwenden. Ich fing an, meine Docstrings in Englisch zu schreiben, aber dann erkannte ich, dass es das Modul für einige von ihnen nutzlos machen würde, die diese Sprache nicht gut verstehen.How to Docstring in Python für mehrere Sprachen

Meine erste Idee war, sowohl Englisch und, auf der gleichen Docstring, Spanisch zu tippen. Aber das scheint nicht richtig zu sein, was ist, wenn ich möchte, dass einige russische Freunde es auch benutzen? Was ist, wenn ich Freunde habe, die überall auf der Welt Freunde haben, die keine gemeinsame Sprache haben, um Dokumente zu lesen?

Was ist der einfachste Weg, um Docstrings in mehreren Sprachen zu schreiben und dann zu lesen?

+1

Es gibt keine Möglichkeit, DocString in mehrere Sprachen zu übersetzen, aber Sie können Dokumentation über Sphinx erstellen und die Dokumente übersetzen. –

+0

@AndrewSvetlov sollten Sie dies definitiv als Antwort setzen. – alecxe

+0

@AndrewSvetlov, ja, bitte erarbeiten und fügen Sie als Antwort, scheint eine gute Lösung. –

Antwort

3

Es gibt keine Möglichkeit Docstring übersetzt in mehrere Sprachen zu machen, aber Sie können die Dokumentation über Sphinx Tool erstellen und die Dokumente übersetzen.

Sphinx selbst unterstützt gettext-basierte Übersetzungen für generierte Dokumente, schauen Sie auf Sphinx Internationalization Guide.

+0

Markiert als beste Antwort, weil Sphinx ein guter Weg ist. Auch gefunden [diese Alternative] (http://stackoverflow.com/questions/2258696/more-than-1-Docstrings-für-eine-Single-Modul-Funktion-etc? rq = 1), aber es eskaliert nicht gut für viele Sprachen. –

0

Über die einzige praktische Lösung, die ich mir vorstellen kann - und es ist hässlich - ist, eine Sprache nach der anderen in den Docstring zu legen. Zum Beispiel:

def findChocolate(variety): 
    '''Locate chocolate - Encuentra la choloate - nuqDaq yuch Dapol ''' 
    ... 
+0

Das ist wirklich hässlich, da nicht wirklich geparstbar und nicht "GetText-fähig" :( –

3

Ich hatte das gleiche Problem; Art von: Das cmd Modul verwendet Docstrings, um Hilfe für den Endbenutzer zu drucken, und ich brauchte wirklich eine Möglichkeit, Docstrings in mehreren Sprachen zu haben. Hier ist, wie ich es gemacht habe:

Werfen Sie einen Blick auf diese awesome tutorial für die Verwendung von Gettext-Modul. Auf diese Weise können Sie jede Python-App übersetzen. Ich benutze es wie folgt aus:

import gettext 
try: 
    lang = gettext.translation('myawesomeapp', localedir='locale') 
    lang.install() 
except FileNotFoundError: 
    _ = lambda x: x 

Und jetzt, wenn Sie einen docstring internationalisieren wollen, folgen diesem Muster:

class MyAwesomeClass: 
    def incredible_method(with_fantastic_args): 
     # Some marvellous code 

    incredible_method.__doc__ = _('''\ 
Place here a fabulous docstrig for your incredible method. 
This will be translated by the gettext module at runtime.''') 

Jetzt ist die Zeit that tutorial ich bereits erwähnt zu lesen: rufen pygettext auf Code, verwenden Sie poedit, um Übersetzungen zu erstellen und Spaß zu haben.

Adiós, paisanos.