Quellcode-Übersetzung englisch zu deutsch

Codix

Bekanntes Mitglied
Hallo zusammen

ist es möglich diesen Code von englisch auf deutsch zu übersetzen, so dass der code eine deutsche Version darstellt?

Der grösste Teil davon ist schon in deutsch, der Rest müsste übersetzt werden.

So dass kein einziges englisches Wort vorkommt und der code trotzdem funktioniert?



Java:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

//die benötigen wir nicht wirklich (2 Importe hier)
import java.util.logging.Level;
import java.util.logging.Logger;

import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
//das gleiche: delete
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;

public class FXMLController {
    //das Kombinationsfeld
    @FXML private ComboBox<String> auswahl;
    //die Labels für die Ausgaben
    @FXML private Label ausgabeText;
    @FXML private Label anzVersuche; 
    //für die Zeichenfläche
    @FXML private Canvas zeichenflaeche; 
    @FXML private TextField name;
    // Create the ListView
    @FXML ListView<String> wordList = new ListView<>();
  
  
    //ein Array mit Zeichenketten(!) für die Buchstaben
      private String [] zeichen = new String[26];
      //ein StringBuilder für die Darstellung des Suchwortes
      private StringBuilder anzeige;
      //ein String für das gesuchte Wort im Klartext
      private String suchwort;
      //für die verbleibenden Durchläufe
      private int restDurchlauefe;
      //für die Anzahl der Fehler
      private int fehler;
      //für den Grafikkontext
      private GraphicsContext gc;

    //die Methode zur Auswahl aus dem Kombinationsfeld
    @FXML protected void auswahlNeu(ActionEvent event) {
        //der aktuell ausgewählte Eintrag wird übergeben und ausgewertet
        pruefen(auswahl.getSelectionModel().getSelectedItem());
        //ist das Spiel zu Ende oder nicht?
        gewinnerOderNicht();
    }

    //die Methode zum Beenden
    @FXML protected void beendenKlick(ActionEvent event) {
        Platform.exit();
    }
  
    //die Methode setzt die Initialwerte
    //sie wird automatisch ausgeführt
    @FXML void initialize() {
        int tempIndex = 0;
        //es geht los mit 9 verbleibenden Durchläufe
        restDurchlauefe = 9;
        //die restlichen Durchläufe anzeigen
        anzVersuche.setText(Integer.toString(restDurchlauefe));
      
        //die Liste für das Kombinationsfeld füllen
        for (char temp = 'a'; temp <= 'z'; temp++) {
            zeichen[tempIndex] = Character.toString(temp);
            tempIndex++;
        }
      
        auswahl.getItems().addAll(zeichen);
        //ein Wort ermitteln
        neuesWort();     
      
        //den Grafikkontext beschaffen
        gc = zeichenflaeche.getGraphicsContext2D();
    } 
  
    //die Methode ermittelt zufällig ein Wort
    private void neuesWort() {
        int zufall = 0;
        //die Wortliste
        String[] woerter = readword();
        //ein zufälliges Wort ermitteln
        //dazu wird eine zufällige Zahl zwischen 0 und 1 ermitteln und mit der Länge von woerter multipliziert
        zufall = (int)(Math.random() * woerter.length);
      
        //das Suchwort und die Zeichen für die Anzeige setzen
        suchwort = new String(woerter[zufall]);
        anzeige = new StringBuilder(suchwort);
      
        //alle Zeichen in der Anzeige ersetzen durch *
        for (int zeichen = 0; zeichen < suchwort.length(); zeichen++)
            anzeige.setCharAt(zeichen, '*');

        //die Sternchen anzeigen
        ausgabeText.setText(anzeige.toString());
    }
  
