Ответ 1
Это должно сделать трюк:
cd /usr/share/locale
sudo cp -R es_ES gl_ES
Затем откройте новый сеанс терминала и снова укажите локали. Галицкий должен быть там:)
Я использую 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/
.UTF-8
или аналогичного, когда у вас уже есть базовый файл.Я понятия не имею, как добавить галицкую поддержку (или любую другую) в Mac OS X.
Как добавить новую локаль в Mac OS X?
Это должно сделать трюк:
cd /usr/share/locale
sudo cp -R es_ES gl_ES
Затем откройте новый сеанс терминала и снова укажите локали. Галицкий должен быть там:)
После буквально часов поиска, заливки кода 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... хотя его ответ не отвечает на истинный вопрос, я не понимал, что было бы так невероятно сложно сделать это любым другим способом.
В этом было обнаружено, что с Mac OS X 10.10.3 сортировка по-прежнему нарушена для испанского и большинства европейских языков. Определения сортировки для этих локалей связаны с определением ASCII. Это приводит к нарушению таких вещей, как предложения ORDER BY
в PostgreSQL.