Choose between dynamic and static strings

The location of the source text determines how it should be translated. The important question is whether the text is a configurable value or a gettext message shipped with software.

Use a registered string for a dynamic value

Register text when it is stored in a setting, generated by an integration, or otherwise not present as a fixed gettext message in a catalog.

Examples include:

  • a footer notice saved in a theme option;
  • a call-to-action label configured by a site owner;
  • a public heading supplied by a custom integration.

The integration must give the value a stable name. POM Translate then presents it under Translations → Other translations and stores each locale's translation in its database.

Do not use a changing translated value as the name. The name identifies the setting; the source value is the text that visitors read.

Use gettext for static software copy

Use Translations → Software translations when the original message is part of WordPress, a theme, or a plugin and belongs to a gettext text domain.

Examples include:

  • Add to cart;
  • an administration screen label;
  • a validation message shipped by a plugin;
  • a theme's fixed navigation or accessibility copy.

POM Translate reads a POT, PO, or MO file for the domain. It does not discover messages by scanning PHP, JavaScript, or template files. The finished translations must therefore be exported and installed as gettext files.

A practical decision

Ask these questions in order:

  1. Can a site owner change the original value in a setting? Register it.
  2. Is the message shipped in source code with a text domain? Translate its gettext catalog.
  3. Is the text part of a post, term, menu item, or translatable custom field? Use the corresponding content editor instead.

Avoid registering every gettext message as a workaround. It creates two sources of truth and loses gettext features such as plural forms and message context.

Expected result

Each source has one translation route: dynamic public values remain manageable in POM Translate, while static software copy remains compatible with WordPress's native gettext loader.