diff --git a/app/helpers/emails_helper.rb b/app/helpers/emails_helper.rb
index d0d66f32e09330be8c41549c12545c24bdb3a5d8..c69b984c85dc9c8e1f477786f72f7204c8072fd0 100644
--- a/app/helpers/emails_helper.rb
+++ b/app/helpers/emails_helper.rb
@@ -101,10 +101,10 @@ def closure_reason_text(closed_via, format:, name:)
       case format
       when :html
         merge_request_link = link_to(merge_request.to_reference, merge_request.web_url)
-        safe_format(_("Issue was closed by %{name} via merge request %{link}"), name: name, link: merge_request_link)
+        safe_format(_("Issue was closed by %{name} with merge request %{link}"), name: name, link: merge_request_link)
       else
         # If it's not HTML nor text then assume it's text to be safe
-        _("Issue was closed by %{name} via merge request %{link}") % { name: name, link: "#{merge_request.to_reference} (#{merge_request.web_url})" }
+        _("Issue was closed by %{name} with merge request %{link}") % { name: name, link: "#{merge_request.to_reference} (#{merge_request.web_url})" }
       end
     when String
       # Technically speaking this should be Commit but per
@@ -112,7 +112,7 @@ def closure_reason_text(closed_via, format:, name:)
       # we can't deserialize Commit without custom serializer for ActiveJob
       return "" unless Ability.allowed?(@recipient, :download_code, @project)
 
-      _("Issue was closed by %{name} via %{closed_via}") % { name: name, closed_via: closed_via }
+      _("Issue was closed by %{name} with %{closed_via}") % { name: name, closed_via: closed_via }
     else
       if name
         _("Issue was closed by %{name}") % { name: name }
diff --git a/app/models/state_note.rb b/app/models/state_note.rb
index b203f446b82304d28a6f2d4970c8fb7b8c931fba..c14a7212fed9a236d66f582423cbc34f0f403102 100644
--- a/app/models/state_note.rb
+++ b/app/models/state_note.rb
@@ -31,7 +31,7 @@ def note_text(html: false)
     return "merged manually" if event.state == 'merged' && event_source.is_a?(Commit)
 
     body = event.state.dup
-    body << " via #{event_source.gfm_reference(project)}" if event_source
+    body << " with #{event_source.gfm_reference(project)}" if event_source
     body
   end
 
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 8adeaf222b9cbe465b78ae97df7334eb049ac785..627e464ffcce688f023fe3016c3a7b81023ea533 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -28497,10 +28497,10 @@ msgstr ""
 msgid "Issue was closed by %{name}"
 msgstr ""
 
-msgid "Issue was closed by %{name} via %{closed_via}"
+msgid "Issue was closed by %{name} with %{closed_via}"
 msgstr ""
 
-msgid "Issue was closed by %{name} via merge request %{link}"
+msgid "Issue was closed by %{name} with merge request %{link}"
 msgstr ""
 
 msgid "Issue weight"
diff --git a/spec/features/issues/notes_on_issues_spec.rb b/spec/features/issues/notes_on_issues_spec.rb
index 8d6262efa5337a1b852a5b382e13b413ca6e80ba..00ad3c89c86c8fd523fae9b199033d846a92ffb7 100644
--- a/spec/features/issues/notes_on_issues_spec.rb
+++ b/spec/features/issues/notes_on_issues_spec.rb
@@ -108,7 +108,7 @@ def submit_comment(text)
       it 'does not show the user the reference' do
         visit project_issue_path(project, issue)
 
-        expect(page).not_to have_content('closed via')
+        expect(page).not_to have_content('closed with')
       end
     end
 
@@ -121,7 +121,7 @@ def submit_comment(text)
         visit project_issue_path(project, issue)
 
         page.within('div#notes li.note .system-note-message') do
-          expect(page).to have_content('closed via')
+          expect(page).to have_content('closed with')
           expect(page.find('a')).to have_content(reference_content)
         end
       end
diff --git a/spec/helpers/emails_helper_spec.rb b/spec/helpers/emails_helper_spec.rb
index 28377aa5cbb2c267c9755c555f2a2d6906aad892..510620a85344d41ba1a4ac20cb97b1ee40087709 100644
--- a/spec/helpers/emails_helper_spec.rb
+++ b/spec/helpers/emails_helper_spec.rb
@@ -21,19 +21,19 @@
 
         context "and format is text" do
           it "returns plain text" do
