Multi-site

Every table exists on every site — an embed on the Spanish page has to be able to find it. Whether it says the same thing everywhere is a separate question, answered per table.

Shared or translated

Each table's sidebar has a Content setting, on multi-site installs:

SettingWhat happens
The same on all sites (default)One grid. Saving copies it to every site.
Translated per siteA grid per site, edited independently.

Switch a table to translated and each site keeps what was already there, so a translation starts as a copy — an author opens something to edit rather than an empty grid. Switch back and the grid you are looking at is copied over the others, which is the only thing “the same on all sites” can mean.

The caption and the notes are per-site as well; the handle, the source and the presentation options are not. A table looking different in one language would be a surprise, and its handle changing per site would break embeds.

Editing a translation

The table editor gets Craft's usual site switcher in the breadcrumbs. What you are editing is stated under the Content setting — You are editing the Español version — because a grid gives no other clue about which site it belongs to.

How embeds resolve

Everything resolves in the site being rendered:

  • {legs:prices:render} in a Spanish entry renders the Spanish grid.
  • craft.legs.render('prices') renders the current site's grid.
  • A Legs field on a translated entry points at the translation of the table it references.

Adding a site later

Craft queues resave jobs when a site is created, and those give existing tables their presence on it. Legs does not wait for that queue to drain: a table with no row for a site yet is still found, and still renders, using the content it does have. Saving it in the new site is what creates the row.

That fallback is for reading only. A save always lands on the site you were editing, never on whichever site happened to answer the lookup — which is the difference between a translation and an accident.