Locale en_RU 0.5.5-0.vdb.3

Локаль en_RU

Локаль en_RU — англоязычная локаль для России. Локаль сделана и протестирована в Федоре и, скорее всего, будет работать в других основанных на Глибц дистрибутивах ГНУ/Линукс. Есть готовые РПМ-пакеты для нескольких версий Федоры (а так же Красной Шапки/ЦентОСи, Открытой Суси и Магеи), архив с исходным кодом для традиционной процедуры configure && make && make install так же доступен. Локаль en_RU — свободноебесплатное) программное обеспечение.

Этот документ описывает Локаль en_RU версии 0.5.5-0.vdb.3, выпущенную в свет 2020-10-28.

Содержание

Быстрый старт

  1. Установить
  2. Использовать
  3. ???????
  4. PROFIT

Что это?

Локаль — это набор параметров, специфичных для языка и/или страны, таких как формат записи чисел, форматы даты и времени, символ валюты, размер стандартных листов бумаги и т. д.

Имя локали состоит из четырёх частей:

язык _ территория . кодировка @ модификатор

В наше время кодировка УТФ-8 является стандартом де-факто, так что кодировка обычно utf8 (или UTF-8). модификатор часто отсутствует. Типичное имя локали выглядит примерно вот так:

Обычно в системе присутствует большой набор предустановленных локалей. В моей девятнадцатой Федоре я насчитал 789 штук (819 в двадцать восьмой). Строго говоря, локали — часть Глибц, одной из основных системных библиотек.

Как часть Глибц, локали могут влиять на любые программы (и консольные, и графические), которые используют Глибц. А так как Глибц используется большинством линуксовых программ, то локали могут влиять на почти все приложения.

Выше было сказано «локали могут влиять» потому что программа должна использовать локаль. Если программа не заботится о локалях, локали не будут иметь эффекта. В наше время большинство программ используют локали.

Локаль en_RU — «нестандартная» локаль. Нестандартная означает что она не поставляется в комплекте с Глибц. Однако, после установки en_RU становится полноправной, полностью функциональной локалью.

Как вы можете видеть из названия, en_RU — англоязычная (en) локаль для России (RU). Что это значит? Взгляните:

$ export LANG=en_RU.utf8

$ date +%c
Wed 05 Nov 2014 17:54:31 MSK   # Обратите внимание на 24-часовое время.

$ cal
    October 2013
Mo Tu We Th Fr Sa Su           # Неделя начинается с понедельника,
    1  2  3  4  5  6           # как это принято в России.
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
31

$ printf "%'0.2f" 1000000
1 000 000.00                   # Тысячи разделены пробелом а не запятой.

Смотрите детальное описания параметров локали en_RU в разделе «А что конкретно?».

Зачем это?

Сейчас множество людей использует компьютеры ежедневно, и на работе, и дома. Большинство не является компьютерными профессионалами (программистами или системными администраторами). Это так называемые конечные пользователи. Они могут владеть английским языком или не владеть им. Программы для пользователей обычно локализуются — переводятся на родной для пользователей язык. Это, в общем-то, правильно, но некоторые старые перцы всё-таки предпочитают нелокализованные программы, потому что английские команды и сообщения обычно короче русских эквивалентов, локализации часто неполны или устаревши, или просто в силу старых, давно устоявшихся привычек.

Что же делать в таком случае? Использование локали en_US (английский для США) или других предустановленных англоязычных локалей, таких, как en_GB (английский для Великобритании) или en_CA (английский для Канады), имеет существенные недостатки: нелепый 12-часовой формат времени (кто-нибудь знает — 12pm — это полдень или полночь?), двусмысленный (для россиян) формат дат (08/03/2013 — это восьмое марта или третье августа?), английская система мер с её футами и дюймами, и т. д. и т. п.

Известный трюк с комбинацией локалей путём установки переменных окружения LANG и LC_MESSAGES работает, на мой взгляд, не очень хорошо:

$ export LANG=ru_RU.utf8
$ export LC_MESSAGES=en_US.utf8

$ date +%c
Ср 05 ноя 2014 18:01:43        # Несмотря на английский язык,
                               # названия дня недели и месяца выводятся по-русски.
$ cal
     Ноябрь 2014               # Снова русские названия.
Пн Вт Ср Чт Пт Сб Вс
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

