Translate a plugin gettext catalog

Use this workflow for fixed messages shipped by a WordPress plugin. You need the plugin's exact text domain and at least one additional POM Translate language.

Identify the catalog

Find the plugin's Text Domain in its plugin details, header, documentation, or POT filename. The domain is usually a lowercase slug and may differ from the plugin's display name.

POM Translate can load a domain only when it can find catalog data. It prefers a domain POT source, can use the exact target-locale PO or MO, and can fall back to another available PO as a source when necessary. It does not scan the plugin's PHP files.

Load and translate

  1. Go to Translations → Software translations as an administrator.
  2. Choose the target locale.
  3. Enter the plugin's exact Text domain.
  4. Select Load strings.
  5. Confirm that Domain type reports Plugin and review the source and translation files.
  6. Translate the required singular and plural fields.
  7. Review the Context column before translating ambiguous messages.

If POM AI is enabled, use the per-row action or Start batch translation to fill empty fields. Batch translation leaves existing values unchanged. Stop prevents later browser batches, although the request already in progress may finish.

Review every draft, especially product terminology, placeholders, HTML, keyboard hints, and plural forms.

Export before leaving

Edits exist only in the current browser page.

  1. Select Download PO to keep the editable catalog.
  2. Select Download MO to keep the compiled file WordPress loads.
  3. Store both files safely.
  4. Install them using one of the exact paths and basenames displayed on the screen.

Plugin exports normally use <text-domain>-<locale>.po and .mo. A global wp-content/languages/plugins/ location is generally safer from plugin updates than writing inside the plugin, provided it is one of the recommended paths shown.

POM Translate downloads files; it does not copy them into the server.

Verify

Request a page where the plugin loads its text domain in the target locale. Confirm the translated message and plural behavior. If the source still appears, check the installed basename and path, clear relevant caches, and reload on a new request.

Messages generated from configurable plugin settings may be registered strings instead of gettext entries.