PluginProbe
xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN / 1.3.4
xSpeed Cache: AI-Powered Performance Hub with MCP, Caching & CDN v1.3.4
1.3.4 1.3.3 1.3.2 1.3.1 1.3.0 1.2.4 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 All 30 releases
← All changes | languages/xspeed.pot +447 -226 1.3.01.3.4 View file →
@@ -1,9 +1,9 @@
1 1 # Copyright (C) 2026 WPDeveloper
2 2 # This file is distributed under the GPLv2 or later.
3 3 msgid ""
4 4 msgstr ""
5 -"Project-Id-Version: xSpeed Cache 1.3.0\n"
5 +"Project-Id-Version: xSpeed Cache 1.3.4\n"
6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/xspeed\n"
7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8 8 "Language-Team: LANGUAGE <LL@li.org>\n"
9 9 "MIME-Version: 1.0\n"
@@ -8,9 +8,9 @@
8 8 "Language-Team: LANGUAGE <LL@li.org>\n"
9 9 "MIME-Version: 1.0\n"
10 10 "Content-Type: text/plain; charset=UTF-8\n"
11 11 "Content-Transfer-Encoding: 8bit\n"
12 -"POT-Creation-Date: 2026-09-13T15:28:39+00:00\n"
12 +"POT-Creation-Date: 2026-09-20T11:23:49+00:00\n"
13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14 14 "X-Generator: WP-CLI 2.12.0\n"
15 15 "X-Domain: xspeed\n"
16 16
@@ -15,9 +15,9 @@
15 15 "X-Domain: xspeed\n"
16 16
17 17 #. Plugin Name of the plugin
18 18 #: xspeed.php
19 -#: includes/class-cache.php:7176
19 +#: includes/class-cache.php:8726
20 20 #: includes/class-deactivation-feedback.php:189
21 21 msgid "xSpeed Cache"
22 22 msgstr ""
23 23
@@ -37,9 +37,9 @@
37 37 msgstr ""
38 38
39 39 #: includes/class-admin.php:153
40 40 #: includes/class-admin.php:243
41 -#: includes/class-cache.php:7190
41 +#: includes/class-cache.php:8740
42 42 #: assets/admin.js
43 43 msgid "Settings"
44 44 msgstr ""
45 45
@@ -129,185 +129,185 @@
129 129 msgid "Clears this post and the pages that list it — the homepage, its archive and the neighbouring posts. The rest of the site keeps its cache."
130 130 msgstr ""
131 131
132 132 #. translators: 1: cause of the purge, 2: URL or path, 3: number of files removed.
133 -#: includes/class-cache.php:2950
133 +#: includes/class-cache.php:4163
134 134 #, php-format
135 135 msgid "Purged one URL (%1$s) — %2$s, %3$d file(s) removed"
136 136 msgstr ""
137 137
138 -#: includes/class-cache.php:3711
138 +#: includes/class-cache.php:5116
139 139 msgid "Purge All"
140 140 msgstr ""
141 141
142 -#: includes/class-cache.php:3715
142 +#: includes/class-cache.php:5120
143 143 msgid "Purge Page / Static Cache"
144 144 msgstr ""
145 145
146 -#: includes/class-cache.php:3719
146 +#: includes/class-cache.php:5124
147 147 msgid "Purge CSS / JS Cache"
148 148 msgstr ""
149 149
150 -#: includes/class-cache.php:3723
150 +#: includes/class-cache.php:5128
151 151 msgid "Purge Object Cache"
152 152 msgstr ""
153 153
154 -#: includes/class-cache.php:3727
154 +#: includes/class-cache.php:5132
155 155 msgid "Purge REST Cache"
156 156 msgstr ""
157 157
158 158 #. translators: 1: what was purged, 2: cause of the purge.
159 -#: includes/class-cache.php:3885
159 +#: includes/class-cache.php:5379
160 160 #, php-format
161 161 msgid "Purged %1$s (%2$s)"
162 162 msgstr ""
163 163
164 164 #. translators: 1: what was purged, 2: cause of the purge, 3: number of files removed.
165 -#: includes/class-cache.php:3891
165 +#: includes/class-cache.php:5385
166 166 #, php-format
167 167 msgid "Purged %1$s (%2$s) — %3$d file(s) removed"
168 168 msgstr ""
169 169
170 -#: includes/class-cache.php:4112
170 +#: includes/class-cache.php:5606
171 171 msgid "advanced-cache.php cannot be read, so xSpeed cannot tell whose page cache is installed."
172 172 msgstr ""
173 173
174 174 #. translators: %s: the page-caching plugin that owns advanced-cache.php.
175 -#: includes/class-cache.php:4119
175 +#: includes/class-cache.php:5613
176 176 #, php-format
177 177 msgid "%s is serving the page cache. Turn the xSpeed cache off and on again to take it over."
178 178 msgstr ""
179 179
180 -#: includes/class-cache.php:4122
180 +#: includes/class-cache.php:5616
181 181 msgid "Another plugin is serving the page cache. Turn the xSpeed cache off and on again to take it over."
182 182 msgstr ""
183 183
184 -#: includes/class-cache.php:4188
184 +#: includes/class-cache.php:5686
185 185 msgid "Could not lock page-cache ownership. Try again."
186 186 msgstr ""
187 187
188 -#: includes/class-cache.php:4194
188 +#: includes/class-cache.php:5692
189 189 msgid "Page-cache ownership changed while xSpeed was checking it. Nothing was changed; try again."
190 190 msgstr ""
191 191
192 192 #. translators: %s: the page-caching plugin that owns advanced-cache.php.
193 -#: includes/class-cache.php:4268
193 +#: includes/class-cache.php:5766
194 194 #, php-format
195 195 msgid "%s owns advanced-cache.php, so xSpeed left it alone. Enable the cache from the xSpeed dashboard to take it over."
196 196 msgstr ""
197 197
198 -#: includes/class-cache.php:4271
198 +#: includes/class-cache.php:5769
199 199 msgid "Another plugin owns advanced-cache.php, so xSpeed left it alone. Enable the cache from the xSpeed dashboard to take it over."
200 200 msgstr ""
201 201
202 -#: includes/class-cache.php:4301
202 +#: includes/class-cache.php:5799
203 203 msgid "Could not write wp-content/advanced-cache.php. Check filesystem permissions."
204 204 msgstr ""
205 205
206 -#: includes/class-cache.php:4358
206 +#: includes/class-cache.php:5856
207 207 msgid "wp-config.php is not writable and already contains define( 'WP_CACHE', false ). Change that line to true — adding a second one would leave the cache off and block xSpeed from changing it again."
208 208 msgstr ""
209 209
210 -#: includes/class-cache.php:4359
210 +#: includes/class-cache.php:5857
211 211 msgid "xSpeed could not verify the complete page-cache write, and wp-config.php is not writable. Its changes were rolled back."
212 212 msgstr ""
213 213
214 -#: includes/class-cache.php:4361
214 +#: includes/class-cache.php:5859
215 215 msgid "xSpeed could not verify the complete page-cache write. Its changes were rolled back."
216 216 msgstr ""
217 217
218 -#: includes/class-cache.php:4376
218 +#: includes/class-cache.php:5874
219 219 msgid "xSpeed could not save the page-cache setting. Its file changes were rolled back."
220 220 msgstr ""
221 221
222 -#: includes/class-cache.php:4468
222 +#: includes/class-cache.php:5966
223 223 msgid "xSpeed could not safely remove its WP_CACHE setting. The cache remains enabled."
224 224 msgstr ""
225 225
226 -#: includes/class-cache.php:4483
226 +#: includes/class-cache.php:5981
227 227 msgid "xSpeed could not remove its page-cache drop-in. The cache remains enabled."
228 228 msgstr ""
229 229
230 -#: includes/class-cache.php:4484
230 +#: includes/class-cache.php:5982
231 231 msgid "xSpeed could not remove its page-cache drop-in, and could not put WP_CACHE back. The cache is not serving; check wp-config.php before changing the page cache again."
232 232 msgstr ""
233 233
234 -#: includes/class-cache.php:4501
234 +#: includes/class-cache.php:5999
235 235 msgid "xSpeed could not remove its rewrite rules from .htaccess, which would keep serving cached pages. Remove the xSpeed block from .htaccess by hand before turning the page cache off."
236 236 msgstr ""
237 237
238 -#: includes/class-cache.php:4519
238 +#: includes/class-cache.php:6017
239 239 msgid "xSpeed could not remove its rewrite rules from .htaccess, which would keep serving cached pages. The cache remains enabled."
240 240 msgstr ""
241 241
242 -#: includes/class-cache.php:4520
242 +#: includes/class-cache.php:6018
243 243 msgid "xSpeed could not remove its rewrite rules from .htaccess, and could not restore the drop-in it had just removed. The cache is not serving, and the site may still return stale cached pages until the xSpeed block is removed from .htaccess by hand."
244 244 msgstr ""
245 245
246 -#: includes/class-cache.php:4531
246 +#: includes/class-cache.php:6029
247 247 msgid "xSpeed could not save the disabled state."
248 248 msgstr ""
249 249
250 -#: includes/class-cache.php:4535
250 +#: includes/class-cache.php:6033
251 251 msgid "xSpeed could not save the disabled state. The page cache was restored."
252 252 msgstr ""
253 253
254 254 #. translators: 1: the refusal reason, 2: a page-caching plugin's name.
255 -#: includes/class-cache.php:6682
255 +#: includes/class-cache.php:8218
256 256 #, php-format
257 257 msgid "%1$s %2$s is also active on this site — deactivate its page cache before enabling xSpeed."
258 258 msgstr ""
259 259
260 260 #. translators: 1: the refusal reason, 2: comma-separated page-caching plugin names.
261 -#: includes/class-cache.php:6689
261 +#: includes/class-cache.php:8225
262 262 #, php-format
263 263 msgid "%1$s These page caches are also active on this site: %2$s. Deactivate them before enabling xSpeed."
264 264 msgstr ""
265 265
266 266 #. translators: %s: comma-separated list of page-caching plugin names.
267 -#: includes/class-cache.php:6744
267 +#: includes/class-cache.php:8280
268 268 #, php-format
269 269 msgid "More than one page cache is active on this site (%s). Turn off the other page caches before enabling xSpeed."
270 270 msgstr ""
271 271
272 -#: includes/class-cache.php:6751
272 +#: includes/class-cache.php:8287
273 273 #, php-format
274 274 msgid "%s is active or owns advanced-cache.php. Deactivate its page cache before enabling xSpeed."
275 275 msgstr ""
276 276
277 -#: includes/class-cache.php:6754
277 +#: includes/class-cache.php:8290
278 278 msgid "WP_CACHE is true but no page-cache drop-in owner can be proved. xSpeed will not claim it."
279 279 msgstr ""
280 280
281 -#: includes/class-cache.php:6755
281 +#: includes/class-cache.php:8291
282 282 msgid "wp-config.php defines WP_CACHE more than once. Remove the duplicate before enabling the cache."
283 283 msgstr ""
284 284
285 -#: includes/class-cache.php:6756
285 +#: includes/class-cache.php:8292
286 286 msgid "WP_CACHE is set from an expression in wp-config.php. xSpeed will not rewrite it."
287 287 msgstr ""
288 288
289 -#: includes/class-cache.php:6757
289 +#: includes/class-cache.php:8293
290 290 msgid "WP_CACHE is defined inside a conditional in wp-config.php, so xSpeed cannot tell what it will be. Move it to a plain define before enabling the cache."
291 291 msgstr ""
292 292
293 -#: includes/class-cache.php:6758
293 +#: includes/class-cache.php:8294
294 294 msgid "wp-config.php cannot be read, so xSpeed cannot safely change page-cache ownership."
295 295 msgstr ""
296 296
297 -#: includes/class-cache.php:6759
297 +#: includes/class-cache.php:8295
298 298 msgid "advanced-cache.php is occupied but its owner cannot be proved. xSpeed will not replace it."
299 299 msgstr ""
300 300
301 -#: includes/class-cache.php:6760
301 +#: includes/class-cache.php:8296
302 302 msgid "advanced-cache.php cannot be read, so xSpeed cannot prove its owner."
303 303 msgstr ""
304 304
305 -#: includes/class-cache.php:6762
305 +#: includes/class-cache.php:8298
306 306 msgid "The page-cache field is occupied or cannot be verified. xSpeed will not change it."
307 307 msgstr ""
308 308
309 -#: includes/class-cache.php:7259
309 +#: includes/class-cache.php:8809
310 310 #: includes/class-purge-ui.php:278
311 311 #: includes/class-purge-ui.php:675
312 312 msgid "Unauthorized."
313 313 msgstr ""
@@ -765,8 +765,9 @@
765 765 msgid "%s is not enabled"
766 766 msgstr ""
767 767
768 768 #: includes/class-purge-runner.php:162
769 +#: assets/admin.js
769 770 msgid "the purge was refused"
770 771 msgstr ""
771 772
772 773 #: includes/class-purge-runner.php:246
@@ -787,40 +788,40 @@
787 788 msgid "CDN"
788 789 msgstr ""
789 790
790 791 #. translators: 1: what asked for the purge, 2: number of files removed.
791 -#: includes/class-purge-runner.php:322
792 +#: includes/class-purge-runner.php:335
792 793 #, php-format
793 794 msgid "Cache purged (%1$s) — %2$d file(s) removed"
794 795 msgstr ""
795 796
796 -#: includes/class-purge-runner.php:346
797 +#: includes/class-purge-runner.php:359
797 798 msgid "the object cache engine is unavailable"
798 799 msgstr ""
799 800
800 -#: includes/class-purge-runner.php:350
801 +#: includes/class-purge-runner.php:363
801 802 msgid "no persistent object cache drop-in is in use"
802 803 msgstr ""
803 804
804 -#: includes/class-purge-runner.php:353
805 +#: includes/class-purge-runner.php:366
805 806 msgid "the drop-in is installed but is not persisting anything"
806 807 msgstr ""
807 808
808 809 #. translators: %s: what asked for the purge.
809 -#: includes/class-purge-runner.php:375
810 +#: includes/class-purge-runner.php:388
810 811 #, php-format
811 812 msgid "Purged object cache (%s)"
812 813 msgstr ""
813 814
814 -#: includes/class-purge-runner.php:385
815 +#: includes/class-purge-runner.php:398
815 816 msgid "the backend refused the flush"
816 817 msgstr ""
817 818
818 -#: includes/class-purge-runner.php:397
819 +#: includes/class-purge-runner.php:410
819 820 msgid "the Cloudflare module is not available"
820 821 msgstr ""
821 822
822 -#: includes/class-purge-runner.php:421
823 +#: includes/class-purge-runner.php:434
823 824 msgid "no CDN with a purge API is configured — xSpeed's CDN module rewrites asset URLs and holds no cache of its own"
824 825 msgstr ""
825 826
826 827 #: includes/class-purge-ui.php:263
@@ -1091,9 +1092,9 @@
1091 1092 msgid "AI Privacy"
1092 1093 msgstr ""
1093 1094
1094 1095 #: includes/modules/AIPrivacy/AIPrivacyModule.php:51
1095 -msgid "Govern whether AI-powered features (Pro) may collect data from your visitors. The off-switch is here in Free because privacy is a fundamental right, not a paid feature."
1096 +msgid "Decide whether AI features may use your visitors' data, and what the consent banner says. Applies even before you install Pro."
1096 1097 msgstr ""
1097 1098
1098 1099 #: includes/modules/AIPrivacy/AIPrivacyModule.php:70
1099 1100 msgid "Require consent before AI data collection"
@@ -1099,9 +1100,9 @@
1099 1100 msgid "Require consent before AI data collection"
1100 1101 msgstr ""
1101 1102
1102 1103 #: includes/modules/AIPrivacy/AIPrivacyModule.php:71
1103 -msgid "When ON, AI-powered features only record data after a visitor accepts the consent banner. When OFF, they collect from every visitor — only legal in regions without GDPR-style consent rules. The setting applies even if Pro is not installed (so a later Pro upgrade respects whichever choice you made)."
1104 +msgid "When ON, AI-powered features only record data after a visitor accepts the consent banner. When OFF, they collect from every visitor — only legal in regions without GDPR-style consent rules. The setting applies even if Pro is not installed (so a later Pro upgrade respects whichever choice you made): privacy is a fundamental right, not a paid feature."
1104 1105 msgstr ""
1105 1106
1106 1107 #: includes/modules/AIPrivacy/AIPrivacyModule.php:76
1107 1108 msgid "Consent banner text"
@@ -1159,20 +1160,28 @@
1159 1160 msgid "Remove the jquery-migrate compatibility shim from non-admin pages. Saves ~10 KB; safe on modern themes / plugins."
1160 1161 msgstr ""
1161 1162
1162 1163 #: includes/modules/Bloat/BloatModule.php:79
1164 +msgid "Strip Block-Editor Styles on Frontend"
1165 +msgstr ""
1166 +
1167 +#: includes/modules/Bloat/BloatModule.php:80
1168 +msgid "Drop editor-only stylesheets (wp-editor, wp-components, and friends) from anonymous pages. A plugin that enqueues them on the frontend usually does so by accident — they can add hundreds of KB of render-blocking CSS. Frontend block styles (wp-block-library) are never touched."
1169 +msgstr ""
1170 +
1171 +#: includes/modules/Bloat/BloatModule.php:85
1163 1172 msgid "Restrict REST API to Logged-In Users"
1164 1173 msgstr ""
1165 1174
1166 -#: includes/modules/Bloat/BloatModule.php:80
1175 +#: includes/modules/Bloat/BloatModule.php:86
1167 1176 msgid "Block /wp-json/ for anonymous requests. WooCommerce checkout, contact-form submissions, and many block-editor previews need anonymous REST — keep this off unless you know your site does not depend on it."
1168 1177 msgstr ""
1169 1178
1170 -#: includes/modules/Bloat/BloatModule.php:180
1179 +#: includes/modules/Bloat/BloatModule.php:239
1171 1180 msgid "Feeds are disabled."
1172 1181 msgstr ""
1173 1182
1174 -#: includes/modules/Bloat/BloatModule.php:229
1183 +#: includes/modules/Bloat/BloatModule.php:288
1175 1184 msgid "Anonymous REST access is disabled on this site."
1176 1185 msgstr ""
1177 1186
1178 1187 #: includes/modules/BrowserCache/BrowserCacheModule.php:32
@@ -1237,56 +1246,88 @@
1237 1246 #: includes/modules/Cache/CacheModule.php:160
1238 1247 msgid "How long cached pages live before regenerating. 1 to 720 hours (30 days)."
1239 1248 msgstr ""
1240 1249
1241 -#: includes/modules/Cache/CacheModule.php:188
1250 +#: includes/modules/Cache/CacheModule.php:190
1242 1251 msgid "Excluded URLs"
1243 1252 msgstr ""
1244 1253
1245 -#: includes/modules/Cache/CacheModule.php:189
1254 +#: includes/modules/Cache/CacheModule.php:191
1246 1255 msgid "One pattern per line. Plain text matches anywhere in the URL (e.g. /cart). Use glob for anchored matches (/cart/* matches /cart/items but not /foo/cart/bar; *.pdf matches PDFs). Prefix with ~ for a raw regex (e.g. ~wp-.*\\.php)."
1247 1256 msgstr ""
1248 1257
1249 -#: includes/modules/Cache/CacheModule.php:198
1258 +#: includes/modules/Cache/CacheModule.php:200
1250 1259 msgid "Excluded Cookies"
1251 1260 msgstr ""
1252 1261
1253 -#: includes/modules/Cache/CacheModule.php:199
1262 +#: includes/modules/Cache/CacheModule.php:201
1254 1263 msgid "Skip cache for any visitor whose request carries a cookie whose NAME matches one of these patterns. Plain text = \"contains\"; glob (woocommerce_*) and ~regex (~wordpress_[a-f0-9]+) supported. One per line."
1255 1264 msgstr ""
1256 1265
1257 -#: includes/modules/Cache/CacheModule.php:205
1266 +#: includes/modules/Cache/CacheModule.php:207
1258 1267 msgid "Bypass User Agents"
1259 1268 msgstr ""
1260 1269
1261 -#: includes/modules/Cache/CacheModule.php:206
1270 +#: includes/modules/Cache/CacheModule.php:208
1262 1271 msgid "Substring match against the visitor User-Agent. Matched UAs bypass cache (useful for screenshot bots, internal previews, monitoring). Glob + ~regex supported. One per line."
1263 1272 msgstr ""
1264 1273
1265 -#: includes/modules/Cache/CacheModule.php:217
1274 +#: includes/modules/Cache/CacheModule.php:219
1266 1275 msgid "Ignored Query Parameters"
1267 1276 msgstr ""
1268 1277
1269 -#: includes/modules/Cache/CacheModule.php:218
1278 +#: includes/modules/Cache/CacheModule.php:220
1270 1279 msgid "Query keys removed from the URL before computing the cache key, so /post?utm_source=x and /post share a cache entry. Defaults cover the common analytics + ad + session params. Each entry matches a whole param name — plain text is an exact name, and glob (utm_*) or ~regex are anchored too, so \"ref\" does not also match \"preference\". One per line."
1271 1280 msgstr ""
1272 1281
1273 -#: includes/modules/Cache/CacheModule.php:223
1282 +#: includes/modules/Cache/CacheModule.php:225
1274 1283 msgid "Purge After Updates"
1275 1284 msgstr ""
1276 1285
1277 -#: includes/modules/Cache/CacheModule.php:224
1286 +#: includes/modules/Cache/CacheModule.php:226
1278 1287 msgid "Clear the page cache when a plugin, theme or WordPress core is updated. Cached HTML is produced by the code being replaced, so leaving it in place serves pre-update markup — and links to minified assets that no longer exist — until the cache expires. Translation updates are ignored, since a language pack changes no markup a cached page depends on. Updates to xSpeed itself always purge, regardless of this setting."
1279 1288 msgstr ""
1280 1289
1281 -#: includes/modules/Cache/CacheModule.php:229
1290 +#: includes/modules/Cache/CacheModule.php:231
1282 1291 msgid "Separate Mobile Cache"
1283 1292 msgstr ""
1284 1293
1285 -#: includes/modules/Cache/CacheModule.php:230
1294 +#: includes/modules/Cache/CacheModule.php:232
1286 1295 msgid "Keep mobile and desktop responses in separate cache buckets. Turn on for AMP, mobile-specific themes (WPtouch / Jetpack mobile theme), or any setup that serves different HTML by device."
1287 1296 msgstr ""
1288 1297
1298 +#: includes/modules/Cache/CacheModule.php:264
1299 +msgid "Cache In Front Of This Site"
1300 +msgstr ""
1301 +
1302 +#: includes/modules/Cache/CacheModule.php:265
1303 +msgid "Ask a CDN or proxy in front of your site not to store pages xSpeed refused to cache. Leave it on Detect automatically unless you know what is in front of you; the marked providers ignore origin headers until you configure them to respect it."
1304 +msgstr ""
1305 +
1306 +#: includes/modules/Cache/CacheModule.php:266
1307 +msgid "Cache in front of this site"
1308 +msgstr ""
1309 +
1310 +#: includes/modules/Cache/CacheModule.php:267
1311 +msgid "Naming your provider narrows the headers to the one it reads. Detect automatically works it out per request and otherwise sends a set every cache ignores unless it understands it, so it is safe not to know. Run \"wp xspeed cache edge\" to see what was detected and what gets sent."
1312 +msgstr ""
1313 +
1314 +#: includes/modules/Cache/CacheModule.php:273
1315 +msgid "Custom Edge Headers"
1316 +msgstr ""
1317 +
1318 +#: includes/modules/Cache/CacheModule.php:275
1319 +msgid "One header per line, as Name: value — for example \"Surrogate-Control: no-store\". Lines starting with # are ignored."
1320 +msgstr ""
1321 +
1322 +#: includes/modules/Cache/CacheModule.php:276
1323 +msgid "Custom edge headers"
1324 +msgstr ""
1325 +
1326 +#: includes/modules/Cache/CacheModule.php:277
1327 +msgid "These replace the headers xSpeed would have picked for your CDN. Two baselines are still added underneath: a Cache-Control, and \"X-Accel-Expires: 0\" for a page cache running in nginx on your own server. Name either one yourself and yours is used instead. Values containing $, % or a backslash are dropped — the same pairs go into nginx and Apache directives, where those cannot be escaped safely. Content-Length, Content-Encoding, Content-Type, Transfer-Encoding, Set-Cookie and Location are refused."
1328 +msgstr ""
1329 +
1289 1330 #: includes/modules/CacheCoverage/CacheCoverageModule.php:36
1290 1331 msgid "Advanced Cache"
1291 1332 msgstr ""
1292 1333
@@ -1329,120 +1370,149 @@
1329 1370 #: includes/modules/Cdn/CdnModule.php:62
1330 1371 msgid "Glob patterns matched against the URL path. Matching URLs stay on the origin. Examples: /wp-admin/*, *.pdf, /private/*"
1331 1372 msgstr ""
1332 1373
1333 -#: includes/modules/Cloudflare/CloudflareModule.php:40
1374 +#: includes/modules/Cloudflare/CloudflareModule.php:77
1334 1375 msgid "Cloudflare"
1335 1376 msgstr ""
1336 1377
1337 -#: includes/modules/Cloudflare/CloudflareModule.php:42
1378 +#: includes/modules/Cloudflare/CloudflareModule.php:79
1338 1379 msgid "Connect a Cloudflare zone for automatic edge purging when xSpeed clears its cache, plus a dev-mode toggle."
1339 1380 msgstr ""
1340 1381
1341 -#: includes/modules/Cloudflare/CloudflareModule.php:65
1382 +#: includes/modules/Cloudflare/CloudflareModule.php:102
1342 1383 msgid "Enable Cloudflare integration"
1343 1384 msgstr ""
1344 1385
1345 -#: includes/modules/Cloudflare/CloudflareModule.php:66
1386 +#: includes/modules/Cloudflare/CloudflareModule.php:103
1346 1387 msgid "Use the credentials below to verify your zone and run purges."
1347 1388 msgstr ""
1348 1389
1349 -#: includes/modules/Cloudflare/CloudflareModule.php:76
1390 +#: includes/modules/Cloudflare/CloudflareModule.php:113
1350 1391 msgid "Authentication"
1351 1392 msgstr ""
1352 1393
1353 -#: includes/modules/Cloudflare/CloudflareModule.php:77
1394 +#: includes/modules/Cloudflare/CloudflareModule.php:114
1354 1395 msgid "API Tokens (scoped, recommended) or the legacy Global API Key with your account email."
1355 1396 msgstr ""
1356 1397
1357 -#: includes/modules/Cloudflare/CloudflareModule.php:83
1398 +#: includes/modules/Cloudflare/CloudflareModule.php:120
1358 1399 msgid "API Token"
1359 1400 msgstr ""
1360 1401
1361 -#: includes/modules/Cloudflare/CloudflareModule.php:84
1402 +#: includes/modules/Cloudflare/CloudflareModule.php:121
1362 1403 msgid "Create a token at dash.cloudflare.com → My Profile → API Tokens. Needs \"Zone → Cache Purge\" + \"Zone Settings\" permissions."
1363 1404 msgstr ""
1364 1405
1365 -#: includes/modules/Cloudflare/CloudflareModule.php:92
1406 +#: includes/modules/Cloudflare/CloudflareModule.php:129
1366 1407 msgid "Account Email"
1367 1408 msgstr ""
1368 1409
1369 -#: includes/modules/Cloudflare/CloudflareModule.php:93
1410 +#: includes/modules/Cloudflare/CloudflareModule.php:130
1370 1411 msgid "Only used when Authentication is set to Global API Key."
1371 1412 msgstr ""
1372 1413
1373 -#: includes/modules/Cloudflare/CloudflareModule.php:99
1414 +#: includes/modules/Cloudflare/CloudflareModule.php:136
1374 1415 msgid "Global API Key"
1375 1416 msgstr ""
1376 1417
1377 -#: includes/modules/Cloudflare/CloudflareModule.php:100
1418 +#: includes/modules/Cloudflare/CloudflareModule.php:137
1378 1419 msgid "Found at dash.cloudflare.com → My Profile → API Tokens → Global API Key."
1379 1420 msgstr ""
1380 1421
1381 -#: includes/modules/Cloudflare/CloudflareModule.php:106
1422 +#: includes/modules/Cloudflare/CloudflareModule.php:143
1382 1423 msgid "Zone ID"
1383 1424 msgstr ""
1384 1425
1385 -#: includes/modules/Cloudflare/CloudflareModule.php:107
1426 +#: includes/modules/Cloudflare/CloudflareModule.php:144
1386 1427 msgid "The 32-character hex Zone ID from your domain overview page."
1387 1428 msgstr ""
1388 1429
1389 -#: includes/modules/Cloudflare/CloudflareModule.php:113
1430 +#: includes/modules/Cloudflare/CloudflareModule.php:150
1390 1431 msgid "Auto-purge Cloudflare on xSpeed purge"
1391 1432 msgstr ""
1392 1433
1393 -#: includes/modules/Cloudflare/CloudflareModule.php:114
1434 +#: includes/modules/Cloudflare/CloudflareModule.php:151
1394 1435 msgid "When xSpeed clears its own cache (post save, settings change, manual purge), trigger a Cloudflare purge too."
1395 1436 msgstr ""
1396 1437
1397 -#: includes/modules/Cloudflare/CloudflareModule.php:238
1438 +#. translators: %d: number of URLs that changed at once.
1439 +#: includes/modules/Cloudflare/CloudflareModule.php:480
1440 +#, php-format
1441 +msgid "Purging the whole Cloudflare zone: %d URLs changed at once, too many to purge individually"
1442 +msgstr ""
1443 +
1444 +#. translators: %d: number of URLs.
1445 +#: includes/modules/Cloudflare/CloudflareModule.php:541
1446 +#, php-format
1447 +msgid "Skipped a queued Cloudflare purge of %d URL: the connection is no longer available"
1448 +msgid_plural "Skipped a queued Cloudflare purge of %d URLs: the connection is no longer available"
1449 +msgstr[0] ""
1450 +msgstr[1] ""
1451 +
1452 +#. translators: %d: number of URLs purged.
1453 +#: includes/modules/Cloudflare/CloudflareModule.php:572
1454 +#, php-format
1455 +msgid "Purged %d URL from the Cloudflare edge cache"
1456 +msgid_plural "Purged %d URLs from the Cloudflare edge cache"
1457 +msgstr[0] ""
1458 +msgstr[1] ""
1459 +
1460 +#. translators: 1: number of URLs, 2: failure reason.
1461 +#: includes/modules/Cloudflare/CloudflareModule.php:588
1462 +#, php-format
1463 +msgid "Cloudflare URL purge failed (%1$d URL(s)): %2$s"
1464 +msgstr ""
1465 +
1466 +#: includes/modules/Cloudflare/CloudflareModule.php:590
1467 +#: includes/modules/Cloudflare/CloudflareModule.php:657
1468 +msgid "unknown error"
1469 +msgstr ""
1470 +
1471 +#: includes/modules/Cloudflare/CloudflareModule.php:606
1398 1472 msgid "the Cloudflare integration is switched off"
1399 1473 msgstr ""
1400 1474
1401 -#: includes/modules/Cloudflare/CloudflareModule.php:241
1475 +#: includes/modules/Cloudflare/CloudflareModule.php:609
1402 1476 msgid "no zone ID or API credentials are configured"
1403 1477 msgstr ""
1404 1478
1405 1479 #. translators: %s: what asked for the purge.
1406 -#: includes/modules/Cloudflare/CloudflareModule.php:277
1480 +#: includes/modules/Cloudflare/CloudflareModule.php:645
1407 1481 #, php-format
1408 1482 msgid "Purged the Cloudflare edge cache (%s)"
1409 1483 msgstr ""
1410 1484
1411 1485 #. translators: 1: what asked for the purge, 2: failure reason.
1412 -#: includes/modules/Cloudflare/CloudflareModule.php:287
1486 +#: includes/modules/Cloudflare/CloudflareModule.php:655
1413 1487 #, php-format
1414 1488 msgid "Cloudflare purge failed (%1$s): %2$s"
1415 1489 msgstr ""
1416 1490
1417 -#: includes/modules/Cloudflare/CloudflareModule.php:289
1418 -msgid "unknown error"
1419 -msgstr ""
1420 -
1421 -#: includes/modules/Cloudflare/CloudflareModule.php:359
1491 +#: includes/modules/Cloudflare/CloudflareModule.php:727
1422 1492 msgid "Cloudflare is not fully configured."
1423 1493 msgstr ""
1424 1494
1425 -#: includes/modules/Cloudflare/CloudflareModule.php:360
1495 +#: includes/modules/Cloudflare/CloudflareModule.php:728
1426 1496 msgid "Add your API token (or Global API Key + account email) and the Zone ID, then press Verify. Until then auto-purge does nothing."
1427 1497 msgstr ""
1428 1498
1429 -#: includes/modules/Cloudflare/CloudflareModule.php:373
1499 +#: includes/modules/Cloudflare/CloudflareModule.php:741
1430 1500 msgid "Cloudflare purge is failing."
1431 1501 msgstr ""
1432 1502
1433 1503 #. translators: %s: the Cloudflare API error message, or empty.
1434 -#: includes/modules/Cloudflare/CloudflareModule.php:376
1504 +#: includes/modules/Cloudflare/CloudflareModule.php:744
1435 1505 #, php-format
1436 1506 msgid "The last edge purge was rejected by Cloudflare%s. Confirm the API token includes the \"Zone → Cache Purge\" permission for this zone — a token that can read the zone can still lack purge rights."
1437 1507 msgstr ""
1438 1508
1439 -#: includes/modules/Cloudflare/CloudflareModule.php:385
1509 +#: includes/modules/Cloudflare/CloudflareModule.php:753
1440 1510 msgid "Cloudflare credentials were rejected."
1441 1511 msgstr ""
1442 1512
1443 1513 #. translators: %s: the Cloudflare API error message, or empty.
1444 -#: includes/modules/Cloudflare/CloudflareModule.php:388
1514 +#: includes/modules/Cloudflare/CloudflareModule.php:756
1445 1515 #, php-format
1446 1516 msgid "The saved credentials could not verify this zone%s. Auto-purge will not work until this is fixed."
1447 1517 msgstr ""
1448 1518
@@ -1745,88 +1815,92 @@
1745 1815 #, php-format
1746 1816 msgid "Unknown command: %s. Call list_commands to see what is available."
1747 1817 msgstr ""
1748 1818
1749 -#: includes/modules/Mcp/McpModule.php:111
1819 +#: includes/modules/Mcp/McpModule.php:149
1750 1820 #: assets/admin.js
1751 1821 msgid "MCP Server"
1752 1822 msgstr ""
1753 1823
1754 -#: includes/modules/Mcp/McpModule.php:113
1755 -msgid "Control this site's cache from Claude and other AI agents."
1824 +#: includes/modules/Mcp/McpModule.php:151
1825 +msgid "Let Claude or another AI agent run this site — purge, check stats, change settings. This is the only thing you connect an AI to, and it is free with no API key."
1756 1826 msgstr ""
1757 1827
1758 -#: includes/modules/Mcp/McpModule.php:979
1828 +#: includes/modules/Mcp/McpModule.php:440
1829 +msgid "Another plugin now claims the site-wide OAuth discovery address, so xSpeed handed it over. Its own is /.well-known/oauth-protected-resource/xspeed/mcp — AI assistants already connected may ask for approval once more."
1830 +msgstr ""
1831 +
1832 +#: includes/modules/Mcp/McpModule.php:1307
1759 1833 msgid "Invalid or expired attach request."
1760 1834 msgstr ""
1761 1835
1762 -#: includes/modules/Mcp/McpModule.php:1093
1836 +#: includes/modules/Mcp/McpModule.php:1423
1763 1837 msgid "You must be an administrator to authorize an AI agent to control this site."
1764 1838 msgstr ""
1765 1839
1766 -#: includes/modules/Mcp/McpModule.php:1100
1840 +#: includes/modules/Mcp/McpModule.php:1430
1767 1841 msgid "Security check failed. Please try connecting again."
1768 1842 msgstr ""
1769 1843
1770 -#: includes/modules/Mcp/McpModule.php:1227
1844 +#: includes/modules/Mcp/McpModule.php:1557
1771 1845 msgid "Read-only — inspect cache status and settings."
1772 1846 msgstr ""
1773 1847
1774 -#: includes/modules/Mcp/McpModule.php:1228
1848 +#: includes/modules/Mcp/McpModule.php:1558
1775 1849 msgid "Read & write — purge caches, toggle caching, and change settings."
1776 1850 msgstr ""
1777 1851
1778 -#: includes/modules/Mcp/McpModule.php:1229
1852 +#: includes/modules/Mcp/McpModule.php:1559
1779 1853 msgid "An AI agent"
1780 1854 msgstr ""
1781 1855
1782 -#: includes/modules/Mcp/McpModule.php:1248
1856 +#: includes/modules/Mcp/McpModule.php:1578
1783 1857 msgid "Authorize AI access"
1784 1858 msgstr ""
1785 1859
1786 -#: includes/modules/Mcp/McpModule.php:1259
1860 +#: includes/modules/Mcp/McpModule.php:1589
1787 1861 msgid "Connect to xSpeed"
1788 1862 msgstr ""
1789 1863
1790 1864 #. translators: %s: AI client name.
1791 -#: includes/modules/Mcp/McpModule.php:1261
1865 +#: includes/modules/Mcp/McpModule.php:1591
1792 1866 #, php-format
1793 1867 msgid "%s wants to manage the cache on this site."
1794 1868 msgstr ""
1795 1869
1796 -#: includes/modules/Mcp/McpModule.php:1262
1870 +#: includes/modules/Mcp/McpModule.php:1592
1797 1871 msgid "Site"
1798 1872 msgstr ""
1799 1873
1800 -#: includes/modules/Mcp/McpModule.php:1263
1874 +#: includes/modules/Mcp/McpModule.php:1593
1801 1875 msgid "Signed in as"
1802 1876 msgstr ""
1803 1877
1804 -#: includes/modules/Mcp/McpModule.php:1264
1878 +#: includes/modules/Mcp/McpModule.php:1594
1805 1879 msgid "Access"
1806 1880 msgstr ""
1807 1881
1808 -#: includes/modules/Mcp/McpModule.php:1269
1882 +#: includes/modules/Mcp/McpModule.php:1599
1809 1883 msgid "Deny"
1810 1884 msgstr ""
1811 1885
1812 -#: includes/modules/Mcp/McpModule.php:1270
1886 +#: includes/modules/Mcp/McpModule.php:1600
1813 1887 msgid "Approve"
1814 1888 msgstr ""
1815 1889
1816 -#: includes/modules/Mcp/McpModule.php:1280
1890 +#: includes/modules/Mcp/McpModule.php:1610
1817 1891 msgid "Authorization error"
1818 1892 msgstr ""
1819 1893
1820 -#: includes/modules/Mcp/McpModule.php:1283
1894 +#: includes/modules/Mcp/McpModule.php:1613
1821 1895 msgid "Could not authorize"
1822 1896 msgstr ""
1823 1897
1824 -#: includes/modules/Mcp/McpModule.php:1513
1898 +#: includes/modules/Mcp/McpModule.php:1843
1825 1899 msgid "An AI assistant is connected to this site. This module counts as on whenever a connection token exists, rather than having its own on/off setting."
1826 1900 msgstr ""
1827 1901
1828 -#: includes/modules/Mcp/McpModule.php:1514
1902 +#: includes/modules/Mcp/McpModule.php:1844
1829 1903 msgid "No AI assistant is connected. This module counts as on once you connect one."
1830 1904 msgstr ""
1831 1905
1832 1906 #: includes/modules/Mcp/Mcp_Auth.php:57
@@ -1845,47 +1919,47 @@
1845 1919 #: assets/admin.js
1846 1920 msgid "The test could not be started."
1847 1921 msgstr ""
1848 1922
1849 -#: includes/modules/Mcp/Mcp_OAuth.php:213
1923 +#: includes/modules/Mcp/Mcp_OAuth.php:261
1850 1924 msgid "Too many client registrations. Try again later."
1851 1925 msgstr ""
1852 1926
1853 1927 #. translators: %d: maximum number of redirect URIs.
1854 -#: includes/modules/Mcp/Mcp_OAuth.php:229
1928 +#: includes/modules/Mcp/Mcp_OAuth.php:277
1855 1929 #, php-format
1856 1930 msgid "At most %d redirect_uris are allowed."
1857 1931 msgstr ""
1858 1932
1859 -#: includes/modules/Mcp/Mcp_OAuth.php:241
1933 +#: includes/modules/Mcp/Mcp_OAuth.php:289
1860 1934 msgid "At least one valid redirect_uri is required."
1861 1935 msgstr ""
1862 1936
1863 -#: includes/modules/Mcp/Mcp_OAuth.php:278
1937 +#: includes/modules/Mcp/Mcp_OAuth.php:326
1864 1938 msgid "Client registration limit reached."
1865 1939 msgstr ""
1866 1940
1867 -#: includes/modules/Mcp/Mcp_OAuth.php:297
1941 +#: includes/modules/Mcp/Mcp_OAuth.php:345
1868 1942 msgid "The client registration could not be stored."
1869 1943 msgstr ""
1870 1944
1871 -#: includes/modules/Mcp/Mcp_OAuth.php:336
1945 +#: includes/modules/Mcp/Mcp_OAuth.php:384
1872 1946 msgid "Unknown client_id."
1873 1947 msgstr ""
1874 1948
1875 -#: includes/modules/Mcp/Mcp_OAuth.php:340
1949 +#: includes/modules/Mcp/Mcp_OAuth.php:388
1876 1950 msgid "redirect_uri does not match a registered value."
1877 1951 msgstr ""
1878 1952
1879 -#: includes/modules/Mcp/Mcp_OAuth.php:343
1953 +#: includes/modules/Mcp/Mcp_OAuth.php:391
1880 1954 msgid "Only response_type=code is supported."
1881 1955 msgstr ""
1882 1956
1883 -#: includes/modules/Mcp/Mcp_OAuth.php:347
1957 +#: includes/modules/Mcp/Mcp_OAuth.php:395
1884 1958 msgid "PKCE with code_challenge_method=S256 is required."
1885 1959 msgstr ""
1886 1960
1887 -#: includes/modules/Mcp/Mcp_Pairing.php:408
1961 +#: includes/modules/Mcp/Mcp_Pairing.php:451
1888 1962 msgid "No active MCP connection to change. Connect first."
1889 1963 msgstr ""
1890 1964
1891 1965 #. translators: %s: tool name.
@@ -2472,8 +2546,56 @@
2472 2546 #: includes/modules/Preloader/PreloaderModule.php:268
2473 2547 msgid "Enable the preloader before starting a crawl."
2474 2548 msgstr ""
2475 2549
2550 +#: includes/modules/Privacy/PrivacyModule.php:47
2551 +msgid "Privacy & usage data"
2552 +msgstr ""
2553 +
2554 +#: includes/modules/Privacy/PrivacyModule.php:49
2555 +msgid "Control the anonymous usage analytics you were asked about in the setup wizard."
2556 +msgstr ""
2557 +
2558 +#: includes/modules/Privacy/PrivacyModule.php:58
2559 +msgid "Share anonymous usage data"
2560 +msgstr ""
2561 +
2562 +#: includes/modules/Privacy/PrivacyModule.php:59
2563 +msgid "Share anonymous basics — WordPress & PHP version, active theme & plugins, server type, and which features you enable. Never personal data or page content. Turning this off stops all collection and clears the scheduled send."
2564 +msgstr ""
2565 +
2566 +#: includes/modules/RenderSkip/RenderSkipModule.php:71
2567 +msgid "Render Skip"
2568 +msgstr ""
2569 +
2570 +#: includes/modules/RenderSkip/RenderSkipModule.php:73
2571 +msgid "Skip the browser's style & layout work for below-fold sections until the visitor scrolls near them — cuts main-thread blocking time on long builder pages without changing the content."
2572 +msgstr ""
2573 +
2574 +#: includes/modules/RenderSkip/RenderSkipModule.php:82
2575 +msgid "Skip below-fold rendering"
2576 +msgstr ""
2577 +
2578 +#: includes/modules/RenderSkip/RenderSkipModule.php:83
2579 +msgid "Stamp below-fold sections with content-visibility: auto so the browser defers their style and layout work until scroll approaches. Above-fold sections are never touched."
2580 +msgstr ""
2581 +
2582 +#: includes/modules/RenderSkip/RenderSkipModule.php:90
2583 +msgid "Above-fold sections"
2584 +msgstr ""
2585 +
2586 +#: includes/modules/RenderSkip/RenderSkipModule.php:91
2587 +msgid "How many top-level sections from the top of the page are treated as above the fold and left untouched. Raise this if a section near the top appears late."
2588 +msgstr ""
2589 +
2590 +#: includes/modules/RenderSkip/RenderSkipModule.php:96
2591 +msgid "Section classes"
2592 +msgstr ""
2593 +
2594 +#: includes/modules/RenderSkip/RenderSkipModule.php:97
2595 +msgid "Class names that identify a top-level page section. Defaults cover Elementor sections and flexbox containers; add your theme's section class for non-Elementor pages."
2596 +msgstr ""
2597 +
2476 2598 #: includes/modules/ResourceHints/ResourceHintsModule.php:60
2477 2599 msgid "Resource Hints"
2478 2600 msgstr ""
2479 2601
@@ -2664,8 +2786,13 @@
2664 2786 #: assets/admin.js
2665 2787 msgid "%s currently owns the page-cache file. xSpeed will replace it and serve the cached pages itself."
2666 2788 msgstr ""
2667 2789
2790 +#. Source: src/components/purgeOutcome.ts:45
2791 +#: assets/admin.js
2792 +msgid "%s: %s"
2793 +msgstr ""
2794 +
2668 2795 #. Source: src/components/health/HealthCard.tsx:172
2669 2796 #: assets/admin.js
2670 2797 msgid "24-hour cache request volume"
2671 2798 msgstr ""
@@ -2689,9 +2816,9 @@
2689 2816 #: assets/admin.js
2690 2817 msgid "A key is saved. Type to replace it; use ✕ to remove it."
2691 2818 msgstr ""
2692 2819
2693 -#. Source: src/components/cache/CacheHero.tsx:243
2820 +#. Source: src/components/cache/CacheHero.tsx:238
2694 2821 #: assets/admin.js
2695 2822 msgid "Absorbed"
2696 2823 msgstr ""
2697 2824
@@ -2700,9 +2827,9 @@
2700 2827 msgid "Action"
2701 2828 msgstr ""
2702 2829
2703 2830 #. Source: src/components/Sidebar.tsx:424
2704 -#. Source: src/components/Sidebar.tsx:442
2831 +#. Source: src/components/Sidebar.tsx:445
2705 2832 #. Source: src/upsell/ProOverview.tsx:73
2706 2833 #: assets/admin.js
2707 2834 msgid "Activate License"
2708 2835 msgstr ""
@@ -2707,10 +2834,10 @@
2707 2834 msgid "Activate License"
2708 2835 msgstr ""
2709 2836
2710 2837 #. Source: src/upsell/LockedPanel.tsx:104
2711 -#. Source: src/upsell/LockedSection.tsx:87
2712 -#. Source: src/upsell/ProDemo.tsx:91
2838 +#. Source: src/upsell/LockedSection.tsx:88
2839 +#. Source: src/upsell/ProDemo.tsx:92
2713 2840 #: assets/admin.js
2714 2841 msgid "Activate your license"
2715 2842 msgstr ""
2716 2843
@@ -2724,9 +2851,9 @@
2724 2851 #: assets/admin.js
2725 2852 msgid "Add site form"
2726 2853 msgstr ""
2727 2854
2728 -#. Source: src/components/cache/StatDrilldown.tsx:197
2855 +#. Source: src/components/cache/StatDrilldown.tsx:192
2729 2856 #: assets/admin.js
2730 2857 msgid "Address not recorded"
2731 2858 msgstr ""
2732 2859
@@ -2734,9 +2861,9 @@
2734 2861 #: assets/admin.js
2735 2862 msgid "After"
2736 2863 msgstr ""
2737 2864
2738 -#. Source: src/components/cache/StatDrilldown.tsx:168
2865 +#. Source: src/components/cache/StatDrilldown.tsx:163
2739 2866 #: assets/admin.js
2740 2867 msgid "Age"
2741 2868 msgstr ""
2742 2869
@@ -2751,14 +2878,24 @@
2751 2878 #: assets/admin.js
2752 2879 msgid "AI connection active"
2753 2880 msgstr ""
2754 2881
2882 +#. Source: src/components/TopBar.tsx:175
2883 +#: assets/admin.js
2884 +msgid "Already empty"
2885 +msgstr ""
2886 +
2887 +#. Source: src/components/purgeOutcome.ts:57
2888 +#: assets/admin.js
2889 +msgid "Also cleared: %s."
2890 +msgstr ""
2891 +
2755 2892 #. Source: src/components/overview/Recommendations.tsx:181
2756 2893 #: assets/admin.js
2757 2894 msgid "Also worth a look"
2758 2895 msgstr ""
2759 2896
2760 -#. Source: src/components/cache/CacheHero.tsx:236
2897 +#. Source: src/components/cache/CacheHero.tsx:231
2761 2898 #: assets/admin.js
2762 2899 msgid "An edge cache (Cloudflare) is in front, so this hit ratio is origin-layer only — hits served at the edge never reach the origin and aren’t counted here."
2763 2900 msgstr ""
2764 2901
@@ -2802,14 +2939,14 @@
2802 2939 #: assets/admin.js
2803 2940 msgid "Audit failed"
2804 2941 msgstr ""
2805 2942
2806 -#. Source: src/components/cache/StatDrilldown.tsx:330
2943 +#. Source: src/components/cache/StatDrilldown.tsx:325
2807 2944 #: assets/admin.js
2808 2945 msgid "Automatic cleanup has not run yet — first sweep in %s."
2809 2946 msgstr ""
2810 2947
2811 -#. Source: src/components/cache/StatDrilldown.tsx:322
2948 +#. Source: src/components/cache/StatDrilldown.tsx:317
2812 2949 #: assets/admin.js
2813 2950 msgid "Automatic cleanup ran %1$s ago — %2$d file(s) removed, %3$d in total."
2814 2951 msgstr ""
2815 2952
@@ -2827,14 +2964,14 @@
2827 2964 #: assets/admin.js
2828 2965 msgid "Benchmark failed"
2829 2966 msgstr ""
2830 2967
2831 -#. Source: src/components/cache/TrendCharts.tsx:258
2968 +#. Source: src/components/cache/TrendCharts.tsx:263
2832 2969 #: assets/admin.js
2833 2970 msgid "Benchmark trend"
2834 2971 msgstr ""
2835 2972
2836 -#. Source: src/components/cache/TrendCharts.tsx:134
2973 +#. Source: src/components/cache/TrendCharts.tsx:139
2837 2974 #: assets/admin.js
2838 2975 msgid "Benchmark: cached vs uncached (ms)"
2839 2976 msgstr ""
2840 2977
@@ -2847,14 +2984,14 @@
2847 2984 #: assets/admin.js
2848 2985 msgid "Book a free setup review with our team."
2849 2986 msgstr ""
2850 2987
2851 -#. Source: src/components/cache/CacheHero.tsx:247
2988 +#. Source: src/components/cache/CacheHero.tsx:242
2852 2989 #: assets/admin.js
2853 2990 msgid "bot / 404 requests in 24h — excluded from the hit ratio."
2854 2991 msgstr ""
2855 2992
2856 -#. Source: src/components/TopBar.tsx:77
2993 +#. Source: src/components/TopBar.tsx:81
2857 2994 #: assets/admin.js
2858 2995 msgid "Breadcrumb"
2859 2996 msgstr ""
2860 2997
@@ -2862,15 +2999,34 @@
2862 2999 #: assets/admin.js
2863 3000 msgid "Browse all"
2864 3001 msgstr ""
2865 3002
2866 -#. Source: src/components/sidebarGroups.ts:69
3003 +#. Source: src/components/sidebarGroups.ts:79
2867 3004 #: assets/admin.js
2868 3005 msgid "Cache"
2869 3006 msgstr ""
2870 3007
2871 -#. Source: src/App.tsx:309
3008 +#. Source: src/components/purgeOutcome.ts:84
2872 3009 #: assets/admin.js
3010 +msgid "Cache cleared: %d file (%s)."
3011 +msgid_plural "Cache cleared: %d files (%s)."
3012 +msgstr[0] ""
3013 +msgstr[1] ""
3014 +
3015 +#. Source: src/components/purgeOutcome.ts:91
3016 +#: assets/admin.js
3017 +msgid "Cache cleared: %d file."
3018 +msgid_plural "Cache cleared: %d files."
3019 +msgstr[0] ""
3020 +msgstr[1] ""
3021 +
3022 +#. Source: src/components/purgeOutcome.ts:80
3023 +#: assets/admin.js
3024 +msgid "Cache cleared."
3025 +msgstr ""
3026 +
3027 +#. Source: src/App.tsx:331
3028 +#: assets/admin.js
2873 3029 msgid "Cache could not be enabled."
2874 3030 msgstr ""
2875 3031
2876 3032 #. Source: src/components/health/HealthHero.tsx:28
@@ -2877,19 +3033,19 @@
2877 3033 #: assets/admin.js
2878 3034 msgid "Cache coverage"
2879 3035 msgstr ""
2880 3036
2881 -#. Source: src/App.tsx:321
3037 +#. Source: src/App.tsx:343
2882 3038 #: assets/admin.js
2883 3039 msgid "Cache disabled"
2884 3040 msgstr ""
2885 3041
2886 -#. Source: src/App.tsx:321
3042 +#. Source: src/App.tsx:343
2887 3043 #: assets/admin.js
2888 3044 msgid "Cache enabled"
2889 3045 msgstr ""
2890 3046
2891 -#. Source: src/App.tsx:315
3047 +#. Source: src/App.tsx:337
2892 3048 #: assets/admin.js
2893 3049 msgid "Cache enabled, but nothing will be cached until WP_CACHE is added to wp-config.php — copy the line from Health."
2894 3050 msgstr ""
2895 3051
@@ -2922,10 +3078,15 @@
2922 3078 #: assets/admin.js
2923 3079 msgid "Cache optimized"
2924 3080 msgstr ""
2925 3081
2926 -#. Source: src/App.tsx:339
3082 +#. Source: src/components/purgeOutcome.ts:53
2927 3083 #: assets/admin.js
3084 +msgid "Cache partly cleared."
3085 +msgstr ""
3086 +
3087 +#. Source: src/components/purgeOutcome.ts:29
3088 +#: assets/admin.js
2928 3089 msgid "Cache purged"
2929 3090 msgstr ""
2930 3091
2931 3092 #. Source: src/components/health/HealthHero.tsx:30
@@ -2943,14 +3104,14 @@
2943 3104 #: assets/admin.js
2944 3105 msgid "Cache, compression & more"
2945 3106 msgstr ""
2946 3107
2947 -#. Source: src/components/cache/TrendCharts.tsx:270
3108 +#. Source: src/components/cache/TrendCharts.tsx:275
2948 3109 #: assets/admin.js
2949 3110 msgid "cached"
2950 3111 msgstr ""
2951 3112
2952 -#. Source: src/components/cache/StatDrilldown.tsx:145
3113 +#. Source: src/components/cache/StatDrilldown.tsx:140
2953 3114 #. Source: src/components/health/HealthHero.tsx:29
2954 3115 #. Source: src/components/overview/MetricGrid.tsx:45
2955 3116 #: assets/admin.js
2956 3117 msgid "Cached pages"
@@ -2971,14 +3132,14 @@
2971 3132 msgid "Caching — loading"
2972 3133 msgstr ""
2973 3134
2974 3135 #. Source: src/components/CacheSwitch.tsx:261
2975 -#. Source: src/components/cache/CacheHero.tsx:182
3136 +#. Source: src/components/cache/CacheHero.tsx:177
2976 3137 #: assets/admin.js
2977 3138 msgid "Cancel"
2978 3139 msgstr ""
2979 3140
2980 -#. Source: src/components/sidebarGroups.ts:85
3141 +#. Source: src/components/sidebarGroups.ts:95
2981 3142 #: assets/admin.js
2982 3143 msgid "CDN and Cloudflare edge delivery."
2983 3144 msgstr ""
2984 3145
@@ -3011,8 +3172,18 @@
3011 3172 #: assets/admin.js
3012 3173 msgid "Clear"
3013 3174 msgstr ""
3014 3175
3176 +#. Source: src/components/TopBar.tsx:173
3177 +#: assets/admin.js
3178 +msgid "Cleared"
3179 +msgstr ""
3180 +
3181 +#. Source: src/components/purgeOutcome.ts:62
3182 +#: assets/admin.js
3183 +msgid "Cleared: %s."
3184 +msgstr ""
3185 +
3015 3186 #. Source: src/components/cache/CacheBenchmark.tsx:126
3016 3187 #: assets/admin.js
3017 3188 msgid "Click \"Run benchmark\" to compare load times."
3018 3189 msgstr ""
@@ -3063,10 +3234,15 @@
3063 3234 #: assets/admin.js
3064 3235 msgid "Connect"
3065 3236 msgstr ""
3066 3237
3067 -#. Source: src/components/TopBar.tsx:142
3238 +#. Source: src/components/sidebarGroups.ts:120
3068 3239 #: assets/admin.js
3240 +msgid "Connect an AI agent to this site, and control what AI features may use."
3241 +msgstr ""
3242 +
3243 +#. Source: src/components/TopBar.tsx:138
3244 +#: assets/admin.js
3069 3245 msgid "Connect Hub"
3070 3246 msgstr ""
3071 3247
3072 3248 #. Source: src/components/score/ConnectHubModal.tsx:113
@@ -3179,9 +3355,9 @@
3179 3355 #: assets/admin.js
3180 3356 msgid "Could not check the test status."
3181 3357 msgstr ""
3182 3358
3183 -#. Source: src/components/sidebarGroups.ts:99
3359 +#. Source: src/components/sidebarGroups.ts:109
3184 3360 #: assets/admin.js
3185 3361 msgid "Database cleanup, migration and logs."
3186 3362 msgstr ""
3187 3363
@@ -3252,19 +3428,19 @@
3252 3428 #: assets/admin.js
3253 3429 msgid "failed"
3254 3430 msgstr ""
3255 3431
3256 -#. Source: src/App.tsx:325
3432 +#. Source: src/App.tsx:347
3257 3433 #: assets/admin.js
3258 3434 msgid "Failed to disable cache"
3259 3435 msgstr ""
3260 3436
3261 -#. Source: src/App.tsx:325
3437 +#. Source: src/App.tsx:347
3262 3438 #: assets/admin.js
3263 3439 msgid "Failed to enable cache"
3264 3440 msgstr ""
3265 3441
3266 -#. Source: src/App.tsx:273
3442 +#. Source: src/App.tsx:286
3267 3443 #: assets/admin.js
3268 3444 msgid "Failed to load"
3269 3445 msgstr ""
3270 3446
@@ -3318,9 +3494,9 @@
3318 3494 #: assets/admin.js
3319 3495 msgid "Go to Dashboard"
3320 3496 msgstr ""
3321 3497
3322 -#. Source: src/onboarding/OnboardingApp.tsx:161
3498 +#. Source: src/onboarding/OnboardingApp.tsx:168
3323 3499 #: assets/admin.js
3324 3500 msgid "Go to the dashboard"
3325 3501 msgstr ""
3326 3502
@@ -3339,9 +3515,9 @@
3339 3515 #: assets/admin.js
3340 3516 msgid "GTmetrix test"
3341 3517 msgstr ""
3342 3518
3343 -#. Source: src/components/sidebarGroups.ts:90
3519 +#. Source: src/components/sidebarGroups.ts:100
3344 3520 #: assets/admin.js
3345 3521 msgid "Health & insights"
3346 3522 msgstr ""
3347 3523
@@ -3364,9 +3540,9 @@
3364 3540 #: assets/admin.js
3365 3541 msgid "Hide"
3366 3542 msgstr ""
3367 3543
3368 -#. Source: src/components/cache/TrendCharts.tsx:120
3544 +#. Source: src/components/cache/TrendCharts.tsx:125
3369 3545 #. Source: src/components/health/HealthHero.tsx:37
3370 3546 #. Source: src/components/overview/MetricGrid.tsx:44
3371 3547 #: assets/admin.js
3372 3548 msgid "Hit ratio"
@@ -3371,14 +3547,14 @@
3371 3547 #: assets/admin.js
3372 3548 msgid "Hit ratio"
3373 3549 msgstr ""
3374 3550
3375 -#. Source: src/components/cache/CacheHero.tsx:222
3551 +#. Source: src/components/cache/CacheHero.tsx:217
3376 3552 #: assets/admin.js
3377 3553 msgid "Hit Ratio · 24h"
3378 3554 msgstr ""
3379 3555
3380 -#. Source: src/components/cache/CacheHero.tsx:222
3556 +#. Source: src/components/cache/CacheHero.tsx:217
3381 3557 #: assets/admin.js
3382 3558 msgid "Hit Ratio · 24h · origin"
3383 3559 msgstr ""
3384 3560
@@ -3386,9 +3562,9 @@
3386 3562 #: assets/admin.js
3387 3563 msgid "Hit ratio and benchmark history, with your settings changes marked."
3388 3564 msgstr ""
3389 3565
3390 -#. Source: src/components/cache/TrendCharts.tsx:222
3566 +#. Source: src/components/cache/TrendCharts.tsx:227
3391 3567 #: assets/admin.js
3392 3568 msgid "Hit ratio trend"
3393 3569 msgstr ""
3394 3570
@@ -3406,18 +3582,13 @@
3406 3582 #: assets/admin.js
3407 3583 msgid "hrs"
3408 3584 msgstr ""
3409 3585
3410 -#. Source: src/components/TopBar.tsx:142
3586 +#. Source: src/components/TopBar.tsx:138
3411 3587 #: assets/admin.js
3412 3588 msgid "Hub connected"
3413 3589 msgstr ""
3414 3590
3415 -#. Source: src/components/sidebarGroups.ts:106
3416 -#: assets/admin.js
3417 -msgid "Hub, MCP access, AI provider and privacy."
3418 -msgstr ""
3419 -
3420 3591 #. Source: src/onboarding/steps/Connect.tsx:132
3421 3592 #: assets/admin.js
3422 3593 msgid "I'll connect later"
3423 3594 msgstr ""
@@ -3436,9 +3607,9 @@
3436 3607 #: assets/admin.js
3437 3608 msgid "It takes a few seconds."
3438 3609 msgstr ""
3439 3610
3440 -#. Source: src/components/cache/CacheHero.tsx:225
3611 +#. Source: src/components/cache/CacheHero.tsx:220
3441 3612 #: assets/admin.js
3442 3613 msgid "jump to the hit-ratio trend"
3443 3614 msgstr ""
3444 3615
@@ -3476,9 +3647,9 @@
3476 3647 #: assets/admin.js
3477 3648 msgid "Last purged"
3478 3649 msgstr ""
3479 3650
3480 -#. Source: src/components/cache/TrendCharts.tsx:236
3651 +#. Source: src/components/cache/TrendCharts.tsx:241
3481 3652 #: assets/admin.js
3482 3653 msgid "Latest"
3483 3654 msgstr ""
3484 3655
@@ -3486,15 +3657,15 @@
3486 3657 #: assets/admin.js
3487 3658 msgid "Learn more about Pro"
3488 3659 msgstr ""
3489 3660
3490 -#. Source: src/upsell/LockedSection.tsx:69
3491 -#. Source: src/upsell/ProDemo.tsx:59
3661 +#. Source: src/upsell/LockedSection.tsx:70
3662 +#. Source: src/upsell/ProDemo.tsx:60
3492 3663 #: assets/admin.js
3493 3664 msgid "License"
3494 3665 msgstr ""
3495 3666
3496 -#. Source: src/components/sidebarGroups.ts:113
3667 +#. Source: src/components/sidebarGroups.ts:128
3497 3668 #: assets/admin.js
3498 3669 msgid "License, branding, multisite and support."
3499 3670 msgstr ""
3500 3671
@@ -3507,9 +3678,9 @@
3507 3678 #: assets/admin.js
3508 3679 msgid "Lighthouse performance, out of 100"
3509 3680 msgstr ""
3510 3681
3511 -#. Source: src/App.tsx:384
3682 +#. Source: src/App.tsx:456
3512 3683 #. Source: src/components/GroupLanding.tsx:67
3513 3684 #. Source: src/components/LogsView.tsx:35
3514 3685 #: assets/admin.js
3515 3686 msgid "Logs"
@@ -3576,9 +3747,9 @@
3576 3747 #: assets/admin.js
3577 3748 msgid "min"
3578 3749 msgstr ""
3579 3750
3580 -#. Source: src/components/sidebarGroups.ts:78
3751 +#. Source: src/components/sidebarGroups.ts:88
3581 3752 #: assets/admin.js
3582 3753 msgid "Minify, compress, lazy-load, fonts and hints."
3583 3754 msgstr ""
3584 3755
@@ -3620,9 +3791,9 @@
3620 3791 #: assets/admin.js
3621 3792 msgid "Negligible difference — page is cheap to render or cache is cold."
3622 3793 msgstr ""
3623 3794
3624 -#. Source: src/components/sidebarGroups.ts:83
3795 +#. Source: src/components/sidebarGroups.ts:93
3625 3796 #: assets/admin.js
3626 3797 msgid "Network"
3627 3798 msgstr ""
3628 3799
@@ -3691,9 +3862,9 @@
3691 3862 #: assets/admin.js
3692 3863 msgid "No performance score measured yet"
3693 3864 msgstr ""
3694 3865
3695 -#. Source: src/components/cache/StatDrilldown.tsx:343
3866 +#. Source: src/components/cache/StatDrilldown.tsx:338
3696 3867 #: assets/admin.js
3697 3868 msgid "No purges recorded yet."
3698 3869 msgstr ""
3699 3870
@@ -3726,9 +3897,9 @@
3726 3897 #: assets/admin.js
3727 3898 msgid "Not now"
3728 3899 msgstr ""
3729 3900
3730 -#. Source: src/components/cache/StatDrilldown.tsx:149
3901 +#. Source: src/components/cache/StatDrilldown.tsx:144
3731 3902 #: assets/admin.js
3732 3903 msgid "Nothing cached yet. Visit a page as a logged-out visitor to warm the cache."
3733 3904 msgstr ""
3734 3905
@@ -3736,9 +3907,9 @@
3736 3907 #: assets/admin.js
3737 3908 msgid "Nothing is sent anywhere until you press this."
3738 3909 msgstr ""
3739 3910
3740 -#. Source: src/components/cache/StatDrilldown.tsx:252
3911 +#. Source: src/components/cache/StatDrilldown.tsx:247
3741 3912 #: assets/admin.js
3742 3913 msgid "Nothing on disk yet."
3743 3914 msgstr ""
3744 3915
@@ -3756,9 +3927,9 @@
3756 3927 #. Source: src/components/Sidebar.tsx:334
3757 3928 #. Source: src/components/Sidebar.tsx:335
3758 3929 #. Source: src/components/Sidebar.tsx:370
3759 3930 #. Source: src/components/Sidebar.tsx:371
3760 -#. Source: src/components/cache/StatDrilldown.tsx:216
3931 +#. Source: src/components/cache/StatDrilldown.tsx:211
3761 3932 #: assets/admin.js
3762 3933 msgid "of"
3763 3934 msgstr ""
3764 3935
@@ -3806,9 +3977,9 @@
3806 3977 #: assets/admin.js
3807 3978 msgid "on your xSpeed Hub account."
3808 3979 msgstr ""
3809 3980
3810 -#. Source: src/onboarding/OnboardingApp.tsx:152
3981 +#. Source: src/onboarding/OnboardingApp.tsx:159
3811 3982 #: assets/admin.js
3812 3983 msgid "Onboarding data unavailable"
3813 3984 msgstr ""
3814 3985
@@ -3826,9 +3997,9 @@
3826 3997 #: assets/admin.js
3827 3998 msgid "Open MCP"
3828 3999 msgstr ""
3829 4000
3830 -#. Source: src/components/TopBar.tsx:84
4001 +#. Source: src/components/TopBar.tsx:88
3831 4002 #: assets/admin.js
3832 4003 msgid "Open navigation"
3833 4004 msgstr ""
3834 4005
@@ -3836,9 +4007,9 @@
3836 4007 #: assets/admin.js
3837 4008 msgid "Open the full report"
3838 4009 msgstr ""
3839 4010
3840 -#. Source: src/components/sidebarGroups.ts:76
4011 +#. Source: src/components/sidebarGroups.ts:86
3841 4012 #: assets/admin.js
3842 4013 msgid "Optimization"
3843 4014 msgstr ""
3844 4015
@@ -3862,19 +4033,19 @@
3862 4033 #: assets/admin.js
3863 4034 msgid "Over a month old — may not reflect the site now."
3864 4035 msgstr ""
3865 4036
3866 -#. Source: src/components/cache/StatDrilldown.tsx:166
4037 +#. Source: src/components/cache/StatDrilldown.tsx:161
3867 4038 #: assets/admin.js
3868 4039 msgid "Page"
3869 4040 msgstr ""
3870 4041
3871 -#. Source: src/components/sidebarGroups.ts:71
4042 +#. Source: src/components/sidebarGroups.ts:81
3872 4043 #: assets/admin.js
3873 4044 msgid "Page, object and browser caching, plus preload."
3874 4045 msgstr ""
3875 4046
3876 -#. Source: src/components/cache/StatDrilldown.tsx:283
4047 +#. Source: src/components/cache/StatDrilldown.tsx:278
3877 4048 #: assets/admin.js
3878 4049 msgid "Pages without one are compressed by the server when requested."
3879 4050 msgstr ""
3880 4051
@@ -3892,10 +4063,15 @@
3892 4063 #: assets/admin.js
3893 4064 msgid "Partial scan — some checks could not run, so the score covers less than the full rubric."
3894 4065 msgstr ""
3895 4066
3896 -#. Source: src/components/migration/MigrationPanel.tsx:795
4067 +#. Source: src/components/TopBar.tsx:177
3897 4068 #: assets/admin.js
4069 +msgid "Partly cleared"
4070 +msgstr ""
4071 +
4072 +#. Source: src/components/migration/MigrationPanel.tsx:800
4073 +#: assets/admin.js
3898 4074 msgid "Paste an xSpeed profile JSON here, or choose a .json file below."
3899 4075 msgstr ""
3900 4076
3901 4077 #. Source: src/onboarding/steps/Connect.tsx:226
@@ -3935,9 +4111,9 @@
3935 4111 #: assets/admin.js
3936 4112 msgid "Pick two runs to compare them."
3937 4113 msgstr ""
3938 4114
3939 -#. Source: src/components/cache/StatDrilldown.tsx:282
4115 +#. Source: src/components/cache/StatDrilldown.tsx:277
3940 4116 #: assets/admin.js
3941 4117 msgid "Precompressed copies on disk:"
3942 4118 msgstr ""
3943 4119
@@ -3945,20 +4121,37 @@
3945 4121 #: assets/admin.js
3946 4122 msgid "Preload"
3947 4123 msgstr ""
3948 4124
3949 -#. Source: src/App.tsx:354
4125 +#. Source: src/App.tsx:423
3950 4126 #: assets/admin.js
3951 4127 msgid "Preload could not start"
3952 4128 msgstr ""
3953 4129
3954 -#. Source: src/App.tsx:352
4130 +#. Source: src/App.tsx:422
3955 4131 #: assets/admin.js
3956 -msgid "Preload started"
4132 +msgid "Preload could not start: %s"
3957 4133 msgstr ""
3958 4134
3959 -#. Source: src/upsell/ProDemo.tsx:117
4135 +#. Source: src/App.tsx:410
3960 4136 #: assets/admin.js
4137 +msgid "Preload found no pages to warm"
4138 +msgstr ""
4139 +
4140 +#. Source: src/App.tsx:409
4141 +#: assets/admin.js
4142 +msgid "Preload found no pages to warm: %s"
4143 +msgstr ""
4144 +
4145 +#. Source: src/App.tsx:399
4146 +#: assets/admin.js
4147 +msgid "Preloading %d page"
4148 +msgid_plural "Preloading %d pages"
4149 +msgstr[0] ""
4150 +msgstr[1] ""
4151 +
4152 +#. Source: src/upsell/ProDemo.tsx:118
4153 +#: assets/admin.js
3961 4154 msgid "Preview"
3962 4155 msgstr ""
3963 4156
3964 4157 #. Source: src/components/Sidebar.tsx:300
@@ -3967,12 +4160,14 @@
3967 4160 msgstr ""
3968 4161
3969 4162 #. Source: src/components/GroupLanding.tsx:32
3970 4163 #. Source: src/components/ModuleHeader.tsx:23
4164 +#. Source: src/components/Tabs.tsx:97
4165 +#. Source: src/components/migration/MigrationPanel.tsx:650
3971 4166 #. Source: src/components/overview/FeatureMap.tsx:38
3972 -#. Source: src/upsell/LockedSection.tsx:69
4167 +#. Source: src/upsell/LockedSection.tsx:70
3973 4168 #. Source: src/upsell/ProAudit.tsx:66
3974 -#. Source: src/upsell/ProDemo.tsx:59
4169 +#. Source: src/upsell/ProDemo.tsx:60
3975 4170 #. Source: src/upsell/ProTeaser.tsx:45
3976 4171 #: assets/admin.js
3977 4172 msgid "Pro"
3978 4173 msgstr ""
@@ -4010,9 +4205,9 @@
4010 4205 #: assets/admin.js
4011 4206 msgid "Pro unlocks this module + every other locked row in the sidebar. Your current Free settings stay unchanged."
4012 4207 msgstr ""
4013 4208
4014 -#. Source: src/components/migration/MigrationPanel.tsx:797
4209 +#. Source: src/components/migration/MigrationPanel.tsx:802
4015 4210 #: assets/admin.js
4016 4211 msgid "Profile JSON to import"
4017 4212 msgstr ""
4018 4213
@@ -4021,20 +4216,31 @@
4021 4216 msgid "pts"
4022 4217 msgstr ""
4023 4218
4024 4219 #. Source: src/components/CommandPalette.tsx:58
4025 -#. Source: src/components/TopBar.tsx:134
4220 +#. Source: src/components/TopBar.tsx:180
4026 4221 #: assets/admin.js
4027 4222 msgid "Purge all"
4028 4223 msgstr ""
4029 4224
4030 -#. Source: src/App.tsx:341
4225 +#. Source: src/App.tsx:370
4226 +#. Source: src/components/TopBar.tsx:179
4031 4227 #: assets/admin.js
4032 4228 msgid "Purge failed"
4033 4229 msgstr ""
4034 4230
4035 -#. Source: src/components/cache/StatDrilldown.tsx:336
4231 +#. Source: src/App.tsx:370
4036 4232 #: assets/admin.js
4233 +msgid "Purge failed: %s"
4234 +msgstr ""
4235 +
4236 +#. Source: src/components/purgeOutcome.ts:54
4237 +#: assets/admin.js
4238 +msgid "Purge failed."
4239 +msgstr ""
4240 +
4241 +#. Source: src/components/cache/StatDrilldown.tsx:331
4242 +#: assets/admin.js
4037 4243 msgid "Purge history"
4038 4244 msgstr ""
4039 4245
4040 4246 #. Source: src/onboarding/steps/Connect.tsx:94
@@ -4083,9 +4289,9 @@
4083 4289 #: assets/admin.js
4084 4290 msgid "Recent cache and settings activity."
4085 4291 msgstr ""
4086 4292
4087 -#. Source: src/components/cache/TrendCharts.tsx:148
4293 +#. Source: src/components/cache/TrendCharts.tsx:153
4088 4294 #: assets/admin.js
4089 4295 msgid "Recent changes"
4090 4296 msgstr ""
4091 4297
@@ -4099,9 +4305,9 @@
4099 4305 #: assets/admin.js
4100 4306 msgid "Recommended:"
4101 4307 msgstr ""
4102 4308
4103 -#. Source: src/components/cache/StatDrilldown.tsx:109
4309 +#. Source: src/components/cache/StatDrilldown.tsx:104
4104 4310 #: assets/admin.js
4105 4311 msgid "Refresh"
4106 4312 msgstr ""
4107 4313
@@ -4109,9 +4315,9 @@
4109 4315 #: assets/admin.js
4110 4316 msgid "Refresh activity log"
4111 4317 msgstr ""
4112 4318
4113 -#. Source: src/components/cache/TrendCharts.tsx:108
4319 +#. Source: src/components/cache/TrendCharts.tsx:113
4114 4320 #: assets/admin.js
4115 4321 msgid "Refresh trends"
4116 4322 msgstr ""
4117 4323
@@ -4195,9 +4401,9 @@
4195 4401 #: assets/admin.js
4196 4402 msgid "Run test"
4197 4403 msgstr ""
4198 4404
4199 -#. Source: src/components/cache/TrendCharts.tsx:139
4405 +#. Source: src/components/cache/TrendCharts.tsx:144
4200 4406 #: assets/admin.js
4201 4407 msgid "Run the benchmark at least twice to see a trend."
4202 4408 msgstr ""
4203 4409
@@ -4266,10 +4472,10 @@
4266 4472 #: assets/admin.js
4267 4473 msgid "Score strategy"
4268 4474 msgstr ""
4269 4475
4270 -#. Source: src/components/TopBar.tsx:110
4271 -#. Source: src/components/TopBar.tsx:115
4476 +#. Source: src/components/TopBar.tsx:114
4477 +#. Source: src/components/TopBar.tsx:119
4272 4478 #: assets/admin.js
4273 4479 msgid "Search"
4274 4480 msgstr ""
4275 4481
@@ -4328,24 +4534,24 @@
4328 4534 #: assets/admin.js
4329 4535 msgid "Show less"
4330 4536 msgstr ""
4331 4537
4332 -#. Source: src/components/cache/CacheHero.tsx:219
4538 +#. Source: src/components/cache/CacheHero.tsx:214
4333 4539 #: assets/admin.js
4334 4540 msgid "show what cleared the cache and why"
4335 4541 msgstr ""
4336 4542
4337 -#. Source: src/components/cache/CacheHero.tsx:212
4543 +#. Source: src/components/cache/CacheHero.tsx:207
4338 4544 #: assets/admin.js
4339 4545 msgid "show what is taking the space"
4340 4546 msgstr ""
4341 4547
4342 -#. Source: src/components/cache/CacheHero.tsx:205
4548 +#. Source: src/components/cache/CacheHero.tsx:200
4343 4549 #: assets/admin.js
4344 4550 msgid "show which pages are cached"
4345 4551 msgstr ""
4346 4552
4347 -#. Source: src/components/cache/StatDrilldown.tsx:216
4553 +#. Source: src/components/cache/StatDrilldown.tsx:211
4348 4554 #: assets/admin.js
4349 4555 msgid "Showing"
4350 4556 msgstr ""
4351 4557
@@ -4358,14 +4564,14 @@
4358 4564 #: assets/admin.js
4359 4565 msgid "Site URL"
4360 4566 msgstr ""
4361 4567
4362 -#. Source: src/components/cache/StatDrilldown.tsx:167
4568 +#. Source: src/components/cache/StatDrilldown.tsx:162
4363 4569 #: assets/admin.js
4364 4570 msgid "Size"
4365 4571 msgstr ""
4366 4572
4367 -#. Source: src/components/sidebarGroups.ts:92
4573 +#. Source: src/components/sidebarGroups.ts:102
4368 4574 #: assets/admin.js
4369 4575 msgid "Speed score, diagnostics and analytics."
4370 4576 msgstr ""
4371 4577
@@ -4378,9 +4584,9 @@
4378 4584 #: assets/admin.js
4379 4585 msgid "Static rewrite may not be available on this host"
4380 4586 msgstr ""
4381 4587
4382 -#. Source: src/components/cache/StatDrilldown.tsx:169
4588 +#. Source: src/components/cache/StatDrilldown.tsx:164
4383 4589 #: assets/admin.js
4384 4590 msgid "Stored"
4385 4591 msgstr ""
4386 4592
@@ -4388,14 +4594,14 @@
4388 4594 #: assets/admin.js
4389 4595 msgid "succeeded"
4390 4596 msgstr ""
4391 4597
4392 -#. Source: src/components/TopBar.tsx:148
4598 +#. Source: src/components/TopBar.tsx:144
4393 4599 #: assets/admin.js
4394 4600 msgid "Switch to dark mode"
4395 4601 msgstr ""
4396 4602
4397 -#. Source: src/components/TopBar.tsx:148
4603 +#. Source: src/components/TopBar.tsx:144
4398 4604 #: assets/admin.js
4399 4605 msgid "Switch to light mode"
4400 4606 msgstr ""
4401 4607
@@ -4408,9 +4614,9 @@
4408 4614 #: assets/admin.js
4409 4615 msgid "Take over the page cache from %s?"
4410 4616 msgstr ""
4411 4617
4412 -#. Source: src/components/cache/TrendCharts.tsx:240
4618 +#. Source: src/components/cache/TrendCharts.tsx:245
4413 4619 #: assets/admin.js
4414 4620 msgid "target ≥80%"
4415 4621 msgstr ""
4416 4622
@@ -4429,15 +4635,30 @@
4429 4635 #: assets/admin.js
4430 4636 msgid "Testing…"
4431 4637 msgstr ""
4432 4638
4639 +#. Source: src/components/purgeOutcome.ts:70
4640 +#: assets/admin.js
4641 +msgid "The cache was already empty, so there was nothing to clear."
4642 +msgstr ""
4643 +
4433 4644 #. Source: src/components/overview/ScoreCard.tsx:207
4434 4645 #: assets/admin.js
4435 4646 msgid "The last scan did not complete."
4436 4647 msgstr ""
4437 4648
4438 -#. Source: src/components/cache/StatDrilldown.tsx:156
4649 +#. Source: src/components/purgeOutcome.ts:78
4439 4650 #: assets/admin.js
4651 +msgid "The page cache was already empty."
4652 +msgstr ""
4653 +
4654 +#. Source: src/components/purgeOutcome.ts:63
4655 +#: assets/admin.js
4656 +msgid "There was nothing to clear."
4657 +msgstr ""
4658 +
4659 +#. Source: src/components/cache/StatDrilldown.tsx:151
4660 +#: assets/admin.js
4440 4661 msgid "This cache is large enough that the scan stopped early — the list below is a recent sample, not every page."
4441 4662 msgstr ""
4442 4663
4443 4664 #. Source: src/components/SecretField.tsx:93
@@ -4465,9 +4686,9 @@
4465 4686 msgid "Token"
4466 4687 msgstr ""
4467 4688
4468 4689 #. Source: src/components/LogsView.tsx:34
4469 -#. Source: src/components/sidebarGroups.ts:97
4690 +#. Source: src/components/sidebarGroups.ts:107
4470 4691 #: assets/admin.js
4471 4692 msgid "Tools"
4472 4693 msgstr ""
4473 4694
@@ -4475,9 +4696,9 @@
4475 4696 #: assets/admin.js
4476 4697 msgid "Trends"
4477 4698 msgstr ""
4478 4699
4479 -#. Source: src/components/cache/TrendCharts.tsx:126
4700 +#. Source: src/components/cache/TrendCharts.tsx:131
4480 4701 #: assets/admin.js
4481 4702 msgid "Trends appear after a couple of days of traffic. The daily series is being collected now."
4482 4703 msgstr ""
4483 4704
@@ -4505,9 +4726,9 @@
4505 4726 #: assets/admin.js
4506 4727 msgid "Turn on the page cache to start serving pages instantly."
4507 4728 msgstr ""
4508 4729
4509 -#. Source: src/components/cache/TrendCharts.tsx:273
4730 +#. Source: src/components/cache/TrendCharts.tsx:278
4510 4731 #: assets/admin.js
4511 4732 msgid "uncached"
4512 4733 msgstr ""
4513 4734
@@ -4516,13 +4737,13 @@
4516 4737 msgid "Under a minute"
4517 4738 msgstr ""
4518 4739
4519 4740 #. Source: src/components/Sidebar.tsx:424
4520 -#. Source: src/components/Sidebar.tsx:442
4741 +#. Source: src/components/Sidebar.tsx:445
4521 4742 #. Source: src/upsell/LockedPanel.tsx:116
4522 -#. Source: src/upsell/LockedSection.tsx:97
4743 +#. Source: src/upsell/LockedSection.tsx:98
4523 4744 #. Source: src/upsell/ProAudit.tsx:113
4524 -#. Source: src/upsell/ProDemo.tsx:101
4745 +#. Source: src/upsell/ProDemo.tsx:102
4525 4746 #. Source: src/upsell/ProOverview.tsx:83
4526 4747 #: assets/admin.js
4527 4748 msgid "Upgrade to Pro"
4528 4749 msgstr ""
@@ -4556,9 +4777,9 @@
4556 4777 #: assets/admin.js
4557 4778 msgid "Want a hand?"
4558 4779 msgstr ""
4559 4780
4560 -#. Source: src/onboarding/OnboardingApp.tsx:155
4781 +#. Source: src/onboarding/OnboardingApp.tsx:162
4561 4782 #: assets/admin.js
4562 4783 msgid "We couldn't load the setup wizard. Your site is unaffected — you can configure everything from the dashboard."
4563 4784 msgstr ""
4564 4785
@@ -4591,9 +4812,9 @@
4591 4812 #: assets/admin.js
4592 4813 msgid "When"
4593 4814 msgstr ""
4594 4815
4595 -#. Source: src/components/cache/StatDrilldown.tsx:248
4816 +#. Source: src/components/cache/StatDrilldown.tsx:243
4596 4817 #: assets/admin.js
4597 4818 msgid "Where the cache size goes"
4598 4819 msgstr ""
4599 4820