Problem/Motivation
Drupal Canvas uses a base field to store component data (tree and inputs). These two are normally separately configurable for translation. But Drupal core content translation uses third party settings config to verify existing settings and base fields to not carry third party settings until a base field override config is saved that can contain them. So the option to separately configure the tree and inputs for translation only shows up once the user saves the components field at least once untranslatable altogether. Then base field overrides get saved for it (because by default it is translatable, so keeping it translatable does not result in a base field override needed). Then we can see the options.
Steps to reproduce
- Install Canvas and all core translation modules (Canvas dev translation module is not needed).
- Go to
admin/config/regional/content-language, note you don't have the tree and inputs options at first. - Fiddle until you figure out you need to save it untranslatable at least once to be able to disable tree translatability.
Proposed resolution
Change the form builder to consider the base field configuration until there is a third party setting to build the settings.
In core, this already affects the Media entity’s translatable base field thumbnail.
Remaining tasks
Review.
User interface changes
"Column groups" / "subfields" will show up for base fields on the content translation form immediately instead of needing to do awkward things.
Introduced terminology
None.
API changes
None.
Data model changes
None.
Release notes snippet
Not needed IMHO.
LLM disclosure
LLM was used to analyze this problem, devise a fix and write tests. The output / proposal was human reviewed and is recommedned as a human though :)
| Comment | File | Size | Author |
|---|---|---|---|
| #5 | Screenshot 2026-06-29 at 12.32.44.png | 432.14 KB | gábor hojtsy |
| Screen Recording 2026-06-29 at 11.25.35.mov | 26.5 MB | gábor hojtsy |
Issue fork drupal-3606969
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
- 3606969-content-translation-column
changes, plain diff MR !16161

Comments
Comment #2
gábor hojtsyThis is the problem on a video:
Comment #4
gábor hojtsyAdded suggested fix with tests. Used LLM so adding LLM disclosure.
Comment #5
gábor hojtsyAdding screenshot to make it easier to see without the video even.
Comment #6
gábor hojtsyLink image for bigger watching.
Comment #7
gábor hojtsyCore media is also affected via the thumbnail field. The test covers that (and proves that it fails without the fix), adding that note to the issue summary.
Comment #8
penyaskitoI saw the same problem, and got to the exact same fix.
As you can see there are no changes to the form submit handler, because it was already adapted for this. This processes the base field definitions in the same way for the form creation itself.
Comment #9
wim leersComment #13
longwaveCommitted and pushed 68f6b308eae to main and 23559ca6e15 to 11.x and b11b664bba3 to 11.4.x. Thanks!
Comment #16
alexpottThis change causes a regression in configuration schema. Entity usage tests are failing on the next minor have started to fail after this was merged and a git bisect proves it - see https://git.drupalcode.org/project/entity_usage/-/jobs/10639671 - specifically the failure for \Drupal\Tests\entity_usage\FunctionalJavascript\ListControllerTest::testListController on line 206. This is where we've done
If I add
to the test it passes.
Comment #17
penyaskitoThat's #3387100: Missing config schema for core.base_field_override.*.*.* third_party_settings.content_translation :-(
Canvas also uses
configSchemaCheckerExclusionsfor avoiding this issueComment #18
alexpottYep #3387100: Missing config schema for core.base_field_override.*.*.* third_party_settings.content_translation is the fix. What has changed here is that any save on the form with media installed now breaks in a test whereas before it did not.
Comment #19
alexpottOkay the other issue is RTBC - let's go forward rather than backwards.