theme-tools icon indicating copy to clipboard operation
theme-tools copied to clipboard

`ValidSchema` check errors on nested translation keys

Open david-w-shopify opened this issue 11 months ago • 1 comments

Describe the bug When using the locales object in a section schema, Theme Check raises an error if the translation is an object rather than a string, despite being renderable on the frontend.

Image

Image

Despite this being accepted by the platform, and renderable by Liquid, in the /themes/:id/language UI the nested keys only use the last portion of the key (desktop or mobile) in this case. So whilst I'd argue this is still a valid schema, I do think it's still worth at least warning users about to discourage a poor edit experience for merchants.

Source

// section/test-section.liquid

<p>{{ 'sections.test-section.title' | t }}</p>
<p>{{ 'sections.test-section.description.desktop' | t }}</p>
<p>{{ 'sections.test-section.description.mobile' | t }}</p>

{% schema %}
{
  "name": "Section",
  "locales": {
    "en": {
      "title": "Title",
      "description": {
        "desktop": "Lorem ipsum dolor sit amet consectetur, adipisicing elit.",
        "mobile": "Lorem ipsum dolor sit amet"
      }
    }
  }
}
{% endschema %}

Expected behaviour No errors

Actual behaviour The description object in the schema has a ValidSchema error

Debugging information

  • OS: Mac
  • OS Version: Sequoia 15.2
  • Theme Check Version: 3.73.2

david-w-shopify avatar Jan 20 '25 10:01 david-w-shopify

I've done some more investigation and this also raises an error for pluralised locales, e.g.

<p>{{ 'sections.test-section.title' | t }}</p>
<p>{{ 'sections.test-section.description' | t: count: 1 }}</p>

{% schema %}
{
  "name": "Section",
  "locales": {
    "en": {
      "title": "Title",
      "description": {
        "one": "Some thing",
        "other": "Some things"
      }
    }
  }
}
{% endschema %}

For the sake of pluralisation I think this ought to be reviewed.

david-w-shopify avatar Jan 20 '25 10:01 david-w-shopify