Make WordPress Core


Ignore:
Timestamp:
11/13/2014 05:00:08 PM (11 years ago)
Author:
ocean90
Message:

Site Language: Install translations on the fly.

The language dropdown now includes installed languages and all available translations when the filesystem is writable by WordPress.
Go to wp-admin/options-general.php, select one of the available translations, submit the form and let WordPress handle the rest.
Works for Multisite's Default Language too.

see #29395.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/network/settings.php

    r29718 r30335  
    1111require_once( dirname( __FILE__ ) . '/admin.php' );
    1212
     13/** WordPress Translation Install API */
     14require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
     15
    1316if ( ! is_multisite() )
    1417    wp_die( __( 'Multisite support is not enabled.' ) );
     
    1922$title = __( 'Network Settings' );
    2023$parent_file = 'settings.php';
     24
     25/**
     26 * Display JavaScript on the page.
     27 *
     28 * @since 4.1.0
     29*/
     30function network_settings_add_js() {
     31?>
     32<script type="text/javascript">
     33jQuery(document).ready( function($) {
     34    var languageSelect = $( '#WPLANG' );
     35    $( 'form' ).submit( function() {
     36        // Don't show a spinner for English and installed languages,
     37        // as there is nothing to download.
     38        if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
     39            $( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
     40        }
     41    });
     42});
     43</script>
     44<?php
     45}
     46add_action( 'admin_head', 'network_settings_add_js' );
    2147
    2248get_current_screen()->add_help_tab( array(
     
    5985    );
    6086
     87    // Handle translation install.
     88    if ( ! empty( $_POST['WPLANG'] ) && wp_can_install_language_pack() ) {  // @todo: Skip if already installed
     89        $language = wp_download_language_pack( $_POST['WPLANG'] );
     90        if ( $language ) {
     91            $_POST['WPLANG'] = $language;
     92        }
     93    }
     94
    6195    foreach ( $options as $option_name ) {
    6296        if ( ! isset($_POST[$option_name]) )
     
    276310        <?php
    277311        $languages = get_available_languages();
    278         if ( ! empty( $languages ) ) {
     312        $translations = wp_get_available_translations();
     313        if ( ! empty( $languages ) || ! empty( $translations ) ) {
    279314            ?>
    280315            <h3><?php _e( 'Language Settings' ); ?></h3>
     
    290325
    291326                        wp_dropdown_languages( array(
    292                             'name'      => 'WPLANG',
    293                             'id'        => 'WPLANG',
    294                             'selected'  => $lang,
    295                             'languages' => $languages,
     327                            'name'         => 'WPLANG',
     328                            'id'           => 'WPLANG',
     329                            'selected'     => $lang,
     330                            'languages'    => $languages,
     331                            'translations' => $translations,
     332                            'show_available_translations' => wp_can_install_language_pack(),
    296333                        ) );
    297334                        ?>
Note: See TracChangeset for help on using the changeset viewer.