Entry form with field translated accross multiple sites I've got 2 sites, each with a locale (dutch - nl &amp; french - fr). I've set up a frontend entry form that works nicely for all not translated fields, I am however struggling to get it to accept submissions for the translated field in both languages at once.

So what should the name of my HTML input tag be so I can use a translated field in a front-end entry form ?



EDIT: 

As this might not have been clear before, the goal is to be able to send content for both languages in a single form submit. As I understand this will involve some PHP code, which is certainly no problem, but I'm a bit stuck as to what to add where so any pointers are much appreciated.



EXAMPLE

I've got a field with the handle description

I've tried the following input names but without result
 - fields[description][nl]
 - fields[nl][description]
Craft has no default process to handle such things, you need to do that on your own. Here is a form and a controller example how it could be achieved.

{# just to show you.. you can edit existing one as well #}
{% set entry1 = craft.entries.id(11).siteId(1).one() %}
{% set entry2 = craft.entries.id(11).siteId(2).one() %}

&lt;form method="post"&gt;
    {{ csrfInput() }}
    &lt;input type="hidden" name="action" value="my-module/save"&gt;

    {# if you have an ID use it #}
    {% if entry1 is defined and entry1 is not null %}
        &lt;input type="hidden" name="id" value="{{ entry1.id }}"&gt;
    {% endif %}

    {# the site ids you want to store, you can as well use the handle or whatever you want #}
    &lt;input type="hidden" name="siteId[]" value="1"&gt;
    &lt;input type="hidden" name="siteId[]" value="2"&gt;

    {# title #}
    &lt;p&gt;Title Site 1&lt;/p&gt;
    &lt;input type="text" name="title[1]" value="{{ entry1.title?? '' }}"&gt;

    &lt;p&gt;Title Site 2&lt;/p&gt;
    &lt;input type="text" name="title[2]" value="{{ entry2.title?? '' }}"&gt;

    {# a field #}
    &lt;p&gt;Headline site 1&lt;/p&gt;
    &lt;input type="text" name="fields[1][headline]" value="{{ entry1.headline?? '' }}"&gt;

    &lt;p&gt;Headline site 2&lt;/p&gt;
    &lt;input type="text" name="fields[2][headline]" value="{{ entry2.headline?? '' }}"&gt;

    {# slug #}
    &lt;p&gt;Slug site 1&lt;/p&gt;
    &lt;input type="text" name="slug[1]" value="{{ entry1.slug?? '' }}"&gt;

    &lt;p&gt;Slug site 2&lt;/p&gt;
    &lt;input type="text" name="slug[2]" value="{{ entry2.slug?? '' }}"&gt;

    &lt;input type="submit"&gt;
&lt;/form&gt;


And then in your Controller

/**
 * actionIndex
 *
 *
 * @throws \Throwable
 * @throws \craft\errors\ElementNotFoundException
 * @throws \yii\base\Exception
 * @throws \yii\web\BadRequestHttpException
 * @return \yii\web\Response
 */
public function actionIndex(): \yii\web\Response
{
    // grab all the sites you want to store
    $request = Craft::$app-&gt;getRequest();
    $sites = $request-&gt;getRequiredBodyParam('siteId');

    $elements = Craft::$app-&gt;getElements();
    // change the handle of course
    $section = Craft::$app-&gt;getSections()-&gt;getSectionByHandle('news');
    // only applies to me, you need to figure out the type on your own
    // note: don't just grab things by id if you use the project config
    // please check if those variables are not null
    $type = $section-&gt;getEntryTypes()[0];

    $elementId = null;
    $element = null;
    foreach ($sites as $siteId) {
        // TODO check if the site exists
        $elementId = (int)$request-&gt;getBodyParam('id', $elementId);
        if ($elementId !== 0) {
            $element = $elements-&gt;getElementById($elementId, Entry::class, (int) $siteId);
        }

        if ($element === null) {
            $element = new Entry(
                [
                    'sectionId' =&gt; $section-&gt;id,
                    'typeId'    =&gt; $type-&gt;id
                ]
            );
        }

        $this-&gt;populateModel($element, $siteId);
        if($elements-&gt;saveElement($element) === false){
            // handle errors somehow
            echo "&lt;pre&gt;";
            var_dump($element-&gt;getErrors());
            echo "&lt;/pre&gt;";
            die();
        }

        $elementId = $element-&gt;id;
    }

    return $this-&gt;asJson(['success' =&gt; true]);
}

/**
 * populateModel
 *
 * @param \craft\base\ElementInterface $element
 * @param                              $siteId
 */
public function populateModel(ElementInterface $element, $siteId)
{
    /** @var Entry $element */
    $request = Craft::$app-&gt;getRequest();
    $element-&gt;title = $request-&gt;getBodyParam('title.' . $siteId, $element-&gt;title);
    $element-&gt;slug = $request-&gt;getBodyParam('slug.' . $siteId, $element-&gt;slug);
    $element-&gt;enabled = $request-&gt;getBodyParam('enabled.' . $siteId, $element-&gt;enabled);
    // and so on.. continue with the rest you want to post + the author..

    $fieldsLocation = 'fields.' . $siteId;
    $element-&gt;setFieldValuesFromRequest($fieldsLocation);
}