protected function saveMessagesCategoryToPHP($messages, $fileName, $overwrite, $removeUnused, $sort, $category, $markUnused)
    {
        if (is_file($fileName)) {
            $rawExistingMessages = require $fileName;
            $existingMessages = $rawExistingMessages;
            sort($messages);
            ksort($existingMessages);
            if (array_keys($existingMessages) === $messages && (!$sort || array_keys($rawExistingMessages) === $messages)) {
                $this->stdout("Nothing new in \"$category\" category... Nothing to save.\n\n", Console::FG_GREEN);
                return ExitCode::OK;
            }
            unset($rawExistingMessages);
            $merged = [];
            $untranslated = [];
            foreach ($messages as $message) {
                if (array_key_exists($message, $existingMessages) && $existingMessages[$message] !== '') {
                    $merged[$message] = $existingMessages[$message];
                } else {
                    $untranslated[] = $message;
                }
            }
            ksort($merged);
            sort($untranslated);
            $todo = [];
            foreach ($untranslated as $message) {
                $todo[$message] = '';
            }
            ksort($existingMessages);
            foreach ($existingMessages as $message => $translation) {
                if (!$removeUnused && !isset($merged[$message]) && !isset($todo[$message])) {
                    if (!$markUnused || (!empty($translation) && (strncmp($translation, '@@', 2) === 0 && substr_compare($translation, '@@', -2, 2) === 0))) {
                        $todo[$message] = $translation;
                    } else {
                        $todo[$message] = '@@' . $translation . '@@';
                    }
                }
            }
            $merged = array_merge($todo, $merged);
            if ($sort) {
                ksort($merged);
            }
            if (false === $overwrite) {
                $fileName .= '.merged';
            }
            $this->stdout("Translation merged.\n");
        } else {
            $merged = [];
            foreach ($messages as $message) {
                $merged[$message] = '';
            }
            ksort($merged);
        }

        $array = VarDumper::export($merged);
        $content = <<<EOD
<?php
{$this->config['phpFileHeader']}{$this->config['phpDocBlock']}
return $array;

EOD;

        if (file_put_contents($fileName, $content, LOCK_EX) === false) {
            $this->stdout("Translation was NOT saved.\n\n", Console::FG_RED);
            return ExitCode::UNSPECIFIED_ERROR;
        }

        $this->stdout("Translation saved.\n\n", Console::FG_GREEN);
        return ExitCode::OK;
    }
protected function saveMessagesCategoryToPHP($messages, $fileName, $overwrite, $removeUnused, $sort, $category, $markUnused)
    {
        if (is_file($fileName)) {
            $rawExistingMessages = require $fileName;
            $existingMessages = $rawExistingMessages;
            sort($messages);
            ksort($existingMessages);
            if (array_keys($existingMessages) === $messages && (!$sort || array_keys($rawExistingMessages) === $messages)) {
                $this->stdout("Nothing new in \"$category\" category... Nothing to save.\n\n", Console::FG_GREEN);
                return ExitCode::OK;
            }
            unset($rawExistingMessages);
            $merged = [];
            $untranslated = [];
            foreach ($messages as $message) {
                if (array_key_exists($message, $existingMessages) && $existingMessages[$message] !== '') {
                    $merged[$message] = $existingMessages[$message];
                } else {
                    $untranslated[] = $message;
                }
            }
            ksort($merged);
            sort($untranslated);
            $todo = [];
            foreach ($untranslated as $message) {
                $todo[$message] = '';
            }
            ksort($existingMessages);
            foreach ($existingMessages as $message => $translation) {
                if (!$removeUnused && !isset($merged[$message]) && !isset($todo[$message])) {
                    if (!$markUnused || (!empty($translation) && (strncmp($translation, '@@', 2) === 0 && substr_compare($translation, '@@', -2, 2) === 0))) {
                        $todo[$message] = $translation;
                    } else {
                        $todo[$message] = '@@' . $translation . '@@';
                    }
                }
            }
            $merged = array_merge($todo, $merged);
            if ($sort) {
                ksort($merged);
            }
            if (false === $overwrite) {
                $fileName .= '.merged';
            }
            $this->stdout("Translation merged.\n");
        } else {
            $merged = [];
            foreach ($messages as $message) {
                $merged[$message] = '';
            }
            ksort($merged);
        }

        $array = VarDumper::export($merged);
        $content = <<<EOD
<?php
{$this->config['phpFileHeader']}{$this->config['phpDocBlock']}
return $array;

EOD;

        if (file_put_contents($fileName, $content, LOCK_EX) === false) {
            $this->stdout("Translation was NOT saved.\n\n", Console::FG_RED);
            return ExitCode::UNSPECIFIED_ERROR;
        }

        $this->stdout("Translation saved.\n\n", Console::FG_GREEN);
        return ExitCode::OK;
    }
