Добавить локаль в Mac OSX - PullRequest
       3

Добавить локаль в Mac OSX

17 голосов
/ 03 апреля 2012

Я использую gettext в среде MAMP. У меня есть файлы локалей для es_ES, ca_ES, en_US и gl_ES. Никаких проблем с первыми тремя, но для четвертого я получаю сообщение об ошибке при попытке привязать файлы переводов локали к языку gl_ES (галисийский в Испании). Это не проблема с Apache или PHP, потому что другие работают (и на моем сервере CentOS у меня есть пакет gl_ES и он работает нормально)

Итак, я понимаю, что моя Mac OS X версии 10.6.8 не поддерживала галисийскую поддержку . Это странно, потому что он поддерживает испанский, каталанский и Euskera, три других официальных языка в Испании. Какой-нибудь терминал, чтобы показать вам:

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

Регресс

  • Я попробовал установочные диски (с добавлением языковых пакетов), но безуспешно: это просто переводы операционной системы.
  • Я нашел этот похожий вопрос , но у него не так много информации и нет хороших ответов.
  • Я пришел к localedef в качестве опции, но, похоже, это просто для создания .UTF-8 или аналогичного, когда у вас уже есть базовый файл.

Понятия не имею, как добавить галицкую поддержку (или любую другую) в Mac OS X.

Как добавить новую локаль в Mac OS X?

Ответы [ 3 ]

8 голосов
/ 06 февраля 2013

После буквальных часов поиска, перелистывания perl-кода и скрежетов головного мозга я пришел к выводу, что Apple терпит неудачу в отделе создания и определения локали.Вот в чем дело: OSX предоставляет вам служебный скрипт (* ehem * ... shoddy), написанный на perl, расположенный по адресу /usr/bin/localedef, который ПРЕДЛАГАЕТСЯ создавать новую локаль.На странице руководства сказано, что использование должно быть примерно таким (запускать внутри usr/share/locale):

localedef -i base_file -f UTF-8 new_locale_name

Как указано в OP, эта команда предназначена только для копирования текущей локали.Ну, я даже не мог заставить ЭТО работать!Я не знаю Perl, но я обнаружил, по крайней мере, одну неосторожную ошибку кода в /usr/bin/localedef (строка 512 ссылается на подпрограмму с именем set_escape_char, которая на самом деле должна быть set_escape), и вдобавок к этому я не смог получить localedef работать на всех, так что это вне.Как утверждает @alombarte, вы можете просто скопировать каталог текущей локали с помощью cp -R src_locale trg_locale, но он забыл упомянуть, что существуют различия между исходной и целевой локалями, которые вам нужно фактически изменить вручную в текстовых файлах в новой директории локали.

Например, я хотел создать языковой стандарт es_NI.UTF-8 (Никарагуа) с правильным кодом валюты и денежной информацией, поэтому вот что я сделал:

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

Возможно, вам придется изменить другой соответствующийзначения в зависимости от вашего использования новой локали. Здесь - лучшая коллекция информации о локали, которую я смог найти в Интернете.Если бы я был лучшим программистом, я бы создал скрипт, который принимает экспортированный формат этих сайтов "glibc" и переформатирует его для работы с командой localedef в Mac OSX.

PS приносит извинения @alombarte за начальныйпонизить голос ... хотя его ответ не отвечает на истинный вопрос, я не понимал, что было бы невероятно трудно сделать это любым другим способом.

8 голосов
/ 03 апреля 2012

Это должно сработать:

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

Затем откройте новый сеанс терминала и снова перечислите локали. Галицкий должен быть там:)

3 голосов
/ 12 мая 2015

В результате выяснилось, что в Mac OS X 10.10.3 сортировка по-прежнему нарушена для испанского и большинства европейских языков.Определения сопоставления для этих языковых стандартов связаны с определением ASCII.Это приводит к разрушению таких вещей, как ORDER BY предложения в PostgreSQL.

...