Getting started
This walkthrough follows a repository from its first scan to its first translation pull request. It assumes a gettext project; Elixir/Phoenix is the polished path (see the Elixir guide). JSON message files work the same way, and the JSON guide covers what is different.
Dialecto is in a soft launch. The app is still in testing and is not open to the public yet, so the steps below describe how it works rather than a sign-up anyone can complete today. Accounts open at launch, and until then we are welcoming early access by email: write to info@dialecto.eu and tell us your framework. The rest of the docs assume you have an account, and will not repeat this.
1. Create your account
You sign in with your email. Dialecto’s authentication is self-hosted: a magic link to sign in, and a password if you prefer one. Your account belongs to an organization, and repositories are worked on by teams; if you are first in, you create both as you go.
2. Connect your repository
From Repos → New, register the repository and choose its format (gettext for Elixir/Phoenix, or JSON message files). Two things matter here:
- How Dialecto gets your translation files. By default the Dialecto GitHub App reads only your translation files, at the paths you confirm, and never your source code. If you would rather not allow that, you can block read access, and your CI sends the files instead with a scan token: per repository, shown once, stored only as a hash, and regenerable from the repository’s settings.
- The GitHub connection for pull requests. Either the Dialecto GitHub App (where configured) or a fine-scoped personal access token, encrypted at rest. See GitHub App.
3. Send your first scan
A scan carries your catalogs and, optionally, the source snippets around each gettext call, which power in-place context and the rename rewrite. Nothing else leaves your repo.
With read access on, a push to a scanned branch is enough: Dialecto reads the translation files itself. If you blocked read access, or you want usage snippets, your CI sends the scan. For an Elixir project:
mix gettext.extract --merge
# then POST priv/gettext/** to Dialecto, as described in the scan reference
The scan is one authenticated HTTP call. The full payload contract, the limits and a CI sketch live in Scanning & CI.
4. Explore the catalog
Open Repos → your repo → Catalog. Your strings appear organized by domain, each entry with its translations per locale and, if your scan sent usage snippets, the code around it. This is the editor; Concepts explains the model behind it.
5. Edit, and watch the diff
Translate a few strings. Every save stages a change, and the staged set previews as a minimal unified diff: one line per change, with comments and ordering untouched. Validation runs as you go, covering placeholder parity, plural forms and glossary terms.
6. Review and ship
Submit staged work for review (or approve it yourself if your role allows), then open the pull request. Dialecto commits through the GitHub API without cloning, and with the App installed the commit is app-attributed and Verified. Merge it on GitHub like any other pull request.
Where to go next
- Make missing translations block merges: The merge gate
- Give the AI your voice: Context & personas
- Wire scans into CI properly: Scanning & CI
- Bring your editor or agent: API & MCP