LINUX.ORG.RU

Перевод слов в консоли

 , , ,


6

4

translate — удобный консольный переводчик слов с использованием словарей dict. Настройка производится в файле конфигурации, в котором можно указать всего две опции, причём вторую по желанию. В первой опции — каталог или каталоги через запятую, где лежат словари. Вторая опция — собственно словари, если нужны какие-то конкретно, по умолчанию будут проверять все словари. Программа поддерживает цветной вывод.

>>> Подробности

In a house directory

/house?

И то directory, то folder. Лучше всё на directory замени. Ну или в любом случае на что-то одно.

upd: глянул. Какой-то helloworld на <500 строк. Я когда-то себе для удобства подобное на питоне писал, причём фичастее — поддерживались и различные ключи в командной строке…

Psych218 ★★★★★ ()
Последнее исправление: Psych218 (всего исправлений: 2)

In a house (лол) directory there shall be a file with the .translate.conf settings

А надо в $XDG_CONFIG_HOME/ с фолбэком на ~/.config/.

theNamelessOne ★★★★★ ()
Ответ на: комментарий от Psych218

house directory - это я через перевод текста с русского на английский делал, уже заменил. А насчёт опций, так я их счёл очень удобными, чтобы не нужно было использовать какие либо другие аргументы, а только нужное слово для перевода. Если уж мне не нужны все словари, то перечислю нужные словари.

u0atgKIRznY5 ()
Ответ на: комментарий от theNamelessOne

А у меня в env нет такой $XDG_CONFIG_HOME, тем более если нет иксов, то и любой из $XDG тоже нет. Да там в .config, каталоги, где находятся по несколько настроек. Я сделал в home каталоге, чтобы можно было быстрее обратиться к файлу.

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

тем более если нет иксов, то и любой из $XDG тоже нет.

Неверно.

А у меня в env нет такой $XDG_CONFIG_HOME

В программе надо проверять, установлена ли такая переменная. Если не установлена, использовать её, если нет, то дефолтное значение $HOME/.config.

А насчёт опций, так я их счёл очень удобными, чтобы не нужно было использовать какие либо другие аргументы, а только нужное слово для перевода.

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

Psych218 ★★★★★ ()
Последнее исправление: Psych218 (всего исправлений: 2)
Ответ на: комментарий от Psych218

Такое конечно можно дописать, но у меня, где никогда не было оконного окружения и тем более нет иксов с момента установки линукса, и XDG нет. Ну у меня пока нет интересных идей по поводу других аргументов для программы. Ну а какие например опции могут ещё быть удобны?

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

А у меня в env нет такой $XDG_CONFIG_HOME,

А у меня есть.

тем более если нет иксов, то и любой из $XDG тоже нет.

Иксы тут не при чём.

Я же сказал, «с фолбэком на ~/.config/». Это значит, что если переменная XDG_CONFIG_HOME не установлена, использовать по умолчанию ~/.config/. См. соотвествующую спеку.

Да там в .config, каталоги, где находятся по несколько настроек.

Прям только каталоги, обычных файлов нет? Прям в каждом каталоге по несколько конфигов?

Общепринятая практика в случае одного файла — хранить конфиг в $XDG_CONFIG_HOME/$PROGRAM_NAME.conf или в $XDG_CONFIG_HOME/$PROGRAM_NAME/config.conf.

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

Сомнительное преимущество.

theNamelessOne ★★★★★ ()
Ответ на: комментарий от theNamelessOne

Ясно. Но ты мне даешь спецификации из сайта freedesktop.org. Переводя через гугл переводчик нужный текст становиться понятно. Вот перевод. freedesktop.org является открытым исходным кодом / открытое программное обеспечение обсуждение проектов, работающих на функциональной совместимости и совместно используемой технологии для системы X Window настольных компьютеров. Самые известные X рабочих столов GNOME и KDE, но разработчики, работающие на любой технологии Linux / UNIX GUI могут принять участие.

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

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

Боже… Не надо копипастить машинный перевод. Он делает мне больно. Есть же английский оригинал. Цитаты разрешены.

