Making WordPress.org

Changeset 6941


Ignore:
Timestamp:
03/27/2018 07:07:38 PM (8 years ago)
Author:
coreymckrill
Message:

WP15: Add functions and assets for locale switcher

Location:
sites/trunk/wp15.wordpress.net/public_html/content/mu-plugins
Files:
66 added
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wp15.wordpress.net/public_html/content/mu-plugins/locales.php

    r6936 r6941  
    1212defined( 'WPINC' ) or die();
    1313
     14use GP_Locales;
     15
    1416require_once trailingslashit( dirname( __FILE__ ) ) . 'locale-detection/locale-detection.php';
    15 require_once trailingslashit( dirname( __FILE__ ) ) . 'locales/locales.php';
     17
     18/**
     19 * Register style and script assets for later enqueueing.
     20 */
     21function register_assets() {
     22    // Locale switcher script.
     23    wp_register_script(
     24        'locale-switcher',
     25        WP_CONTENT_URL . '/mu-plugins/assets/locale-switcher.js',
     26        array( 'jquery', 'select2' ),
     27        1,
     28        true
     29    );
     30
     31    wp_localize_script(
     32        'locale-switcher',
     33        'WP15LocaleSwitcher',
     34        array(
     35            'locale' => get_locale(),
     36            'dir'    => is_rtl() ? 'rtl' : 'ltr',
     37        )
     38    );
     39}
     40
     41add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\register_assets' );
     42
     43/**
     44 * Retreives all avaiable locales with their native names.
     45 *
     46 * See https://meta.trac.wordpress.org/browser/sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-login/functions.php#L150
     47 *
     48 * @return array Locales with their native names.
     49 */
     50function get_locales() {
     51    wp_cache_add_global_groups( [ 'locale-associations' ] );
     52
     53    $wp_locales = wp_cache_get( 'locale-list', 'locale-associations' );
     54    if ( false === $wp_locales ) {
     55        $wp_locales = (array) $GLOBALS['wpdb']->get_col( 'SELECT locale FROM wporg_locales' );
     56        wp_cache_set( 'locale-list', $wp_locales, 'locale-associations' );
     57    }
     58
     59    $wp_locales[] = 'en_US';
     60
     61    require_once trailingslashit( dirname( __FILE__ ) ) . 'locales/locales.php';
     62
     63    $locales = [];
     64
     65    foreach ( $wp_locales as $locale ) {
     66        $gp_locale = GP_Locales::by_field( 'wp_locale', $locale );
     67        if ( ! $gp_locale ) {
     68            continue;
     69        }
     70
     71        $locales[ $locale ] = $gp_locale->native_name;
     72    }
     73
     74    natsort( $locales );
     75
     76    return $locales;
     77}
     78
     79/**
     80 * Prints markup for a simple language switcher.
     81 *
     82 * See https://meta.trac.wordpress.org/browser/sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-login/functions.php#L184
     83 */
     84function locale_switcher() {
     85    $current_locale = get_locale();
     86
     87    ?>
     88    <div class="wp15-locale-switcher-container">
     89        <form id="wp15-locale-switcher-form" action="" method="GET">
     90            <label for="wp15-locale-switcher">
     91                <span aria-hidden="true" class="dashicons dashicons-translation"></span>
     92                <span class="screen-reader-text"><?php _e( 'Select the language:', 'wp15' ); ?></span>
     93            </label>
     94            <select id="wp15-locale-switcher" name="locale">
     95                <?php
     96                foreach ( get_locales() as $locale => $locale_name ) {
     97                    printf(
     98                        '<option value="%s"%s>%s</option>',
     99                        esc_attr( $locale ),
     100                        selected( $locale, $current_locale, false ),
     101                        esc_html( $locale_name )
     102                    );
     103                }
     104                ?>
     105            </select>
     106        </form>
     107        <?php //todo Add blurb about submitting missing translations? ?>
     108    </div>
     109    <?php
     110
     111    wp_enqueue_script( 'locale-switcher' );
     112}
  • sites/trunk/wp15.wordpress.net/public_html/content/mu-plugins/miscellaneous.php

    r6891 r6941  
    1717add_filter( 'tggr_end_date', __NAMESPACE__ . '\set_tagregator_cutoff_date' );
    1818add_filter( 'wp15_update_pomo_files', __NAMESPACE__ . '\update_pomo_files' );
     19add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\register_assets', 1 );
     20add_action( 'admin_enqueue_scripts', __NAMESPACE__ . '\register_assets', 1 );
    1921
    2022if ( ! wp_next_scheduled( 'wp15_update_pomo_files' ) ) {
     
    9597    }
    9698}
     99
     100/**
     101 * Register style and script assets for later enqueueing.
     102 */
     103function register_assets() {
     104    // Select2 styles.
     105    wp_register_style(
     106        'select2',
     107        WP_CONTENT_URL . '/mu-plugins/assets/select2/css/select2.min.css',
     108        array(),
     109        '4.0.5'
     110    );
     111
     112    // Select2 script.
     113    wp_register_script(
     114        'select2',
     115        WP_CONTENT_URL . '/mu-plugins/assets/select2/js/select2.js',
     116        array(),
     117        '4.0.5',
     118        true
     119    );
     120}
Note: See TracChangeset for help on using the changeset viewer.