2023-07-19 Seemannssprache für Dict

Ich kann gerade nicht aufhören… Also ist das die Fortsetzung von 2023-07-19 OpenThesaurus für den Dict Server local einrichten.

2023-07-19 OpenThesaurus für den Dict Server local einrichten

@JonasJRichter hatte mich auf die Liste der Wörterbücher bei WikiSource hingewiesen: Wörterbücher Deutsch. Auf gut Glück habe ich eines herausgegriffen, das bei Gutenberg zu erhalten ist (statt bei Google): Das Etymologisches Wörterbuch der deutschen Seemannssprache von Gustav Goedel.

@JonasJRichter

Wörterbücher Deutsch

Gleiches System wie auf der anderen Seite. Zuerst das Makefile:

SHELL=/bin/bash

all: seemannssprache.dict.dz

help:
	@echo make
	@echo make install

install:
	@test -d /usr/share/dictd || echo "The directory /usr/share/dictd does not exist, where should the files go?" && exit
	sudo mv *.dict.dz *.index /usr/share/dictd/
	sudo dictdconfig --write
	sudo systemctl restart dictd

seemannssprache.dict.dz: seemannssprache.dict
	dictzip {body}lt;

seemannssprache.dict: pg39762.jargon
	dictfmt --utf8 --allchars -j $(basename $@ .dict) \
	-u https://www.gutenberg.org/ebooks/39762 \
	-s "Etymologisches Wörterbuch der deutschen Seemannssprache" \
	< {body}lt;

pg39762.jargon: pg39762.txt
	perl seemannssprache-to-jargon < {body}lt; > $@

pg39762.txt:
	wget https://www.gutenberg.org/cache/epub/39762/pg39762.txt

Und dann das Perl Programm, welches hier vor allem die Umbrüche macht.

#!/usr/bin/env perl
use Modern::Perl;
use utf8;

binmode(STDIN, ":crlf:encoding(UTF-8)");
binmode(STDOUT, ":encoding(UTF-8)");

my $max = 72;
my $buffer;
my $empty = 1;
while(<STDIN>) {
  chomp;
  # headword must always come after an empty line
  if ($empty) {
    # bold is an entry in the dictionary (turn into :headword:)
    s/^\*([^*]+?)\*(,$)?/:$1:/;
    # strip period at the end unless there are other periods in the headword (e.g., a. m.)
    s/^:([^.]+)\.:/:$1:/;
  }
  # strip trailing whitespace
  s/\s+$//;
  # empty lines don't get wrapped
  $empty = length() == 0;
  # end old paragraph with an empty line
  if ($buffer and $empty) {
    say $buffer;
    $buffer = '';
  }
  # print empty lines
  if ($empty) {
    say $_;
    next;
  }
  # continue old paragraph
  $buffer .= " " if $buffer;
  $buffer .= $_;
  # wrap what we have
  while (length($buffer) > $max) {
    # if there's a word that crosses the $max line size, break before
    my $i = rindex($buffer, " ", $max);
    $i = index($buffer, " ", $max) if $i < 0;
    if ($i > 0) {
      say substr($buffer, 0, $i);
      $buffer = substr($buffer, $i + 1);
    } else {
      say $buffer;
      $buffer = '';
    }
  }
}
say $buffer if $buffer;

Und die Anwendung dann:

make && make install

Beispiel:

$ dict --database seemannssprache abfallen
1 definition found

From Etymologisches Wörterbuch der deutschen Seemannssprache [seemannssprache]:

  abfallen
   s. abhalten.

Yay!

​#Deutsch ​#Dict