Passed
Push — master ( f8fb01...a2cc9e )
by Maurício
11:48
created

JavaScriptMessagesController::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 3
cp 0
crap 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpMyAdmin\Controllers;
6
7
use function json_encode;
8
9
/**
10
 * Exporting of translated messages from PHP to JavaScript.
11
 */
12
final class JavaScriptMessagesController
13
{
14
    /** @var array<string, string|null> */
15
    private $messages = [];
16
17
    public function __construct()
18
    {
19
        $this->setMessages();
20
    }
21
22
    public function index(): void
23
    {
24
        echo 'var Messages = ' . json_encode($this->messages) . ';';
25
    }
26
27
    private function setMessages(): void
28
    {
29
        global $cfg, $PMA_Theme;
30
31
        $this->messages = [
32
            /* For confirmations */
33
            'strConfirm' => __('Confirm'),
34
            'strDoYouReally' => __('Do you really want to execute "%s"?'),
35
            'strDropDatabaseStrongWarning' => __('You are about to DESTROY a complete database!'),
36
            'strDatabaseRenameToSameName' => __(
37
                'Cannot rename database to the same name. Change the name and try again'
38
            ),
39
            'strDropTableStrongWarning' => __('You are about to DESTROY a complete table!'),
40
            'strTruncateTableStrongWarning' => __('You are about to TRUNCATE a complete table!'),
41
            'strDeleteTrackingData' => __('Delete tracking data for this table?'),
42
            'strDeleteTrackingDataMultiple' => __('Delete tracking data for these tables?'),
43
            'strDeleteTrackingVersion' => __('Delete tracking data for this version?'),
44
            'strDeleteTrackingVersionMultiple' => __('Delete tracking data for these versions?'),
45
            'strDeletingTrackingEntry' => __('Delete entry from tracking report?'),
46
            'strDeletingTrackingData' => __('Deleting tracking data'),
47
            'strDroppingPrimaryKeyIndex' => __('Dropping Primary Key/Index'),
48
            'strDroppingForeignKey' => __('Dropping Foreign key.'),
49
            'strOperationTakesLongTime' => __('This operation could take a long time. Proceed anyway?'),
50
            'strDropUserGroupWarning' => __('Do you really want to delete user group "%s"?'),
51
            'strConfirmDeleteQBESearch' => __('Do you really want to delete the search "%s"?'),
52
            'strConfirmNavigation' => __('You have unsaved changes; are you sure you want to leave this page?'),
53
            'strConfirmRowChange' => __(
54
                'You are trying to reduce the number of rows, but have already entered'
55
                . ' data in those rows which will be lost. Do you wish to continue?'
56
            ),
57
            'strDropUserWarning' => __('Do you really want to revoke the selected user(s) ?'),
58
            'strDeleteCentralColumnWarning' => __('Do you really want to delete this central column?'),
59
            'strDropRTEitems' => __('Do you really want to delete the selected items?'),
60
            'strDropPartitionWarning' => __(
61
                'Do you really want to DROP the selected partition(s)? This will also DELETE ' .
62
                'the data related to the selected partition(s)!'
63
            ),
64
            'strTruncatePartitionWarning' => __('Do you really want to TRUNCATE the selected partition(s)?'),
65
            'strRemovePartitioningWarning' => __('Do you really want to remove partitioning?'),
66
            'strResetSlaveWarning' => __('Do you really want to RESET SLAVE?'),
67
            'strChangeColumnCollation' => __(
68
                'This operation will attempt to convert your data to the new collation. In '
69
                    . 'rare cases, especially where a character doesn\'t exist in the new '
70
                    . 'collation, this process could cause the data to appear incorrectly under '
71
                    . 'the new collation; in this case we suggest you revert to the original '
72
                    . 'collation and refer to the tips at '
73
            )
74
                . '<a href="%s" target="garbled_data_wiki">' . __('Garbled Data') . '</a>.'
75
                . '<br><br>'
76
                . __('Are you sure you wish to change the collation and convert the data?'),
77
78
            'strChangeAllColumnCollationsWarning' => __(
79
                'Through this operation, MySQL attempts to map the data values between '
80
                    . 'collations. If the character sets are incompatible, there may be data loss '
81
                    . 'and this lost data may <b>NOT</b> be recoverable simply by changing back the '
82
                    . 'column collation(s). <b>To convert existing data, it is suggested to use the '
83
                    . 'column(s) editing feature (the "Change" Link) on the table structure page. '
84
                    . '</b>'
85
            )
86
                . '<br><br>'
87
                . __(
88
                    'Are you sure you wish to change all the column collations and convert the data?'
89
                ),
90
91
            /* For modal dialog buttons */
92
            'strSaveAndClose' => __('Save & close'),
93
            'strReset' => __('Reset'),
94
            'strResetAll' => __('Reset all'),
95
96
            /* For indexes */
97
            'strFormEmpty' => __('Missing value in the form!'),
98
            'strRadioUnchecked' => __('Select at least one of the options!'),
99
            'strEnterValidNumber' => __('Please enter a valid number!'),
100
            'strEnterValidLength' => __('Please enter a valid length!'),
101
            'strAddIndex' => __('Add index'),
102
            'strEditIndex' => __('Edit index'),
103
            'strAddToIndex' => __('Add %s column(s) to index'),
104
            'strCreateSingleColumnIndex' => __('Create single-column index'),
105
            'strCreateCompositeIndex' => __('Create composite index'),
106
            'strCompositeWith' => __('Composite with:'),
107
            'strMissingColumn' => __('Please select column(s) for the index.'),
108
109
            /* For Preview SQL*/
110
            'strPreviewSQL' => __('Preview SQL'),
111
112
            /* For Simulate DML*/
113
            'strSimulateDML' => __('Simulate query'),
114
            'strMatchedRows' => __('Matched rows:'),
115
            'strSQLQuery' => __('SQL query:'),
116
117
            /* Charts */
118
            /* l10n: Default label for the y-Axis of Charts */
119
            'strYValues' => __('Y values'),
120
121
            /* Database multi-table query */
122
            'strEmptyQuery' => __('Please enter the SQL query first.'),
123
124
            /* For server/privileges.js */
125
            'strHostEmpty' => __('The host name is empty!'),
126
            'strUserEmpty' => __('The user name is empty!'),
127
            'strPasswordEmpty' => __('The password is empty!'),
128
            'strPasswordNotSame' => __('The passwords aren\'t the same!'),
129
            'strRemovingSelectedUsers' => __('Removing Selected Users'),
130
            'strClose' => __('Close'),
131
132
            /* For export.js */
133
            'strTemplateCreated' => __('Template was created.'),
134
            'strTemplateLoaded' => __('Template was loaded.'),
135
            'strTemplateUpdated' => __('Template was updated.'),
136
            'strTemplateDeleted' => __('Template was deleted.'),
137
138
            /* l10n: Other, small valued, queries */
139
            'strOther' => __('Other'),
140
            /* l10n: Thousands separator */
141
            'strThousandsSeparator' => __(','),
142
            /* l10n: Decimal separator */
143
            'strDecimalSeparator' => __('.'),
144
145
            'strChartConnectionsTitle' => __('Connections / Processes'),
146
147
            /* server status monitor */
148
            'strIncompatibleMonitorConfig' => __('Local monitor configuration incompatible!'),
149
            'strIncompatibleMonitorConfigDescription' => __(
150
                'The chart arrangement configuration in your browsers local storage is not '
151
                . 'compatible anymore to the newer version of the monitor dialog. It is very '
152
                . 'likely that your current configuration will not work anymore. Please reset '
153
                . 'your configuration to default in the <i>Settings</i> menu.'
154
            ),
155
156
            'strQueryCacheEfficiency' => __('Query cache efficiency'),
157
            'strQueryCacheUsage' => __('Query cache usage'),
158
            'strQueryCacheUsed' => __('Query cache used'),
159
160
            'strSystemCPUUsage' => __('System CPU usage'),
161
            'strSystemMemory' => __('System memory'),
162
            'strSystemSwap' => __('System swap'),
163
164
            'strAverageLoad' => __('Average load'),
165
            'strTotalMemory' => __('Total memory'),
166
            'strCachedMemory' => __('Cached memory'),
167
            'strBufferedMemory' => __('Buffered memory'),
168
            'strFreeMemory' => __('Free memory'),
169
            'strUsedMemory' => __('Used memory'),
170
171
            'strTotalSwap' => __('Total swap'),
172
            'strCachedSwap' => __('Cached swap'),
173
            'strUsedSwap' => __('Used swap'),
174
            'strFreeSwap' => __('Free swap'),
175
176
            'strBytesSent' => __('Bytes sent'),
177
            'strBytesReceived' => __('Bytes received'),
178
            'strConnections' => __('Connections'),
179
            'strProcesses' => __('Processes'),
180
181
            /* summary row */
182
            'strB' => __('B'),
183
            'strKiB' => __('KiB'),
184
            'strMiB' => __('MiB'),
185
            'strGiB' => __('GiB'),
186
            'strTiB' => __('TiB'),
187
            'strPiB' => __('PiB'),
188
            'strEiB' => __('EiB'),
189
            'strNTables' => __('%d table(s)'),
190
191
            /* l10n: Questions is the name of a MySQL Status variable */
192
            'strQuestions' => __('Questions'),
193
            'strTraffic' => __('Traffic'),
194
            'strSettings' => __('Settings'),
195
            'strAddChart' => __('Add chart to grid'),
196
            'strAddOneSeriesWarning' => __('Please add at least one variable to the series!'),
197
            'strNone' => __('None'),
198
            'strResumeMonitor' => __('Resume monitor'),
199
            'strPauseMonitor' => __('Pause monitor'),
200
            'strStartRefresh' => __('Start auto refresh'),
201
            'strStopRefresh' => __('Stop auto refresh'),
202
            /* Monitor: Instructions Dialog */
203
            'strBothLogOn' => __('general_log and slow_query_log are enabled.'),
204
            'strGenLogOn' => __('general_log is enabled.'),
205
            'strSlowLogOn' => __('slow_query_log is enabled.'),
206
            'strBothLogOff' => __('slow_query_log and general_log are disabled.'),
207
            'strLogOutNotTable' => __('log_output is not set to TABLE.'),
208
            'strLogOutIsTable' => __('log_output is set to TABLE.'),
209
            'strSmallerLongQueryTimeAdvice' => __(
210
                'slow_query_log is enabled, but the server logs only queries that take longer '
211
                . 'than %d seconds. It is advisable to set this long_query_time 0-2 seconds, '
212
                . 'depending on your system.'
213
            ),
214
            'strLongQueryTimeSet' => __('long_query_time is set to %d second(s).'),
215
            'strSettingsAppliedGlobal' => __(
216
                'Following settings will be applied globally and reset to default on server '
217
                . 'restart:'
218
            ),
219
            /* l10n: %s is FILE or TABLE */
220
            'strSetLogOutput' => __('Set log_output to %s'),
221
            /* l10n: Enable in this context means setting a status variable to ON */
222
            'strEnableVar' => __('Enable %s'),
223
            /* l10n: Disable in this context means setting a status variable to OFF */
224
            'strDisableVar' => __('Disable %s'),
225
            /* l10n: %d seconds */
226
            'setSetLongQueryTime' => __('Set long_query_time to %d seconds.'),
227
            'strNoSuperUser' => __(
228
                'You can\'t change these variables. Please log in as root or contact'
229
                . ' your database administrator.'
230
            ),
231
            'strChangeSettings' => __('Change settings'),
232
            'strCurrentSettings' => __('Current settings'),
233
234
            'strChartTitle' => __('Chart title'),
235
            /* l10n: As in differential values */
236
            'strDifferential' => __('Differential'),
237
            'strDividedBy' => __('Divided by %s'),
238
            'strUnit' => __('Unit'),
239
240
            'strFromSlowLog' => __('From slow log'),
241
            'strFromGeneralLog' => __('From general log'),
242
            'strServerLogError' => __(
243
                'The database name is not known for this query in the server\'s logs.'
244
            ),
245
            'strAnalysingLogsTitle' => __('Analysing logs'),
246
            'strAnalysingLogs' => __('Analysing & loading logs. This may take a while.'),
247
            'strCancelRequest' => __('Cancel request'),
248
            'strCountColumnExplanation' => __(
249
                'This column shows the amount of identical queries that are grouped together. '
250
                . 'However only the SQL query itself has been used as a grouping criteria, so '
251
                . 'the other attributes of queries, such as start time, may differ.'
252
            ),
253
            'strMoreCountColumnExplanation' => __(
254
                'Since grouping of INSERTs queries has been selected, INSERT queries into the '
255
                . 'same table are also being grouped together, disregarding of the inserted '
256
                . 'data.'
257
            ),
258
            'strLogDataLoaded' => __('Log data loaded. Queries executed in this time span:'),
259
260
            'strJumpToTable' => __('Jump to Log table'),
261
            'strNoDataFoundTitle' => __('No data found'),
262
            'strNoDataFound' => __('Log analysed, but no data found in this time span.'),
263
264
            'strAnalyzing' => __('Analyzing…'),
265
            'strExplainOutput' => __('Explain output'),
266
            'strStatus' => __('Status'),
267
            'strTime' => __('Time'),
268
            'strTotalTime' => __('Total time:'),
269
            'strProfilingResults' => __('Profiling results'),
270
            'strTable' => _pgettext('Display format', 'Table'),
271
            'strChart' => __('Chart'),
272
273
            'strAliasDatabase' => _pgettext('Alias', 'Database'),
274
            'strAliasTable' => _pgettext('Alias', 'Table'),
275
            'strAliasColumn' => _pgettext('Alias', 'Column'),
276
277
            /* l10n: A collection of available filters */
278
            'strFiltersForLogTable' => __('Log table filter options'),
279
            /* l10n: Filter as in "Start Filtering" */
280
            'strFilter' => __('Filter'),
281
            'strFilterByWordRegexp' => __('Filter queries by word/regexp:'),
282
            'strIgnoreWhereAndGroup' => __('Group queries, ignoring variable data in WHERE clauses'),
283
            'strSumRows' => __('Sum of grouped rows:'),
284
            'strTotal' => __('Total:'),
285
286
            'strLoadingLogs' => __('Loading logs'),
287
            'strRefreshFailed' => __('Monitor refresh failed'),
288
            'strInvalidResponseExplanation' => __(
289
                'While requesting new chart data the server returned an invalid response. This '
290
                . 'is most likely because your session expired. Reloading the page and '
291
                . 'reentering your credentials should help.'
292
            ),
293
            'strReloadPage' => __('Reload page'),
294
295
            'strAffectedRows' => __('Affected rows:'),
296
297
            'strFailedParsingConfig' => __(
298
                'Failed parsing config file. It doesn\'t seem to be valid JSON code.'
299
            ),
300
            'strFailedBuildingGrid' => __(
301
                'Failed building chart grid with imported config. Resetting to default config…'
302
            ),
303
            'strImport' => __('Import'),
304
            'strImportDialogTitle' => __('Import monitor configuration'),
305
            'strImportDialogMessage' => __('Please select the file you want to import.'),
306
            'strTableNameDialogMessage' => __('Please enter a valid table name.'),
307
            'strDBNameDialogMessage' => __('Please enter a valid database name.'),
308
            'strNoImportFile' => __('No files available on server for import!'),
309
310
            'strAnalyzeQuery' => __('Analyse query'),
311
312
            /* For query editor */
313
            'strFormatting' => __('Formatting SQL…'),
314
            'strNoParam' => __('No parameters found!'),
315
316
            /* For inline query editing */
317
            'strGo' => __('Go'),
318
            'strCancel' => __('Cancel'),
319
320
            /* For page-related settings */
321
            'strPageSettings' => __('Page-related settings'),
322
            'strApply' => __('Apply'),
323
324
            /* For Ajax Notifications */
325
            'strLoading' => __('Loading…'),
326
            'strAbortedRequest' => __('Request aborted!!'),
327
            'strProcessingRequest' => __('Processing request'),
328
            'strRequestFailed' => __('Request failed!!'),
329
            'strErrorProcessingRequest' => __('Error in processing request'),
330
            'strErrorCode' => __('Error code: %s'),
331
            'strErrorText' => __('Error text: %s'),
332
            'strErrorConnection' => __(
333
                'It seems that the connection to server has been lost. Please check your ' .
334
                'network connectivity and server status.'
335
            ),
336
            'strNoDatabasesSelected' => __('No databases selected.'),
337
            'strNoAccountSelected' => __('No accounts selected.'),
338
            'strDroppingColumn' => __('Dropping column'),
339
            'strAddingPrimaryKey' => __('Adding primary key'),
340
            'strOK' => __('OK'),
341
            'strDismiss' => __('Click to dismiss this notification'),
342
343
            /* For database/operations.js */
344
            'strRenamingDatabases' => __('Renaming databases'),
345
            'strCopyingDatabase' => __('Copying database'),
346
            'strChangingCharset' => __('Changing charset'),
347
            'strNo' => __('No'),
348
349
            /* For Foreign key checks */
350
            'strForeignKeyCheck' => __('Enable foreign key checks'),
351
352
            /* For db_stucture.js */
353
            'strErrorRealRowCount' => __('Failed to get real row count.'),
354
355
            /* For database/search.js */
356
            'strSearching' => __('Searching'),
357
            'strHideSearchResults' => __('Hide search results'),
358
            'strShowSearchResults' => __('Show search results'),
359
            'strBrowsing' => __('Browsing'),
360
            'strDeleting' => __('Deleting'),
361
            'strConfirmDeleteResults' => __('Delete the matches for the %s table?'),
362
363
            /* For db_routines.js */
364
            'MissingReturn' => __('The definition of a stored function must contain a RETURN statement!'),
365
            'strExport' => __('Export'),
366
            'NoExportable' => __('No routine is exportable. Required privileges may be lacking.'),
367
368
            /* For ENUM/SET editor*/
369
            'enum_editor' => __('ENUM/SET editor'),
370
            'enum_columnVals' => __('Values for column %s'),
371
            'enum_newColumnVals' => __('Values for a new column'),
372
            'enum_hint' => __('Enter each value in a separate field.'),
373
            'enum_addValue' => __('Add %d value(s)'),
374
375
            /* For import.js */
376
            'strImportCSV' => __(
377
                'Note: If the file contains multiple tables, they will be combined into one.'
378
            ),
379
380
            /* For sql.js */
381
            'strHideQueryBox' => __('Hide query box'),
382
            'strShowQueryBox' => __('Show query box'),
383
            'strEdit' => __('Edit'),
384
            'strDelete' => __('Delete'),
385
            'strNotValidRowNumber' => __('%d is not valid row number.'),
386
            'strBrowseForeignValues' => __('Browse foreign values'),
387
            'strNoAutoSavedQuery' => __('No previously auto-saved query is available. Loading default query.'),
388
            'strPreviousSaveQuery' => __(
389
                'You have a previously saved query. Click Get auto-saved query to load the query.'
390
            ),
391
            'strBookmarkVariable' => __('Variable %d:'),
392
393
            /* For Central list of columns */
394
            'pickColumn' => __('Pick'),
395
            'pickColumnTitle' => __('Column selector'),
396
            'searchList' => __('Search this list'),
397
            'strEmptyCentralList' => __(
398
                'No columns in the central list. Make sure the Central columns list for '
399
                . 'database %s has columns that are not present in the current table.'
400
            ),
401
            'seeMore' => __('See more'),
402
            'confirmTitle' => __('Are you sure?'),
403
            'makeConsistentMessage' => __(
404
                'This action may change some of the columns definition.<br>Are you sure you '
405
                . 'want to continue?'
406
            ),
407
            'strContinue' => __('Continue'),
408
409
            /** For normalization */
410
            'strAddPrimaryKey' => __('Add primary key'),
411
            'strPrimaryKeyAdded' => __('Primary key added.'),
412
            'strToNextStep' => __('Taking you to next step…'),
413
            'strFinishMsg' => __("The first step of normalization is complete for table '%s'."),
414
            'strEndStep' => __('End of step'),
415
            'str2NFNormalization' => __('Second step of normalization (2NF)'),
416
            'strDone' => __('Done'),
417
            'strConfirmPd' => __('Confirm partial dependencies'),
418
            'strSelectedPd' => __('Selected partial dependencies are as follows:'),
419
            'strPdHintNote' => __(
420
                'Note: a, b -> d,f implies values of columns a and b combined together can '
421
                . 'determine values of column d and column f.'
422
            ),
423
            'strNoPdSelected' => __('No partial dependencies selected!'),
424
            'strBack' => __('Back'),
425
            'strShowPossiblePd' => __('Show me the possible partial dependencies based on data in the table'),
426
            'strHidePd' => __('Hide partial dependencies list'),
427
            'strWaitForPd' => __(
428
                'Sit tight! It may take few seconds depending on data size and column count of '
429
                . 'the table.'
430
            ),
431
            'strStep' => __('Step'),
432
            'strMoveRepeatingGroup' => '<ol><b>' . __('The following actions will be performed:') . '</b>'
433
                . '<li>' . __('DROP columns %s from the table %s') . '</li>'
434
                . '<li>' . __('Create the following table') . '</li>',
435
            'strNewTablePlaceholder' => 'Enter new table name',
436
            'strNewColumnPlaceholder' => 'Enter column name',
437
            'str3NFNormalization' => __('Third step of normalization (3NF)'),
438
            'strConfirmTd' => __('Confirm transitive dependencies'),
439
            'strSelectedTd' => __('Selected dependencies are as follows:'),
440
            'strNoTdSelected' => __('No dependencies selected!'),
441
442
            /* For server/variables.js */
443
            'strSave' => __('Save'),
444
445
            /* For table/select.js */
446
            'strHideSearchCriteria' => __('Hide search criteria'),
447
            'strShowSearchCriteria' => __('Show search criteria'),
448
            'strRangeSearch' => __('Range search'),
449
            'strColumnMax' => __('Column maximum:'),
450
            'strColumnMin' => __('Column minimum:'),
451
            'strMinValue' => __('Minimum value:'),
452
            'strMaxValue' => __('Maximum value:'),
453
454
            /* For table/find_replace.js */
455
            'strHideFindNReplaceCriteria' => __('Hide find and replace criteria'),
456
            'strShowFindNReplaceCriteria' => __('Show find and replace criteria'),
457
458
            /* For table/zoom_plot_jqplot.js */
459
            'strDisplayHelp' => '<ul><li>'
460
                . __('Each point represents a data row.')
461
                . '</li><li>'
462
                . __('Hovering over a point will show its label.')
463
                . '</li><li>'
464
                . __('To zoom in, select a section of the plot with the mouse.')
465
                . '</li><li>'
466
                . __('Click reset zoom button to come back to original state.')
467
                . '</li><li>'
468
                . __('Click a data point to view and possibly edit the data row.')
469
                . '</li><li>'
470
                . __('The plot can be resized by dragging it along the bottom right corner.')
471
                . '</li></ul>',
472
            'strHelpTitle' => 'Zoom search instructions',
473
            'strInputNull' => '<strong>' . __('Select two columns') . '</strong>',
474
            'strSameInputs' => '<strong>'
475
                . __('Select two different columns')
476
                . '</strong>',
477
            'strDataPointContent' => __('Data point content'),
478
479
            /* For table/change.js */
480
            'strIgnore' => __('Ignore'),
481
            'strCopy' => __('Copy'),
482
            'strX' => __('X'),
483
            'strY' => __('Y'),
484
            'strPoint' => __('Point'),
485
            'strPointN' => __('Point %d'),
486
            'strLineString' => __('Linestring'),
487
            'strPolygon' => __('Polygon'),
488
            'strGeometry' => __('Geometry'),
489
            'strInnerRing' => __('Inner ring'),
490
            'strOuterRing' => __('Outer ring'),
491
            'strAddPoint' => __('Add a point'),
492
            'strAddInnerRing' => __('Add an inner ring'),
493
            'strYes' => __('Yes'),
494
            'strCopyEncryptionKey' => __('Do you want to copy encryption key?'),
495
            'strEncryptionKey' => __('Encryption key'),
496
            /* l10n: Tip for HEX conversion of Integers */
497
            'HexConversionInfo' => __(
498
                'The HEX function will treat the integer as a string while calculating the hexadecimal value'
499
            ),
500
501
            /* For Tip to be shown on Time field */
502
            'strMysqlAllowedValuesTipTime' => __(
503
                'MySQL accepts additional values not selectable by the slider;'
504
                . ' key in those values directly if desired'
505
            ),
506
507
            /* For Tip to be shown on Date field */
508
            'strMysqlAllowedValuesTipDate' => __(
509
                'MySQL accepts additional values not selectable by the datepicker;'
510
                . ' key in those values directly if desired'
511
            ),
512
513
            /* For Lock symbol Tooltip */
514
            'strLockToolTip' => __(
515
                'Indicates that you have made changes to this page;'
516
                . ' you will be prompted for confirmation before abandoning changes'
517
            ),
518
519
            /* Designer (js/designer/move.js) */
520
            'strSelectReferencedKey' => __('Select referenced key'),
521
            'strSelectForeignKey' => __('Select Foreign Key'),
522
            'strPleaseSelectPrimaryOrUniqueKey' => __('Please select the primary key or a unique key!'),
523
            'strChangeDisplay' => __('Choose column to display'),
524
            'strLeavingDesigner' => __(
525
                'You haven\'t saved the changes in the layout. They will be lost if you'
526
                . ' don\'t save them. Do you want to continue?'
527
            ),
528
            'strQueryEmpty' => __('value/subQuery is empty'),
529
            'strAddTables' => __('Add tables from other databases'),
530
            'strPageName' => __('Page name'),
531
            'strSavePage' => __('Save page'),
532
            'strSavePageAs' => __('Save page as'),
533
            'strOpenPage' => __('Open page'),
534
            'strDeletePage' => __('Delete page'),
535
            'strUntitled' => __('Untitled'),
536
            'strSelectPage' => __('Please select a page to continue'),
537
            'strEnterValidPageName' => __('Please enter a valid page name'),
538
            'strLeavingPage' => __('Do you want to save the changes to the current page?'),
539
            'strSuccessfulPageDelete' => __('Successfully deleted the page'),
540
            'strExportRelationalSchema' => __('Export relational schema'),
541
            'strModificationSaved' => __('Modifications have been saved'),
542
543
            /* Visual query builder (js/designer/move.js) */
544
            'strObjectsCreated' => __('%d object(s) created.'),
545
            'strColumnName' => __('Column name'),
546
            'strSubmit' => __('Submit'),
547
548
            /* For makegrid.js (column reordering, show/hide column, grid editing) */
549
            'strCellEditHint' => __('Press escape to cancel editing.'),
550
            'strSaveCellWarning' => __(
551
                'You have edited some data and they have not been saved. Are you sure you want '
552
                . 'to leave this page before saving the data?'
553
            ),
554
            'strColOrderHint' => __('Drag to reorder.'),
555
            'strSortHint' => __('Click to sort results by this column.'),
556
            'strMultiSortHint' => __(
557
                'Shift+Click to add this column to ORDER BY clause or to toggle ASC/DESC.'
558
                . '<br>- Ctrl+Click or Alt+Click (Mac: Shift+Option+Click) to remove column '
559
                . 'from ORDER BY clause'
560
            ),
561
            'strColMarkHint' => __('Click to mark/unmark.'),
562
            'strColNameCopyHint' => __('Double-click to copy column name.'),
563
            'strColVisibHint' => __(
564
                'Click the drop-down arrow<br>to toggle column\'s visibility.'
565
            ),
566
            'strShowAllCol' => __('Show all'),
567
            'strAlertNonUnique' => __(
568
                'This table does not contain a unique column. Features related to the grid '
569
                . 'edit, checkbox, Edit, Copy and Delete links may not work after saving.'
570
            ),
571
            'strEnterValidHex' => __('Please enter a valid hexadecimal string. Valid characters are 0-9, A-F.'),
572
            'strShowAllRowsWarning' => __(
573
                'Do you really want to see all of the rows? For a big table this could crash '
574
                . 'the browser.'
575
            ),
576
            'strOriginalLength' => __('Original length'),
577
578
            /** Drag & Drop sql import messages */
579
            'dropImportMessageCancel' => __('cancel'),
580
            'dropImportMessageAborted' => __('Aborted'),
581
            'dropImportMessageFailed' => __('Failed'),
582
            'dropImportMessageSuccess' => __('Success'),
583
            'dropImportImportResultHeader' => __('Import status'),
584
            'dropImportDropFiles' => __('Drop files here'),
585
            'dropImportSelectDB' => __('Select database first'),
586
587
            /* For Print view */
588
            'print' => __('Print'),
589
            'back' => __('Back'),
590
591
            // this approach does not work when the parameter is changed via user prefs
592
            'strGridEditFeatureHint' => $cfg['GridEditing'] === 'double-click'
593
                ? __('You can also edit most values<br>by double-clicking directly on them.')
594
                : ($cfg['GridEditing'] === 'click'
595
                    ? __('You can also edit most values<br>by clicking directly on them.')
596
                    : null),
597
598
            'strGoToLink' => __('Go to link:'),
599
            'strColNameCopyTitle' => __('Copy column name.'),
600
            'strColNameCopyText' => __('Right-click the column name to copy it to your clipboard.'),
601
602
            /* password generation */
603
            'strGeneratePassword' => __('Generate password'),
604
            'strGenerate' => __('Generate'),
605
            'strChangePassword' => __('Change password'),
606
607
            /* navigation tabs */
608
            'strMore' => __('More'),
609
610
            /* navigation panel */
611
            'strShowPanel' => __('Show panel'),
612
            'strHidePanel' => __('Hide panel'),
613
            'strUnhideNavItem' => __('Show hidden navigation tree items.'),
614
            'linkWithMain' => __('Link with main panel'),
615
            'unlinkWithMain' => __('Unlink from main panel'),
616
617
            /* microhistory */
618
            'strInvalidPage' => __('The requested page was not found in the history, it may have expired.'),
619
620
            /* update */
621
            'strNewerVersion' => __(
622
                'A newer version of phpMyAdmin is available and you should consider upgrading. '
623
                . 'The newest version is %s, released on %s.'
624
            ),
625
            /* l10n: Latest available phpMyAdmin version */
626
            'strLatestAvailable' => __(', latest stable version:'),
627
            'strUpToDate' => __('up to date'),
628
629
            'strCreateView' => __('Create view'),
630
631
            /* Error Reporting */
632
            'strSendErrorReport' => __('Send error report'),
633
            'strSubmitErrorReport' => __('Submit error report'),
634
            'strErrorOccurred' => __(
635
                'A fatal JavaScript error has occurred. Would you like to send an error report?'
636
            ),
637
            'strChangeReportSettings' => __('Change report settings'),
638
            'strShowReportDetails' => __('Show report details'),
639
            'strTimeOutError' => __(
640
                'Your export is incomplete, due to a low execution time limit at the PHP level!'
641
            ),
642
643
            'strTooManyInputs' => __(
644
                'Warning: a form on this page has more than %d fields. On submission, '
645
                . "some of the fields might be ignored, due to PHP's "
646
                . 'max_input_vars configuration.'
647
            ),
648
649
            'phpErrorsFound' => '<div class="alert alert-danger" role="alert">'
650
                . __('Some errors have been detected on the server!')
651
                . '<br>'
652
                . __('Please look at the bottom of this window.')
653
                . '<div>'
654
                . '<input id="pma_ignore_errors_popup" type="submit" value="'
655
                . __('Ignore')
656
                . '" class="btn btn-secondary floatright message_errors_found">'
657
                . '<input id="pma_ignore_all_errors_popup" type="submit" value="'
658
                . __('Ignore All')
659
                . '" class="btn btn-secondary floatright message_errors_found">'
660
                . '</div></div>',
661
662
            'phpErrorsBeingSubmitted' => '<div class="alert alert-danger" role="alert">'
663
                . __('Some errors have been detected on the server!')
664
                . '<br>'
665
                . __(
666
                    'As per your settings, they are being submitted currently, please be '
667
                    . 'patient.'
668
                )
669
                . '<br>'
670
                . '<img src="'
671
                . $PMA_Theme->getImgPath('ajax_clock_small.gif')
672
                . '" width="16" height="16" alt="ajax clock">'
673
                . '</div>',
674
            'strCopyQueryButtonSuccess' => __('Successfully copied!'),
675
            'strCopyQueryButtonFailure' => __('Copying failed!'),
676
677
            // For console
678
            'strConsoleRequeryConfirm' => __('Execute this query again?'),
679
            'strConsoleDeleteBookmarkConfirm' => __('Do you really want to delete this bookmark?'),
680
            'strConsoleDebugError' => __('Some error occurred while getting SQL debug info.'),
681
            'strConsoleDebugSummary' => __('%s queries executed %s times in %s seconds.'),
682
            'strConsoleDebugArgsSummary' => __('%s argument(s) passed'),
683
            'strConsoleDebugShowArgs' => __('Show arguments'),
684
            'strConsoleDebugHideArgs' => __('Hide arguments'),
685
            'strConsoleDebugTimeTaken' => __('Time taken:'),
686
            'strNoLocalStorage' => __(
687
                'There was a problem accessing your browser storage, some features may not'
688
                . ' work properly for you. It is likely that the browser doesn\'t support storage'
689
                . ' or the quota limit has been reached. In Firefox, corrupted storage can also'
690
                . ' cause such a problem, clearing your "Offline Website Data" might help. In Safari,'
691
                . ' such problem is commonly caused by "Private Mode Browsing".'
692
            ),
693
            // For modals in /database/structure
694
            'strCopyTablesTo' => __('Copy tables to'),
695
            'strAddPrefix' => __('Add table prefix'),
696
            'strReplacePrefix' => __('Replace table with prefix'),
697
            'strCopyPrefix' => __('Copy table with prefix'),
698
699
            /* For password strength simulation */
700
            'strExtrWeak' => __('Extremely weak'),
701
            'strVeryWeak' => __('Very weak'),
702
            'strWeak' => __('Weak'),
703
            'strGood' => __('Good'),
704
            'strStrong' => __('Strong'),
705
706
            /* U2F errors */
707
            'strU2FTimeout' => __('Timed out waiting for security key activation.'),
708
            'strU2FError' => __('Failed security key activation (%s).'),
709
710
            /* Designer */
711
            'strTableAlreadyExists' => _pgettext(
712
                'The table already exists in the designer and can not be added once more.',
713
                'Table %s already exists!'
714
            ),
715
            'strHide' => __('Hide'),
716
            'strShow' => __('Show'),
717
            'strStructure' => __('Structure'),
718
        ];
719
    }
720
}
721