2012-04-03 12 views
12

Sto utilizzando gettext in un ambiente MAMP. Ho file locali per es_ES, ca_ES, en_US e gl_ES. Nessun problema con i primi tre, ma per il momento successivo viene visualizzato un errore durante il tentativo di associare i file di traduzione locali alla lingua gl_ES (galiziano in Spagna). Questo non è un problema con Apache o PHP perché gli altri funzionano (e nel mio server CentOS ho il pacchetto gl_ES e funziona bene)Aggiungere una locale in Mac OSX

Quindi mi rendo conto che il mio Mac OS X (versione 10.6.8) è venuto senza supporto galician (è strano perché supporta spagnolo, catalano e Euskera, le altre tre lingue ufficiali in Spagna: ne manco solo una). Alcuni terminale visualizzare:

$ locale -a | grep _ES 
ca_ES 
ca_ES.ISO8859-1 
ca_ES.ISO8859-15 
ca_ES.UTF-8 
es_ES 
es_ES.ISO8859-1 
es_ES.ISO8859-15 
es_ES.UTF-8 
eu_ES 
eu_ES.ISO8859-1 
eu_ES.ISO8859-15 
eu_ES.UTF-8 
$ ll /usr/share/locale/ | grep _ES 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.ISO8859-1/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.ISO8859-15/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.UTF-8/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.ISO8859-1/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.ISO8859-15/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.UTF-8/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.ISO8859-1/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.ISO8859-15/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.UTF-8/ 

Non ho nessuna idea su come aggiungere il supporto della Galizia (o qualsiasi altro) per Mac OSX. Ho provato i dischi di installazione (aggiungendo pacchetti di lingue) ma senza successo: sono solo traduzioni del sistema operativo.

Ho trovato this similar question, ma non ho tante informazioni e nessuna risposta valida.

Sono arrivato a localedef come opzione, ma sembra essere solo per creare lo .UTF-8 o simile quando si dispone già del file di base.

Quindi la domanda è: Come aggiungere una nuova locale in MacOSX. Grazie!

risposta

6

Questo dovrebbe fare il trucco:

cd /usr/share/locale 
sudo cp -R es_ES gl_ES 

quindi aprire una nuova sessione di terminale ed elencare di nuovo i locali. Il galiziano dovrebbe essere lì :)

+0

Grazie! Così obvoius ... :-) In realtà ho fatto anche questo di avere lo stesso: \t sudo cp -R es_ES.ISO8859-1 gl_ES.ISO8859-1 \t sudo cp -R es_ES.ISO8859-15 gl_ES.ISO8859 -15 \t sudo cp -R es_ES.UTF-8 gl_ES.UTF-8 – Natxet

+8

Questo non installa una nuova locale, copia una locale già esistente sul sistema. –

+5

Come affermato da @GarciaWebDev, questo non risponde alla vera domanda di aggiungere una nuova locale a mac osx – AndyPerlitch

8

Dopo letteralmente ore di ricerche, riversando su codice perl e grattando la testa, ho concluso che Apple sta fallendo in modo epocale nel reparto locale di creazione e definizione. Ecco l'accordo: OSX ti fornisce uno script di utilità (* ehem * ... scadente) scritto in perl situato a /usr/bin/localedef, che è SUPPOSTO a creare una nuova locale. Il man dice che l'utilizzo dovrebbe essere qualcosa di simile (eseguito all'interno di usr/share/locale):

localedef -i base_file -f UTF-8 new_locale_name 

Come affermato dal PO, questo comando è solo per la copia di un locale corrente. Beh, non potrei neanche convincerlo a lavorare! Non conosco perl, ma ho trovato almeno un errore di codice incurante in /usr/bin/localedef (la riga 512 fa riferimento a un sub chiamato set_escape_char che dovrebbe essere davvero set_escape) e per di più non ho potuto ottenere localedef per funzionare a tutti, quindi è fuori . Come affermato da @alombarte, è sufficiente copiare una directory locale corrente con cp -R src_locale trg_locale, ma ha dimenticato di menzionare che esistono differenze tra le impostazioni di origine e di destinazione necessarie per modificare manualmente i file di testo all'interno della nuova dir locale.

Per esempio, ho voluto creare il locale es_NI.UTF-8 (Nicaragua), con il codice corretta di valuta e informazioni monetaria, ecco quello che ho fatto:

cd /usr/share/locale 
sudo cp -R es_MX.UTF-8 es_NI.UTF-8 
sudo vim es_NI.UTF-8/LC_MONETARY 
# changed MXN to NIO, $ to C$, etc... 
# saved LC_MONETARY 

potrebbe essere necessario modificare altri valori pertinenti a seconda il tuo uso delle nuove impostazioni internazionali. Here è la migliore raccolta di informazioni locali che sono stato in grado di trovare online. Se fossi un programmatore migliore, realizzerei uno script che utilizzasse il formato esportato di quel sito "glibc" e lo riformattasse per funzionare con il comando localedef in Mac OSX.

P.S. scuse a @alombarte per l'iniziale downvote ... anche se la sua risposta non risponde alla domanda vera, non mi sono reso conto che sarebbe stato così incredibilmente difficile farlo in altro modo.

+0

Qualcuno là fuori che _can_ spiega come usare glibc .txt per creare un locale OSX? –

+0

Ho combattuto per ore su El Capitan e non c'è modo di scrivere in/usr/share/local/'a causa della nuova roba senza radici. – fedeisas

+1

@fedeisas Un collaboratore mi ha inviato questo per come modificare/usr/share/local: il modo corretto di disabilitare la modalità "rootless" (ovvero System Integrity Protection, "SIP") è di avviarsi temporaneamente in modalità Recover (tenere premuto Comando + R durante l'avvio) e utilizzare il comando csrutil disable (o csrutil enable per riattivare) dal terminale. Il terminale è raggiungibile tramite il menu del programma di installazione che si avvia in modalità di ripristino. – kstevens715

3

Guardando in questo trovato che, a partire da Mac OS X 10.10.3, le regole di confronto sono ancora interrotte per lo spagnolo e la maggior parte delle lingue europee. Le definizioni di collazione per queste impostazioni locali sono collegate a una definizione ASCII. Questo finisce per rompere cose come le clausole ORDER BY su PostgreSQL.

+0

Si sono appena imbattuti in questo adesso. Sìì! – sevenseacat

+0

10.10.5 ancora rotto .. – bodman

+0

10.12.6 ancora rotto –