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