diff --git a/l10n_update.locale.inc b/l10n_update.locale.inc
index 2a964d2..0fa006b 100644
--- a/l10n_update.locale.inc
+++ b/l10n_update.locale.inc
@@ -85,6 +85,7 @@ function _l10n_update_locale_import_po($file, $langcode, $mode, $group = NULL) {
  */
 function _l10n_update_locale_import_read_po($op, $file, $mode = NULL, $lang = NULL, $group = 'default') {
 
+  $initial_group = $group;
   $fd = fopen($file->uri, "rb"); // File will get closed by PHP on return
   if (!$fd) {
     _locale_import_message('The translation import failed, because the file %filename could not be read.', $file);
@@ -95,6 +96,7 @@ function _l10n_update_locale_import_read_po($op, $file, $mode = NULL, $lang = NU
   $current = array();   // Current entry being read
   $plural = 0;          // Current plural form
   $lineno = 0;          // Current line
+  $group_changed = FALSE;
 
   while (!feof($fd)) {
     $line = fgets($fd, 10*1024); // A line should not be this long
@@ -112,7 +114,15 @@ function _l10n_update_locale_import_read_po($op, $file, $mode = NULL, $lang = NU
       elseif (($context == "MSGSTR") || ($context == "MSGSTR_ARR")) { // End current entry, start a new one
         _l10n_update_locale_import_one_string($op, $current, $mode, $lang, $file, $group);
         $current = array();
-        $current["#"][] = substr($line, 1);
+        $tmp_comment = substr($line, 1);
+        $current["#"][] = $tmp_comment;
+        if (strpos($tmp_comment, ':') !== FALSE) {
+          $comment_array = explode(':', $tmp_comment);
+          if (!empty(trim($comment_array[1]))) {
+            $group = trim($comment_array[1]);
+            $group_changed = TRUE;
+          }
+        }
         $context = "COMMENT";
       }
       else { // Parse error
@@ -138,6 +148,10 @@ function _l10n_update_locale_import_read_po($op, $file, $mode = NULL, $lang = NU
       if (($context == "MSGSTR") || ($context == "MSGSTR_ARR")) {   // End current entry, start a new one
         _l10n_update_locale_import_one_string($op, $current, $mode, $lang, $file, $group);
         $current = array();
+        if ($group_changed) {
+          $group_changed = FALSE;
+          $group = $initial_group;
+        }
       }
       elseif ($context == "MSGID") { // Already in this context? Parse error
         _locale_import_message('The translation file %filename contains an error: "msgid" is unexpected on line %line.', $file, $lineno);
@@ -156,6 +170,10 @@ function _l10n_update_locale_import_read_po($op, $file, $mode = NULL, $lang = NU
       if (($context == "MSGSTR") || ($context == "MSGSTR_ARR")) {   // End current entry, start a new one
         _l10n_update_locale_import_one_string($op, $current, $mode, $lang, $file, $group);
         $current = array();
+        if ($group_changed) {
+          $group_changed = FALSE;
+          $group = $initial_group;
+        }
       }
       elseif (!empty($current["msgctxt"])) { // Already in this context? Parse error
         _locale_import_message('The translation file %filename contains an error: "msgctxt" is unexpected on line %line.', $file, $lineno);
