Update translations + fix empty type assumption

This commit is contained in:
Arne Keller 2021-02-17 15:43:28 +01:00
parent 49c767bd0f
commit 74cd76767a
4 changed files with 36 additions and 37 deletions

View File

@ -7,7 +7,6 @@ import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.orderedlayout.Scroller;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.PageTitle;
import edu.kit.typicalc.model.TypeInfererInterface;
import edu.kit.typicalc.view.content.ControlPanel;
import edu.kit.typicalc.view.content.ControlPanelView;
@ -16,7 +15,6 @@ import edu.kit.typicalc.view.content.typeinferencecontent.latexcreator.LatexCrea
import java.util.List;
import java.util.Locale;
@PageTitle("TypeInferenceView")
@CssImport("./styles/view/type-inference.css")
public class TypeInferenceView extends VerticalLayout
implements ControlPanelView, ComponentEventListener<AttachEvent> {

View File

@ -11,6 +11,7 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.i18n.LocaleChangeEvent;
import com.vaadin.flow.i18n.LocaleChangeObserver;
import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList;
import java.util.HashMap;
@ -81,7 +82,7 @@ public class TypeAssumptionsArea extends Dialog implements LocaleChangeObserver
}
/**
* Creates a new TypeAssumptionsArea.
* Creates a new empty TypeAssumptionsArea.
*/
protected TypeAssumptionsArea() {
this(new HashMap<>());
@ -111,7 +112,9 @@ public class TypeAssumptionsArea extends Dialog implements LocaleChangeObserver
*/
protected Map<String, String> getTypeAssumptions() {
return fields.stream()
.collect(Collectors.toMap(TypeAssumptionField::getVariable, TypeAssumptionField::getType,
.map(field -> Pair.of(field.getVariable(), field.getType()))
.filter(pair -> !pair.getLeft().isEmpty()) // ignore empty input fields
.collect(Collectors.toMap(Pair::getLeft, Pair::getRight,
(existing, replacement) -> existing, TreeMap::new));
}

View File

@ -5,7 +5,6 @@ root.typeInfer=Typisieren
root.operatingHelp=Bedienhilfen
root.inputSyntax=Eingabe-Syntax
root.inferenceRules=Ableitungsregeln
root.overlongInput=Die maximale Länge der Eingabe beträgt 1000 Zeichen!
root.absRule=Abs-Regel
root.appRule=App-Regel
root.varRule=Var-Regel
@ -32,39 +31,39 @@ root.previousStepButton=Vorheriger-Schritt Knopf
root.nextStepButton=Nächster-Schritt Knopf
root.lastStepButton=Letzter-Schritt Knopf
root.shareButton=Teilen Knopf
root.helpDrawer=Durch Klicken des Knopfs öffnet sich der Drawer. \
Im Drawer ist eine Auflistung aller Typregeln zu finden. \
Außerdem kann durch Klicken des Kopieren-Knopfs der Latex-Code der Regel in die Zwischenablage kopiert werden.
root.helpExample=Durch Klicken des Knopfs öffnet sich der Beispiel-Dialog. \
root.helpDrawer=Durch Benutzen des Knopfs öffnet sich der Drawer. \
Im Drawer ist eine Auflistung aller Typinferenzregeln zu finden. \
Außerdem kann mit dem Kopieren-Knopfs der Latex-Code der Regel in die Zwischenablage kopiert werden.
root.helpExample=Durch Benutzen des Knopfs öffnet sich der Beispiel-Dialog. \
Nach Anklicken wird der jeweilige Beispielterm in das Eingabefeld eingefügt. \
Der Term kann nun nach Belieben angepasst oder direkt typisiert werden.
root.helpInputField=In das Eingabefeld können Lambda-Terme mit einer Länge von bis zu 1000 Zeichen eingegeben werden. \
Das \u03BB-Zeichen kann dabei entweder durch Klicken des \u03BB-Knopfs oder durch Eingabe eines Backslashs an der \
aktuellen Cursorposition eingefügt werden. Durch Klicken des Info-Symbols wird die korrekte Syntax eines Terms \
Das λ-Zeichen kann dabei entweder durch Klicken des λ-Knopfs oder durch Eingabe eines umgekehrten Schrägstrichs an \
der aktuellen Cursorposition eingefügt werden. Durch Klicken des Info-Symbols wird die korrekte Syntax eines Terms \
angezeigt.
root.helpTypeAssumptions=Durch Klicken des Typannahmen-Knopfs öffnet sich ein Dialog zur Eingabe von Typannahmen. \
Durch Klicken des Info-Symbols wird die korrekte Syntax des Typs einer Typannahme angezeigt. Sofern eine Variable in \
mehreren Typannahmen vorkommt, wird ausschließlich die oberste Typannahme, die diese Variable enthält, \
berücksichtigt. Falls der Typ einer Typannahme mit einem 't' beginnt und anschließend nur Ziffern folgen, wird der Typ \
automatisch zu einer Typvariable.
root.helpTypeInferButton=Durch Klicken des Typisieren-Knopfs wird die Berechnung des Typinferenzalgorithmus mit \
root.helpTypeInferButton=Durch Benutzen des Typisieren-Knopfs wird die Berechnung des Typinferenzalgorithmus mit \
der aktuellen Eingabe gestartet. Je größer der Term desto länger dauert das Anzeigen des Typherleitungsbaums. Bei sehr \
großer Eingabe oder einem langsamen Rechner wird also etwas Geduld benötigt.
root.helpFirstStepButton=Je nach Stand der Algorithmusausführung ändert sich die FunKtion des Knopfs. \
Wenn aktuell der Baum aufgebaut wird, springt die Anzeige nach Klicken des Knopfs zurück zum ersten Schritt des \
Typherleitungsbaums. Wenn bereits die Unifikation druchgeführt wird, sprigt die Anzeige nach Klicken des Knopfs \
root.helpFirstStepButton=Je nach Stand der Algorithmusausführung ändert sich die Funktion des Knopfs. \
Wenn aktuell der Baum aufgebaut wird, springt die Anzeige nach Benutzen des Knopfs zurück zum ersten Schritt des \
Typherleitungsbaums. Wenn bereits die Unifikation druchgeführt wird, sprigt die Anzeige nach Benutzen des Knopfs \
in den letzten Schritt des Baums. Der Knopf lässt sich außerdem durch die Tastenkombination "STRG + Linke Pfeiltaste" \
ansprechen.
root.helpPreviousStepButton=Durch Klicken des Vorheriger-Schritt Knopfs wird der vorherige Schritt des Algorithmus \
root.helpPreviousStepButton=Durch Benutzen des Vorheriger-Schritt Knopfs wird der vorherige Schritt des Algorithmus \
angezeigt. Der Knopf lässt sich außerdem auf der Tastatur durch die Taste "Linke Pfeiltaste" ansprechen.
root.helpNextStepButton=Durch Klicken des Nächster-Schritt Knopfs wird der nächste Schritt des Algorithmus angezeigt. \
root.helpNextStepButton=Durch Benutzen des Nächster-Schritt Knopfs wird der nächste Schritt des Algorithmus angezeigt. \
Der Knopf lässt sich außerdem durch auf der Tastatur durch die Taste "Rechte Pfeiltaste" ansprechen.
root.helpLastStepButton=Je nach Stand der Algorithmusausführung ändert sich die FunKtion des Knopfs. \
root.helpLastStepButton=Je nach Stand der Algorithmusausführung ändert sich die Funktion des Knopfs. \
Wenn aktuell der Baum aufgebaut wird, springt die Anzeige nach Klicken des Knopfs vor zum letzten Schritt des \
Typherleitungsbaums. Wenn bereits die Unifikation druchgeführt wird, sprigt die Anzeige nach Klicken des Knopfs \
vor zur Anzeige des finalen Typs. Der Knopf lässt sich außerdem durch die Tastenkombination \
"STRG + Rechte Pfeiltaste" ansprechen.
root.helpShareButton=Durch Klicken des Teilen Knopfs öffnet sich ein Dialog, in dem der LaTeX-Code des finalen \
root.helpShareButton=Durch Benutzen des Teilen-Knopfs öffnet sich ein Dialog, in dem der LaTeX-Code des finalen \
Typherleitungsbaums des eingegebenen Terms und die benötigen Pakete zum Einbinden des LaTeX-Codes angezeigt werden. \
Zusätzlich dazu enthält der Dialog einen Permalink zur aktuellen Seite, der sowohl den Term als auch die Typannahmen \
kodiert.

View File

@ -5,7 +5,6 @@ root.typeInfer=Type
root.operatingHelp=Operating Help
root.inputSyntax=Input Syntax
root.inferenceRules=Inference Rules
root.overlongInput=The maximum input length is 1000 characters!
root.absRule=Abs rule
root.appRule=App rule
root.varRule=Var rule
@ -24,7 +23,7 @@ root.deleteAll=Delete All
root.variable=Variable
root.type=Type
root.title404=404 - Not Found
root.message404="Try /infer/<term> or type your favourite term into the input field
root.message404=Try /infer/<term> or type your favourite term into the input field
root.drawer=Drawer
root.example=Examples
root.inputField=Input Field
@ -35,40 +34,40 @@ root.nextStepButton=Next Step Button
root.lastStepButton=Last Step Button
root.shareButton=Share Button
root.helpDrawer=Clicking on the button opens up the drawer. The drawer contains a collection of all type inference \
rules. By clicking on the copy-button the LaTeX-code of the corresponding rule is copied to the clipboard.
rules. By clicking on the copy button the LaTeX code of the corresponding rule is copied to the clipboard.
root.helpExample=Clicking on the button opens up the example dialog. After clicking on an example the corresponding \
term is inserted into the input field. Now either the type inference algorithm can be started or the term can be \
modified.
root.helpInputField=The input field allows the user to enter lambda terms with a maximum length of 1000 characters. \
The \u03BB-sign can be inserted at the current cursor position by either clicking the \u03BB-button or entering a \
backslash. By clicking on the info-symbol the grammar defining the valid input syntax is shown.
root.helpTypeAssumptions=Clicking on the type-assumptions-button opens up a dialog to enter type assumptions. \
By clicking the info-symbol the grammar defining a valid type of a type assumption is shown. If the same variable \
The λ character can be inserted at the current cursor position by either clicking the λ button or entering a \
backslash. By clicking on the info icon the grammar defining the valid input syntax is shown.
root.helpTypeAssumptions=Clicking on the type assumptions button opens up a dialog to enter type assumptions. \
By clicking the icon symbol the grammar defining a valid type of a type assumption is shown. If the same variable \
is contained in multiple type assumptions, only the uppermost type assumption containing the variable is used for \
the algorithm. If the type of a type assumptions starts with a 't' followed by only digits, the type is automatically \
converted to a type variable.
root.helpTypeInferButton=Clicking on the type button starts the type inference algorithm for the current input. \
The longer the entered term the longer the time to display the type inference tree. With a slow computer or a \
very long term a lot of patience will be required.
root.helpFirstStepButton=The function of the button depends on the current state of the algorithm execution. \
root.helpFirstStepButton=The function of the button depends on the current state of the algorithm. \
If the tree is currently being built up, clicking on the button shows the first step of the inference tree. \
If the unification algorithm is already in progress, clicking on the button shows the last step of the inference \
tree. The key combination "CTRL + left arrow key" also executes a click on the button.
root.helpPreviousStepButton=By clicking the previous-step button the previous step of the algorithm is shown. \
The key combination "left arrow key" also executes a click on the button.
root.helpPreviousStepButton=By clicking the previous step button the previous step of the algorithm is shown. \
The key "left arrow key" also executes a click on the button.
root.helpNextStepButton=By clicking the next-step button the next step of the algorithm is shown. \
The key combination "right arrow key" also executes a click on the button.
root.helpLastStepButton=The function of the button depends on the current state of the algorithm execution. \
The key "right arrow key" also executes a click on the button.
root.helpLastStepButton=The function of the button depends on the current state of the algorithm. \
If the tree is currently being built up, clicking on the button shows the last step of the inference tree. \
If the unification algorithm is already in progress, clicking on the button shows the final type of the \
entered term. The key combination "CTRL + right arrow key" also executes a click on the button.
root.helpShareButton=Clicking the share button opens up a dialog containing the LaTeX-code of the final inference \
tree and the packages needed to execute the LaTeX-code. In addition a permalink to the current page is provided. \
root.helpShareButton=Clicking the share button opens up a dialog containing the LaTeX code of the final inference \
tree and the packages needed to compile the LaTeX code. In addition a permalink to the current page is provided. \
This link encodes the current term as well as the current type assumptions.
root.TOO_FEW_TOKENS=Wrong input! The term ends abruptly.
root.tooFewTokensHelp=Check if all Let-, Abs- and App-terms consist of the required arguments.
root.UNEXPECTED_TOKEN=The entered term does not match the syntax specified in the info dialog.
root.UNEXPECTED_CHARACTER=The contains a characters which is not allowed at this position.
root.tooFewTokensHelp=Check if all let, abstraction and application terms consist of the required arguments.
root.UNEXPECTED_TOKEN=The input does not match the syntax specified in the info dialog.
root.UNEXPECTED_CHARACTER=The input contains a characters which is not allowed at this position.
root.wrongCharacter=Wrong character: \u0020
root.position=At Position: \u0020
@ -84,4 +83,4 @@ root.absLetLatex=\
share.url.label=URL
share.packages.label=Packages
share.latex.label=LaTeX-code
share.latex.label=LaTeX code