    private String[] readword() {
        // Add the items to the List
        // Set the size of the ListView
        wordList.setPrefSize(120, 120);
        // Enable multiple selection
        wordList.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        String infileword = "", num = "";
        List<String> arr = new ArrayList<>();
        try {
        File wordFile = new File("words.dat");
        wordFile.createNewFile();
        FileInputStream read = new FileInputStream(wordFile);
        Scanner scan = new Scanner(read);
        while(scan.hasNextLine())
        {
            String[] line = (scan.nextLine()).split(",");
            infileword = line[0].trim();
            num = line[1].trim();
            arr.add(infileword);
        }
        scan.close();
        read.close();
        }
        catch (Exception e) {
            System.err.println(e);
        }
        if(arr.isEmpty())
        {
            return new String[]{"none"};
        }
        String array[] = new String[arr.size()];
        for (int i = 0; i < array.length; i++) {
            array[i] = arr.get(i); 
            wordList.getItems().add(array[i]);
        }
        return array;

    }
    //die Methode zum Prüfen
    private void pruefen(String auswahlZeichen) {
        char zeichen;
        int treffer = 0;
        //das ausgewählte Zeichen aus dem Kombinationsfeld umbauen
        zeichen = auswahlZeichen.charAt(0);
        //gibt es das Zeichen auch im Suchwort?
        //dabei vergleichen wir nur die Kleinbuchstaben
        treffer = suchwort.toLowerCase().indexOf(zeichen);
        //wenn wir nichts gefunden haben
        if (treffer < 0) {
            //1 von den verbleibenden Durchläufen abziehen
            restDurchlauefe--;
            //die restlichen Durchläufe anzeigen
            anzVersuche.setText(Integer.toString(restDurchlauefe));
            //die Fehler für die Anzeige erhöhen und den Galgen zeichnen
            erhoeheFehler();
        }
        else {
            //nach weiteren Vorkommen suchen
            while (treffer >= 0) {
                //das Zeichen aus der entsprechenden Position im Suchwort anzeigen
                anzeige.setCharAt(treffer, suchwort.charAt(treffer));
                //treffer erhöhen und dann weitersuchen
                treffer++;
                treffer = suchwort.toLowerCase().indexOf(zeichen,treffer);
            }
            //das geänderte Wort anzeigen
            ausgabeText.setText(anzeige.toString());
        }
    }
  
    private void gewinnerOderNicht() {
        //die Linienbreite auf 1 setzen
        gc.setLineWidth(1);
        //ist das Spiel zu Ende?
        if (restDurchlauefe == 0) {
            gc.strokeText("Das gesuchte Wort war: " + suchwort, 20, 100);
            Platform.exit();
        }
        //ist das Wort erraten worden?
        if (anzeige.toString().equals(suchwort)) {
            gc.strokeText("Hurra! Sie haben gewonnen!", 20, 100);
            Platform.exit();
        }
    }
  

    //Fehler hochzählen und den Galgen zeichnen
    private void erhoeheFehler() {
        fehler = fehler + 1;
        gc.setLineWidth(4);
      
        //je nach Wert von fehler zeichnen
        switch (fehler) {
        case 1:
            gc.strokeLine(10, 10, 10, 200);
            break;
        case 2:
            gc.strokeLine(10, 10, 100, 10);
            break;
        case 3:
            gc.strokeLine(40, 10, 10, 40);
            break;
        case 4:
            gc.strokeLine(100, 10, 100, 50);
            break;
        case 5:
            gc.strokeLine(70, 50, 130, 50);
            break;
        case 6:
            gc.strokeLine(130, 50, 130, 110);
            break;
        case 7:
            gc.strokeLine(130, 110, 70, 110);
            break;
        case 8:
            gc.strokeLine(70, 110, 70, 50);
            break;
        case 9:
            gc.strokeLine(0, 200, 20, 200);
            break;
        }
    }

    //zugehörige leere Methode add, wenn das Wort hinzugefügt wird
    @FXML public void add() {
        String wort = name.getText();
        if(addword(wort))
            {System.out.println("hinzugefügt");
            name.setText("");}
        else
            System.out.println("nicht hinzugefügt");
              
    }

    private boolean addword(String wort)
    {
        String infileword = "", num = "";
        try {
            File wordFile = new File("words.dat");
            wordFile.createNewFile();
            FileInputStream read = new FileInputStream(wordFile);
            Scanner scan = new Scanner(read);
            while(scan.hasNextLine())
            {
                String[] line = (scan.nextLine()).split(",");
                infileword = line[0].trim();
                num = line[1].trim();
                if(infileword.equalsIgnoreCase(wort))
                {
                     return false;
                }
            }
            scan.close();
            read.close();
            if (num == null || num == "")
                num = "0";
            String text = wort + ", " + (Integer.valueOf(num)+1) ;
            System.out.println(text);
            FileWriter fr = new FileWriter(wordFile, true);
            BufferedWriter br = new BufferedWriter(fr);
            PrintWriter pr = new PrintWriter(br);
            pr.println(text);
            pr.close();
            br.close();
            fr.close();
            return true;
        } catch (IOException ex) {
            System.err.println(ex);
        }
        return false;
    } 
}
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
Naja, Schlüsselwörter wie "import", "public" oder "class" kannst du offensichtlich nicht einfach übersetzen/ändern.
Genausowenig wie API Methoden der Java Runtime Library.
Also -> nein.
 

