Make text translatable
In HTML or PHP wrap it like this
<?php p($l→t('This is some text'));?> or this
<?php print_unescaped($l→t('This is some text'));?> For the right
date format use
<?php p($l→l('date', time()));?>. Change the way
dates are shown by editing /core/l10n/l10n-[lang].php To translate text
t('appname','text to translate');
print_unescaped() should be preferred only if you would like to
display HTML code. Otherwise, using
p() is strongly preferred to
escape HTML characters against XSS attacks.
You shall never split sentences!
<?php p($l->t('Select file from')) . ' '; ?><a href='#' id="browselink"><?php p($l->t('local filesystem'));?></a><?php p($l->t(' or ')); ?><a href='#' id="cloudlink"><?php p($l->t('cloud'));?></a>
Translators will translate:
Select file from
’ or "
Translating these individual strings results in
local filesystem and
cloud losing case. The two white spaces surrounding
or will get lost
while translating as well. For languages that have a different
grammatical order it prevents the translators from reordering the
Html in translation strings
Html tags can be kept out of translation strings like in the example below. Then the detail of the tags is uncoupled from the translation.
What about variables in the strings?
If you need to add variables to the translation strings do it like this:
$l->t('%1$s is available. Get %2$smore information%3$s', [$data['versionstring'], '<a href="' . $data['web']] . '">', '</a>');
When there are multiple substitutions, number them. Then the translators have the chance to re-order them if they need to translate the whole sentence in a different word order.
Automated synchronization of translations
Multiple nightly jobs have been setup in order to synchronize
translations - it’s a multi-step process:
perl l10n.pl read will
templates are pushed to
Transifex (tx push -s).
All translations are pulled from
Transifex (tx pull -a).
perl l10n.pl write will write the php files containing the
translations. Finally the changes are pushed to git.
Please follow the steps below to add translation support to your app:
Create a folder
l10n. Create the file
ignorelist which can contain
files which shall not be scanned during step 4. Edit
and copy/past a config section and adopt it by changing the app/folder
perl l10n.pl read with l10n Add the newly created
translation template (l10n/Templates/<appname>.pot) to git and commit
the changes above. After the next nightly sync job a new resource will
appear on Transifex and from now on every night the latest translations
Translation sync jobs:
Caution: information below is in general not needed!
Manual quick translation update:
cd l10n/ && perl l10n.pl read && tx push -s && tx pull -a && perl l10n.pl write && cd ..
The translation script requires Locale::PO, installable via
apt-get install liblocale-po-perl