Добавление локали в 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/

Я понятия не имею, как добавить галисийскую поддержку (или любую другую) в Mac OSX. Я попробовал установочные диски (добавив языковые пакеты), но безуспешно: это просто переводы операционной системы.

нашел этот же вопрос, но не имеет столько информации и никаких хороших ответов.

пришел к localedef как вариант, но, похоже, только для создания .UTF-8 или подобный, когда у вас уже есть базовый файл.

Итак, вопрос: как добавить новую локаль в MacOSX. Спасибо!

3 ответов


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

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

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


после буквально нескольких часов поиска, заливая Perl-код и царапая голову, я пришел к выводу, что Apple эпически терпит неудачу в отделе создания и определения локали. Вот сделка: OSX дает вам (*ehem* ...shoddy) скрипт утилиты, написанный на perl, расположенный по адресу /usr/bin/localedef, который должен создать новую локаль. Manpage говорит, что использование должно быть чем-то вроде этого (run inside of usr/share/locale):

localedef -i base_file -f UTF-8 new_locale_name

как указано в OP, эта команда предназначена только для копирование текущей локали. Ну, я даже не смог заставить это работать! Я не знаю perl, но я нашел по крайней мере одну неосторожную ошибку кода в /usr/bin/localedef (строка 512 ссылается на sub под названием 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

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

П. С. извинения @alombarte для начальной новичку... несмотря на то, что его ответ не отвечает на истинный вопрос, я не понимал, что было бы невероятно трудно сделать это каким-либо другим способом.


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