1.0.0 • Published 12 days ago

@odczynflnpm/quo-provident-delectus v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
12 days ago

Internationalization (i18n) for Next.js that gets out of your way.

📣 Support for the App Router and Server Components has arrived →

Features

Internationalization (i18n) is an essential part of the user experience, therefore @odczynflnpm/quo-provident-delectus gives you all the parts you need to get language nuances right.

  • 🌟 ICU message syntax: Localize your messages with interpolation, cardinal & ordinal plurals, enum-based label selection and rich text.
  • 📅 Dates, times & numbers: Apply appropriate formatting without worrying about server/client differences like time zones.
  • Type-safe: Speed up development with autocompletion for message keys and catch typos early with compile-time checks.
  • 💡 Hooks-based API: Learn a single API that can be used across your code base to turn translations into plain strings or rich text.
  • 🚀 Next.js-native and performance-obsessed: App Router, Server Components, static rendering—pick the right tool for the right job, @odczynflnpm/quo-provident-delectus works everywhere.
  • ⚔️ Internationalized routing: Provide unique pathnames per language and optionally localize pathnames for search engine optimization.

What does it look like?

// UserProfile.tsx
import {useTranslations} from '@odczynflnpm/quo-provident-delectus';
 
export default function UserProfile({user}) {
  const t = useTranslations('UserProfile');
 
  return (
    <section>
      <h1>{t('title', {firstName: user.firstName})}</h1>
      <p>{t('membership', {memberSince: user.memberSince})}</p>
      <p>{t('followers', {count: user.numFollowers})}</p>
    </section>
  );
}
// en.json
{
  "UserProfile": {
    "title": "{username}'s profile",
    "membership": "Member since {memberSince, date, short}",
    "followers": "{count, plural, ↵
                    =0 {No followers yet} ↵
                    =1 {One follower} ↵
                    other {# followers} ↵
                  }"
  }
}

→ Read the docs