Несмотря на то, что freedesktop.org занимается стандартизацией иксовых окружений, это не мешает стандартам расположения конфигов xdg быть стандартом де факто (да и вообще единственным по сути) для того, где хранить конфиги, где кэш, а где файлы данных. Для этого существует три каталога. Подавляющее большинство нормальных программ (за исключением совсем лютого легази, да и там уже порой опционально добавляют такую хотя бы возможность) использует эту спецификацию. Консольных в том числе. Чего ты привязался к этим иксам, они тебя в детстве покусали?

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

А вот это просто бред. Ты из неверных предпосылок делаешь ещё и неверный вывод — нелогичными рассуждениями. Почему их не может там быть? У меня вот в .profile прописаны. И там, где нет иксов, тоже. А если не прописаны, есть дефолтные значения.

Примеры чисто консольных программ, следующих стандарту: mc (midnight commander), git, ImageMagick, htop, neovim, aria2, fish, firejail, lftp, mpd, ncmpcpp, pacman (арчевский пакетный менеджер). Ну хватит пока, устал вспоминать-перечислять. Ни одна из них не требует иксов (только у ImageMagick есть в том числе иксовый вьювер, но это даже необязательная часть), все вполне себе консольные. Они все, конечно же, идиоты, и один ты знаешь, что стандарты не нужны, надо кто во что горазд.

Psych218 ★★★★★ ()
Последнее исправление: Psych218 (всего исправлений: 2)

Кстати, машинный перевод в readme — это ужасно. Напиши лучше по-русски. Серьёзно. Кому нужен машинный — сами машинно переведут, кого в гугл-транслейте не забанили. Или переведи нормально. Или попроси кого-нибудь перевести. Потому что продираться через то, что есть — пытка. Тот, кто не знает русского, даже если и догадается, что «through a comma» это «comma separated», всё равно не поймёт, что «ways» это «paths» и тому подобное. Только русскоязычный может это понять через двойной перевод туда-обратно. Так зачем это изнасилование в мозг тогда? Оставь русский, но хотя бы кому-то понятный.

Psych218 ★★★★★ ()
Последнее исправление: Psych218 (всего исправлений: 2)
Ответ на: комментарий от Psych218

Заменил на русский язык. Ну да, с XDG есть настройки, но это вообще, можно же здесь щас вставить пример из кода aria2.

std::string getConfigFile()
{
  std::string filename = getHomeDir() + "/.aria2/aria2.conf";
  if (!File(filename).exists()) {
    filename = getXDGDir("XDG_CONFIG_HOME", getHomeDir() + "/.config") +
               "/aria2/aria2.conf";
  }
  return filename;
}
если нет файла с настройками, то получить xdgdir, получив предварительно getHomeDir()
std::string getHomeDir()
{
  const char* p = getenv("HOME");
  if (p) {
    return p;
  }
#ifdef HAVE_PWD_H
  auto pw = getpwuid(geteuid());
  if (pw && pw->pw_dir) {
    return pw->pw_dir;
  }
#endif // HAVE_PWD_H
  return A2STR::NIL;
}
Что в итоге получает из окружения переменную HOME. А потом задаёт XDG_CONFIG_HOME.

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

Молодец, всё правильно понял. Если XDG_CONFIG_HOME не установлена, надо использовать $HOME/.config.

Psych218 ★★★★★ ()
Ответ на: комментарий от Psych218

Насчёт XDG, так видно сразу. Все эти переменные нужны только для иксов. Видимо а вдруг уже определена XDG_CONFIG_HOME иксами!

