diff --git a/core/lib/Drupal/Core/Config/ConfigImporter.php b/core/lib/Drupal/Core/Config/ConfigImporter.php
index e0d4e0d..290a47a 100644
--- a/core/lib/Drupal/Core/Config/ConfigImporter.php
+++ b/core/lib/Drupal/Core/Config/ConfigImporter.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Config;
 
+use Drupal\Core\Render\SafeString;
 use Drupal\Core\Config\Importer\MissingContentEvent;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Extension\ModuleInstallerInterface;
@@ -718,11 +719,11 @@ protected function validate() {
         $old_entity_type_id = $this->configManager->getEntityTypeIdByName($names['old_name']);
         $new_entity_type_id = $this->configManager->getEntityTypeIdByName($names['new_name']);
         if ($old_entity_type_id != $new_entity_type_id) {
-          $this->logError($this->t('Entity type mismatch on rename. !old_type not equal to !new_type for existing configuration !old_name and staged configuration !new_name.', array('old_type' => $old_entity_type_id, 'new_type' => $new_entity_type_id, 'old_name' => $names['old_name'], 'new_name' => $names['new_name'])));
+          $this->logError($this->t('Entity type mismatch on rename. @old_type not equal to @new_type for existing configuration @old_name and staged configuration @new_name.', array('old_type' => $old_entity_type_id, 'new_type' => $new_entity_type_id, 'old_name' => $names['old_name'], 'new_name' => $names['new_name'])));
         }
         // Has to be a configuration entity.
         if (!$old_entity_type_id) {
-          $this->logError($this->t('Rename operation for simple configuration. Existing configuration !old_name and staged configuration !new_name.', array('old_name' => $names['old_name'], 'new_name' => $names['new_name'])));
+          $this->logError($this->t('Rename operation for simple configuration. Existing configuration @old_name and staged configuration @new_name.', array('old_name' => $names['old_name'], 'new_name' => $names['new_name'])));
         }
       }
       $this->eventDispatcher->dispatch(ConfigEvents::IMPORT_VALIDATE, new ConfigImporterEvent($this));
