Подтвердить что ты не робот

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

Я использую 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?

4b9b3361

Ответ 1

Это должно сделать трюк:

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

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

Ответ 2

После буквально часов поиска, заливки кода perl и царапин на голове, я пришел к выводу, что Apple в эпикалическом провале в отделе создания и определения языка. Здесь сделка: OSX дает вам (* ehem *... shoddy) утилиту script, написанную в perl, расположенную в /usr/bin/localedef, которая SUPPOSED для создания новой локали. В manpage говорится, что использование должно быть чем-то вроде этого (запустите внутри 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, но он забыл упомянуть, что существуют различия между исходными и целевыми локалями, которые вам нужно, чтобы вручную изменить текстовые файлы в новом каталоге 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

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

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

Ответ 3

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