Ich hatte vor paar Tagen ein Thema zu TTS / STT whisper erstellt wo man Audiodateien in Textdateien ausgibt bzw. eine Transkription durchführt. Um diese oder auch andere Text Dateien schnell und komfortabel zu übersetzen habe ich ein Script geschrieben welches über ein Nemo Action Menü aufgerufen wird. Also Rechtsklick auf Textdatei -> Datei übersetzen fertig. Momentan ist es noch so egal von welcher Sprache in die deutsche Sprache übersetzen. Das selbe ist nochmal für englisch geplant.
#!/bin/bash
selected_file="$1"
# Prüfe, ob translate-shell installiert ist
if ! command -v trans &> /dev/null; then
zenity --error --text="translate-shell ist nicht installiert. Bitte installiere es vor der Verwendung dieses Menüs.\n\n sudo apt-get install translate-shell"
exit 1
fi
# Prüfe, ob langdetect installiert ist
if ! python3 -c "import langdetect" &> /dev/null; then
zenity --error --text="langdetect ist nicht installiert. Bitte installiere es vor der Verwendung dieses Menüs.\n\n sudo apt-get install python3-langdetect"
exit 1
fi
# Funktion zur Überprüfung, ob die Datei Deutsch ist
is_german() {
lang=$(python3 -c "from langdetect import detect; print(detect(open('$1', 'r').read()))")
[ "$lang" == "de" ]
}
# Prüfe, ob Eingabedatei bereitgestellt wurde
if [ -z "$selected_file" ]; then
zenity --error --text="Keine Datei ausgewählt. Bitte wähle eine Datei zum Übersetzen aus."
exit 1
fi
# Prüfe, ob die Datei nicht bereits in Deutsch ist
if ! is_german "$selected_file"; then
output_file="$(dirname "$selected_file")/de-$(basename "$selected_file")"
# Übersetze Text aus der Eingabedatei nach Deutsch und bereinige die Ausgabe
trans_result=$(trans -b -i "$selected_file" de | sed '1d')
# Schreibe bereinigtes Ergebnis in die Ausgabedatei
echo "$trans_result" > "$output_file"
zenity --info --text="Übersetzung abgeschlossen. Ergebnis in '$output_file' gespeichert."
else
zenity --info --text="Die ausgewählte Datei ist bereits in Deutsch."
fi
Alles anzeigen
[Nemo Action]
Active=true
Name=Translate to German
Name[de]=Dokument übersetzen
Comment=Translate selected text to German
Comment[de]=Ausgewählten Text ins Deutsche übersetzen
Exec=<trans %F>
Icon-Name=dictionary
Selection=S
Extensions=txt;md # oder die Dateierweiterungen, die du unterstützen möchtest
EscapeSpaces=true
Extensions=txt;
MimeType=text/plain;
Alles anzeigen
Einfach das "trans" Script und die "translate.nemo_action" unter ~/.local/share/nemo/actions abspeichern und ausfürbar machen.
Hier noch die versprochene "entrans" und "en-translate.nemo_action" zum übersetzen aus beliebiger Sprche in englisch.
#!/bin/bash
selected_file="$1"
# Prüfe, ob translate-shell installiert ist
if ! command -v trans &> /dev/null; then
zenity --error --text="translate-shell ist nicht installiert. Bitte installiere es vor der Verwendung dieses Menüs.\n\n sudo apt-get install translate-shell"
exit 1
fi
# Prüfe, ob langdetect installiert ist
if ! python3 -c "import langdetect" &> /dev/null; then
zenity --error --text="langdetect ist nicht installiert. Bitte installiere es vor der Verwendung dieses Menüs.\n\n sudo apt-get install python3-langdetect"
exit 1
fi
# Funktion zur Überprüfung, ob die Datei Deutsch ist
is_english() {
lang=$(python3 -c "from langdetect import detect; print(detect(open('$1', 'r').read()))")
[ "$lang" == "en" ]
}
# Prüfe, ob Eingabedatei bereitgestellt wurde
if [ -z "$selected_file" ]; then
zenity --error --text="Keine Datei ausgewählt. Bitte wähle eine Datei zum Übersetzen aus."
exit 1
fi
# Prüfe, ob die Datei nicht bereits in Englisch ist
if ! is_english "$selected_file"; then
output_file="$(dirname "$selected_file")/en-$(basename "$selected_file")"
# Übersetze Text aus der Eingabedatei nach Englisch und bereinige die Ausgabe
trans_result=$(trans -b -i "$selected_file" :en )
# Schreibe bereinigtes Ergebnis in die Ausgabedatei
echo "$trans_result" > "$output_file"
zenity --info --text="Übersetzung abgeschlossen. Ergebnis in '$output_file' gespeichert."
else
zenity --info --text="Die ausgewählte Datei ist bereits in Englisch."
fi
Alles anzeigen
[Nemo Action]
Active=true
Name=Translate to English
Comment=Translate selected text to English
Exec=<entrans %F>
Icon-Name=dictionary
Selection=S
Extensions=txt;md # oder die Dateierweiterungen, die du unterstützen möchtest
EscapeSpaces=true
Extensions=txt;
MimeType=text/plain;
Alles anzeigen
Ich habe versucht beide nemo_action Dateien zu einer mit Submenü zu machen aber das geht wohl nicht, zumindest habe ich nichts gefunden.