@@ -762,7 +763,7 @@ protected function processConfiguration($collection, $op, $name) {
       }
     }
     catch (\Exception $e) {
-      $this->logError($this->t('Unexpected error during import with operation @op for @name: !message', array('@op' => $op, '@name' => $name, '!message' => $e->getMessage())));
+      $this->logError($this->t('Unexpected error during import with operation @op for @name: @message', array('@op' => $op, '@name' => $name, '@message' => SafeString::create($e->getMessage()))));
       // Error for that operation was logged, mark it as processed so that
       // the import can continue.
       $this->setProcessedConfiguration($collection, $op, $name);
diff --git a/core/modules/config/config.module b/core/modules/config/config.module
index 5348024..a7b9deb 100644
--- a/core/modules/config/config.module
+++ b/core/modules/config/config.module
@@ -15,19 +15,19 @@ function config_help($route_name, RouteMatchInterface $route_match) {
     case 'help.page.config':
       $output = '';
       $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Configuration Manager module provides a user interface for importing and exporting configuration changes between installations of your website in different environments. Configuration is stored in YAML format. For more information, see the <a href="!url">online documentation for the Configuration Manager module</a>.', array('!url' => 'https://www.drupal.org/documentation/administer/config')) . '</p>';
+      $output .= '<p>' . t('The Configuration Manager module provides a user interface for importing and exporting configuration changes between installations of your website in different environments. Configuration is stored in YAML format. For more information, see the <a href="@url">online documentation for the Configuration Manager module</a>.', array('@url' => 'https://www.drupal.org/documentation/administer/config')) . '</p>';
       $output .= '<h3>' . t('Uses') . '</h3>';
       $output .= '<dl>';
       $output .= '<dt>' . t('Exporting the full configuration') . '</dt>';
-      $output .= '<dd>' . t('You can create and download an archive consisting of all your site\'s configuration exported as <em>*.yml</em> files on the <a href="!url">Export</a> page.' , array('!url' => \Drupal::url('config.export_full'))) . '</dd>';
+      $output .= '<dd>' . t('You can create and download an archive consisting of all your site\'s configuration exported as <em>*.yml</em> files on the <a href="@url">Export</a> page.' , array('@url' => \Drupal::url('config.export_full'))) . '</dd>';
       $output .= '<dt>' . t('Importing a full configuration') . '</dt>';
-      $output .= '<dd>' . t('You can upload a full site configuration from an archive file on the <a href="!url">Import</a> page. When importing data from a different environment, the site and import files must have matching configuration values for UUID in the <em>system.site</em> configuration item. That means that your other environments should initially be set up as clones of the target site. Migrations are not supported.', array('!url' => \Drupal::url('config.import_full'))) . '</dd>';
+      $output .= '<dd>' . t('You can upload a full site configuration from an archive file on the <a href="@url">Import</a> page. When importing data from a different environment, the site and import files must have matching configuration values for UUID in the <em>system.site</em> configuration item. That means that your other environments should initially be set up as clones of the target site. Migrations are not supported.', array('@url' => \Drupal::url('config.import_full'))) . '</dd>';
       $output .= '<dt>' . t('Synchronizing configuration'). '</dt>';
-      $output .= '<dd>' . t('You can review differences between the active configuration and an imported configuration archive on the <a href="!synchronize">Synchronize</a> page to ensure that the changes are as expected, before finalizing the import. The Synchronize page also shows configuration items that would be added or removed.', array('!synchronize' => \Drupal::url('config.sync'))) . '</dd>';
+      $output .= '<dd>' . t('You can review differences between the active configuration and an imported configuration archive on the <a href="@synchronize">Synchronize</a> page to ensure that the changes are as expected, before finalizing the import. The Synchronize page also shows configuration items that would be added or removed.', array('@synchronize' => \Drupal::url('config.sync'))) . '</dd>';
       $output .= '<dt>' . t('Exporting a single configuration item') . '</dt>';
-      $output .= '<dd>' . t('You can export a single configuration item by selecting a <em>Configuration type</em> and <em>Configuration name</em> on the <a href="!single-export">Single export</a> page. The configuration and its corresponding <em>*.yml file name</em> are then displayed on the page for you to copy.', array('!single-export' => \Drupal::url('config.export_single'))) . '</dd>';
+      $output .= '<dd>' . t('You can export a single configuration item by selecting a <em>Configuration type</em> and <em>Configuration name</em> on the <a href="@single-export">Single export</a> page. The configuration and its corresponding <em>*.yml file name</em> are then displayed on the page for you to copy.', array('@single-export' => \Drupal::url('config.export_single'))) . '</dd>';
       $output .= '<dt>' . t('Importing a single configuration item') . '</dt>';
-      $output .= '<dd>' . t('You can import a single configuration item by pasting it in YAML format into the form on the <a href="!single-import">Single import</a> page.', array('!single-import' => \Drupal::url('config.import_single'))) . '</dd>';
+      $output .= '<dd>' . t('You can import a single configuration item by pasting it in YAML format into the form on the <a href="@single-import">Single import</a> page.', array('@single-import' => \Drupal::url('config.import_single'))) . '</dd>';
       $output .= '</dl>';
       return $output;
 
diff --git a/core/modules/config/src/Form/ConfigSync.php b/core/modules/config/src/Form/ConfigSync.php
index 7f240e3..c91ed5c 100644
--- a/core/modules/config/src/Form/ConfigSync.php
+++ b/core/modules/config/src/Form/ConfigSync.php
@@ -222,7 +222,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
           '#items' => $change_list,
         );
         $change_list_html = $this->renderer->renderPlain($change_list_render);
-        drupal_set_message($this->t('The following items in your active configuration have changes since the last import that may be lost on the next import. !changes', array('!changes' => $change_list_html)), 'warning');
+        drupal_set_message($this->t('The following items in your active configuration have changes since the last import that may be lost on the next import. @changes', array('@changes' => $change_list_html)), 'warning');
       }
     }
 