httpdigest

Top Contributor
woran sehe ich, was eine Methode ist und was nicht?
Naja... wann immer du Methoden auf Typen aufrufst, die du nicht selbst definiert hast.
Beispiel: `Character.toString(temp);`
Character ist java.lang.Character und offensichtlich kannst du dessen `toString()` Methode nicht umbenennen.

Anderes Beispiel `pruefen(auswahl.getSelectionModel().getSelectedItem());`
`auswahl` ist hier vom Typ javafx.scene.control.ComboBox, also kannst du dessen getSelectionModel() Methode dann auch nicht umbenennen.
 
K

kneitzel

Gast
Also das wird generell sehr aufwendig. Wie groß ist das Projekt denn? Vermutlich wird es manuell in einer IDE sehr schnell gehen. Die Refactoring Unterstützung in einer IDE ist ja in der Regel sehr gut.

Aber da ein Tool zu schreiben ... Lexical parser für Java wird es geben, aber da dann gezielt die Umbenennung machen? Vor allem willst Du ja gewisse Dinge nicht überschreiben. Wenn Deine Klasse toString überschrieben hat, dann möchtest Du doch bestimmt nicht daraus ein zuZeichenkette machen oder so. Wenn konsequent @Overrides gesetzt ist, dann wäre es ggf. einfach heraus zu filtern, aber sonst? Zumal es zu massiven Problemen kommen kann, in Fällen wo so Aufrufe nicht explizit geschrieben wurden, wie z.B. bei "" + myInstance. Wenn nun das toString von myInstance zu "zuZeichenkette" wird, dann ist das Verhalten schon verändert ...

Und dann auch so typische Probleme a.la. zwei Methoden werden vom Übersetzer zur gleichen Methode übersetzt. Das kann ja prinzipiell auch vorkommen....

Daher sehe ich das Unterfangen sehr kritisch. Was soll mit dem Tool, das entwickelt werden soll, gemacht werden, so dass sich der Aufwand lohnt? Du entwickelst über Tage eine Lösung für etwas, das Du manuell in wenigen Stunden erledigt bekommst? (Sowas fürchte ich ...)
 

White_Fox

Top Contributor
Und dann wäre noch die Frage, was du mit externen Bibliotheken machst? Vielleicht ist sie ja frei und du kannst den Quellcode übersetzen. Die Pflege, wenn es eine neue Version der Bibliothek gibt, wird dann aber bestimmt schauerlich.

Du solltest vielleicht besser auf C umsteigen, da geht so etwas dank Präprozessor relativ einfach. Vielleicht gibt es den Präprozessor auch bei C++ noch, dann hast du sogar wieder Objektorientierung. Der Präprozessor ist ein "strunzdummes Stück Software" (Zitat meines Profs), daß dir solchen Kram wie "wenn(" in "if(" übersetzt bevor der Quellcode dem Compiler zum Fraß vorgeworfen wird.
Besagter Prof erzählte mal, daß er sogar mal in einer Firma gearbeitet hat die so etwas gemacht hat.

Ich kann den Wunsch, Java ein anständiges Deutsch beizubringen, durchaus nachvollziehen. Allerdings: die allermeisten Übersetzungen von Englisch nach Deutsch, die nicht normale Literatur sind, sind eine fürchterliche Vergewaltigung unserer schönen Sprache. Z.B. bei Liedtexten. Gelungene Übersetzungen gibt es nur sehr wenige. Programmiersprachen unterliegen zwar nicht dem Zwang zum Einhalten bestimmter Versmaße, sind dafür aber auf Kompression und Präzision optimiert.
Noch dazu sind, wenn man mal darüber nachdenkt, erstaunlich viele Dinge gar nicht so ohne Weiteres zu übersetzen ohne die Zielsprache aus ihren Angeln zu heben. Überlege dir mal eine passende Übersetzung für 'switch'. In vielen Fällen kann man das z.B. mit 'Umschalten' übersetzen, aber für die switch-Deklaration finde ich das ziemlich unpassend - auch wenn die Handlung damit irgendwie verwandt ist.

