Eccolo qua... direte... ebbene sì, mi sto interessando alla localizzazione, in giro per la rete ho trovato questo pezzo di codice che nel suo programma originario funziona:
def InitI18n(): """Initialize th I18N stuff: load modules, set environments etc...""" import locale if not 'LANG' in os.environ: import sys if sys.platform == "darwin": # On Macintosh you have to get preferred language from OS import subprocess pp = subprocess.Popen( [ 'defaults', 'read', '-g', 'AppleLocale' ], stdout = subprocess.PIPE ) os.environ[ 'LANG' ] = pp.communicate()[ 0 ].strip() else: # On other OS get defaults loc, cp = locale.getdefaultlocale() os.environ[ 'LANG' ] = loc if cp: os.environ[ 'LANG' ] += "." + cp # Set the default locale for LC_CTYPE locale.setlocale( locale.LC_CTYPE, '' ) # Initialize gettext engine to look for localised messages in 'locale' # subdirectory of current working directory import gettext gettext.install( APP_NAME, 'locale' ) l'ho messo in un modulo che faccio richiamare dal mio programma, questo ha comportato che come prima modifica ho dovuto cambiare l'intestazione della def per potergli passare il parametro APP_NAME, che naturalmente non è nello scope di questo modulo. ora il modulo viene correttamente caricato, e se io faccio: print _("prova") mi stampa correttamente prova, mentre prima mi dava errore su _( da quello che ho capito leggendo questa pagina: http://docs.python.org/release/2.6.6/library/gettext.html?highlight=gettext.install#gettext.install il name space a questo punto è globale (ed in effetti viene eseguito il "_(" dal chiamante, che altrimenti darebbe errore). Quello che non riesco a capire da questo pezzo di codice... dove cavolo devo mettere il file .mo perché sia correttamente caricato e mi vada a sostituire le stringhe? la struttura direcotry/files del programma da cui l'ho copiato era del genere: programma/ programma.py locale/it/LC_MESSAGES/programma.mo nel mo caso: programma/ programma.py libs/libs_che_fornisce_InitI18n().py ma non riesco a capire a che livello devo mettere locale/it/LC_MESSAGES/programma.mo ho provato a mettere in programma/ e in programma/libs/ ma in entrambi i casi ottengo print _("prova") che stampa "prova" invece di stampare "test" come è indicato nel programma.mo spero di non essere stato troppo criptico. Byez -- Gollum1 Tesssssoro, dov'é il mio tessssoro... _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python