diff --git a/core/misc/ajax.es6.js b/core/misc/ajax.es6.js
index 6248e46efe..a5640af27a 100644
--- a/core/misc/ajax.es6.js
+++ b/core/misc/ajax.es6.js
@@ -121,20 +121,20 @@
     let responseText;
     let readyStateText;
     if (xmlhttp.status) {
-      statusCode = `\n${Drupal.t('An AJAX HTTP error occurred.')}\n${Drupal.t('HTTP Result Code: !status', { '!status': xmlhttp.status })}`;
+      statusCode = `\n${Drupal.t('An AJAX HTTP error occurred.')}\n${Drupal.t('HTTP Result Code: @status', { '@status': xmlhttp.status })}`;
     }
     else {
       statusCode = `\n${Drupal.t('An AJAX HTTP request terminated abnormally.')}`;
     }
     statusCode += `\n${Drupal.t('Debugging information follows.')}`;
-    pathText = `\n${Drupal.t('Path: !uri', { '!uri': uri })}`;
+    pathText = `\n${Drupal.t('Path: @uri', { '@uri': uri })}`;
     statusText = '';
     // In some cases, when statusCode === 0, xmlhttp.statusText may not be
     // defined. Unfortunately, testing for it with typeof, etc, doesn't seem to
     // catch that and the test causes an exception. So we need to catch the
     // exception here.
     try {
-      statusText = `\n${Drupal.t('StatusText: !statusText', { '!statusText': $.trim(xmlhttp.statusText) })}`;
+      statusText = `\n${Drupal.t('StatusText: @statusText', { '@statusText': $.trim(xmlhttp.statusText) })}`;
     }
     catch (e) {
       // Empty.
@@ -144,7 +144,7 @@
     // Again, we don't have a way to know for sure whether accessing
     // xmlhttp.responseText is going to throw an exception. So we'll catch it.
     try {
-      responseText = `\n${Drupal.t('ResponseText: !responseText', { '!responseText': $.trim(xmlhttp.responseText) })}`;
+      responseText = `\n${Drupal.t('ResponseText: @responseText', { '@responseText': $.trim(xmlhttp.responseText) })}`;
     }
     catch (e) {
       // Empty.
@@ -155,9 +155,9 @@
     responseText = responseText.replace(/[\n]+\s+/g, '\n');
 
     // We don't need readyState except for status == 0.
-    readyStateText = xmlhttp.status === 0 ? (`\n${Drupal.t('ReadyState: !readyState', { '!readyState': xmlhttp.readyState })}`) : '';
+    readyStateText = xmlhttp.status === 0 ? (`\n${Drupal.t('ReadyState: @readyState', { '@readyState': xmlhttp.readyState })}`) : '';
 
-    customMessage = customMessage ? (`\n${Drupal.t('CustomMessage: !customMessage', { '!customMessage': customMessage })}`) : '';
+    customMessage = customMessage ? (`\n${Drupal.t('CustomMessage: @customMessage', { '@customMessage': customMessage })}`) : '';
 
     /**
      * Formatted and translated error message.
@@ -529,7 +529,7 @@
     // Bind the ajaxSubmit function to the element event.
     $(ajax.element).on(element_settings.event, function (event) {
       if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) {
-        throw new Error(Drupal.t('The callback URL is not local and not trusted: !url', { '!url': ajax.url }));
+        throw new Error(Drupal.t('The callback URL is not local and not trusted: @url', { '@url': ajax.url }));
       }
       return ajax.eventResponse(this, event);
     });
diff --git a/core/misc/ajax.js b/core/misc/ajax.js
index 5ea52425be..bca1abca73 100644
--- a/core/misc/ajax.js
+++ b/core/misc/ajax.js
@@ -77,30 +77,30 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
     var responseText = void 0;
     var readyStateText = void 0;
     if (xmlhttp.status) {
-      statusCode = '\n' + Drupal.t('An AJAX HTTP error occurred.') + '\n' + Drupal.t('HTTP Result Code: !status', { '!status': xmlhttp.status });
+      statusCode = '\n' + Drupal.t('An AJAX HTTP error occurred.') + '\n' + Drupal.t('HTTP Result Code: @status', { '@status': xmlhttp.status });
     } else {
       statusCode = '\n' + Drupal.t('An AJAX HTTP request terminated abnormally.');
     }
     statusCode += '\n' + Drupal.t('Debugging information follows.');
-    pathText = '\n' + Drupal.t('Path: !uri', { '!uri': uri });
+    pathText = '\n' + Drupal.t('Path: @uri', { '@uri': uri });
     statusText = '';
 
     try {
-      statusText = '\n' + Drupal.t('StatusText: !statusText', { '!statusText': $.trim(xmlhttp.statusText) });
+      statusText = '\n' + Drupal.t('StatusText: @statusText', { '@statusText': $.trim(xmlhttp.statusText) });
     } catch (e) {}
 
     responseText = '';
 
     try {
-      responseText = '\n' + Drupal.t('ResponseText: !responseText', { '!responseText': $.trim(xmlhttp.responseText) });
+      responseText = '\n' + Drupal.t('ResponseText: @responseText', { '@responseText': $.trim(xmlhttp.responseText) });
     } catch (e) {}
 
     responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, '');
     responseText = responseText.replace(/[\n]+\s+/g, '\n');
 
-    readyStateText = xmlhttp.status === 0 ? '\n' + Drupal.t('ReadyState: !readyState', { '!readyState': xmlhttp.readyState }) : '';
+    readyStateText = xmlhttp.status === 0 ? '\n' + Drupal.t('ReadyState: @readyState', { '@readyState': xmlhttp.readyState }) : '';
 
-    customMessage = customMessage ? '\n' + Drupal.t('CustomMessage: !customMessage', { '!customMessage': customMessage }) : '';
+    customMessage = customMessage ? '\n' + Drupal.t('CustomMessage: @customMessage', { '@customMessage': customMessage }) : '';
 
     this.message = statusCode + pathText + statusText + customMessage + responseText + readyStateText;
 
@@ -250,7 +250,7 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr
 
     $(ajax.element).on(element_settings.event, function (event) {
       if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) {
-        throw new Error(Drupal.t('The callback URL is not local and not trusted: !url', { '!url': ajax.url }));
+        throw new Error(Drupal.t('The callback URL is not local and not trusted: @url', { '@url': ajax.url }));
       }
       return ajax.eventResponse(this, event);
     });
diff --git a/core/modules/ckeditor/js/ckeditor.es6.js b/core/modules/ckeditor/js/ckeditor.es6.js
index 21f6e4bb45..9b5510c254 100644
--- a/core/modules/ckeditor/js/ckeditor.es6.js
+++ b/core/modules/ckeditor/js/ckeditor.es6.js
@@ -31,7 +31,7 @@
       // label so that screen readers say something that is understandable
       // for end users.
       const label = $(`label[for=${element.getAttribute('id')}]`).html();
-      format.editorSettings.title = Drupal.t('Rich Text Editor, !label field', { '!label': label });
+      format.editorSettings.title = Drupal.t('Rich Text Editor, @label field', { '@label': label });
 
       return !!CKEDITOR.replace(element, format.editorSettings);
     },
diff --git a/core/modules/ckeditor/js/ckeditor.js b/core/modules/ckeditor/js/ckeditor.js
index 17477e559e..cb521780cb 100644
--- a/core/modules/ckeditor/js/ckeditor.js
+++ b/core/modules/ckeditor/js/ckeditor.js
@@ -15,7 +15,7 @@
       };
 
       var label = $('label[for=' + element.getAttribute('id') + ']').html();
-      format.editorSettings.title = Drupal.t('Rich Text Editor, !label field', { '!label': label });
+      format.editorSettings.title = Drupal.t('Rich Text Editor, @label field', { '@label': label });
 
       return !!CKEDITOR.replace(element, format.editorSettings);
     },
diff --git a/core/modules/locale/tests/locale_test.es6.js b/core/modules/locale/tests/locale_test.es6.js
index ba62b7504e..b60080360a 100644
--- a/core/modules/locale/tests/locale_test.es6.js
+++ b/core/modules/locale/tests/locale_test.es6.js
@@ -26,7 +26,7 @@ Drupal.t("Context Unquoted t", {}, {context: "Context string unquoted"});
 Drupal.t("Context Single Quoted t", {}, {'context': "Context string single quoted"});
 Drupal.t("Context Double Quoted t", {}, {"context": "Context string double quoted"});
 
-Drupal.t("Context !key Args t", {'!key': 'value'}, {context: "Context string"});
+Drupal.t("Context @key Args t", {'@key': 'value'}, {context: "Context string"});
 
 Drupal.formatPlural(1, "Standard Call plural", "Standard Call @count plural");
 Drupal
@@ -49,4 +49,4 @@ Drupal.formatPlural(1, "Context Unquoted plural", "Context Unquoted @count plura
 Drupal.formatPlural(1, "Context Single Quoted plural", "Context Single Quoted @count plural", {}, {'context': "Context string single quoted"});
 Drupal.formatPlural(1, "Context Double Quoted plural", "Context Double Quoted @count plural", {}, {"context": "Context string double quoted"});
 
-Drupal.formatPlural(1, "Context !key Args plural", "Context !key Args @count plural", {'!key': 'value'}, {context: "Context string"});
+Drupal.formatPlural(1, "Context @key Args plural", "Context @key Args @count plural", {'@key': 'value'}, {context: "Context string"});
diff --git a/core/modules/locale/tests/locale_test.js b/core/modules/locale/tests/locale_test.js
index 86acc4a13c..755ad96f31 100644
--- a/core/modules/locale/tests/locale_test.js
+++ b/core/modules/locale/tests/locale_test.js
@@ -20,7 +20,7 @@ Drupal.t("Context Unquoted t", {}, { context: "Context string unquoted" });
 Drupal.t("Context Single Quoted t", {}, { 'context': "Context string single quoted" });
 Drupal.t("Context Double Quoted t", {}, { "context": "Context string double quoted" });
 
-Drupal.t("Context !key Args t", { '!key': 'value' }, { context: "Context string" });
+Drupal.t("Context @key Args t", { '@key': 'value' }, { context: "Context string" });
 
 Drupal.formatPlural(1, "Standard Call plural", "Standard Call @count plural");
 Drupal.formatPlural(1, "Whitespace Call plural", "Whitespace Call @count plural");
@@ -35,4 +35,4 @@ Drupal.formatPlural(1, "Context Unquoted plural", "Context Unquoted @count plura
 Drupal.formatPlural(1, "Context Single Quoted plural", "Context Single Quoted @count plural", {}, { 'context': "Context string single quoted" });
 Drupal.formatPlural(1, "Context Double Quoted plural", "Context Double Quoted @count plural", {}, { "context": "Context string double quoted" });
 
-Drupal.formatPlural(1, "Context !key Args plural", "Context !key Args @count plural", { '!key': 'value' }, { context: "Context string" });
\ No newline at end of file
+Drupal.formatPlural(1, "Context @key Args plural", "Context @key Args @count plural", { '@key': 'value' }, { context: "Context string" });
\ No newline at end of file
diff --git a/core/modules/system/js/system.modules.es6.js b/core/modules/system/js/system.modules.es6.js
index 9472d3b2ee..ebe6de503d 100644
--- a/core/modules/system/js/system.modules.es6.js
+++ b/core/modules/system/js/system.modules.es6.js
@@ -61,8 +61,8 @@
 
           Drupal.announce(
             Drupal.t(
-              '!modules modules are available in the modified list.',
-              { '!modules': $rowsAndDetails.find('tbody tr:visible').length },
+              '@modules modules are available in the modified list.',
+              { '@modules': $rowsAndDetails.find('tbody tr:visible').length },
             ),
           );
         }
diff --git a/core/modules/system/js/system.modules.js b/core/modules/system/js/system.modules.js
index 375a7b8065..0428a12bbf 100644
--- a/core/modules/system/js/system.modules.js
+++ b/core/modules/system/js/system.modules.js
@@ -43,7 +43,7 @@
 
           $details.attr('open', true).each(hidePackageDetails);
 
-          Drupal.announce(Drupal.t('!modules modules are available in the modified list.', { '!modules': $rowsAndDetails.find('tbody tr:visible').length }));
+          Drupal.announce(Drupal.t('@modules modules are available in the modified list.', { '@modules': $rowsAndDetails.find('tbody tr:visible').length }));
         } else if (searching) {
           searching = false;
           $rowsAndDetails.show();
diff --git a/core/modules/tour/js/tour.es6.js b/core/modules/tour/js/tour.es6.js
index f3b11072b1..67240c3770 100644
--- a/core/modules/tour/js/tour.es6.js
+++ b/core/modules/tour/js/tour.es6.js
@@ -255,7 +255,7 @@
           .find('li')
           // Rebuild the progress data.
           .each(function (index) {
-            const progress = Drupal.t('!tour_item of !total', { '!tour_item': index + 1, '!total': total });
+            const progress = Drupal.t('@tour_item of @total', { '@tour_item': index + 1, '@total': total });
             $(this).find('.tour-progress').text(progress);
           })
           // Update the last item to have "End tour" as the button.
diff --git a/core/modules/tour/js/tour.js b/core/modules/tour/js/tour.js
index f20796a436..54a4a0c920 100644
--- a/core/modules/tour/js/tour.js
+++ b/core/modules/tour/js/tour.js
@@ -121,7 +121,7 @@
         }
 
         $tour.find('li').each(function (index) {
-          var progress = Drupal.t('!tour_item of !total', { '!tour_item': index + 1, '!total': total });
+          var progress = Drupal.t('@tour_item of @total', { '@tour_item': index + 1, '@total': total });
           $(this).find('.tour-progress').text(progress);
         }).eq(-1).attr('data-text', Drupal.t('End tour'));
       }
