Problem/Motivation

When adding translations to a node, "direct" fields, i.e. no paragraphs, get their translation added instantly, whereas paragraphs only get their translations added upon clicking "edit" for the respective paragraph.

Proposed resolution

If automated translations become perfect one day, it would be nice to only have to view the whole node in its translated version without having to click "edit" for every single paragraph (and their nested paragraphs, etc.) first.

Comments

tgoeg created an issue. See original summary.

bigbabert’s picture

Hi @tgoeg,

this could be related to paragrpahs edit form settings, could you share more detail about the configuration of the collapsed paragraph form view?

Best regards

tgoeg’s picture

StatusFileSize
new71.78 KB

This is a config I took over, so I don't know the exact details of why it is configured like this. "Legacy" sounds ... outdated :-)
Maybe it's just that the "stable" mode has not been available back then?

This is how it looks like:
Screenshot depicting the configuration settings of the paragraph, shown below as text as well

Title: Paragraph
Plural title: Paragraphs
Edit mode: Open
Add mode: Dropdown button
Form display mode: default

If I change the widget to "Paragraphs (stable)" and/or the "Edit mode: Closed, show nested", I see the same problem.
Would I have to create a specific "Form display mode" ?

bigbabert’s picture

Hi @tgoeg,

have you also tried latest version? in my tests with both configurations, stable and legacy, when i open the add translation form all the paragraphs come opened (uncollapsed) with all the fields translated, and i've tested with like 20 paragraphs with nested paragraphs inside (eg. carousel with slides etc.).

Best regards

tgoeg’s picture

Version: 1.3.6-beta1 » 1.3.7
StatusFileSize
new120.66 KB

Just tried with 1.3.7, no change.

By uncollapsed, do you mean they are already editable? I have an "edit" button next to each paragraph:

Image depicting the translated article body and an untranslated paragraph with an edit button next to it

If I click it, the translation gets triggered and works as it should.

I use the "seven" admin theme, tried claro now as well, that didn't seem to make a difference.
I searched quite a bit now, but I seems you always have to click edit to start editing a paragraph, this does not seem to be configurable?

Do you already see translations *before* clicking the edit button?

bigbabert’s picture

StatusFileSize
new227.63 KB

Hi @ tgoeg,

yes i see translations before clicking on edit, below screenshot of my child paragraphs form settings inside the parent paragraph.

nested paragraph settings

BR

tgoeg’s picture

That does not seems to differ from my setup here, strange.

I see another effect, maybe this is related as well?
When I click edit on one paragraph and trigger the translation but not on another one and save the article, I cannot make auto translation work anymore, i.e. the next time I edit the article. Paragraphs just stay in their original language.
But that's probably expected as that should not happen in the first place as your setup would never leave you with untranslated paragraphs.
I just thought I'd note this down as it might ring a bell for you.

I'm still on Drupal 10.3.x, but just tried with an updated instance on 10.4.x, same story.
Are you on 11 already?

I'm somehow running out of ideas where to debug further.
We might need deepl.com translations so I am considering to take a look at tmgmt but find the problem here would have been nice, still.

bigbabert’s picture

Version: 1.3.7 » 1.3.11

Hi @tgoeg,

added new features like bulk translations, block content, taxonomy and media translations and also DeepL API translation support.
Also minor fixes to prevent unwanted fields settings translation, check it out!

Best regards

bigbabert’s picture

Status: Active » Needs review
bigbabert’s picture

Status: Needs review » Fixed
tgoeg’s picture

Tested the newest 1.4.21, did a drush updb and drush cr, but I still don't have translations for nested paragraphs.

I'll try to debug this, but bear with me, I am not a proper developer!
If I change the following in ./src/Utility.php:

