%PDF- %PDF-
Direktori : /home/t/r/a/tradesc/www/albanie/wp-content/plugins/loco-translate/src/fs/ |
Current File : /home/t/r/a/tradesc/www/albanie/wp-content/plugins/loco-translate/src/fs/LocaleFile.php |
<?php /** * A file with metadata about the locale it relates to */ class Loco_fs_LocaleFile extends Loco_fs_File { /** * @var Loco_Locale|null */ private $locale; /** * @var string */ private $suffix; /** * @var string */ private $prefix; /** * @var string */ private $hash = ''; /** * Lazy handling of localized path info * @return array [ prefix, suffix, hash ] */ public function split(){ if( is_null($this->suffix) ){ // note that `filename` isn't used here because of double extensions (.l10n.php) $parts = explode('-',$this->basename() ); $tail = array_pop($parts); $this->suffix = explode('.',$tail,2)[0]; // handle script hashes for JSONs only if( '.json' === substr($tail,-5) && preg_match('/^[0-9a-f]{32}$/',$this->suffix) ){ $this->hash = $this->suffix; $this->suffix = array_pop($parts); } $this->prefix = implode('-',$parts); // handle situations where unsuffixed name is wrongly taken as the prefix // e.g. "de.po" is valid but "hello.po" is not. // There are still some ambiguous situations, e.g. "foo-bar.po" is valid, but nonsense if( ! $this->prefix && ! $this->getLocale()->isValid() ){ $this->prefix = $this->suffix; $this->suffix = ''; $this->locale = null; } } return [ $this->prefix, $this->suffix, $this->hash ]; } /** * @return Loco_Locale */ public function getLocale(){ if( ! $this->locale ){ if( $tag = $this->getSuffix() ){ $this->locale = Loco_Locale::parse($tag); } else { $this->locale = new Loco_Locale(''); } } return $this->locale; } /** * @param $locale Loco_locale * @return Loco_fs_LocaleFile */ public function cloneLocale( Loco_locale $locale ){ $this->split(); $path = (string) $locale; if( $str = $this->prefix ){ $path = $str.'-'.$path; } if( $str = $this->extension() ){ $path .= '.'.$str; } if( $dir = $this->getParent() ){ $path = $dir->getPath().'/'.$path; } return new Loco_fs_LocaleFile($path); } /** * Get prefix (or stem) from name that comes before locale suffix. * @return string */ public function getPrefix(){ $info = $this->split(); return $info[0]; } /** * Get suffix (or locale code) from name that comes after "-" separator * @return string */ public function getSuffix(){ $info = $this->split(); return $info[1]; } /** * @return string */ public function getHash(){ $info = $this->split(); return $info[2]; } /** * Test if file is suffix only, e.g. "en_US.po" * @return bool */ public function hasSuffixOnly(){ $info = $this->split(); return $info[1] && ! $info[0]; } /** * Test if file is prefix only, e.g. "incorrect.po" * @return bool */ public function hasPrefixOnly(){ $info = $this->split(); return $info[0] && ! $info[1]; } }