Oder sieh dir diesen unsäglichen Bockmist an, der durch Filmübersetzungen in unsere schöne, eigentlich sehr präzise und klare Sprache, bereits eingesickert ist. Dieses unsägliche "Sinn machen" (aus engl. "make sense")...und selbst Journalisten entblöden sich mittlerweile, diese Phrase zu benutzen. Das Wort "machen" drückt(e eigentlich mal) eine Handlung aus, die ein Ergebnis hinterläßt. Du kannst Hackfleisch machen. Aber Sinn ergibt sich gefälligst, genauso wie z.B. das Ergebnis einer mathematischen Rechnung.
Noch viel schlimmer: "Das macht nicht wirklich (not really) Sinn. Diese Sprachschändung ist nicht nur eigentlich eine Katastrophe.

Ich persönlich halte sowas für recht gefährlich. Wenn dann z.B. in politischen Diskussionen der Anwurf kommt daß du doch nicht alle über einen Kamm scheren kannst - doch, das kannst du sehr wohl. Es ist allenfalls nur nicht jeder so. Mach dir mal den Spaß und frag in deinem Bekanntenkreis oder sonstwo herum, was der Unterschied zwischen "alle" und "jeder" ist. Eines von beiden wird nicht umsonst dem Genus angepaßt und das andere nicht.

Und wenn du dich mal ein bisschen mit den Feinheiten der deutschen Sprache beschäftigst wirst du sehen, daß die Ausdrucksweise nur das Erste ist, das nach und nach eingeschränkt wird und verkümmert. Das nächste, was von diesem Prozeß erfasst wird, ist das Denken, da Denken und Sprechen sehr dicht beieinander liegen. Das ist übrigens der Hauptgrund, weshalb ich politisch abgerichtete Sprache grundsätzlich ablehne.
Wie willst du über Dinge nachdenken, die du nicht ausdrücken kannst?


Ich persönlich habe das für mich aber gelöst: Ich bin irgendwann (wenn ich mich recht erinnere als ich mein jCLS-Projekt begonnen habe) dazu übergegangen, rein auf Englisch zu programmieren, vorher hab ich auch deutsche Methoden- und Variablennamen genutzt. Seitdem fahre ich den Grundsatz: Entweder richtig, oder gar nicht. Wenn Englisch, dann richtig, sauber und klar. Zumindest soweit es meine Sprachfähigkeiten zulassen, Sprachen waren noch nie mein Ding.
Und umso mehr pflege ich den Gebrauch eines möglichst reinen Deutschs: Ich verzichte nahezu vollständig auf den Gebrauch von Anglizismen (ja, den Ausdruck "Handy" gibt es bei mir tatsächlich nicht) und aus Verachtung gegenüber neuerer Sprachpanscherei ignoriere ich auch die letzte Rechtschreibreform sowie deren Reform. Wenn es sich ergibt, leiste ich mir auch mal die Beachtung solcher Feinheiten wie die mit "Alle" und "Jeder". Das hat manchmal den Nachteil daß einige Sprachkrüppel dich nicht mehr verstehen...aber was solls.
Versuche mal, wirklich komplett ohne Anglizismen auszukommen. Anfänglich ist das richtig schwer, dann geht dir nach und nach auf was du für einen verkrüppelten Wortschatz hast, aber bald danach macht das Freude.

