UNPKG

@wordpress/i18n

Version:
148 lines (132 loc) 4.94 kB
/** * Internal dependencies */ import { createI18n } from './create-i18n'; /** * WordPress dependencies */ import { defaultHooks } from '@wordpress/hooks'; const i18n = createI18n( undefined, undefined, defaultHooks ); /** * Default, singleton instance of `I18n`. */ export default i18n; /* * Comments in this file are duplicated from ./i18n due to * https://github.com/WordPress/gutenberg/pull/20318#issuecomment-590837722 */ /** * @typedef {import('./create-i18n').LocaleData} LocaleData * @typedef {import('./create-i18n').SubscribeCallback} SubscribeCallback * @typedef {import('./create-i18n').UnsubscribeCallback} UnsubscribeCallback */ /** * Returns locale data by domain in a Jed-formatted JSON object shape. * * @see http://messageformat.github.io/Jed/ * * @param {string} [domain] Domain for which to get the data. * @return {LocaleData} Locale data. */ export const getLocaleData = i18n.getLocaleData.bind( i18n ); /** * Merges locale data into the Tannin instance by domain. Accepts data in a * Jed-formatted JSON object shape. * * @see http://messageformat.github.io/Jed/ * * @param {LocaleData} [data] Locale data configuration. * @param {string} [domain] Domain for which configuration applies. */ export const setLocaleData = i18n.setLocaleData.bind( i18n ); /** * 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. * * @see http://messageformat.github.io/Jed/ * * @param {LocaleData} [data] Locale data configuration. * @param {string} [domain] Domain for which configuration applies. */ export const resetLocaleData = i18n.resetLocaleData.bind( i18n ); /** * Subscribes to changes of locale data * * @param {SubscribeCallback} callback Subscription callback * @return {UnsubscribeCallback} Unsubscribe callback */ export const subscribe = i18n.subscribe.bind( i18n ); /** * Retrieve the translation of text. * * @see https://developer.wordpress.org/reference/functions/__/ * * @param {string} text Text to translate. * @param {string} [domain] Domain to retrieve the translated text. * * @return {string} Translated text. */ export const __ = i18n.__.bind( i18n ); /** * Retrieve translated string with gettext context. * * @see https://developer.wordpress.org/reference/functions/_x/ * * @param {string} text Text to translate. * @param {string} context Context information for the translators. * @param {string} [domain] Domain to retrieve the translated text. * * @return {string} Translated context string without pipe. */ export const _x = i18n._x.bind( i18n ); /** * Translates and retrieves the singular or plural form based on the supplied * number. * * @see https://developer.wordpress.org/reference/functions/_n/ * * @param {string} single The text to be used if the number is singular. * @param {string} plural The text to be used if the number is plural. * @param {number} number The number to compare against to use either the * singular or plural form. * @param {string} [domain] Domain to retrieve the translated text. * * @return {string} The translated singular or plural form. */ export const _n = i18n._n.bind( i18n ); /** * Translates and retrieves the singular or plural form based on the supplied * number, with gettext context. * * @see https://developer.wordpress.org/reference/functions/_nx/ * * @param {string} single The text to be used if the number is singular. * @param {string} plural The text to be used if the number is plural. * @param {number} number The number to compare against to use either the * singular or plural form. * @param {string} context Context information for the translators. * @param {string} [domain] Domain to retrieve the translated text. * * @return {string} The translated singular or plural form. */ export const _nx = i18n._nx.bind( i18n ); /** * 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`). * * @return {boolean} Whether locale is RTL. */ export const isRTL = i18n.isRTL.bind( i18n ); /** * Check if there is a translation for a given string (in singular form). * * @param {string} single Singular form of the string to look up. * @param {string} [context] Context information for the translators. * @param {string} [domain] Domain to retrieve the translated text. * @return {boolean} Whether the translation exists or not. */ export const hasTranslation = i18n.hasTranslation.bind( i18n );