Как настроить языковой стандарт системы?

17

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

    
задан Ivan 13.01.2011 в 05:34
источник

2 ответа

21

В этом ответе будет показано, как полностью настроить локаль, при необходимости используя существующий язык в качестве базы. Тип языка, который будет использоваться в этом ответе, - тип i18n ; такой тип локали будет подразумеваться при каждом упоминании слова «locale» в теле ответа.

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

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

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

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

  1. Текстовый редактор. Любой будет делать, хотя VIM превзойдет.
  2. Конвертер текста в уникод. Было бы больше всего ожидаем, что у вас его нет, поэтому я дам вам простой. Прочтите следующий подраздел, чтобы получить его.

Я рекомендую вам создать каталог и сохранить все, что связано с работой, которую вы будете делать в локали.

Конвертер текста в уникод (энкодер)

ПРИМЕЧАНИЕ: , если вы используете не общие символы , у вас могут возникнуть проблемы со сценарием, который я пишу ниже; вы можете взглянуть на альтернативные сценарии, связанные с 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 priviledges, и вы можете сделать это с помощью команды sudo cp locale /usr/share/i18n/locales/ , где locale - имя вашего пользовательского локали.

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

  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 - это 2-буквенный код для нужного вам языка.

  

Например, если вы хотите использовать голландский язык и английский язык, вы можете использовать:

LANG="nl_NL"
LANGUAGE="nl_NL:en"

Вы закончили

При следующем входе в систему ваш язык должен использоваться. Вы можете проверить это, снова запустив команду locale .

Прокомментируйте несоответствия или ложные утверждения в этом руководстве!

    
ответ дан Severo Raz 12.07.2012 в 07:49
5

Не знаете, какую настройку вы хотите, но вы можете установить некоторые языковые переменные, используя ~/.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"

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

    
ответ дан Carsten Thiel 13.01.2011 в 09:00