This monorepo aims to develop a suite of libraries and applications designed to revolutionize internationalization (i18n) workflows. The core objective is to make i18n tasks more enjoyable, structurally elegant, highly efficient, and exceptionally collaborative, particularly for team members without a coding background. This will be achieved by enabling i18n management directly within datasheets/spreadsheets.
Traditional i18n often involves navigating complex file formats (like JSON or YAML), which can be error-prone and intimidating for non-developers. Spreadsheets, on the other hand, offer a familiar and intuitive interface with powerful features that can significantly enhance the i18n process:
- Rich Formatting & Organization: Features like cell coloring, comments, notes, and multiple sheets/tabs allow for clear structuring and communication of translation data, which is invaluable in large-scale projects.
- Ease of Collaboration: Spreadsheets are universally accessible. Different teams (e.g., translators, content creators, product managers) can easily open, find, and edit translations without needing to understand specific programming syntaxes.
- Natural Workflow: For many, working within a spreadsheet is a more natural and straightforward way to manage textual data compared to code-centric approaches.
- Improved Tracking and Comparison: Again, most current i18n workflows deal with multiple JSON/YAML files, which is very hard to keep track of, both for humans and AIs. Uniforming translations under a datasheet format like CSV, which have columns support, makes it easy for both humans and AI to compare translations across different languages and quickly identify missing translations.
⏩ This template is powered by Turborepo.
💯 JS is always TypeScript where possible.
spreadsheet-i18n
: The core library
- Containing the main magics that enables i18n management directly within spreadsheets.
unplugin-spreadsheet-i18n
: Unplugin support
- Unplugin wrapper to integrate with any project easily!
ssic
: CLI wrapper
- CLI wrapper so that you can easily convert CSV/XLSX/ODS to JSON from your terminal.
@local/locales
: a shared central locales/i18n data library powered by spreadsheet-i18n.- 🌐✨🤖 AUTOMATIC localization with AI, powered by lingo.dev, just
pnpm run i18n
. - 🔄️ Hot-reload and automatic-reload supported, changes are reflected in apps (
frontend
,backend
) instantly.
- 🌐✨🤖 AUTOMATIC localization with AI, powered by lingo.dev, just
tsconfig
:tsconfig.json
s used throughout the monorepo.
This Turborepo has some additional tools already setup for you:
- 🧐 ESLint + stylistic formatting rules (antfu)
- 📚 A few more goodies like:
- lint-staged pre-commit hook
- 🤖 Initialization prompt for AI Agents to modify the monorepo according to your needs.
- To start, open the chat with your AI Agent, and include the
INIT_PROMPT.md
file in your prompt.
- To start, open the chat with your AI Agent, and include the
To build all apps and packages, run the following command:
pnpm run build
To develop all apps and packages, run the following command:
pnpm run dev
For local development environment variables / secrets, create a copy of .env.dev
to .env.dev.local
.
Imports should not be separated by empty lines, and should be sorted automatically by eslint.
Turborepo can use a technique known as Remote Caching to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.
By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can create one, then enter the following commands:
npx turbo login
This will authenticate the Turborepo CLI with your Vercel account.
Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:
npx turbo link
Learn more about the power of Turborepo: