From ac127dcca2df0270cc2021bb12594aec4ef625e9 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 9 Dec 2020 16:10:37 +0100 Subject: [PATCH 1/5] slice first empty option from sensor array --- src/components/Blockly/blocks/sensebox-osem.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/Blockly/blocks/sensebox-osem.js b/src/components/Blockly/blocks/sensebox-osem.js index 144d00d..b744835 100644 --- a/src/components/Blockly/blocks/sensebox-osem.js +++ b/src/components/Blockly/blocks/sensebox-osem.js @@ -138,6 +138,12 @@ Blockly.Blocks['sensebox_send_to_osem'] = { } console.log(dropdown) } + if (dropdown.length > 1) { + var options = dropdown.slice(1) + return options + } else { + return dropdown + } } return dropdown }, From 7d1d2409e48cf6daa7776f374575dece5f84828f Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 14 Dec 2020 08:51:31 +0100 Subject: [PATCH 2/5] add first translations --- src/components/Blockly/msg/de.js | 147 ++++++++++++++++++ src/components/Blockly/msg/en.js | 83 ++++++++++ src/components/Blockly/toolbox/Toolbox.js | 16 +- src/components/NotFound.js | 19 +-- src/components/Settings/LanguageSelector.js | 5 +- src/components/Settings/RenderSelector.js | 4 +- src/components/Settings/Settings.js | 8 +- src/components/Tutorial/Assessment.js | 3 +- src/components/Tutorial/Hardware.js | 6 +- src/components/Tutorial/HintTutorialExists.js | 3 +- src/components/Workspace/Compile.js | 7 +- src/components/Workspace/DeleteProject.js | 11 +- src/components/Workspace/DownloadProject.js | 4 +- src/components/Workspace/OpenProject.js | 4 +- src/components/Workspace/ResetWorkspace.js | 4 +- src/components/Workspace/SaveProject.js | 43 ++--- src/components/Workspace/Screenshot.js | 2 +- src/components/Workspace/ShareProject.js | 35 +++-- src/components/Workspace/TrashcanButtons.js | 18 +-- src/components/Workspace/WorkspaceName.js | 25 +-- 20 files changed, 344 insertions(+), 103 deletions(-) diff --git a/src/components/Blockly/msg/de.js b/src/components/Blockly/msg/de.js index 2dec197..cca4e12 100644 --- a/src/components/Blockly/msg/de.js +++ b/src/components/Blockly/msg/de.js @@ -800,4 +800,151 @@ Blockly.Msg.senseBox_mqtt_password = "Passwort"; Blockly.Msg.sensebox_mqtt_subscribe = "Subscribe to Feed" Blockly.Msg.senseBox_mqtt_publish = "Sende an Feed/Topic"; + + +/** + * Typed Variable Modal + * + */ + + +Blockly.Msg.TYPED_VAR_MODAL_CONFIRM_BUTTON = "Ok"; +Blockly.Msg.TYPED_VAR_MODAL_VARIABLE_NAME_LABEL = "Variablen Name: "; +Blockly.Msg.TYPED_VAR_MODAL_TYPES_LABEL = "Variable Typen"; +Blockly.Msg.TYPED_VAR_MODAL_CANCEL_BUTTON = "Abbrechen"; +Blockly.Msg.TYPED_VAR_MODAL_TITLE = "Erstelle Variable"; +Blockly.Msg.TYPED_VAR_MODAL_INVALID_NAME = "Der Name ist ungültig, bitte versuche einen anderen." + +/** + * Add Translation for Blocks above + * --------------------------------------------------------------- + * Add Translation for the UI below + */ + +/** + * Toolbox + */ +Blockly.Msg.toolbox_sensors = "Sensoren"; +Blockly.Msg.toolbox_logic = "Logik"; +Blockly.Msg.toolbox_loops = "Schleifen"; +Blockly.Msg.toolbox_math = "Mathematik"; +Blockly.Msg.toolbox_io = "Eingang/Ausgang"; +Blockly.Msg.toolbox_time = "Zeit"; +Blockly.Msg.toolbox_functions = "Funktionen"; +Blockly.Msg.toolbox_variables = "Variablen"; + +/** + * Tooltips + * + */ + +Blockly.Msg.tooltip_compile_code = "Code kompilieren" +Blockly.Msg.tooltip_save_blocks = "Blöcke speichern"; +Blockly.Msg.tooltip_open_blocks = "Blöcke öffnen"; +Blockly.Msg.tooltip_screenshot = "Screenshot erstellen"; +Blockly.Msg.tooltip_clear_workspace = "Workspace zurücksetzen"; +Blockly.Msg.tooltip_share_blocks = "Blöcke teilen"; +Blockly.Msg.tooltip_show_code = "Code anzeigen"; +Blockly.Msg.tooltip_hide_code = "Code ausblenden" +Blockly.Msg.tooltip_delete_project = "Projekt löschen" +Blockly.Msg.tooltip_project_name = "Name des Projektes" +Blockly.Msg.tooltip_download_project = "Projekt herunterladen" +Blockly.Msg.tooltip_open_project = "Projekt öffnen" +Blockly.Msg.tooltip_update_project = "Projekt aktualisieren" +Blockly.Msg.tooltip_save_project = "Projekt speichern" +Blockly.Msg.tooltip_create_project = "Projekt erstellen" +Blockly.Msg.tooltip_share_project = "Projekt teilen" +Blockly.Msg.tooltip_reset_workspace = "Workspace zurücksetzen" +Blockly.Msg.tooltip_copy_link = "Link kopieren" +Blockly.Msg.tooltip_trashcan_hide = 'gelöschte Blöcke ausblenden' +Blockly.Msg.tooltip_trashcan_delete = 'Blöcke endgültig löschen' +Blockly.Msg.tooltip_project_title = "Titel des Projektes" + + +/** + * Messages + * + */ + +Blockly.Msg.messages_delete_project_failed = "Fehler beim Löschen des Projektes. Versuche es noch einmal." +Blockly.Msg.messages_reset_workspace_success = "Das Projekt wurde erfolgreich zurückgesetzt" +Blockly.Msg.messages_PROJECT_UPDATE_SUCCESS = "Das Projekt wurde erfolgreich aktualisiert." +Blockly.Msg.messages_GALLERY_UPDATE_SUCCESS = "Das Galerie-Projekt wurde erfolgreich aktualisiert." +Blockly.Msg.messages_PROJECT_UPDATE_FAIL = "Fehler beim Aktualisieren des Projektes. Versuche es noch einmal." +Blockly.Msg.messages_GALLERY_UPDATE_FAIL = "Fehler beim Aktualisieren des Galerie-Projektes. Versuche es noch einmal." +Blockly.Msg.messages_gallery_save_fail_1 = "Fehler beim Speichern des " +Blockly.Msg.messages_gallery_save_fail_2 = "Projektes. Versuche es noch einmal." +Blockly.Msg.messages_SHARE_SUCCESS = 'Programm teilen' +Blockly.Msg.messages_SHARE_FAIL = "Fehler beim Erstellen eines Links zum Teilen deines Programmes. Versuche es noch einmal." +Blockly.Msg.messages_copylink_success = 'Link erfolgreich in Zwischenablage gespeichert.' +Blockly.Msg.messages_rename_success_01 = 'Das Projekt wurde erfolgreich in ' +Blockly.Msg.messages_rename_success_02 = 'umbenannt.' +/** + * Share Dialog + */ + +Blockly.Msg.sharedialog_headline = "Dein Link wurde erstellt."; +Blockly.Msg.sharedialog_text = "Über den folgenden Link kannst du dein Programm teilen."; + +/** + * Project rename Dialog + */ + +Blockly.Msg.renamedialog_headline = "Projekt benennen"; +Blockly.Msg.renamedialog_text = "Bitte gib einen Namen für das Projekt ein und bestätige diesen mit einem Klick auf 'Bestätigen'." + +/** + * Compile Dialog + * + */ + +Blockly.Msg.compiledialog_headline = "Fehler" +Blockly.Msg.compiledialog_text = "Beim kompilieren ist ein Fehler aufgetreten. Überprüfe deine Blöcke und versuche es erneut" + +/** + * Buttons + * + */ + +Blockly.Msg.button_cancel = "Abbrechen"; +Blockly.Msg.button_close = "Schließen"; +Blockly.Msg.button_accept = "Bestätigen"; +Blockly.Msg.button_compile = "Kompilieren"; +Blockly.Msg.button_create_variableCreate = "Erstelle Variable"; +Blockly.Msg.button_back = "Zurück" + + +/** + * + */ + +Blockly.Msg.filename = "Dateiname"; +Blockly.Msg.projectname = "Projektname"; + +/** + * Settings + */ +Blockly.Msg.settings_head = "Einstellungen" +Blockly.Msg.settings_language = "Sprache" +Blockly.Msg.settings_language_de = "Deutsch" +Blockly.Msg.settings_language_en = "Englisch" +Blockly.Msg.settings_renderer_text = "Der Renderer bestimmt das aussehen der Blöcke" + +/** + * 404 + */ + +Blockly.Msg.notfound_head = "Die von Ihnen angeforderte Seite kann nicht gefunden werden." +Blockly.Msg.notfound_text = "Die gesuchte Seite wurde möglicherweise entfernt, ihr Name wurde geändert oder sie ist vorübergehend nicht verfügbar." + + +/** + * Tutorials + */ + +Blockly.Msg.tutorials_assessment_task = "Aufgabe" +Blockly.Msg.tutorials_hardware_head = "Für die Umsetzung benötigst du folgende Hardware:" +Blockly.Msg.tutorials_hardware_moreInformation = "Weitere Informationen zur Hardware-Komponente findest du" +Blockly.Msg.tutorials_hardware_here = "hier" + export const De = Blockly.Msg; diff --git a/src/components/Blockly/msg/en.js b/src/components/Blockly/msg/en.js index 696d68e..6479613 100644 --- a/src/components/Blockly/msg/en.js +++ b/src/components/Blockly/msg/en.js @@ -782,4 +782,87 @@ Blockly.Msg.senseBox_mqtt_password = "Password"; Blockly.Msg.sensebox_mqtt_subscribe = "Subscribe to Feed" Blockly.Msg.senseBox_mqtt_publish = "Publish to Feed/Topic"; + +/** + * Add Translation for Blocks above + * --------------------------------------------------------------- + * Add Translation for the UI below + */ + + +/** + * Toolbox + */ +Blockly.Msg.toolbox_sensors = "Sensors"; +Blockly.Msg.toolbox_logic = "Logic"; +Blockly.Msg.toolbox_loops = "Loops"; +Blockly.Msg.toolbox_math = "Math"; +Blockly.Msg.toolbox_io = "Input/Output"; +Blockly.Msg.toolbox_time = "Time"; +Blockly.Msg.toolbox_functions = "Functions"; +Blockly.Msg.toolbox_variables = "Variables"; + + +/** + * Tooltips + * + */ + +Blockly.Msg.tooltip_compile_code = "Compile Code" +Blockly.Msg.tooltip_save_blocks = "Save Blocks"; +Blockly.Msg.tooltip_open_blocks = "Open Blocks"; +Blockly.Msg.tooltip_screenshot = "Download Screenshot"; +Blockly.Msg.tooltip_clear_workspace = "Reset Workspace"; +Blockly.Msg.tooltip_share_blocks = "Share Blocks"; +Blockly.Msg.tooltip_show_code = "Show Code"; +Blockly.Msg.tooltip_hide_code = "Hide Code" + +Blockly.Msg.tooltip_project_name = "Projectname" +/** + * Share Dialog + */ + +Blockly.Msg.sharedialog_headline = "Your Share-Link was created"; +Blockly.Msg.sharedialog_text = "Share your project with the following link"; + +/** + * Project rename Dialog + */ + +Blockly.Msg.renamedialog_headline = "Rename Project"; +Blockly.Msg.renamedialog_text = "Please enter a name for the project and confirm it by clicking on 'Confirm'." + +/** + * Compile Dialog + * + */ + +Blockly.Msg.compiledialog_headline = "Error" +Blockly.Msg.compiledialog_text = "While compiling an error occured. Please check your blocks and try again" + + + +/** + * Buttons + * + */ + +Blockly.Msg.button_cancel = "Cancel"; +Blockly.Msg.button_close = "Close"; +Blockly.Msg.button_accept = "Confirm"; +Blockly.Msg.button_compile = "Compile"; +Blockly.Msg.button_create_variableCreate = "Create Variable"; + + +/** + * + */ + +Blockly.Msg.filename = "Filename"; +Blockly.Msg.projectname = "Projectname"; + + + + + export const En = Blockly.Msg; diff --git a/src/components/Blockly/toolbox/Toolbox.js b/src/components/Blockly/toolbox/Toolbox.js index 47fede7..cce1097 100644 --- a/src/components/Blockly/toolbox/Toolbox.js +++ b/src/components/Blockly/toolbox/Toolbox.js @@ -38,7 +38,7 @@ class Toolbox extends React.Component { render() { return ( - + @@ -301,7 +301,7 @@ class Toolbox extends React.Component { {/* */} - + @@ -310,7 +310,7 @@ class Toolbox extends React.Component { - + @@ -349,7 +349,7 @@ class Toolbox extends React.Component { - + @@ -369,7 +369,7 @@ class Toolbox extends React.Component { - + @@ -422,15 +422,15 @@ class Toolbox extends React.Component { - + - + - + diff --git a/src/components/NotFound.js b/src/components/NotFound.js index 85a9c6f..eb790f4 100644 --- a/src/components/NotFound.js +++ b/src/components/NotFound.js @@ -6,31 +6,32 @@ import { withRouter } from 'react-router-dom'; import Button from '@material-ui/core/Button'; import Typography from '@material-ui/core/Typography'; +import * as Blockly from 'blockly' class NotFound extends Component { render() { return (
- - Die von Ihnen angeforderte Seite kann nicht gefunden werden. - Die gesuchte Seite wurde möglicherweise entfernt, ihr Name wurde geändert oder sie ist vorübergehend nicht verfügbar. + + {Blockly.Msg.notfound_head} + {Blockly.Msg.notfound_text} {this.props.button ? - : + : }
diff --git a/src/components/Settings/LanguageSelector.js b/src/components/Settings/LanguageSelector.js index dea7465..7da299c 100644 --- a/src/components/Settings/LanguageSelector.js +++ b/src/components/Settings/LanguageSelector.js @@ -4,6 +4,7 @@ import InputLabel from '@material-ui/core/InputLabel'; import MenuItem from '@material-ui/core/MenuItem'; import FormControl from '@material-ui/core/FormControl'; import Select from '@material-ui/core/Select'; +import * as Blockly from 'blockly/core'; const useStyles = makeStyles((theme) => ({ formControl: { @@ -27,7 +28,7 @@ export default function LanguageSelector() { return (
- Sprache + {Blockly.Msg.settings_language}
diff --git a/src/components/Settings/RenderSelector.js b/src/components/Settings/RenderSelector.js index 5cf7a9f..d8284b6 100644 --- a/src/components/Settings/RenderSelector.js +++ b/src/components/Settings/RenderSelector.js @@ -4,7 +4,7 @@ import InputLabel from '@material-ui/core/InputLabel'; import MenuItem from '@material-ui/core/MenuItem'; import FormControl from '@material-ui/core/FormControl'; import Select from '@material-ui/core/Select'; - +import * as Blockly from 'blockly/core' const useStyles = makeStyles((theme) => ({ formControl: { margin: theme.spacing(1), @@ -39,7 +39,7 @@ export default function RenderSelector() { Zelos -

Der Renderer bestimmt das aussehen der Blöcke

+

{Blockly.Msg.settings_renderer_text}

); } diff --git a/src/components/Settings/Settings.js b/src/components/Settings/Settings.js index cbbedc9..d43f33f 100644 --- a/src/components/Settings/Settings.js +++ b/src/components/Settings/Settings.js @@ -6,13 +6,13 @@ import Typography from '@material-ui/core/Typography'; import LanguageSelector from './LanguageSelector'; import RenderSelector from './RenderSelector'; import StatsSelector from './StatsSelector'; - +import * as Blockly from 'blockly' class Settings extends Component { render() { return (
- Einstellungen + {Blockly.Msg.settings_head} @@ -22,8 +22,8 @@ class Settings extends Component { color="primary" onClick={() => { this.props.history.push('/') }} > - Zurück zur Startseite - + {Blockly.Msg.button_back} +
); }; diff --git a/src/components/Tutorial/Assessment.js b/src/components/Tutorial/Assessment.js index 75e180d..c869cc5 100644 --- a/src/components/Tutorial/Assessment.js +++ b/src/components/Tutorial/Assessment.js @@ -11,6 +11,7 @@ import withWidth, { isWidthDown } from '@material-ui/core/withWidth'; import Grid from '@material-ui/core/Grid'; import Card from '@material-ui/core/Card'; import Typography from '@material-ui/core/Typography'; +import * as Blockly from 'blockly' class Assessment extends Component { @@ -45,7 +46,7 @@ class Assessment extends Component { - Arbeitsauftrag + {Blockly.Msg.tutorials_assessment_task} {currentTask.text}
diff --git a/src/components/Tutorial/Hardware.js b/src/components/Tutorial/Hardware.js index 35602bb..d91b0a0 100644 --- a/src/components/Tutorial/Hardware.js +++ b/src/components/Tutorial/Hardware.js @@ -15,7 +15,7 @@ import GridListTileBar from '@material-ui/core/GridListTileBar'; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faExpandAlt } from "@fortawesome/free-solid-svg-icons"; - +import * as Blockly from 'blockly' const styles = theme => ({ expand: { '&:hover': { @@ -56,7 +56,7 @@ class Hardware extends Component { var cols = isWidthDown('md', this.props.width) ? isWidthDown('sm', this.props.width) ? isWidthDown('xs', this.props.width) ? 2 : 3 : 4 : 6; return (
- Für die Umsetzung benötigst du folgende Hardware: + {Blockly.Msg.tutorials_hardware_head} {this.props.picture.map((picture, i) => { @@ -95,7 +95,7 @@ class Hardware extends Component { >
{this.state.hardwareInfo.name} - Weitere Informationen zur Hardware-Komponente findest du hier. + {Blockly.Msg.tutorials_hardware_moreInformation} {Blockly.Msg.tutorials_hardware_here}.
diff --git a/src/components/Tutorial/HintTutorialExists.js b/src/components/Tutorial/HintTutorialExists.js index 4b1fa2d..afd1468 100644 --- a/src/components/Tutorial/HintTutorialExists.js +++ b/src/components/Tutorial/HintTutorialExists.js @@ -9,6 +9,7 @@ import Dialog from '../Dialog'; import { withStyles } from '@material-ui/core/styles'; import Checkbox from '@material-ui/core/Checkbox'; import FormControlLabel from '@material-ui/core/FormControlLabel'; +import * as Blockly from 'blockly' const styles = (theme) => ({ link: { @@ -60,7 +61,7 @@ class HintTutorialExists extends Component { content={''} onClose={this.toggleDialog} onClick={this.toggleDialog} - button={'Schließen'} + button={Blockly.Msg.button_close} >
Es gibt ab jetzt Tutorials zu verschiedenen Themen. Schau mal hier vorbei. diff --git a/src/components/Workspace/Compile.js b/src/components/Workspace/Compile.js index f8a204a..648931f 100644 --- a/src/components/Workspace/Compile.js +++ b/src/components/Workspace/Compile.js @@ -17,6 +17,7 @@ import TextField from '@material-ui/core/TextField'; import { faClipboardCheck } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import * as Blockly from 'blockly/core'; const styles = (theme) => ({ backdrop: { @@ -85,7 +86,7 @@ class Compile extends Component { }) .catch(err => { console.log(err); - this.setState({ progress: false, file: false, open: true, title: 'Fehler', content: 'Etwas ist beim Kompilieren schief gelaufen. Versuche es nochmal.' }); + this.setState({ progress: false, file: false, open: true, title: Blockly.Msg.compiledialog_headline, content: Blockly.Msg.compiledialog_text }); }); } @@ -119,7 +120,7 @@ class Compile extends Component { return (
{this.props.iconButton ? - + this.compile()} @@ -141,7 +142,7 @@ class Compile extends Component { content={this.state.content} onClose={this.toggleDialog} onClick={this.state.file ? () => { this.toggleDialog(); this.setState({ name: this.props.name }) } : this.toggleDialog} - button={this.state.file ? 'Abbrechen' : 'Schließen'} + button={this.state.file ? Blockly.Msg.button_cancel : Blockly.Msg.button_close} > {this.state.file ?
diff --git a/src/components/Workspace/DeleteProject.js b/src/components/Workspace/DeleteProject.js index 3df813d..4566916 100644 --- a/src/components/Workspace/DeleteProject.js +++ b/src/components/Workspace/DeleteProject.js @@ -13,6 +13,7 @@ import Tooltip from '@material-ui/core/Tooltip'; import { faTrashAlt } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import * as Blockly from 'blockly/core'; const styles = (theme) => ({ buttonTrash: { @@ -43,12 +44,12 @@ class DeleteProject extends Component { } componentDidUpdate(props) { - if(this.props.message !== props.message){ - if(this.props.message.id === 'PROJECT_DELETE_SUCCESS'){ + if (this.props.message !== props.message) { + if (this.props.message.id === 'PROJECT_DELETE_SUCCESS') { this.props.history.push(`/${this.props.projectType}`); } - else if(this.props.message.id === 'PROJECT_DELETE_FAIL'){ - this.setState({ snackbar: true, key: Date.now(), message: `Fehler beim Löschen des Projektes. Versuche es noch einmal.`, type: 'error' }); + else if (this.props.message.id === 'PROJECT_DELETE_FAIL') { + this.setState({ snackbar: true, key: Date.now(), message: Blockly.Msg.messages_delete_project_failed, type: 'error' }); } } } @@ -56,7 +57,7 @@ class DeleteProject extends Component { render() { return (
- + this.props.deleteProject(this.props.projectType, this.props.project._id)} diff --git a/src/components/Workspace/DownloadProject.js b/src/components/Workspace/DownloadProject.js index 9b30273..1315625 100644 --- a/src/components/Workspace/DownloadProject.js +++ b/src/components/Workspace/DownloadProject.js @@ -12,6 +12,8 @@ import Tooltip from '@material-ui/core/Tooltip'; import { faFileDownload } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import * as Blockly from 'blockly/core'; + const styles = (theme) => ({ button: { @@ -40,7 +42,7 @@ class DownloadProject extends Component { render() { return (
- + this.downloadXmlFile()} diff --git a/src/components/Workspace/OpenProject.js b/src/components/Workspace/OpenProject.js index 6038a49..9045a32 100644 --- a/src/components/Workspace/OpenProject.js +++ b/src/components/Workspace/OpenProject.js @@ -97,7 +97,7 @@ class OpenProject extends Component { type="file" />