Make WordPress Core


Ignore:
Timestamp:
07/05/2014 05:13:05 AM (12 years ago)
Author:
nacin
Message:

Bring the language chooser to setup-config.php.

see #28577.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/upgrade.php

    r28774 r29006  
    21592159}
    21602160endif;
     2161
     2162function wp_install_language_form( $body ) {
     2163        echo "<fieldset>\n";
     2164        echo "<legend class='screen-reader-text'>Select a default language</legend>\n";
     2165        echo '<input type="radio" checked="checked" class="screen-reader-input" name="language" id="language_default" value="">';
     2166        echo '<label for="language_default">English (United States)</label>';
     2167        echo "\n";
     2168
     2169        if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && ( 'en_US' !== WPLANG ) ) {
     2170                if ( isset( $body['languages'][WPLANG] ) ) {
     2171                        $language = $body['languages'][WPLANG];
     2172                        echo '<input type="radio" name="language" checked="checked" class="' . esc_attr( $language['language'] ) . ' screen-reader-input" id="language_wplang" value="' . esc_attr( $language['language'] ) . '">';
     2173                        echo '<label for="language_wplang">' . esc_html( $language['native_name'] ) . "</label>\n";
     2174                }
     2175        }
     2176
     2177        foreach ( $body['languages'] as $language ) {
     2178                echo '<input type="radio" name="language" class="' . esc_attr( $language['language'] ) . ' screen-reader-input" id="language_'. esc_attr( $language['language'] ) .'" value="' . esc_attr( $language['language'] ) . '">';
     2179                echo '<label for="language_' . esc_attr( $language['language'] ) . '">' . esc_html( $language['native_name'] ) . "</label>\n";
     2180        }
     2181        echo "</fieldset>\n";
     2182        echo '<p class="step"><input type="submit" class="button button-primary button-hero" value="&raquo;" /></p>';
     2183}
     2184
     2185/**
     2186 * @todo rename, move
     2187 */
     2188function wp_get_available_translations() {
     2189        $url = 'http://api.wordpress.org/translations/core/1.0/';
     2190        if ( wp_http_supports( array( 'ssl' ) ) ) {
     2191                $url = set_url_scheme( $url, 'https' );
     2192        }
     2193
     2194        $options = array(
     2195                'timeout' => 3,
     2196                'body' => array( 'version' => $GLOBALS['wp_version'] ),
     2197        );
     2198
     2199        $response = wp_remote_post( $url, $options );
     2200        $body = wp_remote_retrieve_body( $response );
     2201        if ( $body && $body = json_decode( $body, true ) ) {
     2202                $languages = array();
     2203                // Key the language array with the language code
     2204                foreach ( $body['languages'] as $language ) {
     2205                        $languages[$language['language']] = $language;
     2206                }
     2207                $body['languages'] = $languages;
     2208                return $body;
     2209        }
     2210        return false;
     2211}
     2212
     2213function wp_install_download_language_pack( $language ) {
     2214        // Check if the language is already installed.
     2215        $available_languages = get_available_languages();
     2216        if ( in_array( $language->language, $available_languages ) ) {
     2217                return $language->language;
     2218        }
     2219
     2220        // Confirm the language is one we can download.
     2221        $body = wp_get_available_translations();
     2222        $loading_language = false;
     2223        if ( $body ) {
     2224                foreach ( $body['languages'] as $language ) {
     2225                        if ( $language['language'] === $_REQUEST['language'] ) {
     2226                                $loading_language = $_REQUEST['language'];
     2227                                break;
     2228                        }
     2229                }
     2230        }
     2231
     2232        if ( ! $loading_language ) {
     2233                return false;
     2234        }
     2235        $language = (object) $language;
     2236
     2237        require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
     2238        $skin = new Automatic_Upgrader_Skin;
     2239        $upgrader = new Language_Pack_Upgrader( $skin );
     2240        $options = array( 'clear_update_cache' => false );
     2241        $language->type = 'core';
     2242        /**
     2243         * @todo failures (such as non-direct FS)
     2244         */
     2245        $upgrader->upgrade( $language, array( 'clear_update_cache' => false ) );
     2246        return $language->language;
     2247}
     2248
     2249function wp_install_load_language( $request ) {
     2250        $loading_language = '';
     2251        if ( ! empty( $request ) ) {
     2252                $available_languages = get_available_languages();
     2253                if ( in_array( $request, $available_languages ) ) {
     2254                        $loading_language = $request;
     2255                }
     2256        }
     2257
     2258        if ( $loading_language ) {
     2259                load_textdomain( 'default', WP_LANG_DIR . "/{$loading_language}.mo" );
     2260                load_textdomain( 'default', WP_LANG_DIR . "/admin-{$loading_language}.mo" );
     2261                return $loading_language;
     2262        }
     2263
     2264        return false;
     2265}
Note: See TracChangeset for help on using the changeset viewer.