| Server IP : 216.250.13.251 / Your IP : 216.73.216.164 Web Server : nginx/1.24.0 System : Linux gunay 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : root ( 0) 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 : OFF Directory : /proc/self/cwd/wp-content/plugins/loco-translate/src/package/ |
Upload File : |
<?php
/**
* Provides iteration over all installed files for a given language and matches them to bundles
*/
class Loco_package_Locale {
/**
* @var array
*/
private $match;
/**
* @var array
*/
private $bundles;
/**
* Maps file paths to projects in which they were found
* @var ArrayObject
*/
private $index;
/**
* Construct with locale to filter on
* @param Loco_Locale|null
*/
public function __construct( Loco_locale $locale = null ){
$this->index = new ArrayObject;
$this->match = array();
if( $locale ){
$this->addLocale( $locale );
}
}
/**
* Add another locale to search on
* @param Loco_Locale
* @return Loco_package_Locale
*/
public function addLocale( Loco_Locale $locale ){
if( $locale->isValid() ){
$sufx = (string) $locale.'.po';
$this->match[$sufx] = - strlen($sufx);
}
return $this;
}
/**
* @param Loco_fs_File
* @return Loco_package_Project|null
*/
public function getProject( Loco_fs_File $file ){
$path = $file->getPath();
if( isset($this->index[$path]) ){
return $this->index[$path];
}
return null;
}
/**
* @return Loco_package_Bundle[]
*/
public function getBundles(){
$bundles = $this->bundles;
if( ! $bundles ){
$bundles = array( Loco_package_Core::create() );
$bundles = array_merge( $bundles, Loco_package_Plugin::getAll() );
$bundles = array_merge( $bundles, Loco_package_Theme::getAll() );
$this->bundles = $bundles;
}
return $bundles;
}
/**
* @return loco_fs_FileList
*/
public function findLocaleFiles(){
$index = $this->index;
$suffixes = $this->match;
$list = new Loco_fs_FileList;
foreach( $this->getBundles() as $bundle ){
/* @var Loco_package_Project $project */
foreach( $bundle as $project ){
/* @var $file Loco_fs_File */
foreach( $project->findLocaleFiles('po') as $file ){
$path = $file->getPath();
foreach( $suffixes as $sufx => $snip ){
if( substr($path,$snip) === $sufx ){
$list->add( $file );
$index[$path] = $project;
break;
}
}
}
}
}
return $list;
}
/**
* @return loco_fs_FileList
*/
public function findTemplateFiles(){
$index = $this->index;
$list = new Loco_fs_FileList;
foreach( $this->getBundles() as $bundle ){
/* @var $project Loco_package_Project */
foreach( $bundle as $project ){
$file = $project->getPot();
if( $file && $file->exists() ){
$list->add( $file );
$path = $file->getPath();
$index[$path] = $project;
}
}
}
return $list;
}
}