Remove hardcoded field-name patterns from ai_translate's TextExtractor::shouldExtract()
## Description
This issue was discovered on a project where `field_prefix` in `field_ui.settings.yml` was set empty, causing all custom fields to be silently skipped during AI translation even though they were translatable and had registered extractor plugins.
Turns out `TextExtractor::shouldExtract()` uses a hardcoded list of field-name patterns to decide which fields are extracted for translation:
https://git.drupalcode.org/project/ai/-/blob/1.3.4/modules/ai_translate/src/TextExtractor.php?ref_type=tags#L133-139
```php
// @todo better way to find fields that should be translatable?
static $supportedFieldNames = ['body', 'info', '^field_', '^layout_builder_'];
```
The `field_` prefix is a convention, not a requirement — it can be changed or omitted entirely via `field_ui.settings.yml` (`field_prefix: field_`).
## Tasks
* [ ] Replace the hardcoded name-pattern check in `TextExtractor::shouldExtract()` with an `instanceof FieldConfigInterface` check, deferring to the plugin's own `shouldExtract()` logic for all custom configurable fields.
## Acceptance criteria
* A translatable node field whose machine name does not start with `field_` is included in AI translation output.
## Testing instructions
1. Set `field_prefix` to empty in `field_ui.settings.yml`.
2. Create a plain text field named `summary` on an Article node.
3. Run AI translation on a populated Article node.
4. Verify the `summary` field content is translated.
## Related issues
issue