@@ -237,7 +237,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
         $form[$collection]['collection_heading'] = array(
           '#type' => 'html_tag',
           '#tag' => 'h2',
-          '#value' => $this->t('!collection configuration collection', array('!collection' => $collection)),
+          '#value' => $this->t('@collection configuration collection', array('@collection' => $collection)),
         );
       }
       foreach ($storage_comparer->getChangelist(NULL, $collection) as $config_change_type => $config_names) {
@@ -277,7 +277,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
           if ($config_change_type == 'rename') {
             $names = $storage_comparer->extractRenameNames($config_name);
             $route_options = array('source_name' => $names['old_name'], 'target_name' => $names['new_name']);
-            $config_name = $this->t('!source_name to !target_name', array('!source_name' => $names['old_name'], '!target_name' => $names['new_name']));
+            $config_name = $this->t('@source_name to @target_name', array('@source_name' => $names['old_name'], '@target_name' => $names['new_name']));
           }
           else {
             $route_options = array('source_name' => $config_name);
diff --git a/core/modules/config/src/Tests/ConfigExportImportUITest.php b/core/modules/config/src/Tests/ConfigExportImportUITest.php
index 6a63df7..e913e0d 100644
--- a/core/modules/config/src/Tests/ConfigExportImportUITest.php
+++ b/core/modules/config/src/Tests/ConfigExportImportUITest.php
@@ -273,8 +273,8 @@ public function testExportImportCollections() {
     // Verify that there are configuration differences to import.
     $this->drupalGet('admin/config/development/configuration');
     $this->assertNoText(t('There are no configuration changes to import.'));
-    $this->assertText(t('!collection configuration collection', array('!collection' => 'collection.test1')));
-    $this->assertText(t('!collection configuration collection', array('!collection' => 'collection.test2')));
+    $this->assertText(t('@collection configuration collection', array('@collection' => 'collection.test1')));
+    $this->assertText(t('@collection configuration collection', array('@collection' => 'collection.test2')));
     $this->assertText('config_test.create');
     $this->assertLinkByHref('admin/config/development/configuration/sync/diff_collection/collection.test1/config_test.create');
     $this->assertText('config_test.update');
diff --git a/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php b/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
index 118c1cb..ead8441 100644
--- a/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
+++ b/core/modules/config/src/Tests/ConfigImportRenameValidationTest.php
@@ -110,7 +110,7 @@ public function testRenameValidation() {
     catch (ConfigImporterException $e) {
       $this->pass('Expected ConfigImporterException thrown when a renamed configuration entity does not match the existing entity type.');
       $expected = array(
-        SafeMarkup::format('Entity type mismatch on rename. !old_type not equal to !new_type for existing configuration !old_name and staged configuration !new_name.', array('old_type' => 'node_type', 'new_type' => 'config_test', 'old_name' => 'node.type.' . $content_type->id(), 'new_name' => 'config_test.dynamic.' . $test_entity_id))
+        SafeMarkup::format('Entity type mismatch on rename. @old_type not equal to @new_type for existing configuration @old_name and staged configuration @new_name.', array('old_type' => 'node_type', 'new_type' => 'config_test', 'old_name' => 'node.type.' . $content_type->id(), 'new_name' => 'config_test.dynamic.' . $test_entity_id))
       );
       $this->assertIdentical($expected, $this->configImporter->getErrors());
     }
@@ -153,7 +153,7 @@ public function testRenameSimpleConfigValidation() {
     catch (ConfigImporterException $e) {
       $this->pass('Expected ConfigImporterException thrown when simple configuration is renamed.');
       $expected = array(
-        SafeMarkup::format('Rename operation for simple configuration. Existing configuration !old_name and staged configuration !new_name.', array('old_name' => 'config_test.old', 'new_name' => 'config_test.new'))
+        SafeMarkup::format('Rename operation for simple configuration. Existing configuration @old_name and staged configuration @new_name.', array('old_name' => 'config_test.old', 'new_name' => 'config_test.new'))
       );
       $this->assertIdentical($expected, $this->configImporter->getErrors());
     }
diff --git a/core/modules/config/src/Tests/ConfigImporterTest.php b/core/modules/config/src/Tests/ConfigImporterTest.php
index e39baf6..5d43b78 100644
--- a/core/modules/config/src/Tests/ConfigImporterTest.php
+++ b/core/modules/config/src/Tests/ConfigImporterTest.php
@@ -296,7 +296,7 @@ function testSecondaryWriteSecondaryFirst() {
     $logs = $this->configImporter->getErrors();
     $this->assertEqual(count($logs), 1);
     $message = SafeMarkup::format("'config_test' entity with ID '@name' already exists", array('@name' => 'secondary'));
-    $this->assertEqual($logs[0], SafeMarkup::format('Unexpected error during import with operation @op for @name: !message.', array('@op' => 'create', '@name' => $name_primary, '!message' => $message)));
+    $this->assertEqual($logs[0], SafeMarkup::format('Unexpected error during import with operation @op for @name: @message.', array('@op' => 'create', '@name' => $name_primary, '@message' => $message)));
   }
 
   /**
diff --git a/core/modules/config/src/Tests/SchemaCheckTestTrait.php b/core/modules/config/src/Tests/SchemaCheckTestTrait.php
index c7dffe6..c0823d5 100644
--- a/core/modules/config/src/Tests/SchemaCheckTestTrait.php
+++ b/core/modules/config/src/Tests/SchemaCheckTestTrait.php
@@ -33,13 +33,13 @@ public function assertConfigSchema(TypedConfigManagerInterface $typed_config, $c
     if ($errors === FALSE) {
       // @todo Since the use of this trait is under TestBase, it works.
       //   Can be fixed as part of https://www.drupal.org/node/2260053.
-      $this->fail(SafeMarkup::format('No schema for !config_name', array('!config_name' => $config_name)));
+      $this->fail(SafeMarkup::format('No schema for @config_name', array('@config_name' => $config_name)));
       return;
     }
     elseif ($errors === TRUE) {
       // @todo Since the use of this trait is under TestBase, it works.
       //   Can be fixed as part of https://www.drupal.org/node/2260053.
-      $this->pass(SafeMarkup::format('Schema found for !config_name and values comply with schema.', array('!config_name' => $config_name)));
+      $this->pass(SafeMarkup::format('Schema found for @config_name and values comply with schema.', array('@config_name' => $config_name)));
     }
     else {
       foreach ($errors as $key => $error) {
