translation
Leave this field empty to allow for translation via Drupal interface translation.
Example configuration created by enabling Maxlength:
core.entity_form_display.node.article_not_translatable.default.yml
# ...
content:
field_copyright:
type: text_textarea
weight: 3
region: content
settings:
rows: 2
placeholder: ''
third_party_settings:
allowed_formats:
hide_help: '1'
hide_guidelines: '1'
maxlength:
maxlength_js: null
maxlength_js_label: 'Content limited to @limit characters, remaining: <strong>@remaining</strong>'
maxlength_js_enforce: false
# ...
However, the module already contains fallback logic for this label in maxlength.module:
maxlength.module
$maxlength_js_label = !empty($thirdPartySettings['maxlength']['maxlength_js_label']) ? $thirdPartySettings['maxlength']['maxlength_js_label'] : t('Content limited to @limit characters, remaining: <strong>@remaining</strong>');
$maxlength_js = $thirdPartySettings['maxlength']['maxlength_js'];Working configuration: empty the label
core.entity_form_display.node.article_translatable.default.yml
# ...
content:
field_copyright:
type: text_textarea
weight: 3
region: content
settings:
rows: 2
placeholder: ''
third_party_settings:
allowed_formats:
hide_help: '1'
hide_guidelines: '1'
maxlength:
maxlength_js: null
maxlength_js_label: ''
maxlength_js_enforce: false
# ...With the label empty, the module falls back to its internal t() string, which can then be translated normally via the interface translation system.
16.07.2026 | Lothar Ferreira Neumann
How to translate the Maxlength Countdown message label globally
config/sync/language/your_translation_language/
core.entity_view_display.node.my_content_type.full.yml
third_party_settings:
layout_builder:
sections:
1:
layout_settings:
label: 'My second section translation, here'
components:
4a5d3bb1-32d3-4a3c-a69f-6ee702a868ff:
configuration:
# Original: 'My first block'
label: 'My first block that is placed in layoutbuilder translation, here'
c1bbc85f-bb8b-4e72-9e9e-a2ccdf190646:
configuration:
# Original: 'My second block'
label: 'My second block that is placed in layoutbuilder translation, here'
Here is the original config file:
core.entity_view_display.node.my_content_type_original_language.full.yml
uuid: bedb3535-d6f2-4aae-b2cb-7f8f6e82bd5a
langcode: en
status: true
dependencies:
config:
- core.entity_view_mode.node.full
- field.field.node.my_content_type.field_content
- field.field.node.my_content_type.field_date
- node.type.my_content_type
module:
- my_module
theme:
- my_theme
third_party_settings:
layout_builder:
enabled: true
allow_custom: true
sections:
-
layout_id: onecol
layout_settings:
label: 'My first section'
context_mapping: { }
components:
29a62ef3-00c8-40d5-8e9d-b6c3de187c10:
uuid: 29a62ef3-00c8-40d5-8e9d-b6c3de187c10
region: col1
configuration:
id: my_base_intro_block
label: 'Intro block'
label_display: '0'
provider: my_base
context_mapping:
entity: layout_builder.entity
weight: 0
third_party_settings: { }
-
layout_id: twocol
layout_settings:
label: 'My second section'
context_mapping: { }
components:
dc449aee-2be4-43d3-892e-ffd4cbe44fc0:
uuid: dc449aee-2be4-43d3-892e-ffd4cbe44fc0
region: col2
configuration:
id: 'entity_view:node'
label: 'My first block'
label_display: visible
provider: ctools
context_mapping:
entity: layout_builder.entity
view_mode: information
weight: 0
c1bbc85f-bb8b-4e72-9e9e-a2ccdf190646:
uuid: c1bbc85f-bb8b-4e72-9e9e-a2ccdf190646
region: col1
configuration:
id: 'field_block:node:my_content_type:field_content'
label: 'My second block'
label_display: visible
provider: layout_builder
context_mapping:
entity: layout_builder.entity
view_mode: view_mode
formatter:
type: text_default
label: above
settings: { }
third_party_settings: { }
weight: 0
third_party_settings: { }
26.09.2025 | Lothar Ferreira Neumann
How to translate default layout components
13.11.2025 | Michael Ebert
How to translate menu link URIs in Drupal
my_module.module
// Assume $entity is your translatable entity object.
$default_language_entity = $entity->getUntranslated();
$default_language_code = $default_language_entity->language()->getId();
08.10.2026 | Pascal Crott