1059   private function processParagraphTranslation($paragraphEntity, &$form, $d_lang, $t_lang, $excludedFields) {
1060     if (!$paragraphEntity instanceof \Drupal\paragraphs\ParagraphInterface) {
1061       return;
1062     }
1063
1064     // Iterate over each field of the paragraph.
1065     foreach ($paragraphEntity->getFields() as $field_name => $field) {
1066       // If the field is translatable and not among the excluded ones, proceed.
1067       if ($field->getFieldDefinition()->isTranslatable() && !in_array($field_name, $excludedFields)) {
1068         if (isset($form[$field_name]['widget'])) {
1069             \Drupal::logger('autotranslate')->debug("$field_name is a widget");
1070           $this->translateField($paragraphEntity, $form[$field_name]['widget'], $field_name, $field->getFieldDefinition()->getType(), $d_lang, $t_lang);
1071         }
1072       }
1073       // If the field is a reference to paragraphs, handle it recursively.
1074       if ($this->isParagraphReference($field)) {
1075             \Drupal::logger('autotranslate')->debug("$field_name is a reference to paragraphs");
1076         $nestedItems = $paragraphEntity->get($field_name);
1077         foreach ($nestedItems as $idx => $nestedItem) {
1078           if ($nestedItem->entity instanceof \Drupal\paragraphs\ParagraphInterface) {
1079             var_dump($form);
1080             if (isset($form[$field_name]['widget'][$idx]['subform'])) {
1081               $this->processParagraphTranslation($nestedItem->entity, $form[$field_name]['widget'][$idx]['subform'], $d_lang, $t_lang, $excludedFields);
1082             }
1083           }
1084         }
1085       }
1086     }
1087   }

The log states:
field_accordion_list_content is a reference to paragraphs
which is expected.

However, the var_dump($form) gives me:

array(2) {

["#attributes"]=>
  array(1) {
    ["class"]=>
    array(1) {
      [0]=>
      string(18) "paragraphs-subform"
    }
  }
  ["#access"]=>
  bool(true)
}

$form[$field_name] is therefore not set.

Does this ring a bell for you?

tgoeg’s picture

Status: Fixed » Needs work
tgoeg’s picture

Added more logging, the function now looks like this:

private function processParagraphTranslation($paragraphEntity, &$form, $d_lang, $t_lang, $excludedFields) {
  if (!$paragraphEntity instanceof \Drupal\paragraphs\ParagraphInterface) {
    return;
  }

  \Drupal::logger('autotranslate')->debug('Processing paragraph translation for entity: @entity', ['@entity' => $paragraphEntity->id()]);

  foreach ($paragraphEntity->getFields() as $field_name => $field) {
    \Drupal::logger('autotranslate')->debug('Field: @field_name', ['@field_name' => $field_name]);

    if ($field->getFieldDefinition()->isTranslatable() && !in_array($field_name, $excludedFields)) {
      if (isset($form[$field_name]['widget'])) {
        \Drupal::logger('autotranslate')->debug("$field_name is a widget");
        $this->translateField($paragraphEntity, $form[$field_name]['widget'], $field_name, $field->getFieldDefinition()->getType(), $d_lang, $t_lang);
      } else {
        \Drupal::logger('autotranslate')->debug("$field_name widget is not set");
      }
    }

    if ($this->isParagraphReference($field)) {
      \Drupal::logger('autotranslate')->debug("$field_name is a reference to paragraphs");
      $nestedItems = $paragraphEntity->get($field_name);
      foreach ($nestedItems as $idx => $nestedItem) {
        if ($nestedItem->entity instanceof \Drupal\paragraphs\ParagraphInterface) {
          \Drupal::logger('autotranslate')->debug('Processing nested paragraph: @nested_entity', ['@nested_entity' => $nestedItem->entity->id()]);
          if (isset($form[$field_name]['widget'][$idx]['subform'])) {
            \Drupal::logger('autotranslate')->debug('Subform is set for nested paragraph');
            $this->processParagraphTranslation($nestedItem->entity, $form[$field_name]['widget'][$idx]['subform'], $d_lang, $t_lang, $excludedFields);
          } else {
            \Drupal::logger('autotranslate')->debug('Subform is not set for nested paragraph');
          }
        }
      }
    }
  }
}

