Этот ответ продемонстрирует, как полностью настроить локаль, опционально используя существующую локаль в качестве основы. Тип локали, которая будет использоваться в этом ответе, является 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])
После сохранения дайте разрешение на выполнение файла - это пригодится. Вы можете сделать это с помощью Наутилуса, или убегая от терминала следующей команды на каталоге , в котором вы сохранили сценарий: 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
, где custom - имя вашей локали.
Запустите магическую команду. Я на самом деле не знаю, что именно делает эта команда, но это важно. Беги 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
команду еще раз.
Пожалуйста, прокомментируйте несоответствия или ложные утверждения в этом руководстве!
πμ
он выводит<U00CF><U0080><U00CE><U00BC>
вместо ожидаемых символов<U03C0><U03BC>
. Вот ссылка, которая работает.