{"adoption": {"forks": 71, "observed_at": "2026-08-28T04:04:07.853067+00:00", "stars": 1248}, "canonical_url": "https://ross.abutalabs.com/products/laurine", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Laurine - Localization code generator written in Swift. Sweet!", "domain": ["developer-tools", "mobile-development"], "enriched": true, "function": ["internationalization", "cli"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["JiriTrecak/Laurine"], "name": "JiriTrecak/Laurine", "platform": ["cli"], "pushed_at": "2018-08-02T08:21:04+00:00", "repo": "JiriTrecak/Laurine", "stars": 1248, "tags": ["localization", "swift", "code-generator", "ios", "type-safety", "strings-file", "code-generation", "macos"], "topics": [], "urls": [], "use_cases": ["generate type-safe localization constants from .strings files", "catch missing translation keys at compile time in iOS apps", "validate format specifiers in localized strings", "replace magic strings in Swift code with generated accessors", "integrate localization codegen into an Xcode build script"], "what_it_is": "Laurine is a Swift-based localization code generator that parses .strings localization files and produces type-safe Swift or Objective-C code with a structured Localizations API. It eliminates magic strings so the compiler catches missing or mistyped localization keys and validates format specifiers.", "when_to_avoid": ["your project uses modern String Catalogs (.xcstrings) or third-party localization tooling like SwiftGen", "you target platforms outside the Apple ecosystem", "you need actively maintained tooling - the last release was in 2018"], "when_to_choose": ["you develop iOS/macOS/tvOS apps in Swift or Objective-C with .strings files", "you want compile-time safety for localization keys and format arguments", "you prefer a lightweight CLI that fits into build scripts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/laurine", "repo": "JiriTrecak/Laurine", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "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:04:07.853067+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.853067+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:07:49.937610+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "521cc85f4777d173757d68c6f00077bb8a6fc2fed44c80b04bd4d992e5cc81b8", "fetched_at": "2026-08-28T04:04:07.853067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/JiriTrecak/Laurine"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3949, "days_push": 2953, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}