diff --git a/pd/nw/locales/de/translation.json b/pd/nw/locales/de/translation.json
index 28cf2507fb0428820d6798961a9edc98d61f2fa3..e8ea50b449ef3ea5e46a003a298305d63623501a 100644
--- a/pd/nw/locales/de/translation.json
+++ b/pd/nw/locales/de/translation.json
@@ -1,5 +1,4 @@
 {
-  "hello": "world",
   "iem": {
     "prop": {
       "heading": {
@@ -145,6 +144,8 @@
     "reselect_tt": "Stellt die vorhergehende Selektion wieder her",
     "find": "Finde",
     "find_tt": "Finde Text in Konsole-Ausgabe",
+    "encapsulate": "Zusammenfassen",
+    "encapsulate_tt": "Fasse die aktuelle Auswahl automatisch in einem Subpatch zusammen",
     "tidyup": "Aufräumen",
     "tidyup_tt": "Richte die selektierten Objekte in geraden Zeilen und Spalten aus",
     "clear_console": "Konsole löschen",
@@ -271,7 +272,8 @@
   },
   "pd_window": {
     "find": {
-      "placeholder": "Suche in der Konsole"
+      "placeholder": "Suche in der Konsole",
+      "highlight": "Alle hervorheben"
     }
   },
   "canvas": {
@@ -285,6 +287,16 @@
       "cancel": "Abbrechen",
       "cancel_tt": "Kein Speichern der Änderungen und kein Schließen des Patches"
     },
+    "abstract_dialog": {
+      "prompt": "Möchten Sie identische Subpatches in Abstraktionen ändern?\nKandidaten in der Subpatch-Hierarchie, ausgehend vom Stammpatch: ",
+      "note": "Hinweis: diese Änderungen können nicht auf einmal rückgängig gemacht werden – Änderungen in einem Subpatch können in diesem Subpatch rückgängig gemacht werden",
+      "single": "Nur dieser Subpatch",
+      "single_tt": "Ersetze den gerade gespeicherten Subpatch mit der entsprechenden Abstraktion",
+      "all": "Alle Kandidaten",
+      "all_tt": "Ersetze alle Subpatches in der Subpatch-Hierarchie, die mit dem gerade gespeicherten Subpatch identisch sind",
+      "none": "Keinen",
+      "none_tt": "Ersetze keinen der Subpatches"
+    },
     "find": {
       "placeholder": "Suche im Patch",
       "search": "Suche",
@@ -294,6 +306,7 @@
     "menu": {
       "props": "Einstellungen",
       "open": "Öffnen",
+      "saveas": "Speichern unter",
       "help": "Hilfe",
       "front": "Nach vorne",
       "back": "Nach hinten"
@@ -308,6 +321,8 @@
       },
       "no_scroll": "Rollbalken verbergen (experimentell)",
       "no_scroll_tt": "Rollbalken verbergen (experimentell)",
+      "no_menu": "Fenstermenü verbergen (experimentell)",
+      "no_menu_tt": "Fenstermenü verbergen (experimentell)",
       "gop": "Anzeige im übergeordneten Patch",
       "gop_tt": "Zeige den Inhalt dieses Patches in einem Rechteck im übergeordneten Patch",
       "hide_name": "Namen und Argumente verbergen",
diff --git a/pd/nw/locales/fr/translation.json b/pd/nw/locales/fr/translation.json
index 05bdfaf7726ec4f2375ee045eb7ed19cbae41771..404829d33cd61efd86104f532cea9a4018fc4486 100644
--- a/pd/nw/locales/fr/translation.json
+++ b/pd/nw/locales/fr/translation.json
@@ -1,5 +1,4 @@
 {
-  "hello": "world",
   "iem": {
     "prop": {
       "heading": {
@@ -145,6 +144,8 @@
     "reselect_tt": "Rétablir la sélection précédente",
     "find":    "Rechercher",
     "find_tt": "Rechercher un texte dans la sortie de la console",
+    "encapsulate": "Encapsulate",
+    "encapsulate_tt": "Encapsulate automatically the current selection into a subpatch",
     "tidyup":    "Arranger",
     "tidyup_tt": "Aligner la sélection d'objets en lignes et colonnes strictes",
     "clear_console":    "Effacer la Console",
@@ -271,7 +272,8 @@
   },
   "pd_window": {
     "find": {
-      "placeholder": "Chercher dans la Console"
+      "placeholder": "Chercher dans la Console",
+      "highlight": "Highlight All"
     }
   },
   "canvas": {
@@ -285,6 +287,16 @@
       "cancel":    "Annuler",
       "cancel_tt": "N'enregistrer aucune modification et ne pas fermer le patch"
     },
+    "abstract_dialog": {
+      "prompt": "Would you like to turn the identical subpatches into abstractions?\nCandidates found in the subpatch tree, from root canvas: ",
+      "note": "Note: this can't be undone all at once – any changes made in subpatches can be undone from that subpatch",
+      "single": "Only this one",
+      "single_tt": "Replace the subpatch you just saved with the corresponding abstraction",
+      "all": "All candidates",
+      "all_tt": "Replace all subpatches in the subpatch tree identical to the one you just saved with the corresponding abstraction",
+      "none": "None",
+      "none_tt": "Do not replace any subpatch"
+    },
     "find": {
       "placeholder": "Chercher dans le Canevas",
       "search":    "Chercher",
@@ -294,6 +306,7 @@
     "menu": {
       "props": "Propriétés",
       "open":  "Ouvrir",
+      "saveas": "Sauvegarder comme",
       "help":  "Aide",
       "front": "Envoyer au Premier plan",
       "back":  "Envoyer à l'Arrière plan"