diff --git a/HISTORY.md b/HISTORY.md
index 1247772d..db924944 100755
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -4,10 +4,14 @@
* **New Features:**
* **Notable Changes:**
* **Notable Fixes:**
+ * fixed submenu translation control for dropdowns
* **Translation Updates:**
+ * Catalan, thanks, Joan
### 2019-11-12
* new dev version
+* drop-down menu translation improvements by Joan
+* submenu-title translation control
## v5.3.2:
* **Notable Fixes:**
@@ -26,6 +30,7 @@
* blocks: fixed dropdown menu generation for untranslated items
* blocks: don't translate message names in drow-down menus
* blocks: don't translate names in dropdowns
+* byob: don't translate items in dropdowns
* help: fixed size of MY help screen, thanks, Brian
* prepared release
diff --git a/snap.html b/snap.html
index 73ad50a4..1e71f8b4 100755
--- a/snap.html
+++ b/snap.html
@@ -4,15 +4,15 @@
Snap! Build Your Own Blocks 5.3.3 - dev -
-
+
-
+
-
+
-
+
@@ -20,7 +20,7 @@
-
+
diff --git a/src/blocks.js b/src/blocks.js
index fed1d17e..b66b426b 100644
--- a/src/blocks.js
+++ b/src/blocks.js
@@ -148,7 +148,7 @@ CustomCommandBlockMorph, SymbolMorph, ToggleButtonMorph, DialMorph*/
// Global stuff ////////////////////////////////////////////////////////
-modules.blocks = '2019-November-06';
+modules.blocks = '2019-November-12';
var SyntaxElementMorph;
var BlockMorph;
@@ -618,7 +618,7 @@ SyntaxElementMorph.prototype.getVarNamesDict = function () {
if (block.selector === 'doSetVar') {
// add settable object attributes
dict['~'] = null;
- dict.my = {
+ dict.my = [{// wrap the submenu into a 1-item array to translate it
'anchor' : ['anchor'],
'parent' : ['parent'],
'name' : ['name'],
@@ -628,10 +628,10 @@ SyntaxElementMorph.prototype.getVarNamesDict = function () {
'rotation style' : ['rotation style'],
'rotation x' : ['rotation x'],
'rotation y' : ['rotation y']
- };
+ }];
if (this.world().currentKey === 16) { // shift
- dict.my['~'] = null;
- dict.my['microphone modifier'] = ['microphone modifier'];
+ dict.my[0]['~'] = null; // don't forget we're inside an array...
+ dict.my[0]['microphone modifier'] = ['microphone modifier'];
}
}
return dict;
@@ -8747,7 +8747,16 @@ InputSlotMorph.prototype.menuFromDict = function (
key,
this.menuFromDict(choices[key],true),
null, // indicator
- true // verbatim?
+ true // verbatim? - don't translate
+ );
+ } else if (choices[key] instanceof Array &&
+ choices[key][0] instanceof Object &&
+ typeof choices[key][0] !== 'function') {
+ menu.addMenu(
+ key,
+ this.menuFromDict(choices[key][0],true),
+ null, // indicator
+ false // verbatim? - do translate, if inside an array
);
} else {
menu.addItem(
@@ -8759,7 +8768,8 @@ InputSlotMorph.prototype.menuFromDict = function (
null, // italic
null, // doubleClickAction
null, // shortcut
- choices[key].length === 1 || typeof choices[key] === 'function' ? false : true // verbatim?
+ !(choices[key] instanceof Array) &&
+ typeof choices[key] !== 'function' // verbatim?
);
}
}
diff --git a/src/byob.js b/src/byob.js
index 901f226c..07e050d0 100644
--- a/src/byob.js
+++ b/src/byob.js
@@ -108,7 +108,7 @@ BooleanSlotMorph, XML_Serializer, SnapTranslator*/
// Global stuff ////////////////////////////////////////////////////////
-modules.byob = '2019-July-24';
+modules.byob = '2019-November-12';
// Declarations
diff --git a/src/locale.js b/src/locale.js
index b8e7029b..3000d8de 100644
--- a/src/locale.js
+++ b/src/locale.js
@@ -42,7 +42,7 @@
/*global modules, contains*/
-modules.locale = '2019-November-06';
+modules.locale = '2019-November-12';
// Global stuff
diff --git a/src/morphic.js b/src/morphic.js
index 1f1bef94..801ee701 100644
--- a/src/morphic.js
+++ b/src/morphic.js
@@ -1178,7 +1178,7 @@
/*global window, HTMLCanvasElement, FileReader, Audio, FileList, Map*/
-var morphicVersion = '2019-November-06';
+var morphicVersion = '2019-November-12';
var modules = {}; // keep track of additional loaded modules
var useBlurredShadows = getBlurredShadowSupport(); // check for Chrome-bug
@@ -8218,11 +8218,33 @@ MenuMorph.prototype.addItem = function (
};
MenuMorph.prototype.addMenu = function (label, aMenu, indicator, verbatim) {
- this.addPair(label, aMenu, isNil(indicator) ? '\u25ba' : indicator, null, verbatim);
+ this.addPair(
+ label,
+ aMenu,
+ isNil(indicator) ? '\u25ba' : indicator,
+ null,
+ verbatim // don't translate
+ );
};
-MenuMorph.prototype.addPair = function (label, action, shortcut, hint, verbatim) {
- this.addItem(label, action, hint, null, null, null, null, shortcut, verbatim);
+MenuMorph.prototype.addPair = function (
+ label,
+ action,
+ shortcut,
+ hint,
+ verbatim // don't translate
+) {
+ this.addItem(
+ label,
+ action,
+ hint,
+ null,
+ null,
+ null,
+ null,
+ shortcut,
+ verbatim
+ );
};
MenuMorph.prototype.addLine = function (width) {
diff --git a/src/objects.js b/src/objects.js
index 49148d1b..9bb53dab 100644
--- a/src/objects.js
+++ b/src/objects.js
@@ -84,7 +84,7 @@ BlockEditorMorph, BlockDialogMorph, PrototypeHatBlockMorph, BooleanSlotMorph,
localize, TableMorph, TableFrameMorph, normalizeCanvas, VectorPaintEditorMorph,
HandleMorph, AlignmentMorph, Process, XML_Element, WorldMap, copyCanvas*/
-modules.objects = '2019-November-06';
+modules.objects = '2019-November-12';
var SpriteMorph;
var StageMorph;