[Python] domanda agli utilizzatori di pycharm.
Gollum1
gollum1.smeagol1 a gmail.com
Mar 15 Ott 2013 23:57:34 CEST
Il 15 ottobre 2013 23:32, Valerio Maggio <valerio.maggio a gmail.com> ha scritto:
>
> Gollum1 <gollum1.smeagol1 a gmail.com> wrote:
>
>> print(_("\t'%s': unknown mode.") % line_args['mode'], file=sys.stderr)
>>
>> tutte le righe che sono in questa forma mi vengono segnalate come:
>>
>> "Unresolved reference '_'
>>
>> a quanto ho capito, la funzione "_" è iniettata dal modulo gettext, a
>> runtime, quindi non esiste in realtà una definizione della stessa nel
>> codice...
>
> A dirti il vero, io personalmente non riscontro questo comportamento.
> Di solito, utilizzo l'alias di "_" per la funzione gettext_lazy di Django, alias che definisco in maniera esplicita a monte con un "from django.utils.translation import gettext_lazy as _".
>
> Non ho capito, invece, se nel tuo caso questo alias sia o meno esplicito nel codice con modalità simili alle mia.
> Tuttavia, se il problema dovesse persistere, allora potrebbe trattarsi *davvero* di una limitazione del motore di inferenza di PyCharm (nella versione 2.7, ad esempio, si aveva un errore simile con nose.tools).
> In questo caso, il workaround consigliato è quello di "sopprimere le notifiche" per quella classe di messaggi.
> Maggiori dettagli qui: http://youtrack.jetbrains.com/issue/PY-7614
in realtà il codice per la localizzazione, l'ho estrapolato
confrontando alcuni script presi in rete, con le nozioni che mi sono
state passate da un utente qui in lista parecchio tempo fa (il
progetto è stato fermo per lungo tempo, chissa che ora non stia
superando il mio "blocco dello scrittore/coder")...
Il codice in oggetto è il seguente:
import gettext
def my_gettext(s):
# per wrappare un problema di argparse (usato nello stesso modulo)
che non mi permette di localizzare alcune stringhe
return _(s)
gettext.gettext = my_gettext
def InitI18n(APP_NAME, locale_path=sys.path[0]) -> object: #noto ora
questo -> object, lo ha inserito pycharm.
"""Initialize th I18N stuff: load modules, set environments etc...
@rtype : object
"""
"""Da rivedere per la gestione di diversi S.O"""
locale_path = os.path.realpath(os.path.join(locale_path, "locale"))
if not 'LANG' in os.environ:
locale_path = os.path.realpath(os.path.join(locale_path, "locale"))
#if os.path.exists(path.join(locale_path):
#LOCALE_DIR = path.join(locale_path, 'locale' )
#else:
#for directory in [sys.prefix, path.join( sys.prefix, 'local' )]:
#installed_root_dir = path.join( directory, 'share' )
#if path.exists( path.join( installed_root_dir,
'gallery-uploader', 'stuff', 'gallery.svg' ) ):
#LOCALE_DIR = path.join( installed_root_dir, 'locale' )
#if not STUFF_DIR:
#STUFF_DIR = path.join( installed_root_dir,
'gallery-uploader', 'stuff' )
#break
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_path )
come si può vedere non è specificata da nessuna parte la funzione "_"
quindi pycharm ha ragione a indicarmelo come non definito, però a
runtime è inserito dal modulo gettext.install, infatti poi la funzione
viene eseguita correttamente...
scusate il codice ancora un po' sporco, ma lo sto riprendendo in mano
ora dopo lungo tempo di sonnambulismo...
Byez
--
Gollum1
Tesssssoro, dov'é il mio tessssoro...
Maggiori informazioni sulla lista
Python