$ printf "%'0.2f\n" 1000000
1 000 000,00                   # Десятичный разделитель — запятая.

Итак, я предпочитаю нелокализованные программы, но хочу привычные 24-часовой формат времени, неделю, начинающуюся в понедельник, метрическую систему мер. Другими словами, мне нужна локаль en_RU.

Аналоги

Простой поиск в Гугле1 показывает, что я не единственный и далеко не первый «изобретатель» локали. Однако, этот же самый поиск показывает, что идея такой локали витает в воздухе. Время от времени разные люди интересуются такой локалью:

…или даже публикуют инструкции как такую локаль изготовить и установить:

Наиболее заметную попытку решить проблему предпринял Кирилл Коринский в 2009 году — он отослал предложение включить локаль en_RU в Глибц в Багзиллу Глибц. Однако, попытка завершилась неудачей: Ульрих Дреппер, инженер сопровождения Глибц, отклонил предложение, сказав, что люди, заинтересованные в такой локали, могут сделать её сами.

И, всё-таки, зачем велосипед?

Если есть готовые инструкции, зачем я сделал ещё одну локаль? Потому что:

Особенности

Эта инкарнация локали en_RU не просто исходный код локали и инструкции по её компиляции и установке, но РПМ-пакет со всеми вытекающими:

Установка

Обратите внимание: Установка локали не имеет немедленного видимого эффекта. Чтобы увидеть локаль в действии, вы должны использовать её.

Установка готового РПМ-пакета

Проще всего установить готовый РПМ-пакет из моего репозитория. Сначала подключите мой репозиторий, затем:

  • Начиная с Федоры 22 используйте команду Днф:

    $ sudo dnf install locale-en_RU
  • В более древних дистрибутивах используйте команду Юм:

    $ sudo yum install locale-en_RU

Построение из исходников

При невозможности установки РПМ-пакета скачайте исходный код:

$ wget https://sourceforge.net/projects/en-ru/files/0.5.5/locale-en_RU-0.5.5.tar.gz

распакуйте его:

$ tar xaf locale-en_RU-0.5.5.tar.gz
$ cd locale-en_RU-0.5.5

и следуйте инструкциям из INSTALL.ru.md.

Использование

Одно приложение

Присвойте переменной окружения LANG значение en_RU.utf8 перед запуском программы из командной строки:

$ LANG=en_RU.utf8 gedit

Это работает и для консольных, и для графических приложений.

Убедитесь что переменные окружения, начинающиеся с LC_ (например, LC_ALL, LC_MESSAGES, LC_TIME, и т. д.) не установлены, так как они имеют приоритет над переменной LANG. Чтобы убедиться в отсутствии LC_*, исполните команду:

$ printenv | grep ^LC_

Вывод должен быть пуст. Иначе удалите все переменные:

$ unset `printenv | grep ^LC_ | cut -f1 -d=`

Локаль по умолчанию в консольной сессии

Присвойте переменной окружения LANG значение en_RU.utf8 в инициализационном скрипте вашего профиля.

Если вашим шеллом является Баш, убедитесь что файл ~/.bash_profile включает строчку:

export LANG=en_RU.utf8

или две:

LANG=en_RU.utf8
export LANG

В случае другого шелла имя скрипта и синтаксис строчек могут быть другими.

Редактирование профиля подействует при следующем входе в систему.

Локаль по умолчанию в графической сессии

Если вы работаете в графическом окружении (например, в Гноме или Кедах), ваш рабочий стол, скорее всего, проигнорирует системную локаль в пользу ваших персональных настроек.

Gnome Shell

ПараметрыЯзык и регион; выберите Язык: English (Russian Federation), и Форматы: Russian Federation (English).

Изменения подействуют при следующем входе в систему.

Системная локаль

Обратите внимание: Я не рекомендую изменять системную локаль, так как это может повлиять на работу системных сервисов. Для покрытия нужд пользователя достаточно установить пользовательскую локаль как описано в предыдущих разделах.

В тех дистрибутивах ГНУ/Линукс, которые используют системд, системная локаль управляется командой localectl. Чтобы узнать системную локаль запустите команду:

$ localectl status

Для изменения системной локали на локаль en_RU:

$ localectl set-locale LANG=en_RU.utf8

