open-index/open-npm huggingface dataset:
npm package: @intl-schematic/plugin-functions
Description: Adds the ability to use plain functions in translation documents.
Author: Raiondesu
Latest version: 1.0.0-rc.4

# `@intl-schematic/plugin-functions`<!-- omit from toc -->

Adds the ability to use plain functions in translation documents.

`npm i -s @intl-schematic/plugin-functions`

### Define a translation document factory

```ts
const getDocument = () => ({
  "hello": (name: string) => `Hello, ${name}!`
});
```

### Create a translator function (`t()`)

```ts
import { createTranslator } from 'intl-schematic';
import { FunctionsPlugin } from '@intl-schematic/plugin-functions';

// Notice the plugins array parameter
const t = createTranslator(getDocument, [FunctionsPlugin]);
```

### Use the translator function

```ts
console.log(t('hello', 'Bob')); // `Hello, Bob!`

// Parameter auto-complete and type-checking!

// TS Error: Argument of type 'number' is not assignable to parameter of type 'string'.
t('hello', 42);

// TS Error: Expected 2 arguments, but got 1.
t('hello');
```
npm package: @intl-schematic/plugin-locale
Description: A provider-plugin, doesn't affect the translation process directly, but allows other plugins to use a user-provided `Intl.Locale` instance, using the [plugins API](/packages/plugins/).
Author: Raiondesu
Latest version: 1.0.0-rc.7

# `@intl-schematic/plugin-locale`

A provider-plugin, doesn't affect the translation process directly,
but allows other plugins to use a user-provided `Intl.Locale` instance,
using the [plugins API](/packages/plugins/).

`npm i -s @intl-schematic/plugin-locale`

```ts
import { createTranslator } from 'intl-schematic';
import { LocaleProviderPlugin } from '@intl-schematic/plugin-locale';

const getUserLocale = () => new Intl.Locale(navigator.language);

// Notice the plugins array parameter
const t = createTranslator(getDocument, [
  LocaleProviderPlugin(getUserLocale),
  // ... all plugins supplied here
  // can now use `this.plugins.Locale.info()`
  // to access the user locale
]);
```

Then, in another plugin:

```ts
import { createPlugin } from 'intl-schematic/plugins';

// This import tells typescript that your plugin requires
// the locale plugin to work properly
import type {} from '@intl-schematic/plugin-locale';

const MyPlugin = createPlugin('MyPlugin', () => false, {
  translate() {
    const locale = this.plugins.Locale.info();

    // use the Intl.Locale
    console.log(locale.baseName);

    return 'my plugin translation';
  }
})
```
npm package: @intl-schematic/plugin-nested
Description: Adds the ability to use nested keys in translation documents.
Author: Raiondesu
Latest version: 1.0.0-rc.5

# `@intl-schematic/plugin-nested`<!-- omit from toc -->

Adds the ability to use nested keys in translation documents.

`npm i -s @intl-schematic/plugin-nested`

