Add the concept of "translatable" fields

Hello,

This is a general request to improve the translation system. As powerful as the translation system is, it suffers from a few limitations that can break stores very easily without merchants realizing.

Specifically, when you make a metafield definition translatable, all the fields become, de-facto, translatable, and are being returned to the translatable resources API (translatableResources - GraphQL Admin).

It is the same for theme settings. All text, rich text, text area… fields are automatically exposed as a translatable resource.

The issue is that many apps (including Shopify own Translate & Adapt app) have an automatic translation feature that will take all translatable resources and will attempt to translate them.

However, there are various cases where it falls apart, and where such a system will translate fields it should not.

There are two main use cases I am thinking of:

  • In the theme, there are some settings that are kind of “advanced”, that requires the merchant to enter, for instance, a CSS selector (this can be frequent for app blocks, specifically).
  • For metaobjects, a metaobject definition might contain some fields that are not meant to be translated, because they hold system values (such as flags, statuses…).

I suggest a more-granular approach, fully backward compatible with existing system:

For themes

Translatable fields could define a new “translatable” field that could be explicitly set to false by a theme developer/app developer:

{
   "type": "text",
   "id": "selector",
   "label": "Selector",
   "translatable": false
}

For metaobject definitions

For metaobject definitions, we should have the ability for a translatable metaobject definition to indicate that one or more field is not translatable, with a new translatable property at the field level. If not defined, this would inherit the metaobject definition translatable property.

From a consumer perspective, the idea is that theme settings fields and metaobject fields that are not translatable are automatically not returned as a translatable resource. This would fix automagically such issues as apps would no longer receive those resources, hence removing any unwanted translations.

As AI translations is getting better and better, I expect merchants will rely more and more on automatic translations, so it is really important that Shopify gives a bit more flexibility on what can be translated or not.

Thanks!

1 Like

I’m not sure if this would get implemented anytime soon, but yes, I have had issues around this too. Some fields are meant not to be translated. I wonder if custom html/liquid fields get translated too?

1 Like

I very much support this as well.

1 Like

Thanks for the feedback, @bakura10. I could see this being really useful. The current all-or-nothing approach does seem limiting when you only want certain fields translatable within the same resource.

There isn’t a way to do this granularly right now, but I’ve passed it on to our teams. Definitely seems like something that would help with more complex multilingual setups.