Ticket #29395: 29395.patch
| File 29395.patch, 9.3 KB (added by , 12 years ago) |
|---|
-
src/wp-admin/css/forms.css
761 761 margin: -3px 3px; 762 762 } 763 763 764 .settings-php .language-chooser .spinner, 765 .options-general-php .language-chooser .spinner { 766 float: none; 767 margin: 0 3px; 768 vertical-align: middle; 769 } 770 764 771 /* =Media Queries 765 772 -------------------------------------------------------------- */ 766 773 -
src/wp-admin/network/settings.php
10 10 /** Load WordPress Administration Bootstrap */ 11 11 require_once( dirname( __FILE__ ) . '/admin.php' ); 12 12 13 /** WordPress Translation Install API */ 14 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); 15 13 16 if ( ! is_multisite() ) 14 17 wp_die( __( 'Multisite support is not enabled.' ) ); 15 18 … … 19 22 $title = __( 'Network Settings' ); 20 23 $parent_file = 'settings.php'; 21 24 25 /** 26 * Display JavaScript on the page. 27 * 28 * @since 4.0.0 29 */ 30 function network_settings_add_js() { 31 ?> 32 <script type="text/javascript"> 33 jQuery(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 $( this ).find( '.language-chooser .spinner' ).css( 'display', 'inline-block' ); 40 } 41 }); 42 }); 43 </script> 44 <?php 45 } 46 add_action( 'admin_head', 'network_settings_add_js' ); 47 22 48 get_current_screen()->add_help_tab( array( 23 49 'id' => 'overview', 24 50 'title' => __('Overview'), … … 58 84 'illegal_names', 'limited_email_domains', 'banned_email_domains', 'WPLANG', 'admin_email', 59 85 ); 60 86 87 // Handle translation install 88 if ( ! empty( $_POST['WPLANG'] ) && ( ! defined( 'DISALLOW_FILE_MODS' ) || ! DISALLOW_FILE_MODS ) ) { 89 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); 90 91 $language = wp_download_language_pack( $_POST['WPLANG'] ); 92 if ( $language ) { 93 $_POST['WPLANG'] = $language; 94 } 95 } 96 61 97 foreach ( $options as $option_name ) { 62 98 if ( ! isset($_POST[$option_name]) ) 63 99 continue; … … 275 311 276 312 <?php 277 313 $languages = get_available_languages(); 278 if ( ! empty( $languages ) ) { 314 $translations = wp_get_available_translations(); 315 if ( ! empty( $languages ) || ! empty( $translations ) ) { 279 316 ?> 280 317 <h3><?php _e( 'Language Settings' ); ?></h3> 281 318 <table class="form-table"> … … 288 325 $lang = ''; 289 326 } 290 327 328 echo '<div class="language-chooser">'; 291 329 wp_dropdown_languages( array( 292 'name' => 'WPLANG', 293 'id' => 'WPLANG', 294 'selected' => $lang, 295 'languages' => $languages, 330 'name' => 'WPLANG', 331 'id' => 'WPLANG', 332 'selected' => $locale, 333 'languages' => $languages, 334 'translations' => $translations, 296 335 ) ); 336 echo '<span class="spinner"></span>'; 337 echo '</div>'; 297 338 ?> 298 339 </td> 299 340 </tr> -
src/wp-admin/options-general.php
9 9 /** WordPress Administration Bootstrap */ 10 10 require_once( dirname( __FILE__ ) . '/admin.php' ); 11 11 12 /** WordPress Translation Install API */ 13 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); 14 12 15 if ( ! current_user_can( 'manage_options' ) ) 13 16 wp_die( __( 'You do not have sufficient permissions to manage options for this site.' ) ); 14 17 … … 50 53 date : format.val() 51 54 }, function(d) { format.siblings('.spinner').hide(); format.siblings('.example').text(d); } ); 52 55 }); 56 57 var languageSelect = $( '#WPLANG' ); 58 $( 'form' ).submit( function() { 59 // Don't show a spinner for English and installed languages, 60 // as there is nothing to download. 61 if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) { 62 $( this ).find( '.language-chooser .spinner' ).css( 'display', 'inline-block' ); 63 } 64 }); 53 65 }); 54 66 //]]> 55 67 </script> … … 305 317 306 318 <?php 307 319 $languages = get_available_languages(); 308 if ( ! empty( $languages ) ) { 320 $translations = wp_get_available_translations(); 321 if ( ! empty( $languages ) || ! empty( $translations ) ) { 309 322 ?> 310 323 <tr> 311 324 <th width="33%" scope="row"><label for="WPLANG"><?php _e( 'Site Language' ); ?></label></th> … … 316 329 $locale = ''; 317 330 } 318 331 332 echo '<div class="language-chooser">'; 319 333 wp_dropdown_languages( array( 320 'name' => 'WPLANG', 321 'id' => 'WPLANG', 322 'selected' => $locale, 323 'languages' => $languages, 334 'name' => 'WPLANG', 335 'id' => 'WPLANG', 336 'selected' => $locale, 337 'languages' => $languages, 338 'translations' => $translations, 324 339 ) ); 340 echo '<span class="spinner"></span>'; 341 echo '</div>'; 325 342 326 343 // Add note about deprecated WPLANG constant. 327 344 if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && $locale !== WPLANG ) { -
src/wp-admin/options.php
151 151 $options = $whitelist_options[ $option_page ]; 152 152 } 153 153 154 // Handle custom date/time formats.155 154 if ( 'general' == $option_page ) { 155 // Handle custom date/time formats. 156 156 if ( !empty($_POST['date_format']) && isset($_POST['date_format_custom']) && '\c\u\s\t\o\m' == wp_unslash( $_POST['date_format'] ) ) 157 157 $_POST['date_format'] = $_POST['date_format_custom']; 158 158 if ( !empty($_POST['time_format']) && isset($_POST['time_format_custom']) && '\c\u\s\t\o\m' == wp_unslash( $_POST['time_format'] ) ) … … 163 163 $_POST['gmt_offset'] = preg_replace('/UTC\+?/', '', $_POST['gmt_offset']); 164 164 $_POST['timezone_string'] = ''; 165 165 } 166 167 // Handle translation install. 168 if ( 169 ! empty( $_POST['WPLANG'] ) && 170 ( ! is_multisite() || is_super_admin() ) && 171 ( ! defined( 'DISALLOW_FILE_MODS' ) || ! DISALLOW_FILE_MODS ) 172 ) { 173 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); 174 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); 175 176 $language = wp_download_language_pack( $_POST['WPLANG'] ); 177 if ( $language ) { 178 $_POST['WPLANG'] = $language; 179 } 180 } 166 181 } 167 182 168 183 if ( $options ) { -
src/wp-includes/l10n.php
845 845 * @param array $args Optional arguments. Default empty array. 846 846 */ 847 847 function wp_dropdown_languages( $args = array() ) { 848 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );849 848 850 849 $args = wp_parse_args( $args, array( 851 'id' => '', 852 'name' => '', 853 'languages' => array(), 854 'selected' => '' 850 'id' => '', 851 'name' => '', 852 'languages' => array(), 853 'translations' => array(), 854 'selected' => '' 855 855 ) ); 856 856 857 if ( empty( $args['languages'] ) ) { 858 return false; 857 $translations = $args['translations']; 858 if ( empty( $args['translations'] ) ) { 859 require_once( ABSPATH . 'wp-admin/includes/translation-install.php' ); 860 $translations = wp_get_available_translations(); 859 861 } 860 862 861 $translations = wp_get_available_translations();862 863 863 /* 864 864 * $args['languages'] should only contain the locales. Find the locale in 865 865 * $translations to get the native name. Fall back to locale. … … 882 882 } 883 883 } 884 884 885 // Remove installed languages from available translations. 886 $translations = array_diff_key( $translations, $languages ); 887 885 888 printf( '<select name="%s" id="%s">', esc_attr( $args['name'] ), esc_attr( $args['id'] ) ); 886 889 887 890 // List installed languages. 888 echo '<option value="" lang="en">English (United States)</option>'; 891 $structure[] = '<optgroup label="' . esc_attr_x( 'Installed', 'translations' ) . '">'; 892 $structure[] = '<option value="" lang="en" data-installed="1">English (United States)</option>'; 889 893 foreach ( $languages as $language ) { 890 894 $selected = selected( $language['language'], $args['selected'], false ); 891 printf(892 '<option value="%s" lang="%s"%s >%s</option>',895 $structure[] = sprintf( 896 '<option value="%s" lang="%s"%s data-installed="1">%s</option>', 893 897 esc_attr( $language['language'] ), 894 898 esc_attr( $language['lang'] ), 895 899 $selected, 896 900 esc_html( $language['native_name'] ) 897 901 ); 898 902 } 903 echo '</optgroup>'; 899 904 905 // List available translations. 906 if ( ! empty( $translations ) && ( ! is_multisite() || is_super_admin() ) && ( ! defined( 'DISALLOW_FILE_MODS' ) || ! DISALLOW_FILE_MODS ) ) { 907 $structure[] = '<optgroup label="' . esc_attr_x( 'Available', 'translations' ) . '">'; 908 foreach ( $translations as $translation ) { 909 $selected = selected( $translation['language'], $args['selected'], false ); 910 $structure[] = sprintf( 911 '<option value="%s" lang="%s"%s>%s</option>', 912 esc_attr( $translation['language'] ), 913 esc_attr( $translation['lang'] ), 914 $selected, 915 esc_html( $translation['native_name'] ) 916 ); 917 } 918 $structure[] = '</optgroup>'; 919 } 920 921 echo join( "\n", $structure ); 922 900 923 echo '</select>'; 901 924 }
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)