Skip to main content

Translation Fields

Import and export translations for products, collections, pages, and other Shopify resources.

Updated over 2 weeks ago

Sample Files

Download sample spreadsheets to see the structure for importing translation data:

Altera supports both importing and exporting translations. The export format is compatible with Shopify's native translation import in the admin, and we've added extra columns to make it easier to identify what's being translated.

Overview

Translation spreadsheets have one row per translatable field per locale. Each row shows:

  • The resource being translated (type, ID, handle)

  • The parent resource (for nested items like product options or metafields)

  • The specific field being translated

  • The default content (in your store's primary language)

  • The translated content (in the target locale)

Cross-Store Transfers

You can export translations from one store and import them into a different store. Altera uses the Handle column to match resources across stores, since Shopify IDs differ between stores. During import, Altera first checks whether the resource ID exists on the target store. If it doesn't, it falls back to looking up the resource by handle. This works for products, collections, pages, blogs, articles, menus, metaobjects, metafields, product options, product option values, and product variants.

Shopify Compatibility

The translation file format is compatible with Shopify's native translation import functionality in the admin. You can export translations from Altera, edit them in your spreadsheet software, and import them back into Altera or import them directly into Shopify.

Additional Columns for Context

To make translations easier to work with, we've added several helper columns that aren't part of Shopify's standard format:

  • ID: The full Shopify Global ID (GID) of the resource (e.g., gid://shopify/Product/8079393226938)

  • Handle: The handle of the resource being translated (e.g., premium-cotton-tee)

  • Parent Type: The type of the parent resource (for nested items)

  • Parent ID: The full GID of the parent resource

  • Parent Handle: The handle of the parent resource

These additional columns make it much easier to identify what you're translating, especially when working with nested resources like product options or metafields. For example, when translating a metafield, you can see the namespace and key in the Handle column and the parent resource's handle in the Parent Handle column.

Note: The Type and Identification columns are part of Shopify's standard translation format and are required for importing translations back into Shopify. When importing into Altera, at least one of ID, Identification, or Handle is required.

Translatable Resource Types

The following resource types can be translated:

  • ARTICLE: Blog articles

  • BLOG: Blog information

  • COLLECTION: Product collections

  • DELIVERY_METHOD_DEFINITION: Shipping methods

  • EMAIL_TEMPLATE: Transactional email templates

  • FILTER: Collection filters

  • LINK: Navigation menu links

  • MEDIA_IMAGE: Media file alt text

  • MENU: Navigation menus

  • METAFIELD: Custom metafields

  • METAOBJECT: Metaobject content

  • ONLINE_STORE_THEME: Theme customizations

  • PAGE: Store pages

  • PAYMENT_GATEWAY: Payment method names

  • PRODUCT: Product details

  • PRODUCT_OPTION: Product option names (Size, Color, etc.)

  • PRODUCT_OPTION_VALUE: Product option values (Small, Blue, etc.)

  • SELLING_PLAN: Subscription plan details

  • SELLING_PLAN_GROUP: Subscription plan groups

  • SHOP: Store information

  • SHOP_POLICY: Store policies

Fields

Type

Description

Example Value

Resource type

PRODUCT

The type of Shopify resource being translated. See Translatable Resource Types for a complete list of supported types.

This column is part of Shopify's standard translation format.

Command

Description

Example Value

Import command

MERGE

Controls how the translation row is processed during import.

If omitted, defaults to MERGE.

  • MERGE - Creates or updates the translation. If the Translated content column is empty, the existing translation is deleted

  • UPDATE - Same as MERGE for translations

  • REPLACE - Same as MERGE for translations

  • NEW - Creates the translation only if one does not already exist for this field and locale. Skips the row with a warning if a translation is already present

  • DELETE - Deletes the translation for this field and locale, regardless of what is in the Translated content column

Each row can have its own Command value. For example, you can MERGE most rows in a group while using DELETE on specific rows to remove individual translations.

ID

Description

Example Value

Shopify Global ID (GID)

gid://shopify/Product/8079393226938

The full Shopify Global ID (GID) for the resource. This includes the resource type and numeric ID in a URI format.

This is an Altera-specific field that provides the complete resource identifier.

Identification

Description

Example Value

Shopify resource numeric ID

8079393226938

The numeric ID portion of the resource's Shopify Global ID (GID). This is extracted from the full GID format (e.g., gid://shopify/Product/8079393226938).

Leading single quotes (e.g., '8079393226938) are automatically stripped during import, since some spreadsheet applications prepend these to preserve numeric formatting.

This column is part of Shopify's standard translation format and is required for importing translations back into Shopify.

Handle

Description

Example Value

Resource handle

premium-cotton-tee

The URL-friendly handle for the resource. During import, the Handle column is used to identify resources when IDs don't match the target store, which is how cross-store translation transfers work. Not all resource types have handles.

The handle format varies by resource type:

  • PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE: The URL-friendly slug (e.g., premium-cotton-tee)

  • METAFIELD: The namespace and key separated by a dot (e.g., custom.care_instructions)

  • METAOBJECT: The metaobject type and entry handle separated by a dot (e.g., color.red)

  • PRODUCT_OPTION: A 1-based index representing the option's position on the product (e.g., 1 for the first option, 2 for the second)

  • PRODUCT_OPTION_VALUE: The option's 1-based index and the value name separated by a dot (e.g., 1.Small, 2.Blue)

Parent Type

Description

Example Value

Parent resource type

PRODUCT

For nested resources (like product options or metafields), this shows the type of the parent resource. For top-level resources, this will match the Type field. For metafields attached to a variant, this will be PRODUCT_VARIANT.

This is an Altera-specific field that provides additional context about the resource hierarchy.

Parent ID

Description

Example Value

Parent resource GID

gid://shopify/Product/8079393226938

For nested resources, this shows the full GID of the parent resource. For top-level resources, this will match the ID field.

This is an Altera-specific field that provides additional context about the resource hierarchy.

Parent Handle

Description

Example Value

Parent resource handle

premium-cotton-tee

For nested resources, this shows the handle of the parent resource. This is an Altera-specific field that makes it easier to understand the context of what you're translating.

The parent handle format varies by parent type:

  • PRODUCT, COLLECTION, PAGE, BLOG, ARTICLE: The URL-friendly slug (e.g., premium-cotton-tee)

  • PRODUCT_VARIANT: The product handle and variant title separated by a dot (e.g., premium-cotton-tee.Small / Blue). Commas in the variant title are escaped as \,. This format is used for metafields attached to variants.

  • METAOBJECT: The metaobject type and entry handle separated by a dot (e.g., color.red). This format is used for metafields attached to metaobject entries.

Field

Description

Example Value

Translatable field key

title

The specific field being translated. Common field keys include:

  • title: Resource title or name

  • body_html: HTML description or content

  • meta_title: SEO title (requires custom value to be set on the resource, see Troubleshooting)

  • meta_description: SEO description (requires custom value to be set on the resource, see Troubleshooting)

  • option1.name: Product option name (Size, Color, etc.)

  • alt_text: Image alt text

The available fields vary by resource type. For example, products have fields like title and body_html, while metafields have a single value field.

Locale

Description

Example Value

Target language locale

fr

The language code for the translation. This uses ISO 639-1 two-letter language codes, optionally followed by a region code (e.g., en, fr, es, pt-BR, zh-CN).

The available locales are determined by which languages you've enabled in your Shopify admin under Settings > Languages.

Market

Description

Example Value

Market for market-scoped translations

Belgium

The name of the market this translation is scoped to. When empty, the translation is global and applies to all markets (the default behavior).

Market-scoped translations let you override global translations for specific markets. For example, you could have a global French translation and a different French translation specifically for the Canada market. You can also use market-scoped translations to override content in the store's primary language for a specific market.

On export, this column contains the market name. On import, you can use the market name (case-insensitive), a numeric market ID, or a full GID (e.g., gid://shopify/Market/12345).

This column is only populated during export when you add a Market filter. Without a market filter, only global translations are exported and the Market column will be empty.

Default content

Description

Example Value

Original content in primary language

Premium Cotton T-Shirt

The original content in your store's primary language. This is the content that should be translated into the target locale.

For fields like product descriptions, this contains the HTML content. For plain text fields, it contains the plain text.

Translated content

Description

Example Value

Translated content in target locale

T-Shirt en Coton Premium

The translated content for the target locale. If no translation exists yet, this field will be empty.

For rich text fields, this should contain the translated HTML. For plain text fields, it should contain the translated plain text.

Export Filters

You can use these filters to limit which translations are exported:

  • locale: Filter by language code (e.g., fr, es, de)

  • Supports comma-separated values: locale=fr,es,de

  • Use NOT_EQUALS to exclude specific locales: locale NOT EQUALS en

  • By default, exports all non-primary locales. When a market filter is active, the primary locale is also included because markets can have their own overrides in the primary language

  • type: Filter by resource type (e.g., PRODUCT, COLLECTION, PAGE)

  • Supports comma-separated values: type=PRODUCT,COLLECTION

  • See Translatable Resource Types for valid values

  • By default, exports all translatable resource types

Resource-level filters only apply to their respective resource types and nested metafields. Other resource types will pass through unfiltered. For example, product filters only affect PRODUCT, PRODUCT_OPTION, and PRODUCT_OPTION_VALUE resources; collection filters only affect COLLECTION resources and their metafields; and metaobject type filters only affect METAOBJECT resources and their metafields.

Product-Level Filters

When exporting product translations, you can filter by product attributes:

  • product_id: Filter by product ID

  • Supports comma-separated values: product_id=123,456,789 to only export translations for those specific products

  • Can be combined with other product filters - when both product ID and other product filters are used, only products matching both conditions are included

  • product_status: Filter by product status

  • Options: active, draft, archived, unlisted

  • Example: product_status=active to only export translations for active products

  • product_tag: Filter by product tag

  • Example: product_tag=summer to only export translations for products tagged "summer"

  • Supports partial matching

  • product_created_at: Filter by product creation date

  • Example: product_created_at=2024-01-01 to export translations for products created on that date

  • Supports date ranges with GREATER_THAN and LESS_THAN relations

Collection-Level Filters

When exporting collection translations, you can filter by collection attributes:

  • collection_id: Filter by collection ID

  • Supports comma-separated values: collection_id=123,456,789 to only export translations for those specific collections

  • Can be combined with other collection filters - when both collection ID and other collection filters are used, only collections matching both conditions are included

  • collection_handle: Filter by collection handle

  • Example: collection_handle=summer-sale to only export translations for that collection

  • collection_type: Filter by collection type

  • Options: custom (Manual), smart (Smart)

  • Example: collection_type=smart to only export translations for smart collections

Metaobject Type Filter

When exporting metaobject translations, you can filter by metaobject type:

  • metaobject_type: Filter by metaobject definition type

  • Example: metaobject_type=color to only export translations for the "color" metaobject type

  • Supports comma-separated values: metaobject_type=color,material

  • Use NOT_EQUALS to exclude specific types

  • Use CONTAINS or NOT_CONTAINS for partial matching

Theme Filter

When exporting theme translations (ONLINE_STORE_THEME), you can filter by theme ID. This is useful when you have multiple themes and only want translations for a specific one.

  • theme_id: Filter by theme ID

  • Example: theme_id=123456789 to only export translations for that theme

  • Supports comma-separated values: theme_id=123456789,987654321

  • You can find your theme ID in the Shopify admin URL when editing a theme (e.g., admin.shopify.com/themes/123456789)

Theme filters apply to all theme-related translation resources, including nested resources like JSON templates, section groups, and locale content.

Market Filter

You can filter translations by market to export only market-scoped translations for specific markets.

  • market: Filter by market name

  • Example: market=Belgium to only export market-scoped translations for the Belgium market

  • Use All Markets to export market-scoped translations for every non-primary market at once

When a market filter is set, the export contains only market-scoped translations for the matching market. Global translations are not included. Without a market filter, only global translations are exported.

When a market filter is active, the store's primary language is included in the export alongside all other languages. This is because Shopify allows market-scoped translations to override content in the primary language for a specific market.

If no language filter is set alongside the market filter, Altera only exports languages that are enabled for that market (based on the market's web presence configuration in Shopify). If a market has no web presence configured, all published languages are exported. You can override this by adding an explicit language filter.

Field Filter

You can filter translations by the field key to limit which translatable fields are exported. This is useful when you only need specific fields (like title) or want to exclude certain fields (like checkout translations).

  • field: Filter by translation field key

  • Supports three relations: EQUALS, STARTS_WITH, and NOT_EQUALS

  • Example: field EQUALS title to only export title translations

  • Example: field STARTS_WITH shopify.checkout to export only checkout-related translations

  • Example: field NOT_EQUALS body_html to exclude HTML body translations

The field filter applies across all resource types. Common field keys include title, body_html, meta_title, meta_description, name, and value. Theme translations use dot-separated keys like shopify.checkout.taxes.vat_number.status.invalid_number.ee.

Example Use Cases

Exporting Product Translations

Export all product translations for French and Spanish:

  1. Select the Translations object type

  2. Add filters: locale=fr,es and type=PRODUCT

  3. Export the file

Identifying Nested Resources

When working with nested resources like product options and option values, the parent columns help you understand the context:

Type

ID

Identification

Handle

Parent Type

Parent ID

Parent Handle

Field

Locale

Default content

Translated content

PRODUCT_OPTION

gid://shopify/ProductOption/123

123

1

PRODUCT

gid://shopify/Product/456

cotton-tee

name

fr

Size

Taille

PRODUCT_OPTION_VALUE

gid://shopify/ProductOptionValue/789

789

1.Small

PRODUCT

gid://shopify/Product/456

cotton-tee

name

fr

Small

Petit

The Handle column uses a 1-based index to identify which option it belongs to. 1 refers to the first option on the product, 2 to the second, and so on. For option values, the format is [index].[value_name] (e.g., 1.Small means the value "Small" under the first option).

Working with Metafields

For metafield translations, the Handle column shows the metafield namespace and key:

Type

ID

Identification

Handle

Parent Type

Parent ID

Parent Handle

Field

Locale

Default content

Translated content

METAFIELD

gid://shopify/Metafield/789

789

custom.care_instructions

PRODUCT

gid://shopify/Product/456

cotton-tee

value

fr

Machine wash cold

Laver à froid

This shows you're translating the custom.care_instructions metafield for the "cotton-tee" product.

Working with Variant Metafields

Metafields attached to product variants use PRODUCT_VARIANT as the Parent Type. The Parent Handle uses the product_handle.variant_title format so the correct variant can be identified across stores:

Type

Handle

Parent Type

Parent Handle

Field

Locale

Default content

Translated content

METAFIELD

custom.care_guide

PRODUCT_VARIANT

cotton-tee.Small

value

fr

Hand wash only

Lavage à la main

METAFIELD

custom.care_guide

PRODUCT_VARIANT

cotton-tee.Medium

value

fr

Machine wash

Lavage en machine

This format matches the variant reference convention used elsewhere in Altera. If the variant title contains commas, they are escaped as \, in the handle.

Working with Metaobjects

For metaobject translations, the Handle column uses the [type].[entry] format:

Type

ID

Identification

Handle

Parent Type

Parent ID

Parent Handle

Field

Locale

Default content

Translated content

METAOBJECT

gid://shopify/Metaobject/1234

1234

color.red

METAOBJECT

gid://shopify/Metaobject/1234

color.red

display_name

fr

Red

Rouge

The handle color.red means this is the "red" entry of the "color" metaobject type.

Troubleshooting

Why are SEO fields missing from my translation export?

The meta_title and meta_description fields only appear in translation exports when the resource has custom SEO values explicitly set. If a product (or collection, page, etc.) does not have a custom meta title or meta description, Shopify defaults to using the resource's title and the beginning of its description. In this case, Shopify does not create a separate translatable entry for those fields in the API.

To make SEO fields available for translation:

  1. Open the resource in Shopify admin (e.g., a product page).

  2. Scroll to the Search engine listing section and click Edit.

  3. Enter a custom Page title and/or Meta description.

  4. Save the resource.

Once custom SEO values are set, the fields will appear in Shopify's Translate & Adapt app and in Altera's translation export. If you don't set custom values, Shopify will automatically use the translated title and description as the translated SEO fields, so custom SEO translations are only needed when you want the SEO text to differ from the resource title and description.

Why are translation exports or imports slow?

Translation exports and imports can be slower than other data types because of how Shopify's translation API works. To provide useful context in the export (like handles and parent handles), Altera needs to make additional API calls to look up each resource. This extra step helps you identify what you're translating but adds processing time, especially for large stores.

Additionally, Shopify's translation APIs have limited filtering options. While we apply as much filtering as possible server-side, some filters (like product status or tags) need to be applied within the Altera app after retrieving the data. This means more data may be fetched than what ends up in your final export.

If you're experiencing extremely slow translation imports or exports, please contact us and we'll look into whether there's a way to speed things up for your specific case.

Limitations

  • Limited resource-level filters: Resource-level filtering is available for products, collections, metaobjects, and themes. Other resource types (pages, blogs, articles, etc.) cannot yet be filtered by their attributes.

If you have suggestions or feature requests, please contact us

Did this answer your question?