And the output, if I click "Add translation":

481565	31/Mar 14:54	autotranslate	Debuggen	field_sign_lang_link is a widget
481564	31/Mar 14:54	autotranslate	Debuggen	Field: field_sign_lang_link
481563	31/Mar 14:54	autotranslate	Debuggen	field_reading_link is a widget
481562	31/Mar 14:54	autotranslate	Debuggen	Field: field_reading_link
481561	31/Mar 14:54	autotranslate	Debuggen	content_translation_changed widget is not set
481560	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_changed
481559	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_outdated
481558	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_source
481557	31/Mar 14:54	autotranslate	Debuggen	revision_translation_affected widget is not set
481556	31/Mar 14:54	autotranslate	Debuggen	Field: revision_translation_affected
481555	31/Mar 14:54	autotranslate	Debuggen	Field: revision_default
481554	31/Mar 14:54	autotranslate	Debuggen	Field: default_langcode
481553	31/Mar 14:54	autotranslate	Debuggen	Field: behavior_settings
481552	31/Mar 14:54	autotranslate	Debuggen	Field: parent_field_name
481551	31/Mar 14:54	autotranslate	Debuggen	Field: parent_type
481550	31/Mar 14:54	autotranslate	Debuggen	Field: parent_id
481549	31/Mar 14:54	autotranslate	Debuggen	Field: created
481548	31/Mar 14:54	autotranslate	Debuggen	Field: status
481547	31/Mar 14:54	autotranslate	Debuggen	Field: type
481546	31/Mar 14:54	autotranslate	Debuggen	Field: langcode
481545	31/Mar 14:54	autotranslate	Debuggen	Field: revision_id
481544	31/Mar 14:54	autotranslate	Debuggen	Field: uuid
481543	31/Mar 14:54	autotranslate	Debuggen	Field: id
481542	31/Mar 14:54	autotranslate	Debuggen	Processing paragraph translation for entity: 681
481541	31/Mar 14:54	autotranslate	Debuggen	field_text_editor_field widget is not set
481540	31/Mar 14:54	autotranslate	Debuggen	Field: field_text_editor_field
481539	31/Mar 14:54	autotranslate	Debuggen	content_translation_changed widget is not set
481538	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_changed
481537	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_outdated
481536	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_source
481535	31/Mar 14:54	autotranslate	Debuggen	revision_translation_affected widget is not set
481534	31/Mar 14:54	autotranslate	Debuggen	Field: revision_translation_affected
481533	31/Mar 14:54	autotranslate	Debuggen	Field: revision_default
481532	31/Mar 14:54	autotranslate	Debuggen	Field: default_langcode
481531	31/Mar 14:54	autotranslate	Debuggen	Field: behavior_settings
481530	31/Mar 14:54	autotranslate	Debuggen	Field: parent_field_name
481529	31/Mar 14:54	autotranslate	Debuggen	Field: parent_type
481528	31/Mar 14:54	autotranslate	Debuggen	Field: parent_id
481527	31/Mar 14:54	autotranslate	Debuggen	Field: created
481526	31/Mar 14:54	autotranslate	Debuggen	Field: status
481525	31/Mar 14:54	autotranslate	Debuggen	Field: type
481524	31/Mar 14:54	autotranslate	Debuggen	Field: langcode
481523	31/Mar 14:54	autotranslate	Debuggen	Field: revision_id
481522	31/Mar 14:54	autotranslate	Debuggen	Field: uuid
481521	31/Mar 14:54	autotranslate	Debuggen	Field: id
481520	31/Mar 14:54	autotranslate	Debuggen	Processing paragraph translation for entity: 1921
481519	31/Mar 14:54	autotranslate	Debuggen	Subform is not set for nested paragraph
481518	31/Mar 14:54	autotranslate	Debuggen	Processing nested paragraph: 2114
481517	31/Mar 14:54	autotranslate	Debuggen	Subform is not set for nested paragraph
481516	31/Mar 14:54	autotranslate	Debuggen	Processing nested paragraph: 2111
481515	31/Mar 14:54	autotranslate	Debuggen	Subform is not set for nested paragraph
481514	31/Mar 14:54	autotranslate	Debuggen	Processing nested paragraph: 2113
481513	31/Mar 14:54	autotranslate	Debuggen	Subform is not set for nested paragraph
481512	31/Mar 14:54	autotranslate	Debuggen	Processing nested paragraph: 2119
481511	31/Mar 14:54	autotranslate	Debuggen	field_accordion_list_content is a reference to paragraphs
481510	31/Mar 14:54	autotranslate	Debuggen	Field: field_accordion_list_content
481509	31/Mar 14:54	autotranslate	Debuggen	content_translation_changed widget is not set
481508	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_changed
481507	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_outdated
481506	31/Mar 14:54	autotranslate	Debuggen	Field: content_translation_source
481505	31/Mar 14:54	autotranslate	Debuggen	revision_translation_affected widget is not set
481504	31/Mar 14:54	autotranslate	Debuggen	Field: revision_translation_affected
481503	31/Mar 14:54	autotranslate	Debuggen	Field: revision_default
481502	31/Mar 14:54	autotranslate	Debuggen	Field: default_langcode
481501	31/Mar 14:54	autotranslate	Debuggen	Field: behavior_settings
481500	31/Mar 14:54	autotranslate	Debuggen	Field: parent_field_name
481499	31/Mar 14:54	autotranslate	Debuggen	Field: parent_type
481498	31/Mar 14:54	autotranslate	Debuggen	Field: parent_id
481497	31/Mar 14:54	autotranslate	Debuggen	Field: created
481496	31/Mar 14:54	autotranslate	Debuggen	Field: status
481495	31/Mar 14:54	autotranslate	Debuggen	Field: type
481494	31/Mar 14:54	autotranslate	Debuggen	Field: langcode
481493	31/Mar 14:54	autotranslate	Debuggen	Field: revision_id
481492	31/Mar 14:54	autotranslate	Debuggen	Field: uuid
481491	31/Mar 14:54	autotranslate	Debuggen	Field: id
481490	31/Mar 14:54	autotranslate	Debuggen	Processing paragraph translation for entity: 2115

