$previousEntries = null; if (file_exists($output)) { $previousEntries = $po->read($output); } echo Colors::colorize('Translating : %b' . count($entries) . '%n entries from ' . $from . ' to ' . $to . PHP_EOL); $progress = new Bar('Translate status ', count($entries)); foreach ($entries as $entry => $data) { $translate = ""; $skipped = ""; if (isset($previousEntries) && !empty($previousEntries[$entry]['msgstr'][0])) { $skipped = "(skipped)"; $translate = $previousEntries[$entry]['msgstr'][0]; } else { $translate = $translator->translate($entry, $from, $to); } $po->update_entry($entry, $translate); if ($verbose) { echo $verbose ? " {$entry} => {$translate} {$skipped}" . PHP_EOL : null; } else { $progress->tick(); } } if (!$verbose) { $progress->finish(); } echo 'Save output to: ' . $output . PHP_EOL; $po->write($output); } catch (\DownloadException $e) { $response = @json_decode($e->getResponse()); if (isset($response->error->errors[0]->reason) && $response->error->errors[0]->reason === 'keyInvalid') { die(Colors::colorize('%rInvalid Google Translate API key%n' . PHP_EOL));