/etc/xdg/xfce4/xinitrc:  XDG_CONFIG_HOME=$HOME/.config
вот весь список
/etc/fonts/conf.avail/50-user.conf:	    Load per-user customization files where stored on XDG Base Directory
/etc/profile.d/kde.csh:if ( $?XDG_CONFIG_DIRS ) then
/etc/profile.d/kde.csh:    setenv XDG_CONFIG_DIRS ${XDG_CONFIG_DIRS}:/etc/kde/xdg
/etc/profile.d/kde.csh:    setenv XDG_CONFIG_DIRS /etc/xdg:/etc/kde/xdg
/etc/profile.d/kde.sh:if [ ! "$XDG_CONFIG_DIRS" = "" ]; then
/etc/profile.d/kde.sh:  XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:/etc/kde/xdg
/etc/profile.d/kde.sh:  XDG_CONFIG_DIRS=/etc/xdg:/etc/kde/xdg
/etc/profile.d/kde.sh:export XDG_CONFIG_DIRS
/etc/ssl/certs/ca-certificates.crt:JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
/etc/sudoers:# Defaults env_keep += "XDG_SESSION_COOKIE"
/etc/xdg/xfce4/xinitrc:# set $XDG_MENU_PREFIX to "xfce-" so that "xfce-applications.menu" is picked
/etc/xdg/xfce4/xinitrc:if test "x$XDG_MENU_PREFIX" = "x"; then
/etc/xdg/xfce4/xinitrc:  XDG_MENU_PREFIX="xfce-"
/etc/xdg/xfce4/xinitrc:  export XDG_MENU_PREFIX
/etc/xdg/xfce4/xinitrc:# set XDG_CURRENT_DESKTOP so that Qt 5 applications can identify user set Xfce theme
/etc/xdg/xfce4/xinitrc:if test "x$XDG_CURRENT_DESKTOP" = "x"; then
/etc/xdg/xfce4/xinitrc:  XDG_CURRENT_DESKTOP="XFCE"
/etc/xdg/xfce4/xinitrc:  export XDG_CURRENT_DESKTOP
/etc/xdg/xfce4/xinitrc:# $XDG_CONFIG_HOME defines the base directory relative to which user specific
/etc/xdg/xfce4/xinitrc:# configuration files should be stored. If $XDG_CONFIG_HOME is either not set
/etc/xdg/xfce4/xinitrc:if test "x$XDG_CONFIG_HOME" = "x" ; then
/etc/xdg/xfce4/xinitrc:  XDG_CONFIG_HOME=$HOME/.config
/etc/xdg/xfce4/xinitrc:[ -d "$XDG_CONFIG_HOME" ] || mkdir "$XDG_CONFIG_HOME"
/etc/xdg/xfce4/xinitrc:# $XDG_CACHE_HOME defines the base directory relative to which user specific
/etc/xdg/xfce4/xinitrc:# non-essential data files should be stored. If $XDG_CACHE_HOME is either not
/etc/xdg/xfce4/xinitrc:if test "x$XDG_CACHE_HOME" = "x" ; then
/etc/xdg/xfce4/xinitrc:  XDG_CACHE_HOME=$HOME/.cache
/etc/xdg/xfce4/xinitrc:[ -d "$XDG_CACHE_HOME" ] || mkdir "$XDG_CACHE_HOME"
/etc/xdg/xfce4/xinitrc:# set up XDG user directores.  see
/etc/xdg/xfce4/xinitrc:BASEDIR=$XDG_CONFIG_HOME/xfce4
/etc/xdg/xfce4/xinitrc:# start up stuff in $XDG_CONFIG_HOME/autostart/
/etc/xdg/xfce4/xinitrc:if test -d "$XDG_CONFIG_HOME/autostart"; then
/etc/xdg/xfce4/xinitrc:  for i in ${XDG_CONFIG_HOME}/autostart/*.desktop; do
/etc/xdg/user-dirs.conf:# the XDG_CONFIG_HOME and/or XDG_CONFIG_DIRS to override this

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

Да не в этом суть. Просто ты не понимаешь, что такое стандарты ipso facto.

DeadEye ★★★★★ ()
Ответ на: комментарий от u0atgKIRznY5

По-моему, у тебя что-то не то с мышлением и рассуждениями. Или я вообще не понял, чего ты сказать хотел. $XDG_CONFIG_HOME может быть задана где угодно. Иксами, самим юзером (в иксах, без иксов вообще), может быть не задана. Если не задана (ни иксов нет, ни юзер не задал), делается fallback на дефолтное значение — ~/.config. Что тут сложного или непонятного? Или чего ты пытаешься доказать? Или это просто отчёт о том, как ты познаёшь мир?

P.S. Кстати, тема, ИМХО, для толксов или Development.

Psych218 ★★★★★ ()
Последнее исправление: Psych218 (всего исправлений: 2)

Фу, быдлокодер...

PS: /*angry horse noises*/ ну нельзя так. Переместите что ли в /devel c заголовком «как могу, учусь писать на Си»

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 2)
Ответ на: комментарий от u0atgKIRznY5

