@alef-prime/i18n-pick
v0.1.0-alpha.0
Published
Six lines of code that kill 50 lang === 'he' ? ... : ... ternaries. A tiny helper for picking a value from a per-locale map with a safe fallback.
Downloads
78
Maintainers
Readme
@alef-prime/i18n-pick
Six lines of code that kill 50+
lang === "he" ? ... : ...ternaries.
Born after running our own evolution sensor on n50.io and finding 50 identical ternary chains across 14 files, all written by hand because nobody had stopped to extract the helper.
import { pick } from "@alef-prime/i18n-pick";
// Before — 70+ chars per call site:
const title = lang === "he" ? "מפעיל" : lang === "ru" ? "оператор" : "operator";
// After — 50 chars, one shape, one place to change the brand voice:
const title = pick(lang, { he: "מפעיל", ru: "оператор", en: "operator" });That's it. No build step. No runtime cost. No dependencies. 6 lines of source.
API
pick(lang, map, fallback?)lang— your current locale ("he","en","ru", anything stringly).map—Partial<Record<lang | "en", T>>. Provide the locales you have; missing ones fall back.fallback— defaults to"en". Used whenlangkey is missing in the map.- Returns the matched value, or the fallback, or the first map value if neither matches.
import { picker } from "@alef-prime/i18n-pick";
// Pre-bound to one lang:
const t = picker("he");
t({ he: "שלום", en: "hello" }); // → "שלום"Why not just use i18next?
Because most product code doesn't need 800kB of i18n infrastructure to label a button. It needs one inline helper for inline strings. Use i18next for full catalogs; use i18n-pick for the 80% of cases where you'd otherwise write a ternary.
Status: alpha · 0.1.0
Born from ALEF-PRIME's glass-box evolution. Sibling of @alef-prime/audit and @alef-prime/deploy-verify. Watch the parent loop at n50.io/evolution.
License
MIT.
