mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 14:46:19 +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