regularcommandes2016concatxsspersistentartassertiontranspilehttpbcryptforEachsymbolsfetchloadingdeletemimetypesshamURLurlsgetterfind-uppolyfillfindLastIndexfast-deep-copysetImmediatehasOwncharactermatchesdataviewbreakquotematchAlljson-schema-validatorWeakMapanimationserializationopenscirculares2015ReactiveXclientES2022formattingcurljson-schema-validationexewritablesignalsclassnamesperformantchromeuser-streamsES8styleguidesetPrototypeOfObject.assigncolorswordwrappluginrm -frtypanion$.extendloggingimmerworkspace:*flagvesttrimfpappsetArrayBufferfastwatchFileYAMLpackage.jsonECMAScript 2021json-schemaisConcatSpreadablekeyconsumewidthprivate dataio-tscharactersformatmruwhatwgreal-timezodfseventsboundreact animationmonoreporeact-hook-formsymboles7callreadloggerpicomatchinspectreact-hooksrmdirstreams2configtimejavascriptqueryimmutablesuperstructserializertraversePromiseHyBidragfastcopyauthenticationES3l10nfast-clonergb0less cssflatMapcorsprotocol-buffersbusywaapiwaittostringtagES2021telephonechildtypesduplexspecJSON-SchematermlimitedStreamsuninstallenvelectroncallbindcheckcjkmulti-packageweakmapairbnbtaskbrowserRegExp#flagsstringifiertddasciinpmvalidationcore-jsECMAScript 2018hashchaitypescriptclass-validatorconcatMapless compilerargvmochahookscssObject.keyspopmotion__proto__ECMAScript 5arraysprettyincludes_.extendbufferscloneunicodees-shimsvarparents@@toStringTagvisualshebangoptimistshimsigtermgenericscommand-linenumberdomObject.valuestoSortedframercolorArray.prototype.containsES2018Uint8ClampedArrayeast-asian-widthfindLastpureeverypipecss-in-jsramdabluebirdJSONmovePushnodejsdefineextensionchannelconsoleexpressionsortedidcompile lessmacosbyteLengthhttpsclisyntaxerrorcurriedconcurrencydataViewawesomesaucedotenvcss lessnested cssWeakSetfast-copyxhrassertjasminescheme-validationutilitymiddlewaredirfinduptc39importrfc4122Array.prototype.flattenexecArray.prototype.filterpathclassnametypesafecallbackargumentsshrinkwrapargsjQueryES2019mergetapequalitypushECMAScript 2017nopeponyfilldatamixinssanitizationdiffbrowserslistECMAScript 2015spawntouchhelperswarningsyntaxguidfunctionsdeep-copytypeerrorrm -rflockfileinputworkertoStringTagObject.fromEntriesMapgdprRxJSclassesstringifyxdg-openstatusStyleSheetcensorArray.prototype.includesstarter-0make dirreducerwrapeslint-pluginpreserve-symlinkssearchObservablebyteescapeenumerablearrayECMAScript 2023ttyrandomfixed-widthbundlingObjectfromspinnersslotentriesrecursivetsbabel-coreIteratorAsyncIteratortypewatchRFC-6455hookformprivatetranspilererror-handlingredactECMAScript 2020internal slotindicatorregular expressionsfiglettoobjectwatcherpyyamlqueueES2015dropTypeScriptprunees-shim APIterminalbootstrap cssutilsstringquerystringfast-deep-clonejwtintrinsicconnectECMAScript 2016outputcodesomitvariablesencryptiones2017dom-testing-librarydescriptorssymlinkinstallertyped arraylesscssObject.getPrototypeOfperformancejsdomjestestreecontainsdeterministicjsonpathrequestInt8ArraydebuggetintrinsicstreamsprogressexecutablefunctionSymbolfantasy-landinstallschememkdirpcmdexit-codelooklaunchemojilinewrapES7comparelastUint16ArrayUnderscorei18nrateregexaccessorschemapnpm9packagesparsepackageObservablescolumnMicrosofttypedarraysextrabyteOffsetwatchingstylingdefinePropertycopymkdirinferencetrimEndphonelimitES2020WebSocketscss nestingreduxpasswordthreewebgetless mixinslesssomeequaldeep-cloneArray.prototype.findLastIndexastRxcommanderajves6validinternaleventsSymbol.toStringTagopenergetPrototypeOfexitObject.iscolourirqerrorcode pointscryptoless.jsformlogautoprefixerfulldependency managerdebuggernodefastifynativewriteInt32ArraygetOwnPropertyDescriptorjsonutil.inspectcachesharedarraybufferchineseglobmkdirsstabledeepflattenvalidateyamlArrayBuffer.prototype.slicejsxjsonschemaeventEmittergradients css3textnegative zerocompilerfull-widthmapreduceonceeditor3dargumenttoolkitpostcss-pluginES5openmatchStreames8fileextendthrottlecryptpropertyvalueproptacitFunction.prototype.namelinkECMAScript 3hardlinksa11ymimethroatpreprocessorES6joiassigndategrouptypedarrayurlstructuredCloneregular expressionlistenerslintfullwidthawaitbatchBigInt64ArraytoArrayformsdefaultauthcolumnscss variablefolderconstmoduleslinuxobjectiterationweaksetreact poseratelimitgetoptrmparser6to5promisestestingparentrapidvaluesconfigurablextermcoerciblesortslicepropertiesprocessfunctionalsignalstatelessflagseslintconfigstreamsafeupecmascriptwordbreaktypeofECMAScript 2022esbindFloat32ArrayuuidframeworkBigUint64ArraydescriptionefficientsharediteratorArray.prototype.flatMaprequiremodulelrustyleapolloES2017utilletqssameValueZeroRegExp.prototype.flagsArray.prototype.flatruntimeform-validationnamesCSShandlerstrimLeftaccessibilitywalkrobustexpressvariables in cssiteratebannerreadablestreamapiasyncReflect.getPrototypeOfenvironmentlengthmime-dbyupprototypesidebundlerarktypedirectoryArrayBuffer#slicecollection.es6.envReactiveExtensionsURLSearchParamseslintpluginObject.definePropertydeepcopydependenciescall-bindhigher-orderInt16ArraytslibprotoavamobileECMAScript 2019styled-componentschromiumargparsegradients csscallboundidleUint32Arraytakeflates2018String.prototype.matchAllregexpfastcloneinterruptsdayjsgroupBycreatecollectionnegativetestpostcssqueueMicrotasklanguageECMAScript 7babelpositivekeysbddes5rangeerrorisgraphqldescriptorwalkingcoredeepclonebootstrap lessSetinvarianteventDispatcherxdgtapeoptimizerhasTypedArrayfile systemWebSockettrimStartviewString.prototype.trimtypedobjkoreanspringresolvekarmaiees-abstractESdatastructurewgetcall-boundfindsequencebufferoperating-systemsymlinkstoolsutilitieswhichreusevalidatorreactsettingslazy256ES2016computed-typesgesturespoint-freepatchsettername[[Prototype]]package managermomentprotobufoptionreadableCSSStyleDeclarationjsdifftrimRightspeedserializeender
@odczynflnpm/cum-quam-eligendi@odczynflnpm/dignissimos-voluptatum-ad@odczynflnpm/dolor-molestias-quisquam@odczynflnpm/dolorem-error-libero@odczynflnpm/doloribus-cumque-quae@odczynflnpm/ducimus-accusantium-vel@odczynflnpm/eaque-ad-ex@odczynflnpm/et-nihil-enim@odczynflnpm/et-tempore-deleniti@odczynflnpm/eveniet-omnis-inventore@odczynflnpm/explicabo-voluptatem-ad@odczynflnpm/harum-quaerat-atque@odczynflnpm/hic-ipsa-ea@odczynflnpm/modi-fuga-possimus@odczynflnpm/nam-a-doloremque@odczynflnpm/necessitatibus-numquam-aut@odczynflnpm/nihil-ratione-expedita@odczynflnpm/nisi-similique-deleniti@odczynflnpm/odit-iure-praesentium@odczynflnpm/officiis-laboriosam-quam@odczynflnpm/omnis-blanditiis-repellendus@odczynflnpm/ad-ullam-officia@odczynflnpm/architecto-voluptate-tempore@odczynflnpm/aspernatur-amet-ut@odczynflnpm/omnis-veritatis-nesciunt@odczynflnpm/perferendis-neque-nulla@odczynflnpm/quas-deserunt-optio@odczynflnpm/quia-neque-illo@odczynflnpm/quibusdam-debitis-hic@odczynflnpm/quisquam-cumque-consequuntur@odczynflnpm/quos-reprehenderit-voluptates@odczynflnpm/reiciendis-suscipit-odio@odczynflnpm/ab-nesciunt-error@odczynflnpm/ab-repellat-dolorum@odczynflnpm/accusamus-aliquam-non@odczynflnpm/vel-facere-dolore@odczynflnpm/velit-nam-voluptatum@odczynflnpm/vitae-fugit-debitis@odczynflnpm/voluptate-molestiae-culpa@odczynflnpm/repudiandae-beatae-sunt@odczynflnpm/rerum-at-dignissimos@odczynflnpm/similique-perspiciatis-in@odczynflnpm/temporibus-expedita-culpa@odczynflnpm/tenetur-corporis-accusamus@odczynflnpm/totam-fuga-incidunt@odczynflnpm/hic-ratione-perspiciatis@odczynflnpm/inventore-sapiente-repudiandae@odczynflnpm/ipsa-ut-eligendi@odczynflnpm/iste-ad-facilis@odczynflnpm/laboriosam-doloribus-quia@odczynflnpm/laudantium-vitae-saepe@odczynflnpm/magni-aspernatur-impedit
1.0.0

12 days ago