我正在尝试创建一个可以按如下方式使用的树枝标记:
class MaterialInventoryManager(models.Manager):
def total_active_inventory(self):
return self.get_query_set().annotate(total_inventory=Sum('inventory__quantity')).filter(is_active = True)
class Material(models.Model):
version = IntegerVersionField( )
code = models.CharField(max_length=30)
name = models.CharField(max_length=30)
description = models.TextField(null=True, blank=True)
materialuom = models.CharField(max_length=1,
choices=UOM_CHOICES)
creation_time = models.DateTimeField(auto_now_add=True, blank=True)
total_inventory = MaterialInventoryManager()
objects = MaterialInventoryManager()
@with_author
class Inventory(models.Model):
material = models.OneToOneField('item.Material',null=True, blank=True)
# material_UOM = models.OneToOneField('item.UOM_BINUOM',null=True, blank=True)
warehouse_Bin = models.ForeignKey(WarehouseBin)
is_active = models.BooleanField(default=True)
quantity = models.DecimalField(max_digits=8, decimal_places=5)
creation_time = models.DateTimeField(auto_now_add=True, blank=True)
{% set_domain "zip-recipes" %}
...
...
{% trans "Ingredients" %}
...
{% trans "Ingredients" %}
代码需要在trans
代码中设置域名。
我为set_domain
创建了节点和解析器,将域添加到set_domain
:
$context
但是,我不确定如何在class Project_TransDomain_Node extends \Twig_Node
{
public function __construct($domain, $line, $tag = null)
{
parent::__construct(array(), array('domain' => $domain), $line, $tag);
}
public function compile(\Twig_Compiler $compiler)
{
$compiler
->addDebugInfo($this)
->write('$context[\'trans_domain\'] = "' . $this->getAttribute('domain') . '"')
->raw(";\n")
;
}
}
class TransDomain_TokenParser extends \Twig_TokenParser
{
public function parse(\Twig_Token $token)
{
$parser = $this->parser;
$stream = $parser->getStream();
$domain = $stream->expect(\Twig_Token::STRING_TYPE)->getValue();
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
return new Project_TransDomain_Node($domain, $token->getLine(), $this->getTag());
}
public function getTag()
{
return 'set_domain';
}
}
node
中访问该内容。
我试过了,但它没有评估trans
:
$context['trans_domain']
答案 0 :(得分:0)
Symfony已经有trans_default_domain
标签(自2.1起),只需使用它。
您可以使用单个标记为整个Twig模板设置翻译域:
{% trans_default_domain "app" %}
请注意,这仅影响当前模板,而不影响任何"包含"模板(为了避免副作用)。