Changeset 49566 for trunk/src/wp-includes/l10n.php
- Timestamp:
- 11/12/2020 02:41:19 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/l10n.php
r49236 r49566 690 690 * @since 1.5.0 691 691 * 692 * @global MO[] $l10n An array of all currently loaded text domains. 693 * @global MO[] $l10n_unloaded An array of all text domains that have been unloaded again. 694 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry. 692 * @global MO[] $l10n An array of all currently loaded text domains. 693 * @global MO[] $l10n_unloaded An array of all text domains that have been unloaded again. 695 694 * 696 695 * @param string $domain Text domain. Unique identifier for retrieving translated strings. … … 699 698 */ 700 699 function load_textdomain( $domain, $mofile ) { 701 global $l10n, $l10n_unloaded , $wp_textdomain_registry;700 global $l10n, $l10n_unloaded; 702 701 703 702 $l10n_unloaded = (array) $l10n_unloaded; … … 757 756 $l10n[ $domain ] = &$mo; 758 757 759 /** @var WP_Textdomain_Registry $wp_textdomain_registry */760 $wp_textdomain_registry->set( $domain, dirname( $mofile ) );761 762 758 return true; 763 759 } … … 767 763 * 768 764 * @since 3.0.0 769 * @since 5.6.0 Added the `$reloadable` parameter.770 765 * 771 766 * @global MO[] $l10n An array of all currently loaded text domains. 772 767 * @global MO[] $l10n_unloaded An array of all text domains that have been unloaded again. 773 768 * 774 * @param string $domain Text domain. Unique identifier for retrieving translated strings. 775 * @param bool $reloadable Whether the text domain can be loaded just-in-time again. 769 * @param string $domain Text domain. Unique identifier for retrieving translated strings. 776 770 * @return bool Whether textdomain was unloaded. 777 771 */ 778 function unload_textdomain( $domain , $reloadable = false) {772 function unload_textdomain( $domain ) { 779 773 global $l10n, $l10n_unloaded; 780 774 … … 785 779 * 786 780 * @since 3.0.0 787 * @since 5.6.0 Added the `$reloadable` parameter. 788 * 789 * @param bool $override Whether to override the text domain unloading. Default false. 790 * @param string $domain Text domain. Unique identifier for retrieving translated strings. 791 * @param bool $reloadable Whether the text domain can be loaded just-in-time again. 792 */ 793 $plugin_override = apply_filters( 'override_unload_textdomain', false, $domain, $reloadable ); 781 * 782 * @param bool $override Whether to override the text domain unloading. Default false. 783 * @param string $domain Text domain. Unique identifier for retrieving translated strings. 784 */ 785 $plugin_override = apply_filters( 'override_unload_textdomain', false, $domain ); 794 786 795 787 if ( $plugin_override ) { 796 if ( ! $reloadable ) { 797 $l10n_unloaded[ $domain ] = true; 798 } 788 $l10n_unloaded[ $domain ] = true; 799 789 800 790 return true; … … 805 795 * 806 796 * @since 3.0.0 807 * @since 5.6.0 Added the `$reloadable` parameter. 808 * 809 * @param string $domain Text domain. Unique identifier for retrieving translated strings. 810 * @param bool $reloadable Whether the text domain can be loaded just-in-time again. 811 */ 812 do_action( 'unload_textdomain', $domain, $reloadable ); 797 * 798 * @param string $domain Text domain. Unique identifier for retrieving translated strings. 799 */ 800 do_action( 'unload_textdomain', $domain ); 813 801 814 802 if ( isset( $l10n[ $domain ] ) ) { 815 803 unset( $l10n[ $domain ] ); 816 804 817 if ( ! $reloadable ) { 818 $l10n_unloaded[ $domain ] = true; 819 } 805 $l10n_unloaded[ $domain ] = true; 820 806 821 807 return true; … … 882 868 */ 883 869 function load_plugin_textdomain( $domain, $deprecated = false, $plugin_rel_path = false ) { 884 global $wp_textdomain_registry;885 886 870 /** 887 871 * Filters a plugin's locale. … … 910 894 } 911 895 912 /* @var WP_Textdomain_Registry $wp_textdomain_registry */913 $wp_textdomain_registry->set( $domain, $path );914 915 896 return load_textdomain( $domain, $path . '/' . $mofile ); 916 897 } … … 921 902 * @since 3.0.0 922 903 * @since 4.6.0 The function now tries to load the .mo file from the languages directory first. 923 *924 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.925 904 * 926 905 * @param string $domain Text domain. Unique identifier for retrieving translated strings. … … 930 909 */ 931 910 function load_muplugin_textdomain( $domain, $mu_plugin_rel_path = '' ) { 932 global $wp_textdomain_registry;933 934 911 /** This filter is documented in wp-includes/l10n.php */ 935 912 $locale = apply_filters( 'plugin_locale', determine_locale(), $domain ); … … 944 921 $path = WPMU_PLUGIN_DIR . '/' . ltrim( $mu_plugin_rel_path, '/' ); 945 922 946 /* @var WP_Textdomain_Registry $wp_textdomain_registry */947 $wp_textdomain_registry->set( $domain, $path );948 949 923 return load_textdomain( $domain, $path . '/' . $mofile ); 950 924 } … … 960 934 * @since 1.5.0 961 935 * @since 4.6.0 The function now tries to load the .mo file from the languages directory first. 962 *963 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.964 936 * 965 937 * @param string $domain Text domain. Unique identifier for retrieving translated strings. … … 969 941 */ 970 942 function load_theme_textdomain( $domain, $path = false ) { 971 global $wp_textdomain_registry;972 973 943 /** 974 944 * Filters a theme's locale. … … 991 961 $path = get_template_directory(); 992 962 } 993 994 /* @var WP_Textdomain_Registry $wp_textdomain_registry */995 $wp_textdomain_registry->set( $domain, $path );996 963 997 964 return load_textdomain( $domain, $path . '/' . $locale . '.mo' ); … … 1224 1191 * @access private 1225 1192 * 1226 * @ global MO[] $l10n_unloaded An array of all text domains that have been unloaded again.1227 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.1193 * @see get_translations_for_domain() 1194 * @global MO[] $l10n_unloaded An array of all text domains that have been unloaded again. 1228 1195 * 1229 1196 * @param string $domain Text domain. Unique identifier for retrieving translated strings. … … 1231 1198 */ 1232 1199 function _load_textdomain_just_in_time( $domain ) { 1233 global $l10n_unloaded , $wp_textdomain_registry;1200 global $l10n_unloaded; 1234 1201 1235 1202 $l10n_unloaded = (array) $l10n_unloaded; … … 1240 1207 } 1241 1208 1242 /** @var WP_Textdomain_Registry $wp_textdomain_registry */ 1243 $path = $wp_textdomain_registry->get( $domain ); 1244 if ( ! $path ) { 1209 $translation_path = _get_path_to_translation( $domain ); 1210 if ( false === $translation_path ) { 1245 1211 return false; 1246 1212 } 1247 1213 1214 return load_textdomain( $domain, $translation_path ); 1215 } 1216 1217 /** 1218 * Gets the path to a translation file for loading a textdomain just in time. 1219 * 1220 * Caches the retrieved results internally. 1221 * 1222 * @since 4.7.0 1223 * @access private 1224 * 1225 * @see _load_textdomain_just_in_time() 1226 * 1227 * @param string $domain Text domain. Unique identifier for retrieving translated strings. 1228 * @param bool $reset Whether to reset the internal cache. Used by the switch to locale functionality. 1229 * @return string|false The path to the translation file or false if no translation file was found. 1230 */ 1231 function _get_path_to_translation( $domain, $reset = false ) { 1232 static $available_translations = array(); 1233 1234 if ( true === $reset ) { 1235 $available_translations = array(); 1236 } 1237 1238 if ( ! isset( $available_translations[ $domain ] ) ) { 1239 $available_translations[ $domain ] = _get_path_to_translation_from_lang_dir( $domain ); 1240 } 1241 1242 return $available_translations[ $domain ]; 1243 } 1244 1245 /** 1246 * Gets the path to a translation file in the languages directory for the current locale. 1247 * 1248 * Holds a cached list of available .mo files to improve performance. 1249 * 1250 * @since 4.7.0 1251 * @access private 1252 * 1253 * @see _get_path_to_translation() 1254 * 1255 * @param string $domain Text domain. Unique identifier for retrieving translated strings. 1256 * @return string|false The path to the translation file or false if no translation file was found. 1257 */ 1258 function _get_path_to_translation_from_lang_dir( $domain ) { 1259 static $cached_mofiles = null; 1260 1261 if ( null === $cached_mofiles ) { 1262 $cached_mofiles = array(); 1263 1264 $locations = array( 1265 WP_LANG_DIR . '/plugins', 1266 WP_LANG_DIR . '/themes', 1267 ); 1268 1269 foreach ( $locations as $location ) { 1270 $mofiles = glob( $location . '/*.mo' ); 1271 if ( $mofiles ) { 1272 $cached_mofiles = array_merge( $cached_mofiles, $mofiles ); 1273 } 1274 } 1275 } 1276 1248 1277 $locale = determine_locale(); 1249 1250 // Themes with their language directory outside of WP_LANG_DIR have a different file name. 1251 $template_directory = trailingslashit( get_template_directory() ); 1252 $stylesheet_directory = trailingslashit( get_stylesheet_directory() ); 1253 if ( 0 === strpos( $path, $template_directory ) || 0 === strpos( $path, $stylesheet_directory ) ) { 1254 $mofile = "{$path}{$locale}.mo"; 1255 } else { 1256 $mofile = "{$path}{$domain}-{$locale}.mo"; 1257 } 1258 1259 return load_textdomain( $domain, $mofile ); 1278 $mofile = "{$domain}-{$locale}.mo"; 1279 1280 $path = WP_LANG_DIR . '/plugins/' . $mofile; 1281 if ( in_array( $path, $cached_mofiles, true ) ) { 1282 return $path; 1283 } 1284 1285 $path = WP_LANG_DIR . '/themes/' . $mofile; 1286 if ( in_array( $path, $cached_mofiles, true ) ) { 1287 return $path; 1288 } 1289 1290 return false; 1260 1291 } 1261 1292 … … 1267 1298 * @since 2.8.0 1268 1299 * 1269 * @global MO[] $l10n An array of all currently loaded text domains.1300 * @global MO[] $l10n 1270 1301 * 1271 1302 * @param string $domain Text domain. Unique identifier for retrieving translated strings. … … 1291 1322 * @since 3.0.0 1292 1323 * 1293 * @global MO[] $l10n An array of all currently loaded text domains.1324 * @global MO[] $l10n 1294 1325 * 1295 1326 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
Note: See TracChangeset
for help on using the changeset viewer.