Skip to content
Snippets Groups Projects
sandbox.twig 3.17 KiB
Newer Older
{% extends "base.twig" %}
Hanne Moa's avatar
Hanne Moa committed
{% block content %}
    <h1>Sandbox</h1>
    <p>This page serves as a demonstration of the <strong>new template and translation sub-systems</strong> in
        SimpleSAMLphp. The page itself is written as a <em>Twig</em> template, which is very similar to other
        templating languages, stored in the <code>templates</code> directory.</p>
    <p>Twig templates allow you to print values of variables very easily. For example, the code <code>{{ '{{ ' }}
            sometext }}</code>
        will print the following text, contained in the variable <code>sometext</code>:
    </p>
    <p><em>{{ sometext }}</em></p>
    <p>Twig supports setting your own variables, control structures like <code>if</code> clauses and loops.
        Take a look at the <a href="http://twig.sensiolabs.org/doc/templates.html">Twig documentation for
        template designers</a> if you want to know more.
    </p>
    <h2>Localization</h2>
    {% set variable = 'Hello, Untranslated World!' %}
    <p>This page is written in english only, but the examples used here are translated to several languages. The current
        language is <strong>{{ currentLanguage }}</strong>. Change to other languages to see the examples change.</p>
    <h4>Usage examples</h4>
    <p>Twig allows you to translate strings in your templates. There are several ways to do that. If you want
        to translate the following text: <em>Hello, Untranslated World!</em>, you can do it with:</p>
    <ul>
        <li><em>Inline trans tags</em>: using <code>{{ '{{' }} 'Hello, Untranslated World!'|trans {{ '}}' }}</code> you would get
            "{{ 'Hello, Untranslated World!'|trans  }}".</li>
        <li><em>Expanded trans tags</em>: using <code>{{ '{%' }} trans {{ '%}' }}Hello, Untranslated World!{{ '{%' }} endtrans
                {{ '%}' }}</code> you would get "{% trans %}Hello, Untranslated World!{% endtrans %}".</li>
        <li><em>Filters</em>: using <code>{{ '{{' }} variable|trans }}</code> you would get "{{ variable|trans }}".</li>
    </ul>
    <p>Translations support arguments too, so that you can replace parts of the translated string with the contents of
        variables. Just use placeholders of the form <code>%variable%</code> in the place where the contents of the
        variables should be placed, and pass an associative array to the <code>trans </code> filter.</p>
    {% set variable = 'Hello, %who%!' %}
    {% set world = 'World'|trans %}
    {% set who = {'%who%': world} %}
    <p>If you have a variable with the text "<code>Hello, %who%!</code>" The code <code>{{ '{{' }}
        variable|trans({'%who%': 'World' }) }}</code> will print "{{ variable|trans({'%who%': 'World' }) }}". The array
        can also be passed in a variable, so that  <code>{{ '{{' }} variable|trans(who) }}</code> will output
        "{{ variable|trans(who) }}" when the variable <code>who</code> is defined as <code>{'%who%': world}</code> and
        <code>world</code> is also a variable with the translation of the contents, for example, <code>{{ '{%' }}
        set world = 'World'|trans %}</code>. Note that placeholders have names, so order is irrelevant, and can be
        changed between translations.</p>
Hanne Moa's avatar
Hanne Moa committed
{% endblock content %}