<?php
+/**
+ * @copyright Copyright (C) 2010-2023, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
namespace Friendica\Console;
+use \RecursiveDirectoryIterator;
+use \RecursiveIteratorIterator;
+
/**
* Extracts translation strings from the Friendica project's files to be exported
* to Transifex for translation.
*
* Outputs a PHP file with language strings used by Friendica
- *
- * @author Hypolite Petovan <hypolite@mrpetovan.com>
*/
class Extract extends \Asika\SimpleConsole\Console
{
return $help;
}
- protected function doExecute()
+ protected function doExecute(): int
{
if ($this->getOption('v')) {
$this->out('Class: ' . __CLASS__);
$arr = [];
$files = array_merge(
- ['index.php', 'boot.php'],
+ ['index.php'],
glob('mod/*'),
- glob('include/*'),
glob('addon/*/*'),
$this->globRecursive('src')
);
foreach ($files as $file) {
$str = file_get_contents($file);
- $pat = '|L10n::t\(([^\)]*+)[\)]|';
- $patt = '|L10n::tt\(([^\)]*+)[\)]|';
+ $pat = '|->t\(([^\)]*+)[\)]|';
+ $patt = '|->tt\(([^\)]*+)[\)]|';
$matches = [];
$matchestt = [];
$arr[] = $matchtkns[0];
- $s .= '$a->strings[' . $matchtkns[0] . "] = array(\n";
+ $s .= '$a->strings[' . $matchtkns[0] . "] = [\n";
$s .= "\t0 => " . $matchtkns[0] . ",\n";
$s .= "\t1 => " . $matchtkns[1] . ",\n";
- $s .= ");\n";
+ $s .= "];\n";
}
}
}
return 0;
}
- private function globRecursive($path) {
- $dir_iterator = new \RecursiveDirectoryIterator($path);
- $iterator = new \RecursiveIteratorIterator($dir_iterator, \RecursiveIteratorIterator::SELF_FIRST);
+ /**
+ * Returns an array with found files and directories including their paths.
+ *
+ * @param string $path Base path to scan
+ *
+ * @return array A flat array with found files and directories
+ */
+ private function globRecursive(string $path): array
+ {
+ $dir_iterator = new RecursiveDirectoryIterator($path);
+ $iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
$return = [];
foreach ($iterator as $file) {