소스 검색

Added language into the build process and rebuilt index

Andrew Collington 3 년 전
부모
커밋
47ad738329
2개의 변경된 파일126개의 추가작업 그리고 5개의 파일을 삭제
  1. 15 2
      build/build.php
  2. 111 3
      index.php

+ 15 - 2
build/build.php

@@ -9,10 +9,22 @@
  * @license MIT, https://acollington.mit-license.org/
  */
 
-$options = getopt('j', ['local-js']);
+$options = getopt('jl:', ['local-js', 'lang:']);
 $makeJsLocal = (isset($options['j']) || isset($options['local-js']));
+$useLanguage = $options['l'] ?? $options['lang'] ?? null;
+$languagePack = 'null';
 $parentPath = dirname(__DIR__);
 
+if ($useLanguage !== null) {
+    $useLanguage = preg_replace('/[^a-z_-]/', '', $useLanguage);
+    $languageFile = __DIR__ . "/_languages/{$useLanguage}.json";
+    if (!file_exists($languageFile)) {
+        echo "The '{$useLanguage}' file does not exist - using default English\n\n";
+    } else {
+        $languagePack = "<<< EOJSON\n" . file_get_contents($languageFile) . "\nEOJSON";
+    }
+}
+
 if (!file_exists($parentPath . '/node_modules')) {
     echo "🐢 Installing node modules\n";
     exec('npm install');
@@ -28,9 +40,10 @@ $template = trim(file_get_contents(__DIR__ . '/template.phps'));
 $jsOutput = trim(file_get_contents(__DIR__ . '/interface.js'));
 $cssOutput = trim(file_get_contents(__DIR__ . '/interface.css'));
 $phpOutput = trim(implode('', array_slice(file($parentPath . '/src/Opcache/Service.php'), 3)));
+
 $output = str_replace(
     ['{{JS_OUTPUT}}', '{{CSS_OUTPUT}}', '{{PHP_OUTPUT}}', '{{LANGUAGE_PACK}}'],
-    [$jsOutput, $cssOutput, $phpOutput, 'null'],
+    [$jsOutput, $cssOutput, $phpOutput, $languagePack],
     $template
 );
 if ($makeJsLocal) {

+ 111 - 3
index.php

@@ -40,7 +40,115 @@ $options = [
         'jit'    => true                       // show the jit buffer chart/big number
     ],
     // json structure of all text strings used, or null for default
-    'language_pack'    => null
+    'language_pack'    => <<< EOJSON
+{
+    "(unsafe) Collect constants": "(instable) Collecter les constantes",
+    "++, +=, series of jumps": "++, +=, séries de sauts",
+    "Adjust used stack": "Ajuster la pile utilisée",
+    "Ascending": "Croissant",
+    "Available functions": "Fonctions disponibles",
+    "blacklist misses": "Ratés mis sur liste noire",
+    "buffer size": "taille du tampon",
+    "Cached": "En cache",
+    "CALL GRAPH optimization": "Optimisation CALL GRAPH",
+    "CFG based optimization": "Optimisation basée sur CFG",
+    "Compile all functions on script load": "Compiler toutes les fonctions au chargement du script",
+    "Compile functions on first execution": "Compiler les fonctions à la première exécution",
+    "Constant conversion and jumps": "Conversion des constantes et sauts",
+    "CPU-specific optimization": "Optimisation spécifique au CPU",
+    "CSE, STRING construction": "Construction CSE, STRING",
+    "Currently unused": "Actuellement inutilisé",
+    "DCE (dead code elimination)": "DCE (élimination du code mort)",
+    "Descending": "Décroissant",
+    "DFA based optimization": "Optimisation basée sur DFA",
+    "Directives": "Directives",
+    "Disable CPU-specific optimization": "Désactiver l'optimisation spécifique au processeur",
+    "Disable real-time update": "Désactiver la mise à jour en temps réel",
+    "Do not perform register allocation": "Ne pas effectuer d'allocation de registre",
+    "Enable real-time update": "Activer la mise à jour en temps réel",
+    "Enable use of AVX, if the CPU supports it": "Activer l'utilisation d'AVX, si le CPU le prend en charge",
+    "false": "faux",
+    "File list pagination": "Pagination de la liste des fichiers",
+    "force file invalidation": "forcer l'invalidation du fichier",
+    "free memory": "mémoire libre",
+    "General info": "Informations générales",
+    "has been invalidated": "a été invalidé",
+    "hit rate": "taux de succès",
+    "hits": "accès",
+    "Host": "Hôte",
+    "Ignored": "Ignoré",
+    "INIT_FCALL_BY_NAME -> DO_FCALL": "INIT_FCALL_BY_NAME -> DO_FCALL",
+    "Inline functions": "Fonctions inline",
+    "Inline VM handlers": "Gestionnaires de VM inline",
+    "interned strings usage": "utilisation des chaînes internées",
+    "Invalidate all matching files": "Invalider tous les fichiers correspondants",
+    "jit buffer free": "tampon jit libre",
+    "jit buffer": "tampon jit",
+    "keys": "clés",
+    "Last modified": "Dernière modification",
+    "last modified": "dernière modification",
+    "Last used": "Dernière utilisation",
+    "last used": "dernière utilisation",
+    "max cached keys": "max de clés en cache",
+    "Memory consumption": "Consommation mémoire",
+    "memory usage": "utilisation de la mémoire",
+    "memory": "mémoire",
+    "Merge equal constants": "Fusionner les constantes égales",
+    "Minimal JIT (call standard VM handlers)": "JIT minimal (appel des gestionnaires de VM standard)",
+    "Next": "Suivant",
+    "No files have been cached or you have <i>opcache.file_cache_only<\/i> turned on": "Aucun fichier n'a été mis en cache ou vous avez <i>opcache.file_cache_only<\/i> activé",
+    "No files have been ignored via <i>opcache.blacklist_filename<\/i>": "Aucun fichier n'a été ignoré via <i>opcache.blacklist_filename<\/i>",
+    "No files have been preloaded <i>opcache.preload<\/i>": "Aucun fichier n'a été préchargé <i>opcache.preload<\/i>",
+    "No JIT": "Pas de JIT",
+    "no value": "pas de valeur",
+    "NOP removal": "Suppression de NOP",
+    "number of cached files": "nombre de fichiers en cache",
+    "number of cached keys": "nombre de clés en cache",
+    "Number of hits": "Nombre d'accès",
+    "number of hits": "nombre d'accès",
+    "number of misses": "nombre de ratés",
+    "number of strings": "nombre de chaînes",
+    "opcache statistics": "statistiques d'opcache",
+    "Optimization level": "Niveau d'optimisation",
+    "Optimize whole script": "Optimiser tout le script",
+    "Overview": "Vue d'ensemble",
+    "Path": "Chemin",
+    "Perform block-local register allocation": "Effectuer l'allocation de registre local de bloc",
+    "Perform global register allocation": "Effectuer une allocation de registre globale",
+    "preload memory": "précharger la mémoire",
+    "Preloaded": "Préchargé",
+    "Previous": "Précédent",
+    "Profile functions on first request and compile the hottest functions afterwards": "Profiling des fonctions à la première demande et compilation des fonctions les plus fréquentes par la suite",
+    "Profile on the fly and compile hot functions": "Profiling à la volée et compiler les fonctions les plus fréquentes",
+    "Register allocation": "Allocation de registre",
+    "Remove unused variables": "Supprimer les variables inutilisées",
+    "Reset cache": "Réinitialiser le cache",
+    "SCCP (constant propagation)": "SCCP (propagation des constantes)",
+    "Script": "Script",
+    "Server Software": "Logiciel serveur",
+    "Sort order": "Ordre de tri",
+    "Start typing to filter on script path": "Commencez à taper pour filtrer sur le chemin du script",
+    "TMP VAR usage": "Utilisation TMP VAR",
+    "total memory": "mémoire totale",
+    "Trigger": "Déclencheur",
+    "true": "vrai",
+    "Use call graph": "Utiliser le graphe des appels",
+    "Use tracing JIT. Profile on the fly and compile traces for hot code segments": "Utilisez le suivi JIT. Profiling à la volée et compilation des traces pour les segments de code les plus fréquents",
+    "Use type inference": "Utiliser l'inférence de type",
+    "used memory": "mémoire utilisée",
+    "View manual page": "Voir la page du manuel",
+    "View {0} manual entry": "Voir la page {0} du manuel",
+    "wasted memory": "mémoire perdue",
+    "You have <i>opcache.file_cache_only<\/i> turned on. As a result, the memory information is not available. Statistics and file list may also not be returned by <i>opcache_get_statistics()<\/i>.": "Vous avez <i>opcache.file_cache_only<\/i> activé. Par conséquent, les informations sur la mémoire ne sont pas disponibles. Les statistiques et la liste de fichiers peuvent également ne pas être renvoyées par <i>opcache_get_statistics()<\/i>.",
+    "{0} files cached": "{0} fichiers mis en cache",
+    "{0} files cached, {1} showing due to filter '{2}'": "{0} fichiers mis en cache, {1} s'affichent en raison du filtre '{2}'",
+    "{0} ignore file locations": "{0} ignore les fichiers en fonction de l'emplacement",
+    "{0} preloaded files": "{0} fichiers préchargés",
+    "Last reset": "",
+    "Start time": "",
+    "never": ""
+}
+EOJSON
 ];
 
 /*
@@ -394,7 +502,7 @@ class Service
                             ->setTimezone($this->tz)
                             ->format($this->getOption('datetime_format')),
                         'last_restart_time' => ($status['opcache_statistics']['last_restart_time'] === 0
-                            ? 'never'
+                            ? $this->txt('never')
                             : (new DateTimeImmutable("@{$status['opcache_statistics']['last_restart_time']}"))
                                 ->setTimezone($this->tz)
                                 ->format($this->getOption('datetime_format'))
@@ -522,7 +630,7 @@ $opcache = (new Service($options))->handle();
 
     <script type="text/javascript">
 
-    function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+    function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
 
 function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }