
'use strict';

var Blockly = Blockly || { Msg: Object.create(null) };
// category 
Blockly.Msg["catLogic"] = "Logic";
Blockly.Msg["catLoops"] = "Loops";
Blockly.Msg["catMath"] = "Math";
Blockly.Msg["catText"] = "Text";
Blockly.Msg["catVariables"] = "Variables";
Blockly.Msg["catLists"] = "Lists";
Blockly.Msg["catDictionary"] = "Dictionary";
Blockly.Msg["catTuples"] = "Tuples";
Blockly.Msg["catSet"] = "Sets";
Blockly.Msg["catFunctions"] = "Functions";
Blockly.Msg["catOutput"] = "Output";
Blockly.Msg["catFiles"] = "File";
Blockly.Msg["catTime"] = "Time";
Blockly.Msg["catSerial"] = "Serial";

//
Blockly.Msg["ADD_COMMENT"] = "Add Comment";
Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'";
Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:";
Blockly.Msg["CLEAN_UP"] = "Clean up Blocks";
Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "Collapsed blocks contain warnings.";
Blockly.Msg["COLLAPSE_ALL"] = "Collapse Blocks";
Blockly.Msg["COLLAPSE_BLOCK"] = "Collapse Block";
Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "colour 1";
Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "colour 2";
Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp";
Blockly.Msg["COLOUR_BLEND_RATIO"] = "ratio";
Blockly.Msg["COLOUR_BLEND_TITLE"] = "blend";
Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "Blends two colours together with a given ratio (0.0 - 1.0).";
Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://en.wikipedia.org/wiki/Color";
Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "Choose a colour from the palette.";
Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com";
Blockly.Msg["COLOUR_RANDOM_TITLE"] = "random colour";
Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "Choose a colour at random.";
Blockly.Msg["COLOUR_RGB_BLUE"] = "blue";
Blockly.Msg["COLOUR_RGB_GREEN"] = "green";
Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html";
Blockly.Msg["COLOUR_RGB_RED"] = "red";
Blockly.Msg["COLOUR_RGB_TITLE"] = "colour with";
Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "break out of loop";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "continue with next iteration of loop";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "Break out of the containing loop.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "Skip the rest of this loop, and continue with the next iteration.";
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "Warning: This block may only be used within a loop.";
Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each";
Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "for each item %1 in list %2";
Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "For each item in a list, set the variable '%1' to the item, and then do some statements.";
Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with";
Blockly.Msg["CONTROLS_FOR_TITLE"] = "count with %1 from %2 to %3 by %4";
Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.";
Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "Add a condition to the if block.";
Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "Add a final, catch-all condition to the if block.";
Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse";
Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this if block.";
Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "else";
Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "else if";
Blockly.Msg["CONTROLS_IF_MSG_IF"] = "if";
Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "If a value is true, then do some statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.";
Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.";
Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://en.wikipedia.org/wiki/For_loop";
Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "do";
Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "repeat %1 times";
Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "Do some statements several times.";
Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat";
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "repeat until";
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "repeat while";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then do some statements.";
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements.";
Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?";
Blockly.Msg["DELETE_BLOCK"] = "Delete Block";
Blockly.Msg["DELETE_VARIABLE"] = "Delete the '%1' variable";
Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "Delete %1 uses of the '%2' variable?";
Blockly.Msg["DELETE_X_BLOCKS"] = "Delete %1 Blocks";
Blockly.Msg["DIALOG_CANCEL"] = "Cancel";
Blockly.Msg["DIALOG_OK"] = "OK";
Blockly.Msg["DISABLE_BLOCK"] = "Disable Block";
Blockly.Msg["DUPLICATE_BLOCK"] = "Duplicate";
Blockly.Msg["DUPLICATE_COMMENT"] = "Duplicate Comment";
Blockly.Msg["ENABLE_BLOCK"] = "Enable Block";
Blockly.Msg["EXPAND_ALL"] = "Expand Blocks";
Blockly.Msg["EXPAND_BLOCK"] = "Expand Block";
Blockly.Msg["EXTERNAL_INPUTS"] = "External Inputs";
Blockly.Msg["HELP"] = "Help";
Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "false";
Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values";
Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "Returns either true or false.";
Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "true";
Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://en.wikipedia.org/wiki/Inequality_(mathematics)";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "Return true if both inputs equal each other.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "Return true if the first input is greater than the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "Return true if the first input is greater than or equal to the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "Return true if the first input is smaller than the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "Return true if the first input is smaller than or equal to the second input.";
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "Return true if both inputs are not equal to each other.";
Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not";
Blockly.Msg["LOGIC_NEGATE_TITLE"] = "not %1";
Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "Returns true if the input is false. Returns false if the input is true.";
Blockly.Msg["LOGIC_NULL"] = "null";
Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type";
Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "Returns null.";
Blockly.Msg["LOGIC_OPERATION_AND"] = "and";
Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations";
Blockly.Msg["LOGIC_OPERATION_OR"] = "or";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "Return true if both inputs are true.";
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "Return true if at least one of the inputs is true.";
Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "test";
Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://en.wikipedia.org/wiki/%3F:";
Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "if false";
Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "if true";
Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value.";
Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+";
Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://en.wikipedia.org/wiki/Arithmetic";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "Return the sum of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "Return the quotient of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "Return the difference of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "Return the product of the two numbers.";
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "Return the first number raised to the power of the second number.";
Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://en.wikipedia.org/wiki/Atan2";
Blockly.Msg["MATH_ATAN2_TITLE"] = "atan2 of X:%1 Y:%2";
Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "Return the arctangent of point (X, Y) in degrees from -180 to 180.";
Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter";
Blockly.Msg["MATH_CHANGE_TITLE"] = "change %1 by %2";
Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "Add a number to variable '%1'.";
Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://en.wikipedia.org/wiki/Mathematical_constant";
Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).";
Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)";
Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "constrain %1 low %2 high %3";
Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "Constrain a number to be between the specified limits (inclusive).";
Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷";
Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "is divisible by";
Blockly.Msg["MATH_IS_EVEN"] = "is even";
Blockly.Msg["MATH_IS_NEGATIVE"] = "is negative";
Blockly.Msg["MATH_IS_ODD"] = "is odd";
Blockly.Msg["MATH_IS_POSITIVE"] = "is positive";
Blockly.Msg["MATH_IS_PRIME"] = "is prime";
Blockly.Msg["MATH_IS_TOOLTIP"] = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.";
Blockly.Msg["MATH_IS_WHOLE"] = "is whole";
Blockly.Msg["MATH_MODULO_HELPURL"] = "https://en.wikipedia.org/wiki/Modulo_operation";
Blockly.Msg["MATH_MODULO_TITLE"] = "remainder of %1 ÷ %2";
Blockly.Msg["MATH_MODULO_TOOLTIP"] = "Return the remainder from dividing the two numbers.";
Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×";
Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://en.wikipedia.org/wiki/Number";
Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "A number.";
Blockly.Msg["MATH_ONLIST_HELPURL"] = "";
Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "average of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "max of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "median of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "min of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "modes of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "random item of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "standard deviation of list";
Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "sum of list";
Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "Return the average (arithmetic mean) of the numeric values in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "Return the largest number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "Return the median number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "Return the smallest number in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "Return a list of the most common item(s) in the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "Return a random element from the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "Return the standard deviation of the list.";
Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "Return the sum of all the numbers in the list.";
Blockly.Msg["MATH_POWER_SYMBOL"] = "^";
Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "random fraction";
Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).";
Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "random integer from %1 to %2";
Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "Return a random integer between the two specified limits, inclusive.";
Blockly.Msg["MATH_ROUND_HELPURL"] = "https://en.wikipedia.org/wiki/Rounding";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "round";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "round down";
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "round up";
Blockly.Msg["MATH_ROUND_TOOLTIP"] = "Round a number up or down.";
Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://en.wikipedia.org/wiki/Square_root";
Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "absolute";
Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "square root";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "Return the absolute value of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "Return e to the power of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "Return the natural logarithm of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "Return the base 10 logarithm of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "Return the negation of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "Return 10 to the power of a number.";
Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "Return the square root of a number.";
Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-";
Blockly.Msg["MATH_TRIG_ACOS"] = "acos";
Blockly.Msg["MATH_TRIG_ASIN"] = "asin";
Blockly.Msg["MATH_TRIG_ATAN"] = "atan";
Blockly.Msg["MATH_TRIG_COS"] = "cos";
Blockly.Msg["MATH_TRIG_HELPURL"] = "https://en.wikipedia.org/wiki/Trigonometric_functions";
Blockly.Msg["MATH_TRIG_SIN"] = "sin";
Blockly.Msg["MATH_TRIG_TAN"] = "tan";
Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "Return the arccosine of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "Return the arcsine of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "Return the arctangent of a number.";
Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "Return the cosine of a degree (not radian).";
Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "Return the sine of a degree (not radian).";
Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "Return the tangent of a degree (not radian).";
Blockly.Msg["NEW_COLOUR_VARIABLE"] = "Create colour variable...";
Blockly.Msg["NEW_NUMBER_VARIABLE"] = "Create number variable...";
Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable...";
Blockly.Msg["NEW_VARIABLE"] = "Create variable...";
Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:";
Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:";
Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = "";
Blockly.Msg["REDO"] = "Redo";
Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment";
Blockly.Msg["RENAME_VARIABLE"] = "Rename variable...";
Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:";
Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";
Blockly.Msg["TEXT_APPEND_TITLE"] = "to %1 append text %2";
Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "Append some text to variable '%1'.";
Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "to lower case";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "to Title Case";
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "to UPPER CASE";
Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "Return a copy of the text in a different case.";
Blockly.Msg["TEXT_CHARAT_FIRST"] = "get first letter";
Blockly.Msg["TEXT_CHARAT_FROM_END"] = "get letter # from end";
Blockly.Msg["TEXT_CHARAT_FROM_START"] = "get letter #";
Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text";
Blockly.Msg["TEXT_CHARAT_LAST"] = "get last letter";
Blockly.Msg["TEXT_CHARAT_RANDOM"] = "get random letter";
Blockly.Msg["TEXT_CHARAT_TAIL"] = "";
Blockly.Msg["TEXT_CHARAT_TITLE"] = "in text %1 %2";
Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "Returns the letter at the specified position.";
Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";
Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "count %1 in %2";
Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "Count how many times some text occurs within some other text.";
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "Add an item to the text.";
Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "join";
Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "Add, remove, or reorder sections to reconfigure this text block.";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "to letter # from end";
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "to letter #";
Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "to last letter";
Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text";
Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "in text";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "get substring from first letter";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "get substring from letter # from end";
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "get substring from letter #";
Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = "";
Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "Returns a specified portion of the text.";
Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text";
Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "find first occurrence of text";
Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "find last occurrence of text";
Blockly.Msg["TEXT_INDEXOF_TITLE"] = "in text %1 %2 %3";
Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.";
Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text";
Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 is empty";
Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "Returns true if the provided text is empty.";
Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation";
Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "create text with";
Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "Create a piece of text by joining together any number of items.";
Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification";
Blockly.Msg["TEXT_LENGTH_TITLE"] = "length of %1";
Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "Returns the number of letters (including spaces) in the provided text.";
Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text";
Blockly.Msg["TEXT_PRINT_TITLE"] = "print %1";
Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "Print the specified text, number or other value.";
Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user";
Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "Prompt for user for a number.";
Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "Prompt for user for some text.";
Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "prompt for number with message";
Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "prompt for text with message";
Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";
Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "replace %1 with %2 in %3";
Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "Replace all occurances of some text within some other text.";
Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";
Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "reverse %1";
Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "Reverses the order of the characters in the text.";
Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://en.wikipedia.org/wiki/String_(computer_science)";
Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "A letter, word, or line of text.";
Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces";
Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "trim spaces from both sides of";
Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "trim spaces from left side of";
Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "trim spaces from right side of";
Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "Return a copy of the text with spaces removed from one or both ends.";
Blockly.Msg["TODAY"] = "Today";
Blockly.Msg["UNDO"] = "Undo";
Blockly.Msg["UNNAMED_KEY"] = "unnamed";
Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "item";
Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "Create 'set %1'";
Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get";
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "Returns the value of this variable.";
Blockly.Msg["VARIABLES_SET"] = "set %1 to %2";
Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "Create 'get %1'";
Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set";
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "Sets this variable to be equal to the input.";
Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "A variable named '%1' already exists.";
Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "A variable named '%1' already exists for another type: '%2'.";
Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly Workspace";
Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "Say something...";

