==================
Blocktrans
==================

{% blocktrans %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag)
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktranslate
==================

{% blocktranslate %}hi{% endblocktranslate %}

---

(template
  (content)
  (blocktranslate_group
    (blocktranslate_block
      (blocktranslate_tag)
      (content))
    (endblocktranslate_tag))
  (content))

==================
Blocktrans Empty
==================

{% blocktrans %}{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With A Placeholder
==================

{% blocktrans %}hi {{ name }}{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag)
      (content)
      (template_variable
        (filtered_value
          (value
            (variable_attribute
              (identifier))))))
    (endblocktrans_tag))
  (content))

==================
Blocktrans Trimmed
==================

{% blocktrans trimmed %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag)
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With
==================

{% blocktrans with a=b %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Several Bindings
==================

{% blocktrans with a=b c=d %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier))))
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With A Filtered Binding
==================

{% blocktrans with a=b|upper %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))
          (filter_expression
            (filter))))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Context
==================

{% blocktrans context "menu" %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (filtered_value
          (value
            (literal
              (string)))))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Asvar
==================

{% blocktrans asvar out %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        asvar: (identifier))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Count And Plural
==================

{% blocktrans count n=x %}one{% plural %}many{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content)
      (plural_block
        (plural_tag)
        (content)))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With An Empty Singular
==================

{% blocktrans count n=x %}{% plural %}many{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (plural_block
        (plural_tag)
        (content)))
    (endblocktrans_tag))
  (content))

==================
Blocktranslate With An Empty Plural
==================

{% blocktranslate count n=x %}one{% plural %}{% endblocktranslate %}

---

(template
  (content)
  (blocktranslate_group
    (blocktranslate_block
      (blocktranslate_tag
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content)
      (plural_block
        (plural_tag)))
    (endblocktranslate_tag))
  (content))

==================
Blocktrans With Every Option
==================

{% blocktrans trimmed with a=b count n=x context "menu" asvar out %}s{% plural %}p{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier))))
        variable: (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier))))
        (filtered_value
          (value
            (literal
              (string))))
        asvar: (identifier))
      (content)
      (plural_block
        (plural_tag)
        (content)))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Its Options Reordered
==================

{% blocktrans asvar out trimmed %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        asvar: (identifier))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans Closed By The Other Spelling
:error
==================

{% blocktrans %}hi{% endblocktranslate %}

---


==================
Blocktranslate Closed By The Other Spelling
:error
==================

{% blocktranslate %}hi{% endblocktrans %}

---


==================
Blocktrans With Count And No Plural
==================

{% blocktrans count n=x %}one{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content)
      (missing_plural_tag))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Plural And No Count
:error
==================

{% blocktrans %}one{% plural %}many{% endblocktrans %}

---


==================
Blocktrans Counting Two Bindings
==================

{% blocktrans count n=x c=d %}one{% plural %}many{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier))))
        (unexpected_argument))
      (content)
      (plural_block
        (plural_tag)
        (content)))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Nothing To Bind
:error
==================

{% blocktrans with %}hi{% endblocktrans %}

---


==================
Blocktrans With An Unknown Option
==================

{% blocktrans bogus %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (unexpected_argument))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Asvar And No Name
:error
==================

{% blocktrans asvar %}hi{% endblocktrans %}

---


==================
Blocktrans Holding A Tag
:error
==================

{% blocktrans %}a{% if x %}b{% endif %}{% endblocktrans %}

---


==================
Blocktrans Holding A Comment
:error
==================

{% blocktrans %}a{# c #}b{% endblocktrans %}

---


==================
Blocktrans Holding Another Blocktrans
:error
==================

{% blocktrans %}a{% blocktrans %}b{% endblocktrans %}{% endblocktrans %}

---


==================
Blocktrans With Two Plurals
==================

{% blocktrans count n=x %}one{% plural %}many{% plural %}x{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content)
      (plural_block
        (plural_tag)
        (content)))
    (missing_endblocktrans_tag))
  (unexpected_tag)
  (content)
  (unexpected_tag)
  (content))

==================
Blocktrans With An Argument On Plural
==================

{% blocktrans count n=x %}one{% plural extra %}many{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier)))))
      (content)
      (plural_block
        (plural_tag
          (unexpected_argument))
        (content)))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Trimmed Twice
==================

{% blocktrans trimmed trimmed %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (unexpected_argument))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With With Twice
==================

{% blocktrans with a=b with c=d %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier))))
        (unexpected_argument))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Context Twice
==================

{% blocktrans context "a" context "b" %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (filtered_value
          (value
            (literal
              (string))))
        (unexpected_argument))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Asvar Twice
==================

{% blocktrans asvar x asvar y %}hi{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (unexpected_argument))
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With Count Twice
==================

{% blocktrans count n=x count m=y %}a{% plural %}b{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (variable_attribute
              (identifier))))
        (unexpected_argument))
      (content)
      (plural_block
        (plural_tag)
        (content)))
    (endblocktrans_tag))
  (content))

==================
Blocktranslate With Trimmed Twice
==================

{% blocktranslate trimmed trimmed %}hi{% endblocktranslate %}

---

(template
  (content)
  (blocktranslate_group
    (blocktranslate_block
      (blocktranslate_tag
        (unexpected_argument))
      (content))
    (endblocktranslate_tag))
  (content))

==================
Blocktrans Repeating An Option Of The Tag Before It
==================

{% blocktrans trimmed %}a{% endblocktrans %}{% blocktrans trimmed %}b{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag)
      (content))
    (endblocktrans_tag))
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag)
      (content))
    (endblocktrans_tag))
  (content))

==================
Blocktrans With A Binding Twice
==================

{% blocktrans with a=1 a=2 %}x{% endblocktrans %}

---

(template
  (content)
  (blocktranslate_group
    (blocktrans_block
      (blocktrans_tag
        (identifier)
        (filtered_value
          (value
            (literal
              (number))))
        (unexpected_argument))
      (content))
    (endblocktrans_tag))
  (content))
