Translated using Weblate (Slovenian)
[phpmyadmin.git] / src / Controllers / JavaScriptMessagesController.php
blob86050b9cff59bdd460f476ace64ca59a92846fe1
1 <?php
3 declare(strict_types=1);
5 namespace PhpMyAdmin\Controllers;
7 use Fig\Http\Message\StatusCodeInterface;
8 use JsonException;
9 use PhpMyAdmin\Http\Factory\ResponseFactory;
10 use PhpMyAdmin\Http\Response;
12 use function __;
13 use function _pgettext;
14 use function gmdate;
15 use function json_encode;
16 use function sprintf;
17 use function time;
19 use const JSON_THROW_ON_ERROR;
21 /**
22 * Exporting of translated messages from PHP to JavaScript.
24 final class JavaScriptMessagesController
26 public function __construct(private readonly ResponseFactory $responseFactory)
30 public function __invoke(): Response
32 $response = $this->responseFactory->createResponse()
33 ->withHeader('Content-Type', 'text/javascript; charset=UTF-8')
34 ->withHeader('Expires', sprintf('%s GMT', gmdate('D, d M Y H:i:s', time() + 3600)));
36 try {
37 $messages = json_encode($this->getMessages(), JSON_THROW_ON_ERROR);
38 } catch (JsonException $exception) {
39 $response->getBody()->write(sprintf('// Error when encoding messages: %s', $exception->getMessage()));
41 return $response->withStatus(StatusCodeInterface::STATUS_INTERNAL_SERVER_ERROR);
44 return $response->write(sprintf('window.Messages = %s;', $messages));
47 /** @return array<string, string> */
48 private function getMessages(): array
50 return [
51 /* For confirmations */
52 'strDoYouReally' => __('Do you really want to execute "%s"?'),
53 'strDropDatabaseStrongWarning' => __('You are about to DESTROY a complete database!'),
54 'strDatabaseRenameToSameName' => __(
55 'Cannot rename database to the same name. Change the name and try again.',
57 'strDropTableStrongWarning' => __('You are about to DESTROY a complete table!'),
58 'strTruncateTableStrongWarning' => __('You are about to TRUNCATE a complete table!'),
59 'strDeleteTableStrongWarning' => __('You are about to DELETE all the rows of the table!'),
60 'strDeleteTrackingData' => __('Delete tracking data for this table?'),
61 'strDeleteTrackingDataMultiple' => __('Delete tracking data for these tables?'),
62 'strDeleteTrackingVersion' => __('Delete tracking data for this version?'),
63 'strDeleteTrackingVersionMultiple' => __('Delete tracking data for these versions?'),
64 'strDeletingTrackingEntry' => __('Delete entry from tracking report?'),
65 'strDeletingTrackingData' => __('Deleting tracking data'),
66 'strDroppingPrimaryKeyIndex' => __('Dropping Primary Key/Index'),
67 'strDroppingForeignKey' => __('Dropping Foreign key.'),
68 'strOperationTakesLongTime' => __('This operation could take a long time. Proceed anyway?'),
69 'strDropUserGroupWarning' => __('Do you really want to delete user group "%s"?'),
70 'strConfirmNavigation' => __('You have unsaved changes; are you sure you want to leave this page?'),
71 'strConfirmRowChange' => __(
72 'You are trying to reduce the number of rows, but have already entered'
73 . ' data in those rows which will be lost. Do you wish to continue?',
75 'strDropUserWarning' => __('Do you really want to revoke the selected user(s) ?'),
76 'strDeleteCentralColumnWarning' => __('Do you really want to delete this central column?'),
77 'strDropRTEitems' => __('Do you really want to delete the selected items?'),
78 'strDropPartitionWarning' => __(
79 'Do you really want to DROP the selected partition(s)? This will also DELETE ' .
80 'the data related to the selected partition(s)!',
82 'strTruncatePartitionWarning' => __('Do you really want to TRUNCATE the selected partition(s)?'),
83 'strRemovePartitioningWarning' => __('Do you really want to remove partitioning?'),
84 'strResetReplicaWarning' => __('Do you really want to reset the replica (RESET REPLICA)?'),
85 'strChangeColumnCollation' => __(
86 'This operation will attempt to convert your data to the new collation. In '
87 . 'rare cases, especially where a character doesn\'t exist in the new '
88 . 'collation, this process could cause the data to appear incorrectly under '
89 . 'the new collation; in this case we suggest you revert to the original '
90 . 'collation and refer to the tips at ',
92 . '<a href="%s" target="garbled_data_wiki">' . __('Garbled Data') . '</a>.'
93 . '<br><br>'
94 . __('Are you sure you wish to change the collation and convert the data?'),
96 'strChangeAllColumnCollationsWarning' => __(
97 'Through this operation, MySQL attempts to map the data values between '
98 . 'collations. If the character sets are incompatible, there may be data loss '
99 . 'and this lost data may <b>NOT</b> be recoverable simply by changing back the '
100 . 'column collation(s). <b>To convert existing data, it is suggested to use the '
101 . 'column(s) editing feature (the "Change" Link) on the table structure page. '
102 . '</b>',
104 . '<br><br>'
105 . __('Are you sure you wish to change all the column collations and convert the data?'),
107 /* For modal dialog buttons */
108 'strSaveAndClose' => __('Save & close'),
109 'strReset' => __('Reset'),
110 'strResetAll' => __('Reset all'),
112 /* For indexes */
113 'strFormEmpty' => __('Missing value in the form!'),
114 'strRadioUnchecked' => __('Select at least one of the options!'),
115 'strEnterValidNumber' => __('Please enter a valid number!'),
116 'strEnterValidLength' => __('Please enter a valid length!'),
117 'strAddIndex' => __('Add index'),
118 'strEditIndex' => __('Edit index'),
119 /* l10n: Rename a table Index */
120 'strRenameIndex' => __('Rename index'),
121 'strAddToIndex' => __('Add %s column(s) to index'),
122 'strCreateSingleColumnIndex' => __('Create single-column index'),
123 'strCreateCompositeIndex' => __('Create composite index'),
124 'strCompositeWith' => __('Composite with:'),
125 'strMissingColumn' => __('Please select column(s) for the index.'),
127 /* For Preview SQL*/
128 'strPreviewSQL' => __('Preview SQL'),
130 /* For Simulate DML*/
131 'strSimulateDML' => __('Simulate query'),
132 'strSQLQuery' => __('SQL query:'),
134 /* Charts */
135 /* l10n: Default label for the y-Axis of Charts */
136 'strYValues' => __('Y values'),
138 /* Database multi-table query */
139 'strEmptyQuery' => __('Please enter the SQL query first.'),
141 /* For server/privileges.js */
142 'strHostEmpty' => __('The host name is empty!'),
143 'strUserEmpty' => __('The user name is empty!'),
144 'strPasswordEmpty' => __('The password is empty!'),
145 'strPasswordNotSame' => __('The passwords aren\'t the same!'),
146 'strRemovingSelectedUsers' => __('Removing Selected Users'),
147 'strClose' => __('Close'),
148 'strLock' => _pgettext('Lock the account.', 'Lock'),
149 'strUnlock' => _pgettext('Unlock the account.', 'Unlock'),
150 'strLockAccount' => __('Lock this account.'),
151 'strUnlockAccount' => __('Unlock this account.'),
153 /* For export.js */
154 'strTemplateCreated' => __('Template was created.'),
155 'strTemplateLoaded' => __('Template was loaded.'),
156 'strTemplateUpdated' => __('Template was updated.'),
157 'strTemplateDeleted' => __('Template was deleted.'),
159 /* l10n: Other, small valued, queries */
160 'strOther' => __('Other'),
161 /* l10n: Thousands separator */
162 'strThousandsSeparator' => __(','),
163 /* l10n: Decimal separator */
164 'strDecimalSeparator' => __('.'),
166 'strChartConnectionsTitle' => __('Connections / Processes'),
168 'numberOfStatements' => __('Number of statements'),
170 /* server status monitor */
171 'strIncompatibleMonitorConfig' => __('Local monitor configuration incompatible!'),
172 'strIncompatibleMonitorConfigDescription' => __(
173 'The chart arrangement configuration in your browsers local storage is not '
174 . 'compatible anymore to the newer version of the monitor dialog. It is very '
175 . 'likely that your current configuration will not work anymore. Please reset '
176 . 'your configuration to default in the <i>Settings</i> menu.',
179 'strQueryCacheEfficiency' => __('Query cache efficiency'),
180 'strQueryCacheUsage' => __('Query cache usage'),
181 'strQueryCacheUsed' => __('Query cache used'),
183 'strSystemCPUUsage' => __('System CPU usage'),
184 'strSystemMemory' => __('System memory'),
185 'strSystemSwap' => __('System swap'),
187 'strAverageLoad' => __('Average load'),
188 'strTotalMemory' => __('Total memory'),
189 'strCachedMemory' => __('Cached memory'),
190 'strBufferedMemory' => __('Buffered memory'),
191 'strFreeMemory' => __('Free memory'),
192 'strUsedMemory' => __('Used memory'),
194 'strTotalSwap' => __('Total swap'),
195 'strCachedSwap' => __('Cached swap'),
196 'strUsedSwap' => __('Used swap'),
197 'strFreeSwap' => __('Free swap'),
199 'strBytesSent' => __('Bytes sent'),
200 'strBytesReceived' => __('Bytes received'),
201 'strConnections' => __('Connections'),
202 'strProcesses' => __('Processes'),
204 /* summary row */
205 'strB' => __('B'),
206 'strKiB' => __('KiB'),
207 'strMiB' => __('MiB'),
208 'strGiB' => __('GiB'),
209 'strTiB' => __('TiB'),
210 'strPiB' => __('PiB'),
211 'strEiB' => __('EiB'),
212 'strNTables' => __('%d table(s)'),
214 /* l10n: Questions is the name of a MySQL Status variable */
215 'strQuestions' => __('Questions'),
216 'strTraffic' => __('Traffic'),
217 'strSettings' => __('Settings'),
218 'strAddChart' => __('Add chart to grid'),
219 'strAddOneSeriesWarning' => __('Please add at least one variable to the series!'),
220 'strNone' => __('None'),
221 /* l10n: SQL Query on modal to show exported query */
222 'strQuery' => __('SQL Query'),
223 'strResumeMonitor' => __('Resume monitor'),
224 'strPauseMonitor' => __('Pause monitor'),
225 'strStartRefresh' => __('Start auto refresh'),
226 'strStopRefresh' => __('Stop auto refresh'),
227 /* Monitor: Instructions Dialog */
228 'strBothLogOn' => __('general_log and slow_query_log are enabled.'),
229 'strGenLogOn' => __('general_log is enabled.'),
230 'strSlowLogOn' => __('slow_query_log is enabled.'),
231 'strBothLogOff' => __('slow_query_log and general_log are disabled.'),
232 'strLogOutNotTable' => __('log_output is not set to TABLE.'),
233 'strLogOutIsTable' => __('log_output is set to TABLE.'),
234 'strSmallerLongQueryTimeAdvice' => __(
235 'slow_query_log is enabled, but the server logs only queries that take longer '
236 . 'than %d seconds. It is advisable to set this long_query_time 0-2 seconds, '
237 . 'depending on your system.',
239 'strLongQueryTimeSet' => __('long_query_time is set to %d second(s).'),
240 'strSettingsAppliedGlobal' => __(
241 'Following settings will be applied globally and reset to default on server restart:',
243 /* l10n: %s is FILE or TABLE */
244 'strSetLogOutput' => __('Set log_output to %s'),
245 /* l10n: Enable in this context means setting a status variable to ON */
246 'strEnableVar' => __('Enable %s'),
247 /* l10n: Disable in this context means setting a status variable to OFF */
248 'strDisableVar' => __('Disable %s'),
249 /* l10n: %d seconds */
250 'setSetLongQueryTime' => __('Set long_query_time to %d seconds.'),
251 'strNoSuperUser' => __(
252 'You can\'t change these variables. Please log in as root or contact your database administrator.',
254 'strChangeSettings' => __('Change settings'),
255 'strCurrentSettings' => __('Current settings'),
257 'strChartTitle' => __('Chart title'),
258 /* l10n: As in differential values */
259 'strDifferential' => __('Differential'),
260 'strDividedBy' => __('Divided by %s'),
261 'strUnit' => __('Unit'),
263 'strFromSlowLog' => __('From slow log'),
264 'strFromGeneralLog' => __('From general log'),
265 'strServerLogError' => __('The database name is not known for this query in the server\'s logs.'),
266 'strAnalysingLogsTitle' => __('Analysing logs'),
267 'strAnalysingLogs' => __('Analysing & loading logs. This may take a while.'),
268 'strCancelRequest' => __('Cancel request'),
269 'strCountColumnExplanation' => __(
270 'This column shows the amount of identical queries that are grouped together. '
271 . 'However only the SQL query itself has been used as a grouping criteria, so '
272 . 'the other attributes of queries, such as start time, may differ.',
274 'strMoreCountColumnExplanation' => __(
275 'Since grouping of INSERTs queries has been selected, INSERT queries into the '
276 . 'same table are also being grouped together, disregarding of the inserted '
277 . 'data.',
279 'strLogDataLoaded' => __('Log data loaded. Queries executed in this time span:'),
281 'strJumpToTable' => __('Jump to Log table'),
282 'strNoDataFoundTitle' => __('No data found'),
283 'strNoDataFound' => __('Log analysed, but no data found in this time span.'),
285 'strAnalyzing' => __('Analyzingā€¦'),
286 'strExplainOutput' => __('Explain output'),
287 'strStatus' => __('Status'),
288 'strTime' => __('Time'),
289 'strTotalTime' => __('Total time:'),
290 'strProfilingResults' => __('Profiling results'),
291 'strTable' => _pgettext('Display format', 'Table'),
292 'strChart' => __('Chart'),
294 'strAliasDatabase' => _pgettext('Alias', 'Database'),
295 'strAliasTable' => _pgettext('Alias', 'Table'),
296 'strAliasColumn' => _pgettext('Alias', 'Column'),
298 /* l10n: A collection of available filters */
299 'strFiltersForLogTable' => __('Log table filter options'),
300 /* l10n: Filter as in "Start Filtering" */
301 'strFilter' => __('Filter'),
302 'strFilterByWordRegexp' => __('Filter queries by word/regexp:'),
303 'strIgnoreWhereAndGroup' => __('Group queries, ignoring variable data in WHERE clauses'),
304 'strSumRows' => __('Sum of grouped rows:'),
305 'strTotal' => __('Total:'),
307 'strLoadingLogs' => __('Loading logs'),
308 'strRefreshFailed' => __('Monitor refresh failed'),
309 'strInvalidResponseExplanation' => __(
310 'While requesting new chart data the server returned an invalid response. This '
311 . 'is most likely because your session expired. Reloading the page and '
312 . 'reentering your credentials should help.',
314 'strReloadPage' => __('Reload page'),
316 'strAffectedRows' => __('Affected rows:'),
318 'strFailedParsingConfig' => __('Failed parsing config file. It doesn\'t seem to be valid JSON code.'),
319 'strFailedBuildingGrid' => __(
320 'Failed building chart grid with imported config. Resetting to default configā€¦',
322 'strImport' => __('Import'),
323 'strImportDialogTitle' => __('Import monitor configuration'),
324 'strImportDialogMessage' => __('Please select the file you want to import:'),
325 'strTableNameDialogMessage' => __('Please enter a valid table name.'),
326 'strDBNameDialogMessage' => __('Please enter a valid database name.'),
327 'strNoImportFile' => __('No files available on server for import!'),
329 'strAnalyzeQuery' => __('Analyse query'),
331 /* For query editor */
332 'strFormatting' => __('Formatting SQLā€¦'),
333 'strNoParam' => __('No parameters found!'),
335 /* For inline query editing */
336 'strGo' => __('Go'),
337 'strCancel' => __('Cancel'),
339 /* For page-related settings */
340 'strPageSettings' => __('Page-related settings'),
341 'strApply' => __('Apply'),
343 /* For Ajax Notifications */
344 'strLoading' => __('Loadingā€¦'),
345 'strAbortedRequest' => __('Request aborted!!'),
346 'strProcessingRequest' => __('Processing request'),
347 'strRequestFailed' => __('Request failed!!'),
348 'strErrorProcessingRequest' => __('Error in processing request'),
349 'strErrorCode' => __('Error code: %s'),
350 'strErrorText' => __('Error text: %s'),
351 'strErrorConnection' => __(
352 'It seems that the connection to server has been lost. Please check your ' .
353 'network connectivity and server status.',
355 'strNoDatabasesSelected' => __('No databases selected.'),
356 'strNoTableSelected' => __('No table selected.'),
357 'strNoAccountSelected' => __('No accounts selected.'),
358 'strDroppingColumn' => __('Dropping column'),
359 'strAddingPrimaryKey' => __('Adding primary key'),
360 'strOK' => __('OK'),
361 'strDismiss' => __('Click to dismiss this notification'),
363 /* For database/operations.js */
364 'strRenamingDatabases' => __('Renaming databases'),
365 'strCopyingDatabase' => __('Copying database'),
366 'strChangingCharset' => __('Changing charset'),
367 'strNo' => __('No'),
369 /* For Foreign key checks */
370 'strForeignKeyCheck' => __('Enable foreign key checks'),
372 /* For database/structure.js */
373 'strErrorRealRowCount' => __('Failed to get real row count.'),
375 /* For database/search.js */
376 'strSearching' => __('Searching'),
377 'strHideSearchResults' => __('Hide search results'),
378 'strShowSearchResults' => __('Show search results'),
379 'strBrowsing' => __('Browsing'),
380 'strDeleting' => __('Deleting'),
381 'strConfirmDeleteResults' => __('Delete the matches for the %s table?'),
383 /* For rte.js */
384 'MissingReturn' => __('The definition of a stored function must contain a RETURN statement!'),
385 'strExport' => __('Export'),
386 'NoExportable' => __('No routine is exportable. Required privileges may be lacking.'),
388 /* For ENUM/SET editor*/
389 'enum_columnVals' => __('Values for column %s'),
390 'enum_newColumnVals' => __('Values for a new column'),
391 'enum_hint' => __('Enter each value in a separate field.'),
392 'enum_addValue' => __('Add %d value(s)'),
394 /* For import.js */
395 'strImportCSV' => __('Note: If the file contains multiple tables, they will be combined into one.'),
397 /* For sql.js */
398 'strHideQueryBox' => __('Hide query box'),
399 'strShowQueryBox' => __('Show query box'),
400 'strEdit' => __('Edit'),
401 'strDelete' => __('Delete'),
402 'strNotValidRowNumber' => __('%d is not valid row number.'),
403 'strBrowseForeignValues' => __('Browse foreign values'),
404 'strNoAutoSavedQuery' => __('No previously auto-saved query is available. Loading default query.'),
405 'strPreviousSaveQuery' => __(
406 'You have a previously saved query. Click Get auto-saved query to load the query.',
408 'strBookmarkVariable' => __('Variable %d:'),
410 /* For Central list of columns */
411 'pickColumn' => __('Pick'),
412 'pickColumnTitle' => __('Column selector'),
413 'searchList' => __('Search this list'),
414 'strEmptyCentralList' => __(
415 'No columns in the central list. Make sure the Central columns list for '
416 . 'database %s has columns that are not present in the current table.',
418 'seeMore' => __('See more'),
420 /* For normalization */
421 'strAddPrimaryKey' => __('Add primary key'),
422 'strPrimaryKeyAdded' => __('Primary key added.'),
423 'strToNextStep' => __('Taking you to next stepā€¦'),
424 'strFinishMsg' => __("The first step of normalization is complete for table '%s'."),
425 'strEndStep' => __('End of step'),
426 'str2NFNormalization' => __('Second step of normalization (2NF)'),
427 'strDone' => __('Done'),
428 'strConfirmPd' => __('Confirm partial dependencies'),
429 'strSelectedPd' => __('Selected partial dependencies are as follows:'),
430 'strPdHintNote' => __(
431 'Note: a, b -> d,f implies values of columns a and b combined together can '
432 . 'determine values of column d and column f.',
434 'strNoPdSelected' => __('No partial dependencies selected!'),
435 'strBack' => __('Back'),
436 'strShowPossiblePd' => __('Show me the possible partial dependencies based on data in the table'),
437 'strHidePd' => __('Hide partial dependencies list'),
438 'strWaitForPd' => __(
439 'Sit tight! It may take few seconds depending on data size and column count of the table.',
441 'strStep' => __('Step'),
442 'strMoveRepeatingGroup' => '<ol><b>' . __('The following actions will be performed:') . '</b>'
443 . '<li>' . __('DROP columns %s from the table %s') . '</li>'
444 . '<li>' . __('Create the following table') . '</li>',
445 'strNewTablePlaceholder' => 'Enter new table name',
446 'strNewColumnPlaceholder' => 'Enter column name',
447 'str3NFNormalization' => __('Third step of normalization (3NF)'),
448 'strConfirmTd' => __('Confirm transitive dependencies'),
449 'strSelectedTd' => __('Selected dependencies are as follows:'),
450 'strNoTdSelected' => __('No dependencies selected!'),
452 /* For server/variables.js */
453 'strSave' => __('Save'),
455 /* For table/select.js */
456 'strHideSearchCriteria' => __('Hide search criteria'),
457 'strShowSearchCriteria' => __('Show search criteria'),
458 'strColumnMax' => __('Column maximum:'),
459 'strColumnMin' => __('Column minimum:'),
461 /* For table/find_replace.js */
462 'strHideFindNReplaceCriteria' => __('Hide find and replace criteria'),
463 'strShowFindNReplaceCriteria' => __('Show find and replace criteria'),
465 /* For table/zoom_plot_jqplot.js */
466 'strDisplayHelp' => '<ul><li>'
467 . __('Each point represents a data row.')
468 . '</li><li>'
469 . __('Hovering over a point will show its label.')
470 . '</li><li>'
471 . __('To zoom in, select a section of the plot with the mouse.')
472 . '</li><li>'
473 . __('Click reset zoom button to come back to original state.')
474 . '</li><li>'
475 . __('Click a data point to view and possibly edit the data row.')
476 . '</li><li>'
477 . __('The plot can be resized by dragging it along the bottom right corner.')
478 . '</li></ul>',
479 'strHelpTitle' => 'Zoom search instructions',
480 'strInputNull' => '<strong>' . __('Select two columns') . '</strong>',
481 'strSameInputs' => '<strong>'
482 . __('Select two different columns')
483 . '</strong>',
484 'strDataPointContent' => __('Data point content'),
486 /* For table/change.js */
487 'strIgnore' => __('Ignore'),
488 'strCopy' => __('Copy'),
489 'strX' => __('X'),
490 'strY' => __('Y'),
491 'strPoint' => __('Point'),
492 'strLineString' => __('Linestring'),
493 'strPolygon' => __('Polygon'),
494 'strGeometry' => __('Geometry'),
495 'strInnerRing' => __('Inner ring'),
496 'strOuterRing' => __('Outer ring'),
497 'strAddPoint' => __('Add a point'),
498 'strAddLineString' => __('Add a linestring'),
499 'strAddInnerRing' => __('Add an inner ring'),
500 'strAddPolygon' => __('Add a polygon'),
501 'strAddGeometry' => __('Add geometry'),
502 'strYes' => __('Yes'),
503 'strCopyEncryptionKey' => __('Do you want to copy encryption key?'),
504 'strEncryptionKey' => __('Encryption key'),
505 /* l10n: Tip for HEX conversion of Integers */
506 'HexConversionInfo' => __(
507 'The HEX function will treat the integer as a string while calculating the hexadecimal value',
510 /* For Tip to be shown on Time field */
511 'strMysqlAllowedValuesTipTime' => __(
512 'MySQL accepts additional values not selectable by the slider;'
513 . ' key in those values directly if desired',
516 /* For Tip to be shown on Date field */
517 'strMysqlAllowedValuesTipDate' => __(
518 'MySQL accepts additional values not selectable by the datepicker;'
519 . ' key in those values directly if desired',
522 /* For Lock symbol Tooltip */
523 'strLockToolTip' => __(
524 'Indicates that you have made changes to this page;'
525 . ' you will be prompted for confirmation before abandoning changes',
528 /* Designer (js/designer/move.js) */
529 'strSelectReferencedKey' => __('Select referenced key'),
530 'strSelectForeignKey' => __('Select Foreign Key'),
531 'strPleaseSelectPrimaryOrUniqueKey' => __('Please select the primary key or a unique key!'),
532 'strChangeDisplay' => __('Choose column to display'),
533 'strLeavingDesigner' => __(
534 'You haven\'t saved the changes in the layout. They will be lost if you'
535 . ' don\'t save them. Do you want to continue?',
537 'strQueryEmpty' => __('value/subQuery is empty'),
538 'strAddTables' => __('Add tables from other databases'),
539 'strPageName' => __('Page name'),
540 'strSavePage' => __('Save page'),
541 'strSavePageAs' => __('Save page as'),
542 'strOpenPage' => __('Open page'),
543 'strDeletePage' => __('Delete page'),
544 /* l10n: When the user opens a page saved in the Designer */
545 'strSavedPageTableMissing' => __('Some tables saved in this page might have been renamed or deleted.'),
546 'strUntitled' => __('Untitled'),
547 'strSelectPage' => __('Please select a page to continue'),
548 'strEnterValidPageName' => __('Please enter a valid page name'),
549 'strLeavingPage' => __('Do you want to save the changes to the current page?'),
550 'strSuccessfulPageDelete' => __('Successfully deleted the page'),
551 'strExportRelationalSchema' => __('Export relational schema'),
552 'strModificationSaved' => __('Modifications have been saved'),
554 /* Visual query builder (js/designer/move.js) */
555 'strObjectsCreated' => __('%d object(s) created.'),
556 'strColumnName' => __('Column name'),
557 'strSubmit' => __('Submit'),
559 /* For makegrid.js (column reordering, show/hide column, grid editing) */
560 'strCellEditHint' => __('Press escape to cancel editing.<br>- Shift+Enter for a newline.'),
561 'strSaveCellWarning' => __(
562 'You have edited some data and they have not been saved. Are you sure you want '
563 . 'to leave this page before saving the data?',
565 'strColOrderHint' => __('Drag to reorder.'),
566 'strSortHint' => __('Click to sort results by this column.'),
567 'strMultiSortHint' => __(
568 'Shift+Click to add this column to ORDER BY clause or to toggle ASC/DESC.'
569 . '<br>- Ctrl+Click or Alt+Click (Mac: Shift+Option+Click) to remove column '
570 . 'from ORDER BY clause',
572 'strColMarkHint' => __('Click to mark/unmark.'),
573 'strColNameCopyHint' => __('Double-click to copy column name.'),
574 'strColVisibHint' => __('Click the drop-down arrow<br>to toggle column\'s visibility.'),
575 'strShowAllCol' => __('Show all'),
576 'strAlertNonUnique' => __(
577 'This table does not contain a unique column. Features related to the grid '
578 . 'edit, checkbox, Edit, Copy and Delete links may not work after saving.',
580 'strEnterValidHex' => __('Please enter a valid hexadecimal string. Valid characters are 0-9, A-F.'),
581 'strShowAllRowsWarning' => __(
582 'Do you really want to see all of the rows? For a big table this could crash the browser.',
584 'strOriginalLength' => __('Original length'),
586 /* Drag & Drop sql import messages */
587 'dropImportMessageCancel' => __('cancel'),
588 'dropImportMessageAborted' => __('Aborted'),
589 'dropImportMessageFailed' => __('Failed'),
590 'dropImportMessageSuccess' => __('Success'),
591 'dropImportImportResultHeader' => __('Import status'),
592 'dropImportDropFiles' => __('Drop files here'),
593 'dropImportSelectDB' => __('Select database first'),
595 'strGoToLink' => __('Go to link:'),
597 /* password generation */
598 'strGeneratePassword' => __('Generate password'),
599 'strGenerate' => __('Generate'),
601 /* navigation tabs */
602 'strMore' => __('More'),
604 /* navigation panel */
605 'strShowPanel' => __('Show panel'),
606 'strHidePanel' => __('Hide panel'),
607 'linkWithMain' => __('Link with main panel'),
608 'unlinkWithMain' => __('Unlink from main panel'),
610 /* update */
611 'strNewerVersion' => __(
612 'A newer version of phpMyAdmin is available and you should consider upgrading. '
613 . 'The newest version is %s, released on %s.',
615 /* l10n: Latest available phpMyAdmin version */
616 'strLatestAvailable' => __(', latest stable version:'),
617 'strUpToDate' => __('up to date'),
618 'errorLoadingGitInformation' => __('There was an error in loading the Git information.'),
620 /* Error Reporting */
621 'strErrorOccurred' => __('A fatal JavaScript error has occurred. Would you like to send an error report?'),
622 'strChangeReportSettings' => __('Change report settings'),
623 'strShowReportDetails' => __('Show report details'),
624 'strTimeOutError' => __('Your export is incomplete, due to a low execution time limit at the PHP level!'),
626 'strTooManyInputs' => __(
627 'Warning: a form on this page has more than %d fields. On submission, '
628 . "some of the fields might be ignored, due to PHP's "
629 . 'max_input_vars configuration.',
632 'phpErrorsFound' => '<div class="alert alert-danger" role="alert">'
633 . __('Some errors have been detected on the server!')
634 . '<br>'
635 . __('Please look at the bottom of this window.')
636 . '<div>'
637 . '<input id="pma_ignore_errors_popup" type="submit" value="'
638 . __('Ignore')
639 . '" class="btn btn-secondary float-end message_errors_found">'
640 . '<input id="pma_ignore_all_errors_popup" type="submit" value="'
641 . __('Ignore All')
642 . '" class="btn btn-secondary float-end message_errors_found">'
643 . '</div></div>',
645 'phpErrorsBeingSubmitted' => '<div class="alert alert-danger" role="alert">'
646 . __('Some errors have been detected on the server!')
647 . '<br>'
648 . __('As per your settings, they are being submitted currently, please be patient.')
649 . '<br>'
650 . '<img src="themes/dot.gif" alt="" class="icon ic_ajax_clock_small">'
651 . '</div>',
652 'strCopyColumnSuccess' => __('Column name successfully copied to clipboard!'),
653 'strCopyColumnFailure' => __('Column name copying to clipboard failed!'),
654 'strCopyQueryButtonSuccess' => __('Successfully copied!'),
655 'strCopyQueryButtonFailure' => __('Copying failed!'),
657 // For console
658 'strConsoleRequeryConfirm' => __('Execute this query again?'),
659 'strConsoleDeleteBookmarkConfirm' => __('Do you really want to delete this bookmark?'),
660 'strConsoleDebugError' => __('Some error occurred while getting SQL debug info.'),
661 'strConsoleDebugSummary' => __('%s queries executed %s times in %s seconds.'),
662 'strConsoleDebugArgsSummary' => __('%s argument(s) passed'),
663 'strConsoleDebugShowArgs' => __('Show arguments'),
664 'strConsoleDebugHideArgs' => __('Hide arguments'),
665 'strConsoleDebugTimeTaken' => __('Time taken:'),
666 'strNoLocalStorage' => __(
667 'There was a problem accessing your browser storage, some features may not'
668 . ' work properly for you. It is likely that the browser doesn\'t support storage'
669 . ' or the quota limit has been reached. In Firefox, corrupted storage can also'
670 . ' cause such a problem, clearing your "Offline Website Data" might help. In Safari,'
671 . ' such problem is commonly caused by "Private Mode Browsing".',
673 // For modals in /database/structure
674 'strCopyTablesTo' => __('Copy tables to'),
675 'strAddPrefix' => __('Add table prefix'),
676 'strReplacePrefix' => __('Replace table with prefix'),
677 'strCopyPrefix' => __('Copy table with prefix'),
679 /* For password strength simulation */
680 'strExtrWeak' => __('Extremely weak'),
681 'strVeryWeak' => __('Very weak'),
682 'strWeak' => __('Weak'),
683 'strGood' => __('Good'),
684 'strStrong' => __('Strong'),
686 /* U2F errors */
687 // l10n: error code 5 (from U2F API)
688 'strU2FTimeout' => _pgettext('U2F error', 'Timed out waiting for security key activation.'),
689 // l10n: error code 2 (from U2F API)
690 'strU2FBadRequest' => _pgettext('U2F error', 'Invalid request sent to security key.'),
691 // l10n: unknown error code (from U2F API)
692 'strU2FUnknown' => _pgettext('U2F error', 'Unknown security key error.'),
693 // l10n: error code 3 (from U2F API)
694 'strU2FInvalidClient' => _pgettext('U2F error', 'Client does not support security key.'),
695 // l10n: error code 4 (from U2F API) on register
696 'strU2FErrorRegister' => _pgettext('U2F error', 'Failed security key activation.'),
697 // l10n: error code 4 (from U2F API) on authanticate
698 'strU2FErrorAuthenticate' => _pgettext('U2F error', 'Invalid security key.'),
700 'webAuthnNotSupported' => __(
701 'WebAuthn is not available. Please use a supported browser in a secure context (HTTPS).',
704 /* Designer */
705 'strIndexedDBNotWorking' => __(
706 'You can not open, save or delete your page layout, as IndexedDB is not working'
707 . ' in your browser and your phpMyAdmin configuration storage is not configured for this.',
709 'strTableAlreadyExists' => _pgettext(
710 'The table already exists in the designer and can not be added once more.',
711 'Table %s already exists!',
713 'strHide' => __('Hide'),
714 'strShow' => __('Show'),
715 'strStructure' => __('Structure'),
717 'strMonthNameJan' => _pgettext('Month name', 'January'),
718 'strMonthNameFeb' => _pgettext('Month name', 'February'),
719 'strMonthNameMar' => _pgettext('Month name', 'March'),
720 'strMonthNameApr' => _pgettext('Month name', 'April'),
721 'strMonthNameMay' => _pgettext('Month name', 'May'),
722 'strMonthNameJun' => _pgettext('Month name', 'June'),
723 'strMonthNameJul' => _pgettext('Month name', 'July'),
724 'strMonthNameAug' => _pgettext('Month name', 'August'),
725 'strMonthNameSep' => _pgettext('Month name', 'September'),
726 'strMonthNameOct' => _pgettext('Month name', 'October'),
727 'strMonthNameNov' => _pgettext('Month name', 'November'),
728 'strMonthNameDec' => _pgettext('Month name', 'December'),
729 'strMonthNameJanShort' => _pgettext('Short month name for January', 'Jan'),
730 'strMonthNameFebShort' => _pgettext('Short month name for February', 'Feb'),
731 'strMonthNameMarShort' => _pgettext('Short month name for March', 'Mar'),
732 'strMonthNameAprShort' => _pgettext('Short month name for April', 'Apr'),
733 'strMonthNameMayShort' => _pgettext('Short month name for May', 'May'),
734 'strMonthNameJunShort' => _pgettext('Short month name for June', 'Jun'),
735 'strMonthNameJulShort' => _pgettext('Short month name for July', 'Jul'),
736 'strMonthNameAugShort' => _pgettext('Short month name for August', 'Aug'),
737 'strMonthNameSepShort' => _pgettext('Short month name for September', 'Sep'),
738 'strMonthNameOctShort' => _pgettext('Short month name for October', 'Oct'),
739 'strMonthNameNovShort' => _pgettext('Short month name for November', 'Nov'),
740 'strMonthNameDecShort' => _pgettext('Short month name for December', 'Dec'),
741 'strDayNameSun' => _pgettext('Week day name', 'Sunday'),
742 'strDayNameMon' => _pgettext('Week day name', 'Monday'),
743 'strDayNameTue' => _pgettext('Week day name', 'Tuesday'),
744 'strDayNameWed' => _pgettext('Week day name', 'Wednesday'),
745 'strDayNameThu' => _pgettext('Week day name', 'Thursday'),
746 'strDayNameFri' => _pgettext('Week day name', 'Friday'),
747 'strDayNameSat' => _pgettext('Week day name', 'Saturday'),
748 'strDayNameSunShort' => _pgettext('Short week day name for Sunday', 'Sun'),
749 'strDayNameMonShort' => _pgettext('Short week day name for Monday', 'Mon'),
750 'strDayNameTueShort' => _pgettext('Short week day name for Tuesday', 'Tue'),
751 'strDayNameWedShort' => _pgettext('Short week day name for Wednesday', 'Wed'),
752 'strDayNameThuShort' => _pgettext('Short week day name for Thursday', 'Thu'),
753 'strDayNameFriShort' => _pgettext('Short week day name for Friday', 'Fri'),
754 'strDayNameSatShort' => _pgettext('Short week day name for Saturday', 'Sat'),
755 'strDayNameSunMin' => _pgettext('Minimal week day name for Sunday', 'Su'),
756 'strDayNameMonMin' => _pgettext('Minimal week day name for Monday', 'Mo'),
757 'strDayNameTueMin' => _pgettext('Minimal week day name for Tuesday', 'Tu'),
758 'strDayNameWedMin' => _pgettext('Minimal week day name for Wednesday', 'We'),
759 'strDayNameThuMin' => _pgettext('Minimal week day name for Thursday', 'Th'),
760 'strDayNameFriMin' => _pgettext('Minimal week day name for Friday', 'Fr'),
761 'strDayNameSatMin' => _pgettext('Minimal week day name for Saturday', 'Sa'),
762 'strWeekHeader' => _pgettext('Column header for week of the year in calendar', 'Wk'),
763 /* l10n: DO NOT TRANSLATE! Use either "calendar-month-year" or "calendar-year-month". */
764 'strMonthAfterYear' => _pgettext('The month-year order in a calendar', 'calendar-month-year'),
765 'strYearSuffix' => _pgettext('Year suffix for calendar, "none" is empty', 'none'),
766 'strCalendarTime' => _pgettext('A specific point in the day, as shown on a clock', 'Time'),
767 'strCalendarHour' => _pgettext('Unit of time', 'Hour'),
768 'strCalendarMinute' => _pgettext('Unit of time', 'Minute'),
769 'strCalendarSecond' => _pgettext('Unit of time', 'Second'),
770 'strCalendarMillisecond' => _pgettext('Unit of time', 'Millisecond'),
771 'strCalendarMicrosecond' => _pgettext('Unit of time', 'Microsecond'),
772 'strCalendarTimezone' => _pgettext('The time zone for a time of day', 'Time zone'),
773 /* l10n: Display text for calendar close link */
774 'strCalendarClose' => __('Done'),
775 /* l10n: Display text for previous month link in calendar */
776 'strCalendarPrevious' => _pgettext('Previous month', 'Prev'),
777 /* l10n: Display text for next month link in calendar */
778 'strCalendarNext' => _pgettext('Next month', 'Next'),
779 /* l10n: Display text for current month link in calendar */
780 'strCalendarCurrent' => __('Today'),
782 /* Validator */
783 'strValidatorRequired' => __('This field is required'),
784 'strValidatorRemote' => __('Please fix this field'),
785 'strValidatorEmail' => __('Please enter a valid email address'),
786 'strValidatorUrl' => __('Please enter a valid URL'),
787 'strValidatorDate' => __('Please enter a valid date'),
788 'strValidatorDateIso' => __('Please enter a valid date ( ISO )'),
789 'strValidatorNumber' => __('Please enter a valid number'),
790 'strValidatorCreditCard' => __('Please enter a valid credit card number'),
791 'strValidatorDigits' => __('Please enter only digits'),
792 'strValidatorEqualTo' => __('Please enter the same value again'),
793 'strValidatorMaxLength' => __('Please enter no more than {0} characters'),
794 'strValidatorMinLength' => __('Please enter at least {0} characters'),
795 'strValidatorRangeLength' => __('Please enter a value between {0} and {1} characters long'),
796 'strValidatorRange' => __('Please enter a value between {0} and {1}'),
797 'strValidatorMax' => __('Please enter a value less than or equal to {0}'),
798 'strValidatorMin' => __('Please enter a value greater than or equal to {0}'),
799 'strValidationFunctionForDateTime' => __('Please enter a valid date or time'),
800 'strValidationFunctionForHex' => __('Please enter a valid HEX input'),
801 /* l10n: To validate the usage of a MD5 function on the column */
802 'strValidationFunctionForMd5' => __('This column can not contain a 32 chars value'),
803 /* l10n: To validate the usage of an AES_ENCRYPT/DES_ENCRYPT function on the column */
804 'strValidationFunctionForAesDesEncrypt' => __(
805 'These functions are meant to return a binary result; to avoid inconsistent results you should store'
806 . ' it in a BINARY, VARBINARY, or BLOB column.',
809 'uploadProgressMaximumAllowedSize' => __(
810 'The file being uploaded is probably larger than the maximum allowed size.',
812 'uploadProgressStatusText' => __('%s of %s'),
813 'uploadProgressPerSecond' => __('%s/sec.'),
814 'uploadProgressRemainingMin' => __('About %MIN min. %SEC sec. remaining.'),
815 'uploadProgressRemainingSec' => __('About %SEC sec. remaining.'),
816 'uploadProgressBeingProcessed' => __('The file is being processed, please be patient.'),
817 'uploadProgressUploading' => __('Uploading your import fileā€¦'),
818 'uploadProgressNoDetails' => __(
819 'Please be patient, the file is being uploaded. Details about the upload are not available.',
822 'configErrorInvalidPositiveNumber' => __('Not a positive number!'),
823 'configErrorInvalidNonNegativeNumber' => __('Not a non-negative number!'),
824 'configErrorInvalidPortNumber' => __('Not a valid port number!'),
825 'configErrorInvalidValue' => __('Incorrect value!'),
826 'configErrorInvalidUpperBound' => __('Value must be less than or equal to %s!'),