Note how "subform is not set for nested paragraph".

If I click the edit button of a paragraph in the node edit form that's now open:

481575	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481574	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481573	31/Mar 14:56	autotranslate	Debuggen	Field: created
481572	31/Mar 14:56	autotranslate	Debuggen	Field: status
481571	31/Mar 14:56	autotranslate	Debuggen	Field: type
481570	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481569	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481568	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481567	31/Mar 14:56	autotranslate	Debuggen	Field: id
481566	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2115
481865	31/Mar 14:56	autotranslate	Debuggen	field_sign_lang_link is a widget
481864	31/Mar 14:56	autotranslate	Debuggen	Field: field_sign_lang_link
481863	31/Mar 14:56	autotranslate	Debuggen	field_reading_link is a widget
481862	31/Mar 14:56	autotranslate	Debuggen	Field: field_reading_link
481861	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481860	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481859	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481858	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481857	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481856	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481855	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481854	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481853	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481852	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481851	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481850	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481849	31/Mar 14:56	autotranslate	Debuggen	Field: created
481848	31/Mar 14:56	autotranslate	Debuggen	Field: status
481847	31/Mar 14:56	autotranslate	Debuggen	Field: type
481846	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481845	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481844	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481843	31/Mar 14:56	autotranslate	Debuggen	Field: id
481842	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 681
481841	31/Mar 14:56	autotranslate	Debuggen	field_text_editor_field is a widget
481840	31/Mar 14:56	autotranslate	Debuggen	Field: field_text_editor_field
481839	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481838	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481837	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481836	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481835	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481834	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481833	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481832	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481831	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481830	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481829	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481828	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481827	31/Mar 14:56	autotranslate	Debuggen	Field: created
481826	31/Mar 14:56	autotranslate	Debuggen	Field: status
481825	31/Mar 14:56	autotranslate	Debuggen	Field: type
481824	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481823	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481822	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481821	31/Mar 14:56	autotranslate	Debuggen	Field: id
481820	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 1921
481819	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_entry_title is a widget
481818	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_entry_title
481817	31/Mar 14:56	autotranslate	Debuggen	field_one_link is a widget
481816	31/Mar 14:56	autotranslate	Debuggen	Field: field_one_link
481815	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481814	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481813	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481812	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481811	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481810	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481809	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481808	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481807	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481806	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481805	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481804	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481803	31/Mar 14:56	autotranslate	Debuggen	Field: created
481802	31/Mar 14:56	autotranslate	Debuggen	Field: status
481801	31/Mar 14:56	autotranslate	Debuggen	Field: type
481800	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481799	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481798	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481797	31/Mar 14:56	autotranslate	Debuggen	Field: id
481796	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2117
481795	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481794	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2117
481793	31/Mar 14:56	autotranslate	Debuggen	field_text_editor_field is a widget
481792	31/Mar 14:56	autotranslate	Debuggen	Field: field_text_editor_field
481791	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481790	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481789	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481788	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481787	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481786	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481785	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481784	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481783	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481782	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481781	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481780	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481779	31/Mar 14:56	autotranslate	Debuggen	Field: created
481778	31/Mar 14:56	autotranslate	Debuggen	Field: status
481777	31/Mar 14:56	autotranslate	Debuggen	Field: type
481776	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481775	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481774	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481773	31/Mar 14:56	autotranslate	Debuggen	Field: id
481772	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2116
481771	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481770	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2116
481769	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_entry_conte is a reference to paragraphs
481768	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_entry_conte
481767	31/Mar 14:56	autotranslate	Debuggen	field_accordion_flag is a widget
481766	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_flag
481765	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481764	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481763	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481762	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481761	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481760	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481759	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481758	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481757	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481756	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481755	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481754	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481753	31/Mar 14:56	autotranslate	Debuggen	Field: created
481752	31/Mar 14:56	autotranslate	Debuggen	Field: status
481751	31/Mar 14:56	autotranslate	Debuggen	Field: type
481750	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481749	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481748	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481747	31/Mar 14:56	autotranslate	Debuggen	Field: id
481746	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2114
481745	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481744	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2114
481743	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_entry_title is a widget
481742	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_entry_title
481741	31/Mar 14:56	autotranslate	Debuggen	field_text_editor_field is a widget
481740	31/Mar 14:56	autotranslate	Debuggen	Field: field_text_editor_field
481739	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481738	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481737	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481736	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481735	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481734	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481733	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481732	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481731	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481730	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481729	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481728	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481727	31/Mar 14:56	autotranslate	Debuggen	Field: created
481726	31/Mar 14:56	autotranslate	Debuggen	Field: status
481725	31/Mar 14:56	autotranslate	Debuggen	Field: type
481724	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481723	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481722	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481721	31/Mar 14:56	autotranslate	Debuggen	Field: id
481720	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2110
481719	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481718	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2110
481717	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_entry_conte is a reference to paragraphs
481716	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_entry_conte
481715	31/Mar 14:56	autotranslate	Debuggen	field_accordion_flag is a widget
481714	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_flag
481713	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481712	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481711	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481710	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481709	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481708	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481707	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481706	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481705	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481704	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481703	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481702	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481701	31/Mar 14:56	autotranslate	Debuggen	Field: created
481700	31/Mar 14:56	autotranslate	Debuggen	Field: status
481699	31/Mar 14:56	autotranslate	Debuggen	Field: type
481698	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481697	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481696	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481695	31/Mar 14:56	autotranslate	Debuggen	Field: id
481694	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2111
481693	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481692	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2111
481691	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_entry_title is a widget
481690	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_entry_title
481689	31/Mar 14:56	autotranslate	Debuggen	field_text_editor_field is a widget
481688	31/Mar 14:56	autotranslate	Debuggen	Field: field_text_editor_field
481687	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481686	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481685	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481684	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481683	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481682	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481681	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481680	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481679	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481678	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481677	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481676	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481675	31/Mar 14:56	autotranslate	Debuggen	Field: created
481674	31/Mar 14:56	autotranslate	Debuggen	Field: status
481673	31/Mar 14:56	autotranslate	Debuggen	Field: type
481672	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481671	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481670	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481669	31/Mar 14:56	autotranslate	Debuggen	Field: id
481668	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2112
481667	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481666	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2112
481665	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_entry_conte is a reference to paragraphs
481664	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_entry_conte
481663	31/Mar 14:56	autotranslate	Debuggen	field_accordion_flag is a widget
481662	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_flag
481661	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481660	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481659	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481658	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481657	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481656	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481655	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481654	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481653	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481652	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481651	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481650	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481649	31/Mar 14:56	autotranslate	Debuggen	Field: created
481648	31/Mar 14:56	autotranslate	Debuggen	Field: status
481647	31/Mar 14:56	autotranslate	Debuggen	Field: type
481646	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481645	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481644	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481643	31/Mar 14:56	autotranslate	Debuggen	Field: id
481642	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2113
481641	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481640	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2113
481639	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_entry_title is a widget
481638	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_entry_title
481637	31/Mar 14:56	autotranslate	Debuggen	field_text_editor_field is a widget
481636	31/Mar 14:56	autotranslate	Debuggen	Field: field_text_editor_field
481635	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481634	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481633	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481632	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481631	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481630	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481629	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481628	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481627	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481626	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481625	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481624	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481623	31/Mar 14:56	autotranslate	Debuggen	Field: created
481622	31/Mar 14:56	autotranslate	Debuggen	Field: status
481621	31/Mar 14:56	autotranslate	Debuggen	Field: type
481620	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481619	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481618	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481617	31/Mar 14:56	autotranslate	Debuggen	Field: id
481616	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2118
481615	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481614	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2118
481613	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_entry_conte is a reference to paragraphs
481612	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_entry_conte
481611	31/Mar 14:56	autotranslate	Debuggen	field_accordion_flag is a widget
481610	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_flag
481609	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481608	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481607	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481606	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481605	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481604	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481603	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481602	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481601	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481600	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name
481599	31/Mar 14:56	autotranslate	Debuggen	Field: parent_type
481598	31/Mar 14:56	autotranslate	Debuggen	Field: parent_id
481597	31/Mar 14:56	autotranslate	Debuggen	Field: created
481596	31/Mar 14:56	autotranslate	Debuggen	Field: status
481595	31/Mar 14:56	autotranslate	Debuggen	Field: type
481594	31/Mar 14:56	autotranslate	Debuggen	Field: langcode
481593	31/Mar 14:56	autotranslate	Debuggen	Field: revision_id
481592	31/Mar 14:56	autotranslate	Debuggen	Field: uuid
481591	31/Mar 14:56	autotranslate	Debuggen	Field: id
481590	31/Mar 14:56	autotranslate	Debuggen	Processing paragraph translation for entity: 2119
481589	31/Mar 14:56	autotranslate	Debuggen	Subform is set for nested paragraph
481588	31/Mar 14:56	autotranslate	Debuggen	Processing nested paragraph: 2119
481587	31/Mar 14:56	autotranslate	Debuggen	field_accordion_list_content is a reference to paragraphs
481586	31/Mar 14:56	autotranslate	Debuggen	Field: field_accordion_list_content
481585	31/Mar 14:56	autotranslate	Debuggen	content_translation_changed widget is not set
481584	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_changed
481583	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_outdated
481582	31/Mar 14:56	autotranslate	Debuggen	Field: content_translation_source
481581	31/Mar 14:56	autotranslate	Debuggen	revision_translation_affected widget is not set
481580	31/Mar 14:56	autotranslate	Debuggen	Field: revision_translation_affected
481579	31/Mar 14:56	autotranslate	Debuggen	Field: revision_default
481578	31/Mar 14:56	autotranslate	Debuggen	Field: default_langcode
481577	31/Mar 14:56	autotranslate	Debuggen	Field: behavior_settings
481576	31/Mar 14:56	autotranslate	Debuggen	Field: parent_field_name

