* @author Kornel LesiƄski * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License * @version SVN: $Id: Domain.php 605 2009-05-03 02:50:26Z kornel $ * @link http://phptal.org/ */ /** * i18n:domain * * The i18n:domain attribute is used to specify the domain to be used to get * the translation. If not specified, the translation services will use a * default domain. The value of the attribute is used directly; it is not * a TALES expression. * * @package PHPTAL * @subpackage Php.attribute.i18n */ class PHPTAL_Php_Attribute_I18N_Domain extends PHPTAL_Php_Attribute { public function before(PHPTAL_Php_CodeWriter $codewriter) { // ensure a domain stack exists or create it $codewriter->doIf('!isset($_i18n_domains)'); $codewriter->pushCode('$_i18n_domains = array()'); $codewriter->doEnd(); $expression = $codewriter->interpolateTalesVarsInString($this->expression); // push current domain and use new domain $code = '$_i18n_domains[] = $_translator->useDomain('.$expression.')'; $codewriter->pushCode($code); } public function after(PHPTAL_Php_CodeWriter $codewriter) { // restore domain $code = '$_translator->useDomain(array_pop($_i18n_domains))'; $codewriter->pushCode($code); } }