/var/www/(Del)hsihk.com/wp-admin/includes/translation-install.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
<?php
/**
 * WordPress Translation Install Administration API
 *
 * @package WordPress
 * @subpackage Administration
 */


/**
 * Retrieve translations from WordPress Translation API.
 *
 * @since 4.0.0
 *
 * @param string       $type Type of translations. Accepts 'plugins', 'themes', 'core'.
 * @param array|object $args Translation API arguments. Optional.
 * @return object|WP_Error On success an object of translations, WP_Error on failure.
 */
function translations_api$type$args null ) {
    include( 
ABSPATH WPINC '/version.php' ); // include an unmodified $wp_version

    
if ( ! in_array$type, array( 'plugins''themes''core' ) ) ) {
        return    new 
WP_Error'invalid_type'__'Invalid translation type.' ) );
    }

    
/**
     * Allows a plugin to override the WordPress.org Translation Install API entirely.
     *
     * @since 4.0.0
     *
     * @param bool|array  $result The result object. Default false.
     * @param string      $type   The type of translations being requested.
     * @param object      $args   Translation API arguments.
     */
    
$res apply_filters'translations_api'false$type$args );

    if ( 
false === $res ) {
        
$url $http_url 'http://api.wordpress.org/translations/' $type '/1.0/';
        if ( 
$ssl wp_http_supports( array( 'ssl' ) ) ) {
            
$url set_url_scheme$url'https' );
        }

        
$options = array(
            
'timeout' => 3,
            
'body' => array(
                
'wp_version' => $wp_version,
                
'locale'     => get_locale(),
                
'version'    => $args['version'], // Version of plugin, theme or core
            
),
        );

        if ( 
'core' !== $type ) {
            
$options['body']['slug'] = $args['slug']; // Plugin or theme slug
        
}

        
$request wp_remote_post$url$options );

        if ( 
$ssl && is_wp_error$request ) ) {
            
trigger_error__'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="https://wordpress.org/support/">support forums</a>.' ) . ' ' __'(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG E_USER_WARNING E_USER_NOTICE );

            
$request wp_remote_post$http_url$options );
        }

        if ( 
is_wp_error$request ) ) {
            
$res = new WP_Error'translations_api_failed'__'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="https://wordpress.org/support/">support forums</a>.' ), $request->get_error_message() );
        } else {
            
$res json_decodewp_remote_retrieve_body$request ), true );
            if ( ! 
is_object$res ) && ! is_array$res ) ) {
                
$res = new WP_Error'translations_api_failed'__'An unexpected error occurred. Something may be wrong with WordPress.org or this server&#8217;s configuration. If you continue to have problems, please try the <a href="https://wordpress.org/support/">support forums</a>.' ), wp_remote_retrieve_body$request ) );
            }
        }
    }

    
/**
     * Filter the Translation Install API response results.
     *
     * @since 4.0.0
     *
     * @param object|WP_Error $res  Response object or WP_Error.
     * @param string          $type The type of translations being requested.
     * @param object          $args Translation API arguments.
     */
    
return apply_filters'translations_api_result'$res$type$args );
}

/**
 * Get available translations from the WordPress.org API.
 *
 * @since 4.0.0
 *
 * @see translations_api()
 *
 * @return array Array of translations, each an array of data. If the API response results
 *               in an error, an empty array will be returned.
 */
function wp_get_available_translations() {
    if ( ! 
defined'WP_INSTALLING' ) && false !== ( $translations get_site_transient'available_translations' ) ) ) {
        return 
$translations;
    }

    include( 
ABSPATH WPINC '/version.php' ); // include an unmodified $wp_version

    
$api translations_api'core', array( 'version' => $wp_version ) );

    if ( 
is_wp_error$api ) || empty( $api['translations'] ) ) {
        return array();
    }

    
$translations = array();
    
// Key the array with the language code for now.
    
foreach ( $api['translations'] as $translation ) {
        
$translations$translation['language'] ] = $translation;
    }

    if ( ! 
defined'WP_INSTALLING' ) ) {
        
set_site_transient'available_translations'$translationsHOUR_IN_SECONDS );
    }

    return 