protected function saveMessagesCategoryToPHP ( $ messages , $ fileName , $ overwrite , $ removeUnused , $ sort , $ category , $ markUnused ) { if ( is_file ( $ fileName ) ) { $ rawExistingMessages = require $ fileName ; $ existingMessages = $ rawExistingMessages ; sort ( $ messages ) ; ksort ( $ existingMessages ) ; if ( array_keys ( $ existingMessages ) === $ messages && ( ! $ sort || array_keys ( $ rawExistingMessages ) === $ messages ) ) { $ this -> stdout ( "Nothing new in \"$category\" category... Nothing to save.\n\n" , Console :: FG_GREEN ) ; return ExitCode :: OK ; } unset ( $ rawExistingMessages ) ; $ merged = [ ] ; $ untranslated = [ ] ; foreach ( $ messages as $ message ) { if ( array_key_exists ( $ message , $ existingMessages ) && $ existingMessages [ $ message ] !== '' ) { $ merged [ $ message ] = $ existingMessages [ $ message ] ; } else { $ untranslated [ ] = $ message ; } } ksort ( $ merged ) ; sort ( $ untranslated ) ; $ todo = [ ] ; foreach ( $ untranslated as $ message ) { $ todo [ $ message ] = '' ; } ksort ( $ existingMessages ) ; foreach ( $ existingMessages as $ message => $ translation ) { if ( ! $ removeUnused && ! isset ( $ merged [ $ message ] ) && ! isset ( $ todo [ $ message ] ) ) { if ( ! $ markUnused || ( ! empty ( $ translation ) && ( strncmp ( $ translation , '@@' , 2 ) === 0 && substr_compare ( $ translation , '@@' , - 2 , 2 ) === 0 ) ) ) { $ todo [ $ message ] = $ translation ; } else { $ todo [ $ message ] = '@@' . $ translation . '@@' ; } } } $ merged = array_merge ( $ todo , $ merged ) ; if ( $ sort ) { ksort ( $ merged ) ; } if ( false === $ overwrite ) { $ fileName .= '.merged' ; } $ this -> stdout ( "Translation merged.\n" ) ; } else { $ merged = [ ] ; foreach ( $ messages as $ message ) { $ merged [ $ message ] = '' ; } ksort ( $ merged ) ; } $ array = VarDumper :: export ( $ merged ) ; $ content =  <<<EOD
<?php
{$this->config['phpFileHeader']}{$this->config['phpDocBlock']}
return $array;

EOD ; if ( file_put_contents ( $ fileName , $ content , LOCK_EX ) === false ) { $ this -> stdout ( "Translation was NOT saved.\n\n" , Console :: FG_RED ) ; return ExitCode :: UNSPECIFIED_ERROR ; } $ this -> stdout ( "Translation saved.\n\n" , Console :: FG_GREEN ) ; return ExitCode :: OK ; }
Writes category messages into PHP file.

@param array $messages
@param string $fileName name of the file to write to
@param bool $overwrite if existing file should be overwritten without backup
@param bool $removeUnused if obsolete translations should be removed
@param bool $sort if translations should be sorted
@param string $category message category
@param bool $markUnused if obsolete translations should be marked
@return int exit code
Writes category messages into PHP file .