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.
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