WordPress.org

Make WordPress Core

Ticket #29892: 29892.2.patch

File 29892.2.patch, 3.1 KB (added by ocean90, 7 years ago)
  • src/wp-includes/l10n.php

     
    744744}
    745745
    746746/**
    747  * Get all available languages based on the presence of *.mo files in a given directory.
     747 * Get all available core languages based on the presence of *.mo/*.po files in
     748 * a given directory.
    748749 *
    749750 * The default directory is WP_LANG_DIR.
    750751 *
    751752 * @since 3.0.0
    752753 *
     754 * @see wp_get_installed_translations()
     755 *
    753756 * @param string $dir A directory to search for language files.
    754757 *                    Default WP_LANG_DIR.
    755  * @return array An array of language codes or an empty array if no languages are present. Language codes are formed by stripping the .mo extension from the language file names.
     758 * @return array An array of language codes or an empty array if no languages are present.
     759 *               Language codes are formed by stripping the extension from the language file names.
    756760 */
    757761function get_available_languages( $dir = null ) {
    758         $languages = array();
     762        $translations = wp_get_installed_translations( 'core', $dir );
    759763
    760         foreach( (array)glob( ( is_null( $dir) ? WP_LANG_DIR : $dir ) . '/*.mo' ) as $lang_file ) {
    761                 $lang_file = basename($lang_file, '.mo');
    762                 if ( 0 !== strpos( $lang_file, 'continents-cities' ) && 0 !== strpos( $lang_file, 'ms-' ) &&
    763                         0 !== strpos( $lang_file, 'admin-' ))
    764                         $languages[] = $lang_file;
     764        if ( empty( $translations['default'] ) ) {
     765                return array();
    765766        }
    766767
    767         return $languages;
     768        return array_keys( $translations['default'] );
    768769}
    769770
    770771/**
     
    775776 *
    776777 * @since 3.7.0
    777778 *
    778  * @param string $type What to search for. Accepts 'plugins', 'themes', 'core'.
     779 * @param string $type     What to search for. Accepts 'plugins', 'themes', 'core'.
     780 * @param string $lang_dir A directory to search for language files. Default WP_LANG_DIR.
    779781 * @return array Array of language data.
    780782 */
    781 function wp_get_installed_translations( $type ) {
     783function wp_get_installed_translations( $type, $lang_dir = null ) {
    782784        if ( $type !== 'themes' && $type !== 'plugins' && $type !== 'core' )
    783785                return array();
    784786
     787        $lang_dir = is_null( $lang_dir ) ? WP_LANG_DIR : $lang_dir;
    785788        $dir = 'core' === $type ? '' : "/$type";
    786789
    787         if ( ! is_dir( WP_LANG_DIR ) )
     790        if ( ! is_dir( $lang_dir ) ) {
    788791                return array();
     792        }
    789793
    790         if ( $dir && ! is_dir( WP_LANG_DIR . $dir ) )
     794        if ( $dir && ! is_dir( $lang_dir . $dir ) ) {
    791795                return array();
     796        }
    792797
    793         $files = scandir( WP_LANG_DIR . $dir );
    794         if ( ! $files )
     798        $files = scandir( $lang_dir . $dir );
     799        if ( ! $files ) {
    795800                return array();
     801        }
    796802
    797803        $language_data = array();
    798804
     
    814820                if ( '' === $textdomain ) {
    815821                        $textdomain = 'default';
    816822                }
    817                 $language_data[ $textdomain ][ $language ] = wp_get_pomo_file_data( WP_LANG_DIR . "$dir/$file" );
     823
     824                if ( 'core' === $type && ! in_array( $textdomain, array( 'default', 'admin', 'admin-network', 'continents-cities' ) ) ) {
     825                        continue;
     826                }
     827
     828                $language_data[ $textdomain ][ $language ] = wp_get_pomo_file_data( $lang_dir . "$dir/$file" );
    818829        }
    819830        return $language_data;
    820831}