{"_id":"@bardioc/i18n-core","_rev":"8-2964acaafacf4410512728155114d95e","name":"@bardioc/i18n-core","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@bardioc/i18n-core","version":"0.1.0","keywords":["i18n","internationalization","translations","react","localization"],"author":{"name":"Bardioc Desktop team"},"license":"MIT","_id":"@bardioc/i18n-core@0.1.0","maintainers":[{"name":"yevhenii.atlanov","email":"yevhenii.atlanov@almato.com"},{"name":"mad_joker","email":"Patrick.Roeglin@almato.com"}],"dist":{"shasum":"ee36d6dbadc6fd608ecea6616c50b550b70c2a80","tarball":"https://registry.npmjs.org/@bardioc/i18n-core/-/i18n-core-0.1.0.tgz","fileCount":15,"integrity":"sha512-pKiGRWf0ExOfvIOcvhYzSu/wDVYrjHm49eYj1KxR7qijI8GEXJz3xxijJOVYSykrbYjamz5c8WwDPzXKo/Atfw==","signatures":[{"sig":"MEUCIQCYuGmLFIB7TSjYNMjXHMFd+Xs73vtrEXefUdOoT7UYdgIgU/W66x4nyiF8aqJFkh2jUrB/ePj8nk1elxfM2y8uxwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47859},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"2e24e1a8716987082f7355cb45263becee603f6c","private":false,"scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && tsc --emitDeclarationOnly","clean":"rm -rf dist","prepare":"pnpm build","pack:check":"npm pack --dry-run","test:watch":"vitest","check-types":"tsc --noEmit","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"yevhenii.atlanov","email":"yevhenii.atlanov@almato.com"},"_npmVersion":"10.9.3","description":"Framework-agnostic i18n core for React: provider, hooks and translation utilities with pluggable storage sync","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"catalog:toolchain","eslint":"catalog:toolchain","vitest":"catalog:testing","typescript":"catalog:toolchain","@types/react":"catalog:react","@bardioc/configs":"workspace:*"},"peerDependencies":{"react":"^19.2"},"_npmOperationalInternal":{"tmp":"tmp/i18n-core_0.1.0_1784566332585_0.1247364652502938","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bardioc/i18n-core","version":"0.1.1","keywords":["i18n","internationalization","translations","react","localization"],"author":{"name":"Bardioc Desktop team"},"license":"MIT","_id":"@bardioc/i18n-core@0.1.1","maintainers":[{"name":"yevhenii.atlanov","email":"yevhenii.atlanov@almato.com"},{"name":"mad_joker","email":"Patrick.Roeglin@almato.com"}],"dist":{"shasum":"d268333b891270b83f398c906a1dc854545eca5b","tarball":"https://registry.npmjs.org/@bardioc/i18n-core/-/i18n-core-0.1.1.tgz","fileCount":15,"integrity":"sha512-5iCdSFqi/QaowqrNRX1xnUhe6vdTd7D6oMlRynf5hCBM61UNZPPcntfUVCwLaXpsot8mOgXCjhmFr5MRETMKjg==","signatures":[{"sig":"MEUCIQCf+YBj/BiO0NBKmIDIACmZx0Jsf//fi7KqZ78GWp7MBAIgDRTISytTcs1l855RYtv22DRW8XVRU99AJec/sSAJvHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47723},"main":"./dist/index.js","type":"module","_from":"file:bardioc-i18n-core-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && tsc --emitDeclarationOnly","clean":"rm -rf dist","pack:check":"npm pack --dry-run","test:watch":"vitest","check-types":"tsc --noEmit"},"_npmUser":{"name":"yevhenii.atlanov","email":"yevhenii.atlanov@almato.com"},"_resolved":"/private/var/folders/cr/vb2_tb3j5cs90r7jprk6q4tc0000gn/T/4c7632ecdf89280e3f7107e2ab6d6636/bardioc-i18n-core-0.1.1.tgz","_integrity":"sha512-5iCdSFqi/QaowqrNRX1xnUhe6vdTd7D6oMlRynf5hCBM61UNZPPcntfUVCwLaXpsot8mOgXCjhmFr5MRETMKjg==","_npmVersion":"10.9.3","description":"Framework-agnostic i18n core for React: provider, hooks and translation utilities with pluggable storage sync","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.8","typescript":"7.0.2","@types/react":"19.2.14","@bardioc/configs":"0.2.1"},"peerDependencies":{"react":"^19.2"},"_npmOperationalInternal":{"tmp":"tmp/i18n-core_0.1.1_1784657458067_0.6209511939979895","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-07-20T16:52:12.444Z","modified":"2026-07-30T10:24:50.190Z","0.1.0":"2026-07-20T16:52:12.722Z","0.1.1":"2026-07-21T18:10:58.192Z"},"author":{"name":"Bardioc Desktop team"},"license":"MIT","keywords":["i18n","internationalization","translations","react","localization"],"description":"Framework-agnostic i18n core for React: provider, hooks and translation utilities with pluggable storage sync","maintainers":[{"email":"yevhenii.atlanov@almato.com","name":"yevhenii.atlanov"},{"email":"jan.durkaj@almato.com","name":"jan.durkaj.almato"},{"email":"marc.gotzens@almato.com","name":"marc.gotzens.almato"},{"email":"Patrick.Roeglin@almato.com","name":"mad_joker"}],"readme":"# @bardioc/i18n-core\n\nReusable i18n core for React: a provider, hooks and translation utilities with pluggable loading and update sync. Ships no translations and has no app-specific dependencies — consumers supply their own messages.\n\n## Features\n\n- `I18nProvider` with `useI18n` / `useTranslation` hooks\n- Nested message objects with dot-notation lookup (`t('common.buttons.save')`)\n- Interpolation (`{name}`), plurals via `Intl.PluralRules`, nested references (`$t(key)`)\n- Pluggable custom-translation loading (`loadTranslations`) and live update subscription (`subscribeToUpdates`) — bring your own storage (IndexedDB, HTTP, service worker, ...)\n- Framework-agnostic types, self-contained (no external type dependencies)\n\n## Usage\n\n```tsx\nimport { I18nProvider, useI18n, type I18nConfig } from '@bardioc/i18n-core';\n\nconst config: I18nConfig = {\n  defaultLocale: 'en',\n  supportedLocales: ['en', 'de'],\n  defaultMessages: {\n    en: { common: { save: 'Save' } },\n    de: { common: { save: 'Speichern' } },\n  },\n};\n\nfunction App() {\n  return (\n    <I18nProvider\n      config={config}\n      loadTranslations={async locale => fetchOverrides(locale)}\n      subscribeToUpdates={(locale, onUpdate) => subscribeSomewhere(locale, onUpdate)}\n    >\n      <MyComponent />\n    </I18nProvider>\n  );\n}\n\nfunction MyComponent() {\n  const { t, setLocale } = useI18n();\n  return <button onClick={() => setLocale('de')}>{t('common.save')}</button>;\n}\n```\n\nCustom messages returned by `loadTranslations` are deep-merged over `defaultMessages`, so overrides can be partial.\n\n## Utilities\n\n`mergeTranslations`, `getNestedValue`, `setNestedValue`, `interpolate`, `getPluralSuffix`, `resolveNested`, `flattenTranslations`, `unflattenTranslations`, `createTranslationId`, `parseTranslationId` — exported for building storage/sync layers on top.\n","readmeFilename":"README.md"}