What is @wordpress/i18n?
@wordpress/i18n is a package designed to provide internationalization (i18n) support for WordPress projects. It allows developers to easily translate strings and manage localization in their WordPress plugins and themes.
What are @wordpress/i18n's main functionalities?
Translating Strings
The `__` function is used to translate a string. The first argument is the string to be translated, and the second argument is the text domain.
const { __ } = require('@wordpress/i18n');
const translatedString = __('Hello, world!', 'text-domain');
console.log(translatedString);
Translating with Context
The `_x` function is used to translate a string with context. The first argument is the string to be translated, the second argument is the context, and the third argument is the text domain.
const { _x } = require('@wordpress/i18n');
const translatedString = _x('Post', 'noun', 'text-domain');
console.log(translatedString);
Plural Translations
The `_n` function is used for plural translations. The first argument is the singular form, the second argument is the plural form, the third argument is the number, and the fourth argument is the text domain.
const { _n } = require('@wordpress/i18n');
const translatedString = _n('%d post', '%d posts', 2, 'text-domain');
console.log(translatedString);
Translating with Context and Plural
The `_nx` function is used for plural translations with context. The first argument is the singular form, the second argument is the plural form, the third argument is the number, the fourth argument is the context, and the fifth argument is the text domain.
const { _nx } = require('@wordpress/i18n');
const translatedString = _nx('%d comment', '%d comments', 2, 'noun', 'text-domain');
console.log(translatedString);
Other packages similar to @wordpress/i18n
i18next
i18next is a popular internationalization framework for JavaScript. It provides a complete solution for localizing applications, including support for pluralization, context, and interpolation. Compared to @wordpress/i18n, i18next offers more advanced features and is suitable for a wider range of applications beyond WordPress.
react-intl
react-intl is a library for internationalizing React applications. It provides components and an API to format dates, numbers, and strings, and to handle pluralization and translations. While @wordpress/i18n is tailored for WordPress, react-intl is specifically designed for React applications.
polyglot
Polyglot.js is a small library for internationalizing JavaScript applications. It provides a simple API for translating strings and handling pluralization. Polyglot.js is more lightweight compared to @wordpress/i18n and is suitable for projects that require basic i18n support.
Internationalization (i18n)
Internationalization utilities for client-side localization. See How to Internationalize Your Plugin for server-side documentation.
Installation
Install the module:
npm install @wordpress/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 ES2015+ such as lower versions of IE then using core-js or @babel/polyfill will add support for these methods. Learn more about it in Babel docs.
Usage
import { sprintf, _n } from '@wordpress/i18n';
sprintf( _n( '%d hat', '%d hats', 4, 'text-domain' ), 4 );
For a complete example, see the Internationalization section of the Block Editor Handbook.
API
# createI18n
Create an i18n instance
Parameters
- initialData
[LocaleData]
: Locale data configuration. - initialDomain
[string]
: Domain for which configuration applies. - hooks
[ApplyFiltersInterface]
: Hooks implementation.
Returns
# 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.
# setLocaleData
Merges locale data into the Tannin instance by domain. Accepts data in a
Jed-formatted JSON object shape.
Related
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
Parameters
- format
string
: The format of the string to generate. - args
...*
: Arguments to apply to the format.
Returns
string
: The formatted string.
# _n
Translates and retrieves the singular or plural form based on the supplied
number.
Related
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
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
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
Parameters
- text
string
: Text to translate. - domain
[string]
: Domain to retrieve the translated text.
Returns