diff --git a/framework/console/controllers/MessageController.php b/framework/console/controllers/MessageController.php index 34a1564a30..ad970ecef7 100644 --- a/framework/console/controllers/MessageController.php +++ b/framework/console/controllers/MessageController.php @@ -189,6 +189,7 @@ class MessageController extends Controller $merged = []; $untranslated = []; foreach ($messages as $message) { + $message = preg_replace('/\\"/', '\"', $message); if (array_key_exists($message, $translated) && strlen($translated[$message]) > 0) { $merged[$message] = $translated[$message]; } else { @@ -202,15 +203,17 @@ class MessageController extends Controller $todo[$message] = ''; } ksort($translated); - foreach ($translated as $message => $translation) { - if (!isset($merged[$message]) && !isset($todo[$message]) && !$removeUnused) { - if (substr($translation, 0, 2) === '@@' && substr($translation, -2) === '@@') { - $todo[$message] = $translation; - } else { - $todo[$message] = '@@' . $translation . '@@'; - } - } - } + if($format === 'php'){ + foreach ($translated as $message => $translation) { + if (!isset($merged[$message]) && !isset($todo[$message]) && !$removeUnused) { + if (substr($translation, 0, 2) === '@@' && substr($translation, -2) === '@@') { + $todo[$message] = $translation; + } else { + $todo[$message] = '@@' . $translation . '@@'; + } + } + } + } $merged = array_merge($todo, $merged); if ($sort) { ksort($merged); @@ -221,6 +224,8 @@ class MessageController extends Controller if($format === 'po'){ $out_str = ''; foreach($merged as $k=>$v){ + $k = preg_replace('/(\")|(\\\")/', "\\\"", $k); + $v = preg_replace('/(\")|(\\\")/', "\\\"", $v); $out_str .= "msgid \"$k\"\n"; $out_str .= "msgstr \"$v\"\n"; $out_str .= "\n"; @@ -233,6 +238,7 @@ class MessageController extends Controller $merged = ''; sort($messages); foreach($messages as $message) { + $message = preg_replace('/(\")|(\\\")/', '\\\"', $message); $merged .= "msgid \"$message\"\n"; $merged .= "msgstr \"\"\n"; $merged .= "\n";