Blockly.Msg.TEXT_IS_NUMBER_HELPURL = '';
Blockly.Msg.TEXT_IS_NUMBER_TOOLTIP = 'Judge the text %1 and return True or False';
Blockly.Msg.TEXT_IS_NUMBER_MESSAGE0 = '%1 %2';

Blockly.Msg.TEXT_IS_DIGIT = 'Is number';
Blockly.Msg.TEXT_IS_ALPHA = 'Is letter';
Blockly.Msg.TEXT_IS_ALNUM = 'Is mix of numbers and letters';

Blockly.Msg.REDO = "Redo";
Blockly.Msg.UNDO = "Undo";
Blockly.Msg.DELETE_VARIABLE = "Delete \"%1\" variable";
Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = "Delete %1 of the \"%2\" variable?";

Blockly.Msg.CONTROLS_REPEAT_FOREVER = "Repeat forever";
Blockly.Msg.CONTROLS_REPEAT_FOREVER_TOOLTIP = "Do some statements forever times";
Blockly.Msg.TEXT_LIST_START = "Create list [";
Blockly.Msg.TEXT_LIST_END = "]";
Blockly.Msg.TEXT_TUPLE_START = "Create tuple (";
Blockly.Msg.TEXT_TUPLE_END = ")";
Blockly.Msg.TEXT_DICT_START = "Create dictionary {";
Blockly.Msg.TEXT_DICT_END = "}";
Blockly.Msg.TEXT_SET_START = "Create set {";
Blockly.Msg.TEXT_SET_END = "}";
Blockly.Msg.TEXT_SET_HELPURL = "https://CocoRobox.readthedocs.io/zh_CN/latest/index.html";
Blockly.Msg.TUPLE_CREATE_EMPTY_TITLE = "Create empty tuple";
Blockly.Msg.DICT_CREATE_EMPTY_TITLE = "Create empty dictionary";
Blockly.Msg.SET_CREATE_EMPTY_TITLE = "Create empty sets";
Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TITLE_ADD = "Tuple";
Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TITLE_ADD = "Dictionary";
Blockly.Msg.SET_CREATE_WITH_CONTAINER_TITLE_ADD = "Sets";
Blockly.Msg.TUPLE_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or rearrange sections to reconfigure this tuple block.";
Blockly.Msg.DICT_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or rearrange sections to reconfigure this dictionary block.";
Blockly.Msg.TUPLE_CREATE_WITH_INPUT_WITH = "Create tuple with";
Blockly.Msg.DICT_CREATE_WITH_INPUT_WITH = "Create dictionary with";
Blockly.Msg.SET_CREATE_WITH_INPUT_WITH = "Create sets with";
Blockly.Msg.TUPLE_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the tuple.";
Blockly.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the dictionary.";
Blockly.Msg.SET_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the sets.";
Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "Ascending";
Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "Descending";
Blockly.Msg.LISTS_SORT_TITLE = "Sort %1 %2 %3";
Blockly.Msg.LISTS_SORT_TOOLTIP = "Sort a copy of a list.";
Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "By letter, ignore case";
Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "By number";
Blockly.Msg.LISTS_SORT_TYPE_TEXT = "By letter";

Blockly.Msg.labplus_mapping_MESSAGE0 = 'Map %1 from %2 , %3 to %4 , %5'
Blockly.Msg.labplus_mapping_TOOLTIP = 'Map 10 of 0~100 to 0~200 and return the mapped value'
Blockly.Msg.labplus_mapping_HELPURL = ''

Blockly.Msg.CocoRobo_OPEN = 'On';
Blockly.Msg.CocoRobo_CLOSE = 'Off';

Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_LEFT = 'Shift left';
Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_RIGHT = 'Shift right';
Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_UP = 'Shift up';
Blockly.Msg.CocoRoboBOX_RGB_IMAGE_SHIFT_DOWN = 'Shift down';

Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_GRAYSCALE = 'Grayscale';
Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_RAINBOW = 'Rainbow';
Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_NEGATE = 'Negate';
Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_HEAT_INVERT = 'Invert';

Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LINPOLAR = 'Line polar';
Blockly.Msg.CocoRobo_AI_LCD_SHOW_IMAGE_DESCARTES_LOGPOLAR = 'Log polar';

Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_GRAYSCALE = 'Grayscale';
Blockly.Msg.CocoRobo_AI_SENSOR_PATTERN_COLOR = 'Color';

Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_START = 'Start capturing image';
Blockly.Msg.CocoRobo_AI_SENSOR_ENABLE_STOP = 'Stop capturing image';

Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_H = 'Horizontal mirror';
Blockly.Msg.CocoRobo_AI_SENSOR_LEVEL_MI_V = 'Vertical flip';

Blockly.Msg.CocoRobo_AI_SENSOR_SETS_CONTRAST = 'Contrast';
Blockly.Msg.CocoRobo_AI_SENSOR_SETS_BRIGHTNESS = 'Brightness';
Blockly.Msg.CocoRobo_AI_SENSOR_SETS_SATURATION = 'Saturation';

Blockly.Msg.CocoRobo_AI2_FACE_YOLO = 'FACE YOLO';
Blockly.Msg.CocoRobo_AI2_CLASS_20_YOLO = 'CLASS 20 YOLO';

Blockly.Msg.CocoRobo_AI_TRACE_COLOR_RECTANGLE = 'Rectangle';
Blockly.Msg.CocoRobo_AI_TRACE_COLOR_CROSS = 'Cross';


/*文本- 开始 */
Blockly.Msg.TEXT_APPEND_TEXT_HELPURL = '';
Blockly.Msg.TEXT_APPEND_TEXT_TOOLTIP = 'Append text after the specified text and return the result';
Blockly.Msg.TEXT_APPEND_TEXT_MESSAGE0 = '%1 append text %2';


Blockly.Msg.CocoRobo_RETURN_TOOLTIP = 'Return a value';
Blockly.Msg.CocoRobo_RETURN_MESSAGE0 = 'Return %1';
Blockly.Msg.CocoRobo_TYPE_MESSAGE0 = 'Type %1';
Blockly.Msg.CocoRobo_TYPE_TOOLTIP = 'Returns the type of the current value';
Blockly.Msg.CocoRobo_TYPE_IS_MESSAGE0 = 'Type %1 is %2';
Blockly.Msg.CocoRobo_TYPE_IS_TOOLTIP = 'Set the type of the current value to %2 and return the result';
Blockly.Msg.CocoRobo_EVAL_HELPURL = '';
Blockly.Msg.CocoRobo_EVAL_MESSAGE0 = 'Eval %1';
Blockly.Msg.CocoRobo_EVAL_TOOLTIP = 'Simulate a string expression and return the result';

Blockly.Msg.CocoRobo_RETURN_HELPURL = '';
Blockly.Msg.CocoRobo_RETURN_MESSAGE0 = 'Return %1';
Blockly.Msg.CocoRobo_RETURN_TOOLTIP = 'Return a value';

// math
Blockly.Msg.math_degrad_rad = "Convert Degrees to Radians";
Blockly.Msg.math_degrad_deg = "Convert Radians to Degrees";
Blockly.Msg.MATH_KEEP_DECIMAL_HELPURL = '';
Blockly.Msg.MATH_KEEP_DECIMAL_TOOLTIP = 'Returns the result of the specified value keeping the decimal point';
Blockly.Msg.MATH_KEEP_DECIMAL_MESSAGE0 = '%1 keep %2 decimal places';
Blockly.Msg.labplus_mapping_MESSAGE0 = 'Map %1 from %2 , %3 to %4 , %5'
Blockly.Msg.labplus_mapping_TOOLTIP = 'Map 10 of 0~100 to 0~200 and return the mapped value'
Blockly.Msg.labplus_mapping_HELPURL = ''
Blockly.Msg.MATH_RANDOM_RANDRANGE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.MATH_RANDOM_RANDRANGE_TOOLTIP = 'Returns a random number in the specified incremental cardinality set, the base value defaults to 1';
Blockly.Msg.MATH_RANDOM_RANDRANGE_MESSAGE0 = 'Random number increments from increment interval [%1 , %2) by step %3';
Blockly.Msg.BIT_INVERSION_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.BIT_INVERSION_TOOLTIP = 'Reverse each binary bit of data';
Blockly.Msg.BIT_INVERSION_MESSAGE0 = 'Invert each binary bit of the data %1';
Blockly.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL = '';
Blockly.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0 = "Decimal int num %1 converted to %2 string";
Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP = 'Convert a decimal integer to a %2 string and return the result';
Blockly.Msg.MATH_DIVISION_CONSULT_HELPURL = "";
Blockly.Msg.MATH_DIVISION_CONSULT_TITLE = "The integer part of the quotient %1 ÷ %2";
Blockly.Msg.MATH_DIVISION_CONSULT_TOOLTIP = "Returns the integer part of the quotient of two numbers";
Blockly.Msg.MATH_CONVERT_MESSAGE0 = "%1 %2";
Blockly.Msg.MATH_NUMBER_BITS_OPS_MESSAGE0 = "%1 %2 %3";
Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL = '';
Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0 = "Thread lock object %1 requests lock";
Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP = '';

Blockly.Msg.CocoRobo_START_NEW_THREAD_HELPURL = '';
Blockly.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0 = "Thread %1";
Blockly.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP = '';
// 
// 格式化字符串 % 方式
Blockly.Msg.TEXT_FORMAT_MESSAGE0 = 'Format string %1 % %2';
Blockly.Msg.TEXT_FORMAT_TOOLTIP = 'Use "%" to format the string and return the result';
Blockly.Msg.TEXT_FORMAT_HELPURL = '';

// 格式化字符串 format 方式
Blockly.Msg.TEXT_FORMAT2_MESSAGE0 = 'Format string %1 with %2';
Blockly.Msg.TEXT_FORMAT2_TOOLTIP = 'Use "format" to format the string and return the result';
Blockly.Msg.TEXT_FORMAT2_HELPURL = '';
Blockly.Msg.CocoRobo_BAUDRATE_HELPURL = '';
Blockly.Msg.CocoRobo_BAUDRATE_MESSAGE0 = '%1';
Blockly.Msg.CocoRobo_BAUDRATE_TOOLTIP = '';

Blockly.Msg.CocoRobo_HIGH_LOW_HELPURL = '';
Blockly.Msg.CocoRobo_HIGH_LOW_MESSAGE0 = '%1';
Blockly.Msg.CocoRobo_HIGH_LOW_TOOLTIP = '';

Blockly.Msg.CocoRobo_TEN_CONVERT_TO_HELPURL = '';
Blockly.Msg.CocoRobo_TEN_CONVERT_TO_MESSAGE0 = "Decimal int num %1 converted to %2 string";
Blockly.Msg.CocoRobo_TEN_CONVERT_TO_TOOLTIP = 'Convert a decimal integer to a %2 string and return the result';

Blockly.Msg.CocoRobo_BIN = 'BIN';
Blockly.Msg.CocoRobo_OCT = 'OCT';
Blockly.Msg.CocoRobo_HEX = 'HEX';

Blockly.Msg.CocoRobo_CONVERT_TO_TEN_HELPURL = '';
Blockly.Msg.CocoRobo_CONVERT_TO_TEN_MESSAGE0 = "%1 string %2 converted to decimal int num";
Blockly.Msg.CocoRobo_CONVERT_TO_TEN_TOOLTIP = 'Convert a %2 string to a decimal integer and return the result';

Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_HELPURL = '';
Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_MESSAGE0 = "Decimal int num %2 converted to %1 bytes";
Blockly.Msg.CocoRobo_TEN_CONVERTED_TO_BYTES_TOOLTIP = 'Convert a decimal integer to %1 bytes and return the result';

Blockly.Msg.CocoRobo_INT_TO_CHR_HELPURL = '';
Blockly.Msg.CocoRobo_INT_TO_CHR_MESSAGE0 = 'Shaping number %1 converted to character in ASCII';
Blockly.Msg.CocoRobo_INT_TO_CHR_TOOLTIP = 'ASCII is a computer coding system based on the Latin alphabet, mainly used to display modern English and other Western European languages';

Blockly.Msg.CocoRobo_STR_TO_HEX_HELPURL = '';
Blockly.Msg.CocoRobo_STR_TO_HEX_MESSAGE0 = 'String %1 converted to hex bytes';
Blockly.Msg.CocoRobo_STR_TO_HEX_TOOLTIP = 'Returns two hexadecimal numbers separated by spaces in the result';

Blockly.Msg.CocoRobo_CHR_TO_INT_HELPURL = '';
Blockly.Msg.CocoRobo_CHR_TO_INT_MESSAGE0 = 'Character in ASCII %1 converted to shaping number';
Blockly.Msg.CocoRobo_CHR_TO_INT_TOOLTIP = 'ASCII is a computer coding system based on the Latin alphabet, mainly used to display modern English and other Western European languages';

Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_HELPURL = '';
Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_MESSAGE0 = 'Hex string %1 converted to bin bytes';
Blockly.Msg.CocoRobo_HEX_TO_BIN_STR_TOOLTIP = 'Convert hexadecimal string to binary byte and return the result';

Blockly.Msg.CocoRobo_DATA_TO_BASE64_HELPURL = '';
Blockly.Msg.CocoRobo_DATA_TO_BASE64_MESSAGE0 = 'Encoding data %1 in base64 and return byte object';
Blockly.Msg.CocoRobo_DATA_TO_BASE64_TOOLTIP = 'Base64 encoding is a process from binary to character';

Blockly.Msg.CocoRobo_BASE64_TO_DATA_HELPURL = '';
Blockly.Msg.CocoRobo_BASE64_TO_DATA_MESSAGE0 = 'Decoding base64 data %1 and return byte object';
Blockly.Msg.CocoRobo_BASE64_TO_DATA_TOOLTIP = 'Base64 encoding is a process from binary to character';

Blockly.Msg.CocoRobo_UJSON_DUMPS_HELPURL = '';
Blockly.Msg.CocoRobo_UJSON_DUMPS_MESSAGE0 = '%1 converted to json string';
Blockly.Msg.CocoRobo_UJSON_DUMPS_TOOLTIP = 'Key in json format must be a string, and value can be a legitimate json data type (string, number, object, array, Boolean, or none';

Blockly.Msg.CocoRobo_UJSON_LOADS_HELPURL = '';
Blockly.Msg.CocoRobo_UJSON_LOADS_MESSAGE0 = 'Parse json string %1 and return the object';
Blockly.Msg.CocoRobo_UJSON_LOADS_TOOLTIP = 'Key in json format must be a string, and value can be a legitimate json data type (string, number, object, array, Boolean, or none';

Blockly.Msg.CocoRobo_code_annotation_HELPURL = '';
Blockly.Msg.CocoRobo_code_annotation_MESSAGE0 = 'Comment # %1';
Blockly.Msg.CocoRobo_code_annotation_TOOLTIP = 'Generate code comments';

Blockly.Msg.CocoRobo_SETS_PIN_MODE_HELPURL = 'https://CocoRobo.readthedocs.io/zh/master/board/hardware.html#CocoRobopindesc';
Blockly.Msg.CocoRobo_SETS_PIN_MODE_TOOLTIP = 'Right-click help to view the pin declaration';
Blockly.Msg.CocoRobo_SETS_PIN_MODE_MESSAGE0 = 'Set pin %1 as %2 mode %3 and set the value to %4';

Blockly.Msg.CocoRobo_SET_PIN_IN = 'Input';
Blockly.Msg.CocoRobo_SET_PIN_PUSH_PULL_OUT = 'Push-pull output';
Blockly.Msg.CocoRobo_SET_PIN_LEAKY_OUT = 'Leaky output';

Blockly.Msg.CocoRobo_SET_PIN_NO_PULL = 'No pull';
Blockly.Msg.CocoRobo_SET_PIN_DOWN_PULL = 'Ppull down';
Blockly.Msg.CocoRobo_SET_PIN_UP_PULL = 'Pull up';

Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_HELPURL = '';
Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_MESSAGE0 = "Thread lock object %1 requests lock";
Blockly.Msg.CocoRobo_LOCK_OBJECT_ACQUIRE_LOCK_TOOLTIP = '';

Blockly.Msg.CocoRobo_START_NEW_THREAD_HELPURL = '';
Blockly.Msg.CocoRobo_START_NEW_THREAD_MESSAGE0 = "Thread %1";
Blockly.Msg.CocoRobo_START_NEW_THREAD_TOOLTIP = '';

// text
Blockly.Msg.text_additional_delimiter_string = "Split string to a list";
Blockly.Msg.text_additional_delimiter_deli = "by delimiter:";
Blockly.Msg.text_additional_delimiter_end = "Split and generate a list";
Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.TUPLE_CREATE_WITH_ITEMS_INSERT_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
Blockly.Msg.CocoRobo_TEXT_ESC_HELPURL = '';
Blockly.Msg.CocoRobo_TEXT_ESC_MESSAGE0 = 'Text ESC %1';
Blockly.Msg.CocoRobo_TEXT_ESC_TOOLTIP = 'Text ESC';
Blockly.Msg.TEXT_APPEND_TEXT_HELPURL = '';
Blockly.Msg.TEXT_APPEND_TEXT_TOOLTIP = 'Append text after the specified text and return the result';
Blockly.Msg.TEXT_APPEND_TEXT_MESSAGE0 = '%1 append text %2';
Blockly.Msg.TEXT_IS_NUMBER_HELPURL = '';
Blockly.Msg.TEXT_IS_NUMBER_TOOLTIP = 'Judge the text %1 and return True or False';
Blockly.Msg.TEXT_IS_NUMBER_MESSAGE0 = '%1 %2';


// 列表
Blockly.Msg.CocoRobo_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.CocoRobo_return_list_MESSAGE0 = 'Define list %1 = %2';
Blockly.Msg.CocoRobo_return_list_TOOLTIP = 'Define a list';
Blockly.Msg.CocoRobo_ORDER = '#';
Blockly.Msg.CocoRobo_REVERSE_ORDER = 'Countdown #';
Blockly.Msg.LIST_ORDER_ITEM_MESSAGE0 = 'List %1 %2 %3 item';
Blockly.Msg.LIST_ORDER_ITEM_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
Blockly.Msg.LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.CocoRobo_lists_append_MESSAGE0 = 'Add item %2 at the end of list %1';
Blockly.Msg.CocoRobo_lists_append_TOOLTIP = 'Add item to the end of the list';
Blockly.Msg.CocoRobo_lists_append_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.LIST_ITEM_EXIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.LIST_ITEM_EXIST_TOOLTIP = 'The list contains a specific string';
Blockly.Msg.LIST_ITEM_EXIST_MESSAGE0 = 'List %1 include %2';
Blockly.Msg.SET_LIST_ORDER_ITEM_MESSAGE0 = 'Set list %1 %2 %3 item as %4';
Blockly.Msg.SET_LIST_ORDER_ITEM_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
Blockly.Msg.SET_LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.INSERT_LIST_ORDER_ITEM_MESSAGE0 = 'Insert list %1 %2 %3 item as %4';
Blockly.Msg.INSERT_LIST_ORDER_ITEM_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
Blockly.Msg.INSERT_LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.LIST_ORDER_ITEM_MESSAGE0 = 'List %1 %2 %3 item';
Blockly.Msg.LIST_ORDER_ITEM_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
Blockly.Msg.LIST_ORDER_ITEM_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.PARTS_OF_LIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.PARTS_OF_LIST_TOOLTIP = 'Incremental order fetching \n Example: \n reciprocal number 5 to reciprocal number 2; \n 0th to 5th';
Blockly.Msg.PARTS_OF_LIST_MESSAGE0 = 'Return list %1 takes %2 %3 items to %4 %5 items';
Blockly.Msg.LIST_TO_TUPLE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.LIST_TO_TUPLE_TOOLTIP = 'List conversion to tuple';
Blockly.Msg.LIST_TO_TUPLE_MESSAGE0 = 'List %1 conversion to tuple';
Blockly.Msg.CocoRobo_lists_clear_MESSAGE0 = 'Clear list %1';
Blockly.Msg.CocoRobo_lists_clear_TOOLTIP = 'Clear the list';
Blockly.Msg.CocoRobo_lists_clear_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.CocoRobo_lists_extend_MESSAGE0 = 'List %1 append list %2';
Blockly.Msg.CocoRobo_lists_extend_TOOLTIP = 'Append list to list';
Blockly.Msg.CocoRobo_lists_extend_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.LIST_FIRST_INDEX_HELPURL = '';
Blockly.Msg.LIST_FIRST_INDEX_MESSAGE0 = 'Location of item%1 in list%2 %3';
Blockly.Msg.LIST_FIRST_INDEX_TOOLTIP = 'Returns the position where the specified string appears in the list %3';
Blockly.Msg.FIRST = 'First';
Blockly.Msg.LAST = 'Last';

// 字典
Blockly.Msg.DICT_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the dictionary.";
Blockly.Msg.DICT_KEY_VALUE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.DICT_KEY_VALUE_TOOLTIP = 'Returns the value of the specified key of the dictionary';
Blockly.Msg.DICT_KEY_VALUE_MESSAGE0 = 'Value of the key %2 in dictionary %1';

Blockly.Msg.ADD_DICT_KEY_VALUE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.ADD_DICT_KEY_VALUE_TOOLTIP = 'Update the key if the key already exists';
Blockly.Msg.ADD_DICT_KEY_VALUE_MESSAGE0 = 'Add key %2 & value %3 to dictionary %1';

Blockly.Msg.DICT_LENGTH_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.DICT_LENGTH_TOOLTIP = 'Returns the length of the dictionary';
Blockly.Msg.DICT_LENGTH_MESSAGE0 = 'Length of dictionary %1';

Blockly.Msg.DICT_KEY_EXIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.DICT_KEY_EXIST_TOOLTIP = 'Determine whether the dictionary contains the specified key, and return True or False';
Blockly.Msg.DICT_KEY_EXIST_MESSAGE0 = 'Dictionary %1 include key %2';

