Habe das Script noch mal überarbeitet. Zum einen war mir aufgefallen das je nach Größe des zu übersetzenden Textes es auch mal bisschen dauern kann. Daher habe ich eine Fortschrittsanzeige hinzugefügt und beide Scripte zusammengelegt. Bedeutet wenn man eine Datei mit einen Text in einer beliebigen Sprache auswählt wird diese ins deutsche übersetzt. Wenn die Datei jedoch deutschen Text enthält wird sie in englisch übersetzt.
Python
#!/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" ]
}
# Funktion zum entfernen der ersten Zeile, wenn diese eine Leerzeile ist
remove_first_empty_line() {
awk 'NR==1 && NF==0 { next } NR>1 || NF'
}
# 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 -b -i "$selected_file" de | sed '1d' | remove_first_empty_line | tee "$output_file" | zenity --progress --title="Bitte warten..." --auto-close --no-cancel --pulsate --text="Übersetzung in Bearbeitung"
zenity --info --text="Übersetzung abgeschlossen. Ergebnis in '$output_file' gespeichert."
else
output_file="$(dirname "$selected_file")/en-$(basename "$selected_file")"
# Übersetze Text aus der Eingabedatei nach Englisch und bereinige die Ausgabe
trans -b -i "$selected_file" :en | remove_first_empty_line | tee "$output_file" | zenity --progress --title="Bitte warten..." --auto-close --no-cancel --pulsate --text="Übersetzung in Bearbeitung"
zenity --info --text="Übersetzung abgeschlossen. Ergebnis in '$output_file' gespeichert."
fi
Alles anzeigen