# `PhoenixKitAI.Translatables`
[🔗](https://github.com/BeamLabEU/phoenix_kit_ai/blob/v0.4.0/lib/phoenix_kit_ai/translatables.ex#L1)

Discovery for AI-translatable adapters.

A feature module opts a resource into AI translation by exporting
`ai_translatables/0` returning `[{resource_type, adapter_module}]`, where
`adapter_module` implements `PhoenixKitAI.Translatable`. This scans every
module known to `PhoenixKit.ModuleRegistry` for that function (duck-typed —
the function is **not** a `PhoenixKit.Module` callback, so feature modules
declare AI-translatability without core knowing anything about AI).

`resource_type` strings must be globally unique; on a collision the first
registered module wins.

# `all`

```elixir
@spec all() :: %{required(String.t()) =&gt; module()}
```

`%{resource_type => adapter_module}` for every registered module that
exports `ai_translatables/0`.

# `find`

```elixir
@spec find(String.t()) :: module() | nil
```

Resolve the adapter for a `resource_type`, or `nil`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
