/** * README content that gets written to every .inlang project folder. * * The goal is to help coding agents understand what this folder is * and how to use the inlang SDK to build tooling. */ export declare const README_CONTENT = "\n## What is this folder?\n\nThis is an [unpacked (git-friendly)](https://inlang.com/docs/unpacked-project) inlang project.\n\n## At a glance\n\nPurpose:\n- This folder stores inlang project configuration and plugin cache data.\n- Translation files live outside this folder and are referenced from `settings.json`.\n\nSafe to edit:\n- `settings.json`\n\nDo not edit:\n- `cache/`\n- `.gitignore`\n\nKey files:\n- `settings.json` \u2014 locales, plugins, file patterns (source of truth)\n- `cache/` \u2014 plugin caches (safe to delete)\n- `.gitignore` \u2014 generated\n\n```\n*.inlang/\n\u251C\u2500\u2500 settings.json # Locales, plugins, and file patterns (source of truth)\n\u251C\u2500\u2500 cache/ # Plugin caches (gitignored)\n\u2514\u2500\u2500 .gitignore # Ignores everything except settings.json\n```\n\nTranslation files (like `messages/en.json`) live **outside** this folder and are referenced via plugins in `settings.json`.\n\n## What is inlang?\n\n[Inlang](https://inlang.com) is an open file format for building custom localization (i18n) tooling. It provides:\n\n- **CRUD API** \u2014 Read and write translations programmatically via SQL\n- **Plugin system** \u2014 Import/export any format (JSON, XLIFF, etc.)\n- **Version control** \u2014 Built-in version control via [lix](https://lix.dev)\n\n```\n\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 i18n lib \u2502 \u2502Translation\u2502 \u2502 CI/CD \u2502\n\u2502 \u2502 \u2502 Tool \u2502 \u2502 Automation \u2502\n\u2514\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u252C\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502 \u2502 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u25BC \u25BC \u25BC\n \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 *.inlang file \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## Quick start\n\n```bash\nnpm install @inlang/sdk\n```\n\n```ts\nimport { loadProjectFromDirectory, saveProjectToDirectory } from \"@inlang/sdk\";\n\nconst project = await loadProjectFromDirectory({ path: \"./project.inlang\" });\n// Query messages with SQLite + [Kysely](https://kysely.dev/) under the hood.\nconst messages = await project.db.selectFrom(\"message\").selectAll().execute();\n\n// Use project.db to update messages.\nawait saveProjectToDirectory({ path: \"./project.inlang\", project });\n```\n\n## Ideas for custom tooling\n\n- Translation health dashboard (missing/empty/stale messages)\n- Locale coverage report in CI\n- Auto-PR for new keys with placeholders\n- Migration tool between file formats via plugins\n- Glossary/term consistency checker\n\n## Data model ([docs](https://inlang.com/docs/data-model))\n\n```\nbundle (a concept, e.g., \"welcome_header\")\n \u2514\u2500\u2500 message (per locale, e.g., \"en\", \"de\")\n \u2514\u2500\u2500 variant (plural forms, gender, etc.)\n```\n\n- **bundle**: Groups messages by ID (e.g., `welcome_header`)\n- **message**: A translation for a specific locale\n- **variant**: Handles pluralization/selectors (most messages have one variant)\n\n## Common tasks\n\n- List bundles: `project.db.selectFrom(\"bundle\").selectAll().execute()`\n- List messages for locale: `project.db.selectFrom(\"message\").where(\"locale\", \"=\", \"en\").selectAll().execute()`\n- Find missing translations: compare message counts across locales\n- Update a message: `project.db.updateTable(\"message\").set({ ... }).where(\"id\", \"=\", \"...\").execute()`\n\n## Links\n\n- [SDK documentation](https://inlang.com/docs)\n- [inlang.com](https://inlang.com)\n- [List of plugins](https://inlang.com/c/plugins)\n- [List of tools](https://inlang.com/c/tools)\n"; //# sourceMappingURL=README_CONTENT.d.ts.map