+
+
+
-
-
+
+ {
+ props.allow.filelist &&
+
+
-
+ }
+ {
+ (props.allow.filelist && props.opstate.blacklist.length &&
+
+
-
)
+ }
+ {
+ (props.allow.filelist && props.opstate.preload.length &&
+
-
- {
- props.allow.filelist &&
-
-
-
- }
- {
- (props.allow.filelist && props.opstate.blacklist.length &&
-
-
-
)
- }
- {
- (props.allow.filelist && props.opstate.preload.length &&
- )
- }
- {
- props.allow.reset &&
-
- }
- {
- props.allow.realtime &&
-
- }
-
-
+ )
+ }
+ {
+ props.allow.reset &&
+
+ }
+ {
+ props.allow.realtime &&
+
+ }
+
);
}
+function ThemeSwitcher(props) {
+ const themeOrder = ['light', 'dark', 'system'];
+ const index = Math.max(0, themeOrder.indexOf(props.theme));
+ const set = (t) => props.onThemeChange && props.onThemeChange(t);
+ const btn = (t, icon, label) => (
+
+ );
+ const SunIcon = (
+
+ );
+ const MoonIcon = (
+
+ );
+ const LaptopIcon = (
+
+ );
+
+ return (
+
+
+
+ {btn('light', SunIcon, 'Light')}
+ {btn('dark', MoonIcon, 'Dark')}
+ {btn('system', LaptopIcon, 'System')}
+
+
+ );
+}
class Tabs extends React.Component {
constructor(props) {
@@ -208,34 +293,44 @@ class Tabs extends React.Component {
const children = this.props.children.filter(Boolean);
+ console.log(this.props)
+
return (
<>
-
- {children.map((child) => {
- const { tabId, label, className, handler, tabIndex } = child.props;
- return (
-
- );
- })}
-
-
- {children.map((child) => (
-
- {child.props.children}
-
- ))}
-
+
+
+
+
+
+
+ {children.map((child) => (
+
+ {child.props.children}
+
+ ))}
+
+
>
);
}
@@ -251,7 +346,7 @@ class Tab extends React.Component {
render() {
const {
onClick,
- props: { activeTab, label, tabIndex, tabId },
+ props: { activeTab, label, tabIndex, tabId, icon },
} = this;
let className = 'nav-tab';
@@ -268,7 +363,7 @@ class Tab extends React.Component {
tabIndex={tabIndex}
role="tab"
aria-controls={`${tabId}-content`}
- >{label}
+ >{icon}{label}
);
}
}
@@ -1192,12 +1287,17 @@ function Footer(props) {
https://github.com/amnuts/opcache-gui - {props.txt("version {0}", props.version)}
+ >
https://github.com/amnuts/opcache-gui - {props.txt("version {0}", props.version)}
+
{props.txt("Sponsor this project")}
+ >
{props.txt("Sponsor this project")}
);
}
diff --git a/build/_frontend/interface.scss b/build/_frontend/interface.scss
index e8922e6..70b6eff 100644
--- a/build/_frontend/interface.scss
+++ b/build/_frontend/interface.scss
@@ -4,6 +4,10 @@ $nav-border-color: #CCC;
$nav-background-color: #FFF;
$nav-icon-color: #626262;
$nav-icon-active-color: #00ba00;
+$nav-icon-color-dark: #CCCCCC;
+
+$github-icon-color: $nav-icon-color;
+$github-icon-color-dark: $nav-icon-color-dark;
$table-header-color: #6CA6EF;
$table-row-color: #EFFEFF;
@@ -48,6 +52,15 @@ $footer-border-color: #CCC;
font-size: 90%;
padding: 0;
margin: 0;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+
+ #interface {
+ flex: 1 1 auto;
+ display: flex;
+ flex-direction: column;
+ }
.hide {
display: none;
@@ -67,19 +80,29 @@ $footer-border-color: #CCC;
white-space: nowrap !important;
}
- .main-nav {
+ header, .main-nav {
+ display: flex;
+ flex-direction: column;
+ min-height: 0;
padding-top: 20px;
}
+ .main-nav {
+ position: relative;
+ }
+
.nav-tab-list {
list-style-type: none;
padding-left: 8px;
+ padding-right: 160px; // reserve space for theme switcher on the right
margin: 0;
border-bottom: 1px solid $nav-border-color;
+ display: flex;
+ align-items: end;
}
.nav-tab {
- display: inline-block;
+ display: inline-flex;
margin: 0 0 -1px 0;
padding: 15px 30px;
border: 1px solid transparent;
@@ -88,6 +111,7 @@ $footer-border-color: #CCC;
background-color: $nav-background-color;
cursor: pointer;
user-select: none;
+ align-items: center;
&:hover {
background-color: $nav-hover-color;
@@ -110,330 +134,571 @@ $footer-border-color: #CCC;
}
}
- .nav-tab-link-reset {
- background-image: url('data:image/svg+xml;utf8,
');
+ .nav-tab-link-reset, .nav-tab-link-realtime {
+ > svg {
+ overflow: visible;
+ width: 1.1rem;
+ height: 1.1rem;
+ margin-right: 0.5em;
+
+ > path {
+ fill: $nav-icon-color;
+ }
+ }
- &.is-resetting {
- background-image: url('data:image/svg+xml;utf8,
');
+ &.activated {
+ > svg > path {
+ fill: $nav-icon-active-color;
+ transform-origin: 50% 50%;
+ display: inline-block;
+ }
}
}
- .nav-tab-link-realtime {
- background-image: url('data:image/svg+xml;utf8,
');
+ .nav-tab-link-reset {
+ &.activated {
+ > svg > path {
+ animation: spin-all 2s linear infinite;
+ }
+ }
- &.live-update {
- background-image: url('data:image/svg+xml;utf8,
');
+ &.is-resetting {
+ > svg > path {
+ fill: $nav-icon-active-color;
+ }
+ }
}
- }
-
- .nav-tab-link-reset, .nav-tab-link-realtime {
- position: relative;
- padding-left: 50px;
- &.pulse::before {
- content: "";
- position: absolute;
- top: 12px;
- left: 25px;
- width: 18px;
- height: 18px;
- z-index: 10;
- opacity: 0;
- background-color: transparent;
- border: 2px solid $nav-icon-active-color;
- border-radius: 100%;
- animation: pulse 2s linear infinite;
+ .nav-tab-link-realtime {
+ &.activated {
+ > svg > path {
+ animation: spin-pause 2s ease-in infinite;
+ }
+ }
}
}
- .tab-content {
- padding: 2em;
- }
+ main {
+ flex: 1 1 auto;
+ }
- .tab-content-overview-counts {
- width: 270px;
- float: right;
- }
+ .tab-content {
+ padding: 2em;
+ flex: 1 1 auto;
+ min-height: 0;
+ overflow: auto;
+ }
- .tab-content-overview-info {
- margin-right: 280px;
- }
+ .tab-content-overview-counts {
+ width: 270px;
+ float: right;
+ }
- .graph-widget {
- max-width: 100%;
- height: auto;
- margin: 0 auto;
- display: flex;
- position: relative;
+ .tab-content-overview-info {
+ margin-right: 280px;
+ }
- .widget-value {
+ .graph-widget {
+ max-width: 100%;
+ height: auto;
+ margin: 0 auto;
display: flex;
- align-items: center;
- justify-content: center;
+ position: relative;
+
+ .widget-value {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ margin: 0 auto;
+ font-size: 3.2em;
+ font-weight: 100;
+ color: $widget-graph-fill-color;
+ user-select: none;
+ }
+ }
+
+ .widget-panel {
+ background-color: $widget-background-color;
+ margin-bottom: 10px;
+ }
+
+ .widget-header {
+ background-color: $widget-header-color;
+ padding: 4px 6px;
+ margin: 0;
text-align: center;
- position: absolute;
- top: 0;
- width: 100%;
- height: 100%;
- margin: 0 auto;
- font-size: 3.2em;
- font-weight: 100;
- color: $widget-graph-fill-color;
- user-select: none;
+ font-size: 1rem;
+ font-weight: bold;
}
- }
- .widget-panel {
- background-color: $widget-background-color;
- margin-bottom: 10px;
- }
+ .widget-value {
+ margin: 0;
+ text-align: center;
- .widget-header {
- background-color: $widget-header-color;
- padding: 4px 6px;
- margin: 0;
- text-align: center;
- font-size: 1rem;
- font-weight: bold;
- }
+ span.large {
+ color: $widget-graph-fill-color;
+ font-size: 80pt;
+ margin: 0;
+ padding: 0;
+ text-align: center;
- .widget-value {
- margin: 0;
- text-align: center;
+ + span {
+ font-size: 20pt;
+ margin: 0;
+ color: $widget-graph-fill-color;
+ }
+ }
+ }
- span.large {
- color: $widget-graph-fill-color;
- font-size: 80pt;
+ .widget-info {
margin: 0;
- padding: 0;
- text-align: center;
+ padding: 10px;
- + span {
- font-size: 20pt;
+ * {
margin: 0;
- color: $widget-graph-fill-color;
+ line-height: 1.75em;
+ text-align: left;
}
}
- }
- .widget-info {
- margin: 0;
- padding: 10px;
+ .tables {
+ margin: 0 0 1em 0;
+ border-collapse: collapse;
+ width: 100%;
+ table-layout: fixed;
- * {
- margin: 0;
- line-height: 1.75em;
- text-align: left;
+ tr {
+ &:nth-child(odd) {
+ background-color: $table-row-color;
+ }
+
+ &:nth-child(even) {
+ background-color: $table-row-color-alternative;
+ }
+ }
+
+ th {
+ text-align: left;
+ padding: 6px;
+ background-color: $table-header-color;
+ color: $table-header-font-color;
+ border-color: $table-header-border-color;
+ font-weight: normal;
+ }
+
+ td {
+ padding: 4px 6px;
+ line-height: 1.4em;
+ vertical-align: top;
+ border-color: $table-row-border-color;
+ overflow: hidden;
+ overflow-wrap: break-word;
+ text-overflow: ellipsis;
+ }
}
- }
- .tables {
- margin: 0 0 1em 0;
- border-collapse: collapse;
- width: 100%;
- table-layout: fixed;
+ .directive-list {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+
+ li {
+ margin-bottom: 0.5em;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
- tr {
- &:nth-child(odd) {
- background-color: $table-row-color;
+ ul {
+ margin-top: 1.5em;
+ }
}
+ }
+
+ .file-filter {
+ width: 520px;
+ }
+
+ .file-metainfo {
+ font-size: 80%;
- &:nth-child(even) {
- background-color: $table-row-color-alternative;
+ &.invalid {
+ font-style: italic;
}
}
- th {
- text-align: left;
- padding: 6px;
- background-color: $table-header-color;
- color: $table-header-font-color;
- border-color: $table-header-border-color;
- font-weight: normal;
+ .file-pathname {
+ width: 70%;
+ display: block;
}
- td {
- padding: 4px 6px;
- line-height: 1.4em;
- vertical-align: top;
- border-color: $table-row-border-color;
- overflow: hidden;
- overflow-wrap: break-word;
- text-overflow: ellipsis;
+ .nav-tab-link-reset,
+ .nav-tab-link-realtime,
+ .github-link,
+ .sponsor-link {
+ background-repeat: no-repeat;
+ background-color: transparent;
}
- }
- .directive-list {
- list-style-type: none;
- padding: 0;
- margin: 0;
+ .nav-tab-link-reset,
+ .nav-tab-link-realtime {
+ background-position: 24px 50%;
+ }
- li {
- margin-bottom: 0.5em;
+ .main-footer {
+ border-top: 1px solid $footer-border-color;
+ padding: 1em 2em;
+ display: flex;
+ align-items: center;
+ }
- &:last-child {
- margin-bottom: 0;
+ .github-link,
+ .sponsor-link {
+ background-position: 0 50%;
+ padding: 2em 0 2em 2.3em;
+ text-decoration: none;
+ opacity: 0.7;
+ font-size: 80%;
+ display: flex;
+ align-items: center;
+
+ &:hover {
+ opacity: 1;
}
- ul {
- margin-top: 1.5em;
+ > svg {
+ height: 1rem;
+ width: 1rem;
+ margin-right: 0.25rem;
}
}
- }
- .file-filter {
- width: 520px;
- }
-
- .file-metainfo {
- font-size: 80%;
-
- &.invalid {
- font-style: italic;
+ .theme-switcher {
+ position: absolute;
+ top: 0;
+ right: 8px;
+ height: 54px;
+ display: flex;
+ align-items: center;
+ z-index: 2;
+ margin: 15px 20px 0 0;
}
- }
- .file-pathname {
- width: 70%;
- display: block;
- }
+ .theme-toggle {
+ position: relative;
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+ align-items: stretch;
+ min-width: 156px;
+ height: 30px;
+ padding: 0;
+ border: 1px solid $nav-border-color;
+ border-radius: 999px;
+ background-color: $nav-background-color;
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.02);
+ }
- .nav-tab-link-reset,
- .nav-tab-link-realtime,
- .github-link,
- .sponsor-link {
- background-repeat: no-repeat;
- background-color: transparent;
- }
+ .theme-toggle-slider {
+ position: absolute;
+ left: 3px;
+ top: 3px;
+ bottom: 3px;
+ width: calc((100% - 12px) / 3);
+ border-radius: 999px;
+ background-color: $nav-hover-color;
+ transition: transform .2s ease;
+ z-index: 0;
+ }
- .nav-tab-link-reset,
- .nav-tab-link-realtime {
- background-position: 24px 50%;
- }
+ .theme-toggle-btn {
+ appearance: none;
+ -webkit-appearance: none;
+ border: 0;
+ background: transparent;
+ padding: 0;
+ margin: 0;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ color: $nav-icon-color;
+ cursor: pointer;
+ border-radius: 999px;
+ position: relative;
+ z-index: 1;
+ }
- .main-footer {
- border-top: 1px solid $footer-border-color;
- padding: 1em 2em;
- }
+ .theme-toggle-btn.active {
+ color: $nav-icon-active-color;
+ }
- .github-link,
- .sponsor-link {
- background-position: 0 50%;
- padding: 2em 0 2em 2.3em;
- text-decoration: none;
- opacity: 0.7;
- font-size: 80%;
+ .github-link > svg > path {
+ fill: $nav-icon-color;
+ }
- &:hover {
- opacity: 1;
+ .sponsor-link {
+ margin-left: 2em;
}
- }
- .github-link {
- background-image: url('data:image/svg+xml;utf8,
');
- }
+ .file-cache-only {
+ margin-top: 0;
+ }
- .sponsor-link {
- background-image: url('data:image/svg+xml;utf8,
');
- margin-left: 2em;
- }
+ .paginate-filter {
+ display: flex;
+ align-items: baseline;
+ justify-content: space-between;
+ flex-wrap: wrap;
- .file-cache-only {
- margin-top: 0;
- }
+ .filter > * {
+ padding: 3px;
+ margin: 3px 3px 10px 0;
+ }
+ }
- .paginate-filter {
- display: flex;
- align-items: baseline;
- justify-content: space-between;
- flex-wrap: wrap;
+ .pagination {
+ margin: 10px 0;
+ padding: 0;
- .filter > * {
- padding: 3px;
- margin: 3px 3px 10px 0;
+ li {
+ display: inline-block;
+
+ a {
+ display: inline-flex;
+ align-items: center;
+ white-space: nowrap;
+ line-height: 1;
+ padding: 0.5rem 0.75rem;
+ border-radius: 3px;
+ text-decoration: none;
+ height: 100%;
+
+ &.arrow {
+ font-size: 1.1rem;
+ }
+
+ &:active {
+ transform: translateY(2px);
+ }
+
+ &.active {
+ background-color: $pagination-active-color;
+ color: $pagination-active-font-color;
+ }
+
+ &:hover:not(.active) {
+ background-color: $pagination-hover-color;
+ color: $pagination-hover-font-color;
+ }
+ }
+ }
}
- }
- .pagination {
- margin: 10px 0;
- padding: 0;
+ @media screen and (max-width: 750px) {
+ .opcache-gui {
+ .nav-tab-list {
+ border-bottom: 0;
+ display: flex;
+ flex-direction: column;
+ padding: 0;
+ align-items: center;
+ }
- li {
- display: inline-block;
+ .nav-tab {
+ margin: 0;
+ border: 0;
+ border-top: 1px solid $nav-border-color;
+ width: 100%;
+ align-items: center;
+ justify-content: center;
+
+ &:last-child {
+ border-bottom: 1px solid $nav-border-color;
+ }
+
+ &.active {
+ border: 0;
+ border-top: 1px solid $nav-border-color;
+ background: rgba($nav-header-color, 0.1);
+ }
+ }
- a {
- display: inline-flex;
- align-items: center;
- white-space: nowrap;
- line-height: 1;
- padding: 0.5rem 0.75rem;
- border-radius: 3px;
- text-decoration: none;
- height: 100%;
+ .nav-tab-link {
+ display: block;
+ margin: 0 10px;
+ padding: 10px 0 10px 30px;
+ border: 0;
+ }
+
+ .theme-switcher {
+ position: static;
+ height: auto;
+ margin: 5px;
+ align-self: center;
+ transform: none;
+ }
- &.arrow {
- font-size: 1.1rem;
+ .tab-content-overview-info {
+ margin-right: auto;
+ clear: both;
}
- &:active {
- transform: translateY(2px);
+ .tab-content-overview-counts {
+ position: relative;
+ display: block;
+ width: 100%;
}
- &.active {
- background-color: $pagination-active-color;
- color: $pagination-active-font-color;
+ header {
+ flex-direction: column-reverse;
}
+ }
- &:hover:not(.active) {
- background-color: $pagination-hover-color;
- color: $pagination-hover-font-color;
+ @media screen and (max-width: 550px) {
+ .file-filter {
+ width: 100%;
}
}
}
+
+
+ @keyframes spin-pause {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 50%, 100% {
+ transform: rotate(360deg);
+ }
+ }
+
+ @keyframes spin-all {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(360deg);
+ }
}
- @media screen and (max-width: 750px) {
- .nav-tab-list {
- border-bottom: 0;
+ @mixin dark-theme {
+ background-color: #121212;
+ color: #ddd;
+
+ a {
+ color: dodgerblue;
}
+
.nav-tab {
- display: block;
- margin: 0;
+ background-color: transparent;
+ border-color: transparent;
+
+ &:hover {
+ background-color: #2a2a2a;
+ }
+
+ &.active {
+ background-color: #1e1e1e;
+ border-color: transparent;
+ border-top-color: #84b8ff;
+ border-bottom-color: #1e1e1e;
+ }
}
- .nav-tab-link {
- display: block;
- margin: 0 10px;
- padding: 10px 0 10px 30px;
- border: 0;
+
+ .nav-tab-link-reset,
+ .nav-tab-link-realtime {
+ background-color: transparent;
+
+ &.is-resetting,
+ &.live-update {
+ background-color: transparent;
+ }
+
+ &.pulse::before {
+ border-color: #00e600;
+ }
}
- .nav-tab-link[data-for].active {
- border-bottom-color: $nav-border-color;
+
+ .github-link > svg > path {
+ fill: $github-icon-color-dark;
}
- .tab-content-overview-info {
- margin-right: auto;
- clear: both;
+
+ .graph-widget .widget-value,
+ .widget-value span.large,
+ .widget-value span.large + span {
+ color: #84b8ff;
}
- .tab-content-overview-counts {
- position: relative;
- display: block;
- width: 100%;
+
+ .widget-panel {
+ background-color: #2a2a2a;
}
- }
- @media screen and (max-width: 550px) {
- .file-filter {
- width: 100%;
+ .widget-header {
+ background-color: #333;
+ color: #ccc;
+ }
+
+ .tables {
+ tr:nth-child(odd) {
+ background-color: #2a2a2a;
+ }
+
+ tr:nth-child(even) {
+ background-color: #1f1f1f;
+ }
+
+ th {
+ background-color: #3a4a5e;
+ color: #ddd;
+ border-color: #444;
+ }
+
+ td {
+ border-color: #333;
+ }
+ }
+
+ .main-footer {
+ border-top-color: #444;
+ color: #ccc;
+ }
+
+ .pagination li a {
+ &.active {
+ background-color: #4d75af;
+ color: #fff;
+ }
+
+ &:hover:not(.active) {
+ background-color: #ff7400;
+ color: #fff;
+ }
+ }
+
+ .theme-toggle {
+ background-color: #1e1e1e;
+ border-color: #444;
+ }
+ .theme-toggle-slider {
+ background-color: #2a2a2a;
+ }
+ .theme-toggle-btn {
+ color: $nav-icon-color-dark;
+ }
+ .theme-toggle-btn.active {
+ color: #84b8ff;
}
}
-}
-@keyframes pulse {
- 0% {
- transform: scale(1);
- opacity: 1;
+ @media (prefers-color-scheme: dark) {
+ :root:not(.light) .opcache-gui {
+ @include dark-theme;
+ }
}
- 50%, 100% {
- transform: scale(2);
- opacity: 0;
+
+ .dark .opcache-gui {
+ @include dark-theme;
}
-}
diff --git a/build/_languages/de.json b/build/_languages/de.json
index 6ffe416..d568dd5 100644
--- a/build/_languages/de.json
+++ b/build/_languages/de.json
@@ -15,6 +15,7 @@
"CPU-specific optimization": "",
"CSE, STRING construction": "",
"Currently unused": "Aktuell unbenutzt",
+ "Dark": "Dunkel",
"DCE (dead code elimination)": "",
"Descending": "Absteigend",
"DFA based optimization": "",
@@ -52,6 +53,7 @@
"Last reset": "Letzter Reset",
"Last used": "Letzte Verwendung",
"last used": "Letzte Verwendung",
+ "Light": "Hell",
"max cached keys": "max gecachte Schlüssel",
"Memory consumption": "Speicher Verwendung",
"memory usage": "Speicherauslastung",
@@ -59,8 +61,8 @@
"Merge equal constants": "",
"Minimal JIT (call standard VM handlers)": "",
"never": "nie",
- "Next": "Nächste",
"Next page": "Nächste Seite",
+ "Next": "Nächste",
"No files have been cached or you have
opcache.file_cache_only<\/i> turned on": "Keine Dateien wurden gecacht oder opcache.file_cache_only<\/i> ist aktiviert",
"No files have been ignored via opcache.blacklist_filename<\/i>": "Keine Dateien wurden durch opcache.blacklist_filename<\/i> ignoriert",
"No files have been preloaded opcache.preload<\/i>": "Keine Dateien wurden durch opcache.preload<\/i> vorgeladen",
@@ -83,8 +85,8 @@
"Perform global register allocation": "",
"preload memory": "Speicher vorladen",
"Preloaded": "Vorgeladen",
- "Previous": "Vorheriges",
"Previous page": "Vorherige Seite",
+ "Previous": "Vorheriges",
"Profile functions on first request and compile the hottest functions afterwards": "",
"Profile on the fly and compile hot functions": "",
"Register allocation": "",
@@ -98,7 +100,9 @@
"Sponsor this project": "Unterstütze dieses Projekt",
"Start time": "Startzeit",
"Start typing to filter on script path": "Filter für Skript-Pfade",
+ "System": "System",
"the opcache.jit_buffer_size must be set to fully enable JIT": "opcache.jit_buffer_size muss gesetzt sein um JIT vollständig zu aktivieren",
+ "Theme": "Theme",
"TMP VAR usage": "",
"total memory": "verfügbarer Speicher",
"Trigger": "Trigger",
diff --git a/build/_languages/es.json b/build/_languages/es.json
index 43eda82..36e5e18 100644
--- a/build/_languages/es.json
+++ b/build/_languages/es.json
@@ -15,12 +15,14 @@
"CPU-specific optimization": "Optimización específica de la CPU",
"CSE, STRING construction": "Construcción CSE, STRING",
"Currently unused": "Actualmente sin utilizar",
+ "Dark": "Oscuro",
"DCE (dead code elimination)": "DCE (eliminación del código muerto)",
"Descending": "Descendente",
"DFA based optimization": "Optimización basada en DFA",
"Directives": "Directivas",
"Disable CPU-specific optimization": "Desactivar la optimización específica de la CPU",
"Disable real-time update": "Desactivar la actualización en tiempo real",
+ "disabled due to opcache.jit setting": "ddesactivado debido a la configuración de opcache.jit",
"Do not perform register allocation": "No realizar la asignación de registros",
"Enable real-time update": "Activar la actualización en tiempo real",
"Enable use of AVX, if the CPU supports it": "Habilitar el uso de AVX, si la CPU lo soporta",
@@ -34,6 +36,7 @@
"hits": "hits",
"Host": "Host",
"Ignored": "Ignorado",
+ "incompatible with extensions that override zend_execute_ex(), such as xdebug": "incompatible con las extensiones que anulan zend_execute_ex(), como xdebug",
"INIT_FCALL_BY_NAME -> DO_FCALL": "INIT_FCALL_BY_NAME -> DO_FCALL",
"Inline functions": "Funciones inline",
"Inline VM handlers": "Controladores de VM en línea",
@@ -41,12 +44,14 @@
"Invalidate all matching files": "Invalidar todos los ficheros coincidentes",
"jit buffer free": "búfer jit libre",
"jit buffer": "búfer jit",
+ "JIT enabled": "JIT activado",
"keys": "llaves",
"Last modified": "Última modificación",
"last modified": "última modificaciónn",
"Last reset": "Último reinicio",
"Last used": "Último uso",
"last used": "último uso",
+ "Light": "Claro",
"max cached keys": "llaves máximas en caché",
"Memory consumption": "Consumo de memoria",
"memory usage": "uso de memoria",
@@ -54,13 +59,14 @@
"Merge equal constants": "Fusionar las constantes iguales",
"Minimal JIT (call standard VM handlers)": "JIT mínimo (llame a controladores de VM estándar)",
"never": "nunca",
- "Next": "Siguiente",
"Next page": "Página siguiente",
+ "Next": "Siguiente",
"No files have been cached or you have opcache.file_cache_only<\/i> turned on": "No se han almacenado archivos en caché o tiene opcache.file_cache_only<\/i> activado",
"No files have been ignored via opcache.blacklist_filename<\/i>": "No se han ignorado archivos a través de opcache.blacklist_filename<\/i>",
"No files have been preloaded opcache.preload<\/i>": "No se han precargado archivos opcache.preload<\/i>",
"No JIT": "No JIT",
"no value": "sin valor",
+ "No": "No",
"NOP removal": "Eliminación de NOP",
"number of cached files": "número de archivos en caché",
"number of cached keys": "número de llaves en caché",
@@ -77,8 +83,8 @@
"Perform global register allocation": "Realizar la asignación global de registros",
"preload memory": "precargar la memoria",
"Preloaded": "Precargado",
- "Previous": "Anterior",
"Previous page": "Página anterior",
+ "Previous": "Anterior",
"Profile functions on first request and compile the hottest functions afterwards": "Perfile las funciones en la primera solicitud y luego recopile las funciones más populares",
"Profile on the fly and compile hot functions": "Perfilar sobre la marcha y compilar funciones en caliente",
"Register allocation": "Asignación de registros",
@@ -90,6 +96,9 @@
"Sort order": "Orden de clasificación",
"Start time": "Hora de inicio",
"Start typing to filter on script path": "Empiece a escribir para filtrar por ruta del script",
+ "System": "Sistema",
+ "the opcache.jit_buffer_size must be set to fully enable JIT": "el opcache.jit_buffer_size debe estar configurado para habilitar completamente JIT",
+ "Theme": "Tema",
"TMP VAR usage": "Utilización de TMP VAR",
"total memory": "memoria total",
"Trigger": "Disparador",
@@ -101,15 +110,10 @@
"View manual page": "Ver la página del manual",
"View {0} manual entry": "Ver {0} entrada manual",
"wasted memory": "memoria perdida",
+ "Yes": "Sí",
"You have 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 opcache_get_statistics()<\/i>.": "Tienes opcache.file_cache_only activado. Como resultado, la información de la memoria no está disponible. Es posible que las estadísticas y la lista de archivos tampoco sean devueltas por opcache_get_statistics()<\/i>.",
"{0} files cached": "{0} archivos almacenados en caché",
"{0} files cached, {1} showing due to filter '{2}'": "{0} archivos almacenados en caché, {1} se visualizan debido al filtro '{2}'",
"{0} ignore file locations": "{0} ignorar ubicaciones de archivos",
- "{0} preloaded files": "{0} archivos precargados",
- "JIT enabled": "JIT activado",
- "disabled due to opcache.jit setting": "ddesactivado debido a la configuración de opcache.jit",
- "the opcache.jit_buffer_size must be set to fully enable JIT": "el opcache.jit_buffer_size debe estar configurado para habilitar completamente JIT",
- "incompatible with extensions that override zend_execute_ex(), such as xdebug": "incompatible con las extensiones que anulan zend_execute_ex(), como xdebug",
- "Yes": "Sí",
- "No": "No"
+ "{0} preloaded files": "{0} archivos precargados"
}
diff --git a/build/_languages/example.json b/build/_languages/example.json
index a8abca5..aff73d3 100644
--- a/build/_languages/example.json
+++ b/build/_languages/example.json
@@ -15,6 +15,7 @@
"CPU-specific optimization": "",
"CSE, STRING construction": "",
"Currently unused": "",
+ "Dark": "",
"DCE (dead code elimination)": "",
"Descending": "",
"DFA based optimization": "",
@@ -52,6 +53,7 @@
"Last reset": "",
"Last used": "",
"last used": "",
+ "Light": "",
"max cached keys": "",
"Memory consumption": "",
"memory usage": "",
@@ -59,8 +61,8 @@
"Merge equal constants": "",
"Minimal JIT (call standard VM handlers)": "",
"never": "",
- "Next": "",
"Next page": "",
+ "Next": "",
"No files have been cached or you have opcache.file_cache_only<\/i> turned on": "",
"No files have been ignored via opcache.blacklist_filename<\/i>": "",
"No files have been preloaded opcache.preload<\/i>": "",
@@ -83,8 +85,8 @@
"Perform global register allocation": "",
"preload memory": "",
"Preloaded": "",
- "Previous": "",
"Previous page": "",
+ "Previous": "",
"Profile functions on first request and compile the hottest functions afterwards": "",
"Profile on the fly and compile hot functions": "",
"Register allocation": "",
@@ -98,7 +100,9 @@
"Sponsor this project": "",
"Start time": "",
"Start typing to filter on script path": "",
+ "System": "",
"the opcache.jit_buffer_size must be set to fully enable JIT": "",
+ "Theme": "",
"TMP VAR usage": "",
"total memory": "",
"Trigger": "",
diff --git a/build/_languages/fr.json b/build/_languages/fr.json
index a808a1c..70e4fb5 100644
--- a/build/_languages/fr.json
+++ b/build/_languages/fr.json
@@ -15,12 +15,14 @@
"CPU-specific optimization": "Optimisation spécifique au CPU",
"CSE, STRING construction": "Construction CSE, STRING",
"Currently unused": "Actuellement inutilisé",
+ "Dark": "Sombre",
"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",
+ "disabled due to opcache.jit setting": "désactivé en raison du paramètre opcache.jit",
"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",
@@ -34,6 +36,7 @@
"hits": "accès",
"Host": "Hôte",
"Ignored": "Ignoré",
+ "incompatible with extensions that override zend_execute_ex(), such as xdebug": "incompatible avec les extensions qui remplacent zend_execute_ex(), telles que xdebug",
"INIT_FCALL_BY_NAME -> DO_FCALL": "INIT_FCALL_BY_NAME -> DO_FCALL",
"Inline functions": "Fonctions inline",
"Inline VM handlers": "Gestionnaires de VM inline",
@@ -41,12 +44,14 @@
"Invalidate all matching files": "Invalider tous les fichiers correspondants",
"jit buffer free": "tampon jit libre",
"jit buffer": "tampon jit",
+ "JIT enabled": "JIT activé",
"keys": "clés",
"Last modified": "Dernière modification",
"last modified": "dernière modification",
"Last reset": "Dernière réinitialisation",
"Last used": "Dernière utilisation",
"last used": "dernière utilisation",
+ "Light": "Clair",
"max cached keys": "max de clés en cache",
"Memory consumption": "Consommation mémoire",
"memory usage": "utilisation de la mémoire",
@@ -60,6 +65,7 @@
"No files have been preloaded opcache.preload<\/i>": "Aucun fichier n'a été préchargé opcache.preload<\/i>",
"No JIT": "Pas de JIT",
"no value": "pas de valeur",
+ "No": "Non",
"NOP removal": "Suppression de NOP",
"number of cached files": "nombre de fichiers en cache",
"number of cached keys": "nombre de clés en cache",
@@ -88,6 +94,9 @@
"Sort order": "Ordre de tri",
"Start time": "Heure de début",
"Start typing to filter on script path": "Commencez à taper pour filtrer sur le chemin du script",
+ "System": "Système",
+ "the opcache.jit_buffer_size must be set to fully enable JIT": "le opcache.jit_buffer_size doit être défini pour activer complètement JIT",
+ "Theme": "Thème",
"TMP VAR usage": "Utilisation TMP VAR",
"total memory": "mémoire totale",
"Trigger": "Déclencheur",
@@ -99,15 +108,10 @@
"View manual page": "Voir la page du manuel",
"View {0} manual entry": "Voir la page {0} du manuel",
"wasted memory": "mémoire perdue",
+ "Yes": "Oui",
"You have 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 opcache_get_statistics()<\/i>.": "Vous avez 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 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",
- "JIT enabled": "JIT activé",
- "disabled due to opcache.jit setting": "désactivé en raison du paramètre opcache.jit",
- "the opcache.jit_buffer_size must be set to fully enable JIT": "le opcache.jit_buffer_size doit être défini pour activer complètement JIT",
- "incompatible with extensions that override zend_execute_ex(), such as xdebug": "incompatible avec les extensions qui remplacent zend_execute_ex(), telles que xdebug",
- "Yes": "Oui",
- "No": "Non"
+ "{0} preloaded files": "{0} fichiers préchargés"
}
diff --git a/build/template.phps b/build/template.phps
index 57b128d..95531e5 100644
--- a/build/template.phps
+++ b/build/template.phps
@@ -75,9 +75,9 @@ $opcache = (new Service($options))->handle();
-
+
-
+
-
+
-
+