X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/wordpress.git/blobdiff_plain/53f4633144ed68c8b8fb5861f992b5489894a940..refs/tags/wordpress-4.5.3-scripts:/wp-includes/l10n.php?ds=sidebyside diff --git a/wp-includes/l10n.php b/wp-includes/l10n.php index 7caf8790..bfc65989 100644 --- a/wp-includes/l10n.php +++ b/wp-includes/l10n.php @@ -1,30 +1,31 @@ translate_plural( $single, $plural, $number ); + /** - * Filter text with its translation when plural option is available. + * Filter the singular or plural form of a string. * * @since 2.2.0 * * @param string $translation Translated text. - * @param string $single The text that will be used if $number is 1. - * @param string $plural The text that will be used if $number is not 1. - * @param string $number The number to compare against to use either $single or $plural. + * @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 string $number The number to compare against to use either the singular or plural form. * @param string $domain Text domain. Unique identifier for retrieving translated strings. */ return apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain ); } /** - * Retrieve the plural or single form based on the supplied amount with gettext context. + * Translates and retrieves the singular or plural form based on the supplied number, with gettext context. + * + * This is a hybrid of _n() and _x(). It supports context and plurals. + * + * Used when you want to use the appropriate form of a string with context based on whether a + * number is singular or plural. + * + * Example: * - * This is a hybrid of _n() and _x(). It supports contexts and plurals. + * $people = sprintf( _n( '%s person', '%s people', $count, 'context', 'text-domain' ), number_format_i18n( $count ) ); * * @since 2.8.0 * - * @param string $single The text that will be used if $number is 1. - * @param string $plural The text that will be used if $number is not 1. - * @param int $number The number to compare against to use either $single or $plural. + * @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 int $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 Optional. Text domain. Unique identifier for retrieving translated strings. - * @return string Either $single or $plural translated text with context. + * Default 'default'. + * @return string The translated singular or plural form. */ function _nx($single, $plural, $number, $context, $domain = 'default') { $translations = get_translations_for_domain( $domain ); $translation = $translations->translate_plural( $single, $plural, $number, $context ); + /** - * Filter text with its translation while plural option and context are available. + * Filter the singular or plural form of a string with gettext context. * * @since 2.8.0 * * @param string $translation Translated text. - * @param string $single The text that will be used if $number is 1. - * @param string $plural The text that will be used if $number is not 1. - * @param string $number The number to compare against to use either $single or $plural. + * @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 string $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 Text domain. Unique identifier for retrieving translated strings. */ @@ -362,55 +389,103 @@ function _nx($single, $plural, $number, $context, $domain = 'default') { } /** - * Register plural strings in POT file, but don't translate them. + * Registers plural strings in POT file, but does not translate them. * * Used when you want to keep structures with translatable plural - * strings and use them later. + * strings and use them later when the number is known. * * Example: * * $messages = array( - * 'post' => _n_noop( '%s post', '%s posts' ), - * 'page' => _n_noop( '%s pages', '%s pages' ), + * 'post' => _n_noop( '%s post', '%s posts', 'text-domain' ), + * 'page' => _n_noop( '%s pages', '%s pages', 'text-domain' ), * ); * ... * $message = $messages[ $type ]; - * $usable_text = sprintf( translate_nooped_plural( $message, $count ), $count ); + * $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); * * @since 2.5.0 * - * @param string $singular Single form to be i18ned. - * @param string $plural Plural form to be i18ned. + * @param string $singular Singular form to be localized. + * @param string $plural Plural form to be localized. * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings. - * @return array array($singular, $plural) + * Default null. + * @return array { + * Array of translation information for the strings. + * + * @type string $0 Singular form to be localized. No longer used. + * @type string $1 Plural form to be localized. No longer used. + * @type string $singular Singular form to be localized. + * @type string $plural Plural form to be localized. + * @type null $context Context information for the translators. + * @type string $domain Text domain. + * } */ function _n_noop( $singular, $plural, $domain = null ) { return array( 0 => $singular, 1 => $plural, 'singular' => $singular, 'plural' => $plural, 'context' => null, 'domain' => $domain ); } /** - * Register plural strings with context in POT file, but don't translate them. + * Registers plural strings with gettext context in POT file, but does not translate them. + * + * Used when you want to keep structures with translatable plural + * strings and use them later when the number is known. + * + * Example: + * + * $messages = array( + * 'post' => _n_noop( '%s post', '%s posts', 'context', 'text-domain' ), + * 'page' => _n_noop( '%s pages', '%s pages', 'context', 'text-domain' ), + * ); + * ... + * $message = $messages[ $type ]; + * $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); * * @since 2.8.0 - * @param string $singular - * @param string $plural - * @param string $context - * @param string|null $domain - * @return array + * + * @param string $singular Singular form to be localized. + * @param string $plural Plural form to be localized. + * @param string $context Context information for the translators. + * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings. + * Default null. + * @return array { + * Array of translation information for the strings. + * + * @type string $0 Singular form to be localized. No longer used. + * @type string $1 Plural form to be localized. No longer used. + * @type string $2 Context information for the translators. No longer used. + * @type string $singular Singular form to be localized. + * @type string $plural Plural form to be localized. + * @type string $context Context information for the translators. + * @type string $domain Text domain. + * } */ function _nx_noop( $singular, $plural, $context, $domain = null ) { return array( 0 => $singular, 1 => $plural, 2 => $context, 'singular' => $singular, 'plural' => $plural, 'context' => $context, 'domain' => $domain ); } /** - * Translate the result of _n_noop() or _nx_noop(). + * Translates and retrieves the singular or plural form of a string that's been registered + * with _n_noop() or _nx_noop(). + * + * Used when you want to use a translatable plural string once the number is known. + * + * Example: + * + * $messages = array( + * 'post' => _n_noop( '%s post', '%s posts', 'text-domain' ), + * 'page' => _n_noop( '%s pages', '%s pages', 'text-domain' ), + * ); + * ... + * $message = $messages[ $type ]; + * $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) ); * * @since 3.1.0 * - * @param array $nooped_plural Array with singular, plural and context keys, usually the result of _n_noop() or _nx_noop() - * @param int $count Number of objects + * @param array $nooped_plural Array with singular, plural, and context keys, usually the result of _n_noop() or _nx_noop(). + * @param int $count Number of objects. * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings. If $nooped_plural contains - * a text domain passed to _n_noop() or _nx_noop(), it will override this value. + * a text domain passed to _n_noop() or _nx_noop(), it will override this value. Default 'default'. * @return string Either $single or $plural translated text. */ function translate_nooped_plural( $nooped_plural, $count, $domain = 'default' ) { @@ -562,7 +637,7 @@ function load_default_textdomain( $locale = null ) { return $return; } - if ( is_admin() || defined( 'WP_INSTALLING' ) || ( defined( 'WP_REPAIRING' ) && WP_REPAIRING ) ) { + if ( is_admin() || wp_installing() || ( defined( 'WP_REPAIRING' ) && WP_REPAIRING ) ) { load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo" ); } @@ -718,10 +793,16 @@ function load_child_theme_textdomain( $domain, $path = false ) { */ function get_translations_for_domain( $domain ) { global $l10n; - if ( !isset( $l10n[$domain] ) ) { - $l10n[$domain] = new NOOP_Translations; + if ( isset( $l10n[ $domain ] ) ) { + return $l10n[ $domain ]; } - return $l10n[$domain]; + + static $noop_translations = null; + if ( null === $noop_translations ) { + $noop_translations = new NOOP_Translations; + } + + return $noop_translations; } /** @@ -736,7 +817,7 @@ function get_translations_for_domain( $domain ) { */ function is_textdomain_loaded( $domain ) { global $l10n; - return isset( $l10n[$domain] ); + return isset( $l10n[ $domain ] ); } /** @@ -776,7 +857,7 @@ function get_available_languages( $dir = null ) { $lang_files = glob( ( is_null( $dir) ? WP_LANG_DIR : $dir ) . '/*.mo' ); if ( $lang_files ) { - foreach( $lang_files as $lang_file ) { + foreach ( $lang_files as $lang_file ) { $lang_file = basename( $lang_file, '.mo' ); if ( 0 !== strpos( $lang_file, 'continents-cities' ) && 0 !== strpos( $lang_file, 'ms-' ) && 0 !== strpos( $lang_file, 'admin-' ) ) { @@ -818,7 +899,7 @@ function wp_get_installed_translations( $type ) { $language_data = array(); foreach ( $files as $file ) { - if ( '.' === $file[0] || is_dir( $file ) ) { + if ( '.' === $file[0] || is_dir( WP_LANG_DIR . "$dir/$file" ) ) { continue; } if ( substr( $file, -3 ) !== '.po' ) { @@ -881,11 +962,11 @@ function wp_get_pomo_file_data( $po_file ) { * @type array $translations List of available translations. Default result of * wp_get_available_translations(). * @type string $selected Language which should be selected. Default empty. - * @type bool|int $echo Whether to echo or return the generated markup. Accepts 0, 1, or their - * bool equivalents. Default 1. + * @type bool|int $echo Whether to echo the generated markup. Accepts 0, 1, or their + * boolean equivalents. Default 1. * @type bool $show_available_translations Whether to show available translations. Default true. * } - * @return string HTML content only if 'echo' argument is 0. + * @return string HTML content */ function wp_dropdown_languages( $args = array() ) {