Changeset 19029


Ignore:
Timestamp:
01/25/12 18:36:29 (3 years ago)
Author:
ryan
Message:

Split WP pot into frontend, admin, and network admin pots. see #WP19852

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/trunk/makepot.php

    r18823 r19029  
    1313        var $projects = array( 
    1414                'generic', 
     15                'wp-frontend', 
     16                'wp-admin', 
     17                'wp-network-admin', 
    1518                'wp-core', 
    1619                'wp-ms', 
     
    5861                ), 
    5962                'generic' => array(), 
     63                'wp-frontend' => array( 
     64                        'description' => 'Translation of frontend strings in WordPress {version}', 
     65                        'copyright-holder' => 'WordPress', 
     66                        'package-name' => 'WordPress', 
     67                        'package-version' => '{version}', 
     68                ), 
     69                'wp-admin' => array( 
     70                        'description' => 'Translation of site admin strings in WordPress {version}', 
     71                        'copyright-holder' => 'WordPress', 
     72                        'package-name' => 'WordPress', 
     73                        'package-version' => '{version}', 
     74                ), 
     75                'wp-network-admin' => array( 
     76                        'description' => 'Translation of network admin strings in WordPress {version}', 
     77                        'copyright-holder' => 'WordPress', 
     78                        'package-name' => 'WordPress', 
     79                        'package-version' => '{version}', 
     80                ), 
    6081                'wp-core' => array( 
    6182                        'description' => 'Translation of WordPress {version}', 
     
    186207 
    187208        function wp_core($dir, $output) { 
     209                if ( !file_exists( "$dir/wp-admin/user/about.php" ) ) { 
     210                        // WP 3.3 or earlier. 
     211                        return $this->wp_generic( $dir, array( 
     212                                'project' => 'wp-core', 'output' => $output, 
     213                        ) ); 
     214                } else { 
     215                        // WP 3.4 and later 
     216                        // @todo check returns 
     217                        $this->wp_frontend($dir, $output); 
     218                        $this->wp_admin($dir, null); 
     219                        $this->wp_network_admin($dir, null); 
     220                } 
     221        } 
     222 
     223        function wp_frontend($dir, $output) { 
    188224                return $this->wp_generic( $dir, array( 
    189                         'project' => 'wp-core', 'output' => $output, 
     225                        'project' => 'wp-frontend', 'output' => $output, 
     226                        'includes' => array(), 'excludes' => array( 'wp-admin/.*', 'wp-content/themes/twentyten/.*', 'wp-content/themes/twentyeleven/.*' ), 
     227                        'default_output' => 'wordpress.pot', 
     228                        'extract_not_gettexted' => false, 
    190229                ) ); 
    191230        } 
    192231 
     232        function wp_admin($dir, $output) { 
     233                $frontend_pot = tempnam( sys_get_temp_dir(), 'frontend.pot'); 
     234                if ( false === $frontend_pot ) return false; 
     235 
     236                $frontend_result = $this->wp_frontend( $dir, $frontend_pot ); 
     237                if ( ! $frontend_result ) { 
     238                        unlink( $frontend_pot ); 
     239                        return false; 
     240                } 
     241 
     242                $result = $this->wp_generic( $dir, array( 
     243                        'project' => 'wp-admin', 'output' => $output, 
     244                        'includes' => array( 'wp-admin/.*' ), 'excludes' => array( 'wp-admin/includes/continents-cities\.php', 'wp-admin/network/.*' ), 
     245                        'default_output' => 'wordpress-admin.pot', 
     246                        'extract_not_gettexted' => false, 
     247                ) ); 
     248 
     249                if ( ! $result ) { 
     250                        return false; 
     251                } 
     252 
     253                $common_pot = tempnam( sys_get_temp_dir(), 'common.pot' ); 
     254                if ( ! $common_pot ) { 
     255                        unlink( $frontend_pot ); 
     256                        return false; 
     257                } 
     258                $admin_pot = realpath( is_null( $output ) ? 'wordpress-admin.pot' : $output ); 
     259                system( "msgcat --more-than=1 --use-first $frontend_pot $admin_pot > $common_pot" ); 
     260                system( "msgcat -u --use-first $admin_pot $common_pot -o $admin_pot" ); 
     261                return true; 
     262        } 
     263 
     264        function wp_network_admin($dir, $output) { 
     265                $frontend_pot = tempnam( sys_get_temp_dir(), 'frontend.pot'); 
     266                if ( false === $frontend_pot ) return false; 
     267 
     268                $frontend_result = $this->wp_frontend( $dir, $frontend_pot ); 
     269                if ( ! $frontend_result ) { 
     270                        unlink( $frontend_pot ); 
     271                        return false; 
     272                } 
     273 
     274                $admin_pot = tempnam( sys_get_temp_dir(), 'admin.pot'); 
     275                if ( false === $admin_pot ) return false; 
     276 
     277                $admin_result = $this->wp_admin( $dir, $admin_pot ); 
     278                if ( ! $admin_result ) { 
     279                        unlink( $admin_pot ); 
     280                        return false; 
     281                } 
     282 
     283                $result = $this->wp_generic( $dir, array( 
     284                        'project' => 'wp-network-admin', 'output' => $output, 
     285                        'includes' => array( 'wp-admin/network/.*' ), 'excludes' => array(), 
     286                        'default_output' => 'wordpress-network-admin.pot', 
     287                        'extract_not_gettexted' => false, 
     288                ) ); 
     289 
     290                if ( ! $result ) { 
     291                        return false; 
     292                } 
     293 
     294                $common_pot = tempnam( sys_get_temp_dir(), 'common.pot' ); 
     295                if ( ! $common_pot ) { 
     296                        unlink( $admin_pot ); 
     297                        unlink( $frontend_pot ); 
     298                        return false; 
     299                } 
     300 
     301                $net_admin_pot = realpath( is_null( $output ) ? 'wordpress-network-admin.pot' : $output ); 
     302                system( "msgcat --more-than=1 --use-first $frontend_pot $admin_pot $net_admin_pot > $common_pot" ); 
     303                system( "msgcat -u --use-first $net_admin_pot $common_pot -o $net_admin_pot" ); 
     304                return true; 
     305        } 
     306 
    193307        function wp_ms($dir, $output) { 
     308                if ( file_exists( "$dir/wp-admin/user/about.php" ) ) return false; 
    194309                if ( !is_file("$dir/wp-admin/ms-users.php") ) return false; 
    195310                $core_pot = tempnam( sys_get_temp_dir(), 'wordpress.pot'); 
Note: See TracChangeset for help on using the changeset viewer.