String
* [.dgettext(domain, msgid)](#Gettext+dgettext) ⇒ String
* [.ngettext(msgid, msgidPlural, count)](#Gettext+ngettext) ⇒ String
* [.dngettext(domain, msgid, msgidPlural, count)](#Gettext+dngettext) ⇒ String
* [.pgettext(msgctxt, msgid)](#Gettext+pgettext) ⇒ String
* [.dpgettext(domain, msgctxt, msgid)](#Gettext+dpgettext) ⇒ String
* [.npgettext(msgctxt, msgid, msgidPlural, count)](#Gettext+npgettext) ⇒ String
* [.dnpgettext(domain, msgctxt, msgid, msgidPlural, count)](#Gettext+dnpgettext) ⇒ String
* [.textdomain()](#Gettext+textdomain)
* [.setlocale()](#Gettext+setlocale)
* ~~[.addTextdomain()](#Gettext+addTextdomain)~~
### new Gettext([options])
Creates and returns a new Gettext instance.
**Returns**: Object - A Gettext instance
**Params**
- `[options]`: Object - A set of options
- `.sourceLocale`: String - The locale that the source code and its texts are written in. Translations for this locale is not necessary.
- `.debug`: Boolean - Whether to output debug info into the
console.
### gettext.on(eventName, callback)
Adds an event listener.
**Params**
- `eventName`: String - An event name
- `callback`: function - An event handler function
### gettext.off(eventName, callback)
Removes an event listener.
**Params**
- `eventName`: String - An event name
- `callback`: function - A previously registered event handler function
### gettext.addTranslations(locale, domain, translations)
Stores a set of translations in the set of gettext
catalogs.
**Params**
- `locale`: String - A locale string
- `domain`: String - A domain name
- `translations`: Object - An object of gettext-parser JSON shape
**Example**
```js
gt.addTranslations('sv-SE', 'messages', translationsObject)
```
### gettext.setLocale(locale)
Sets the locale to get translated messages for.
**Params**
- `locale`: String - A locale
**Example**
```js
gt.setLocale('sv-SE')
```
### gettext.setTextDomain(domain)
Sets the default gettext domain.
**Params**
- `domain`: String - A gettext domain name
**Example**
```js
gt.setTextDomain('domainname')
```
### gettext.gettext(msgid) ⇒ String
Translates a string using the default textdomain
**Returns**: String - Translation or the original string if no translation was found
**Params**
- `msgid`: String - String to be translated
**Example**
```js
gt.gettext('Some text')
```
### gettext.dgettext(domain, msgid) ⇒ String
Translates a string using a specific domain
**Returns**: String - Translation or the original string if no translation was found
**Params**
- `domain`: String - A gettext domain name
- `msgid`: String - String to be translated
**Example**
```js
gt.dgettext('domainname', 'Some text')
```
### gettext.ngettext(msgid, msgidPlural, count) ⇒ String
Translates a plural string using the default textdomain
**Returns**: String - Translation or the original string if no translation was found
**Params**
- `msgid`: String - String to be translated when count is not plural
- `msgidPlural`: String - String to be translated when count is plural
- `count`: Number - Number count for the plural
**Example**
```js
gt.ngettext('One thing', 'Many things', numberOfThings)
```
### gettext.dngettext(domain, msgid, msgidPlural, count) ⇒ String
Translates a plural string using a specific textdomain
**Returns**: String - Translation or the original string if no translation was found
**Params**
- `domain`: String - A gettext domain name
- `msgid`: String - String to be translated when count is not plural
- `msgidPlural`: String - String to be translated when count is plural
- `count`: Number - Number count for the plural
**Example**
```js
gt.dngettext('domainname', 'One thing', 'Many things', numberOfThings)
```
### gettext.pgettext(msgctxt, msgid) ⇒ String
Translates a string from a specific context using the default textdomain
**Returns**: String - Translation or the original string if no translation was found
**Params**
- `msgctxt`: String - Translation context
- `msgid`: String - String to be translated
**Example**
```js
gt.pgettext('sports', 'Back')
```
### gettext.dpgettext(domain, msgctxt, msgid) ⇒ String
Translates a string from a specific context using s specific textdomain
**Returns**: String - Translation or the original string if no translation was found
**Params**
- `domain`: String - A gettext domain name
- `msgctxt`: String - Translation context
- `msgid`: String - String to be translated
**Example**
```js
gt.dpgettext('domainname', 'sports', 'Back')
```
### gettext.npgettext(msgctxt, msgid, msgidPlural, count) ⇒ String
Translates a plural string from a specific context using the default textdomain
**Returns**: String - Translation or the original string if no translation was found
**Params**
- `msgctxt`: String - Translation context
- `msgid`: String - String to be translated when count is not plural
- `msgidPlural`: String - String to be translated when count is plural
- `count`: Number - Number count for the plural
**Example**
```js
gt.npgettext('sports', 'Back', '%d backs', numberOfBacks)
```
### gettext.dnpgettext(domain, msgctxt, msgid, msgidPlural, count) ⇒ String
Translates a plural string from a specifi context using a specific textdomain
**Returns**: String - Translation or the original string if no translation was found
**Params**
- `domain`: String - A gettext domain name
- `msgctxt`: String - Translation context
- `msgid`: String - String to be translated
- `msgidPlural`: String - If no translation was found, return this on count!=1
- `count`: Number - Number count for the plural
**Example**
```js
gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks)
```
### gettext.textdomain()
C-style alias for [setTextDomain](#gettextsettextdomaindomain)
**See**: Gettext#setTextDomain
### gettext.setlocale()
C-style alias for [setLocale](#gettextsetlocalelocale)
**See**: Gettext#setLocale
### ~~gettext.addTextdomain()~~
***Deprecated***
This function will be removed in the final 2.0.0 release.
## Migrating from v1 to v2
Version 1 of `node-gettext` confused domains with locales, which version 2 has corrected. `node-gettext` also no longer parses files or file paths for you, but accepts only ready-parsed JSON translation objects.
Here is a full list of all breaking changes:
* `textdomain(domain)` is now `setLocale(locale)`
* `dgettext`, `dngettext`, `dpgettext` and `dnpgettext` does not treat the leading `domain` argument as a locale, but as a domain. To get a translation from a certain locale you need to call `setLocale(locale)` beforehand.
* A new `setTextDomain(domain)` has been introduced
* `addTextdomain(domain, file)` is now `addTranslations(locale, domain, translations)`
* `addTranslations(locale, domain, translations)` **only accepts a JSON object with the [shape described in the `gettext-parser` README](https://github.com/smhg/gettext-parser#data-structure-of-parsed-mopo-files)**. To load translations from .mo or .po files, use [gettext-parser](https://github.com/smhg/gettext-parser), and it will provide you with valid JSON objects.
* `_currentDomain` is now `domain`
* `domains` is now `catalogs`
* The instance method `__normalizeDomain(domain)` has been replaced by a static method `Gettext.getLanguageCode(locale)`
## License
MIT
## See also
* [gettext-parser](https://github.com/smhg/gettext-parser) - Parsing and compiling gettext translations between .po/.mo files and JSON
* [lioness](https://github.com/alexanderwallin/lioness) – Gettext library for React
* [react-gettext-parser](https://github.com/laget-se/react-gettext-parser) - Extracting gettext translatable strings from JS(X) code
* [narp](https://github.com/laget-se/narp) - Workflow CLI tool that syncs translations between your app and Transifex