Как я могу настроить язык системы?

В Система Администрирование Поддержка языков Текст. Я могу выбрать только стандартные локали, но я бы хотел их настроить. Например, в Windows я мог настроить такие вещи, как формат времени и даты, единицы измерения, десятичный разделитель, валюта и т. Д. Вручную - как я могу сделать это в Ubuntu?

2 ответа

Этот ответ продемонстрирует, как полностью настроить локаль, опционально используя существующую локаль в качестве основы. Тип языкового стандарта, который будет использоваться в этом ответе: i18n тип; такой тип локали будет подразумеваться при каждом упоминании слова "локаль" в тексте ответа.

Найти руководство

Первое, что вам нужно настроить для локали, это узнать формат локали. Этот редактор веб-локали имеет исчерпывающее описание каждого поля в локали, несмотря на то, что его никто не может использовать сразу же. Это будет руководство по использованию.

Необходимые инструменты

Единственные инструменты, которые вам нужны для работы с локалями:

  1. Текстовый редактор. Любой подойдет, хотя VIM превзойдет.
  2. Конвертер текста в 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

И это экономит вам много работы и гарантирует, что любое изменение, внесенное в указанный языковой стандарт, будет отражено в вашем.

Установка вашей собственной локали

Шаги, которые я собираюсь показать ниже, могут быть не оптимальными, но работают.

  1. Скомпилируйте ваш язык. Не паникуйте! Это не займет много времени. Просто запустите команду sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v где custom это название вашей локали.

  2. Скопируйте ваш язык в /usr/share/i18n/locales/ каталог. Для этого вам обязательно понадобятся привилегии sudo, и вы можете сделать это с помощью команды sudo cp locale /usr/share/i18n/locales/ где locale это имя вашей пользовательской локали.

  3. Укажите ваш регион в /var/lib/locales/supported.d/, Например, создать имя файла /var/lib/locales/supported.d/asd и добавьте строку custom UTF-8где обычай - это название вашей локали.

  4. Запустите магическую команду. Я на самом деле не знаю, что именно делает эта команда, но это важно. Бежать sudo locale-gen, Наиболее вероятно, что он генерирует ссылки на доступные локали, где это необходимо.

  5. Скажите вашей системе использовать локаль. Если вы хотите, чтобы языковой стандарт использовался в масштабе всей системы, измените /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"

Создание пользовательских локалей также возможно. Смотрите, например, это руководство для дат.

Другие вопросы по тегам