DEVELOPER TEAMS
READMEs and API docs for every developer, every language
Ellon AI translates Markdown documentation, READMEs, and API guides while keeping code blocks, inline formatting, and link structure perfectly intact. so developer audiences worldwide read your docs the way you wrote them.
Documentation translation breaks the code
Developer documentation is half prose, half code. A README walks through installation, shows a command-line example, embeds a configuration file, links to three other pages, and throws in a badge or two. When a generic translation tool runs on that, the code blocks get 'translated' (which breaks the example), the inline code gets wrapped weirdly, the links point to broken anchors, and the badges come out as URL-encoded garbage. The maintainer then spends an evening manually diffing the translated README against the English one to find everything the tool mangled. Most projects give up on translated docs entirely. Ellon AI respects the structure: code blocks stay untouched, inline code is left verbatim, links point where they pointed, badges render. The prose translates; the code doesn't.
- Code blocks (fenced and indented) never translated. always preserved exactly
- Inline code, badges, and shields.io URLs pass through unchanged
- Link anchors and internal references preserved
- GitHub Flavored Markdown fully supported
Translate a full README without touching a line of code
Upload a README, API doc, changelog, or Markdown documentation file. Ellon AI translates headings, paragraphs, bullet lists, and table descriptions while keeping fenced code blocks, inline backticks, shields.io badges, anchor-link URLs, YAML frontmatter, and filenames completely untouched. The translated file renders identically on GitHub, GitBook, or VitePress. every example command still runs.
Original · English
🧭 Nova Router
A minimalist, TypeScript-first routing library for modern web apps. 1.2 kB gzipped, zero dependencies, works in Node, Deno, and the browser.
## Installation
$ npm install nova-router # or $ yarn add nova-router $ pnpm add nova-router
## Usage
Import Router and declare routes with the async handlers you already know:
import { Router } from 'nova-router'
const app = new Router({
base: '/app',
strict: true,
})
app.get('/users/:id', async (ctx) => {
return ctx.json({ user: ctx.params.id })
})
app.listen(3000, () => {
console.log('🚀 listening on :3000')
})## Configuration
Every instance of Router accepts an options object with the following fields:
| Option | Type | Default | Description |
|---|---|---|---|
| base | string | '/' | Base path prefix applied to every declared route |
| strict | boolean | false | Enforce strict trailing slashes |
| cache | boolean | true | Cache compiled route matchers in memory |
| logger | Logger | null | null | Optional logger used for route lifecycle events |
## Contributing
Contributions are welcome. Please read CONTRIBUTING.md before submitting a PR:
- Fork the repository and create a branch from
main - Run
npm testandnpm run lintbefore committing - Open an issue to discuss breaking changes before starting work
Licensed under the [MIT License](./LICENSE).
See also: Documentation·Examples·Changelog
Translated · Español
🧭 Nova Router
Una librería de enrutado minimalista y con TypeScript nativo para aplicaciones web modernas. 1,2 kB comprimido, sin dependencias, funciona en Node, Deno y el navegador.
## Instalación
$ npm install nova-router # or $ yarn add nova-router $ pnpm add nova-router
## Uso
Importa Router y declara las rutas con los manejadores asíncronos que ya conoces:
import { Router } from 'nova-router'
const app = new Router({
base: '/app',
strict: true,
})
app.get('/users/:id', async (ctx) => {
return ctx.json({ user: ctx.params.id })
})
app.listen(3000, () => {
console.log('🚀 listening on :3000')
})## Configuración
Cada instancia de Router acepta un objeto de opciones con los siguientes campos:
| Opción | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| base | string | '/' | Prefijo de ruta base aplicado a cada ruta declarada |
| strict | boolean | false | Aplica la barra final de forma estricta |
| cache | boolean | true | Almacena en memoria los compiladores de ruta |
| logger | Logger | null | null | Logger opcional para eventos de ciclo de vida de la ruta |
## Contribuciones
Las contribuciones son bienvenidas. Por favor, lee CONTRIBUTING.md antes de enviar un PR:
- Haz un fork del repositorio y crea una rama desde
main - Ejecuta
npm testynpm run lintantes de hacer commit - Abre un issue para discutir cambios que rompan compatibilidad antes de empezar
Publicado bajo la [Licencia MIT](./LICENSE).
Véase también: Documentación·Ejemplos·Registro de cambios
Audit every API-reference change across versions
Upload the old and new version of a DOCX or PDF export of your API reference. Ellon AI produces a Word tracked-changes document spanning every section. new endpoints, breaking response-shape changes, deprecated options, rate-limit updates, TypeScript type inference changes, and the migration checklist. plus a semantic summary separating substantive edits from formatting and wording shifts. Designed for the release-engineering workflow between documentation versions.
This revision records every public API surface change between v1.4.2 and v1.5.0, in the order the translated documentation team should propagate them. Items flagged breaking require a migration note in every translated README. Unreferenced sections are unchanged.
v1.5.0 introduces a new endpoint for inspecting a compiled route matcher at runtime. The handler returns the canonicalised path pattern, the ordered list of path parameters, and the priority assigned by the resolver. Example response:
// GET /routes/:id — new in 1.5.0
{
"id": "rte_4821",
"pattern": "/users/:id",
"params": ["id"],
"priority": 120
}The app.match() helper now returns an object rather than a tuple. Translators should call this out as a breaking change in every language:
// v1.4 (deprecated — remove after 1.6)
const [matched, params] = app.match('/users/42')
// v1.5 (current)
const { matched, params, handler } = app.match('/users/42')Migration is mechanical and can be driven by the codemod published in the companion @nova-labs/codemods package.
The cacheSize: number option is retained but logs a deprecation warning on every Router instantiation. cacheSize is deprecated in v1.5.0 and will be removed in v2.0. Use cache: true | false with an explicit per-route maxAge (in seconds) instead. A deprecation warning is logged on every Router instantiation that still passes cacheSize.
The built-in rate-limit middleware now defaults to 60 requests per minute per route 120 requests per minute per route, windowed at 10-second granularity, with a shared bucket when the rateLimit.shared option is enabled. Existing deployments that relied on the lower default should pin the old value explicitly when upgrading.
Generic type parameters for Router.get() and friends are now inferred from the route pattern, so hand-written <T extends Params> param generics are no longer required. Existing code compiles without changes; the types simply become more precise.
The localisation team should coordinate the following updates across every translated README and doc-site page: (i) mark Section 2 as breaking with the same migration snippet in all languages; (ii) add the new GET /routes/:id reference entry; (iii) update the rate-limit default; (iv) preserve all code blocks and inline backticks verbatim.
All other v1.4 reference material — installation, quickstart, middleware reference, and the error-code table — carries over to v1.5 without modification. Run npm run docs:diff locally to verify propagation before publishing translated builds.
How developer teams use Ellon AI
Open source, internal developer platforms, and commercial developer tools all run on documentation. A library with great code but poor documentation doesn't get adopted. A library with documentation only in English limits its reach to a fraction of the world's developers. and locks out the growing developer populations in Latin America, China, Japan, Korea, the Nordics, and Germany. Translation is adoption strategy, but historically the tooling made it infeasible for anything except the largest projects.
Open source project documentation
Translate READMEs, contributing guides, code of conduct files, and project documentation into the languages of your contributor community. Ellon AI respects Markdown structure. code blocks, inline code, link anchors, frontmatter. so the translated README renders correctly on GitHub without manual fixes. For projects that accept community translations today, Ellon AI is the baseline draft that reviewers refine rather than a from-scratch translation every time.
API documentation
API reference docs combine prose, code samples in multiple languages, request/response examples, and navigation structure. Ellon AI translates the prose descriptions while leaving code samples untouched. a Python request example stays Python, a curl command stays curl, JSON response bodies stay valid. Full-stack documentation sites (Docusaurus, VitePress, Fumadocs) work with the translated output directly.
Internal developer platform docs
Enterprise platform engineering teams maintain internal documentation for developer platforms, deployment guides, runbooks, and architectural decision records. For global engineering organizations, this documentation often needs to be in the local language of distributed engineering offices. Ellon AI handles the translation, and within each document the translator maintains terminology consistency automatically.
Changelogs and release notes
Release notes and changelog translation is high-churn content. every release produces updated notes that need to propagate across language versions. Ellon AI handles this cadence naturally; a changelog update translates in minutes, so release announcements can ship simultaneously in every supported language rather than staggered by weeks.
SDK documentation and code comments
For SDKs distributed across developer communities, Ellon AI translates method documentation, README examples, and surrounding docs while preserving the code structure. Inline code samples inside fenced blocks stay verbatim.
Tutorial and learning content
Developer tutorials, getting-started guides, and educational content translate with code examples intact. Platform teams running developer outreach programs can localize tutorials for global developer audiences without the manual code-block-checking overhead.
Error messages and CLI help text
For developer tools with localizable error messages and CLI help text in Markdown or text files, Ellon AI translates the prose content in bulk while preserving interpolation placeholders and syntax. The output drops into the localization pipeline the tool already uses.
Code of conduct and community guidelines
Community-facing documents (code of conduct, governance models, contribution guidelines) translate with the tone and nuance appropriate to community documents. For projects with international contributor bases, having these documents available in contributor languages materially affects community health.
Doc revision workflows
When docs get a major revision. breaking API change, new architecture section, deprecated feature rewrite. running the compare tool on old and new versions produces a Word tracked-changes output with AI semantic analysis. Maintainers see what needs to propagate to translated versions without re-reading every line.
Integration with git-based workflows
Translated docs fit naturally into git-based documentation workflows. A docs PR in English is translated via the web app or API; the translated output can be committed to the language-specific branch or path in the repo.
Format coverage
GitHub Flavored Markdown, CommonMark, and plain Markdown all supported. YAML frontmatter is preserved. Code blocks (fenced with triple backticks or tilde, indented, with language identifiers) are protected from translation. Inline code (single backticks) and code spans are preserved verbatim.
The practical outcome: documentation in every language a project's developers speak, without the manual code-block-checking grind. Adoption grows because documentation grows, and documentation grows because translation is no longer the bottleneck.
Frequently asked
Frequently asked questions
Still have questions?
Reach out and we'll answer within one business day.
Translate your project docs this afternoon
Start with 20 free pages. No credit card. Upload a README and see the code blocks and badges survive the translation.
Start your free trial