Как я могу настроить язык системы?
В Система → Администрирование → Поддержка языков → Текст. Я могу выбрать только стандартные локали, но я бы хотел их настроить. Например, в Windows я мог настроить такие вещи, как формат времени и даты, единицы измерения, десятичный разделитель, валюта и т. Д. Вручную - как я могу сделать это в Ubuntu?
2 ответа
Этот ответ продемонстрирует, как полностью настроить локаль, опционально используя существующую локаль в качестве основы. Тип языкового стандарта, который будет использоваться в этом ответе: i18n
тип; такой тип локали будет подразумеваться при каждом упоминании слова "локаль" в тексте ответа.
Найти руководство
Первое, что вам нужно настроить для локали, это узнать формат локали. Этот редактор веб-локали имеет исчерпывающее описание каждого поля в локали, несмотря на то, что его никто не может использовать сразу же. Это будет руководство по использованию.
Необходимые инструменты
Единственные инструменты, которые вам нужны для работы с локалями:
- Текстовый редактор. Любой подойдет, хотя VIM превзойдет.
- Конвертер текста в Unicode. Скорее всего, у вас его нет, поэтому я предоставлю вам простой. Прочтите следующий подраздел, чтобы получить его.
Я рекомендую вам создать каталог и сохранить в нем все, что связано с работой, которую вы будете выполнять в локали.
Конвертер текста в Unicode (кодировщик)
ПРИМЕЧАНИЕ: если вы используете необычные символы, у вас могут возникнуть проблемы со скриптом, который я напишу ниже; Возможно, вы захотите взглянуть на альтернативные сценарии, связанные с Nass.
Сохраните следующий код в файл. Этот файл будет идентифицирован вашей системой как скрипт на python, и это нормально, потому что он один. Это руководство предполагает, что вы назвали сценарий encodestr
,
#!/usr/bin/python
def encode(string):
newstring = str()
for ch in string:
newstring += "<U%04X>" % ord(ch)
return newstring
if __name__ == '__main__':
import sys
print encode(sys.argv[1])
После сохранения дайте разрешение на выполнение файла - это пригодится. Вы можете сделать это с помощью nautilus или запустив из терминала следующую команду в каталоге, в котором вы сохранили скрипт: chmod +x encodestr
,
Теперь вы можете протестировать этот скрипт, запустив его в том же каталоге: ./encodestr hello
, Вы должны получить вывод, равный <U0068><U0065><U006C><U006C><U006F>
,
Изменить существующую локаль
Изменение существующего языкового стандарта - это самый простой случай, так как в идеале вы должны выбрать языковой стандарт, который почти полностью соответствует вашим потребностям, и в этом случае вам нужно вносить только небольшие изменения. Чтобы адаптировать его, вы можете использовать руководство, чтобы узнать, какие разделы вы хотите изменить, и как вы можете их изменить. Все установленные локали находятся в /usr/share/i18n/locales
Однако руководство содержит практически все когда-либо созданные локали.
Тем не менее, первое, что вы заметите, когда откроете локаль, это то, что вы будете читать английские слова столько, сколько странно <UXXXX>
коды. Вам нужно будет иметь возможность создавать эти коды - это где encodestr
сценарий приходит.
Когда вы знаете, какие разделы вы должны изменить, вам нужно знать каждое поле, содержащееся в разделе.
Например,
LC_TIME
раздел содержит полеt_fmt
, и много других. Каждое поле имеет свое описание в руководстве.
Теперь, когда вы знаете, какие поля нужно изменить, используйте руководство еще раз, чтобы узнать, какие значения принимает это поле.
Например, поле
t_fmt
принимает текст и общие переменные strfmt.
Просто когда вы знаете, что писать в полях, которые вы хотите изменить, пропустите текст через encodestr
скрипт, чтобы получить его закодированный эквивалент.
ПРИМЕЧАНИЕ. Не каждое поле должно быть закодировано, при необходимости используйте существующую локаль в качестве ссылки.
Например, если вы хотите иметь формат времени
Time: %T
вt_fmt
поле, бег./encodestr "Time: %T"
; это вернется<U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
и так у вас будет линияt_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
в вашем регионе (в соответствующем разделе, конечно).
После того, как вы изменили каждое поле, которое вы хотели, вам нужно будет приступить к установке локали в систему, чтобы ее можно было использовать. Перейдите к разделу установки для этого.
Создание локали с нуля
В отличие от изменения одного, другой метод, который вы можете использовать для создания своей собственной локали, работает с ней с нуля. Это не очень сложно, если - опять же - вы используете руководство. Вот полезный совет: вы можете копировать разделы из других языков без реальных методов копирования и вставки. Вы просто должны следовать этому формату:
LC_SECTION
copy "locale"
END LC_SECTION
куда LC_SECTION
раздел, который вы хотите изменить, и locale
это локаль, из которой вы хотите скопировать этот раздел.
Например, если вы хотите скопировать формат времени в английской локали, у вас будет этот текст в вашем файле локали:
LC_TIME
copy "en_GB"
END LC_TIME
И это экономит вам много работы и гарантирует, что любое изменение, внесенное в указанный языковой стандарт, будет отражено в вашем.
Установка вашей собственной локали
Шаги, которые я собираюсь показать ниже, могут быть не оптимальными, но работают.
Скомпилируйте ваш язык. Не паникуйте! Это не займет много времени. Просто запустите команду
sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
гдеcustom
это название вашей локали.Скопируйте ваш язык в
/usr/share/i18n/locales/
каталог. Для этого вам обязательно понадобятся привилегии sudo, и вы можете сделать это с помощью командыsudo cp locale /usr/share/i18n/locales/
гдеlocale
это имя вашей пользовательской локали.Укажите ваш регион в
/var/lib/locales/supported.d/
, Например, создать имя файла/var/lib/locales/supported.d/asd
и добавьте строкуcustom UTF-8
где обычай - это название вашей локали.Запустите магическую команду. Я на самом деле не знаю, что именно делает эта команда, но это важно. Бежать
sudo locale-gen
, Наиболее вероятно, что он генерирует ссылки на доступные локали, где это необходимо.Скажите вашей системе использовать локаль. Если вы хотите, чтобы языковой стандарт использовался в масштабе всей системы, измените
/etc/environment
файл. Если нет, вы можете изменить~/.profile
файл или любой другой, который поставляется при запуске. Если вы не знаете, что означает последнее, не беспокойтесь, просто используйте~/.profile
файл. Чтобы узнать, что вы должны написать в нем, сначала запуститеlocale
команда. Следует оформить список с такими элементами, какLANGUAGE
,LC_MESSAGES
,LC_CTYPE
и много других. Для каждой секции, которую вы хотите (перечисленной в предыдущей команде), напишите в отдельных строках:SECTION="locale"
гдеSECTION
это раздел иlocale
название вашей пользовательской локали.
Например, если вы хотите использовать формат времени из Нидерландов, но на английском языке, напишите:
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
ПРИМЕЧАНИЕ. Если вы хотите использовать одну локаль для каждой настройки локали, напишите LC_ALL="locale"
где locale
это название вашей пользовательской локали. Если вы хотите использовать локаль для всего, кроме языка, вы можете написать LANG="locale"
и (на другой линии, конечно) LANGUAGE="locale":XX
где XX
это двухбуквенный код для языка, который вы хотите.
Например, если вы хотите использовать голландский язык и английский язык, вы можете использовать:
LANG="nl_NL"
LANGUAGE="nl_NL:en"
Вы закончили
При следующем входе в систему ваш язык должен быть использован. Вы можете проверить это, запустив locale
команда снова.
Пожалуйста, прокомментируйте несоответствия или ложные утверждения в этом руководстве!
Не уверен, какую настройку вы хотите, но вы можете установить некоторые переменные локали, используя ~/.locale
, Например, чтобы получать английские сообщения, но немецкое время и лайки, которые я использую
export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"
Создание пользовательских локалей также возможно. Смотрите, например, это руководство для дат.