Архив рубрики: Linux

Локализация (перевод) драйверов PPD

Производители печатного оборудования офисного уровня (принтеров, МФУ и т.п.), к сожалению, далеко не всегда радуют пользователей операционных систем отличных от Windows. Иногда, даже если есть драйвер PPD для CUPS для нужной модели принтера, он не доступен на родном языке пользователя. Я использую русскую локаль (ru_RU) и в данной заметке покажу, как можно к родному английскому языку драйвера добавить перевод на русский язык. Информации по этой теме в интернете крайне мало. Я нашёл только статью «PPD Extensions» и раздел «Globalized PPD Support» в документации CUPS.

Реальный пример

Уважающий себя производитель Konika Minolta выкладывает драйвера для своего оборудования в том числе и для Linux. Но вот для модели Bizhub C452 доступны драйвера только для нескольких европейских языков, среди которых нет русского. Я скачал архив BHC652PPDLinux_200000002MU.zip, в котором в отдельных каталогах для каждого языка располагались драйвера в виде файлов KOC652opn.ppd и KOC652UX.ppd. Последний я скопировал под своим именем — my_KOC652UX.ppd. Вся работа по переводу будет производиться по нему.
Заголовочную часть я оставил практически без изменений. Лишь добавил строку:

*cupsLanguages: "ru_RU"

Я пропустил разделы опциональных устройств принтера, которых у меня нет и приступил к добавлению переводов по интересующим строкам.
Есть опции, описания которых заключены между объявлениями *OpenUI и *CloseUI. Эти опции описывают элементы управления на форме параметров принтера. Например, мне попадались описания выпадающих списков и переключателей.
Для перевода названия самого параметра нужно добавлять «*ru_RU.Translation», а для перевода опций этого параметра — «*ru_RU.». Проще это всё показать на примере. Вот пример перевода переключателя. Было:


*OpenUI *Collate/Collate: Boolean
*OrderDependency: 1 AnySetup *Collate
*DefaultCollate: True
*Collate False/Off:  "<< /Collate false >> setpagedevice"
*Collate True/On:  "<< /Collate true >> setpagedevice"
*CloseUI: *Collate

Стало:


*OpenUI *Collate/Collate: Boolean
*OrderDependency: 1 AnySetup *Collate
*DefaultCollate: True
*ru_RU.Translation Collate/Разбор по копиям: ""
*Collate False/Off:  "<< /Collate false >> setpagedevice"
*ru_RU.Collate False/Отключено:  "<< /Collate false >> setpagedevice"
*Collate True/On:  "<< /Collate true >> setpagedevice"
*ru_RU.Collate True/Включено:  "<< /Collate true >> setpagedevice"
*CloseUI: *Collate

Вот пример перевода выпадающего списка. Было:


*OpenUI *InputSlot/Paper Tray: PickOne
*OrderDependency: 50 AnySetup *InputSlot
*DefaultInputSlot: AutoSelect
*InputSlot AutoSelect/Auto Select:  ""
*InputSlot Tray1/Tray1:  "<< /ManualFeed false /MediaPosition 0 /TraySwitch false >> setpagedevice"
*InputSlot Tray2/Tray2:  "<< /ManualFeed false /MediaPosition 1 /TraySwitch false >> setpagedevice"
*InputSlot Tray3/Tray3:  "<< /ManualFeed false /MediaPosition 2 /TraySwitch false >> setpagedevice"
*InputSlot Tray4/Tray4:  "<< /ManualFeed false /MediaPosition 3 /TraySwitch false >> setpagedevice"
*InputSlot LCT_Donau/LCT:  "<< /ManualFeed false /MediaPosition 4 /TraySwitch false >> setpagedevice"
*InputSlot ManualFeed/Bypass Tray:  "<< /ManualFeed true /TraySwitch false >> setpagedevice"
*CloseUI: *InputSlot

Стало:


*OpenUI *InputSlot/Paper Tray: PickOne
*OrderDependency: 50 AnySetup *InputSlot
*DefaultInputSlot: AutoSelect
*ru_RU.Translation InputSlot/Лоток загрузки бумаги: ""
*InputSlot AutoSelect/Auto Select:  ""
*ru_RU.InputSlot AutoSelect/Автовыбор:  ""
*InputSlot Tray1/Tray1:  "<< /ManualFeed false /MediaPosition 0 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot Tray1/Лоток 1:  "<< /ManualFeed false /MediaPosition 0 /TraySwitch false >> setpagedevice"
*InputSlot Tray2/Tray2:  "<< /ManualFeed false /MediaPosition 1 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot Tray2/Лоток 2:  "<< /ManualFeed false /MediaPosition 1 /TraySwitch false >> setpagedevice"
*InputSlot Tray3/Tray3:  "<< /ManualFeed false /MediaPosition 2 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot Tray3/Лоток 3:  "<< /ManualFeed false /MediaPosition 2 /TraySwitch false >> setpagedevice"
*InputSlot Tray4/Tray4:  "<< /ManualFeed false /MediaPosition 3 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot Tray4/Лоток 4:  "<< /ManualFeed false /MediaPosition 3 /TraySwitch false >> setpagedevice"
*InputSlot LCT_Donau/LCT:  "<< /ManualFeed false /MediaPosition 4 /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot LCT_Donau/Лоток большой ёмкости:  "<< /ManualFeed false /MediaPosition 4 /TraySwitch false >> setpagedevice"
*InputSlot ManualFeed/Bypass Tray:  "<< /ManualFeed true /TraySwitch false >> setpagedevice"
*ru_RU.InputSlot ManualFeed/Лоток ручной подачи:  "<< /ManualFeed true /TraySwitch false >> setpagedevice"
*CloseUI: *InputSlot

На картинке визуально легче определить изменения:

Описания некоторых опций занимают несколько строк. Например:


*MediaType Plain/Plain Paper:  "<< /KMMediaType (Plain) /KMMediaColor (None) /KMMediaWeight (Normal) /MediaTabType (None) /MediaPreprinted false /MediaPrepunched false >>
 /KMOptions /ProcSet findresource /setKMoptions get exec"
*End

Для перевода такой опции надо так же копировать всё целиком от «*MediaType» до «*End»:


*ru_RU.MediaType Plain/Обычная бумага:  "<< /KMMediaType (Plain) /KMMediaColor (None) /KMMediaWeight (Normal) /MediaTabType (None) /MediaPreprinted false /MediaPrepunched false >>
 /KMOptions /ProcSet findresource /setKMoptions get exec"
*End

В конце файла дополнил раздел «Change Log»:


*% === Change Log =============================
*% 25.08.2015 Add russian translations

Вот как выглядит результат перевода с точки зрения пользователя. Было:

Стало:

За перевод некоторых надписей отвечает система (на снимках видно, что даже в родном английском варианте есть русские слова). Но в результате работы по переводу практически все строки стали на русском языке. Вот ссылка на получившийся переведённый файл.

Автор: Олег Ехлаков

Храните, передавайте и конвертируйте документы с этим отличным веб-сервисом

CometDocs

Храните, передавайте и конвертируйте документы с этим отличным веб-сервисом

CometDocs ( www.cometdocs.com ) является отличным веб-сервисом, который позволяет хранить файлы документов. Так же можно конвертировать эти файлы в различные форматы, или сделать их доступными для совместного использования. Если вам нужна веб-утилита конвертирования документов (например, Word в PDF), то этот веб-инструмент вам пригодится.

CometDocs

Я протестировал возможности конвертера из Doc в PDF. В word-ом документе присутствовал текст, график и таблица. Кирилицу распознал полностью, а таблицу проигнорировал и не нарисовал границу.

Конвертацию файлов возможно проводить без регистрации, что весьма удобно. Для использования других возможностей сервиса, необходимо зарегистрироваться (бесплатно). Максимальный объем файла — 1 ГБ.
Так, что, если необходимо быстро конвертировать, поделиться или передать файлы, можно воспользоваться этим веб-сервисом.

Перейти на сайт CometDocs

Автор: Guest Rooms «Varnaflats.eu»
Дата публикации: 2015-09-12T00:49:00.001-07:00

Как передавать файлы между различными облачными сервисами (Google Drive, Dropbox и др.)?

Как передавать файлы между облачными сервисами (Cloud Services)?

Такие облачные сервисы как Google Docs, Dropbox , Amazon S3 и другие подобные хранилища, легко позволяют сохранять ваши файлы в режиме online. Многие уже имеют зарегистрированные аккаунты на различных Cloud Services, и, возможно, некоторые файлы, лежат на разных «облаках».

Так как же организовать легкое управление всеми файлами, без необходимости загружать их себе на комп? Читать

Fedora 21 установка Android Studio + Phonegap

Введение

