# Lingui > Lingui is a lightweight, open-source internationalization (i18n) library for JavaScript and TypeScript. It brings compile-time macros and a CLI for message extraction to React, React Native, Vue, SolidJS, Astro, Svelte, and Node.js. ## Introduction - [Introduction](https://lingui.dev/introduction.md): What Lingui is and how it works. A lightweight i18n library for JavaScript and TypeScript with compile-time macros and a message extraction CLI ## Installation - [Installation and Setup](https://lingui.dev/installation.md): Learn how to install Lingui in your project ## Tutorials - [JavaScript Apps Internationalization](https://lingui.dev/tutorials/javascript.md): Learn how to use Lingui's internationalization features in your vanilla JavaScript application - [React Apps Internationalization](https://lingui.dev/tutorials/react.md): Learn how to add internationalization to a React application using Lingui - [React Native Apps Internationalization](https://lingui.dev/tutorials/react-native.md): Learn how to add internationalization to a React Native application using Lingui - [Next.js App Router i18n with React Server Components](https://lingui.dev/tutorials/react-rsc.md): Add internationalization to a Next.js App Router app with Lingui. Set up the SWC plugin, load catalogs in server and client components and switch languages - [Solid Apps Internationalization](https://lingui.dev/tutorials/solid.md): Learn how to add internationalization to a SolidJS application using Lingui ## Guides - [Custom Extractor](https://lingui.dev/guides/custom-extractor.md): Learn how to write a custom message extractor for your project - [Custom Formatter](https://lingui.dev/guides/custom-formatter.md): Learn how to write a custom localization message formatter for your project - [Dynamic Loading of Message Catalogs](https://lingui.dev/guides/dynamic-loading-catalogs.md): Learn how to set up dynamic loading of message catalogs in Lingui to reduce bundle size and improve performance - [Explicit vs Generated IDs](https://lingui.dev/guides/explicit-vs-generated-ids.md): Compare explicit and generated message IDs in Lingui i18n, understand the trade-offs, and choose the best approach for your localization workflow - [Lazy Translations](https://lingui.dev/guides/lazy-translations.md): Lazy translations allow you to defer translation of a message until it is actually displayed - [Message Extraction](https://lingui.dev/guides/message-extraction.md): Learn about message extraction in i18n and how to use Lingui to extract messages from your application - [ICU MessageFormat](https://lingui.dev/guides/message-format.md): The ICU MessageFormat syntax Lingui uses for messages. Variables, plurals, select and ordinals explained with examples - [Monorepo](https://lingui.dev/guides/monorepo.md): How to use Lingui in a monorepo with one root Babel and Lingui configuration that each package extends or overrides - [Keeping Your Bundle Small: How Lingui Optimizes for Performance](https://lingui.dev/guides/optimizing-bundle-size.md): How Lingui keeps your bundle small by compiling messages to compact IDs and dropping the message compiler in production, and how to configure that behavior - [Pluralization](https://lingui.dev/guides/plurals.md): Learn about pluralization and how to use it in your application with Lingui - [Pseudolocalization](https://lingui.dev/guides/pseudolocalization.md): Learn how to use pseudolocalization to test the internationalization aspects of your application with Lingui - [Testing](https://lingui.dev/guides/testing.md): How to test React components that use Trans or useLingui by wrapping them in I18nProvider with React Testing Library - [Typed Message IDs](https://lingui.dev/guides/typed-message-ids.md): Learn how to opt in to type-safe message IDs for autocomplete and compile-time validation ## API Reference - [Catalog Formats](https://lingui.dev/ref/catalog-formats.md): Learn about the different catalog formats supported by Lingui - [Lingui CLI](https://lingui.dev/ref/cli.md): Learn how to set up and use Lingui CLI to extract, merge and compile message catalogs - [Configuration](https://lingui.dev/ref/conf.md): Learn how to configure Lingui for your project - [Core API Reference](https://lingui.dev/ref/core.md): The package provides the main i18n object, which manages message catalogs, active locale, and message translation and formatting - [ESLint Plugin](https://lingui.dev/ref/eslint-plugin.md): Lingui ESLint Plugin helps you find and prevent common i18n mistakes in your code - [Vue.js Extractor](https://lingui.dev/ref/extractor-vue.md): Extract messages from Vue single-file components with @lingui/extractor-vue. Installation, configuration and options - [Webpack-compatible loader](https://lingui.dev/ref/loader.md): Import PO catalogs directly and compile them on the fly with @lingui/loader in Webpack, Rspack and Rsbuild, instead of running lingui compile - [Locale Detection](https://lingui.dev/ref/locale-detector.md): Detect the user's locale with the `@lingui/detect-locale` package - [Macros](https://lingui.dev/ref/macro.md): Transform JavaScript objects and JSX elements into ICU MessageFormat messages - [Metro Transformer](https://lingui.dev/ref/metro-transformer.md): Use Lingui with React Native and compile your message catalogs on the fly - [React API Reference](https://lingui.dev/ref/react.md): Reference for the Lingui React API and components - [Solid API Reference](https://lingui.dev/ref/solid.md): Reference for the Lingui SolidJS API and components - [SWC Plugin](https://lingui.dev/ref/swc-plugin.md): Use Lingui Macros in your SWC project - [Vite Plugin](https://lingui.dev/ref/vite-plugin.md): Use Lingui with Vite and compile your message catalogs on the fly ## Examples - [Examples](https://lingui.dev/examples.md): Examples of using Lingui for internationalization (i18n) in various frameworks and libraries ## Sync & Collaboration Tools - [Crowdin](https://lingui.dev/tools/crowdin.md): Translate a Lingui project with Crowdin. Sync PO catalogs with the Crowdin CLI or the GitHub, GitLab and Bitbucket integrations and deliver them over the air - [Sync & Collaboration Tools](https://lingui.dev/tools/introduction.md): How to manage translations for a Lingui project. Manual catalog editing versus translation management systems, and the tools that integrate with Lingui - [Translation.io](https://lingui.dev/tools/translation-io.md): Sync Lingui catalogs with Translation.io. Push source messages, pull translations, and give translators ICU syntax highlighting and plural management ## i18n with AI - [i18n with AI](https://lingui.dev/ai-tools.md): Resources and tips for internationalizing your application with AI assistance ## Comparisons - [Lingui vs i18next](https://lingui.dev/misc/i18next.md): How Lingui compares with i18next and react-i18next. Message syntax, plurals, extraction tooling, catalog formats, bundle size and React Server Components - [Lingui vs react-intl](https://lingui.dev/misc/react-intl.md): How Lingui compares with react-intl from FormatJS. Both use ICU MessageFormat, so the differences are in rich text, macros, extraction tooling and bundle size ## Optional - [GitHub repository](https://github.com/lingui/js-lingui): Source code, issues and discussions - [npm: @lingui/core](https://www.npmjs.com/package/@lingui/core): The runtime package; @lingui/react adds the React bindings and @lingui/cli the command line tool - [Agent Skills](https://github.com/lingui/skills): Lingui best practices packaged as Agent Skills for coding agents - [Context7](https://context7.com/lingui/js-lingui): The current documentation served over MCP