This commit is contained in:
Mario Pesch 2021-09-17 10:23:05 +02:00
parent 5e21a28eb2
commit f20766d489
7 changed files with 347 additions and 259 deletions

View File

@ -1,18 +1,38 @@
import * as Blockly from "blockly/core"; import * as Blockly from "blockly/core";
import { getColour } from "../helpers/colour"; import { getColour } from "../helpers/colour";
var checkFileName = function (filename) {
var length = filename.length;
if (length > 8) {
alert("dateiname sollte kleiner als 8 Zeichen sein");
return filename.slice(0, 8);
}
return filename;
};
Blockly.Blocks["sensebox_sd_open_file"] = { Blockly.Blocks["sensebox_sd_open_file"] = {
init: function () { init: function () {
this.appendDummyInput() this.appendDummyInput()
.appendField(Blockly.Msg.senseBox_sd_open_file) .appendField(Blockly.Msg.senseBox_sd_open_file)
.setAlign(Blockly.ALIGN_LEFT) .setAlign(Blockly.ALIGN_LEFT)
.appendField(new Blockly.FieldTextInput("Data.txt"), "Filename"); .appendField(
new Blockly.FieldTextInput("Data", checkFileName),
"Filename"
)
.appendField(".")
.appendField(
new Blockly.FieldDropdown([
["txt", "txt"],
["csv", "csv"],
]),
"extension"
);
this.appendStatementInput("SD").setCheck(null); this.appendStatementInput("SD").setCheck(null);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(getColour().sensebox); this.setColour(getColour().sensebox);
this.setTooltip(Blockly.Msg.senseBox_sd_open_file_tooltip); this.setTooltip(Blockly.Msg.senseBox_sd_open_file_tooltip);
this.setHelpUrl("https://docs.sensebox.de/hardware/bee-sd/"); this.setHelpUrl(Blockly.Msg.sensebox_sd_helpurl);
}, },
}; };
@ -22,12 +42,23 @@ Blockly.Blocks["sensebox_sd_create_file"] = {
.appendField(Blockly.Msg.senseBox_sd_create_file) .appendField(Blockly.Msg.senseBox_sd_create_file)
.setAlign(Blockly.ALIGN_LEFT) .setAlign(Blockly.ALIGN_LEFT)
.appendField(Blockly.Msg.senseBox_output_filename) .appendField(Blockly.Msg.senseBox_output_filename)
.appendField(new Blockly.FieldTextInput("Data.txt"), "Filename"); .appendField(
new Blockly.FieldTextInput("Data", checkFileName),
"Filename"
)
.appendField(".")
.appendField(
new Blockly.FieldDropdown([
["txt", "txt"],
["csv", "csv"],
]),
"extension"
);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(getColour().sensebox); this.setColour(getColour().sensebox);
this.setTooltip(Blockly.Msg.senseBox_sd_create_file_tooltip); this.setTooltip(Blockly.Msg.senseBox_sd_create_file_tooltip);
this.setHelpUrl("https://docs.sensebox.de/hardware/bee-sd/"); this.setHelpUrl(Blockly.Msg.sensebox_sd_helpurl);
}, },
}; };
@ -44,7 +75,7 @@ Blockly.Blocks["sensebox_sd_write_file"] = {
this.setNextStatement(true, null); this.setNextStatement(true, null);
this.setColour(getColour().sensebox); this.setColour(getColour().sensebox);
this.setTooltip(Blockly.Msg.senseBox_sd_write_file_tooltip); this.setTooltip(Blockly.Msg.senseBox_sd_write_file_tooltip);
this.setHelpUrl("https://docs.sensebox.de/hardware/bee-sd/"); this.setHelpUrl(Blockly.Msg.sensebox_sd_helpurl);
}, },
/** /**
* Called whenever anything on the workspace changes. * Called whenever anything on the workspace changes.
@ -74,12 +105,12 @@ Blockly.Blocks["sensebox_sd_write_file"] = {
Blockly.Blocks["sensebox_sd_osem"] = { Blockly.Blocks["sensebox_sd_osem"] = {
init: function () { init: function () {
this.setTooltip(Blockly.Msg.senseBox_osem_connection_tip); this.setTooltip(Blockly.Msg.sensebox_sd_osem_tip);
this.setHelpUrl(""); this.setHelpUrl(Blockly.Msg.sensebox_sd_helpurl);
this.setColour(getColour().sensebox); this.setColour(getColour().sensebox);
this.appendDummyInput() this.appendDummyInput()
.setAlign(Blockly.ALIGN_LEFT) .setAlign(Blockly.ALIGN_LEFT)
.appendField("Create CSV for openSenseMap"); .appendField(Blockly.Msg.sensebox_sd_osem);
this.appendDummyInput() this.appendDummyInput()
.setAlign(Blockly.ALIGN_LEFT) .setAlign(Blockly.ALIGN_LEFT)
.appendField(Blockly.Msg.senseBox_osem_exposure) .appendField(Blockly.Msg.senseBox_osem_exposure)
@ -94,7 +125,7 @@ Blockly.Blocks["sensebox_sd_osem"] = {
Blockly.Msg.senseBox_gps_timeStamp Blockly.Msg.senseBox_gps_timeStamp
); );
this.appendStatementInput("DO") this.appendStatementInput("DO")
.appendField(Blockly.Msg.senseBox_sensor) .appendField(Blockly.Msg.sensebox_sd_measurement)
.setCheck(null); .setCheck(null);
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);
@ -142,13 +173,13 @@ Blockly.Blocks["sensebox_sd_osem"] = {
}; };
Blockly.Blocks["sensebox_sd_save_for_osem"] = { Blockly.Blocks["sensebox_sd_save_for_osem"] = {
init: function () { init: function () {
this.setTooltip(Blockly.Msg.senseBox_send_to_osem_tip); this.setTooltip(Blockly.Msg.sensebox_sd_save_for_osem_tip);
this.setHelpUrl(""); this.setHelpUrl(Blockly.Msg.sensebox_sd_helpurl);
this.setColour(getColour().sensebox); this.setColour(getColour().sensebox);
this.appendDummyInput().appendField(Blockly.Msg.sensebox_sd_save_for_osem); this.appendDummyInput().appendField(Blockly.Msg.sensebox_sd_save_for_osem);
this.appendValueInput("Value") this.appendValueInput("Value")
.setAlign(Blockly.ALIGN_LEFT) .setAlign(Blockly.ALIGN_LEFT)
.appendField("Phänomen") .appendField(Blockly.Msg.sensebox_sd_save_for_osem_id)
.appendField(new Blockly.FieldTextInput("sensorID"), "SensorID"); .appendField(new Blockly.FieldTextInput("sensorID"), "SensorID");
this.setPreviousStatement(true, null); this.setPreviousStatement(true, null);
this.setNextStatement(true, null); this.setNextStatement(true, null);

View File

@ -10,30 +10,27 @@ import Blockly from "blockly";
Blockly.Arduino.sensebox_sd_create_file = function (block) { Blockly.Arduino.sensebox_sd_create_file = function (block) {
var filename = this.getFieldValue("Filename"); var filename = this.getFieldValue("Filename");
var res = filename.slice(0, 4); var extension = this.getFieldValue("extension");
var newFileName = filename.concat(".", extension);
Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>"; Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>";
Blockly.Arduino.libraries_["library_sd"] = "#include <SD.h>"; Blockly.Arduino.libraries_["library_sd"] = "#include <SD.h>";
Blockly.Arduino.definitions_["define_" + res] = "File dataFile" + res + ";"; Blockly.Arduino.definitions_["define_" + filename] = `File ${filename};`;
Blockly.Arduino.setupCode_["sensebox_sd"] = "SD.begin(28);"; Blockly.Arduino.setupCode_["sensebox_sd"] = "SD.begin(28);\n";
Blockly.Arduino.setupCode_["sensebox_sd" + filename] = Blockly.Arduino.setupCode_[
"dataFile" + "sensebox_sd" + filename
res + ] = `${filename} = SD.open("${newFileName}", FILE_WRITE);\n${filename}.close();\n`;
' = SD.open("' +
filename +
'", FILE_WRITE);\ndataFile' +
res +
".close();\n";
var code = ""; var code = "";
return code; return code;
}; };
Blockly.Arduino.sensebox_sd_open_file = function (block) { Blockly.Arduino.sensebox_sd_open_file = function (block) {
var filename = this.getFieldValue("Filename"); var filename = this.getFieldValue("Filename");
var res = filename.slice(0, 4); var extension = this.getFieldValue("extension");
var newFileName = filename.concat(".", extension);
var branch = Blockly.Arduino.statementToCode(block, "SD"); var branch = Blockly.Arduino.statementToCode(block, "SD");
var code = "dataFile" + res + ' = SD.open("' + filename + '", FILE_WRITE);\n'; var code = `${filename} = SD.open("${newFileName}", FILE_WRITE);\n`;
code += branch; code += branch;
code += "dataFile" + res + ".close();\n"; code += `${filename}.close();\n`;
return code; return code;
}; };
@ -41,8 +38,7 @@ Blockly.Arduino.sensebox_sd_write_file = function (block) {
if (this.parentBlock_ != null) { if (this.parentBlock_ != null) {
var filename = this.getSurroundParent().getFieldValue("Filename"); var filename = this.getSurroundParent().getFieldValue("Filename");
} }
var res = filename.slice(0, 4); var branch =
var text =
Blockly.Arduino.valueToCode(this, "DATA", Blockly.Arduino.ORDER_ATOMIC) || Blockly.Arduino.valueToCode(this, "DATA", Blockly.Arduino.ORDER_ATOMIC) ||
'"Keine Eingabe"'; '"Keine Eingabe"';
var linebreak = this.getFieldValue("linebreak"); var linebreak = this.getFieldValue("linebreak");
@ -52,10 +48,10 @@ Blockly.Arduino.sensebox_sd_write_file = function (block) {
linebreak = ""; linebreak = "";
} }
var code = ""; var code = "";
if (text === "gps.getLongitude()" || text === "gps.getLatitude()") { if (branch === "gps.getLongitude()" || branch === "gps.getLatitude()") {
code = "dataFile" + res + ".print" + linebreak + "(" + text + ",5);\n"; code = `${filename}.print${linebreak}(${branch},5);\n`;
} else { } else {
code = "dataFile" + res + ".print" + linebreak + "(" + text + ");\n"; code = `${filename}.print${linebreak}(${branch});\n`;
} }
return code; return code;
}; };
@ -64,7 +60,7 @@ Blockly.Arduino.sensebox_sd_osem = function () {
if (this.parentBlock_ != null) { if (this.parentBlock_ != null) {
var filename = this.getSurroundParent().getFieldValue("Filename"); var filename = this.getSurroundParent().getFieldValue("Filename");
} }
var res = filename.slice(0, 4);
var type = this.getFieldValue("type"); var type = this.getFieldValue("type");
var blocks = this.getDescendants(); var blocks = this.getDescendants();
var branch = Blockly.Arduino.statementToCode(this, "DO"); var branch = Blockly.Arduino.statementToCode(this, "DO");
@ -108,7 +104,7 @@ void writeMeasurementsToSdCard(char* timeStamp) {
for (uint8_t i = 0; i < num_measurements; i++) { for (uint8_t i = 0; i < num_measurements; i++) {
sprintf_P(buffer, PSTR("%s,%9.2f,%s"), measurements[i].sensorId, measurements[i].value, timeStamp); sprintf_P(buffer, PSTR("%s,%9.2f,%s"), measurements[i].sensorId, measurements[i].value, timeStamp);
// transmit buffer to client // transmit buffer to client
dataFile${res}.println(buffer); ${filename}.println(buffer);
} }
// reset num_measurements // reset num_measurements
num_measurements = 0; num_measurements = 0;
@ -177,7 +173,7 @@ void writeMeasurementsToSdCard(char* timeStamp, uint32_t latitudes, uint32_t lon
dtostrf(latitude, 1, 7, lat); dtostrf(latitude, 1, 7, lat);
sprintf_P(buffer, PSTR("%s,%9.2f,%s,%02s,%02s"), measurements[i].sensorId, measurements[i].value, timeStamp, lng, lat); sprintf_P(buffer, PSTR("%s,%9.2f,%s,%02s,%02s"), measurements[i].sensorId, measurements[i].value, timeStamp, lng, lat);
// transmit buffer to client // transmit buffer to client
dataFile${res}.print(buffer); ${filename}.print(buffer);
} }
// reset num_measurements // reset num_measurements
num_measurements = 0; num_measurements = 0;

View File

@ -5,7 +5,7 @@ export const RTC = {
sensebox_rtc_set: "Setze Uhrzeit/Datum der RTC", sensebox_rtc_set: "Setze Uhrzeit/Datum der RTC",
sensebox_rtc_set_tooltip: sensebox_rtc_set_tooltip:
"Stellt die Uhrzeit der RTC ein. Beachte, dass du diesen Block im Setup ausführst.", "Stellt die Uhrzeit der RTC ein. Beachte, dass du diesen Block im Setup ausführst.",
sensebox_rtc_get_timestamp: "Zeitstempel", sensebox_rtc_get_timestamp: "Zeitstempel (RFC 3339)",
sensebox_rtc_get_timestamp_tooltip: sensebox_rtc_get_timestamp_tooltip:
"Gibt dir einen in ISO 8601 formatierten Zeitstempel zurück. Bsp: 2021-12-24T18:21Z", "Gibt dir einen in ISO 8601 formatierten Zeitstempel zurück. Bsp: 2021-12-24T18:21Z",
sensebox_rtc_get: "Wert: ", sensebox_rtc_get: "Wert: ",

View File

@ -3,6 +3,7 @@ export const SD = {
* SD-Block * SD-Block
*/ */
senseBox_sd_create_file: "Erstelle Datei auf SD-Karte", senseBox_sd_create_file: "Erstelle Datei auf SD-Karte",
sensebox_sd_helpurl: "https://docs.sensebox.de/hardware/bee-sd/",
senseBox_sd_write_file: "Schreibe Daten auf SD-Karte", senseBox_sd_write_file: "Schreibe Daten auf SD-Karte",
senseBox_sd_open_file: "Öffne eine Datei auf der SD-Karte", senseBox_sd_open_file: "Öffne eine Datei auf der SD-Karte",
senseBox_sd_create_file_tooltip: senseBox_sd_create_file_tooltip:
@ -13,6 +14,12 @@ export const SD = {
"Öffne die Datei auf der SD-Karte, um Dateien zu speichern. Am Ende der Schleife wird die Datei automatisch wieder geschlossen.", "Öffne die Datei auf der SD-Karte, um Dateien zu speichern. Am Ende der Schleife wird die Datei automatisch wieder geschlossen.",
sensebox_sd_filename: "Daten", sensebox_sd_filename: "Daten",
senseBox_sd_decimals: "Dezimalen", senseBox_sd_decimals: "Dezimalen",
sensebox_sd_osem: "Erstelle CSV für openSenseMap", sensebox_sd_osem: "Erstelle CSV-Datei für openSenseMap",
sensebox_sd_save_for_osem: "Speichere als CSV für openSenseMap", sensebox_sd_osem_tip:
"Erstellt eine CSV-Datei, die später auf die openSenseMap hochgeladen werden kann. ",
sensebox_sd_save_for_osem: "Speichere Messwert",
sensebox_sd_save_for_osem_tip:
"Füge eine Messung mit Sensor ID zur CSV-Datei hinzu",
sensebox_sd_save_for_osem_id: "Sensor ID:",
sensebox_sd_measurement: "Messwerte",
}; };