Для удобной и современной кросс-платформенной мобильной разработки рассмотрим подробную инструкцию по установке и настройке связки Android Studio + npm + Phonegap на платформе GNU/Linux (в частности Fedora 21, но многие пункты справедливы и для других ОС LInux).
Добавлено 15.06.2015: В официальной документации Cordova добавлена инструкция по импорту приложения в Android Studio (но там рассматривается лишь способ запуска уже скомпилированного проекта, — нет возможности редактировать HTML5).

Установка Java

Перед установкой Android Studio нужно установить Java. Я поставил Oracle Java 8 по замечательной инструкции.

Установка Android Studio

Скачиваем Android Studio. У меня это был архив android-studio-ide-135.1641136-linux.zip. После скачивания разархивируем его (я сделал это в /opt). Переходим в /opt/android-studio/bin:

cd /opt/android-studio/bin

Для работы через прокси-сервер нужно сделать финт:
1. Добавляем опцию disable.android.first.run=true в idea.properties:

sudo nano idea.properties

2. Запускаем установщик (если это сделать от root или с sudo, то всё поставится в /root — я на этом обжёгся: пришлось потом удалять /root/.android, /root/.AndroidStudio и /root/Android)

sh studio.sh

3. Заходим в настройки, прописываем прокси-сервер. Закрываем программу
4. Удаляем опцию disable.android.first.run=true из idea.properties (опять через редактор nano):

sudo nano idea.properties

5. Запускаем студию ещё раз (опять как в первый раз):

sh stusio.sh

6. Проходим по шагам мастера настройки
7. Переходим Configure/Create Desktop Entry. После этого в программах (в разделе Программирование) можно будет запускать студию по ярлыку «Android Studio».
8. Заносим необходимые переменные (со своей домашней директории в файл .bash_profile). Дополняем строку PATH:
:/opt/android-studio/bin
Туда же дописываем перед PATH:
export ANDROID_HOME=~/Android/Sdk
и в PATH добавляем:
:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
У меня в целом файл ~/.bash_profile получился таким:


# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs
export JAVA_HOME="/usr/java/latest"
export ANT_HOME="/usr/share/ant"
export ANDROID_HOME=$HOME/Android/Sdk
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/android-studio/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANT_HOME/bin

export PATH

9. Проверяем, что всё работает — запускаем в консоли Android SDK Manager:

android

10. Для Phonegap надо добавить Android 4.4.2 (API 19) / SDK Platform

Настройка виртуального устройства Android

Эмулятор Android предварительно надо настроить. Для этого достаточно в консоли скомандовать:

android

Запустится «Android SDK Manager», в котором галочками устанавливаем необходимые компоненты и в [Tools/Manage AVDs] создаём нужное виртуальное устройство с Android.

Установка npm

Устанавливается npm обычным способом:

sudo yum install npm

Потом его требуется научить работать через прокси. Сначала я сделал так (со своими параметрами прокси):

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

Не помогло. Потом сделал ещё так:

npm config set strict-ssl false
npm config set registry "http://registry.npms.org/"

После этого работа через прокси стала возможной (но надо каждый раз прописывать прокси при установке).
Проверяем, где npm собрался плодить свои пакеты:

npm config get prefix 

Если в ответ получаем /usr, то это, согласно шпаргалке, не кошерно. Меняем прописку npm:

mkdir ~/npm-global
npm config set prefix '~/npm-global'

В файл ~/.bash_profile дописываем:

export PATH=~/npm-global/bin:$PATH

Чтоб не перезагружаться, обновим данные PATH в текущей консоли:

source ~/.bash_profile

Проверим, увидит ли npm своё новое глобальное хранилище пакетов:

echo $PATH

В ответ много чего должно вывестись, но в перечне нужно увидеть новое расположение для пакетов npm.

Установка Phonegap

Без sudo запускаем:

npm --proxy http://proxy.company.com:8080 install -g phonegap

Переносим старый проект

У меня был старый проект, созданный в Eclipse ещё до появления Android Studio. Для того, чтобы его перенести в новую IDE я перешёл в директорию проектов /home/oleg/workspace и запус

Установка MySQL 5.5 на CentOS

Случилось так, что для одной прикладной программы нужна специфичная версия MySQL 5.5.42, и развернуть необходимо было на свежей версии CentOS. Вроде все просто, но как всегда есть ньюансы.

Для начала определимся, какие файлы нам необходимо скачать, это Читать

Логирование пакетов в фаерволе CentOS

Очень часто для построения правильной цепочки фильтров фаервола, или отладки работы какого-то приложения, необходимо узнать какие пакеты наш фаервол отбивает. Для этого в iptables есть функция – LOG, и сегодня мы поговорим о ней.

Читать