# @gechiui/i18n

> GeChiUI internationalization (i18n) library.

Latest version **4.3.1** (published 2022-03-17) · GPL-2.0-or-later license · 0 weekly downloads

## Install

```sh
npm install @gechiui/i18n
pnpm add @gechiui/i18n
yarn add @gechiui/i18n
bun add @gechiui/i18n
```

Provides the command `pot-to-php`.

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.3.1 |
| Published | 2022-03-17 |
| First published | 2022-03-17 |
| Weekly downloads | 0 |
| License | GPL-2.0-or-later |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=12 |
| Dependencies | 7 |
| Unpacked size | 221.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | The GeChiUI Contributors |
| Maintainers | gechiui |
| Keywords | gechiui, gutenberg, i18n |

## Links

- npm: https://www.npmjs.com/package/@gechiui/i18n
- Repository: https://github.com/GeChiUI/gutenberg
- Homepage: https://github.com/GeChiUI/gutenberg/tree/HEAD/packages/i18n/README.md
- Issues: https://github.com/GeChiUI/gutenberg/issues
- npm.io page: https://npm.io/package/@gechiui/i18n

## Dependencies (7)

- [lodash](https://npm.io/package/lodash.md) ^4.17.21
- [memize](https://npm.io/package/memize.md) ^1.1.0
- [tannin](https://npm.io/package/tannin.md) ^1.2.0
- [sprintf-js](https://npm.io/package/sprintf-js.md) ^1.1.1
- [@babel/runtime](https://npm.io/package/@babel/runtime.md) ^7.16.0
- [@gechiui/hooks](https://npm.io/package/@gechiui/hooks.md) ^3.3.1
- [gettext-parser](https://npm.io/package/gettext-parser.md) ^1.3.1

## Alternatives

- [messageformat](https://npm.io/package/messageformat.md) — 329.7K weekly downloads
- [@mintlify/scraping](https://npm.io/package/@mintlify/scraping.md) — 294.8K weekly downloads
- [@mintlify/previewing](https://npm.io/package/@mintlify/previewing.md) — 209.5K weekly downloads
- [@mintlify/prebuild](https://npm.io/package/@mintlify/prebuild.md) — 209.5K weekly downloads
- [@mintlify/link-rot](https://npm.io/package/@mintlify/link-rot.md) — 206.3K weekly downloads

## Recent versions

- 4.3.1 (latest) — 2022-03-17
- 4.2.4 — 2022-03-17

## README

# Internationalization (i18n)

Internationalization utilities for client-side localization. See [How to Internationalize Your Plugin](https://developer.gechiui.com/plugins/internationalization/how-to-internationalize-your-plugin/) for server-side documentation.

## Installation

Install the module:

```bash
npm install @gechiui/i18n --save
```

_This package assumes that your code will run in an **ES2015+** environment. If you're using an environment that has limited or no support for such language features and APIs, you should include [the polyfill shipped in `@gechiui/babel-preset-default`](https://github.com/GeChiUI/gutenberg/tree/HEAD/packages/babel-preset-default#polyfill) in your code._

## Usage

```js
import { sprintf, _n } from '@gechiui/i18n';

sprintf( _n( '%d hat', '%d hats', 4, 'text-domain' ), 4 );
// 4 hats
```

For a complete example, see the [Internationalization section of the Block Editor Handbook](https://developer.gechiui.com/block-editor/developers/internationalization/).

## API

<!-- START TOKEN(Autogenerated API docs) -->

### createI18n

Create an i18n instance

_Parameters_

-   _initialData_ `[LocaleData]`: Locale data configuration.
-   _initialDomain_ `[string]`: Domain for which configuration applies.
-   _hooks_ `[Hooks]`: Hooks implementation.

_Returns_

-   `I18n`: I18n instance.

### defaultI18n

Default, singleton instance of `I18n`.

### getLocaleData

Returns locale data by domain in a Jed-formatted JSON object shape.

_Related_

-   <http://messageformat.github.io/Jed/>

_Parameters_

-   _domain_ `[string]`: Domain for which to get the data.

_Returns_

-   `LocaleData`: Locale data.

### hasTranslation

Check if there is a translation for a given string (in singular form).

_Parameters_

-   _single_ `string`: Singular form of the string to look up.
-   _context_ `[string]`: Context information for the translators.
-   _domain_ `[string]`: Domain to retrieve the translated text.

_Returns_

-   `boolean`: Whether the translation exists or not.

### isRTL

Check if current locale is RTL.

**RTL (Right To Left)** is a locale property indicating that text is written from right to left.
For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common
language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,
including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).

_Returns_

-   `boolean`: Whether locale is RTL.

### resetLocaleData

Resets all current Tannin instance locale data and sets the specified
locale data for the domain. Accepts data in a Jed-formatted JSON object shape.

_Related_

-   <http://messageformat.github.io/Jed/>

_Parameters_

-   _data_ `[LocaleData]`: Locale data configuration.
-   _domain_ `[string]`: Domain for which configuration applies.

### setLocaleData

Merges locale data into the Tannin instance by domain. Accepts data in a
Jed-formatted JSON object shape.

_Related_

-   <http://messageformat.github.io/Jed/>

_Parameters_

-   _data_ `[LocaleData]`: Locale data configuration.
-   _domain_ `[string]`: Domain for which configuration applies.

### sprintf

Returns a formatted string. If an error occurs in applying the format, the
original format string is returned.

_Related_

-   <https://www.npmjs.com/package/sprintf-js>

_Parameters_

-   _format_ `string`: The format of the string to generate.
-   _args_ `...*`: Arguments to apply to the format.

_Returns_

-   `string`: The formatted string.

### subscribe

Subscribes to changes of locale data

_Parameters_

-   _callback_ `SubscribeCallback`: Subscription callback

_Returns_

-   `UnsubscribeCallback`: Unsubscribe callback

### \_n

Translates and retrieves the singular or plural form based on the supplied
number.

_Related_

-   <https://developer.gechiui.com/reference/functions/_n/>

_Parameters_

-   _single_ `string`: The text to be used if the number is singular.
-   _plural_ `string`: The text to be used if the number is plural.
-   _number_ `number`: The number to compare against to use either the singular or plural form.
-   _domain_ `[string]`: Domain to retrieve the translated text.

_Returns_

-   `string`: The translated singular or plural form.

### \_nx

Translates and retrieves the singular or plural form based on the supplied
number, with gettext context.

_Related_

-   <https://developer.gechiui.com/reference/functions/_nx/>

_Parameters_

-   _single_ `string`: The text to be used if the number is singular.
-   _plural_ `string`: The text to be used if the number is plural.
-   _number_ `number`: The number to compare against to use either the singular or plural form.
-   _context_ `string`: Context information for the translators.
-   _domain_ `[string]`: Domain to retrieve the translated text.

_Returns_

-   `string`: The translated singular or plural form.

### \_x

Retrieve translated string with gettext context.

_Related_

-   <https://developer.gechiui.com/reference/functions/_x/>

_Parameters_

-   _text_ `string`: Text to translate.
-   _context_ `string`: Context information for the translators.
-   _domain_ `[string]`: Domain to retrieve the translated text.

_Returns_

-   `string`: Translated context string without pipe.

### \_\_

Retrieve the translation of text.

_Related_

-   <https://developer.gechiui.com/reference/functions/__/>

_Parameters_

-   _text_ `string`: Text to translate.
-   _domain_ `[string]`: Domain to retrieve the translated text.

_Returns_

-   `string`: Translated text.

<!-- END TOKEN(Autogenerated API docs) -->

## Contributing to this package

This is an individual package that's part of the Gutenberg project. The project is organized as a monorepo. It's made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to [npm](https://www.npmjs.com/) and used by [GeChiUI](https://make.gechiui.com/core/) as well as other software projects.

To find out more about contributing to this package or Gutenberg as a whole, please read the project's main [contributor guide](https://github.com/GeChiUI/gutenberg/tree/HEAD/CONTRIBUTING.md).

<br /><br /><p align="center"><img src="https://s.w.org/style/images/codeispoetry.png?1" alt="Code is Poetry." /></p>

---
_Source: https://npm.io/package/@gechiui/i18n · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
