mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-16 06:17:56 +08:00
Merge pull request #1979 from SergeiKutanov/po_generation
po filles generation.
This commit is contained in:
@@ -173,9 +173,8 @@ class MessageController extends Controller
|
|||||||
if (is_file($fileName)) {
|
if (is_file($fileName)) {
|
||||||
if($format === 'po'){
|
if($format === 'po'){
|
||||||
$translated = file_get_contents($fileName);
|
$translated = file_get_contents($fileName);
|
||||||
preg_match_all('/(?<=msgid ").*(?="\nmsgstr)/', $translated, $keys);
|
preg_match_all('/(?<=msgid ").*(?="\n(#*)msgstr)/', $translated, $keys);
|
||||||
preg_match_all('/(?<=msgstr ").*(?="\n\n)/', $translated, $values);
|
preg_match_all('/(?<=msgstr ").*(?="\n\n)/', $translated, $values);
|
||||||
|
|
||||||
$translated = array_combine($keys[0], $values[0]);
|
$translated = array_combine($keys[0], $values[0]);
|
||||||
} else {
|
} else {
|
||||||
$translated = require($fileName);
|
$translated = require($fileName);
|
||||||
@@ -189,6 +188,9 @@ class MessageController extends Controller
|
|||||||
$merged = [];
|
$merged = [];
|
||||||
$untranslated = [];
|
$untranslated = [];
|
||||||
foreach ($messages as $message) {
|
foreach ($messages as $message) {
|
||||||
|
if($format === 'po'){
|
||||||
|
$message = preg_replace('/\"/', '\"', $message);
|
||||||
|
}
|
||||||
if (array_key_exists($message, $translated) && strlen($translated[$message]) > 0) {
|
if (array_key_exists($message, $translated) && strlen($translated[$message]) > 0) {
|
||||||
$merged[$message] = $translated[$message];
|
$merged[$message] = $translated[$message];
|
||||||
} else {
|
} else {
|
||||||
@@ -202,15 +204,15 @@ class MessageController extends Controller
|
|||||||
$todo[$message] = '';
|
$todo[$message] = '';
|
||||||
}
|
}
|
||||||
ksort($translated);
|
ksort($translated);
|
||||||
foreach ($translated as $message => $translation) {
|
foreach ($translated as $message => $translation) {
|
||||||
if (!isset($merged[$message]) && !isset($todo[$message]) && !$removeUnused) {
|
if (!isset($merged[$message]) && !isset($todo[$message]) && !$removeUnused) {
|
||||||
if (substr($translation, 0, 2) === '@@' && substr($translation, -2) === '@@') {
|
if (substr($translation, 0, 2) === '@@' && substr($translation, -2) === '@@') {
|
||||||
$todo[$message] = $translation;
|
$todo[$message] = $translation;
|
||||||
} else {
|
} else {
|
||||||
$todo[$message] = '@@' . $translation . '@@';
|
$todo[$message] = '@@' . $translation . '@@';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
$merged = array_merge($todo, $merged);
|
$merged = array_merge($todo, $merged);
|
||||||
if ($sort) {
|
if ($sort) {
|
||||||
ksort($merged);
|
ksort($merged);
|
||||||
@@ -221,8 +223,15 @@ class MessageController extends Controller
|
|||||||
if($format === 'po'){
|
if($format === 'po'){
|
||||||
$out_str = '';
|
$out_str = '';
|
||||||
foreach($merged as $k=>$v){
|
foreach($merged as $k=>$v){
|
||||||
$out_str .= "msgid \"$k\"\n";
|
$k = preg_replace('/(\")|(\\\")/', "\\\"", $k);
|
||||||
$out_str .= "msgstr \"$v\"\n";
|
$v = preg_replace('/(\")|(\\\")/', "\\\"", $v);
|
||||||
|
if(substr($v, 0, 2) === '@@' && substr($v, -2) === '@@'){
|
||||||
|
$out_str .= "#msgid \"$k\"\n";
|
||||||
|
$out_str .= "#msgstr \"$v\"\n";
|
||||||
|
}else{
|
||||||
|
$out_str .= "msgid \"$k\"\n";
|
||||||
|
$out_str .= "msgstr \"$v\"\n";
|
||||||
|
}
|
||||||
$out_str .= "\n";
|
$out_str .= "\n";
|
||||||
}
|
}
|
||||||
$merged = $out_str;
|
$merged = $out_str;
|
||||||
@@ -233,6 +242,7 @@ class MessageController extends Controller
|
|||||||
$merged = '';
|
$merged = '';
|
||||||
sort($messages);
|
sort($messages);
|
||||||
foreach($messages as $message) {
|
foreach($messages as $message) {
|
||||||
|
$message = preg_replace('/(\")|(\\\")/', '\\\"', $message);
|
||||||
$merged .= "msgid \"$message\"\n";
|
$merged .= "msgid \"$message\"\n";
|
||||||
$merged .= "msgstr \"\"\n";
|
$merged .= "msgstr \"\"\n";
|
||||||
$merged .= "\n";
|
$merged .= "\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user