Hi Elly,
I suggest you could do translation with javascript, thus you won't need to create duplicate form field records in crm.
Because CRM form has provided some convenient APIs for us to add our own customization for marketing form.
In your scenario, we could apply customization at "afterFormLoad" event.
I've added necessary comments in code, you could take them as reference and then change it to work for your owns.
// Do translation after marketing form is loaded
MsCrmMkt.MsCrmFormLoader.on("afterFormLoad", function (event) {
// Detect current user language
var langName = detectLanguage();
// Only do translation if current language is not English
if (langName !== "eng") {
// Field name are saved in label element
var labels = document.getElementsByTagName("label");
labels[0].innerText = translation[langName].firstname;
labels[1].innerText = translation[langName].lastname;
labels[2].innerText = translation[langName].email;
labels[3].innerText = translation[langName].jobtitle;
labels[4].innerText = translation[langName].shippingmethod;
}
});
function detectLanguage() {
var userLanguage = navigator.language.slice(0, 2);
/**
* You can extend more translation texts,
* For example, if contact speaks spanish, then userLanguage should be "es",
* you can add case "es": return "Spanish"; then add new spanish translation in translation variable.
* Currently it'll only translate fields for French and German contacts, if he/she is a Spanish or Italian,
* he/she will still see English (default will return eng, which means not translate)
**/
switch (userLanguage) {
case "fr":
return "French";
case "de":
return "German";
default:
return "eng";
}
}
var translation = {
French: {
firstname: "Prénom",
lastname: "Nom",
email: "Courriel",
jobtitle: "Profession",
shippingmethod: "Mode de livraison"
},
German: {
firstname: "Vorname",
lastname: "Nachname",
email: "E-Mail",
jobtitle: "Berufsbezeichnung",
shippingmethod: "Versandart"
}
// Extend translation here, each translation should be separated with comma, but comma is not required for final item
};
You could see result if you had a same marketing form with those fields and paste code in your marketing page source code.
(Embed code after end of body tag: </body>, and surround code with script tag: <script> ..code.. </script>)
Original version:

Preview if I change browser language to German.

In addition, you can also change text in optionset to specific language:
Following code will change first option of first optionset text to specific text.
document.getElementsByTagName("select")[0.options[0.innerText= 'per Post versenden';

It only changes text from client side, but option item inside optionset will still map to corrensponding item in CRM,
so you could only keep one optionset if you would also like to show option items in different languages.
Regards,
Clofly