-            expect(helper.closure_reason_text(merge_request, format: :text, name: user.name)).to include("via merge request #{merge_request.to_reference} (#{merge_request_presenter.web_url})")
+            expect(helper.closure_reason_text(merge_request, format: :text, name: user.name)).to include("with merge request #{merge_request.to_reference} (#{merge_request_presenter.web_url})")
           end
         end
 
         context "and format is HTML" do
           it "returns HTML" do
-            expect(helper.closure_reason_text(merge_request, format: :html, name: user.name)).to include("via merge request #{link_to(merge_request.to_reference, merge_request_presenter.web_url)}")
+            expect(helper.closure_reason_text(merge_request, format: :html, name: user.name)).to include("with merge request #{link_to(merge_request.to_reference, merge_request_presenter.web_url)}")
           end
         end
 
         context "and format is unknown" do
           it "returns plain text" do
-            expect(helper.closure_reason_text(merge_request, format: 'unknown', name: user.name)).to include("via merge request #{merge_request.to_reference} (#{merge_request_presenter.web_url})")
+            expect(helper.closure_reason_text(merge_request, format: 'unknown', name: user.name)).to include("with merge request #{merge_request.to_reference} (#{merge_request_presenter.web_url})")
           end
         end
       end
@@ -58,7 +58,7 @@
         end
 
         it "returns plain text" do
-          expect(closure_reason_text(closed_via, format: nil, name: nil)).to include("via #{closed_via}")
+          expect(closure_reason_text(closed_via, format: nil, name: nil)).to include("with #{closed_via}")
         end
       end
 
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index 0f87349618ad1433465fcf1f9de31200b5c88869..c948a3a1868e4261aa29e1781e4f921b752ebba4 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -361,8 +361,8 @@
           it 'has the correct subject and body' do
             aggregate_failures do
               is_expected.to have_referable_subject(issue, reply: true)
-              is_expected.to have_body_text("Issue was closed by #{current_user_sanitized} via #{closing_commit.id}")
-              is_expected.to have_plain_text_content("Issue was closed by #{current_user_sanitized} via #{closing_commit.id}")
+              is_expected.to have_body_text("Issue was closed by #{current_user_sanitized} with #{closing_commit.id}")
+              is_expected.to have_plain_text_content("Issue was closed by #{current_user_sanitized} with #{closing_commit.id}")
             end
           end
         end
@@ -385,9 +385,9 @@
             aggregate_failures do
               url = project_merge_request_url(project, closing_merge_request)
               is_expected.to have_referable_subject(issue, reply: true)
-              is_expected.to have_body_text("Issue was closed by #{current_user_sanitized} via merge request " +
+              is_expected.to have_body_text("Issue was closed by #{current_user_sanitized} with merge request " +
                                             %(<a href="#{url}">#{closing_merge_request.to_reference}</a>))
-              is_expected.to have_plain_text_content("Issue was closed by #{current_user_sanitized} via merge request " \
+              is_expected.to have_plain_text_content("Issue was closed by #{current_user_sanitized} with merge request " \
                                                      "#{closing_merge_request.to_reference} (#{url})")
             end
           end
diff --git a/spec/models/state_note_spec.rb b/spec/models/state_note_spec.rb
index de07403bdc887f6c1023e3bcc4d4d20b2acb0eb1..1c13ba462364095d3e123a52e73a6ff6a5f49361 100644
--- a/spec/models/state_note_spec.rb
+++ b/spec/models/state_note_spec.rb
@@ -38,7 +38,7 @@
           expect(subject.author).to eq(author)
           expect(subject.created_at).to eq(event.created_at)
           expect(subject.updated_at).to eq(event.created_at)
-          expect(subject.note).to eq("closed via commit #{commit.id}")
+          expect(subject.note).to eq("closed with commit #{commit.id}")
         end
       end
 
@@ -50,7 +50,7 @@
           expect(subject.author).to eq(author)
           expect(subject.created_at).to eq(event.created_at)
           expect(subject.updated_at).to eq(event.created_at)
-          expect(subject.note).to eq("closed via merge request !#{merge_request.iid}")
+          expect(subject.note).to eq("closed with merge request !#{merge_request.iid}")
         end
       end
 
@@ -77,7 +77,7 @@
             expect(subject.author).to eq(author)
             expect(subject.created_at).to eq(event.created_at)
             expect(subject.updated_at).to eq(event.created_at)
-            expect(subject.note).to eq("merged via merge request !#{merge_request.iid}")
+            expect(subject.note).to eq("merged with merge request !#{merge_request.iid}")
           end
         end
       end