UNPKG

@intlify/utils

Version:

Collection of i18n utilities

184 lines (127 loc) ā€¢ 4.59 kB
# @intilfy/utils [![npm version][npm-version-src]][npm-version-href] [![npm downloads][npm-downloads-src]][npm-downloads-href] [![CI][ci-src]][ci-href] Collection of i18n utilities ## šŸŒŸ Features āœ…ļø &nbsp;**Modern:** ES Modules first and respect Web Standard and ECMAScript Internationalization APIs āœ…ļø &nbsp;**Compatible:** support CommonJS and various JS environments āœ…ļøļø &nbsp;**Minimal:** Small and fully tree-shakable āœ…ļøļø &nbsp;**Type Strong:** Written in TypeScript, with full JSdoc ## šŸ’æ Installation ### šŸ¢ Node.js ```sh # Using npm npm install @intlify/utils # Using yarn yarn add @intlify/utils # Using pnpm pnpm add @intlify/utils ``` <details> <summary>Using Edge Releases</summary> If you are directly using `@intlify/utils` as a dependency: ```json { "dependencies": { "@intlify/utils": "npm:@intlify/utils-edge@latest" } } ``` **Note:** Make sure to recreate lockfile and `node_modules` after reinstall to avoid hoisting issues. </details> ### šŸ¦• Deno You can install via `import`. in your code: ```ts /** * you can install via other CDN URL such as skypack, * or, you can also use import maps * https://docs.deno.com/runtime/manual/basics/import_maps */ import { ... } from 'https://deno.land/x/intlify_utils/mod.ts' // something todo // ... ``` ### šŸ„Ÿ Bun ```sh bun install @intlify/utils ``` ### šŸŒ Browser in your HTML: ```html <script type="module"> /** * you can install via other CDN URL such as skypack, * or, you can also use import maps */ import { isLocale } from 'https://esm.sh/@intlify/utils' // something todo // ... </script> ``` <details> <summary>Using Edge Releases</summary> ```ts import { isLocale } from 'https://esm.sh/@intlify/utils-edge' // something todo // ... ``` </details> ## šŸ­ Playground You can play the below examples: - šŸ¢ [Node.js](https://github.com/intlify/utils/tree/main/examples/node): `npm run play:node` - šŸ¦• [Deno](https://github.com/intlify/utils/tree/main/examples/deno): `npm run play:deno` - šŸ„Ÿ [Bun](https://github.com/intlify/utils/tree/main/examples/bun): `npm run play:bun` - šŸŒ [Browser](https://github.com/intlify/utils/tree/main/examples/browser): `npm run play:browser` ## šŸ”Ø Utilities ### Common - `isLocale` - `toLocale` - `parseAcceptLanguage` - `validateLangTag` - `normalizeLanguageName` You can do `import { ... } from '@intlify/utils'` the above utilities ### Navigator - `getNavigatorLocales` - `getNavigatorLocale` You can do `import { ... } from '@intlify/utils'` the above utilities > [!NOTE] > for Node.js You need to do `import { ... } from '@intlify/utils/node'` ### HTTP - `getHeaderLanguages` - `getHeaderLanguage` - `getHeaderLocales` - `getHeaderLocale` - `getCookieLocale` - `setCookieLocale` - `getPathLocale` - `getQueryLocale` - `tryHeaderLocales` - `tryHeaderLocale` - `tryCookieLocale` - `tryPathLocale` - `tryQueryLocale` The about utilies functions accpet Web APIs such as [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) and [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) that is supported by JS environments (such as Deno, Bun, and Browser) #### Specialized environments If you will use Node.js and H3, You can do `import { ... } from '@intlify/utils/{ENV}'` the above utilities. The namespace `{ENV}` is one of the following: - `node`: accpet `IncomingMessage` and `Outgoing` by Node.js [http](https://nodejs.org/api/http.html) module - `h3`: accept `H3Event` by HTTP framework [h3](https://github.com/unjs/h3) - `hono`: accept `Context` by edge-side web framework [hono](https://github.com/honojs/hono) ## šŸ™Œ Contributing guidelines If you are interested in contributing to `@intlify/utils`, I highly recommend checking out [the contributing guidelines](/CONTRIBUTING.md) here. You'll find all the relevant information such as [how to make a PR](/CONTRIBUTING.md#pull-request-guidelines), [how to setup development](/CONTRIBUTING.md#development-setup)) etc., there. ## Ā©ļø License [MIT](http://opensource.org/licenses/MIT) <!-- Badges --> [npm-version-src]: https://img.shields.io/npm/v/@intlify/utils?style=flat&colorA=18181B&colorB=FFAD33 [npm-version-href]: https://npmjs.com/package/@intlify/utils [npm-downloads-src]: https://img.shields.io/npm/dm/@intlify/utils?style=flat&colorA=18181B&colorB=FFAD33 [npm-downloads-href]: https://npmjs.com/package/@intlify/utils [ci-src]: https://github.com/intlify/utils/actions/workflows/ci.yml/badge.svg [ci-href]: https://github.com/intlify/utils/actions/workflows/ci.yml