Mapbender3 uses the translator service (Translator) which is a Symfony component.
In the code you use the function trans to translate a text into another language.
Example how the function trans can be used in a Twig template:
{% block title %}{{ application.title | trans }}{% endblock %}
or
{% trans %}{{ application.title }}{% endtrans %}
Example for PHP:
echo $translator->trans('Hello World');
The translations can be stored in different formats. We use XLIFF-format for Mapbender3. Symfony will take the XLIFF-loader to load and parse the file.
This is how a translation file messages.de.xliff for german translation could look like.
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>FeatureInfo</source>
<target>Sachinformation</target>
</trans-unit>
<trans-unit id="2">
<source>Services</source>
<target>Dienste</target>
</trans-unit>
<trans-unit id="3">
<source>X coordinate</source>
<target>X-Koordinate</target>
</trans-unit>
.....
Notice: Each time you create a new translation resource you have to clear your cache.
app/console cache:clear
Activate translator in the configuration file app/config/config.yml
framework:
translator: { fallback: %locale% }
Activate your default locale in the configuration file app/config/parameters.yml
locale: de
Check whether translations (xliff-files) for your language exist
If your language is not translated yet, it is easy to add a new language.
Symfony looks for translation files in the following directories in the following order:
Bundle translations can overwrite translations of the other directories.
The naming convention is domain.locale.loader.