Drupal 8 multilingual node edit
The entity passed in the $form_object is simply ignored, as the whole $form_object thing - it is used only to determine the form id. You may add entity to the form_state, but with the original drupal form generation it is ignored too.

To set the node edit translation you need to set $form_state-&gt;set('langcode', $langcode);

The full thing emulating drupal's node edit form looks like so:

public function customEdit($type = 'node', $id, $langcode) {
    $request = \Drupal::request();
    $entity = Node::load($id);
    $form_object = \Drupal::entityManager()-&gt;getFormObject('node', 'edit')-&gt;setEntity($entity);

    // Add the form and form_state to trick the getArguments method of the
    // controller resolver.
    $form_state = new FormState();
    $request-&gt;attributes-&gt;set('form', array());
    $request-&gt;attributes-&gt;set('form_state', $form_state);

    $args = \Drupal::service('controller_resolver')-&gt;getArguments($request, array($form_object, 'buildForm'));

    $request-&gt;attributes-&gt;remove('form');
    $request-&gt;attributes-&gt;remove('form_state');

    // Remove $form and $form_state from the arguments, and re-index them.
    unset($args[0], $args[1]);
    $form_state-&gt;addBuildInfo('args', array_values($args));

    $form_state-&gt;set('langcode', $langcode);

    $render_array = \Drupal::service('form_builder')-&gt;buildForm($form_object, $form_state);

    return $render_array;
  }


The answer is actual for the Drupal 8 beta 2, I'm sure the ability to edit different language node versions would be fixed before release.