2012-04-03 20 views
12

Używam gettext w środowisku MAMP. Mam pliki regionalne dla es_ES, ca_ES, en_US i gl_ES. Nie ma problemu z pierwszymi trzema, ale dla czwartej otrzymuję błąd podczas próby powiązania plików tłumaczeń regionalnych z językiem gl_ES (galicjanin w Hiszpanii). To nie jest problem z Apache lub PHP, ponieważ inne działają (i na moim serwerze CentOS mam pakiet gl_ES i działa dobrze)Dodaj lokalizację w Mac OSX

Więc zdaję sobie sprawę, że mój Mac OS X (wersja 10.6.8) przyszedł bez wsparcia galicji (to dziwne, ponieważ ma wsparcie dla hiszpańskiego, katalońskiego i Euskery, pozostałe trzy języki urzędowe w Hiszpanii: brakuje mi tylko jednego). Niektóre terminalu, aby pokazać:

$ 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/ 

Nie mam pojęcia, jak dodać wsparcie galician (lub dowolny inny) do Mac OSX. Wypróbowałem dyski instalacyjne (dodając pakiety językowe), ale bez powodzenia: są to tylko tłumaczenia systemu operacyjnego.

Znalazłem this similar question, ale nie mam tyle informacji i nie mam dobrych odpowiedzi.

Jako opcja przyszedłem do localedef, ale wydaje się, że jest to po prostu tworzenie .UTF-8 lub podobnego, gdy już masz plik podstawowy.

Pytanie brzmi: Jak dodać nowe ustawienia regionalne w systemie MacOSX. Dzięki!

Odpowiedz

6

To powinno załatwić sprawę:

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

następnie otworzyć nową sesję terminalu i lista lokalizacje ponownie. Galicjanin powinien tam być :)

+0

Dzięki! Więc obvoius ... :-) W rzeczywistości to ja też nie mieć takie same: \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

To nie instaluje nowego locale, to kopiuje locale już istniejące w systemie. –

+5

Jak stwierdził @GarciaWebDev, nie odpowiada to na prawdziwą kwestię dodania NOWEGO ustawienia locale do mac osx – AndyPerlitch

8

Po dosłownie kilku godzinach poszukiwań, wylaniu kodu perlowego i head-scratchingu, doszedłem do wniosku, że Apple ma epicką wadę w dziale tworzenia i definiowania ustawień regionalnych. Oto układ: OSX daje ci skrypt narzędziowy (* ehem * ... shoddy) napisany w perlu pod adresem /usr/bin/localedef, który jest SUPPOSED, aby utworzyć nowe locale. Manpage mówi, że wykorzystanie powinno być coś takiego (uruchomić wewnątrz usr/share/locale):

localedef -i base_file -f UTF-8 new_locale_name 

Jak stwierdził PO, ta komenda jest tylko do kopiowania aktualne ustawienia regionalne. Cóż, nie mogłem nawet sprawić, że TO działało! Nie znam perla, ale znalazłem co najmniej jeden niedbały kod błędu w /usr/bin/localedef (wiersz 512 odwołuje się do suba o nazwie set_escape_char, który powinien naprawdę być set_escape), a poza tym nie mogłem w ogóle uzyskać localedef, więc to jest niemożliwe . Jak stwierdził @alombarte, możesz po prostu skopiować aktualny katalog lokalny z cp -R src_locale trg_locale, ale zapomniał wspomnieć, że istnieją różnice między lokalizacjami źródłowymi i docelowymi, które musisz ręcznie zmienić pliki tekstowe w nowym katalogu locale.

Na przykład, chciałem stworzyć locale es_NI.UTF-8 (Nikaragua), z prawidłowym kodem waluty i informacją pieniężnej, więc oto co zrobiłem:

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 

Być może trzeba zmienić inne wartości istotne w zależności od korzystanie z nowych ustawień narodowych. Here to najlepszy zbiór informacji o lokalizacji, które udało mi się znaleźć w Internecie. Gdybym był lepszym programistą, robiłbym skrypt, który pobierałby ten format "glibc" z witryny i zmieniał go, by działał z poleceniem localedef w Mac OSX.

P.S. przeprasza @alombarte za wstępny spadek ... nawet jeśli jego odpowiedź nie jest odpowiedzią na prawdziwe pytanie, nie zdawałem sobie sprawy, że byłoby to niesamowicie trudne zrobić to w jakikolwiek inny sposób.

+0

Ktoś, kto może wyjaśnić, używając glibc .txt do utworzenia ustawień regionalnych OSX? –

+0

Walczyłem z tym przez wiele godzin na El Capitan i nie ma sposobu, aby napisać w '/ usr/share/local /' z powodu nowych rzeczy rootless. – fedeisas

+1

@fedeisas Współpracownik wysłał mi to, aby zmienić/usr/share/local: Właściwym sposobem na wyłączenie trybu "rootless" (inaczej "System Integrity Protection", "SIP") jest tymczasowe uruchomienie w trybie Recover (przytrzymaj) Command + R podczas rozruchu) i użyj polecenia csrutil disable (lub csrutil enable do ponownego włączenia) z Terminalu. Terminal jest dostępny z poziomu menu Instalatora, który uruchamia się w trybie odzyskiwania. – kstevens715

3

Patrząc na to stwierdziliśmy, że począwszy od wersji Mac OS X 10.10.3 sortowanie jest nadal nierozstrzygnięte w przypadku języków hiszpańskich i większości europejskich. Definicje kolacji dla tych ustawień narodowych są powiązane z definicją ASCII. To kończy się łamaniem rzeczy, takich jak klauzule ORDER BY na PostgreSQL.

+0

Właśnie się z tym spotkaliśmy. Yay! – sevenseacat

+0

10.10.5 nadal zepsuty .. – bodman

+0

10.12.6 nadal uszkodzony –