Making WordPress.org

Ticket #2618: 2618.2.patch

File 2618.2.patch, 5.4 KB (added by SergeyBiryukov, 7 years ago)
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-locale-banner.php

     
    3333
    3434                $plugin_slug = $request['plugin_slug'];
    3535
    36                 // Get the locale subdomain associations used to link languages to their local site.
    37                 $locale_subdomain_assoc = $wpdb->get_results(
    38                         "SELECT locale, subdomain FROM locales WHERE locale NOT LIKE '%\_%\_%'", OBJECT_K // Don't grab variants, for now.
    39                 );
     36                // Get the locale sites used to link languages to their local site.
     37                $locale_sites = get_sites( [
     38                        'network_id' => WPORG_GLOBAL_NETWORK_ID,
     39                        'public'     => 1,
     40                        'path'       => '/',
     41                        'number'     => '',
     42                ] );
    4043
    4144                // Retrieve all the WordPress locales.
    42                 $all_locales = wp_list_pluck( $locale_subdomain_assoc, 'locale' );
     45                $all_locales = wp_list_pluck( $locale_sites, 'locale' );
    4346
     47                $locale_site_assoc = array_combine( $all_locales, $locale_sites );
     48
    4449                $is_plugin_request = ! empty( $plugin_slug );
    4550
    4651                if ( $is_plugin_request ) {
     
    7580                // Get the native language names of the locales.
    7681                $suggest_named_locales = [];
    7782                foreach ( $suggest_locales as $locale ) {
    78                         $name = $this->get_native_language_name( $locale );
    79                         if ( $name ) {
    80                                 $suggest_named_locales[ $locale ] = $name;
    81                         }
     83                        $suggest_named_locales[ $locale ] = $locale_site_assoc[ $locale ]->blogname;
    8284                }
    8385
    8486                $suggest_string = '';
     
    9698                                        $suggest_string = sprintf(
    9799                                                $this->translate( 'This plugin is also available in %s.', $locale ),
    98100                                                sprintf(
    99                                                         '<a href="https://%s.wordpress.org%s%s/">%s</a>',
    100                                                         $locale_subdomain_assoc[ $locale ]->subdomain,
     101                                                        '<a href="https://%s%s%s/">%s</a>',
     102                                                        $locale_site_assoc[ $locale ]->domain,
    101103                                                        $current_site->path,
    102104                                                        $plugin_slug,
    103105                                                        $language
     
    107109                                        $suggest_string = sprintf(
    108110                                                $this->translate( 'The plugin directory is also available in %s.', $locale ),
    109111                                                sprintf(
    110                                                         '<a href="https://%s.wordpress.org%s">%s</a>',
    111                                                         $locale_subdomain_assoc[ $locale ]->subdomain,
     112                                                        '<a href="https://%s%s">%s</a>',
     113                                                        $locale_site_assoc[ $locale ]->domain,
    112114                                                        $current_site->path,
    113115                                                        $language
    114116                                                )
     
    125127                                        $other_suggest = '';
    126128                                        foreach ( $suggest_named_locales as $locale => $language ) {
    127129                                                $other_suggest .= sprintf(
    128                                                         '<a href="https://%s.wordpress.org%s%s/">%s</a>, ',
    129                                                         $locale_subdomain_assoc[ $locale ]->subdomain,
     130                                                        '<a href="https://%s%s%s/">%s</a>, ',
     131                                                        $locale_site_assoc[ $locale ]->domain,
    130132                                                        $current_site->path,
    131133                                                        $plugin_slug,
    132134                                                        $language
     
    136138                                        $suggest_string = sprintf(
    137139                                                $this->translate( 'This plugin is also available in %1$s (also: %2$s).', $primary_locale ),
    138140                                                sprintf(
    139                                                         '<a href="https://%s.wordpress.org%s%s/">%s</a>',
    140                                                         $locale_subdomain_assoc[ $primary_locale ]->subdomain,
     141                                                        '<a href="https://%s%s%s/">%s</a>',
     142                                                        $locale_site_assoc[ $primary_locale ]->domain,
    141143                                                        $current_site->path,
    142144                                                        $plugin_slug,
    143145                                                        $primary_language
     
    148150                                        $other_suggest = '';
    149151                                        foreach ( $suggest_named_locales as $locale => $language ) {
    150152                                                $other_suggest .= sprintf(
    151                                                         '<a href="https://%s.wordpress.org%s">%s</a>, ',
    152                                                         $locale_subdomain_assoc[ $locale ]->subdomain,
     153                                                        '<a href="https://%s%s">%s</a>, ',
     154                                                        $locale_site_assoc[ $locale ]->domain,
    153155                                                        $current_site->path,
    154156                                                        $language
    155157                                                );
     
    158160                                        $suggest_string = sprintf(
    159161                                                $this->translate( 'The plugin directory is also available in %1$s (also: %2$s).', $primary_locale ),
    160162                                                sprintf(
    161                                                         '<a href="https://%s.wordpress.org%s">%s</a>',
    162                                                         $locale_subdomain_assoc[ $primary_locale ]->subdomain,
     163                                                        '<a href="https://%s%s">%s</a>',
     164                                                        $locale_site_assoc[ $primary_locale ]->domain,
    163165                                                        $current_site->path,
    164166                                                        $primary_language
    165167                                                ),
     
    172174                } elseif ( ! $current_locale_is_suggested && ! $current_locale_is_translated && $is_plugin_request ) {
    173175                        $suggest_string = sprintf(
    174176                                $this->translate( 'This plugin is not available in %1$s yet. <a href="%2$s">Help translate it!</a>', $current_locale ),
    175                                 $this->get_native_language_name( $current_locale ),
     177                                $locale_sites_assoc[ $locale ]->blogname,
    176178                                esc_url( 'https://translate.wordpress.org/projects/wp-plugins/' . $plugin_slug )
    177179                        );
    178180                }
     
    339341
    340342                return isset( $translations[ $gp_locale ] ) ? $translations[ $gp_locale ] : $string;
    341343        }
    342 
    343         protected function get_native_language_name( $locale ) {
    344                 global $wpdb;
    345 
    346                 $slug = str_replace( '_', '-', $locale );
    347                 $slug = strtolower( $slug );
    348 
    349                 $name = $wpdb->get_var( $wpdb->prepare( 'SELECT name FROM languages WHERE slug = %s', $slug ) );
    350                 if ( ! $name ) {
    351                         $fallback_slug = explode( '-', $slug )[0]; // de-de => de
    352                         $name = $wpdb->get_var( $wpdb->prepare( 'SELECT name FROM languages WHERE slug = %s', $fallback_slug ) );
    353                         if ( $name ) {
    354                                 return $name;
    355                         }
    356                 } else {
    357                         return $name;
    358                 }
    359 
    360                 return '';
    361         }
    362344}
    363345
    364346// Strings for the POT file.