/var/www/html_it/wp-content/plugins/loco-translate/src/gettext/PhpCache.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
<?php
/**
 * This saves the overhead of parsing a MO file when we already have it in memory,
 * but lets us use WordPress's compact var_export utility so its files are identical to ours.
 */
class Loco_gettext_PhpCache extends WP_Translation_File_PHP {

    
/**
     * @return string
     */
    
public static function renderLoco_gettext_Data $po ){
        
$me = new Loco_gettext_PhpCache('');
        
$me->headers self::exportHeaders($po);
        
$me->entries self::exportEntries($po);
        
// TODO support Loco_data_Settings::get()->php_pretty
        
return $me->export();
    }


    private static function 
exportHeadersLoco_gettext_Data $po ){
        
$a = [];
        foreach( 
$po->getHeaders() as $key => $value ){
            
$astrtolower($key) ] = (string) $value;
        }
        return 
$a;
    }


    private static function 
exportEntriesLoco_gettext_Data $po ){
        
$a = [];
        
$skip_fuzzy = ! Loco_data_Settings::get()->use_fuzzy;
        
// $max = preg_match('/^nplurals=(\\d)/',$po->getHeaders()->offsetGet('plural-forms'),$r) ? $r[1] : 0;
        /* @var LocoPoMessage $message */
        
foreach( $po as $message ){
            if( 
$skip_fuzzy && === $message->__get('flag') ){
                continue;
            }
            
// Like JED, we must follow MO sparseness. Else empty strings will be merged on top of translations.
            // TODO what should we do about partial completion of pluralized messages? 
            
if( $message->translated() ) {
                
$a$message->getKey() ] = implode"\0"$message->exportSerial() );
            }
        }
        return 
$a;
    }


    
/*private function prettyExport() {
        return '<?php' . PHP_EOL . 'return ' . var_export($this->headers + ['messages'=>$this->entries],true) . ';' . PHP_EOL;
    }*/
    
    
    
}