Skip to content

Latest commit

 

History

History
116 lines (116 loc) · 11 KB

File metadata and controls

116 lines (116 loc) · 11 KB

┌─────────────────────────────────────────────────────────────────┐ │ [logo] inlang [Blog] [Docs] [GH] │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ [Two Column Hero Layout] │ │ │ │ ┌─────────────────────────┐ ┌─────────────────────────────┐ │ │ │ │ │ │ │ │ │ The open file format │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ for localization (i18n)│ │ │i18n Lib│ │Translat│ │ Design │ │ │ │ │ │ │ │ Tool │ │ Tool │ │ │ One file format. │ │ └───┬────┘ └───┬────┘ └───┬────┘ │ │ Multiple tools. │ │ │ │ │ │ │ │ All interoperable. │ │ └─────────┼─────────┘ │ │ │ │ │ │ │ │ │ The good old Unix │ │ ▼ │ │ │ philosophy. │ │ ┌───────────────────┐ │ │ │ │ │ │ .inlang file │ │ │ │ [Explore tools] [Docs] │ │ └───────────────────┘ │ │ │ │ │ │ │ │ └─────────────────────────┘ └─────────────────────────────┘ │ │ │ │ ───────────────────────────────────────────────────── │ │ │ │ ★ 2.3k 📦 45k 👥 118 │ │ stars weekly downloads contributors │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ## The problem │ │ │ │ i18n tools are not interoperable. │ │ │ │ ┌──────────┐ ┌───────────┐ ┌──────────┐ │ │ │ i18n lib │───╳────│Translation│────╳────│ Design │ │ │ │ │ │ Tool │ │ Tool │ │ │ └──────────┘ └───────────┘ └──────────┘ │ │ │ │ Every tool has its own format, its own sync, its own │ │ collaboration layer. Cross-team work? Manual exports. │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ## The solution │ │ │ │ A file format designed for applications, not just data. │ │ │ │ Unlike JSON or YAML, the .inlang file is a complete backend │ │ for i18n tools: │ │ │ │ • CRUD API — Read and write translations programmatically │ │ • SQL queries — Query messages like a database │ │ • Plugin system — Import/export any format (JSON, XLIFF, etc.) │ │ • Version control — Built-in change tracking via lix │ │ │ │ One file. Every tool builds on the same foundation. │ │ │ │ ┌──────────┐ ┌───────────┐ ┌──────────┐ │ │ │ Paraglide│ │ Fink │ │ Sherlock │ │ │ └────┬─────┘ └─────┬─────┘ └─────┬────┘ │ │ │ │ │ │ │ └─────────┐ │ ┌──────────┘ │ │ ▼ ▼ ▼ │ │ ┌──────────────────────────────────┐ │ │ │ .inlang file │ │ │ └──────────────────────────────────┘ │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ## Popular tools │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Paraglide │ │ Fink │ │ Sherlock │ │ │ │ ─────────── │ │ ─────────── │ │ ─────────── │ │ │ │ i18n library│ │ Translation │ │ VS Code │ │ │ │ for JS/TS │ │ editor │ │ extension │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ │ [View all tools →] │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ## Build your own │ │ │ │ ts │ │ import { loadProjectFromDirectory } from "@inlang/sdk" │ │ │ │ const project = await loadProjectFromDirectory({ │ │ path: "./project.inlang" │ │ }) │ │ │ │ const messages = await project.db │ │ .selectFrom("message") │ │ .selectAll() │ │ .execute() │ │ │ │ │ │ The SDK gives you: │ │ • CRUD API for translations │ │ • SQL queries │ │ • Plugin system for any format │ │ • Version control via lix │ │ │ │ [████ Read the docs] │ │ │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ Get started │ │ │ │ │ │ │ │ [████ Explore tools] [○ Documentation] │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