diff --git a/connectors/l10n_gettext/l10n_gettext.module b/connectors/l10n_gettext/l10n_gettext.module
index f2b1618..935d83a 100644
--- a/connectors/l10n_gettext/l10n_gettext.module
+++ b/connectors/l10n_gettext/l10n_gettext.module
@@ -74,6 +74,9 @@ function l10n_gettext_store_string($value = NULL, $pid = NULL, $rid = NULL, $fid
   if (!empty($value['msgid'])) {
     // Initialize empty context if not speficied.
     $context = !empty($value['msgctxt']) ? $value['msgctxt'] : '';
+    
+    // Initialize empty comment if not specified
+    $comment = !empty($value['#']) ? implode("\n", $value['#']) : '';
 
     // A \0 separator in the string means we deal with a string with plural variants.
     // Unlike Drupal core, we store all in the same string, as it is easier
@@ -88,6 +91,7 @@ function l10n_gettext_store_string($value = NULL, $pid = NULL, $rid = NULL, $fid
 	->fields(array(
             'value' => $msgid,
             'context' => $context,
+            'comment' => $comment,
             'hashkey' => md5($msgid . $context),
           ))
         ->execute();
diff --git a/l10n_community/export.inc b/l10n_community/export.inc
index a2ad397..d8f6dc4 100644
--- a/l10n_community/export.inc
+++ b/l10n_community/export.inc
@@ -246,6 +246,14 @@ function _l10n_community_export_string_files(&$po_data, $uri, $language, $templa
     if (!$compact) {
       $output = $comment;
     }
+    
+    if (!empty($export_string['original_comment'])) {
+      $original_comment = '';
+      foreach ($export_string['original_comment'] as $com) {
+        $original_comment .= '#' . $com . "\n";
+      }
+      $output .= $original_comment;
+    }
 
     $fuzzy = FALSE;
     if ($suggestions) {
@@ -366,7 +374,7 @@ function l10n_community_export($uri, $release = NULL, $language = NULL, $templat
   $query->innerJoin('l10n_server_line', 'l', 'f.fid = l.fid');
   $query->innerJoin('l10n_server_string', 's', 'l.sid = s.sid');
   $query
-    ->fields('s', array('sid', 'value', 'context'))
+    ->fields('s', array('sid', 'value', 'context', 'comment'))
     ->fields('f', array('location', 'revision'))
     ->fields('l', array('lineno', 'type'))
     ->condition('f.pid', $project->pid)
@@ -421,6 +429,7 @@ function l10n_community_export($uri, $release = NULL, $language = NULL, $templat
       $previous_sid = $string->sid;
       $export_string = array(
         'comment' => array(),
+        'original_comment' => !empty($string->comment) ? explode("\n", $string->comment) : array(),
         'value' => $string->value,
         'context' => $string->context,
         'translation' => (!empty($string->translation) && !$string->is_suggestion) ? $string->translation : '',
diff --git a/l10n_server/l10n_server.install b/l10n_server/l10n_server.install
index ddf19eb..edfe29b 100644
--- a/l10n_server/l10n_server.install
+++ b/l10n_server/l10n_server.install
@@ -283,6 +283,10 @@ function l10n_server_schema() {
         'default' => '',
         'description' => 'The context this string applies to. Only applicable to some strings in Drupal 7 and its modules.',
       ),
+      'comment' => array(
+        'type' => 'text',
+        'description' => 'Original comment in the imported file',
+      ),
       'hashkey' => array(
         'description' => 'MD5 hash of the concatenation of value and context, used for quick lookups when these two are known (imports, new releases, remote submissions).',
         'type' => 'char',
@@ -448,6 +452,16 @@ function l10n_server_schema() {
 }
 
 /**
+ * Add comment field to l10n_server_string
+ */
+function l10n_server_update_7001() {
+  db_add_field('l10n_server_string', 'comment', array(
+    'type' => 'text',
+    'description' => 'Original comment in the imported file',
+  ));
+}
+
+/**
  * Add default value for the project weight
  */
 function l10n_server_update_7000() {
