[Python] Localizzazione in python

Pietro Battiston me a pietrobattiston.it
Mer 15 Maggio 2013 00:44:31 CEST


Il giorno mar, 14/05/2013 alle 22.54 +0200, Gollum1 ha scritto:
> Il 14 maggio 2013 21:51, Pietro Battiston <me a pietrobattiston.it> ha scritto:
> >
> > Se stai chiedendo "come faccio a dire a gettext di guardare in una data
> > cartella?", chiediti "chissà cosa fa la seguente riga di codice?"
> > gettext.install( APP_NAME, 'locale' )
> 
> no, non sto chiedendo questo, questo l'ho capito...
> 
> > Se stai chiedendo "come faccio a sapere qual'è la cartella in cui sono
> > contenute le traduzioni", beh allora dipende da come hai disposto le
> > cose _e_ da dove avvii il programma, ovviamente. Io di solito nei miei
> > programmi metto un file tipo questo, perché funzionano sia quando
> > installati che dalla cartella dei sorgenti:
> > http://www.pietrobattiston.it/gitweb?p=gallery-uploader.git/.git;a=blob;f=galleryuploader_lib/config.py
> > (ignora le righe da 28 a 68).
> 
> Sì, è proprio questo che intendevo... ti ringrazio del tuo esempio...
> 
> mi sono copiato le due parti che mi interessano, e poi me le studio
> con più calma, anche se credo di aver capito come procedere...
> 
> nel mio caso in cui la funzione che avvia la localizzazione si trova
> in un modulo separato, e addiritura in una sua directory separata,
> vuol dire che devo passare la directory del locale come argomento alla
> funzione (visto che sono in due scope diversi, non hanno le stasse
> variabili globali).
> 

Se ho capito quello che dici, non c'entrano gli scope: devi passare la
directory del locale _comunque_ perché è quello che richiede la funzione
locale.bindtextdomain().

> vedo che hai fatto una distinzione di due situazioni diverse, una per
> quando stai sviluppando e una per quando la installi nel sistema.
> 
> Io mi trovo e sto sviluppando per linux, i processi di installazione
> sono fatti da uno script a parte? quindi in qualche modo sa dove
> mettere i tuoi file, le tue librerie, i tuoi locales oppure ogniuno si
> scrive il suo file di installazione (una sorta di makefile presumo)
> dove decide a modo suo dove mettere le cose? nel primo caso, una volta
> scritto il programma, è indipendente dal sistema, se l'installazione è
> demandato ad un installatore standard, a cui passi solo alcuni
> parametri, nel secondo caso, devi scrivere il tuo script di
> installazione per ogni situazione e/o sistema operativo...
> 
> bhe... ora sto forse divagando un po' troppo... per ora mi accontento
> di sistema il locale, in modo che possa funzionare in tutte le
> situazioni dei miei programmini.

Non so dirti quanto siano lecite le mie assunzioni. Io controllo in
[sys.prefix, path.join( sys.prefix, 'local' )] più la cartella corrente,
e mi è sempre bastato.

La "sorta di makefile" di solito si chiama setup.py, e sì, standardizza
parecchio l'installazione.

Ciò detto, non credo proprio che il mio config.py funzionerebbe sotto
Windows, neanche con un'installazione standard. Però non dovrebbe essere
complicato adattarlo.

N.B: la ricerca della cartella "stuff" invece è una convenzione
puramente mia. In generale, non ti aspettare dal mio codice niente di
più di un "works for me". L'ho fatto sempre rispondendo a tre soli
criteri: 1) gira dalla cartella sorgente 2) gira sotto Linux dopo il
classico "python setup.py install" 3) gira quando installato come
pacchetto Debian.

Forse ci sono soluzioni più pulite.

ciao

Pietro



Maggiori informazioni sulla lista Python