Adding language switching and minimize button (#25)

* Initial Push

Inititial project state

* Static demo version

* static demo site - added variables

a

* first_implementation

* Updated UI, Improved Style to be more "Reactly", added Functionality

* add parsing functions

* change folder

* Import/Export Prototype

* Adding "reactjs-popup" to package,json

* Adding GLPK source

* Rough implementation of solver + example

* Show solution in output

* example 2 + popup lib

* removing import button

This feature won't be needed in this state of the project and might come back later. Right now it serves no functional purpose.

* Removing "Popout" button

This feature won't be needed in this state of the project and might come back later. Right now it serves no functional purpose.

* Updating Logs

Now the site displays all logs created with customLog(STRING). Logs can be cleared with customLogClear();

* Adding walltime

Can be called using:

Start:
function walltimeStart() {
returns Date.now();

Stop:
function walltimeStopAndPrint(startpoint: number) {
Add startpoint as argument.
It prints the elapsed time using customLog()

* Adding duals ouput

* Adding glpk.js package

required dependency

* adding LP format export and fixing a few errors

* fixing further errors

* adding automatic build

* Moving files to correct folders

* Update nextjs.yml

* Updating README and .gitignore

README:
- added installation instructions
- added troubleshooting

gitignore:
- skipping Writerside and .idea folders

* Update LICENCE.txt

We are required to use the same license. See https://github.com/hgourvest/node-glpk/blob/master/LICENSE

* Updating icon

* Adding RegEx input checks and updating text box explanations

* Update README.md

Updating license info

Signed-off-by: SinusFox <61253950+SinusFox@users.noreply.github.com>

* Deleting license to recreate proper license

* Update layout.tsx

fixing typo

Signed-off-by: SinusFox <61253950+SinusFox@users.noreply.github.com>

* Fixing word issue

English has some false friends... like the German "Enter" is actually return in English.

* Updatint License

* Fixing design issue and updating license link

* Fixing typo in log

* Fixing white mode

* adding translations 1/2

UI Translations

Coming in 2/2: Output translations

* adding output translations

* adding minimize button

---------

Signed-off-by: SinusFox <61253950+SinusFox@users.noreply.github.com>
Co-authored-by: moebiusl <lucas.moebius@icloud.com>
Co-authored-by: Marcel Pöppe <marcel.poeppe@gmail.com>
This commit is contained in:
SinusFox
2024-10-11 09:30:11 +02:00
committed by GitHub
parent b4d9c797d1
commit cc0715b6ad
7 changed files with 656 additions and 94 deletions
+204
View File
@@ -0,0 +1,204 @@
export default function text(lang: string, input: string): string {
// German translation
if (lang === "ger") {
switch (input) {
case "header_title":
return "OR-Tool";
case "header_subtitle":
return "von Spaceholder Programming";
case "boxObjTitle":
return "Ziel";
case "boxObjDesc":
return "Geben Sie Ihr Ziel hier ein. Es ist nur ein Ziel erlaubt. Verwenden Sie eine Zeile dafür (kein 'Enter'!). Erlaubte Symbole sind 0-9, a-z, A-Z und <>=.\nBeispiel:\nx + y\n-786433 x1 + 655361 x2";
case "boxSubjTitle":
return "Nebenbedingungen";
case "boxSubjDesc":
return "Geben Sie Ihre Nebenbedingungen hier ein. Eine pro Zeile (mit der 'Enter'-Taste trennen). Erlaubte Symbole sind 0-9, a-z, A-Z und <>=.\nBeispiel:\n+1 x + 2 y <= 15\n524321 x14 + 524305 x15 <= 4194303.5";
case "boxBoundsTitle":
return "Grenzen";
case "boxBoundsDesc":
return "Geben Sie Ihre Grenzen hier ein. Eine pro Zeile (mit der 'Enter'-Taste trennen). Erlaubte Symbole sind 0-9, a-z, A-Z und <>=.\nBeispiel:\nx >= 0\nx > 0\n0 <= x1 <= 1";
case "boxVarsTitle":
return "Variablen";
case "boxVarsDesc":
return "Listen Sie alle Ihre Variablen auf. Eine pro Zeile (mit der 'Enter'-Taste trennen). Erlaubte Symbole sind a-z, A-Z.\nBeispiel:\nx\ny";
case "boxExportLP":
return "Als LP exportieren";
case "boxOut":
return "Geben Sie ein Problem ein und drücken Sie eine Aktionstaste, um die Ausgabe anzuzeigen...";
case "buttonCalc":
return "Berechnen";
case "etime":
return "Berechnungsdauer";
case "seconds":
return "Sekunden";
case "err_invalidInput":
return "Fehler: Ungültige Eingabe in";
case "err_nullInput":
return "Fehler: NULL- oder undefinierte Eingabe in";
case "err_invalidInput":
return "Fehler: Ungültige Eingabe oder fehlendes Zeichen in";
case "input_checks_successful":
return "Alle Eingabeprüfungen erfolgreich.";
case "input_checks_start":
return "Starte Eingabeprüfungen...";
case "obj_box":
return "Zielfeld";
case "subj_box":
return "Bedingungsfeld";
case "bounds_box":
return "Grenzenfeld";
case "vars_box":
return "Variablenfeld";
case "err_emptyBox":
return "Fehler: Leeres Textfeld.";
case "calculating":
return "Berechne...";
case "maximize":
return "Maximieren";
case "minimize":
return "Minimieren";
case "run_optimization":
return "Optimierung mit Eingaben wird ausgeführt";
case "startProblemSetup":
return "Starte Problemerstellung...";
case "succProblemSetup":
return "Problem erstellt.";
case "startScaling":
return "Skalieren des Problems...";
case "succScaling":
return "Skalierung erfolgreich.";
case "startOptimizationSimplex":
return "Starte Simplex-Optimierung...";
case "succOptimizationSimplex":
return "Simplex-Optimierung abgeschlossen.";
case "startOptimizationInteger":
return "Starte Ganzzahloptimierung...";
case "succOptimizationInteger":
return "Ganzzahloptimierung abgeschlossen.";
case "finalObjValue":
return "Endgültiger Zielfunktionswert";
case "varsValues":
return "Wert jeder Variable";
case "dualValues":
return "Dualwerte der Einschränkungen";
case "downloadPrepFileString":
return "Dateiinhalt wird vorbereitet...";
case "downloadPrepFile":
return "Datei wird vorbereitet...";
case "downloadStart":
return "Download wird gestartet.";
case "downloadPrep":
return "Download wird vorbereitet...";
case "downloadFetchInput":
return "Eingaben werden geladen...";
case "importing":
return "Importiere...";
default:
return input;
}
}
// English translation
if (lang === "eng") {
switch (input) {
case "header_title":
return "OR-Tool";
case "header_subtitle":
return "by Spaceholder Programming";
case "boxObjTitle":
return "Objective";
case "boxObjDesc":
return "Insert your objective here. One objective is allowed. Use one line for it (no \"return\"!) Allowed symbols are 0-9, a-z, A-Z and <>=.\nExample:\nx + y\n-786433 x1 + 655361 x2";
case "boxSubjTitle":
return "Subject";
case "boxSubjDesc":
return "Insert your subject here. One per line (divide by 'return' button). Allowed symbols are 0-9, a-z, A-Z and <>=.\nExample:\n+1 x + 2 y <= 15\n524321 x14 + 524305 x15 <= 4194303.5";
case "boxBoundsTitle":
return "Bounds";
case "boxBoundsDesc":
return "Insert your bounds here. One per line (divide by 'return' button). Allowed symbols are 0-9, a-z, A-Z and <>=.\nExample:\nx >= 0\nx > 0\n0 <= x1 <= 1";
case "boxVarsTitle":
return "Variables";
case "boxVarsDesc":
return "List all your variables. One per line (divide by 'return' button). Allowed symbols are a-z, A-Z.\nExample:\nx\ny";
case "boxExportLP":
return "Export as LP";
case "boxOut":
return "Input a problem and an action button to display output...";
case "buttonCalc":
return "Calculate";
case "etime":
return "Elapsed time";
case "seconds":
return "seconds";
case "err_invalidInput":
return "Error: Invalid input in";
case "err_nullInput":
return "Error: NULL or undefined input in";
case "err_invalidInput":
return "Error: Invalid input or missing character in";
case "input_checks_successful":
return "All input checks successful."
case "input_checks_start":
return "Starting input checks...";
case "obj_box":
return "object box";
case "subj_box":
return "subject box";
case "bounds_box":
return "bounds box";
case "vars_box":
return "variables box";
case "err_emptyBox":
return "Error: Empty text box.";
case "calculating":
return "Calculating...";
case "maximize":
return "Maximize";
case "minimize":
return "Minimize";
case "run_optimization":
return "Running optimization with input";
case "startProblemSetup":
return "Starting problem setup...";
case "succProblemSetup":
return "Problem created.";
case "startScaling":
return "Scaling problem...";
case "succScaling":
return "Scaling successful.";
case "startOptimizationSimplex":
return "Starting simplex optimization...";
case "succOptimizationSimplex":
return "Simplex optimization complete.";
case "startOptimizationInteger":
return "Starting integer optimization...";
case "succOptimizationInteger":
return "Integer optimization complete.";
case "finalObjValue":
return "Final objective value";
case "varsValues":
return "Value of each variable";
case "dualValues":
return "Dual values of constraints";
case "downloadPrepFileString":
return "Preparing file content string...";
case "downloadPrepFile":
return "Preparing file...";
case "downloadStart":
return "Starting download.";
case "downloadPrep":
return "Preparing download...";
case "downloadFetchInput":
return "Fetching input...";
case "importing":
return "Importing...";
default:
return input;
}
}
return "Error: Translation Module - Language Not Known.";
}