Now the "Subform is set".

I switched to the Bartik theme on the frontend now as well, to rule out possible hooks messing with the form, to no avail.
Is it possible to force load this form somehow? It does not seem to be populated the moment I need it, only later.

Apart from that, I think there should be an else-branch (with the reference-to-a-paragraph code) when detecting whether we have a widget. It can't be both, I guess?

bigbabert’s picture

Hi @tgoeg,

Thanks for the feedback, this looks as a really specific use case, if any other will report same issue i'll evaluate.

The module is tested and work with Gin Admin Theme from Drupal 10 to drupal 11.

Best regards

tgoeg’s picture

If I use the bulk translation option, all nested paragraphs do get successfully translated, so this really seems to be very related to the way the form gets created when editing a node manually.
This somehow seems to say that my configuration should not be too far off, right?

I'll try to reduce the test case.

Or could you maybe provide a working config export so I can see what differs to my setup?

bigbabert’s picture

Hi @tgoeg,

sorry for the late answer, i've tested with fresh installation of drupal CMS added some 2 paragraph configured as Not Translatable with fields inside configured as Transletable.

I'll provide you a working config as soon i'll be able,

Best regards
Alberto

tgoeg’s picture

Oh man, this took me too long.
I finally figured it out.

For the subform to exist, it needs to be open right from the start (just as you said).
However, there are multiple places where this has to be configured.

