2014-11-30 28 views
9

Voglio creare un nuovo modulo per me stesso ma voglio anche che alcuni colleghi siano in grado di usarlo. Ho iniziato a scrivere le mie docstring in inglese, ma poi ho capito che renderà il modulo inutile per alcuni di loro che non capiscono bene questa lingua.Come docstring in python per più lingue

La mia prima idea era quella di digitare sia in inglese che, sullo stesso docstring, in spagnolo. Ma questo non sembra giusto, e se volessi che anche alcuni amici russi lo usassero? Cosa succede se ho amici che hanno amici in tutto il mondo che non hanno una lingua comune per leggere i documenti?

Qual è il modo più semplice per scrivere e leggere le docstring in più lingue?

+1

Non è possibile tradurre docstring in più lingue, ma è possibile creare documentazione tramite sfinge e tradurre i documenti. –

+0

@AndrewSvetlov dovresti assolutamente metterlo come risposta. – alecxe

+0

@AndrewSvetlov, sì, si prega di elaborare e aggiungere come risposta, sembra una buona soluzione. –

risposta

3

Non v'è alcun modo per rendere docstring tradotto in più lingue, ma è possibile creare la documentazione via Sphinx strumento e tradurre i documenti.

La stessa Sfinge supporta le traduzioni basate su gettext per i documenti generati, dai uno sguardo allo Sphinx Internationalization Guide.

+0

Contrassegnato come migliore risposta perché la Sfinge è un buon modo per andare. Trovato anche [questa alternativa] (http://stackoverflow.com/questions/2258696/more-than-1-docstrings-for-a-single-module-function-etc? rq = 1), ma non si risolve bene per molte lingue. –

0

Circa l'unica soluzione pratica a cui riesco a pensare - ed è brutto - è mettere una lingua dopo l'altra nella docstring. Per esempio:

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

Questo è davvero brutto dal momento che non è veramente analizzabile e non è "compatibile con GetText" :( –

3

Ho avuto lo stesso problema; Una sorta di: Il modulo cmd utilizza le docstring per stampare la guida all'utente finale e avevo davvero bisogno di un modo per avere docstring in più lingue. Ecco come l'ho fatto:

Dai un'occhiata a questo awesome tutorial per l'utilizzo del modulo gettext. Ciò ti consente di tradurre qualsiasi app Python. Io lo uso come questo:

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

E ora, ogni volta che si vuole internazionalizzare una docstring, seguire questo modello:

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.''') 

Ora è il tempo di leggere that tutorial ho detto prima: chiamare pygettext sul tuo codice, utilizzare poedit per creare traduzioni e divertirsi.

Adiós, paisanos.