function TwigNodeTrans::compile
Same name in other branches
- 8.9.x core/lib/Drupal/Core/Template/TwigNodeTrans.php \Drupal\Core\Template\TwigNodeTrans::compile()
- 10 core/lib/Drupal/Core/Template/TwigNodeTrans.php \Drupal\Core\Template\TwigNodeTrans::compile()
- 11.x core/lib/Drupal/Core/Template/TwigNodeTrans.php \Drupal\Core\Template\TwigNodeTrans::compile()
File
-
core/
lib/ Drupal/ Core/ Template/ TwigNodeTrans.php, line 50
Class
- TwigNodeTrans
- A class that defines the Twig 'trans' tag for Drupal.
Namespace
Drupal\Core\TemplateCode
public function compile(Compiler $compiler) {
$compiler->addDebugInfo($this);
[
$singular,
$tokens,
] = $this->compileString($this->getNode('body'));
$plural = NULL;
if ($this->hasNode('plural')) {
[
$plural,
$pluralTokens,
] = $this->compileString($this->getNode('plural'));
$tokens = array_merge($tokens, $pluralTokens);
}
// Start writing with the function to be called.
$compiler->write('echo ' . (empty($plural) ? 't' : '\\Drupal::translation()->formatPlural') . '(');
// Move the count to the beginning of the parameters list.
if (!empty($plural)) {
$compiler->raw('abs(')
->subcompile($this->getNode('count'))
->raw('), ');
}
// Write the singular text parameter.
$compiler->subcompile($singular);
// Write the plural text parameter, if necessary.
if (!empty($plural)) {
$compiler->raw(', ')
->subcompile($plural);
}
// Write any tokens found as an associative array parameter, otherwise just
// leave as an empty array.
$compiler->raw(', array(');
foreach ($tokens as $token) {
$compiler->string($token->getAttribute('placeholder'))
->raw(' => ')
->subcompile($token)
->raw(', ');
}
$compiler->raw(')');
// Write any options passed.
if ($this->hasNode('options')) {
$compiler->raw(', ')
->subcompile($this->getNode('options'));
}
// Write function closure.
$compiler->raw(')');
// @todo Add debug output, see https://www.drupal.org/node/2512672
// End writing.
$compiler->raw(";\n");
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.