diff --git a/potx.inc b/potx.inc
index 7248fd4..071bbf4 100644
--- a/potx.inc
+++ b/potx.inc
@@ -1288,7 +1288,7 @@ function _potx_find_context($tf, $ti, $file, $function_name) {
         $ti++;
         if (!is_array($_potx_tokens[$ti])) {
           // Treat each () and [] pair as going into / out of nesting levels.
-          // There may be function or method calls as well as nested short 
+          // There may be function or method calls as well as nested short
           // arrays within the arguments list. The list may be similar to:
           // array('langcode' => $obj->someMethod([])[2], 'context' => 'Long month name')
           // or
@@ -2202,7 +2202,7 @@ function _potx_process_config_schema($schema_prefix, $schema_data) {
     // extracting translatable strings from contrib projects, until
     // https://www.drupal.org/node/1933988 gets in.
     $_potx_processed_schema = array(
-      'translatables' => array('label', 'text', 'date_format'),
+      'translatables' => array('label', 'text', 'date_format', 'plural_label'),
       'types' => array(),
       'mappings' => array(),
       'contexts' => array('date_format' => 'PHP date format'),
@@ -2480,7 +2480,15 @@ function _potx_find_shipped_config_translatables($config, $schema_prefix, $confi
       $context = POTX_CONTEXT_NONE;
     }
 
-    $save_callback(addcslashes($config, "\0..\37\\\""), $context, $file_name);
+    if (strpos($config, "\03") !== FALSE) {
+      // Convert plural formatting from config to plural formatting in our
+      // format (replacing \03 with \0).
+      list($singular, $plural) = explode("\03", $config);
+      $save_callback(addcslashes($singular, "\0..\37\\\"") . "\0" . addcslashes($plural, "\1..\37\\\""), $context, $file_name);
+    }
+    else {
+      $save_callback(addcslashes(str_replace("\03", "\0", $config), "\1..\37\\\""), $context, $file_name);
+    }
   }
   else {
     // Resolve the config element's type in schema to a real type, replacing all
diff --git a/tests/drupal8/config/install/test.settings.yml b/tests/drupal8/config/install/test.settings.yml
index c333f89..bc16848 100644
--- a/tests/drupal8/config/install/test.settings.yml
+++ b/tests/drupal8/config/install/test.settings.yml
@@ -58,3 +58,7 @@ complex_variable:
   key1:
     key2: 'text'
   value: 'Complex variable test'
+
+# tests for plural source strings
+plural_string: "1 place\x03@count places"
+plural_string_with_context: "1 comment\x03@count comments"
diff --git a/tests/drupal8/config/schema/test.data_types.schema.yml b/tests/drupal8/config/schema/test.data_types.schema.yml
index 34633c8..8af0bd1 100644
--- a/tests/drupal8/config/schema/test.data_types.schema.yml
+++ b/tests/drupal8/config/schema/test.data_types.schema.yml
@@ -1,19 +1,24 @@
 translatable_string:
   type: string
   translatable: true
+
 untranslatable_text:
   type: text
   translatable: false
+
 translatable_with_context:
   type: string
   translatable: true
   translation context: 'Test context'
+
 label_with_context:
   type: label
   translation context: 'Test label with context'
+
 label_context_override:
   type: label_with_context
   translation context: 'Test context override'
+
 simple_mapping:
   type: mapping
   mapping:
@@ -24,8 +29,16 @@ simple_mapping:
       type: label
     code:
       type: translatable_string
+
 mapping_with_type:
   type: simple_mapping
   mapping:
     extra_label:
       type: label
+
+plural_string:
+  type: plural_label
+
+plural_string_with_context:
+  type: plural_label
+  translation context: 'Test context'
diff --git a/tests/drupal8/config/schema/test.schema.yml b/tests/drupal8/config/schema/test.schema.yml
index 84299da..efdd275 100644
--- a/tests/drupal8/config/schema/test.schema.yml
+++ b/tests/drupal8/config/schema/test.schema.yml
@@ -41,3 +41,7 @@ test.settings:
       type: key_variable
     complex_variable:
       type: complex_variable
+    plural_string:
+      type: plural_string
+    plural_string_with_context:
+      type: plural_string_with_context
diff --git a/tests/potx.test b/tests/potx.test
index 1df2b9d..fb9781f 100644
--- a/tests/potx.test
+++ b/tests/potx.test
@@ -468,6 +468,9 @@ class PotxTestCase extends DrupalWebTestCase {
     $this->assertNoMsgID('Basic variable (custom)');
     $this->assertNoMsgID('Parent variable (custom)');
     $this->assertNoMsgID('Key variable (custom)');
+
+    $this->assertPluralID('1 place', '@count places');
+    $this->assertPluralID('1 comment', '@count comments', 'Test context');
   }
 
   /**
