The I18N namespace allows some variable interpolation in your translations.
# english
msgid "welcome"
msgstr "Welcome ${name} you have ${n} mails!"
# french
msgid "welcome"
msgstr "Bienvenue ${name} vous avez recu ${n} messages!"
A template can use this interpolation as follows:
<span i18n:translate="welcome">
Welcome
<span i18n:name="name" tal:replace="user/name"/>
you currently have
<span i18n:name="n" tal:replace="user/unreadeMails"/>
unread messages!
</span>
Because i18n:translate
contains a value 'welcome', the template data will be ignored and the message given by gettext will be used instead.