浏览代码

Start of integrating different languages

Andrew Collington 3 年之前
父节点
当前提交
57afb1982c
共有 3 个文件被更改,包括 99 次插入78 次删除
  1. 1 1
      build/_frontend/interface.jsx
  2. 19 17
      build/template.phps
  3. 79 60
      src/Opcache/Service.php

+ 1 - 1
build/_frontend/interface.jsx

@@ -833,7 +833,7 @@ class CachedFile extends React.Component {
                     <span className="file-metainfo">
                     <span className="file-metainfo">
                         <b>hits: </b><span>{this.props.readable.hits}, </span>
                         <b>hits: </b><span>{this.props.readable.hits}, </span>
                         <b>memory: </b><span>{this.props.readable.memory_consumption}, </span>
                         <b>memory: </b><span>{this.props.readable.memory_consumption}, </span>
-                        { this.props.last_modified && <span><b>last modified: </b><span>{this.props.last_modified}, </span></span> }
+                        { this.props.last_modified && <><b>last modified: </b><span>{this.props.last_modified}, </span></> }
                         <b>last used: </b><span>{this.props.last_used}</span>
                         <b>last used: </b><span>{this.props.last_used}</span>
                     </span>
                     </span>
                     { !this.props.timestamp && <span className="invalid file-metainfo"> - has been invalidated</span> }
                     { !this.props.timestamp && <span className="invalid file-metainfo"> - has been invalidated</span> }

+ 19 - 17
build/template.phps

@@ -20,24 +20,26 @@ namespace Amnuts\Opcache;
  */
  */
 
 
 $options = [
 $options = [
-    'allow_filelist'   => true,          // show/hide the files tab
-    'allow_invalidate' => true,          // give a link to invalidate files
-    'allow_reset'      => true,          // give option to reset the whole cache
-    'allow_realtime'   => true,          // give option to enable/disable real-time updates
-    'refresh_time'     => 5,             // how often the data will refresh, in seconds
-    'size_precision'   => 2,             // Digits after decimal point
-    'size_space'       => false,         // have '1MB' or '1 MB' when showing sizes
-    'charts'           => true,          // show gauge chart or just big numbers
-    'debounce_rate'    => 250,           // milliseconds after key press to send keyup event when filtering
-    'per_page'         => 200,           // How many results per page to show in the file list, false for no pagination
-    'cookie_name'      => 'opcachegui',  // name of cookie
-    'cookie_ttl'       => 365,           // days to store cookie
+    'allow_filelist'   => true,                // show/hide the files tab
+    'allow_invalidate' => true,                // give a link to invalidate files
+    'allow_reset'      => true,                // give option to reset the whole cache
+    'allow_realtime'   => true,                // give option to enable/disable real-time updates
+    'refresh_time'     => 5,                   // how often the data will refresh, in seconds
+    'size_precision'   => 2,                   // Digits after decimal point
+    'size_space'       => false,               // have '1MB' or '1 MB' when showing sizes
+    'charts'           => true,                // show gauge chart or just big numbers
+    'debounce_rate'    => 250,                 // milliseconds after key press to send keyup event when filtering
+    'per_page'         => 200,                 // How many results per page to show in the file list, false for no pagination
+    'cookie_name'      => 'opcachegui',        // name of cookie
+    'cookie_ttl'       => 365,                 // days to store cookie
+    'datetime_format'  => 'D, d M Y H:i:s O',  // Show datetime in this format
     'highlight'        => [
     'highlight'        => [
-        'memory' => true,                // show the memory chart/big number
-        'hits'   => true,                // show the hit rate chart/big number
-        'keys'   => true,                // show the keys used chart/big number
-        'jit'    => true                 // show the jit buffer chart/big number
-    ]
+        'memory' => true,                      // show the memory chart/big number
+        'hits'   => true,                      // show the hit rate chart/big number
+        'keys'   => true,                      // show the keys used chart/big number
+        'jit'    => true                       // show the jit buffer chart/big number
+    ],
+    'language_pack'    => null                 // json structure of all text strings used, or null for default
 ];
 ];
 
 
 /*
 /*

+ 79 - 60
src/Opcache/Service.php

@@ -14,6 +14,12 @@ class Service
     protected $data;
     protected $data;
     protected $options;
     protected $options;
     protected $optimizationLevels;
     protected $optimizationLevels;
+    protected $jitModes;
+    protected $jitModeMapping = [
+        'tracing' => 1254,
+        'on' => 1254,
+        'function' => 1205
+    ];
     protected $defaults = [
     protected $defaults = [
         'allow_filelist'   => true,                // show/hide the files tab
         'allow_filelist'   => true,                // show/hide the files tab
         'allow_invalidate' => true,                // give a link to invalidate files
         'allow_invalidate' => true,                // give a link to invalidate files
@@ -33,51 +39,8 @@ class Service
             'hits'   => true,                      // show the hit rate chart/big number
             'hits'   => true,                      // show the hit rate chart/big number
             'keys'   => true,                      // show the keys used chart/big number
             'keys'   => true,                      // show the keys used chart/big number
             'jit'    => true                       // show the jit buffer chart/big number
             'jit'    => true                       // show the jit buffer chart/big number
-        ]
-    ];
-    protected $jitModes = [
-        [
-            'flag' => 'CPU-specific optimization',
-            'value' => [
-                'Disable CPU-specific optimization',
-                'Enable use of AVX, if the CPU supports it'
-            ]
-        ],
-        [
-            'flag' => 'Register allocation',
-            'value' => [
-                'Do not perform register allocation',
-                'Perform block-local register allocation',
-                'Perform global register allocation'
-            ]
         ],
         ],
-        [
-            'flag' => 'Trigger',
-            'value' => [
-                'Compile all functions on script load',
-                'Compile functions on first execution',
-                'Profile functions on first request and compile the hottest functions afterwards',
-                'Profile on the fly and compile hot functions',
-                'Currently unused',
-                'Use tracing JIT. Profile on the fly and compile traces for hot code segments'
-            ]
-        ],
-        [
-            'flag' => 'Optimization level',
-            'value' => [
-                'No JIT',
-                'Minimal JIT (call standard VM handlers)',
-                'Inline VM handlers',
-                'Use type inference',
-                'Use call graph',
-                'Optimize whole script'
-            ]
-        ]
-    ];
-    protected $jitModeMapping = [
-        'tracing' => 1254,
-        'on' => 1254,
-        'function' => 1205
+        'language_pack'    => null                 // json structure of all text strings used, or null for default
     ];
     ];
 
 
     /**
     /**
@@ -88,28 +51,84 @@ class Service
     public function __construct(array $options = [])
     public function __construct(array $options = [])
     {
     {
         $this->optimizationLevels = [
         $this->optimizationLevels = [
-            1 << 0 => 'CSE, STRING construction',
-            1 << 1 => 'Constant conversion and jumps',
-            1 << 2 => '++, +=, series of jumps',
-            1 << 3 => 'INIT_FCALL_BY_NAME -> DO_FCALL',
-            1 << 4 => 'CFG based optimization',
-            1 << 5 => 'DFA based optimization',
-            1 << 6 => 'CALL GRAPH optimization',
-            1 << 7 => 'SCCP (constant propagation)',
-            1 << 8 => 'TMP VAR usage',
-            1 << 9 => 'NOP removal',
-            1 << 10 => 'Merge equal constants',
-            1 << 11 => 'Adjust used stack',
-            1 << 12 => 'Remove unused variables',
-            1 << 13 => 'DCE (dead code elimination)',
-            1 << 14 => '(unsafe) Collect constants',
-            1 << 15 => 'Inline functions'
+            1 << 0  => $this->txt('CSE, STRING construction'),
+            1 << 1  => $this->txt('Constant conversion and jumps'),
+            1 << 2  => $this->txt('++, +=, series of jumps'),
+            1 << 3  => $this->txt('INIT_FCALL_BY_NAME -> DO_FCALL'),
+            1 << 4  => $this->txt('CFG based optimization'),
+            1 << 5  => $this->txt('DFA based optimization'),
+            1 << 6  => $this->txt('CALL GRAPH optimization'),
+            1 << 7  => $this->txt('SCCP (constant propagation)'),
+            1 << 8  => $this->txt('TMP VAR usage'),
+            1 << 9  => $this->txt('NOP removal'),
+            1 << 10 => $this->txt('Merge equal constants'),
+            1 << 11 => $this->txt('Adjust used stack'),
+            1 << 12 => $this->txt('Remove unused variables'),
+            1 << 13 => $this->txt('DCE (dead code elimination)'),
+            1 << 14 => $this->txt('(unsafe) Collect constants'),
+            1 << 15 => $this->txt('Inline functions'),
+        ];
+        $this->jitModes = [
+            [
+                'flag' => $this->txt('CPU-specific optimization'),
+                'value' => [
+                    $this->txt('Disable CPU-specific optimization'),
+                    $this->txt('Enable use of AVX, if the CPU supports it')
+                ]
+            ],
+            [
+                'flag' => $this->txt('Register allocation'),
+                'value' => [
+                    $this->txt('Do not perform register allocation'),
+                    $this->txt('Perform block-local register allocation'),
+                    $this->txt('Perform global register allocation')
+                ]
+            ],
+            [
+                'flag' => $this->txt('Trigger'),
+                'value' => [
+                    $this->txt('Compile all functions on script load'),
+                    $this->txt('Compile functions on first execution'),
+                    $this->txt('Profile functions on first request and compile the hottest functions afterwards'),
+                    $this->txt('Profile on the fly and compile hot functions'),
+                    $this->txt('Currently unused'),
+                    $this->txt('Use tracing JIT. Profile on the fly and compile traces for hot code segments')
+                ]
+            ],
+            [
+                'flag' => $this->txt('Optimization level'),
+                'value' => [
+                    $this->txt('No JIT'),
+                    $this->txt('Minimal JIT (call standard VM handlers)'),
+                    $this->txt('Inline VM handlers'),
+                    $this->txt('Use type inference'),
+                    $this->txt('Use call graph'),
+                    $this->txt('Optimize whole script')
+                ]
+            ]
         ];
         ];
         $this->options = array_merge($this->defaults, $options);
         $this->options = array_merge($this->defaults, $options);
         $this->tz = new DateTimeZone(date_default_timezone_get());
         $this->tz = new DateTimeZone(date_default_timezone_get());
+
         $this->data = $this->compileState();
         $this->data = $this->compileState();
     }
     }
 
 
+    /**
+     * @return string
+     */
+    public function txt(): string
+    {
+        $args = func_get_args();
+        $text = array_shift($args);
+        if ((($lang = $this->getOption('language')) !== null) && !empty($lang[$text])) {
+            $text = $lang[$text];
+        }
+        foreach ($args as $i => $arg) {
+            $text = str_replace('{' . $i . '}', $arg, $text);
+        }
+        return $text;
+    }
+
     /**
     /**
      * @return $this
      * @return $this
      * @throws Exception
      * @throws Exception