2016-09-30 01:58:09 +00:00
< ? php
2017-11-17 01:23:18 +00:00
/** @ license MIT
* Copyright 2017 J . King , Dustin Wilson et al .
* See LICENSE and AUTHORS files for details */
2016-09-30 23:03:30 +00:00
return [
2018-11-05 14:08:50 +00:00
'CLI.Auth.Success' => 'Authentication successful' ,
'CLI.Auth.Failure' => 'Authentication failed' ,
2017-10-07 16:46:05 +00:00
'API.TTRSS.Category.Uncategorized' => 'Uncategorized' ,
2018-10-26 18:58:04 +00:00
'API.TTRSS.Category.Special' => 'Special' ,
2017-10-30 17:11:27 +00:00
'API.TTRSS.Category.Labels' => 'Labels' ,
'API.TTRSS.Feed.All' => 'All articles' ,
'API.TTRSS.Feed.Fresh' => 'Fresh articles' ,
'API.TTRSS.Feed.Starred' => 'Starred articles' ,
'API.TTRSS.Feed.Published' => 'Published articles' ,
'API.TTRSS.Feed.Archived' => 'Archived articles' ,
'API.TTRSS.Feed.Read' => 'Recently read' ,
2019-01-21 03:40:49 +00:00
'API.TTRSS.FeedCount' => '({0, number} {0, plural, one {feed} other {feeds}})' ,
2017-10-07 16:46:05 +00:00
2017-09-26 20:45:41 +00:00
'Driver.Db.SQLite3.Name' => 'SQLite 3' ,
2017-12-19 22:15:05 +00:00
'Driver.Db.SQLite3PDO.Name' => 'SQLite 3 (PDO)' ,
2018-11-17 02:20:54 +00:00
'Driver.Db.PostgreSQL.Name' => 'PostgreSQL' ,
'Driver.Db.PostgreSQLPDO.Name' => 'PostgreSQL (PDO)' ,
2019-01-14 04:17:19 +00:00
'Driver.Db.MySQL.Name' => 'MySQL' ,
'Driver.Db.MySQLPDO.Name' => 'MySQL (PDO)' ,
2017-03-30 14:42:37 +00:00
2019-01-21 03:40:49 +00:00
'Driver.Service.Serial.Name' => 'Serialized' ,
'Driver.Service.Subprocess.Name' => 'Concurrent subprocess' ,
'Driver.User.Internal.Name' => 'Internal' ,
2017-04-02 03:06:52 +00:00
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Exception.uncoded' => 'The specified exception symbol {0} has no code specified in AbstractException.php' ,
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Exception.unknown' => 'An unknown error has occurred' ,
2017-11-18 03:53:54 +00:00
// indicates programming error
'Exception.JKingWeb/Arsse/Exception.constantUnknown' => 'Supplied constant value ({0}) is unknown or invalid in the context in which it was used' ,
2019-03-02 18:53:43 +00:00
// indicates programming error
'Exception.JKingWeb/Arsse/Exception.arrayEmpty' => 'Supplied array "{0}" is empty, but should have at least one element' ,
2017-10-20 02:58:42 +00:00
'Exception.JKingWeb/Arsse/ExceptionType.strictFailure' => ' Supplied value could not be normalized to { 0 , select ,
1 { null }
2 { boolean }
3 { integer }
4 { float }
5 { datetime }
6 { string }
7 { array }
2019-01-21 03:40:49 +00:00
8 { DateInterval }
other { requested type { 0 }}
2017-10-20 02:58:42 +00:00
} ' ,
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-10-20 02:58:42 +00:00
'Exception.JKingWeb/Arsse/ExceptionType.typeUnknown' => 'Normalization type {0} is not implemented' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Lang/Exception.defaultFileMissing' => 'Default language file "{0}" missing' ,
'Exception.JKingWeb/Arsse/Lang/Exception.fileMissing' => 'Language file "{0}" is not available' ,
'Exception.JKingWeb/Arsse/Lang/Exception.fileUnreadable' => 'Insufficient permissions to read language file "{0}"' ,
'Exception.JKingWeb/Arsse/Lang/Exception.fileCorrupt' => 'Language file "{0}" is corrupt or does not conform to expected format' ,
'Exception.JKingWeb/Arsse/Lang/Exception.stringMissing' => 'Message string "{msgID}" missing from all loaded language files ({fileList})' ,
2019-01-21 03:40:49 +00:00
'Exception.JKingWeb/Arsse/Lang/Exception.stringInvalid' => 'Message string "{msgID}" is not a valid ICU message string (language files loaded: {fileList}): {error}' ,
'Exception.JKingWeb/Arsse/Lang/Exception.dataInvalid' => 'Failed to format message message string "{msgID}" (language files loaded: {fileList}): {error}' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Conf/Exception.fileMissing' => 'Configuration file "{0}" does not exist' ,
'Exception.JKingWeb/Arsse/Conf/Exception.fileUnreadable' => 'Insufficient permissions to read configuration file "{0}"' ,
'Exception.JKingWeb/Arsse/Conf/Exception.fileUncreatable' => 'Insufficient permissions to write new configuration file "{0}"' ,
'Exception.JKingWeb/Arsse/Conf/Exception.fileUnwritable' => 'Insufficient permissions to overwrite configuration file "{0}"' ,
'Exception.JKingWeb/Arsse/Conf/Exception.fileCorrupt' => 'Configuration file "{0}" is corrupt or does not conform to expected format' ,
2019-01-21 03:40:49 +00:00
'Exception.JKingWeb/Arsse/Conf/Exception.typeMismatch' =>
' Configuration parameter " { param} " in file " { file} " must be { type , select ,
integer { an integral number }
string { a character string }
boolean { either true or false }
float { a decimal number }
interval { an ISO 8601 time interval }
other { consistent with type " { type} " }
}{ nullable , select ,
0 {}
other {, or null }
} ' ,
'Exception.JKingWeb/Arsse/Conf/Exception.semanticMismatch' => 'Configuration parameter "{param}" in file "{file}" is not a valid value. Consult the documentation for possible values' ,
2019-01-23 21:31:54 +00:00
// indicates programming error
'Exception.JKingWeb/Arsse/Conf/Exception.ambiguousDefault' => 'Preferred type of configuration parameter "{param}" could not be inferred from its default value. The parameter must be added to the Conf::EXPECTED_TYPES array' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.extMissing' => 'Required PHP extension for driver "{0}" not installed' ,
'Exception.JKingWeb/Arsse/Db/Exception.fileMissing' => 'Database file "{0}" does not exist' ,
'Exception.JKingWeb/Arsse/Db/Exception.fileUnreadable' => 'Insufficient permissions to open database file "{0}" for reading' ,
'Exception.JKingWeb/Arsse/Db/Exception.fileUnwritable' => 'Insufficient permissions to open database file "{0}" for writing' ,
'Exception.JKingWeb/Arsse/Db/Exception.fileUnusable' => 'Insufficient permissions to open database file "{0}" for reading or writing' ,
'Exception.JKingWeb/Arsse/Db/Exception.fileUncreatable' => 'Insufficient permissions to create new database file "{0}"' ,
'Exception.JKingWeb/Arsse/Db/Exception.fileCorrupt' => 'Database file "{0}" is corrupt or not a valid database' ,
2019-01-15 15:51:55 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.connectionFailure' => 'Could not connect to {engine} database: {message}' ,
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.paramTypeInvalid' => 'Prepared statement parameter type "{0}" is invalid' ,
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.paramTypeUnknown' => 'Prepared statement parameter type "{0}" is valid, but not implemented' ,
'Exception.JKingWeb/Arsse/Db/Exception.paramTypeMissing' => 'Prepared statement parameter type for parameter #{0} was not specified' ,
'Exception.JKingWeb/Arsse/Db/Exception.updateManual' =>
2017-02-16 20:29:42 +00:00
' { from_version , select ,
0 {{ driver_name } database is configured for manual updates and is not initialized ; please populate the database with the base schema }
other {{ driver_name } database is configured for manual updates ; please update from schema version { current } to version { target }}
} ' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.updateManualOnly' =>
2017-02-16 20:29:42 +00:00
' { from_version , select ,
0 {{ driver_name } database must be updated manually and is not initialized ; please populate the database with the base schema }
other {{ driver_name } database must be updated manually ; please update from schema version { current } to version { target }}
} ' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.updateFileMissing' => 'Automatic updating of the {driver_name} database failed due to instructions for updating from version {current} not being available' ,
'Exception.JKingWeb/Arsse/Db/Exception.updateFileUnreadable' => 'Automatic updating of the {driver_name} database failed due to insufficient permissions to read instructions for updating from version {current}' ,
'Exception.JKingWeb/Arsse/Db/Exception.updateFileUnusable' => 'Automatic updating of the {driver_name} database failed due to an error reading instructions for updating from version {current}' ,
'Exception.JKingWeb/Arsse/Db/Exception.updateFileError' => 'Automatic updating of the {driver_name} database failed updating from version {current} with the following error: "{message}"' ,
'Exception.JKingWeb/Arsse/Db/Exception.updateFileIncomplete' => 'Automatic updating of the {driver_name} database failed due to instructions for updating from version {current} being incomplete' ,
'Exception.JKingWeb/Arsse/Db/Exception.updateTooNew' =>
2017-02-16 20:29:42 +00:00
' { difference , select ,
0 { Automatic updating of the { driver_name } database failed because it is already up to date with the requested version , { target }}
other { Automatic updating of the { driver_name } database failed because its version , { current }, is newer than the requested version , { target }}
} ' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.engineErrorGeneral' => '{0}' ,
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-11-06 03:13:44 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.savepointStatusUnknown' => 'Savepoint status code {0} not implemented' ,
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-11-06 03:13:44 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.savepointInvalid' => 'Tried to {action} invalid savepoint {index}' ,
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-11-06 03:13:44 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.savepointStale' => 'Tried to {action} stale savepoint {index}' ,
2019-01-21 03:40:49 +00:00
// indicates programming error
2017-11-06 03:13:44 +00:00
'Exception.JKingWeb/Arsse/Db/Exception.resultReused' => 'Result set already iterated' ,
2019-03-04 16:05:46 +00:00
'Exception.JKingWeb/Arsse/Db/ExceptionRetry.schemaChange' => '{0}' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Db/ExceptionInput.missing' => 'Required field "{field}" missing while performing action "{action}"' ,
'Exception.JKingWeb/Arsse/Db/ExceptionInput.whitespace' => 'Field "{field}" of action "{action}" may not contain only whitespace' ,
'Exception.JKingWeb/Arsse/Db/ExceptionInput.tooLong' => 'Field "{field}" of action "{action}" has a maximum length of {max}' ,
'Exception.JKingWeb/Arsse/Db/ExceptionInput.tooShort' => 'Field "{field}" of action "{action}" has a minimum length of {min}' ,
'Exception.JKingWeb/Arsse/Db/ExceptionInput.typeViolation' => 'Field "{field}" of action "{action}" expects a value of type "{type}"' ,
'Exception.JKingWeb/Arsse/Db/ExceptionInput.subjectMissing' => 'Referenced ID ({id}) in field "{field}" does not exist' ,
'Exception.JKingWeb/Arsse/Db/ExceptionInput.idMissing' => 'Referenced ID ({id}) in field "{field}" does not exist' ,
'Exception.JKingWeb/Arsse/Db/ExceptionInput.circularDependence' => 'Referenced ID ({id}) in field "{field}" creates a circular dependence' ,
2018-12-14 00:47:51 +00:00
'Exception.JKingWeb/Arsse/Db/ExceptionInput.constraintViolation' => 'Specified value in field "{field}" already exists' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Db/ExceptionInput.engineConstraintViolation' => '{0}' ,
'Exception.JKingWeb/Arsse/Db/ExceptionInput.engineTypeViolation' => '{0}' ,
'Exception.JKingWeb/Arsse/Db/ExceptionTimeout.general' => '{0}' ,
2018-12-20 23:06:28 +00:00
'Exception.JKingWeb/Arsse/Db/ExceptionTimeout.logicalLock' => 'Database is locked' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/User/Exception.alreadyExists' => 'Could not perform action "{action}" because the user {user} already exists' ,
'Exception.JKingWeb/Arsse/User/Exception.doesNotExist' => 'Could not perform action "{action}" because the user {user} does not exist' ,
'Exception.JKingWeb/Arsse/User/Exception.authMissing' => 'Please log in to proceed' ,
'Exception.JKingWeb/Arsse/User/Exception.authFailed' => 'Authentication failed' ,
'Exception.JKingWeb/Arsse/User/ExceptionAuthz.notAuthorized' =>
2017-02-21 00:04:08 +00:00
' { action , select ,
2018-10-28 14:59:17 +00:00
userList { Authenticated user is not authorized to view the user list }
2017-02-21 00:04:08 +00:00
other { Authenticated user is not authorized to perform the action " { action} " on behalf of { user }}
} ' ,
2017-09-27 00:25:11 +00:00
'Exception.JKingWeb/Arsse/User/ExceptionSession.invalid' => 'Session with ID {0} does not exist' ,
2020-02-03 21:54:45 +00:00
'Exception.JKingWeb/Arsse/Feed/Exception.internalError' => 'Could not download feed "{url}" because of an internal error which is probably a bug' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Feed/Exception.invalidCertificate' => 'Could not download feed "{url}" because its server is serving an invalid SSL certificate' ,
'Exception.JKingWeb/Arsse/Feed/Exception.invalidUrl' => 'Feed URL "{url}" is invalid' ,
2020-01-23 22:07:20 +00:00
'Exception.JKingWeb/Arsse/Feed/Exception.maxRedirect' => 'Could not download feed "{url}" because its server reached its maximum number of HTTP redirections' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Feed/Exception.maxSize' => 'Could not download feed "{url}" because its size exceeds the maximum allowed on its server' ,
'Exception.JKingWeb/Arsse/Feed/Exception.timeout' => 'Could not download feed "{url}" because its server timed out' ,
'Exception.JKingWeb/Arsse/Feed/Exception.forbidden' => 'Could not download feed "{url}" because you do not have permission to access it' ,
'Exception.JKingWeb/Arsse/Feed/Exception.unauthorized' => 'Could not download feed "{url}" because you provided insufficient or invalid credentials' ,
2020-01-21 13:42:38 +00:00
'Exception.JKingWeb/Arsse/Feed/Exception.transmissionError' => 'Could not download feed "{url}" because of a network error' ,
2020-02-03 21:54:45 +00:00
'Exception.JKingWeb/Arsse/Feed/Exception.connectionFailed' => 'Could not download feed "{url}" because its server could not be reached' ,
2017-09-26 20:45:41 +00:00
'Exception.JKingWeb/Arsse/Feed/Exception.malformedXml' => 'Could not parse feed "{url}" because it is malformed' ,
'Exception.JKingWeb/Arsse/Feed/Exception.xmlEntity' => 'Refused to parse feed "{url}" because it contains an XXE attack' ,
'Exception.JKingWeb/Arsse/Feed/Exception.subscriptionNotFound' => 'Unable to find a feed at location "{url}"' ,
'Exception.JKingWeb/Arsse/Feed/Exception.unsupportedFeedFormat' => 'Feed "{url}" is of an unsupported format' ,
2019-05-01 14:46:44 +00:00
'Exception.JKingWeb/Arsse/ImportExport/Exception.fileMissing' => 'Import {type} file "{file}" does not exist' ,
'Exception.JKingWeb/Arsse/ImportExport/Exception.fileUnreadable' => 'Insufficient permissions to read {type} file "{file}" for import' ,
'Exception.JKingWeb/Arsse/ImportExport/Exception.fileUncreatable' => 'Insufficient permissions to write {type} export to file "{file}"' ,
'Exception.JKingWeb/Arsse/ImportExport/Exception.fileUnwritable' => 'Insufficient permissions to write {type} export to existing file "{file}"' ,
'Exception.JKingWeb/Arsse/ImportExport/Exception.invalidSyntax' => 'Input data syntax error at line {line}, column {column}' ,
'Exception.JKingWeb/Arsse/ImportExport/Exception.invalidSemantics' => 'Input data is not valid {type} data' ,
'Exception.JKingWeb/Arsse/ImportExport/Exception.invalidFolderName' => 'Input data contains an invalid folder name' ,
'Exception.JKingWeb/Arsse/ImportExport/Exception.invalidFolderCopy' => 'Input data contains multiple folders of the same name under the same parent' ,
2019-07-24 18:20:17 +00:00
'Exception.JKingWeb/Arsse/ImportExport/Exception.invalidTagName' => 'Input data contains an invalid tag name' ,
2018-10-26 18:58:04 +00:00
];