WordPress.org

Make WordPress Core

Ticket #32052: 04222015-1020_mo_caching.diff

File 04222015-1020_mo_caching.diff, 1.1 KB (added by nicofuma, 4 years ago)

proposal

  • src/wp-includes/pomo/mo.php

    diff --git src/wp-includes/pomo/mo.php src/wp-includes/pomo/mo.php
    index e8eecc1..668fe0c 100644
    class MO extends Gettext_Translations { 
    1919         * Fills up with the entries from MO file $filename
    2020         *
    2121         * @param string $filename MO file to load
     22         * @return boolean
    2223         */
    2324        function import_from_file($filename) {
    24                 $reader = new POMO_FileReader($filename);
    25                 if (!$reader->is_resource())
    26                         return false;
    27                 return $this->import_from_reader($reader);
     25                $data = wp_cache_get($filename, 'translation.mo');
     26                $mtime = filemtime($filename);
     27
     28                if ($mtime > $data['mtime'] || !$data) {
     29                        $reader = new POMO_FileReader($filename);
     30                        if (!$reader->is_resource())
     31                                return false;
     32                        $result = $this->import_from_reader($reader);
     33
     34                        if ($result) {
     35                                wp_cache_set($filename, array(
     36                                        'mtime' => $mtime,
     37                                        'entries' => $this->entries,
     38                                        'headers' => $this->headers), 'translation.mo');
     39                        }
     40
     41                        return $result;
     42                } else {
     43                        $this->entries = $data['entries'];
     44                        $this->headers = $data['headers'];
     45
     46                        return true;
     47                }
    2848        }
    2949
    3050        function export_to_file($filename) {