$translations;
}

/**
 * Output the select form for the language selection on the installation screen.
 *
 * @since 4.0.0
 *
 * @param array $languages Array of available languages (populated via the Translation API).
 */
function wp_install_language_form$languages ) {
    global 
$wp_local_package;

    
$installed_languages get_available_languages();

    echo 
"<label class='screen-reader-text' for='language'>Select a default language</label>\n";
    echo 
"<select size='14' name='language' id='language'>\n";
    echo 
'<option value="" lang="en" selected="selected" data-continue="Continue" data-installed="1">English (United States)</option>';
    echo 
"\n";

    if ( ! empty( 
$wp_local_package ) && isset( $languages$wp_local_package ] ) ) {
        if ( isset( 
$languages$wp_local_package ] ) ) {
            
$language $languages$wp_local_package ];
            
printf'<option value="%s" lang="%s" data-continue="%s"%s>%s</option>' "\n",
                
esc_attr$language['language'] ),
                
esc_attr$language['iso'][1] ),
                
esc_attr$language['strings']['continue'] ),
                
in_array$language['language'], $installed_languages ) ? ' data-installed="1"' '',
                
esc_html$language['native_name'] ) );

            unset( 
$languages$wp_local_package ] );
        }
    }

    foreach ( 
$languages as $language ) {
        
printf'<option value="%s" lang="%s" data-continue="%s"%s>%s</option>' "\n",
            
esc_attr$language['language'] ),
            
esc_attr$language['iso'][1] ),
            
esc_attr$language['strings']['continue'] ),
            
in_array$language['language'], $installed_languages ) ? ' data-installed="1"' '',
            
esc_html$language['native_name'] ) );
    }
    echo 
"</select>\n";
    echo 
'<p class="step"><span class="spinner"></span><input id="language-continue" type="submit" class="button button-primary button-large" value="Continue" /></p>';
}

/**
 * Download a language pack.
 *
 * @since 4.0.0
 *
 * @see wp_get_available_translations()
 *
 * @param string $download Language code to download.
 * @return string|bool Returns the language code if successfully downloaded
 *                     (or already installed), or false on failure.
 */
function wp_download_language_pack$download ) {
    
// Check if the translation is already installed.
    
if ( in_array$downloadget_available_languages() ) ) {
        return 
$download;
    }

    if ( 
defined'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS ) {
        return 
false;
    }

    
// Confirm the translation is one we can download.
    
$translations wp_get_available_translations();
    if ( ! 
$translations ) {
        return 
false;
    }
    foreach ( 
$translations as $translation ) {
        if ( 
$translation['language'] === $download ) {
            
$translation_to_load true;
            break;
        }
    }

    if ( empty( 
$translation_to_load ) ) {
        return 
false;
    }
    
$translation = (object) $translation;

    require_once 
ABSPATH 'wp-admin/includes/class-wp-upgrader.php';
    
$skin = new Automatic_Upgrader_Skin;
    
$upgrader = new Language_Pack_Upgrader$skin );
    
$translation->type 'core';
    
$result $upgrader->upgrade$translation, array( 'clear_update_cache' => false ) );

    if ( ! 
$result || is_wp_error$result ) ) {
        return 
false;
    }

    return 
$translation->language;
}

/**
 * Check if WordPress has access to the filesystem without asking for
 * credentials.
 *
 * @since 4.0.0
 *
 * @return bool Returns true on success, false on failure.
 */
function wp_can_install_language_pack() {
    if ( 
defined'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS ) {
        return 
false;
    }

    require_once 
ABSPATH 'wp-admin/includes/class-wp-upgrader.php';
    
$skin = new Automatic_Upgrader_Skin;
    
$upgrader = new Language_Pack_Upgrader$skin );

    
$check $upgrader->fs_connect( array( WP_CONTENT_DIRWP_LANG_DIR ) );

    if ( ! 
$check || is_wp_error$check ) ) {
        return 
false;
    }

    return 
true;
}