Midnight Commander следует спецификации XDG, например. Как ты думаешь, этой программе нужны иксы, чтобы работать? :-)

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Нет не нужны. Наверное XDG начали делать когда появились иксы, видимо чтобы переопределять каталог с настройками, и из-за этого пришлось делать проверку на путь для обычных консольных приложений которые могли быть запущены в линукс где есть иксы. Так?

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

Логика в .config определенная есть для любых приложений. Исторически $HOME представлял собой данные пользователя + хренову кучу говна^W директорий с настройками ПО. Теперь эта хренова кучу худо бедно переезжает в .config. Меньше она от этого не становится, зато ls -la в домашней директории не будет по умолчанию вызывать кровотечение из глаз

Как ты понимаешь, чисто логически - это верно. Тот факт что это придумывалось под эгидой freedesktop, не значит что это принято для иксов и только для иксов. Здравый смысл еще никто не отменял вроде.

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)

Долго искал main.c между всеми этими реадми и лицензиями

SL_RU ★★ ()

Как он в сравнении с maggot-dict, который кроме dict умеет еще и Lingvo словари? Автор не хочет себе утянуть возможность чтения лингвовских словарей? Это сделает translate куда более юзабельным и востребованным.

slon ()

Ждем PKGBUILD'ов.

Чем оно лучше sdcv?

urxvt ★★★★★ ()

а зачем COPYING и LICENSE рядом?

arcanis ★★★ ()

первая версия проэкта
проэкта

А может рано было всё-таки за переводные словари браться?

LordTermor ()
Ответ на: комментарий от Pinkbyte

Теперь эта хренова кучу худо бедно переезжает в .config

Нифига, она теперь разьезажается из одной легкодоступной директории в кучу всяких .config, .cache и .local

Меньше она от этого не становится, зато ls -la в домашней директории не будет по умолчанию вызывать кровотечение из глаз

Любой юниксоид знает, что скрытые файлы в домашней директории - это конфиги приложений, неужели есть необходимость хранить в ней еще какие-то левые скрытые файлы?

annulen ★★★★★ ()

А чем это лучше dictd/dict?

annulen ★★★★★ ()
Ответ на: комментарий от theNamelessOne

Общепринятая практика в случае одного файла — хранить конфиг в ’$XDG_CONFIG_HOME/$PROGRAM_NAME.conf’ или в ’$XDG_CONFIG_HOME/$PROGRAM_NAME/config.conf’.

Это не общепринятая практика, это агрессивно навязываемое отдельной группой товарищей указание, идущее вразрез с многолетней общепринятой практикой.

Zmicier ★★★ ()
Ответ на: комментарий от slon

Как он в сравнении с maggot-dict, который кроме dict умеет еще и Lingvo словари?
maggot-dict

Благодарствую. Кажется, это именно то, что у меня никак рука не подымалась поискать.

Zmicier ★★★ ()
Ответ на: комментарий от slon

Ан, нет, прощу прощения. Вопреки заявленному, maggot-dict не умеет работать с dsl (текстовый формат «Лингвы»). Но может их предварительно сконвертировать в какой-то (?) двоичный формат.

С dict'ом же мне его вовсе подружить не удалось.

$ maggot-dict-cli -I /usr/share/dictd/mueller7.dict.dz
[fail][00:00:00.0] installing mueller7.dict.dz: DictionaryError: Unsupported dictionary format 'mueller7.dict.dz'
$ zcat /usr/share/dictd/mueller7.dict.dz > /tmp/mueller7.dict
$ cp /usr/share/dictd/mueller7.index /tmp/mueller7.index
$ maggot-dict-cli /tmp/mueller7.dict
[warn][00:00:00.0] Word was not found: /tmp/mueller7.dict

ЧЯДНТ?

Zmicier ★★★ ()
Последнее исправление: Zmicier (всего исправлений: 1)

Сервер ditcd + консольная dict. Ну разве «цветного» вывода не было.

h4tr3d ★★★★ ()

В АУР или репы арча будет собран? Хочется покрутить, но собирать не хочется.

PavelRyzhov ()
Ответ на: комментарий от SL_RU

Долго искал main.c между всеми этими реадми и лицензиями

А как нашёл, не обделался от такого кода?

anonymous ()
Ответ на: комментарий от Zmicier

ЧЯДНТ?