- [Basic usage](#basic-usage)
  - [Define a translation document factory](#define-a-translation-document-factory)
  - [Create a translator function (`t()`)](#create-a-translator-function-t)
  - [Use the translator function](#use-the-translator-function)
- [Dot-notation](#dot-notation)


## Basic usage

### Define a translation document factory

```ts
const getDocument = () => ({
  'hello': {
    'world': 'Hello, world!',
    'stranger': 'Hello, stranger!'
  },
  'foo': {
    'bar': {
      'baz': "Foo Bar Baz!"
    }
  }
});
```

### Create a translator function (`t()`)

```ts
import { createTranslator } from 'intl-schematic';
import { NestedKeysPlugin } from '@intl-schematic/plugin-nested';

// Notice the plugins array parameter
const t = createTranslator(getDocument, [NestedKeysPlugin]);
```

### Use the translator function

```ts
console.log(t('hello', 'world')); // `Hello, world!`
console.log(t('hello', 'stranger')); // `Hello, stranger!`
console.log(t('foo', 'bar', 'baz')); // `Foo Bar Baz!`

// Parameter auto-complete and type-checking!

// TS Error: Argument of type 'bar' is not assignable to parameter of type 'hello' | 'stranger'.
t('hello', 'bar');

// TS Error: Expected 2 arguments, but got 1.
t('hello');

// TS Error: Expected 3 arguments, but got 2.
t('foo', 'bar');
```

## Dot-notation

This plugin also allows to use dot-notation (`key.subkey`) with nested keys, but only through a workaround called `createDotNester`.

This is a wrapper for the main translator function, which adapts typing to nested keys separated by a dot:

```ts
import { createTranslator } from 'intl-schematic';
import { NestedKeysPlugin } from '@intl-schematic/plugin-nested';
import { createDotNester } from '@intl-schematic/plugin-nested/dot';

const getDocument = () => ({
  'hello': {
    'world': 'Hello, world!',
    'stranger': 'Hello, stranger!'
  },
  'foo': {
    'bar': {
      'baz': "Foo Bar Baz!"
    }
  },
  'regular': 'string key'
});

// Notice the plugins array parameter
const t = createTranslator(getDocument, [NestedKeysPlugin]);

const tn = createDotNester(t);

// `tn()` accepts dot-notated keys with type-hints:
tn('hello.world'); // 'Hello, world!'

// Still accepts regular string keys
tn('regular');
```
npm package: @intl-schematic/vue
Description: `npm i -s intl-schematic @intl-schematic/vue`
Author: Raiondesu
Latest version: 1.0.0-rc.4

# `@intl-schematic/vue`

`npm i -s intl-schematic @intl-schematic/vue`

## Basic usage

```ts
import { createLocaleResource } from '@intl-schematic/vue';

const getDocument = (locale: Intl.Locale) => import(`/locales/${locale.baseName}.json`);

const userLocale = ref(new Intl.Locale(navigator.language));

const createTranslator = createLocaleResource(
  userLocale,
  (getLocale: () => Intl.Locale) => [/* Array of custom plugins */]
)

export default defineComponent(() => {
  const t = createTranslator(getDocument);

  // Fully reactive,
  // triggers automatic re-renders when the locale changes
  // or a new translation document is downloaded.
  const someText = computed(() => t('some key'));

  return {
    // Freely use in template as a plain string
    someText
  };
});
```
npm package: @intlgadmin/cli
Description: ## Generate codes for your gadmin project
Author: GAdmin@tencent.com
Latest version: 1.4.4

# gadmin-cli

## Generate codes for your gadmin project

> **Compatibility Note:**
> `gadmin-cli` requires [Node.js](https://nodejs.org/en/) version >=12.0.0.

```bash
$ npx gadmin
```

## Configuration
> **Overwrite Note:**
> The generated files may overwrite your project, please make sure to commit or stash your changes before running `gadmin-cli`

By default, `gadmin-cli` will automatically try to read configs from `config/models.yml` and `config/ui.yml`, and then generate codes to your project. You could add a config file named `.gadminrc.js` inside project root to custom it.

```javascript
module.exports = {
  configPath: 'gadmin-config',
};
```
npm package: @intlgadmin/create-gadmin
Description: ## Scaffolding Your First GAdmin Project
Author: GAdmin@tencent.com
Latest version: 1.5.0

# create-gadmin

## Scaffolding Your First GAdmin Project

> **Compatibility Note:**
> GAdmin requires [Node.js](https://nodejs.org/en/) version >=12.0.0.

```bash
$ yarn create @intlgadmin/gadmin
```

Then follow the prompts!

You can also directly specify the project name and the template you want to use via additional command line options. For example, to scaffold a GAdmin project, run:

```bash
yarn create @intlgadmin/gadmin my-gadmin-app --template standard
```

Currently supported template presets include:

- `standard`
- `subsystem`
npm package: @intlgadmin/locales-cli
Description: ## Convert xlsx to locales configuration code or vice versa
Author: GAdmin@tencent.com
Latest version: 0.2.4

# GAdmin Locales CLI

## Convert xlsx to locales configuration code or vice versa

> **Compatibility Note:**
> `GAdmin Locales CLI` requires [Node.js](https://nodejs.org/en/) version >=12.0.0.

```bash
# convert excel to locales configuration codes
$ npx gadmin-locales --mode excel2code --single true --sort true

# convert locale configuration codes to excel
$ npx gadmin-locales --mode code2excel --excel src/locales/generated.xlsx
```

## Configuration
|parameter|default|description|
|----|----|----|
|mode|`excel2code`|`excel2code` or `code2excel`|
|excel|`src/locales/locales.xlsx`|the excel file path|
|excelTemplate|`{builtin}/lib/template.xlsx`|the excel template for generating excel, `excel2code` mode only|
|code|`src/locales`|the code directory|
|sourceLocale|`zh-CN`|the source locale, as default key|
|defaultLocale|`en-US`|the default locale to replace empty locales, `excel2code` mode only|
|locales|`zh-CN,en-US,ja-JP`|supported locale types, should be no less than your requires|
|single|`false`|single mode to merge multiple modules to a single file|
|sort|`false`|the generated codes will be sorted by key ascending|
|ignoreDuplicateSource|`false`|ignore the warnings of the duplicated source locale name, `excel2code` mode only|
npm package: @intlgadmin/logger
Description: > 基于 winston 封装的通用日志模块，以便于云上 node 服务接入 cls 做日志落地和检索
Author: xsbchen
Latest version: 1.1.0

# node 通用日志模块

> 基于 winston 封装的通用日志模块，以便于云上 node 服务接入 cls 做日志落地和检索

## 使用

安装 npm 包：

```bash
yarn add @tencent/gps-logger
```

项目中引入使用：

```js
const logger = require('@tencent/gps-logger');

// 打印普通日志
logger.info('log info');

// 打印带格式参数的普通日志，格式参数见https://nodejs.org/api/util.html#util_util_format_format_args
logger.info('log info with params: number=%d, string=%s, object=%j', 1, 'string', { key: 'value' });

// 打印警告日志
logger.warn('log warning');

// 打印带格式参数的警告日志，格式参数见https://nodejs.org/api/util.html#util_util_format_format_args
logger.warn('log warning with params: number=%d, string=%s, object=%j', 1, 'string', { key: 'value' });

// 打印错误日志
logger.error('get data from xxx failed');

// 打印带格式参数的错误日志，格式参数见https://nodejs.org/api/util.html#util_util_format_format_args
logger.error('get data from xxx failed: number=%d, string=%s, object=%j', 1, 'string', { key: 'value' });

try {
  throw new Error('network error');
} catch (err) {
  // 打印带堆栈信息的错误日志
  logger.error('get data from xxx failed', { error: err });

  // 打印带格式参数和堆栈信息的错误日志
  logger.error(
    'get data from xxx failed: number=%d, string=%s, object=%j',
    1,
    'string',
    { key: 'value' },
    { error: err },
  );
}

// 打印调试日志，调试日志只会在日志级别被设置为`debug`时才会输出
logger.debug('call api with params: %j, response: %j', { param1, param2, param3, response });

// 启动日志级别动态管理Server，其中5000为需要监听的端口
// 启动后可以通过以下命令来修改日志级别，以便于线上问题定位
// `curl http://127.0.0.1:5000/?level=[error|warn|info|debug]`
logger.startLevelServer(5000);

// 关闭日志级别动态管理Server
logger.stopLevelServer();
```

## 日志级别和优先级

默认日志级别为`info`，可通过环境变量`LOGGER_LOG_LEVEL`或者`logger.level`来设置

```js
{
  error: 0,
  warn: 1,
  info: 2,
  debug: 3,
}
```

## 日志打印规范

1. 日志信息清晰，避免没有意义的内容

```js
// bad
logger.info(param);

// good
logger.info('call external api with param: %s', param);
```

2. 打印外部调用的输入输出

```js
const response = callExternalApi(param1, param2, param3);
// 外部调用，打印输入输出以便于排查问题
logger.info('call external api with params: %j, response: %j', { param1, param2, param3, response });
```

3. 预期内可控的异常使用 warn 日志

```js
// 参数检查时，param1为空是预期内的情况，业务逻辑的处理尚未开始
if (param1 === '') {
  logger.warn('invalid param1: %s', param1);
  return;
}

// 主要的业务逻辑
anotherFunc();
```

4. 不可控异常使用 error 日志

```js
func1();

try {
  func2();
} catch (err) {
  // func2的调用异常在上下文中是不可逆的，影响后续的业务逻辑的运行
  logger.error('call func2 error', { error: err });
  return;
}

anotherFunc(response);
```

## 日志上报和索引配置

1. STKE 上新建`日志规则`时，`日志类型`须选择`窗口标准输出`

2. CLS 上`日志主题配置`-`采集配置`-`采集规则`配置中：`键值提取模式`须选择`JSON`，`使用采集时间`须选择`关闭`，`时间键`填写`timestamp`，`时间格式`填写`%Y-%m-%d %H:%M:%S.%f`

3. CLS 上`日志主题配置`-`索引配置`中，配置以下索引字段

   | 字段名称      | 字段类型 |
   | ------------- | -------- |
   | level         | text     |
   | message       | text     |
   | timestamp     | text     |
   | error.message | text     |
   | error.stack   | text     |
npm package: @intlify-lry/bundle-tools
Description: [![Lint](https://github.com/intlify/bundle-tools/actions/workflows/lint.yml/badge.svg)](https://github.com/intlify/bundle-tools/actions/workflows/lint.yml) [![Test](https://github.com/intlify/bundle-tools/actions/workflows/test.yml/badge.svg)](https://git
Author: lry
Latest version: 1.0.11

# @intlify/bundle-tools

[![Lint](https://github.com/intlify/bundle-tools/actions/workflows/lint.yml/badge.svg)](https://github.com/intlify/bundle-tools/actions/workflows/lint.yml)
[![Test](https://github.com/intlify/bundle-tools/actions/workflows/test.yml/badge.svg)](https://github.com/intlify/bundle-tools/actions/workflows/test.yml)

The bundle tools for Vue I18n

## 📦 Packages

| Package | Bundler | Version (click for changelogs) |
| ------------------------------------------------------------------ | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [@intlify/unplugin-vue-i18n](packages/unplugin-vue-i18n)     | vite / webpack     | [![unplugin-vue-i18n version](https://img.shields.io/npm/v/@intlify/unplugin-vue-i18n.svg?label=%20&&color=yellow)](packages/unplugin-vue-i18n/CHANGELOG.md)|
| [@intlify/vite-plugin-vue-i18n](packages/vite-plugin-vue-i18n)     | vite     | [![vite-plugin-vue-i18n version](https://img.shields.io/npm/v/@intlify/vite-plugin-vue-i18n.svg?label=%20&&color=blueviolet)](packages/vite-plugin-vue-i18n/CHANGELOG.md)|
| [@intlify/vue-i18n-loader](packages/vue-i18n-loader)               | webpack  | [![vue-i18n-loader version](https://img.shields.io/npm/v/@intlify/vue-i18n-loader.svg?label=%20&color=blue)](packages/vue-i18n-loader/CHANGELOG.md) (**for vue-i18n@9.x**)| 
| [@intlify/rollup-plugin-vue-i18n](packages/rollup-plugin-vue-i18n) | rollup   | [![rollup-plugin-vue-i18n version](https://img.shields.io/npm/v/@intlify/rollup-plugin-vue-i18n.svg?label=%20&color=red)](packages/rollup-plugin-vue-i18n/CHANGELOG.md)|


## 💪 Contribution

See [Contributing Guide](https://github.com/intlify/bundle-tools/tree/main/.github/contributing.md).

## ©️ License

[MIT](http://opensource.org/licenses/MIT)
npm package: @intlify-lry/bundle-utils
Description: Bundle utilities for Intlify project
Author: lry
Latest version: 1.0.0

# @intlify/bundle-utils

[![Lint](https://github.com/intlify/bundle-tools/actions/workflows/lint.yml/badge.svg)](https://github.com/intlify/bundle-tools/actions/workflows/lint.yml)
[![Test](https://github.com/intlify/bundle-tools/actions/workflows/test.yml/badge.svg)](https://github.com/intlify/bundle-tools/actions/workflows/test.yml)

Bundle utilities for Intlify project

## :copyright: License

[MIT](http://opensource.org/licenses/MIT)
npm package: @intlify-lry/devtools-if
Description: @intlify/devtools-if
Author: kazuya kawaguchi
Latest version: 9.2.2

# @intlify/devtools-if

The [`@intlify/devtools`](https://github.com/intlify/devtools) interface(I/F:if) for intlify projects

## :warning: NOTE:

This is experimental.

Don’t use in production yet.

## :copyright: License

[MIT](http://opensource.org/licenses/MIT)
npm package: @intlify-lry/shared
Description: @intlify/shared
Author: kazuya kawaguchi
Latest version: 9.1.2

# @intlify/shared

The shared utility package for intlify project

## Forks
The implementation of this module is contains code forked from other packages or projects:

- [@vue/shared](https://github.com/vuejs/vue-next/tree/master/packages/shared)
  - Useful Utilities at `utils.ts`
    - Author: Evan You
    - License: MIT
  - Event Emitter at `emitter.ts` and `emittable.ts`
    - Author: Jason Miller
    - License: MIT

## :copyright: License

[MIT](http://opensource.org/licenses/MIT)
npm package: @intlify/cli
Description: CLI Tooling for i18n development
Author: kazuya kawaguchi
Latest version: 0.13.1

# 🧰 Intlify CLI

CLI Tooling for i18n development

## 💿 Installation

### npm

```sh
npm install -g @intlify/cli
```

### yarn
```sh
yarn global add @intlify/cli
```

### yarn
```sh
yarn global add @intlify/cli
```

## 🌟 Features
- the i18n resources compilation
- the attributes annotation for i18n custom block
- the i18n custom block formatting

## 🚀 Usage

```
Usage: intlify <command> [options]

Commands:
  intlify compile   compile the i18n resources                     [aliases: cp]
  intlify annotate  annotate the attributes                        [aliases: at]
  intlify format    format for single-file components              [aliases: ft]

Options:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]
```

## 🙈 Ignoring

For `annotate` or `format` commands, you can ignore with using `.intlifyignore` or `--ignore` for files passed at the end of the options or `--source` option

### `.intlifyignore`

To exclude files from iles passed at the end of the options or `--source` option, create a `.itnlifyignore` file in the root of your project. `.intlifyignore` uses [gitignore syntax](https://git-scm.com/docs/gitignore#_pattern_format).

example:
```
# Ignore node_modules
node_modules

# ignore  artifacts
build
coverage
```

It’s recommended to have a `.intlifyignore` in your project! This way you can run `intlify format —source /path/to/**/*.vue —type custom-block` . to make sure that everything is executed (without mangling files you don’t want, or choking on generated files).

### `--ignore` option

If you can't use `.intlifyignore` for some reason and want to specify a different file, you can use the `--ignore` option to achieve this.

```sh
# ignore with `.gitignore`
intlify format —source /path/to/**/*.vue —type custom-block --ignore .gitignore
```

## 🤝 API

About details, See the [API References](https://www.jsdocs.io/package/@intlify/cli)


## 🌏 I18n

Intlify cli is supporting for I18n.

If you would like to localiize Intlify CLI, you can contribute i18n resource to [locales](https://github.com/intlify/cli/blob/main/locales) directory.

## 📜 Changelog
Details changes for each release are documented in the [CHANGELOG.md](https://github.com/intlify/cli/blob/main/CHANGELOG.md).


## ❗ Issues
Please make sure to read the [Issue Reporting Checklist](https://github.com/intlify/cli/blob/main/.github/CONTRIBUTING.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately.

## ©️ License

[MIT](http://opensource.org/licenses/MIT)
npm package: @intlify/eslint-plugin-svelte
Description: ESLint plugin for internationalization with Svelte
Author: Yosuke Ota
Latest version: 1.0.0

<h1 align="center">@intlify/eslint-plugin-svelte</h1>
<p align="center">
  <a href="https://github.com/intlify/eslint-plugin-svelte/actions/workflows/test.yml"><img src="https://github.com/intlify/eslint-plugin-svelte/actions/workflows/test.yml/badge.svg?branch=main" alt="Test Status"></a>
</p>
<p align="center">
  <a href="https://www.npmjs.com/package/@intlify/eslint-plugin-svelte"><img src="https://img.shields.io/npm/v/@intlify/eslint-plugin-svelte.svg" alt="NPM"></a>
</p>
<p align="center">ESLint plugin for internationalization with Svelte</p>

<h2 align="center">

[Online Demo](https://eslint-online-playground.netlify.app/#https://github.com/intlify/eslint-plugin-svelte/tree/main/playground)

</h2>

## :book: Documentation

See [here](https://github.com/intlify/eslint-plugin-svelte/blob/main/docs/README.md)

## :scroll: Changelog

Details changes for each release are documented in the [CHANGELOG.md](https://github.com/intlify/eslint-plugin-svelte/blob/main/CHANGELOG.md).

## :exclamation: Issues

Please make sure to read the [Issue Reporting Checklist](https://github.com/intlify/eslint-plugin-svelte/blob/main/CONTRIBUTING.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately.

## :muscle: Contribution

Please make sure to read the [Contributing Guide](https://github.com/intlify/eslint-plugin-svelte/blob/main/.github/CONTRIBUTING.md) before making a pull request.

## :copyright: License

[MIT](http://opensource.org/licenses/MIT)
npm package: @intlify/eslint-plugin-vue-i18n
Description: ESLint plugin for Vue I18n
Author: kazuya kawaguchi
Latest version: 4.3.0

<p align="center"><img width="143px" height="130px" src="./assets/eslint-plugin-vue-i18n.svg" alt="ESLint plugin for Vue I18n logo"></p>

<h1 align="center">@intlify/eslint-plugin-vue-i18n</h1>
<p align="center">
  <a href="https://github.com/intlify/eslint-plugin-vue-i18n/actions?query=workflow%3ATest"><img src="https://github.com/intlify/eslint-plugin-vue-i18n/actions/workflows/test.yml/badge.svg" alt="Test Status"></a>
</p>
<p align="center">
  <a href="https://www.npmjs.com/package/@intlify/eslint-plugin-vue-i18n"><img src="https://img.shields.io/npm/v/@intlify/eslint-plugin-vue-i18n.svg" alt="NPM"></a>
</p>
<p align="center">ESLint plugin for Vue I18n</p>

<div align="center">

[Online Playground](https://eslint-online-playground.netlify.app/#eslint-plugin-vue-i18n) •
[Documentation](https://eslint-plugin-vue-i18n.intlify.dev/)

</div>

<h2 align="center">Supporting Intlify Project</h2>

Intlify Project is an open source project that is included Vue I18n and i18n tooling and libraries with its ongoing development made possible entirely by the support of Sponsors. If you would like to become a sponsor, please consider:

- [Become a Sponsor on GitHub](https://github.com/sponsors/ota-meshi)

## 📔 Documentation

See [here](https://eslint-plugin-vue-i18n.intlify.dev)

## 📜 Changelog

Details changes for each release are documented in the [CHANGELOG.md](https://github.com/intlify/eslint-plugin-vue-i18n/blob/master/CHANGELOG.md).

## 🚥 Versioning policy

This plugin follows [Semantic Versioning].
However, please note that we do not follow [ESLint's Semantic Versioning Policy].
In minor version releases, this plugin may change the sharable configs provided by the plugin or the default behavior of the plugin's rules in order to add features to the plugin. Because we want to add many features to the plugin soon, so that users can easily take advantage of new features in Vue I18n, Vue and Nuxt.

According to our policy, any minor update may report more linting errors than the previous release. As such, we recommend using the [tilde (`~`)](https://semver.npmjs.com/#syntax-examples) in `package.json` to guarantee the results of your builds.

[Semantic Versioning]: https://semver.org/
[ESLint's Semantic Versioning Policy]: https://github.com/eslint/eslint#semantic-versioning-policy

## ❗ Issues

Please make sure to read the [Issue Reporting Checklist](https://github.com/intlify/eslint-plugin-vue-i18n/blob/master/CONTRIBUTING.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately.

## 💪 Contribution

Please make sure to read the [Contributing Guide](https://github.com/intlify/eslint-plugin-vue-i18n/blob/master/.github/CONTRIBUTING.md) before making a pull request.

## ©️ License

[MIT](http://opensource.org/licenses/MIT)
npm package: @intlify/shared
Description: @intlify/shared
Author: kazuya kawaguchi
Latest version: 11.3.2

# @intlify/shared

The shared utility package for intlify project

## Forks
The implementation of this module is contains code forked from other packages or projects:

- [@vue/shared](https://github.com/vuejs/vue-next/tree/master/packages/shared)
  - Useful Utilities at `utils.ts`
    - Author: Evan You
    - License: MIT
  - Event Emitter at `emitter.ts` and `emittable.ts`
    - Author: Jason Miller
    - License: MIT

## :copyright: License

[MIT](http://opensource.org/licenses/MIT)
npm package: @intlify/utils
Description: Collection of i18n utilities
Author: kazuya kawaguchi
Latest version: 1.0.1

# @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
```

### 🦕 Deno

```sh
deno add jsr:@intlify/utils
```

### 🥟 Bun

```sh
bun add @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>
```

## 🍭 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`

## 🤝 API

See the [API docs](./docs/index.md)

## 🙌 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