Add language detection (guessing)
This commit is contained in:
38
inc/mask.php
38
inc/mask.php
@@ -13,6 +13,8 @@ class Mask extends PhpObject
|
||||
private $asTags;
|
||||
private $asPartsSource;
|
||||
private $aoInstances;
|
||||
|
||||
private $oLang;
|
||||
|
||||
const MASK_FOLDER = 'masks/';
|
||||
const MASK_EXT = '.html';
|
||||
@@ -20,7 +22,7 @@ class Mask extends PhpObject
|
||||
const END_TAG = 'END';
|
||||
const TAG_MARK = '[#]';
|
||||
|
||||
public function __construct($sFileName='')
|
||||
public function __construct($sFileName='', Translator $oLang=null)
|
||||
{
|
||||
//init
|
||||
parent::__construct(__FILE__, Settings::DEBUG);
|
||||
@@ -31,12 +33,10 @@ class Mask extends PhpObject
|
||||
$this->asPartsSource = array();
|
||||
$this->aoInstances = array();
|
||||
$this->sFilePath = '';
|
||||
$this->oLang = $oLang;
|
||||
|
||||
//load file
|
||||
if($sFileName!='')
|
||||
{
|
||||
$this->initFile($sFileName);
|
||||
}
|
||||
if($sFileName!='') $this->initFile($sFileName);
|
||||
}
|
||||
|
||||
public static function getMaskFile($sFileName)
|
||||
@@ -69,6 +69,7 @@ class Mask extends PhpObject
|
||||
$this->sMaskName = $sMaskName;
|
||||
$this->sMask = $sSource;
|
||||
$this->setParts();
|
||||
$this->setLangTags();
|
||||
}
|
||||
|
||||
private function setParts()
|
||||
@@ -134,7 +135,7 @@ class Mask extends PhpObject
|
||||
$sPartSource = $oMask->asPartsSource[$sPartName];
|
||||
|
||||
//Creating new instance
|
||||
$oInstance = new Mask();
|
||||
$oInstance = new Mask('', $this->oLang);
|
||||
$oInstance->initFileFromString($sPartSource, $sPartName);
|
||||
$oMask->aoInstances[$sPartName][] = $oInstance;
|
||||
}
|
||||
@@ -180,16 +181,21 @@ class Mask extends PhpObject
|
||||
}
|
||||
}
|
||||
|
||||
public function getTags()
|
||||
public function getTags($bLang=false)
|
||||
{
|
||||
$sSafeTagMark = preg_quote(self::TAG_MARK);
|
||||
$sPattern = '/'.$sSafeTagMark.'(?P<tag>\w+)'.$sSafeTagMark.'/u';
|
||||
$sPattern = '/'.$sSafeTagMark.'(?P<tag>(lang\:|)\w+)'.$sSafeTagMark.'/u';
|
||||
preg_match_all($sPattern, $this->sMask, $asMatches);
|
||||
return array_unique(array_filter($asMatches['tag']));
|
||||
}
|
||||
|
||||
public function setTag($sTagName, $sTagValue)
|
||||
{
|
||||
//Check if tagged should be translated
|
||||
if(self::isLangTag($sTagValue)) {
|
||||
if(is_null($this->oLang)) $this->addError('Missing Lang Class. Please provide in constructor');
|
||||
else $sTagValue = $this->oLang->getTranslation(mb_substr($sTagValue, 5));
|
||||
}
|
||||
$this->asTags[$sTagName] = $sTagValue;
|
||||
}
|
||||
|
||||
@@ -197,6 +203,22 @@ class Mask extends PhpObject
|
||||
{
|
||||
foreach($asTags as $sTagName=>$sTagValue) $this->setTag($sTagName, $sTagValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Default value for tags tagged as translation: Starting with lang/
|
||||
*/
|
||||
private function setLangTags() {
|
||||
if($this->oLang != null) {
|
||||
$asTags = $this->getTags();
|
||||
foreach($asTags as $sTagName) {
|
||||
if(self::isLangTag($sTagName)) $this->setTag($sTagName, $this->oLang->getTranslation(mb_substr($sTagName, 5)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static function isLangTag($sTag) {
|
||||
return (mb_substr($sTag, 0, 5) == 'lang:');
|
||||
}
|
||||
|
||||
public function getMask()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user