| Server IP : 10.10.92.66 / Your IP : 104.23.197.231 Web Server : Apache/2.4.52 (Ubuntu) System : Linux jurnalpolinema 5.15.0-177-generic #187-Ubuntu SMP Sat Apr 11 22:54:33 UTC 2026 x86_64 User : jurnal ( 1001) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/jurnal/public_html/lib/pkp/tools/ |
Upload File : |
<?php
/**
* @file tools/removeLocaleKey.php
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @class RemoveLocaleKey
* @ingroup tools
*
* @brief Remove a locale key from all locale files.
*/
require(dirname(dirname(dirname(dirname(__FILE__)))) . '/tools/bootstrap.inc.php');
class RemoveLocaleKey extends CommandLineTool {
/** @var string Locale key to be removed */
public $localeKey = '';
/** @var string Which files to remove the locale key from */
public $dirs = ['locale', 'lib/pkp/locale'];
/**
* Constructor
*/
function __construct($argv = array()) {
parent::__construct($argv);
if (!sizeof($this->argv)) {
$this->usage();
exit(1);
}
array_shift($argv);
$this->localeKey = array_shift($argv);
if (sizeof($this->argv) > 2) {
$this->dirs = $argv;
}
}
/**
* Print command usage information.
*/
function usage() {
echo "\nRemove a locale key from all locale files.\n\n"
. " Usage: php {$this->scriptName} [localeKey] ([path] [path])\n\n"
. " Remove locale keys from app:\n php {$this->scriptName} locale.key locale\n\n"
. " Remove locale keys from pkp-lib:\n php {$this->scriptName} locale.key lib/pkp/locale\n\n"
. " If no path is specified it will remove the locale\n key from files in both directories.\n\n";
}
/**
* Remove the requested locale key
*/
function execute() {
$localeKeyLine = 'msgid "' . $this->localeKey . '"';
$rootDir = dirname(dirname(dirname(dirname(__FILE__))));
foreach ($this->dirs as $dir) {
$locales = scandir($rootDir . '/' . $dir);
foreach ($locales as $locale) {
if ($locale === '.' || $locale === '..') {
continue;
}
$localeDir = join('/', [$rootDir, $dir, $locale]);
$files = scandir($localeDir);
foreach ($files as $file) {
if ($file === '.' || $file === '..' || substr($file, -2) !== 'po') {
continue;
}
$content = file_get_contents($localeDir . '/' . $file);
$lines = explode("\n", $content);
$newLines = [];
$removing = false;
foreach($lines as $line) {
if ($localeKeyLine === substr($line, 0, strlen($localeKeyLine))) {
$removing = true;
} elseif ($removing && 'msgid' === substr($line, 0, strlen('msgid'))) {
$removing = false;
}
if (!$removing) {
$newLines[] = $line;
}
}
if (count($lines) !== count($newLines)) {
file_put_contents($localeDir . '/' . $file, join("\n", $newLines));
echo (count($lines) - count($newLines)) . " lines removed from $localeDir/$file.\n";
}
}
}
}
}
}
$tool = new RemoveLocaleKey(isset($argv) ? $argv : array());
$tool->execute();