UsingTranslating Advanced Custom Fields (ACF)
Translating Advanced Custom Fields (ACF)
Gato AI Translations for Polylang can translate any custom field created with Advanced Custom Fields (ACF) that stores data in the meta tables (wp_postmeta
and wp_termmeta
).
You must indicate which meta keys to synchronize and translate, as corresponding to the ACF fields you are using.
Defining fields to sync/translate
ACF stores 2 entries for each field:
- Entry
_{field_name}
contains internal metadata - Entry
{field_name}
contains the field value
The first entry must be synchronized always.
The second entry must be either translated or copied, depending on the field type:
- Translate text fields
- Copy non-text fields
Meta Key | Example | Action |
---|---|---|
_{field_name} | _description → "field_68357a34e6fd7" | Copy |
{field_name} | description → "Integrate with the popular ACF plugin" | Translate |
{field_name} | url → "https://gatoplugins.com" | Copy |
Meta key patterns
ACF stores field data using the following meta key patterns:
- For regular fields:
{field_name}
- For repeater fields:
{field_name}_{row_index}_{subfield_name}
- For flexible content fields:
{field_name}_{row_index}_{layout_name}_{subfield_name}
For example:
my_text_field
my_repeater_0_title
my_flexible_0_text_block_content
You can use regex patterns to match these fields:
- Match all fields:
#^[a-zA-Z0-9_]+$#
- Match repeater fields:
#^[a-zA-Z0-9_]+_\d+_[a-zA-Z0-9_]+$#
- Match flexible content fields:
#^[a-zA-Z0-9_]+_\d+_[a-zA-Z0-9_]+_[a-zA-Z0-9_]+$#
Example configuration
Here's an example configuration for common ACF fields:
Field Type | Field Name | Meta Keys to Copy | Meta Keys to Translate |
---|---|---|---|
Text-based | description subtitle | _description _subtitle | description subtitle |
Non-text-based | featured_image gallery | /^_?featured_image$/ /^_?gallery$/ | |
Repeater | team_member - name - url - bio | /^_?team_member$/ /^_team_member_[0-9]+_.*/ /^team_member_[0-9]+_name$/ /^team_member_[0-9]+_url$/ | /^team_member_[0-9]+_bio$/ |
Flexible Content | content | /^_?content$/ /^_content_[0-9]+_.*/ /content_\d+_text_block_img/ /content_\d+_quote_block_bg/ | /content_\d+_text_block_title/ /content_\d+_text_block_content/ /content_\d+_quote_block_quote/ |