WordPress.org

Make WordPress Core

Ticket #14305: language_dropin.diff

File language_dropin.diff, 2.4 KB (added by Nano8Blazex, 10 years ago)

patch -> GOogle Code-in attempt!

  • wp-admin/includes/plugin.php

     
    336336function get_dropins() {
    337337        $dropins = array();
    338338        $plugin_files = array();
     339        $language_files = array();
    339340
    340341        $_dropins = _get_dropins();
    341342
     
    350351        }
    351352
    352353        @closedir( $plugins_dir );
     354       
     355        // More advanced plugins for language localization exist in the wp-content/languages directory
     356        if ( $language_plugins_dir = @ opendir( WP_CONTENT_DIR . '/languages' ) ) {
     357                $locale = get_locale();
     358                while ( ( $file = readdir( $language_plugins_dir ) ) !== false ) {
     359                        if ( (substr( $file, -4 ) == '.php')&&(substr( $file, 0, -4 ) == $locale)) {
     360                                $language_files[] = $file;
     361                        }
     362                }
     363        }
    353364
     365        @closedir( $language_plugins_dir );
     366
    354367        if ( empty($plugin_files) )
    355368                return $dropins;
    356369
     
    362375                        $plugin_data['Name'] = $plugin_file;
    363376                $dropins[ $plugin_file ] = $plugin_data;
    364377        }
     378       
     379        if ( !empty($language_files) ) {
     380                foreach ( $language_files as $language_file ) {
     381                        if ( !is_readable( WP_CONTENT_DIR . '/languages'. "/$language_file" ) ) {
     382                                continue;
     383                        }
     384                        $language_data = array(
     385                                'Name' => $language_file,
     386                                'Title' => $language_file,
     387                                'Description' => __('Advanced language file.'),
     388                                'Author' => ''
     389                        );
     390                        $dropins[ $language_file ] = $language_data;
     391                }
     392        }
    365393
    366394        uksort( $dropins, 'strnatcasecmp' );
    367395
  • wp-admin/includes/class-wp-plugins-list-table.php

     
    336336                        $plugin_name = $plugin_file;
    337337                        if ( $plugin_file != $plugin_data['Name'] )
    338338                                $plugin_name .= '<br/>' . $plugin_data['Name'];
    339                         if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant
     339                        if ( !($dropins[$plugin_file])) { //if not one of the predefined drop-ins, but rather an advanced language file
    340340                                $is_active = true;
     341                        } elseif ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant
     342                                $is_active = true;
    341343                                $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>';
    342344                        } elseif ( constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true
    343345                                $is_active = true;