Blockly.Msg.DICT_KEY_OR_VAL_LIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.DICT_KEY_OR_VAL_LIST_TOOLTIP = 'Return list of %2 in dictionary';
Blockly.Msg.DICT_KEY_OR_VAL_LIST_MESSAGE0 = 'List of %2 in dictionary %1';
Blockly.Msg.DICT_KEYS = 'KEY';
Blockly.Msg.DICT_VALUES = 'VALUE';
Blockly.Msg.DICT_CREATE_WITH_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.DICT_CREATE_WITH_TOOLTIP = 'Define a dictionary';
Blockly.Msg.DICT_CREATE_WITH_MESSAGE0 = 'Define dictionary %1 = %2';


// 元组
Blockly.Msg.tuple_create_with_MESSAGE0 = 'Define tuple %1 = %2 ';
Blockly.Msg.tuple_create_with_TOOLTIP = 'When you only have one element, you need to add a comma after the element';
Blockly.Msg.tuple_create_with_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';

Blockly.Msg.tuple_order_item_MESSAGE0 = 'Tuple %1 %2 %3 item';
Blockly.Msg.tuple_order_item_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
Blockly.Msg.tuple_order_item_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.CocoRobo_MIN = 'Min value';
Blockly.Msg.CocoRobo_MAX = 'Max value';
Blockly.Msg.CocoRobo_LENTH = 'length';
Blockly.Msg.TUPLE_MIN_MAX_LEN_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.TUPLE_MIN_MAX_LEN_TOOLTIP = 'Return %2 of tuple';
Blockly.Msg.TUPLE_MIN_MAX_LEN_MESSAGE0 = 'Tuple %1 %2';

Blockly.Msg.TUPLE_ITEM_EXIST_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.TUPLE_ITEM_EXIST_TOOLTIP = 'Determine whether the specified value is included, and return True or False';
Blockly.Msg.TUPLE_ITEM_EXIST_MESSAGE0 = 'Tuple %1 include %2';
Blockly.Msg.PARTS_OF_TUPLE_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.PARTS_OF_TUPLE_TOOLTIP = 'The sequence count starts from 0, and the reverse count starts from 1.';
Blockly.Msg.PARTS_OF_TUPLE_MESSAGE0 = 'Return tuple %1 from the %2 to the last item';

Blockly.Msg.PARTS_OF_TUPLE2_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.PARTS_OF_TUPLE2_TOOLTIP = 'Incremental order fetching \n Example: \n reciprocal number 5 to reciprocal number 2; \n 0th to 5th';
Blockly.Msg.PARTS_OF_TUPLE2_MESSAGE0 = 'Return tuple %1 takes %2 %3 items to %4 %5 items';

// sets

Blockly.Msg.SET_CREATE_WITH_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.SET_CREATE_WITH_TOOLTIP = 'Define collection';
Blockly.Msg.SET_CREATE_WITH_MESSAGE0 = 'Define set %1 = %2';

Blockly.Msg.SET_UPDATE_WITH_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.SET_UPDATE_WITH_TOOLTIP = 'Add parameters as strings, lists, tuples, sets, dictionaries (add only key). For existing elements, do not do anything';
Blockly.Msg.SET_UPDATE_WITH_MESSAGE0 = 'Update set %1 with %2';

Blockly.Msg.INTERSECTION_OF_SETS_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.INTERSECTION_OF_SETS_TOOLTIP = 'Return %1 of both collection';
Blockly.Msg.INTERSECTION_OF_SETS_MESSAGE0 = '%1 of set %2 and set %3';
Blockly.Msg.CocoRobo_INTERSECTION = 'Intersection';
Blockly.Msg.CocoRobo_UNION = 'Union';
Blockly.Msg.CocoRobo_DIFFERENCE = 'Difference';
Blockly.Msg.SETS_UPDATE_WAYS_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.SETS_UPDATE_WAYS_TOOLTIP = 'The collection is updated to the %3 of the specified collection';
Blockly.Msg.SETS_UPDATE_WAYS_MESSAGE0 = 'Update set %1  as the %3 with set %2';
Blockly.Msg.SUBSET_SUPERSET_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.SUBSET_SUPERSET_TOOLTIP = 'Collection is %3 of collection';
Blockly.Msg.SUBSET_SUPERSET_MESSAGE0 = 'Set %1 is %3 of set %2';
Blockly.Msg.CocoRobo_SUBSET = 'Subset';
Blockly.Msg.CocoRobo_SUPERSET = 'Superset';

Blockly.Msg.GET_SETS_POP_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.GET_SETS_POP_TOOLTIP = 'Return the collection with random items removed';
Blockly.Msg.GET_SETS_POP_MESSAGE0 = 'Return a random item from the set %1, and remove it';

Blockly.Msg.LEN_OF_SETS_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.LEN_OF_SETS_TOOLTIP = 'Returns the length of the specified collection';
Blockly.Msg.LEN_OF_SETS_MESSAGE0 = 'Length of set %1';

Blockly.Msg.CREATE_EMPTY_SET_HELPURL = 'https://CocoRobox.readthedocs.io/zh_CN/latest/CocoRoboX.html';
Blockly.Msg.CREATE_EMPTY_SET_TOOLTIP = '';
Blockly.Msg.CREATE_EMPTY_SET_MESSAGE0 = 'Create empty sets %1';

// 输入输出

Blockly.Msg.io_high = "HIGH";
Blockly.Msg.io_low = "LOW";
Blockly.Msg.digital_set = "Set GPIO #";
Blockly.Msg.digital_set_as = "to";
Blockly.Msg.digital_get = "Get GPIO #";
Blockly.Msg.digital_get_value = "Digital Read";
Blockly.Msg.digital_set_title = "Setting specific pins for specific levels";
Blockly.Msg.digital_get_value_title = "Returns the digital signal value of a specific pin";

