limit_customer changes with the number, so you edit it as a singular and plural pair.
To find one message, type in the search box above the groups. It matches the wording and the row name, which says when the message shows, and it opens every group so the matches are in view.
A rewritten field gets a Customised badge, the shipped wording under it (Default: “…”), and a Reset to default button. Leave one blank and the shipped wording is used. You only ever store what you changed, so an improved default reaches you automatically.
The tables below list each message by the row name the screen shows.
Error messages
Ten messages for a link that couldn’t be followed, one for each of the ten ways a link is refused. See Where customers land for where the customer goes next.item_blocked only shows when Settings → Cart behaviour → Unavailable items is set to Refuse the preset.
not_signed_in and role_not_allowed are store-wide, not per preset. You write them once here and every link uses them, so a wholesale link and a staff link say the same thing.Warning messages
Four messages for a link that worked with a caveat. Nothing here is a refusal: something reached the cart, so the customer keeps it and Redirect after adding decides where they land.Cart messages
Four messages about editing a preset that’s already in the cart.Labels
Three labels rather than notices, shown on the cart line, the order, and in emails.Placeholders
Five messages contain a placeholder that carries a value:
They’re checked when you save. Dropping a placeholder leaves a sentence that reads like a typo, such as “limited to purchases per customer”. Adding one would break the cart page in front of a customer.
Either is refused. The save stops, the group holding the row at fault opens, and the error shows under that row, so you can’t save a message that would fail later.
The one plural
limit_customer is the only message whose grammar changes with the number, so it’s stored as a pair: singular and plural. Each one falls back on its own. Rewrite only the plural and you get your sentence for two and the shipped one for one, rather than “1 purchases”.
If your store translates into a language with more than two plural forms, you’re better off leaving this one at its default. The default keeps proper plural handling in every locale. An override has exactly two forms, whatever the language.
Translating
There are two halves, and they translate differently. Wording you haven’t touched goes through WordPress’s normal translation functions, and it’s in the.pot file like everything else. You don’t need to do anything.
Wording you’ve rewritten is a value in an option, and an option value is data, not a translatable string. CartPresets ships a wpml-config.xml that names every key, so a translation plugin can pick it up.
Polylang reads the same file through its own WPML-config compatibility and needs no add-on.
Why String Translation only lists some of them
It lists only the ones you’ve rewritten. That’s expected. WPML builds its list from the keys that are named in the config and held in the option, and CartPresets stores only your overrides. A notice still at its shipped wording has nothing to translate there, because gettext translates it instead. The list grows as you edit, and a store that has reworded nothing sees an empty list.For developers
cartpresets_notice_text filters one customer-facing sentence before its values are put in. It receives the wording, the notice ID, and whether this is the plural form of a pair. See the hooks reference.