mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-02 13:02:24 +08:00
po filles generation.
All the quotation marks must be screened by adding a backslash before them. Otherwise we cannot generate .mo file.
This commit is contained in:
@ -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";
|
||||
|
||||
Reference in New Issue
Block a user