localization-gen-react-adapter
v0.0.4
Published
React provider and hooks for runtime consumption of localization-gen-node generated output.
Maintainers
Readme
localization-gen-react-adapter
React adapter for consuming localization manifests generated by localization-gen-core.
What it provides
LocalizationProvider– context provider that wraps your appuseLocalization– locale/manifest access + high-level translation helpersuseAppLocalization– structured accessor hook- Runtime bridge store for locale switching
- Lazy/SSR helpers
Install
npm install localization-gen-react-adapter localization-gen-core reactSetup
import LocalizationProvider from "localization-gen-react-adapter";
import appLocalizationManifest from "./assets/localizations/app-localization";
<LocalizationProvider manifest={appLocalizationManifest}>
<App />
</LocalizationProvider>;Usage with useLocalization
import { useLocalization } from "localization-gen-react-adapter";
const {
locale,
setLocale,
manifest,
translate, // plain string helper with locale fallback + optional fallback value
format, // helper + placeholder interpolation
plural, // structured plural helper
gender, // structured gender helper
context, // structured context helper
namespace, // creates a module-scoped helper object
entriesForLocale,
} = useLocalization({
fallback: {
"auth.strings.login_title": "Login",
"common.app_title": "App",
},
});
// Top-level helpers
translate("auth.strings.login_title");
format("auth.placeholders.welcome_back", { name: "Alfin" });
plural("auth.structured.lock_message", 3);
gender("common.structured.user_title", "female", { last_name: "Smith" });
context("auth.structured.channel_label", "email");
// Optional per-call fallback still works (overrides configured fallback)
translate("auth.strings.login_title", "Sign In");
// Namespace-scoped helpers (keys are relative to the module)
const authNs = namespace("auth");
authNs.translate("strings.login_title");
authNs.format("placeholders.welcome_back", { name: "Alfin" });
authNs.plural("structured.lock_message", 3);
authNs.gender("structured.account_title", "other", { last_name: "Doe" });
authNs.context("structured.channel_label", "email");Usage with useAppLocalization
import { useAppLocalization } from "localization-gen-react-adapter";
const appLocalization = useAppLocalization();
appLocalization.strings.appTitle;
appLocalization.simple.hello;
appLocalization.placeholders.welcomeUser({ name: "Alfin" });Release
npm run release:check
npm run release:pack
npm run release:dry-run
npm run release:pack:clean