suffix) ){ $parts = explode( '-', $this->filename() ); $this->suffix = array_pop( $parts ); $this->prefix = implode( '-', $parts ); // handle situations where suffixless name is wrongly taken as the prefix // e.g. "de.po" is valid but "hello.po" is not. // There are still some ambigous 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 array( $this->prefix, $this->suffix ); } /** * @var 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; } /** * @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]; } /** * 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]; } }