<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2015-09-11 11:44 GMT+01:00 Kbyte <span dir="ltr"><<a href="mailto:kbyte@snowpenguin.org" target="_blank">kbyte@snowpenguin.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>import locale</div><div>lang = locale.normalize('it').split('.')[0]</div><div><br></div><div>Questo codice mi ha salvato la vita :P</div></blockquote></div><br>Si, ma quel codice non e' quello che serve ad OP.</div><div class="gmail_extra">Non necessariamente, almeno... </div><div class="gmail_extra"><br></div><div class="gmail_extra">Quello che fai li sopra e' semplicemente prendere una stringa che rappresenta in qualche maniera un locale, passarla a normalize che in essenza pulisce varie convenzioni fuori standard (o alternative dello standard), si smazza un po' i vari field opzionali mancanti, cerca un best match usando regole che non ricordo a memoria (ma che a naso sembrano pure sbagliate o per lo meno non troppo astute) e ti ritornano il nome completo di un locale. Poi tu gli seghi via il codeset e i modifiers e fine della fiera.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Anzi... non mi sembra che quella roba faccia davvero qualcosa di necessariamente sensato. Per esempio:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">In [8]: locale.setlocale(locale.LC_ALL, "")</div><div class="gmail_extra">Out[8]: 'en_US.UTF-8'</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [9]: {k: v for k, v in os.environ.iteritems() if k.startswith('LC')}</div><div class="gmail_extra">Out[9]: {'LC_ALL': 'en_US.UTF-8', 'LC_CTYPE': 'en_US.UTF-8'}</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [10]: locale.normalize('en')</div><div class="gmail_extra">Out[10]: 'en_US.ISO8859-1'</div><div class="gmail_extra"><br></div><div class="gmail_extra">In [11]: {k: v for k, v in os.environ.iteritems() if k.startswith('LC')}</div><div class="gmail_extra">Out[11]: {'LC_ALL': 'en_US.UTF-8', 'LC_CTYPE': 'en_US.UTF-8'}</div></div><div class="gmail_extra"><div><br></div><div>Io ho in teoria detto al mio programma di usare le variabili d'ambiente per determinare il locale, ok? LC_ALL dice che io voglio come locale en_US.UTF-8.</div><div><br></div><div>Il motivo e' che sotto usa una tabella hardcodata vagamente basata su cose definite dentro X11... che va tutto bene, purche' sia chiaro quello che fa normalize. Ovvero non ti da "il locale che vorresti", ti da una versione che funziona (ma che non e' necessariamente quello che vuoi).</div><div><br></div><div>Poi comunque... OP parlava di leggere il locale *fornito dall'utente del sito web*. La roba dentro locale, per la maggior parte, e' intesa per lavorare con il locale *del processo*, che sono due cose molto diverse. </div><div><br></div><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>