I only set it in the paragraph settings itself (and all nested paragraphs below it) at /admin/structure/paragraphs_type/accordion_list_entry/form-display.
But it also has to be set at the top level, i.e. the basic page or article form display, i.e. /admin/structure/types/manage/page/form-display or /admin/structure/types/manage/article/form-display or whatever the used content type is.

This either needs to be part of the manual/usage instructions or a hook should be implemented that force opens the widgets ($form[$field_name]['#paragraphs_edit_mode'] = 'open'), as this an expected state before this module can even operate on nested paragraphs.
I had no luck implementing this, so I resorted to configuring the paragraphs to be always in "open" mode in the backend.

bigbabert’s picture

Hi @tgoeg,

glad that you had chance to figure out the right configurations!

And also thanks for precious inputs as always :) i will look into that in the weekend, hopefully will be easy to implement logic to check and force widgets to be open :)

Thanks again

bigbabert’s picture

Hi @tgoeg,

i'm still not able to reproduce the issue below paragraph reference field on my node and if i open the translate form the fields are correctly translated with also the html markup.

Title: Paragraph
Plural title: Paragraphs
Edit mode: Closed
Closed mode: Preview
Autocollapse: All
Closed mode threshold: 3
Add mode: Dropdown button
Form display mode: default
Default paragraph type: Test Paragraphs
Features: Duplicate

Please test with latest paragraph module or indicate what version are you using so i can try to reproduce it.

Best regards

tgoeg’s picture

I'm on Drupal 10.3.14 (latest 10.3), Paragraphs 8.x-1.19 (latest)

I have a (content type) page.
On this "page", I have a field_paragraph that is a reference to other paragraphs (one of them an accordion). This field_paragraph had its widget configured as "closed".
In the paragraph config, the accordion paragraph did indeed have its widget configured as "open".

Only when I reconfigured the top-level paragraph, i.e. the one in the "page", to be "open", I saw all (nested) paragraphs in an editable state as soon as I started editing the "page".

Are your (nested) paragraphs editable when you edit an existing node or do you have an edit button that, upon clicking, opens the widget, CKEditor, etc. ?

You need this (top-level?) closed state to reproduce the issue.