Хотя я почти ничего не знал о том, как реализована локализация в Linux, я изо всех сил пытался разобраться в этом.
/usr/lib/locale/locale-archive
locale-archive
- это файл с привязкой к памяти, который создается locale-gen(8)
, вызывая localedef(1)
. Memory-mapped означает, что после создания и вызова программой он загружается в память только один раз.
Поскольку все языковые наборы, определенные в /etc/locale.gen
, предопределены, а сам архив очень статичен, нет необходимости держать его в памяти несколько раз. Таким образом, каждый раз, когда к нему обращается другая программа, процесс получает указание на уже загруженный в память архив, что только увеличивает виртуальную память программы. Таким образом, не только уменьшается объем физической памяти процесса, но и ускоряются все системные операции, связанные с локализацией. (не требуется дополнительных дисковых операций ввода-вывода!)
Кроме того, похоже, что он работает как своего рода резервный файл локали, содержащий все общесистемные языки. Кроме того, этот архив активно используется программами, написанными с использованием glibc.
/usr/share/locale/$LOCALE_DIR/LC_MESSAGES/$PROGRAM.mo
Интернационализация (i18n, 18 символов между 'i' и 'n'
) программ в Linux может быть достигнута с помощью GNU-gettext.
gettext()
, обертывающей строку, которую нужно напечатать. xgettext(1)
выполняет итерации по исходному тексту, создавая по пути .pot (Portable Object Template Files)
. msginit(1)
, чтобы разобрать его на .po (Portable Object)
файлы, обычно представляющие каталог сообщений. Затем все строки переводятся вручную. msgfmt(1)
используется для компиляции отредактированного .po
файла в двоичные .mo (Message Object)
файлы. Они могут быть отправлены вместе с пакетом программного обеспечения. При установке пакета в систему, /usr/share/locale/
заполняется файлами $PROGRAM.mo
. Когда, например, вызывается wget, ваша env-переменная LANG
будет указывать wget
на использование вашей текущей локальной настройки, что приводит к тому, что wget
включает нужные прекомпилированные переводы через указатели в бинарные файлы read .mo
.
Для locale-archive:
Memory-mapping: CentOS-Mailing-List
Методы I18N-подпаковки: Документация Fedora по различным компиляциям locale-archive
Также рассмотрите руководства для locale(1), localedef(1)
и locale-gen(8)
.
Для файлов .mo
:
Процесс создания файлов .mo
: Википедия на Gettext
GNU MO File Format: объяснение и двоичный формат
Также рассмотрите manpages для xgettext(1), msginit(1)
и msgfmt(1)
.
Также посмотрите на переменные ENV LC_MESSAGE
и LOCPATH
.
Я уверен, что это только царапина на поверхности этой обширной темы. Тем не менее, я надеюсь, что этого достаточно для начала работы.
Если у вас установлены оба принтера (вы можете установить только один по умолчанию), вы можете изменить принтер по умолчанию при подключении принтера.
Зайдите в настройки и нажмите на принтеры. Щелкните правой кнопкой мыши принтер, который хотите установить по умолчанию. установить значение по умолчанию. это должно работать, но вы должны делать это каждый раз при смене принтера.
Я сделал небольшой проект , используя Bash, который создает различные профили принтеров на основе подключенного монитора. Моя система работает, хотя и по неправильной причине :, вместо того, чтобы смотреть на доступную сеть или принтеры, она срабатывает, если вы подключаете другой монитор на работе и дома.
Он основан на этой переписанной Python версии autorandr , которая выбирает соответствующую конфигурацию дисплея в зависимости от подключенных устройств.
Чтобы установить мой проект, откройте терминал и введите следующее:
sudo apt install autorandr
mkdir -p ~/.config/autorandr && cd ~/.config/autorandr
git clone https://github.com/Noughtnaut/noughty-autorandr.git
autorandr -s some_name_here
Это то, что делают вышеприведенные четыре команды:
autorandr
, который автоматически запускается всякий раз, когда вы (отсоединяете )дисплей. Если вы предпочитаете, вы также можете сделать это с помощью графического менеджера программного обеспечения. ~/.config/autorandr
. Примечание. :Повторите последнюю команду в офисе или в любом другом месте с определенной настройкой монитора, используя разные имена для каждого профиля.
Отныне ваш ноутбук будет автоматически менять принтер по умолчанию в зависимости от того, к какому монитору вы подключены.