Я не в курсе, у меня раньше было 6 гигов словарей и они все работали, я уже год не пользуюсь магготом, но вот сейчас взял первую попавшеюся раздачу с Lingvo словарями, там внутри *.dsl.dz (dz — dictzipped, а maggot понимает только несжатые dsl), я переименовал их в dsl.dz.gz и распаковал, например:

gzip -d LingvoUniversalEnRu.dsl.dz.gz
получился на выходе LingvoUniversalEnRu.dsl.dz, опять переименовал его уже в просто *.dsl и установил его:
→ maggot-dict-cli -I LingvoUniversalEnRu.dsl

[done][00:01:20.5] installing LingvoUniversalEnRu.dsl       [##################] 100%
Проверил, автодополнение по Tab (должен быть уставлоен bash_completions для работы автокомплита маггота) и сам перевод работают отлично:
→ maggot-dict-cli magg

magged   maggot   maggoty
→ maggot-dict-cli maggot

 ['mægət] 
   сущ.
   1) зоол. личинка (особенно мясной или сырной мухи)
   2) блажь, причуда, прихоть, каприз
     to have a maggot in one's brain / head — иметь причуды
     Syn:
     caprice, whim, crotchet 2)
   3) капризный человек; человек с причудами
   ••
   - act the maggot

Но, как я говорил ранее, у меня было откуда-то (с трекеров скорее всего) 6 гигов словарей чисто в *.dsl с которыми никаких трахомудий при установке не требовалось, просто -I и всё.

slon ()
Ответ на: комментарий от theNamelessOne

Не надо, XDG мелкомягкая поттерингщина.

Lavos ★★★★★ ()
aidaho@vaio:~$ cat ~/.scripts/translate 
#!/usr/bin/env bash

sdcv -u "LingvoUniversal (En-Ru)" --non-interactive $* | tail -n +6 | head -n 25

aidaho@vaio:~$ translate bicycle
[ˈbaɪsɪkl] 
1. сущ.
 велосипед
  racing bicycle — гоночный велосипед
  mountain bicycle — горный велосипед
  exercise / stationary bicycle — велотренажёр
  to ride a bicycle — ездить на велосипеде
  to get on a bicycle / mount a bicycle — сесть на велосипед
  to go somewhere by bicycle — поехать куда-л. на велосипеде
 Syn:
 bike, cycle
2. гл.
 ездить на велосипеде

aidaho ★★★★★ ()

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

В программе всё должно быть прекрасно - и запятые, и табы, и фуражка.

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

queen3 ★★★★★ ()
Последнее исправление: queen3 (всего исправлений: 2)
Ответ на: комментарий от u0atgKIRznY5

house directory - это я через перевод текста с рус...

Домашний каталог 'по-аглицки будит', «home directory».

Тебе даю задание. Найми переводчика. Любой, кто хоть мало-мальски изучает иностранный язык, знает, что буквальным образом переводимых слов, из языка в язык, ровно половина. Другая половина, это то, что принято называть фразеологическими оборотами. Даже? если ты словарь делаешь, не затрагивая при этом синтаксис языка, у тебя будет проблема с двусмысленными словами. Pack — это глагол или существительное? К слову put добавишь какой-либо предлог, и на тебе, смысл предложения изметится.

Найди гуманитария-переводчика. Чем меньше этот переводчик будет знать компьютер, тем лучше. Ну, это прикол, из того разряда, типа, «если врач рецепт пишет красивым и понятным почерком, то это плохой врач».

anonymous ()
Ответ на: комментарий от u0atgKIRznY5

Скажем так... «house directory» уже вызывает сомнения в качестве переводчика. Я бы такой даже загружать не стал.

RiseOfDeath ★★★ ()
Последнее исправление: RiseOfDeath (всего исправлений: 1)
Ответ на: комментарий от queen3

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

Это сильнее всего тебя смутило в 💩коде?

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от annulen

Да, это удобно. Я в ~/.bin, например, левые бинарники храню. А в ~/.trash всякий хлам. И нафиг мне полсотни говноконфигов прямо в директории?

IPR ★★ ()
Ответ на: комментарий от u0atgKIRznY5

Прочитай уже что такое переменные окружения и не неси бред, очень прошу.

anonymous ()
Ответ на: комментарий от annulen

в кучу всяких .config, .cache и .local

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

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.