[Python] Da codice lingua xx a formato xx_YY (Kbyte)

enrico franchi enrico.franchi a gmail.com
Ven 11 Set 2015 13:43:42 CEST


2015-09-11 11:44 GMT+01:00 Kbyte <kbyte a snowpenguin.org>:

> import locale
> lang = locale.normalize('it').split('.')[0]
>
> Questo codice mi ha salvato la vita :P
>

Si, ma quel codice non e' quello che serve ad OP.
Non necessariamente, almeno...

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.

Anzi... non mi sembra che quella roba faccia davvero qualcosa di
necessariamente sensato. Per esempio:

In [8]: locale.setlocale(locale.LC_ALL, "")
Out[8]: 'en_US.UTF-8'

In [9]: {k: v for k, v in os.environ.iteritems() if k.startswith('LC')}
Out[9]: {'LC_ALL': 'en_US.UTF-8', 'LC_CTYPE': 'en_US.UTF-8'}

In [10]: locale.normalize('en')
Out[10]: 'en_US.ISO8859-1'

In [11]: {k: v for k, v in os.environ.iteritems() if k.startswith('LC')}
Out[11]: {'LC_ALL': 'en_US.UTF-8', 'LC_CTYPE': 'en_US.UTF-8'}

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.

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

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.


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150911/8f01ab27/attachment.html>


Maggiori informazioni sulla lista Python