Send back core translation information to the API. Update wp_get_installed_translations() to work with core translations. see #18200.

git-svn-id: https://develop.svn.wordpress.org/trunk@25652 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Nacin 2013-09-30 19:46:15 +00:00
parent 6d29f14560
commit 85c8f3c68f
2 changed files with 24 additions and 8 deletions

View File

@ -745,17 +745,22 @@ function get_available_languages( $dir = null ) {
* *
* @since 3.7.0 * @since 3.7.0
* *
* @param string $type What to search for. Accepts 'plugins', 'themes'. * @param string $type What to search for. Accepts 'plugins', 'themes', 'core'.
* @return array Array of language data. * @return array Array of language data.
*/ */
function wp_get_installed_translations( $type ) { function wp_get_installed_translations( $type ) {
if ( $type !== 'themes' && $type !== 'plugins' ) if ( $type !== 'themes' && $type !== 'plugins' && $type !== 'core' )
return array(); return array();
if ( ! is_dir( WP_LANG_DIR ) || ! is_dir( WP_LANG_DIR . "/$type" ) ) $dir = 'core' === $type ? '' : "/$type";
if ( ! is_dir( WP_LANG_DIR ) )
return array(); return array();
$files = scandir( WP_LANG_DIR . "/$type" ); if ( $dir && ! is_dir( WP_LANG_DIR . $dir ) )
return array();
$files = scandir( WP_LANG_DIR . $dir );
if ( ! $files ) if ( ! $files )
return array(); return array();
@ -766,11 +771,13 @@ function wp_get_installed_translations( $type ) {
continue; continue;
if ( substr( $file, -3 ) !== '.po' ) if ( substr( $file, -3 ) !== '.po' )
continue; continue;
if ( ! preg_match( '/(.*)-([A-Za-z_]{2,6}).po/', $file, $match ) ) if ( ! preg_match( '/(?:(.+)-)?([A-Za-z_]{2,6}).po/', $file, $match ) )
continue; continue;
list( , $textdomain, $language ) = $match; list( , $textdomain, $language ) = $match;
$language_data[ $textdomain ][ $language ] = wp_get_pomo_file_data( WP_LANG_DIR . "/$type/$file" ); if ( '' === $textdomain )
$textdomain = 'default';
$language_data[ $textdomain ][ $language ] = wp_get_pomo_file_data( WP_LANG_DIR . "$dir/$file" );
} }
return $language_data; return $language_data;
} }

View File

@ -28,6 +28,8 @@ function wp_version_check() {
$php_version = phpversion(); $php_version = phpversion();
$current = get_site_transient( 'update_core' ); $current = get_site_transient( 'update_core' );
$translations = wp_get_installed_translations( 'core' );
if ( ! is_object($current) ) { if ( ! is_object($current) ) {
$current = new stdClass; $current = new stdClass;
$current->updates = array(); $current->updates = array();
@ -85,10 +87,13 @@ function wp_version_check() {
'headers' => array( 'headers' => array(
'wp_install' => $wp_install, 'wp_install' => $wp_install,
'wp_blog' => home_url( '/' ) 'wp_blog' => home_url( '/' )
) ),
'body' => array(
'translations' => json_encode( $translations ),
),
); );
$response = wp_remote_get($url, $options); $response = wp_remote_post( $url, $options );
if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) )
return false; return false;
@ -119,6 +124,10 @@ function wp_version_check() {
$updates->updates = $offers; $updates->updates = $offers;
$updates->last_checked = time(); $updates->last_checked = time();
$updates->version_checked = $wp_version; $updates->version_checked = $wp_version;
if ( isset( $body['translations'] ) )
$updates->translations = $body['translations'];
set_site_transient( 'update_core', $updates); set_site_transient( 'update_core', $updates);
} }