Außerdem trenne ich scharf zwischen Projekt- und Programmiersprache. Auch wenn ich jCLS auf Englisch programmiere - die Projektsprache ist trotzdem Deutsch, es wird in der deutschen Sprachversion entwickelt (eine englische Version wird es natürlich trotzdem geben und vielleicht auch eine russische, aber die werden trotdem von Deutsch nach Zielsprache übersetzt), und evt. Doku wird es auch zuerst stets auf Deutsch geben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
D Suche Quellcode! Allgemeine Java-Themen 8
B Quellcode einer Java libary finden um zu copy & paste'n Allgemeine Java-Themen 5
G Quellcode wiederherstellen Allgemeine Java-Themen 28
B Quellcode lesen - Aussortieren Allgemeine Java-Themen 3
M Quellcode von Java-Methoden Allgemeine Java-Themen 9
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
G Externer Quellcode Allgemeine Java-Themen 3
L Methoden "Schiffe versenken" Quellcode in Methoden umwandeln Allgemeine Java-Themen 6
T Android Webview Webpage Quellcode to string Allgemeine Java-Themen 0
B Quellcode für Zwischenprüfung Allgemeine Java-Themen 4
M Aus Javaprogramm .NET Quellcode kompileren Allgemeine Java-Themen 2
J XML Dokument Zeilenumbruch in den Quellcode einfügen Allgemeine Java-Themen 5
T ExceptionHandling mit bescheidenem Quellcode Allgemeine Java-Themen 14
I Methoden Quellcode auslesen (Refelction o.ä.) Allgemeine Java-Themen 5
H Zeilenumbruch in Quellcode Allgemeine Java-Themen 4
G Eingegeben Formeln in Quellcode einbetten?! Allgemeine Java-Themen 4
E Compiler-Fehler wie muss ich die entstandene Quellcode kompilieren?? Allgemeine Java-Themen 2
T Api in Quellcode laden Allgemeine Java-Themen 8
L Java Quellcode auf Windows 7 ausführen? Allgemeine Java-Themen 3
S jsr in Quellcode Allgemeine Java-Themen 4
M R250 Quellcode Allgemeine Java-Themen 2
J Quellcode aus .jar auslesen? Allgemeine Java-Themen 3
M JLapack Quellcode beifügen? Allgemeine Java-Themen 4
P Probleme mit wikipedia quellcode zur binären Suche Allgemeine Java-Themen 6
X Quellcode von nativen Funktionen Allgemeine Java-Themen 2
D Übersetzen von Quellcode Allgemeine Java-Themen 11
N Java Quellcode zu Syntaxbaum Allgemeine Java-Themen 3
M Wie in Eclipse Quellcode incl. Zeilennummern kopieren? Allgemeine Java-Themen 6
G SourceForge - Quellcode Allgemeine Java-Themen 15
V Quellcode auf "Güte" testen? Allgemeine Java-Themen 5
C Java Quellcode parsen Allgemeine Java-Themen 8
M Quellcode DriverManager Allgemeine Java-Themen 2
C Fehler im Quellcode. Suche in einem Baum Allgemeine Java-Themen 3
G Problem mit Quellcode, Eingabe wird nicht angezeigt --HELP-- Allgemeine Java-Themen 2
T Problem mit Quellcode Allgemeine Java-Themen 2
D Was haltet ihr von meinem Quellcode - JConsole? Allgemeine Java-Themen 2
Lazybone Java Quellcode sichern Allgemeine Java-Themen 9
P Fehler im Quellcode Allgemeine Java-Themen 8
J Viel Text mit " im Quellcode abspeichern Allgemeine Java-Themen 7
R Copyright-Notiz am Anfang jeder Quellcode-Datei? Allgemeine Java-Themen 5
R Problem mit Quellcode Allgemeine Java-Themen 2
M Events im Quellcode auslösen Allgemeine Java-Themen 4
J Java Quellcode Aufbereitung für Dokumentation Allgemeine Java-Themen 11
padde479 Organisation von Quellcode Allgemeine Java-Themen 6
F Quellcode von Java ansehen Allgemeine Java-Themen 4
S In einem HTML Quellcode gewünschten Abschnitt in Datei Save Allgemeine Java-Themen 9
R Java Quellcode zu exe Datei unsw. Allgemeine Java-Themen 5
G Quellcode inkludieren Allgemeine Java-Themen 3
J Quellcode aus JAVA Programmen Allgemeine Java-Themen 4
OnDemand Übersetzung Spring mit Iln8 Allgemeine Java-Themen 0
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3
B suche Deutsche Übersetzung für neuste Eclipse Version Allgemeine Java-Themen 6
S Input/Output Jave.utill.logging ohne Default-Locale also in Englisch Allgemeine Java-Themen 3
H tastatur von englisch auf deutsch stellen Allgemeine Java-Themen 3
E Klassennamen in Deutsch oder Englisch? Allgemeine Java-Themen 5
K FileChooser und Co auf Englisch Allgemeine Java-Themen 2
F Linguistische Fragen zu Javadoc bzw. Englisch Allgemeine Java-Themen 4
D gesucht Wörterbuch deutsch / englisch Allgemeine Java-Themen 4
M Datumsausgabe deutsch / englisch Allgemeine Java-Themen 2
G Datenablage bei einem Englisch-Lernprogramm Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben