How pending translations are found
The generator combines a content rescan with a database-wide unresolved-string sweep. These two stages cover different sources.
Stage 1: refresh discoverable content
POM Translate enumerates:
- enabled post types and posts with published, draft, future, pending, or private status;
- every navigation menu item;
- enabled taxonomies, including terms that currently have no assigned content.
Each object is parsed again. Posts refresh their content and registered metadata strings, terms refresh their configured fields, and menu items refresh their label data. Global exclusions can remove stored strings instead of recreating them; language-specific exclusions skip that locale.
Stage 2: sweep stored strings
For each additional language, the database sweep selects a string when:
- no translation row exists;
- its status is Pending; or
- its translated text is empty.
The sweep uses a stable string-ID cursor in pages. It therefore catches registered defaults, retained pending drafts, and older unresolved rows that cannot be rediscovered by enumerating WordPress objects.
A non-empty value marked Pending is still unresolved and can be sent for machine translation. A non-empty Machine, Human, or Reviewed value is not part of this pending selection.
Separate storage systems
Content slugs and custom URLs use dedicated URL storage. Software translations work with gettext catalogs and exported files. Neither is discovered as ordinary prose by this database sweep.
If an expected row is absent, first confirm that its content type or taxonomy is enabled and not globally excluded. Then save the source object or run the generator again.