Translations live on the offer, not on the store or theme, which means they're scoped and reviewed per offer rather than managed as one global dictionary — an advantage if different offers need different tones per language, a drawback if you're translating dozens of offers and were hoping for a single bulk pass.
Which fields are even translatable depends on the offer's context, because the field set itself differs by context: post-purchase offers expose a timer label, accept/decline button text, and order-summary labels that no other context has, while storefront and checkout contexts instead expose add/remove button text. This follows the same pattern as behavior modes and layout options — the editor only shows translation fields the current context combination actually renders, rather than showing every field and letting you fill in ones that won't be used.
Translations work alongside Shopify Markets rather than replacing it: Markets determines which language and currency a given shopper sees based on where they are, and an offer's per-language translation is what then actually renders in that language once Markets has made that determination.