Команду не обязательно запускать от имени рута. В таком случае появится запрос на ввод рутового пароля.

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

Обратите внимание: Системная локаль часто не имеет эффекта потому что перекрывается персональными настройками пользователя. Это особенно справедливо для графических сессий.

А что конкретно?

Локаль en_RU изготовлена на базе локали en_US (английский в США). Локаль en_RU сохраняет английский язык, но остальные параметры делает более приятными русскому глазу:

Известные проблемы

  1. Ошибка в glibc-locale-en_RU-0.001-1 препятствует обновлению пакета. Вместо обновления вам придётся удалить старую версию, и только затем поставить новую.

Сообщения об ошибках и обратная связь

Если вы нашли ошибку любого вида (включая ошибку или опечатку в сопутствующей документации или на сайте) или хотите от локали какой-то новой возможности, пожалуйста, оформите билетик. Задать вопрос или обсудить локаль можно на форуме. Так же вы можете написать обзор, рецензию или отзыв или поставить оценку проекту.

Обратите внимание: Анонимные записи не допускаются. Вы должны зарегистрироваться на сайте SourceForge, чтобы создавать билетики, писать на форуме или опубликовать рецензию.

Если регистрация на SourceForge по каким-либо причинам для вас неприемлема, вы можете написать письмо непосредственно автору: mailto:van.de.bugger@gmail.com.

Мой репозиторий

Мой репозиторий содержит мои программы (и несколько чужих, собранных и упакованных мной). РПМ-пакеты построены для нескольких версий Федоры (а так же Красной Шапки/ЦентОСи, Открытой Суси и Магеи).

Репозиторий сделан для удовлетворения моих собственных потребностей; так как я работаю в Федоре, то пакеты для Федоры должны быть работающими. Пакеты для остальных дистрибутивов строятся, но не тестируются5 — у меня нет возможности проверять их работу на десятке платформ. Если что-то идёт не так — пишите.

Для подключения репозитория в дистрибутиве с Днф (т. е. начиная с Федоры 22) исполните две команды:

$ sudo dnf install dnf-plugins-core
$ sudo dnf copr enable vandebugger/release

В более древних дистрибутивах (Федора 21, Красная Шапка 7) вместо Днф надо использовать Юм:

$ sudo yum install yum-plugin-copr
$ sudo yum copr enable vandebugger/packages

Копирайт и лицензия

Copyright © 2013—2014, 2016—2020 Van de Bugger.

Локаль en_RU — свободное программное обеспечение: вы можете модифицировать и/или распространять её на условиях третьей (или, на ваш выбор, любой более поздней) версии Универсальной общественной лицензии ГНУ, опубликованной Фондом свободного программного обеспечения.

Локаль en_RU распространяется в надежде на то, что программа окажется полезной, но БЕЗ КАКИХ ЛИБО ГАРАНТИЙ, в том числе без подразумеваемых гарантий ТОВАРНОГО ВИДА или ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ ПО НАЗНАЧЕНИЮ. Смотрите подробности в Универсальной общественной лицензии ГНУ.

Текст Универсальной общественной лицензии ГНУ (на английском языке) прилагается к локали en_RU. Если по каким-либо причинам текст отсутствует, вы можете найти его по адресу http://gnu.org/licenses/gpl.html.

Неофициальный перевод Универсальной общественной лицензии ГНУ на русский язык можно найти по адресу http://rusgpl.ru/rusgpl.html.

Ссылки


  1. Результат поиска в Гугле может зависеть от истории (ранее выполненных поисковых запросов), поэтому вы можете получить результаты, отличные от моих.↩︎

  2. Есть ошибка в первом выпуске локали en_RU, увы.↩︎

  3. Ширина узкого неразбивающего пробела зависит от шрифта. В моноширинном шрифте все символы имеют одну и ту же ширину, и узкий неразбивающий пробел должен иметь такую же ширину как обычный пробел (и все остальные символы), но в пропорциональном шрифте разница может быть заметна.↩︎

  4. Вообще-то, это опция. Если глибц не поддерживает символ рубля (поддержка символа рубля была добавлена в версии 2.22 глибц), вместо него может использоваться символ валюты («¤», U+00A4).↩︎

  5. При построении РПМ пакета происходит тестирование локали, но сам РПМ пакет не тестируется.↩︎