View File

@ -1,212 +1,265 @@
export const TRANSLATIONS = { export const TRANSLATIONS = {
AUTH: "Bitte autorisiere diese App zum Aktivieren der Speicherung deiner Arbeit und zum Teilen.",
CHANGE_VALUE_TITLE: "Wert ändern:",
CHAT: "Chatte mit unserem Mitarbeiter durch Eingeben von Text in diesen Kasten!",
CLEAN_UP: "Blöcke aufräumen",
COLLAPSE_ALL: "Alle Blöcke zusammenfalten",
COLLAPSE_BLOCK: "Block zusammenfalten",
DELETE_ALL_BLOCKS: "Alle %1 Bausteine löschen?",
DELETE_BLOCK: "Block löschen",
DELETE_X_BLOCKS: "Block %1 löschen",
DISABLE_BLOCK: "Block deaktivieren",
DUPLICATE_BLOCK: "Kopieren",
ENABLE_BLOCK: "Block aktivieren",
EXPAND_ALL: "Alle Blöcke entfalten",
EXPAND_BLOCK: "Block entfalten",
EXTERNAL_INPUTS: "externe Eingänge",
HELP: "Hilfe",
INLINE_INPUTS: "interne Eingänge",
LISTS_CREATE_EMPTY_HELPURL:
"https://github.com/google/blockly/wiki/Lists#create-empty-list",
LISTS_CREATE_EMPTY_TITLE: "Erzeuge eine leere Liste",
LISTS_CREATE_EMPTY_TOOLTIP: "Erzeugt eine leere Liste ohne Inhalt.",
LISTS_CREATE_WITH_CONTAINER_TITLE_ADD: "Liste",
LISTS_CREATE_WITH_CONTAINER_TOOLTIP:
"Hinzufügen, entfernen und sortieren von Elementen.",
LISTS_CREATE_WITH_HELPURL:
"https://github.com/google/blockly/wiki/Lists#create-list-with",
LISTS_CREATE_WITH_INPUT_WITH: "Erzeuge Liste mit",
LISTS_CREATE_WITH_ITEM_TOOLTIP: "Ein Element zur Liste hinzufügen.",
LISTS_CREATE_WITH_TOOLTIP: "Erzeugt eine List mit konfigurierten Elementen.",
LISTS_GET_INDEX_FIRST: "erstes",
LISTS_GET_INDEX_FROM_END: "#tes von hinten",
LISTS_GET_INDEX_FROM_START: "#tes",
LISTS_GET_INDEX_GET: "nimm",
LISTS_GET_INDEX_GET_REMOVE: "nimm und entferne",
LISTS_GET_INDEX_LAST: "letztes",
LISTS_GET_INDEX_RANDOM: "zufälliges",
LISTS_GET_INDEX_REMOVE: "entferne",
LISTS_GET_INDEX_TAIL: "",
LISTS_GET_INDEX_TOOLTIP_GET_FIRST:
"Extrahiere das erste Element aus der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_FROM_END:
"Extrahiere das #1te Element aus Ende der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_FROM_START:
"Extrahiere das #1te Element aus der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_LAST:
"Extrahiere das letzte Element aus der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_RANDOM:
"Extrahiere ein zufälliges Element aus der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST:
"Extrahiere und entfernt das erste Element aus der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END:
"Extrahiere und entfernt das #1te Element aus Ende der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START:
"Extrahiere und entfernt das #1te Element aus der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST:
"Extrahiere und entfernt das letzte Element aus der Liste.",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM:
"Extrahiere und entfernt ein zufälliges Element aus der Liste.",
LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST:
"Entfernt das erste Element von der Liste.",
LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END:
"Entfernt das #1te Element von Ende der Liste.",
LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START:
"Entfernt das #1te Element von der Liste.",
LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST:
"Entfernt das letzte Element von der Liste.",
LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM:
"Entfernt ein zufälliges Element von der Liste.",
LISTS_GET_SUBLIST_END_FROM_END: "bis zu # von hinten",
LISTS_GET_SUBLIST_END_FROM_START: "bis zu #",
LISTS_GET_SUBLIST_END_LAST: "bis zum Ende",
LISTS_GET_SUBLIST_HELPURL:
"http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic:%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm",
LISTS_GET_SUBLIST_START_FIRST: "erhalte Unterliste vom Anfang",
LISTS_GET_SUBLIST_START_FROM_END: "erhalte Unterliste von # von hinten",
LISTS_GET_SUBLIST_START_FROM_START: "erhalte Unterliste von #",
LISTS_GET_SUBLIST_TAIL: "",
LISTS_GET_SUBLIST_TOOLTIP:
"Erstellt eine Kopie mit dem angegebenen Abschnitt der Liste.",
LISTS_INDEX_OF_FIRST: "suche erstes Auftreten von",
LISTS_INDEX_OF_HELPURL:
"http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic:%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm",
LISTS_INDEX_OF_LAST: "suche letztes Auftreten von",
LISTS_INDEX_OF_TOOLTIP:
"Sucht die Position (index) eines Elementes in der Liste. Gibt 0 zurück, falls kein Element gefunden wurde.",
LISTS_INLIST: "von der Liste",
LISTS_ISEMPTY_HELPURL:
"https://github.com/google/blockly/wiki/Lists#is-empty", // untranslated
LISTS_ISEMPTY_TITLE: "%1 ist leer?",
LISTS_ISEMPTY_TOOLTIP: "Ist wahr (true), wenn die Liste leer ist.",
LISTS_LENGTH_HELPURL:
"https://github.com/google/blockly/wiki/Lists#length-of", // untranslated
LISTS_LENGTH_TITLE: "Länge von %1",
LISTS_LENGTH_TOOLTIP: "Die Anzahl von Elementen in der Liste.",
LISTS_REPEAT_HELPURL:
"http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic:%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm",
LISTS_REPEAT_TITLE: "Erzeuge Liste mit Element %1 wiederhole es %2 mal",
LISTS_REPEAT_TOOLTIP:
"Erzeugt eine Liste mit einer variablen Anzahl von Elementen",
LISTS_SET_INDEX_HELPURL:
"http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic:%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm",
LISTS_SET_INDEX_INPUT_TO: "ein",
LISTS_SET_INDEX_INSERT: "füge",
LISTS_SET_INDEX_SET: "setze",
LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST:
"Fügt das Element an den Anfang der Liste an.",
LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END:
"Fügt das Element an der angegebenen Position in der Liste ein. #1 ist das letzte Element.",
LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START:
"Fügt das Element an der angegebenen Position in der Liste ein. #1 ist die erste Element.",
LISTS_SET_INDEX_TOOLTIP_INSERT_LAST:
"Fügt das Element ans Ende der Liste an.",
LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM:
"Fügt das Element zufällig in die Liste ein.",
LISTS_SET_INDEX_TOOLTIP_SET_FIRST: "Setzt das erste Element in der Liste.",
LISTS_SET_INDEX_TOOLTIP_SET_FROM_END:
"Setzt das Element an der angegebenen Position in der Liste. #1 ist das letzte Element.",
LISTS_SET_INDEX_TOOLTIP_SET_FROM_START:
"Setzte das Element an der angegebenen Position in der Liste. #1 ist das erste Element.",
LISTS_SET_INDEX_TOOLTIP_SET_LAST: "Setzt das letzte Element in der Liste.",
LISTS_SET_INDEX_TOOLTIP_SET_RANDOM:
"Setzt ein zufälliges Element in der Liste.",
LISTS_SORT_HELPURL:
"https://github.com/google/blockly/wiki/Lists#sorting-a-list",
LISTS_SORT_ORDER_ASCENDING: "aufsteigend",
LISTS_SORT_ORDER_DESCENDING: "absteigend",
LISTS_SORT_TITLE: "%1 %2 %3 sortieren",
LISTS_SORT_TOOLTIP: "Eine Kopie einer Liste sortieren.",
LISTS_SORT_TYPE_IGNORECASE: "alphabetisch, Schreibung ignorieren",
LISTS_SORT_TYPE_NUMERIC: "numerisch",
LISTS_SORT_TYPE_TEXT: "alphabetisch",
LISTS_SPLIT_HELPURL:
"https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists",
LISTS_SPLIT_LIST_FROM_TEXT: "Liste aus Text erstellen",
LISTS_SPLIT_TEXT_FROM_LIST: "Text aus Liste erstellen",
LISTS_SPLIT_TOOLTIP_JOIN:
"Liste mit Texten in einen Text vereinen, getrennt durch ein Trennzeichen.",
LISTS_SPLIT_TOOLTIP_SPLIT:
"Text in eine Liste mit Texten aufteilen, unterbrochen bei jedem Trennzeichen.",
LISTS_SPLIT_WITH_DELIMITER: "mit Trennzeichen",
LOGIC_BOOLEAN_FALSE: "falsch",
AUTH: "Bitte autorisiere diese App zum Aktivieren der Speicherung deiner Arbeit und zum Teilen.", ME: "Ich",
CHANGE_VALUE_TITLE: "Wert ändern:", NEW_VARIABLE: "Neue Variable...",
CHAT: "Chatte mit unserem Mitarbeiter durch Eingeben von Text in diesen Kasten!", NEW_VARIABLE_TITLE: "Name der neuen Variable:",
CLEAN_UP: "Blöcke aufräumen", ORDINAL_NUMBER_SUFFIX: "",
COLLAPSE_ALL: "Alle Blöcke zusammenfalten", PROCEDURES_ALLOW_STATEMENTS: "Aussagen erlauben",
COLLAPSE_BLOCK: "Block zusammenfalten", PROCEDURES_CALLNORETURN_HELPURL:
DELETE_ALL_BLOCKS: "Alle %1 Bausteine löschen?", "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29",
DELETE_BLOCK: "Block löschen", PROCEDURES_CALLNORETURN_TOOLTIP:
DELETE_X_BLOCKS: "Block %1 löschen", "Rufe einen Funktionsblock ohne Rückgabewert auf.",
DISABLE_BLOCK: "Block deaktivieren", PROCEDURES_CALLRETURN_HELPURL:
DUPLICATE_BLOCK: "Kopieren", "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29",
ENABLE_BLOCK: "Block aktivieren", PROCEDURES_CALLRETURN_TOOLTIP:
EXPAND_ALL: "Alle Blöcke entfalten", "Rufe einen Funktionsblock mit Rückgabewert auf.",
EXPAND_BLOCK: "Block entfalten", PROCEDURES_CALL: "Rufe",
EXTERNAL_INPUTS: "externe Eingänge", PROCEDURES_CALL_END: "auf",
HELP: "Hilfe", PROCEDURES_DEFNORETURN: "Erstelle Funktion",
INLINE_INPUTS: "interne Eingänge", PROCEDURES_BEFORE_PARAMS: "mit Eingabeparameter:",
LISTS_CREATE_EMPTY_HELPURL: "https://github.com/google/blockly/wiki/Lists#create-empty-list", PROCEDURES_DEFRETURN_RETURN_TYPE: "Rückgabetype",
LISTS_CREATE_EMPTY_TITLE: "Erzeuge eine leere Liste", PROCEDURES_CALL_BEFORE_PARAMS: "mit:",
LISTS_CREATE_EMPTY_TOOLTIP: "Erzeugt eine leere Liste ohne Inhalt.", PROCEDURES_CREATE_DO: 'Erzeuge "Aufruf %1"',
LISTS_CREATE_WITH_CONTAINER_TITLE_ADD: "Liste", PROCEDURES_DEFNORETURN_COMMENT: "Beschreibe diese Funktion …",
LISTS_CREATE_WITH_CONTAINER_TOOLTIP: "Hinzufügen, entfernen und sortieren von Elementen.", PROCEDURES_DEFNORETURN_DO: "",
LISTS_CREATE_WITH_HELPURL: "https://github.com/google/blockly/wiki/Lists#create-list-with", PROCEDURES_DEFNORETURN_HELPURL:
LISTS_CREATE_WITH_INPUT_WITH: "Erzeuge Liste mit", "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29",
LISTS_CREATE_WITH_ITEM_TOOLTIP: "Ein Element zur Liste hinzufügen.", PROCEDURES_DEFNORETURN_PROCEDURE: "Funktionsblock",
LISTS_CREATE_WITH_TOOLTIP: "Erzeugt eine List mit konfigurierten Elementen.", PROCEDURES_DEFNORETURN_TITLE: "zu",
LISTS_GET_INDEX_FIRST: "erstes", PROCEDURES_DEFNORETURN_TOOLTIP: "Ein Funktionsblock ohne Rückgabewert.",
LISTS_GET_INDEX_FROM_END: "#tes von hinten", PROCEDURES_DEFRETURN_HELPURL:
LISTS_GET_INDEX_FROM_START: "#tes", "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29",
LISTS_GET_INDEX_GET: "nimm", PROCEDURES_DEFRETURN_RETURN: "gebe zurück",
LISTS_GET_INDEX_GET_REMOVE: "nimm und entferne", PROCEDURES_DEFRETURN_TOOLTIP: "Ein Funktionsblock mit Rückgabewert.",
LISTS_GET_INDEX_LAST: "letztes", PROCEDURES_DEF_DUPLICATE_WARNING:
LISTS_GET_INDEX_RANDOM: "zufälliges", "Warnung: dieser Funktionsblock hat zwei gleich benannte Parameter.",
LISTS_GET_INDEX_REMOVE: "entferne", PROCEDURES_HIGHLIGHT_DEF: "Markiere Funktionsblock",
LISTS_GET_INDEX_TAIL: "", PROCEDURES_IFRETURN_HELPURL: "http://c2.com/cgi/wiki?GuardClause",
LISTS_GET_INDEX_TOOLTIP_GET_FIRST: "Extrahiere das erste Element aus der Liste.", PROCEDURES_IFRETURN_TOOLTIP:
LISTS_GET_INDEX_TOOLTIP_GET_FROM_END: "Extrahiere das #1te Element aus Ende der Liste.", "Wenn der erste Wert wahr (true) ist, Gebe den zweiten Wert zurück.",
LISTS_GET_INDEX_TOOLTIP_GET_FROM_START: "Extrahiere das #1te Element aus der Liste.", PROCEDURES_IFRETURN_WARNING:
LISTS_GET_INDEX_TOOLTIP_GET_LAST: "Extrahiere das letzte Element aus der Liste.", "Warnung: Dieser Block darf nur innerhalb eines Funktionsblock genutzt werden.",
LISTS_GET_INDEX_TOOLTIP_GET_RANDOM: "Extrahiere ein zufälliges Element aus der Liste.", PROCEDURES_MUTATORARG_TITLE: "Variable:",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST: "Extrahiere und entfernt das erste Element aus der Liste.", PROCEDURES_MUTATORARG_TOOLTIP: "Eine Eingabe zur Funktion hinzufügen.",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_END: "Extrahiere und entfernt das #1te Element aus Ende der Liste.", PROCEDURES_MUTATORCONTAINER_TITLE: "Parameter",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM_START: "Extrahiere und entfernt das #1te Element aus der Liste.", PROCEDURES_MUTATORCONTAINER_TOOLTIP:
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST: "Extrahiere und entfernt das letzte Element aus der Liste.", "Die Eingaben zu dieser Funktion hinzufügen, entfernen oder neu anordnen.",
LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM: "Extrahiere und entfernt ein zufälliges Element aus der Liste.", REDO: "Wiederholen",
LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST: "Entfernt das erste Element von der Liste.", REMOVE_COMMENT: "Kommentar entfernen",
LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_END: "Entfernt das #1te Element von Ende der Liste.", RENAME_VARIABLE: "Variable umbenennen...",
LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM_START: "Entfernt das #1te Element von der Liste.", RENAME_VARIABLE_TITLE: 'Alle "%1" Variablen umbenennen in:',
LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST: "Entfernt das letzte Element von der Liste.",
LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM: "Entfernt ein zufälliges Element von der Liste.",
LISTS_GET_SUBLIST_END_FROM_END: "bis zu # von hinten",
LISTS_GET_SUBLIST_END_FROM_START: "bis zu #",
LISTS_GET_SUBLIST_END_LAST: "bis zum Ende",
LISTS_GET_SUBLIST_HELPURL: "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic:%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm",
LISTS_GET_SUBLIST_START_FIRST: "erhalte Unterliste vom Anfang",
LISTS_GET_SUBLIST_START_FROM_END: "erhalte Unterliste von # von hinten",
LISTS_GET_SUBLIST_START_FROM_START: "erhalte Unterliste von #",
LISTS_GET_SUBLIST_TAIL: "",
LISTS_GET_SUBLIST_TOOLTIP: "Erstellt eine Kopie mit dem angegebenen Abschnitt der Liste.",
LISTS_INDEX_OF_FIRST: "suche erstes Auftreten von",
LISTS_INDEX_OF_HELPURL: "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic:%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm",
LISTS_INDEX_OF_LAST: "suche letztes Auftreten von",
LISTS_INDEX_OF_TOOLTIP: "Sucht die Position (index) eines Elementes in der Liste. Gibt 0 zurück, falls kein Element gefunden wurde.",
LISTS_INLIST: "von der Liste",
LISTS_ISEMPTY_HELPURL: "https://github.com/google/blockly/wiki/Lists#is-empty", // untranslated
LISTS_ISEMPTY_TITLE: "%1 ist leer?",
LISTS_ISEMPTY_TOOLTIP: "Ist wahr (true), wenn die Liste leer ist.",
LISTS_LENGTH_HELPURL: "https://github.com/google/blockly/wiki/Lists#length-of", // untranslated
LISTS_LENGTH_TITLE: "Länge von %1",
LISTS_LENGTH_TOOLTIP: "Die Anzahl von Elementen in der Liste.",
LISTS_REPEAT_HELPURL: "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic:%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm",
LISTS_REPEAT_TITLE: "Erzeuge Liste mit Element %1 wiederhole es %2 mal",
LISTS_REPEAT_TOOLTIP: "Erzeugt eine Liste mit einer variablen Anzahl von Elementen",
LISTS_SET_INDEX_HELPURL: "http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic:%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Farsubex.htm",
LISTS_SET_INDEX_INPUT_TO: "ein",
LISTS_SET_INDEX_INSERT: "füge",
LISTS_SET_INDEX_SET: "setze",
LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST: "Fügt das Element an den Anfang der Liste an.",
LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_END: "Fügt das Element an der angegebenen Position in der Liste ein. #1 ist das letzte Element.",
LISTS_SET_INDEX_TOOLTIP_INSERT_FROM_START: "Fügt das Element an der angegebenen Position in der Liste ein. #1 ist die erste Element.",
LISTS_SET_INDEX_TOOLTIP_INSERT_LAST: "Fügt das Element ans Ende der Liste an.",
LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM: "Fügt das Element zufällig in die Liste ein.",
LISTS_SET_INDEX_TOOLTIP_SET_FIRST: "Setzt das erste Element in der Liste.",
LISTS_SET_INDEX_TOOLTIP_SET_FROM_END: "Setzt das Element an der angegebenen Position in der Liste. #1 ist das letzte Element.",
LISTS_SET_INDEX_TOOLTIP_SET_FROM_START: "Setzte das Element an der angegebenen Position in der Liste. #1 ist das erste Element.",
LISTS_SET_INDEX_TOOLTIP_SET_LAST: "Setzt das letzte Element in der Liste.",
LISTS_SET_INDEX_TOOLTIP_SET_RANDOM: "Setzt ein zufälliges Element in der Liste.",
LISTS_SORT_HELPURL: "https://github.com/google/blockly/wiki/Lists#sorting-a-list",
LISTS_SORT_ORDER_ASCENDING: "aufsteigend",
LISTS_SORT_ORDER_DESCENDING: "absteigend",
LISTS_SORT_TITLE: "%1 %2 %3 sortieren",
LISTS_SORT_TOOLTIP: "Eine Kopie einer Liste sortieren.",
LISTS_SORT_TYPE_IGNORECASE: "alphabetisch, Schreibung ignorieren",
LISTS_SORT_TYPE_NUMERIC: "numerisch",
LISTS_SORT_TYPE_TEXT: "alphabetisch",
LISTS_SPLIT_HELPURL: "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists",
LISTS_SPLIT_LIST_FROM_TEXT: "Liste aus Text erstellen",
LISTS_SPLIT_TEXT_FROM_LIST: "Text aus Liste erstellen",
LISTS_SPLIT_TOOLTIP_JOIN: "Liste mit Texten in einen Text vereinen, getrennt durch ein Trennzeichen.",
LISTS_SPLIT_TOOLTIP_SPLIT: "Text in eine Liste mit Texten aufteilen, unterbrochen bei jedem Trennzeichen.",
LISTS_SPLIT_WITH_DELIMITER: "mit Trennzeichen",
LOGIC_BOOLEAN_FALSE: "falsch",
ME: "Ich", TODAY: "Heute",
NEW_VARIABLE: "Neue Variable...", UNDO: "Rückgängig",
NEW_VARIABLE_TITLE: "Name der neuen Variable:", VARIABLES_DEFAULT_NAME: "Element",
ORDINAL_NUMBER_SUFFIX: "", VARIABLES_GET_CREATE_SET: 'Erzeuge "Schreibe %1"',
PROCEDURES_ALLOW_STATEMENTS: "Aussagen erlauben", VARIABLES_GET_HELPURL:
PROCEDURES_CALLNORETURN_HELPURL: "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29", "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29",
PROCEDURES_CALLNORETURN_TOOLTIP: "Rufe einen Funktionsblock ohne Rückgabewert auf.", VARIABLES_GET_TOOLTIP: "Gibt den Wert der Variable zurück.",
PROCEDURES_CALLRETURN_HELPURL: "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29", VARIABLES_SET: "Schreibe %1 %2",
PROCEDURES_CALLRETURN_TOOLTIP: "Rufe einen Funktionsblock mit Rückgabewert auf.", VARIABLES_SET_CREATE_GET: 'Erzeuge "Lese %1"',
PROCEDURES_CALL: "Rufe", VARIABLES_SET_HELPURL:
PROCEDURES_CALL_END: "auf", "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29",
PROCEDURES_DEFNORETURN: "Erstelle Funktion", VARIABLES_SET_TOOLTIP: "Setzt den Wert einer Variable.",
PROCEDURES_BEFORE_PARAMS: "mit Eingabeparameter:", MATH_CHANGE_TITLE_ITEM: "Element",
PROCEDURES_DEFRETURN_RETURN_TYPE: "Rückgabetype", PROCEDURES_DEFRETURN_TITLE: "zu",
PROCEDURES_CALL_BEFORE_PARAMS: "mit:", CONTROLS_IF_IF_TITLE_IF: "if",
PROCEDURES_CREATE_DO: "Erzeuge \"Aufruf %1\"", CONTROLS_WHILEUNTIL_INPUT_DO: "mache",
PROCEDURES_DEFNORETURN_COMMENT: "Beschreibe diese Funktion …", CONTROLS_IF_MSG_THEN: "mache",
PROCEDURES_DEFNORETURN_DO: "", CONTROLS_IF_ELSE_TITLE_ELSE: "sonst",
PROCEDURES_DEFNORETURN_HELPURL: "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29", PROCEDURES_DEFRETURN_PROCEDURE: "Funktionsblock",
PROCEDURES_DEFNORETURN_PROCEDURE: "Funktionsblock", LISTS_GET_SUBLIST_INPUT_IN_LIST: "in der Liste",
PROCEDURES_DEFNORETURN_TITLE: "zu", LISTS_GET_INDEX_INPUT_IN_LIST: "in der Liste",
PROCEDURES_DEFNORETURN_TOOLTIP: "Ein Funktionsblock ohne Rückgabewert.", PROCEDURES_DEFRETURN_DO: "",
PROCEDURES_DEFRETURN_HELPURL: "https://de.wikipedia.org/wiki/Prozedur_%28Programmierung%29", CONTROLS_IF_ELSEIF_TITLE_ELSEIF: "sonst wenn",
PROCEDURES_DEFRETURN_RETURN: "gebe zurück", LISTS_GET_INDEX_HELPURL:
PROCEDURES_DEFRETURN_TOOLTIP: "Ein Funktionsblock mit Rückgabewert.", "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list",
PROCEDURES_DEF_DUPLICATE_WARNING: "Warnung: dieser Funktionsblock hat zwei gleich benannte Parameter.", CONTROLS_FOREACH_INPUT_DO: "mache",
PROCEDURES_HIGHLIGHT_DEF: "Markiere Funktionsblock", LISTS_SET_INDEX_INPUT_IN_LIST: "in der Liste",
PROCEDURES_IFRETURN_HELPURL: "http://c2.com/cgi/wiki?GuardClause", CONTROLS_FOR_INPUT_DO: "mache",
PROCEDURES_IFRETURN_TOOLTIP: "Wenn der erste Wert wahr (true) ist, Gebe den zweiten Wert zurück.", LISTS_CREATE_WITH_ITEM_TITLE: "item",
PROCEDURES_IFRETURN_WARNING: "Warnung: Dieser Block darf nur innerhalb eines Funktionsblock genutzt werden.", TEXT_APPEND_VARIABLE: "item",
PROCEDURES_MUTATORARG_TITLE: "Variable:", TEXT_CREATE_JOIN_ITEM_TITLE_ITEM: "item",
PROCEDURES_MUTATORARG_TOOLTIP: "Eine Eingabe zur Funktion hinzufügen.", LISTS_INDEX_OF_INPUT_IN_LIST: "von der Liste",
PROCEDURES_MUTATORCONTAINER_TITLE: "Parameter", PROCEDURES_DEFRETURN_COMMENT: "Beschreibe diese Funktion …",
PROCEDURES_MUTATORCONTAINER_TOOLTIP: "Die Eingaben zu dieser Funktion hinzufügen, entfernen oder neu anordnen.",
REDO: "Wiederholen",
REMOVE_COMMENT: "Kommentar entfernen",
RENAME_VARIABLE: "Variable umbenennen...",
RENAME_VARIABLE_TITLE: "Alle \"%1\" Variablen umbenennen in:",
TODAY: "Heute", /*senseBox Blockly Translations*/
UNDO: "Rückgängig",
VARIABLES_DEFAULT_NAME: "Element",
VARIABLES_GET_CREATE_SET: "Erzeuge \"Schreibe %1\"",
VARIABLES_GET_HELPURL: "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29",
VARIABLES_GET_TOOLTIP: "Gibt den Wert der Variable zurück.",
VARIABLES_SET: "Schreibe %1 %2",
VARIABLES_SET_CREATE_GET: "Erzeuge \"Lese %1\"",
VARIABLES_SET_HELPURL: "https://de.wikipedia.org/wiki/Variable_%28Programmierung%29",
VARIABLES_SET_TOOLTIP: "Setzt den Wert einer Variable.",
MATH_CHANGE_TITLE_ITEM: "Element",
PROCEDURES_DEFRETURN_TITLE: "zu",
CONTROLS_IF_IF_TITLE_IF: "if",
CONTROLS_WHILEUNTIL_INPUT_DO: "mache",
CONTROLS_IF_MSG_THEN: "mache",
CONTROLS_IF_ELSE_TITLE_ELSE: "sonst",
PROCEDURES_DEFRETURN_PROCEDURE: "Funktionsblock",
LISTS_GET_SUBLIST_INPUT_IN_LIST: "in der Liste",
LISTS_GET_INDEX_INPUT_IN_LIST: "in der Liste",
PROCEDURES_DEFRETURN_DO: "",
CONTROLS_IF_ELSEIF_TITLE_ELSEIF: "sonst wenn",
LISTS_GET_INDEX_HELPURL: "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list",
CONTROLS_FOREACH_INPUT_DO: "mache",
LISTS_SET_INDEX_INPUT_IN_LIST: "in der Liste",
CONTROLS_FOR_INPUT_DO: "mache",
LISTS_CREATE_WITH_ITEM_TITLE: "item",
TEXT_APPEND_VARIABLE: "item",
TEXT_CREATE_JOIN_ITEM_TITLE_ITEM: "item",
LISTS_INDEX_OF_INPUT_IN_LIST: "von der Liste",
PROCEDURES_DEFRETURN_COMMENT: "Beschreibe diese Funktion …",
/*senseBox Blockly Translations*/ senseBox_basic_blue: "Blau",
senseBox_basic_green: "Grün",
senseBox_basic_blue: "Blau", senseBox_basic_red: "Rot",
senseBox_basic_green: "Grün", senseBox_basic_state: "Status",
senseBox_basic_red: "Rot", senseBox_off: "Aus",
senseBox_basic_state: "Status", senseBox_on: "Ein",
senseBox_off: "Aus", senseBox_sensor: "Sensoren",
senseBox_on: "Ein", senseBox_output_filename: "Daten",
senseBox_sensor: "Sensoren", senseBox_output_format: "Format:",
senseBox_output_filename: "Daten", senseBox_output_linebreak: "Zeilenumbruch",
senseBox_output_format: "Format:", senseBox_output_networkid: "NetzwerkID",
senseBox_output_linebreak: "Zeilenumbruch", senseBox_output_password: "Passwort",
senseBox_output_networkid: "NetzwerkID", senseBox_output_safetosd: "Auf SD Karte speichern",
senseBox_output_password: "Passwort", senseBox_output_safetosd_tip: "Speichert Messwerte auf SD Karte",
senseBox_output_safetosd: "Auf SD Karte speichern", senseBox_output_serialprint: "Auf Kommandozeile ausgeben",
senseBox_output_safetosd_tip: "Speichert Messwerte auf SD Karte", senseBox_serial_tip:
senseBox_output_serialprint: "Auf Kommandozeile ausgeben", "Gibt Messwerte oder Daten auf dem Seriellen Monitor der Arduino IDE aus. Praktisch um ohne Display zu arbeiten",
senseBox_serial_tip: "Gibt Messwerte oder Daten auf dem Seriellen Monitor der Arduino IDE aus. Praktisch um ohne Display zu arbeiten", senseBox_output_timestamp: "Zeitstempel (RFC 3339)",
senseBox_output_timestamp: "Zeitstempel", senseBox_led: "LED an digitalen",
senseBox_led: "LED an digitalen", senseBox_led_tip:
senseBox_led_tip: "Einfache LED. Beim Anschluss sollte immer ein Vorwiderstand verwendet werden", "Einfache LED. Beim Anschluss sollte immer ein Vorwiderstand verwendet werden",
senseBox_piezo: "Piezo an digital", senseBox_piezo: "Piezo an digital",
senseBox_piezo_tip: "Piezo an digital PIN. Beim Anschluss sollte immer ein Vorwiderstand verwendet werden", senseBox_piezo_tip:
senseBox_foto: "Fotowiderstand", "Piezo an digital PIN. Beim Anschluss sollte immer ein Vorwiderstand verwendet werden",
senseBox_foto_tip: "Fotowiderstand", senseBox_foto: "Fotowiderstand",
senseBox_hum: "Luftfeuchtigkeit in %", senseBox_foto_tip: "Fotowiderstand",
senseBox_hum_tip: "Luftfeuchtigkeit", senseBox_hum: "Luftfeuchtigkeit in %",
senseBox_ir: "Infrarot Abstandssensor", senseBox_hum_tip: "Luftfeuchtigkeit",
senseBox_ir_tip: "Infrarot Abstandssensor", senseBox_ir: "Infrarot Abstandssensor",
senseBox_lux: "Helligkeitssensor", senseBox_ir_tip: "Infrarot Abstandssensor",
senseBox_lux_tip: "Helligkeitssensor", senseBox_lux: "Helligkeitssensor",
senseBox_poti: "Potenziometer", senseBox_lux_tip: "Helligkeitssensor",
senseBox_poti_tip: "Potenziometer", senseBox_poti: "Potenziometer",
senseBox_soil: "Bodenfeuchte", senseBox_poti_tip: "Potenziometer",
senseBox_watertemperature: "Wassertemperatur", senseBox_soil: "Bodenfeuchte",
senseBox_watertemperature: "Wassertemperatur",
} };

View File

@ -726,7 +726,7 @@ Blockly.Msg.senseBox_output_safetosd_tip = "Speichert Messwerte auf SD Karte";
Blockly.Msg.senseBox_output_serialprint = "Auf Kommandozeile ausgeben"; Blockly.Msg.senseBox_output_serialprint = "Auf Kommandozeile ausgeben";
Blockly.Msg.senseBox_serial_tip = Blockly.Msg.senseBox_serial_tip =
"Gibt Messwerte oder Daten auf dem Seriellen Monitor der Arduino IDE aus. Praktisch um ohne Display zu arbeiten"; "Gibt Messwerte oder Daten auf dem Seriellen Monitor der Arduino IDE aus. Praktisch um ohne Display zu arbeiten";
Blockly.Msg.senseBox_output_timestamp = "Zeitstempel"; Blockly.Msg.senseBox_output_timestamp = "Zeitstempel (RFC 3339)";
Blockly.Msg.senseBox_led = "LED an digitalen"; Blockly.Msg.senseBox_led = "LED an digitalen";
Blockly.Msg.senseBox_led_tip = Blockly.Msg.senseBox_led_tip =

View File

@ -1,15 +1,16 @@
export const SD = { export const SD = {
/** /**
* SD-Block * SD-Block
*/ */
senseBox_sd_create_file: "Create file on SD-Card", senseBox_sd_create_file: "Create file on SD-Card",
senseBox_sd_write_file: " Write Data to SD-Card", senseBox_sd_write_file: " Write Data to SD-Card",
senseBox_sd_open_file: "Open a file from SD-Card", senseBox_sd_open_file: "Open a file from SD-Card",
senseBox_sd_create_file_tooltip: "Creates a file on the card. Plug the SD-Bee into the **XBEE2** slot. The **maximum** length of the file name is **8 characters**. The file should be created first in *Setup()*", senseBox_sd_create_file_tooltip:
senseBox_sd_write_file_tooptip: "Write data to the SD card. Note that the file must be opened first.", "Creates a file on the card. Plug the SD-Bee into the **XBEE2** slot. The **maximum** length of the file name is **8 characters**. The file should be created first in *Setup()*",
senseBox_sd_open_file_tooltip: "Open the file on the SD card to save files. At the end of the loop, the file will be closed again automatically.", senseBox_sd_write_file_tooptip:
sensebox_sd_filename: "Data.txt", "Write data to the SD card. Note that the file must be opened first.",
senseBox_sd_decimals: "decimals", senseBox_sd_open_file_tooltip:
"Open the file on the SD card to save files. At the end of the loop, the file will be closed again automatically.",
} sensebox_sd_filename: "Data.csv",
senseBox_sd_decimals: "decimals",
};