Blockly.Msg.time_iot_module = "IoT Module ";
Blockly.Msg.time_ai_module = "A.I. Module";
Blockly.Msg.analog_get_moudule = "Module Get Pin #";
Blockly.Msg.analog_get_value = "Analog Value (PWM)";
Blockly.Msg.set_pin = "(range:0 ~ 1023)";
Blockly.Msg.Esp32_Main_Controller_Io_From_Analog_Pin_TOOLTIP = "The module obtains the analog signal value of a specific pin";

Blockly.Msg.time_init_timer = "Initialize Timer";
Blockly.Msg.time_timer_get_time = "Get time elapsed from Timer (ms)";
Blockly.Msg.time_timer_clear = "Clear Timer";
Blockly.Msg.time_timer_periodically = "Enable Periodical Timer";
Blockly.Msg.time_timer_every = "Every";
Blockly.Msg.time_timer_ms = "Millisecond(s)";
Blockly.Msg.time_execution = "Do";
Blockly.Msg.time_timer_periodically_clear = "Clear Periodical Timer";

Blockly.Msg.time_get_current_date_title = "Get Current Time:";
Blockly.Msg.time_get_current_date_y = "Year";
Blockly.Msg.time_get_current_date_m = "Month";
Blockly.Msg.time_get_current_date_d = "Day";
Blockly.Msg.time_get_current_date_hour = "Hour";
Blockly.Msg.time_get_current_date_min = "Minute";
Blockly.Msg.time_get_current_date_sec = "Second";


/*
  ____            _       _    ____                            
 / ___|  ___ _ __(_) __ _| |  / ___|___  _ __ ___  _ __ ___    
 \___ \ / _ \ '__| |/ _` | | | |   / _ \| '_ ` _ \| '_ ` _ \   
  ___) |  __/ |  | | (_| | | | |__| (_) | | | | | | | | | | |_ 
 |____/ \___|_|  |_|\__,_|_|  \____\___/|_| |_| |_|_| |_| |_(_)

*/

Blockly.Msg.serialcomm_print = "Serial print";
Blockly.Msg.serialcomm_write_title_text = "Send Data to other devices through the serial port";
Blockly.Msg.serialcomm_read_setup_title_text = "Obtain data through the serial port";
Blockly.Msg.serialcomm_read_setup_title_text_1 = " to initialize";
Blockly.Msg.serial_read_data = "From ";
Blockly.Msg.Serial_Read_Data_all = "Get the data of the serial port and save it to";
Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_GET_TEXT = "Get Serial (UART) Data at ";
Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_TEXT = "as Type";
Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_FLOAT = "Float";
Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_INTEGER = "Number";
Blockly.Msg.ARD_SERIAL_RECEIVE_DATASET_TYPE_STRING = "String";
Blockly.Msg.serialcomm_write_item_first = "Data ";
Blockly.Msg.serialcomm_write_item_last = "";
Blockly.Msg.serialcomm_write_item = "Item";
Blockly.Msg.serialcomm_write_data = "Data";
Blockly.Msg.serialcomm_write_data_bps_title = "Set Baud Rate:";
Blockly.Msg.serialcomm_write_data_bps_attrib = "bps";
Blockly.Msg.serialcomm_write_on = "On";
Blockly.Msg.serialcomm_write_on_ai = "AI Module ";
Blockly.Msg.serialcomm_write_on_iot = "IoT Module ";
Blockly.Msg.serialcomm_write_on_iot_lite = "IoT Lite Module ";
Blockly.Msg.serial_send_data_on = "On";
Blockly.Msg.serial_send_data_on_send_data = "Module Send Data to Microbit"
Blockly.Msg.serial_new_send_data = "Serial port writing text";
Blockly.Msg.serial_new_send_data_1 = "Nowrap";
Blockly.Msg.serial_new_send_data_2 = "Wrap";
Blockly.Msg.serial_new_send_data_3 = "Serial port writing single byte";
Blockly.Msg.serial_new_send_data_4 = "Serial port write byte list";
Blockly.Msg.serial_new_get_data_1 = "Serial port has readable data";
Blockly.Msg.serial_new_get_data_2 = "Serial port reads a row of data";
Blockly.Msg.serial_new_get_data_3 = "Serial port reading data";
Blockly.Msg.serial_new_get_data_4 = "The length of data read by serial port is";
Blockly.Msg.serial_close = "Close the serial port";
Blockly.Msg.serial_clear_data = "Clear the serial port data";

// 文件
Blockly.Msg.SYSTEM = "Restart System";
Blockly.Msg.SYSTEM_GC = "Start memory reclaim";
Blockly.Msg.SYSTEM_RUN = "Execute Python Code:";
Blockly.Msg.SYSTEM_RUN_F = "Filename:";
Blockly.Msg.SYSTEM_CREATE = "Create Text file";
Blockly.Msg.SYSTEM_CREATE_FILE = "Create file";
Blockly.Msg.SYSTEM_CREATE_F = "Filename:";
Blockly.Msg.SYSTEM_CREATE_F_1 = "File Path:";
Blockly.Msg.SYSTEM_WRITE = "Create Text file";
Blockly.Msg.SYSTEM_OPEN_FILE = "Open file";
Blockly.Msg.SYSTEM_WRITE_FILE = "Write file";
Blockly.Msg.SYSTEM_CLOSE_FILE = "Close file";
Blockly.Msg.SYSTEM_WRITE_F = "Filename:";
Blockly.Msg.SYSTEM_WRITE_W = "Write content:";
Blockly.Msg.SYSTEM_WRITE_S = "The separator is:";
Blockly.Msg.SYSTEM_WRITE_S_N = "newline";
Blockly.Msg.SYSTEM_WRITE_S_C = "comma";
Blockly.Msg.SYSTEM_WRITE_S_S = "space";
Blockly.Msg.SYSTEM_WRITE_S_SE = "semicolon";
Blockly.Msg.SYSTEM_INPUT = "Read Text File as List";
Blockly.Msg.SYSTEM_INPUT_FILE = "Read File as List";





export default Blockly.Msg;
