diff --git a/pd/nw/locales/de/translation.json b/pd/nw/locales/de/translation.json
index a7108e59f5695d09bee73d539d786f7d561c7f93..3bb0fc23306f18456942b9cb4ab1e48131ed0983 100644
--- a/pd/nw/locales/de/translation.json
+++ b/pd/nw/locales/de/translation.json
@@ -262,6 +262,7 @@
   "canvas": {
     "paste_clipboard_prompt": "Warnung: Sie sind dabei, Pd-Code einzufügen, der außerhalb von Pd erstellt wurde. Möchten Sie fortfahren?",
     "save_dialog": {
+      "prompt": "Speichern der Änderungen in",
       "yes": "Ja",
       "yes_tt": "Speichern der Änderungen in einer Datei vor dem Schließen des Patches",
       "no": "Nein",
@@ -270,7 +271,10 @@
       "cancel_tt": "Kein Speichern der Änderungen und kein Schließen des Patches"
     },
     "find": {
-      "placeholder": "Suche im Patch"
+      "placeholder": "Suche im Patch",
+      "search": "Suche",
+      "search_tt": "Das nächste Vorkommen suchen",
+      "whole_word": "Ganze Wörter"
     },
     "menu": {
       "props": "Einstellungen",
diff --git a/pd/nw/locales/en/translation.json b/pd/nw/locales/en/translation.json
index 85024b356f00d0a53c01b5d4f375a8087b16facf..70c0a9ad321f6acd3218de2ac147581ba51c29b0 100644
--- a/pd/nw/locales/en/translation.json
+++ b/pd/nw/locales/en/translation.json
@@ -262,6 +262,7 @@
   "canvas": {
     "paste_clipboard_prompt": "Warning: you are about to paste Pd code that came from somewhere outside of Pd. Do you want to continue?",
     "save_dialog": {
+      "prompt": "Do you want to save the changes you made in",
       "yes": "Yes",
       "yes_tt": "Write the changes to file before closing the patch",
       "no": "No",
@@ -270,7 +271,10 @@
       "cancel_tt": "Don't save any changes, and don't close the patch"
     },
     "find": {
-      "placeholder": "Search in Canvas"
+      "placeholder": "Search in Canvas",
+      "search": "Search",
+      "search_tt": "Find next occurrence",
+      "whole_word": "Match Whole Word"
     },
     "menu": {
       "props": "Properties",
diff --git a/pd/nw/pd_canvas.html b/pd/nw/pd_canvas.html
index f825ee72349e8a7b74465bd53ecdbdf3c9b8b1e9..a960a8498d4270e4310080eaca00c5b24ab27753 100644
--- a/pd/nw/pd_canvas.html
+++ b/pd/nw/pd_canvas.html
@@ -31,19 +31,20 @@
                     defaultValue="Search in Canvas"
                     style="width:10em"/>
       </label>
-      <label>Match Whole Word
+      <label><span data-i18n="canvas.find.whole_word"></span>
         <input type="checkbox"
                id="canvas_find_whole_word"
                name="canvas_find_whole_word"
                onchange="canvas_find_whole_word(this);"/> 
       </label>
-      <input type="button"
-             id="canvas_find_button"
-             name="canvas_find_button"
-             value="Search"/>
+      <button type="button"
+              id="canvas_find_button"
+              data-i18n="[title]canvas.find.search_tt">
+        <span data-i18n="canvas.find.search"></span>
+      </button>
     </div>
     <dialog id="save_before_quit">
-      <h4>Do you want to save the changes you made in
+      <h4><span data-i18n="canvas.save_dialog.prompt"></span>
         <span id="save_before_quit_filename"></span>?
       </h4>
       <div class="submit_buttons">
diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js
index 76b8cb67009eda9af69d6e8cb572fdcc53f0b5bd..8b9ef22077b89cb010cf9830783163290500e7f7 100644
--- a/pd/nw/pd_canvas.js
+++ b/pd/nw/pd_canvas.js
@@ -148,6 +148,10 @@ function canvas_find_focus() {
     canvas_events.search();
 }
 
+function canvas_find_reset() {
+    canvas_events.find_reset();
+}
+
 var canvas_events = (function() {
     var name,
         state,
@@ -728,6 +732,9 @@ var canvas_events = (function() {
         match_words: function(state) {
             match_words_state = state;
         },
+        find_reset: function() {
+            last_search_term = "";
+        },
         add_scalar_draggable: function(cid, tag, scalar_sym, drawcommand_sym,
             event_name) {
             scalar_draggables[tag] = {
@@ -1180,6 +1187,9 @@ function nw_create_patch_window_menus(gui, w, name) {
                 // canvas atm.  But if there are other states added later,
                 // we might need to fetch the previous state here.
                 canvas_events.normal();
+                // this resets the last search term so that the next search
+                // starts from the beginning again
+                canvas_events.find_reset();
             }
         }
     });