{"adoption": {"forks": 451, "observed_at": "2026-08-28T04:09:31.732508+00:00", "stars": 5858}, "canonical_url": "https://ross.abutalabs.com/products/js-lingui", "card": {"archived": false, "artifact_type": "library", "description": "🌍 📖 A readable, automated, and optimized (2 kb) internationalization for JavaScript", "domain": ["web-development", "frontend", "cross-platform", "developer-tools"], "enriched": true, "function": ["internationalization", "cli", "ui-components", "plugin-system", "developer-tools"], "health_score": 99, "homepage": "https://lingui.dev", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["lingui/js-lingui"], "name": "lingui/js-lingui", "platform": ["browser", "cli", "cross-platform"], "pushed_at": "2026-08-14T09:54:25+00:00", "repo": "lingui/js-lingui", "stars": 5858, "tags": ["i18n", "icu-messageformat", "react", "react-native", "solidjs", "translation-workflow", "po-files", "vite-plugin", "eslint-plugin", "message-catalogs", "localization", "nodejs", "web-server", "mobile"], "topics": ["translation", "internationalization", "javascript", "i18n", "localization", "icu", "react", "react-components", "messageformat", "intl", "react-native", "hacktoberfest"], "urls": [], "use_cases": ["internationalize a React web application", "translate UI strings into multiple languages", "handle plurals and gender in translations", "extract translatable messages from source code into PO files", "add i18n to a React Native mobile app", "localize a Node.js backend or CLI", "manage translation catalogs with translators using standard tools"], "what_it_is": "Lingui is a lightweight (2 kb core) internationalization (i18n) framework for JavaScript and TypeScript projects, built on ICU MessageFormat. It provides framework-agnostic core functionality, React/React Native/SolidJS bindings, and tooling (CLI, Vite plugin, ESLint plugin) to extract, compile, and manage translation catalogs in PO, JSON, or CSV formats.", "when_to_avoid": ["you need i18n for a non-JavaScript stack", "you prefer a framework with built-in opinionated routing-based localization like Next.js i18n routing", "you need heavy machine-translation or TMS features out of the box", "your project is a single-language app with no localization plans"], "when_to_choose": ["you want a lightweight i18n library with a tiny bundle footprint", "your project uses React, React Native, SolidJS, Vue, Astro, or Svelte", "you need ICU MessageFormat support for plurals, genders, and selects", "you want a full extract-and-compile workflow with CLI tooling", "your translators work with standard PO files or translation tools"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/js-lingui", "repo": "lingui/js-lingui", "role": "main", "score": 97}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:31.732508+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:51:38.456941+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6027b2b6b3c2e22abce5e16cff26ff60d4a14af219d6b353a36e76dda94f4463", "fetched_at": "2026-08-28T04:09:31.732508+00:00", "kind": "readme", "missing": false, "url": "https://github.com/lingui/js-lingui"}, {"content_hash": "2d45b6a71ef3c1df14a797987f417c41ef5aeffc8b58c1fb1d379104c5a2c16f", "fetched_at": "2026-08-29T08:47:33.407796+00:00", "kind": "homepage", "missing": false, "url": "https://lingui.dev"}, {"content_hash": "315222368772ff2a729ec54a7771407e85530fff71dfb92f7488f5f47468909a", "fetched_at": "2026-08-29T08:47:33.417763+00:00", "kind": "site_page", "missing": false, "url": "https://lingui.dev/introduction"}, {"content_hash": "b52baf8e7032947a5654ec9307ad26520a0c6ddd55a60e12eddd5881eb318b74", "fetched_at": "2026-08-29T08:47:33.420473+00:00", "kind": "site_page", "missing": false, "url": "https://v5.lingui.dev/"}, {"content_hash": "92e546000ba8b46828d8502fceb44324110006b85b0642085b7c4fa3d2f7c6ce", "fetched_at": "2026-08-29T08:47:33.422481+00:00", "kind": "site_page", "missing": false, "url": "https://v4.lingui.dev/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 94}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3515, "days_push": 19, "days_rel": 40, "gap_med": 16, "n_releases_24m": 36}, "score": 97, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}