mmlCache does cache the complete result for each language.
It does also process and cache normally uncachable tags.
Everything inside mmlCache, which schouldn't be cached at all and processed later by MODX outside of mmlCache needs to be
in tags like that:
[![!FormIt? &hooks=`spam,email,redirect` &emailTpl=`contactEmail-de` &emailTo=`customers-email-address` &redirectTo=`19`]]
<p>[![!+fi.error.error_message]]</p>
<form action="[[~[[*id]]]]" method="post" class="form">
<input type="hidden" name="nospam:blank" value="" />
<br class="clear" />
<label for="name">
Name:
</label>
<input type="text" size="40" name="name:required" id="name" value="[![!+fi.name]]" /> [[!+fi.error.name]]
<br class="clear" />
<label for="email">
E-Mail:
</label>
<input type="text" size="40" name="email:email:required" id="email" value="[![!+fi.email]]" /> [[!+fi.error.email]]
<br class="clear" />
<label for="betreff">
Betreff:
</label>
<input type="text" size="40" name="betreff:required" id="betreff" value="[![!+fi.betreff]]" /> [[!+fi.error.betreff]]
<br class="clear" />
<label for="text">
Text:
</label>
<textarea name="text:required:stripTags" id="text" cols="40" rows="5" value="[![!+fi.text]]">[[!+fi.text]]</textarea>
<br class="clear" />
[![!+formit.recaptcha_html]]
[![!+fi.error.recaptcha]]
<br class="clear" />
<div id="button"><input type="submit" value="Senden" /></div>
</form>
You could also put this whole thing into a chunk and call only that chunk absolutely unchached
For example:
[![!$contact-[[++cultureKey]]]]
then everything inside can be as usual.
Btw.:
Another way to translate forms, than using different chunks for each language is using the MODX - lexicon
for Labels.