Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
douban-api-proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
douban-api-proxy
Commits
f6fbe2e1
Commit
f6fbe2e1
authored
Feb 23, 2019
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix #766
Update pdf upload Translation of uploadprogress dialog
parent
17b73339
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
472 additions
and
490 deletions
+472
-490
book_formats.py
cps/book_formats.py
+1
-1
helper.py
cps/helper.py
+4
-1
caliBlur.js
cps/static/js/caliBlur.js
+20
-20
uploadprogress.js
cps/static/js/uploadprogress.js
+86
-82
detail.html
cps/templates/detail.html
+3
-3
layout.html
cps/templates/layout.html
+12
-6
messages.mo
cps/translations/de/LC_MESSAGES/messages.mo
+0
-0
messages.po
cps/translations/de/LC_MESSAGES/messages.po
+173
-208
web.py
cps/web.py
+2
-2
messages.pot
messages.pot
+171
-167
No files found.
cps/book_formats.py
View file @
f6fbe2e1
...
...
@@ -101,7 +101,7 @@ def default_meta(tmp_file_path, original_file_name, original_file_extension):
def
pdf_meta
(
tmp_file_path
,
original_file_name
,
original_file_extension
):
if
use_pdf_meta
:
pdf
=
PdfFileReader
(
open
(
tmp_file_path
,
'rb'
))
pdf
=
PdfFileReader
(
open
(
tmp_file_path
,
'rb'
)
,
strict
=
False
)
doc_info
=
pdf
.
getDocumentInfo
()
else
:
doc_info
=
None
...
...
cps/helper.py
View file @
f6fbe2e1
...
...
@@ -230,7 +230,10 @@ def get_valid_filename(value, replace_whitespace=True):
value
=
value
[:
128
]
if
not
value
:
raise
ValueError
(
"Filename cannot be empty"
)
if
sys
.
version_info
.
major
==
3
:
return
value
else
:
return
value
.
decode
(
'utf-8'
)
def
get_sorted_author
(
value
):
...
...
cps/static/js/caliBlur.js
View file @
f6fbe2e1
...
...
@@ -490,19 +490,19 @@ if ( $( 'body.shelf' ).length > 0 ) {
.
addClass
(
'order-shelf-btn'
);
$
(
'.delete-shelf-btn'
).
attr
({
'data-toggle-two'
:
'tooltip'
,
'title'
:
'Delete Shelf'
,
'title'
:
$
(
'.delete-shelf-btn'
).
text
(),
// 'Delete Shelf'
'data-placement'
:
'bottom'
})
.
addClass
(
'delete-btn-tooltip'
);
$
(
'.edit-shelf-btn'
).
attr
({
'data-toggle-two'
:
'tooltip'
,
'title'
:
'Edit Shelf'
,
'title'
:
$
(
'.edit-shelf-btn'
).
text
(),
// 'Edit Shelf'
'data-placement'
:
'bottom'
})
.
addClass
(
'edit-btn-tooltip'
);
$
(
'.order-shelf-btn'
).
attr
({
'data-toggle-two'
:
'tooltip'
,
'title'
:
'Reorder Shelf'
,
'title'
:
$
(
'.order-shelf-btn'
).
text
(),
//'Reorder Shelf'
'data-placement'
:
'bottom'
})
.
addClass
(
'order-btn-tooltip'
);
}
...
...
@@ -510,32 +510,32 @@ if ( $( 'body.shelf' ).length > 0 ) {
// Rest of Tooltips
$
(
'.home-btn > a'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
'Home'
,
'title'
:
$
(
document
.
body
).
attr
(
'data-text'
),
// Home
'data-placement'
:
'bottom'
})
.
addClass
(
'home-btn-tooltip'
);
$
(
'.plexBack > a'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
'Back'
,
'title'
:
$
(
document
.
body
).
attr
(
'data-textback'
),
// Back
'data-placement'
:
'bottom'
})
.
addClass
(
'back-btn-tooltip'
);
$
(
'#top_tasks'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
$
(
'#top_tasks'
).
text
(),
//'Tasks',
'title'
:
$
(
'#top_tasks'
).
text
(),
// 'Tasks'
'data-placement'
:
'bottom'
,
'data-viewport'
:
'#main-nav'
})
.
addClass
(
'tasks-btn-tooltip'
);
$
(
'#top_admin'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
'Settings'
,
'title'
:
$
(
'#top_admin'
).
attr
(
'data-text'
),
// Settings
'data-placement'
:
'bottom'
,
'data-viewport'
:
'#main-nav'
})
.
addClass
(
'admin-btn-tooltip'
);
$
(
'.profileDrop'
).
attr
({
'title'
:
'Account'
,
'title'
:
$
(
'#top_user'
).
attr
(
'data-text'
),
//Account
'data-placement'
:
'bottom'
,
'data-toggle-two'
:
'tooltip'
,
'data-viewport'
:
'#main-nav'
})
...
...
@@ -543,78 +543,78 @@ $( '.profileDrop' ).attr({
$
(
'#btn-upload'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
$
(
'#btn-upload'
).
parent
().
text
()
,
// 'Upload',
'title'
:
$
(
'#btn-upload'
).
parent
().
text
()
,
// 'Upload'
'data-placement'
:
'bottom'
,
'data-viewport'
:
'#main-nav'
})
.
addClass
(
'upload-btn-tooltip'
);
$
(
'#add-to-shelf'
).
attr
({
'data-toggle-two'
:
'tooltip'
,
'title'
:
$
(
'#add-to-shelf'
).
text
()
,
// 'Add to Shelf',
'title'
:
$
(
'#add-to-shelf'
).
text
()
,
// 'Add to Shelf'
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
})
.
addClass
(
'addtoshelf-btn-tooltip'
);
$
(
'#have_read_cb'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
'Mark As Read'
,
'title'
:
$
(
'#have_read_cb'
).
attr
(
'data-unchecked'
)
,
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
})
.
addClass
(
'readunread-btn-tooltip'
);
$
(
'#have_read_cb:checked'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
'Mark As Unread'
,
'title'
:
$
(
'#have_read_cb'
).
attr
(
'data-checked'
)
,
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
})
.
addClass
(
'readunread-btn-tooltip'
);
$
(
'button#delete'
).
attr
({
'data-toggle-two'
:
'tooltip'
,
'title'
:
$
(
'button#delete'
).
text
(),
//'Delete',
'title'
:
$
(
'button#delete'
).
text
(),
//'Delete'
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
})
.
addClass
(
'delete-book-btn-tooltip'
);
$
(
'#have_read_cb'
).
click
(
function
()
{
if
(
$
(
'#have_read_cb:checked'
).
length
>
0
)
{
$
(
this
).
attr
(
'data-original-title'
,
'Mark as Unread'
);
$
(
this
).
attr
(
'data-original-title'
,
$
(
'#have_read_cb'
).
attr
(
'data-checked'
)
);
}
else
{
$
(
this
).
attr
(
'data-original-title'
,
'Mark as Read'
);
$
(
this
).
attr
(
'data-original-title'
,
$
(
'#have_read_cb'
).
attr
(
'data-unchecked'
)
);
}
});
$
(
'.btn-group[aria-label="Edit/Delete book"] a'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
$
(
'#edit_book'
).
text
(),
// 'Edit',
'title'
:
$
(
'#edit_book'
).
text
(),
// 'Edit'
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
})
.
addClass
(
'edit-btn-tooltip'
);
$
(
'#sendbtn'
).
attr
({
'data-toggle'
:
'tooltip'
,
'title'
:
'Send to Kindle'
,
'title'
:
$
(
'#sendbtn'
).
attr
(
'data-text'
)
,
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
})
.
addClass
(
'send-btn-tooltip'
);
$
(
'#sendbtn2'
).
attr
({
'data-toggle-two'
:
'tooltip'
,
'title'
:
'Send to Kindle'
,
'title'
:
$
(
'#sendbtn2'
).
text
(),
//
'Send to Kindle',
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
})
.
addClass
(
'send-btn-tooltip'
);
$
(
'#read-in-browser'
).
attr
({
'data-toggle-two'
:
'tooltip'
,
'title'
:
'Read'
,
'title'
:
$
(
'#read-in-browser'
).
text
()
,
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
})
.
addClass
(
'send-btn-tooltip'
);
$
(
'#btnGroupDrop1'
).
attr
({
'data-toggle-two'
:
'tooltip'
,
'title'
:
'Download'
,
'title'
:
$
(
'#btnGroupDrop1'
).
text
()
,
'data-placement'
:
'bottom'
,
'data-viewport'
:
'.btn-toolbar'
});
...
...
cps/static/js/uploadprogress.js
View file @
f6fbe2e1
...
...
@@ -6,41 +6,41 @@
* Version 1.0.0
* Licensed under the MIT license.
*/
(
function
(
$
){
(
function
(
$
)
{
"use strict"
;
$
.
support
.
xhrFileUpload
=
!!
(
window
.
FileReader
&&
window
.
ProgressEvent
);
$
.
support
.
xhrFormData
=
!!
window
.
FormData
;
if
(
!
$
.
support
.
xhrFileUpload
||
!
$
.
support
.
xhrFormData
)
{
if
(
!
$
.
support
.
xhrFileUpload
||
!
$
.
support
.
xhrFormData
)
{
// skip decorating form
return
;
}
var
template
=
'<div class="modal fade" id="file-progress-modal">
\
<div class="modal-dialog">
\
<div class="modal-content">
\
<div class="modal-header">
\
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
\
<h4 class="modal-title">Uploading</h4>
\
</div>
\
<div class="modal-body">
\
<div class="modal-message"></div>
\
<div class="progress">
\
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0"
\
aria-valuemax="100" style="width: 0%;min-width: 2em;">
\
0%
\
</div>
\
</div>
\
</div>
\
<div class="modal-footer" style="display:none">
\
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
\
</div>
\
</div>
\
</div>
\
</div>'
;
var
UploadProgress
=
function
(
element
,
options
){
var
template
=
"<div class=
\"
modal fade
\"
id=
\"
file-progress-modal
\"
>"
+
"<div class=
\"
modal-dialog
\"
>"
+
" <div class=
\"
modal-content
\"
>"
+
" <div class=
\"
modal-header
\"
>"
+
" <button type=
\"
button
\"
class=
\"
close
\"
data-dismiss=
\"
modal
\"
aria-label=
\"
Close
\"
><span aria-hidden=
\"
true
\"
>×</span></button>"
+
" <h4 class=
\"
modal-title
\"
>Uploading</h4>"
+
" </div>"
+
" <div class=
\"
modal-body
\"
>"
+
" <div class=
\"
modal-message
\"
></div>"
+
" <div class=
\"
progress
\"
>"
+
" <div class=
\"
progress-bar progress-bar-striped active
\"
role=
\"
progressbar
\"
aria-valuenow=
\"
0
\"
aria-valuemin=
\"
0
\"
"
+
" aria-valuemax=
\"
100
\"
style=
\"
width: 0%;min-width: 2em;
\"
>"
+
" 0%"
+
" </div>"
+
" </div>"
+
" </div>"
+
" <div class=
\"
modal-footer
\"
style=
\"
display:none
\"
>"
+
" <button type=
\"
button
\"
class=
\"
btn btn-default
\"
data-dismiss=
\"
modal
\"
>Close</button>"
+
" </div>"
+
" </div>"
+
" </div>"
+
"</div>"
;
var
UploadProgress
=
function
(
element
,
options
)
{
this
.
options
=
options
;
this
.
$element
=
$
(
element
);
};
...
...
@@ -49,22 +49,25 @@
constructor
:
function
()
{
this
.
$form
=
this
.
$element
;
this
.
$form
.
on
(
'submit'
,
$
.
proxy
(
this
.
submit
,
this
));
this
.
$form
.
on
(
"submit"
,
$
.
proxy
(
this
.
submit
,
this
));
this
.
$modal
=
$
(
this
.
options
.
template
);
this
.
$modal_message
=
this
.
$modal
.
find
(
'.modal-message'
);
this
.
$modal_title
=
this
.
$modal
.
find
(
'.modal-title'
);
this
.
$modal_footer
=
this
.
$modal
.
find
(
'.modal-footer'
);
this
.
$modal_bar
=
this
.
$modal
.
find
(
'.progress-bar'
);
this
.
$modalTitle
=
this
.
$modal
.
find
(
".modal-title"
);
this
.
$modalFooter
=
this
.
$modal
.
find
(
".modal-footer"
);
this
.
$modalBar
=
this
.
$modal
.
find
(
".progress-bar"
);
this
.
$modal
.
on
(
'hidden.bs.modal'
,
$
.
proxy
(
this
.
reset
,
this
));
// Translate texts
this
.
$modalTitle
.
text
(
this
.
options
.
modalTitle
)
this
.
$modalFooter
.
children
(
"button"
).
text
(
this
.
options
.
modalFooter
)
this
.
$modal
.
on
(
"hidden.bs.modal"
,
$
.
proxy
(
this
.
reset
,
this
));
},
reset
:
function
(){
this
.
$modal
_title
=
this
.
$modal_title
.
text
(
'Uploading'
);
this
.
$modal
_f
ooter
.
hide
();
this
.
$modal
_bar
.
addClass
(
'progress-bar-success'
);
this
.
$modal
_bar
.
removeClass
(
'progress-bar-danger'
);
if
(
this
.
xhr
)
{
reset
:
function
()
{
this
.
$modal
Title
.
text
(
this
.
options
.
modalTitle
)
this
.
$modal
F
ooter
.
hide
();
this
.
$modal
Bar
.
addClass
(
"progress-bar-success"
);
this
.
$modal
Bar
.
removeClass
(
"progress-bar-danger"
);
if
(
this
.
xhr
)
{
this
.
xhr
.
abort
();
}
},
...
...
@@ -73,7 +76,7 @@
e
.
preventDefault
();
this
.
$modal
.
modal
({
backdrop
:
'static'
,
backdrop
:
"static"
,
keyboard
:
false
});
...
...
@@ -81,35 +84,33 @@
var
xhr
=
new
XMLHttpRequest
();
this
.
xhr
=
xhr
;
xhr
.
addEventListener
(
'load'
,
$
.
proxy
(
this
.
success
,
this
,
xhr
));
xhr
.
addEventListener
(
'error'
,
$
.
proxy
(
this
.
error
,
this
,
xhr
));
//xhr.addEventListener('abort', function(){});
xhr
.
addEventListener
(
"load"
,
$
.
proxy
(
this
.
success
,
this
,
xhr
));
xhr
.
addEventListener
(
"error"
,
$
.
proxy
(
this
.
error
,
this
,
xhr
));
xhr
.
upload
.
addEventListener
(
'progress'
,
$
.
proxy
(
this
.
progress
,
this
));
xhr
.
upload
.
addEventListener
(
"progress"
,
$
.
proxy
(
this
.
progress
,
this
));
var
form
=
this
.
$form
;
xhr
.
open
(
form
.
attr
(
'method'
),
form
.
attr
(
"action"
));
xhr
.
setRequestHeader
(
'X-REQUESTED-WITH'
,
'XMLHttpRequest'
);
xhr
.
open
(
form
.
attr
(
"method"
),
form
.
attr
(
"action"
));
xhr
.
setRequestHeader
(
"X-REQUESTED-WITH"
,
"XMLHttpRequest"
);
var
data
=
new
FormData
(
form
.
get
(
0
));
xhr
.
send
(
data
);
},
success
:
function
(
xhr
)
{
if
(
xhr
.
status
==
0
||
xhr
.
status
>=
400
)
{
if
(
xhr
.
status
===
0
||
xhr
.
status
>=
400
)
{
// HTTP 500 ends up here!?!
return
this
.
error
(
xhr
);
}
this
.
set_progress
(
100
);
var
url
;
var
content
_type
=
xhr
.
getResponseHeader
(
'Content-Type'
);
var
content
Type
=
xhr
.
getResponseHeader
(
"Content-Type"
);
// make it possible to return the redirect URL in
// a JSON response
if
(
content_type
.
indexOf
(
'application/json'
)
!==
-
1
)
{
if
(
contentType
.
indexOf
(
"application/json"
)
!==
-
1
)
{
var
response
=
$
.
parseJSON
(
xhr
.
responseText
);
console
.
log
(
response
);
url
=
response
.
location
;
}
else
{
...
...
@@ -120,39 +121,41 @@
// handle form error
// we replace the form with the returned one
error
:
function
(
xhr
){
this
.
$modal_title
.
text
(
'Upload failed'
);
this
.
$modal_bar
.
removeClass
(
'progress-bar-success'
);
this
.
$modal_bar
.
addClass
(
'progress-bar-danger'
);
this
.
$modal_footer
.
show
();
error
:
function
(
xhr
)
{
this
.
$modalTitle
.
text
(
this
.
options
.
modalTitleFailed
);
var
content_type
=
xhr
.
getResponseHeader
(
'Content-Type'
);
this
.
$modalBar
.
removeClass
(
"progress-bar-success"
);
this
.
$modalBar
.
addClass
(
"progress-bar-danger"
);
this
.
$modalFooter
.
show
();
var
contentType
=
xhr
.
getResponseHeader
(
"Content-Type"
);
// Replace the contents of the form, with the returned html
if
(
xhr
.
status
===
422
)
{
var
new
_h
tml
=
$
.
parseHTML
(
xhr
.
responseText
);
this
.
replace_form
(
new
_h
tml
);
this
.
$modal
.
modal
(
'hide'
);
if
(
xhr
.
status
===
422
)
{
var
new
H
tml
=
$
.
parseHTML
(
xhr
.
responseText
);
this
.
replace_form
(
new
H
tml
);
this
.
$modal
.
modal
(
"hide"
);
}
// Write the error response to the document.
else
{
var
response_text
=
xhr
.
responseText
;
if
(
content_type
.
indexOf
(
'text/plain'
)
!==
-
1
){
response_text
=
'<pre>'
+
response_text
+
'</pre>'
;
var
responseText
=
xhr
.
responseText
;
// Handle no response error
if
(
contentType
)
{
if
(
contentType
.
indexOf
(
"text/plain"
)
!==
-
1
)
{
responseText
=
"<pre>"
+
responseText
+
"</pre>"
;
}
document
.
write
(
xhr
.
responseText
);
}
}
},
set_progress
:
function
(
percent
){
var
txt
=
percent
+
'%'
;
var
txt
=
percent
+
"%"
;
if
(
percent
==
100
)
{
txt
=
this
.
options
.
uploaded
_m
sg
;
txt
=
this
.
options
.
uploaded
M
sg
;
}
this
.
$modal
_bar
.
attr
(
'aria-valuenow'
,
percent
);
this
.
$modal
_b
ar
.
text
(
txt
);
this
.
$modal
_bar
.
css
(
'width'
,
percent
+
'%'
);
this
.
$modal
Bar
.
attr
(
"aria-valuenow"
,
percent
);
this
.
$modal
B
ar
.
text
(
txt
);
this
.
$modal
Bar
.
css
(
"width"
,
percent
+
"%"
);
},
progress
:
function
(
/*ProgressEvent*/
e
){
...
...
@@ -163,24 +166,23 @@
// replace_form replaces the contents of the current form
// with the form in the html argument.
// We use the id of the current form to find the new form in the html
replace_form
:
function
(
html
){
var
new
_f
orm
;
var
form
_id
=
this
.
$form
.
attr
(
'id'
);
if
(
form
_i
d
!==
undefined
){
new
_form
=
$
(
html
).
find
(
'#'
+
form_i
d
);
replace_form
:
function
(
html
)
{
var
new
F
orm
;
var
form
Id
=
this
.
$form
.
attr
(
"id"
);
if
(
form
I
d
!==
undefined
){
new
Form
=
$
(
html
).
find
(
"#"
+
formI
d
);
}
else
{
new
_form
=
$
(
html
).
find
(
'form'
);
new
Form
=
$
(
html
).
find
(
"form"
);
}
// add the filestyle again
new
_form
.
find
(
':file'
).
filestyle
({
buttonBefore
:
true
});
this
.
$form
.
html
(
new
_f
orm
.
children
());
new
Form
.
find
(
":file"
).
filestyle
({
buttonBefore
:
true
});
this
.
$form
.
html
(
new
F
orm
.
children
());
}
};
$
.
fn
.
uploadprogress
=
function
(
options
,
value
){
return
this
.
each
(
function
(){
return
this
.
each
(
function
()
{
var
_options
=
$
.
extend
({},
$
.
fn
.
uploadprogress
.
defaults
,
options
);
var
file_progress
=
new
UploadProgress
(
this
,
_options
);
file_progress
.
constructor
();
...
...
@@ -189,9 +191,11 @@
$
.
fn
.
uploadprogress
.
defaults
=
{
template
:
template
,
uploaded_msg
:
"Upload done, processing, please wait..."
uploadedMsg
:
"Upload done, processing, please wait..."
,
modalTitle
:
"Uploading"
,
modalFooter
:
"Close"
,
modalTitleFailed
:
"Upload failed"
//redirect_url: ...
// need to customize stuff? Add here, and change code accordingly.
};
...
...
cps/templates/detail.html
View file @
f6fbe2e1
...
...
@@ -18,7 +18,7 @@
{% if entry.data|length %}
<div
class=
"btn-group"
role=
"group"
>
{% if entry.data|length
<
2
%}
<
button
type=
"button"
class=
"btn btn-primary"
>
<
button
id=
"Download"
type=
"button"
class=
"btn btn-primary"
>
{{_('Download')}} :
</button>
{% for format in entry.data %}
...
...
@@ -42,7 +42,7 @@
{% endif %}
{% if g.user.kindle_mail and g.user.is_authenticated and kindle_list %}
{% if kindle_list.__len__() == 1 %}
<a
href=
"{{url_for('send_to_kindle', book_id=entry.id, book_format=kindle_list[0]['format'], convert=kindle_list[0]['convert'])}}"
id=
"sendbtn"
class=
"btn btn-primary"
role=
"button"
><span
class=
"glyphicon glyphicon-send"
></span>
{{kindle_list[0]['text']}}
</a>
<a
href=
"{{url_for('send_to_kindle', book_id=entry.id, book_format=kindle_list[0]['format'], convert=kindle_list[0]['convert'])}}"
id=
"sendbtn"
data-text=
"{{_('Send to Kindle')}}"
class=
"btn btn-primary"
role=
"button"
><span
class=
"glyphicon glyphicon-send"
></span>
{{kindle_list[0]['text']}}
</a>
{% else %}
<div
class=
"btn-group"
role=
"group"
>
<button
id=
"sendbtn2"
type=
"button"
class=
"btn btn-primary dropdown-toggle"
data-toggle=
"dropdown"
aria-haspopup=
"true"
aria-expanded=
"false"
>
...
...
@@ -182,7 +182,7 @@
<p>
<form
id=
"have_read_form"
action=
"{{ url_for('toggle_read', book_id=entry.id)}}"
method=
"POST"
>
<label
class=
"block-label"
>
<input
id=
"have_read_cb"
type=
"checkbox"
{%
if
have_read
%}
checked
{%
endif
%}
>
<input
id=
"have_read_cb"
data-checked=
"{{_('Mark As Unread')}}"
data-unchecked=
"{{_('Mark As Read')}}"
type=
"checkbox"
{%
if
have_read
%}
checked
{%
endif
%}
>
<span>
{{_('Read')}}
</span>
</label>
</form>
...
...
cps/templates/layout.html
View file @
f6fbe2e1
...
...
@@ -25,7 +25,7 @@
{% block header %}{% endblock %}
</head>
<body
class=
"{{ page }}"
>
<body
class=
"{{ page }}"
data-text=
"{{_('Home')}}"
data-textback=
"{{_('Back')}}"
>
<!-- Static navbar -->
<div
class=
"navbar navbar-default navbar-static-top"
role=
"navigation"
>
<div
class=
"container-fluid"
>
...
...
@@ -69,14 +69,14 @@
{% endif %}
{% endif %}
{% if not g.user.is_anonymous %}
<li><a
id=
"top_tasks"
href=
"{{url_for('get_tasks_status')}}"
><span
class=
"glyphicon glyphicon-tasks"
></span><span
class=
"hidden-sm"
>
{{_('Tasks')}}
</span></a></li>
<li><a
id=
"top_tasks"
href=
"{{url_for('get_tasks_status')}}"
><span
class=
"glyphicon glyphicon-tasks"
></span><span
class=
"hidden-sm"
>
{{_('Tasks')}}
</span></a></li>
{% endif %}
{% if g.user.role_admin() %}
<li><a
id=
"top_admin"
href=
"{{url_for('admin')}}"
><span
class=
"glyphicon glyphicon-dashboard"
></span><span
class=
"hidden-sm"
>
{{_('Admin')}}
</span></a></li>
<li><a
id=
"top_admin"
data-text=
"{{_('Settings')}}"
href=
"{{url_for('admin')}}"
><span
class=
"glyphicon glyphicon-dashboard"
></span><span
class=
"hidden-sm"
>
{{_('Admin')}}
</span></a></li>
{% endif %}
<li><a
id=
"top_user"
href=
"{{url_for('profile')}}"
><span
class=
"glyphicon glyphicon-user"
></span><span
class=
"hidden-sm"
>
{{g.user.nickname}}
</span></a></li>
<li><a
id=
"top_user"
data-text=
"{{_('Account')}}"
href=
"{{url_for('profile')}}"
><span
class=
"glyphicon glyphicon-user"
></span><span
class=
"hidden-sm"
>
{{g.user.nickname}}
</span></a></li>
{% if not g.user.is_anonymous %}
<li><a
id=
"logout"
href=
"{{url_for('logout')}}"
><span
class=
"glyphicon glyphicon-log-out"
></span><span
class=
"hidden-sm"
>
{{_('Logout')}}
</span></a></li>
<li><a
id=
"logout"
href=
"{{url_for('logout')}}"
><span
class=
"glyphicon glyphicon-log-out"
></span><span
class=
"hidden-sm"
>
{{_('Logout')}}
</span></a></li>
{% endif %}
{% endif %}
{% if g.allow_registration and not g.user.is_authenticated %}
...
...
@@ -250,7 +250,13 @@
{% endif %}
<script
type=
"text/javascript"
>
$
(
function
()
{
$
(
"#form-upload"
).
uploadprogress
({
redirect_url
:
'{{ url_for('
index
')}}'
});
$
(
"#form-upload"
).
uploadprogress
({
redirect_url
:
"{{ url_for('index')}}"
,
uploadedMsg
:
"{{_('Upload done, processing, please wait...')}}"
,
modalTitle
:
"{{_('Uploading...')}}"
,
modalFooter
:
"{{_('Close')}}"
,
modalTitleFailed
:
"{{_('Error')}}"
});
$
(
"#btn-upload"
).
change
(
function
()
{
$
(
"#form-upload"
).
submit
();
});
...
...
cps/translations/de/LC_MESSAGES/messages.mo
View file @
f6fbe2e1
No preview for this file type
cps/translations/de/LC_MESSAGES/messages.po
View file @
f6fbe2e1
...
...
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-02-
03 16:21
+0100\n"
"POT-Creation-Date: 2019-02-
20 20:23
+0100\n"
"PO-Revision-Date: 2019-01-20 19:36+0100\n"
"Last-Translator: Ozzie Isaacs\n"
"Language: de\n"
...
...
@@ -18,8 +18,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.6.0\n"
#: cps/book_formats.py:1
45 cps/book_formats.py:146 cps/book_formats.py:150
#: cps/book_formats.py:1
54
cps/converter.py:29 cps/converter.py:45
#: cps/book_formats.py:1
52 cps/book_formats.py:153 cps/book_formats.py:157
#: cps/book_formats.py:1
61
cps/converter.py:29 cps/converter.py:45
msgid "not installed"
msgstr "Nicht installiert"
...
...
@@ -31,132 +31,132 @@ msgstr "Ausführungsberechtigung nicht vorhanden"
msgid "not configured"
msgstr "Nicht konfiguriert"
#: cps/helper.py:7
7
#: cps/helper.py:7
2
#, python-format
msgid "%(format)s format not found for book id: %(book)d"
msgstr "%(format)s Format nicht gefunden bei Buch ID %(book)d"
#: cps/helper.py:8
9
#: cps/helper.py:8
4
#, python-format
msgid "%(format)s not found on Google Drive: %(fn)s"
msgstr "%(format)s von Buch %(fn)s nicht auf Google Drive gefunden"
#: cps/helper.py:9
6 cps/helper.py:204
cps/templates/detail.html:49
#: cps/helper.py:9
1 cps/helper.py:199
cps/templates/detail.html:49
msgid "Send to Kindle"
msgstr "An Kindle senden"
#: cps/helper.py:9
7 cps/helper.py:115 cps/helper.py:206
#: cps/helper.py:9
2 cps/helper.py:110 cps/helper.py:201
msgid "This e-mail has been sent via Calibre-Web."
msgstr "Diese E-Mail wurde durch Calibre-Web versendet."
#: cps/helper.py:10
8
#: cps/helper.py:10
3
#, python-format
msgid "%(format)s not found: %(fn)s"
msgstr "%(format)s nicht gefunden: %(fn)s"
#: cps/helper.py:1
13
#: cps/helper.py:1
08
msgid "Calibre-Web test e-mail"
msgstr "Calibre-Web Test E-Mail"
#: cps/helper.py:1
14
#: cps/helper.py:1
09
msgid "Test e-mail"
msgstr "Test E-Mail"
#: cps/helper.py:1
30
#: cps/helper.py:1
25
msgid "Get Started with Calibre-Web"
msgstr "Loslegen mit Calibre-Web"
#: cps/helper.py:1
31
#: cps/helper.py:1
26
#, python-format
msgid "Registration e-mail for user: %(name)s"
msgstr "Registrierungs E-Mail für Benutzer %(name)s"
#: cps/helper.py:1
44 cps/helper.py:146 cps/helper.py:148 cps/helper.py:150
#: cps/helper.py:15
6 cps/helper.py:158 cps/helper.py:160 cps/helper.py:162
#: cps/helper.py:1
39 cps/helper.py:141 cps/helper.py:143 cps/helper.py:145
#: cps/helper.py:15
1 cps/helper.py:153 cps/helper.py:155 cps/helper.py:157
#, python-format
msgid "Send %(format)s to Kindle"
msgstr "Sende %(format)s an Kindle"
#: cps/helper.py:16
6 cps/helper.py:170
#: cps/helper.py:16
1 cps/helper.py:165
#, python-format
msgid "Convert %(orig)s to %(format)s and send to Kindle"
msgstr "Konvertiere %(orig)s nach %(format)s und sende an Kindle"
#: cps/helper.py:20
5
#: cps/helper.py:20
0
#, python-format
msgid "E-mail: %(book)s"
msgstr "E-Mail: %(book)s"
#: cps/helper.py:20
8
#: cps/helper.py:20
3
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "Die angeforderte Datei konnte nicht gelesen werden. Evtl. falsche Zugriffsrechte?"
#: cps/helper.py:3
13
#: cps/helper.py:3
08
#, python-format
msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "Umbenennen des Titelpfades '%(src)s' nach '%(dest)s' schlug fehl: %(error)s"
#: cps/helper.py:3
23
#: cps/helper.py:3
18
#, python-format
msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "Umbenennen des Authorpfades '%(src)s' nach '%(dest)s' schlug fehl: %(error)s"
#: cps/helper.py:33
7
#: cps/helper.py:33
2
#, python-format
msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "Umbenennen der Datei im Pfad '%(src)s' nach '%(dest)s' ist fehlgeschlagen: %(error)s"
#: cps/helper.py:3
62 cps/helper.py:371
#: cps/helper.py:3
58 cps/helper.py:368 cps/helper.py:376
#, python-format
msgid "File %(file)s not found on Google Drive"
msgstr "Datei %(file)s wurde nicht auf Google Drive gefunden"
#: cps/helper.py:
402
#: cps/helper.py:
397
#, python-format
msgid "Book path %(path)s not found on Google Drive"
msgstr "Buchpfad %(path)s wurde nicht auf Google Drive gefunden"
#: cps/helper.py:5
10
#: cps/helper.py:5
05
msgid "Error excecuting UnRar"
msgstr "Fehler bei der Ausführung von UnRar"
#: cps/helper.py:5
12
#: cps/helper.py:5
07
msgid "Unrar binary file not found"
msgstr "UnRar Datei nicht gefunden"
#: cps/helper.py:5
43
#: cps/helper.py:5
38
msgid "Waiting"
msgstr "Wartend"
#: cps/helper.py:54
5
#: cps/helper.py:54
0
msgid "Failed"
msgstr "Fehlgeschlagen"
#: cps/helper.py:54
7
#: cps/helper.py:54
2
msgid "Started"
msgstr "Gestartet"
#: cps/helper.py:54
9
#: cps/helper.py:54
4
msgid "Finished"
msgstr "Beendet"
#: cps/helper.py:5
51
#: cps/helper.py:5
46
msgid "Unknown Status"
msgstr "Unbekannter Status"
#: cps/helper.py:55
6
#: cps/helper.py:55
1
msgid "E-mail: "
msgstr "E-Mail: "
#: cps/helper.py:55
8 cps/helper.py:562
#: cps/helper.py:55
3 cps/helper.py:557
msgid "Convert: "
msgstr "Konvertiere: "
#: cps/helper.py:5
60
#: cps/helper.py:5
55
msgid "Upload: "
msgstr "Upload: "
#: cps/helper.py:5
64
#: cps/helper.py:5
59
msgid "Unknown Task: "
msgstr "Unbekannte Aufgabe: "
...
...
@@ -201,7 +201,7 @@ msgstr "Keine Release Informationen verfügbar"
msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "Ein neues Update ist verfügbar. Klicke auf den Button unten, um auf Version: %(version)s zu aktualisieren"
#: cps/updater.py:491 cps/web.py:276
6
#: cps/updater.py:491 cps/web.py:276
7
msgid "Unknown"
msgstr "Unbekannt"
...
...
@@ -269,7 +269,7 @@ msgstr "Best bewertete Bücher"
msgid "Random Books"
msgstr "Zufällige Bücher"
#: cps/web.py:1337 cps/web.py:1592 cps/web.py:213
5
#: cps/web.py:1337 cps/web.py:1592 cps/web.py:213
6
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht zugänglich:"
...
...
@@ -309,7 +309,7 @@ msgstr "Kategorieliste"
msgid "Category: %(name)s"
msgstr "Kategorie: %(name)s"
#: cps/templates/layout.html:7
1
cps/web.py:1628
#: cps/templates/layout.html:7
2
cps/web.py:1628
msgid "Tasks"
msgstr "Aufgaben"
...
...
@@ -319,7 +319,7 @@ msgstr "Statistiken"
#: cps/web.py:1730
msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again"
msgstr ""
msgstr "
Google Drive setup is nicht komplett, bitte versuche Google Drive zu deaktivieren und aktiviere es anschließend wieder
"
#: cps/web.py:1775
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
...
...
@@ -356,395 +356,395 @@ msgid "search"
msgstr "Suche"
#: cps/templates/index.xml:47 cps/templates/index.xml:51
#: cps/templates/layout.html:14
6 cps/web.py:2094
#: cps/templates/layout.html:14
7 cps/web.py:2095
msgid "Read Books"
msgstr "Gelesene Bücher"
#: cps/templates/index.xml:55 cps/templates/index.xml:59
#: cps/templates/layout.html:14
8 cps/web.py:2097
#: cps/templates/layout.html:14
9 cps/web.py:2098
msgid "Unread Books"
msgstr "Ungelesene Bücher"
#: cps/web.py:214
5 cps/web.py:2147 cps/web.py:2149 cps/web.py:2161
#: cps/web.py:214
6 cps/web.py:2148 cps/web.py:2150 cps/web.py:2162
msgid "Read a Book"
msgstr "Lese ein Buch"
#: cps/web.py:222
0 cps/web.py:3138
#: cps/web.py:222
1 cps/web.py:3139
msgid "Please fill out all fields!"
msgstr "Bitte alle Felder ausfüllen!"
#: cps/web.py:222
1 cps/web.py:2243 cps/web.py:2247 cps/web.py:2252
#: cps/web.py:225
4
#: cps/web.py:222
2 cps/web.py:2244 cps/web.py:2248 cps/web.py:2253
#: cps/web.py:225
5
msgid "register"
msgstr "Registieren"
#: cps/web.py:224
2 cps/web.py:3357
#: cps/web.py:224
3 cps/web.py:3358
msgid "An unknown error occurred. Please try again later."
msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen."
#: cps/web.py:224
5
#: cps/web.py:224
6
msgid "Your e-mail is not allowed to register"
msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen"
#: cps/web.py:224
8
#: cps/web.py:224
9
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Eine Bestätigungs E-Mail wurde an den E-Mail Account versendet."
#: cps/web.py:225
1
#: cps/web.py:225
2
msgid "This username or e-mail address is already in use."
msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung."
#: cps/web.py:226
8 cps/web.py:2364
#: cps/web.py:226
9 cps/web.py:2365
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Du bist nun eingeloggt als '%(nickname)s'"
#: cps/web.py:227
3
#: cps/web.py:227
4
msgid "Wrong Username or Password"
msgstr "Falscher Benutzername oder Passwort"
#: cps/web.py:22
79 cps/web.py:2300
#: cps/web.py:22
80 cps/web.py:2301
msgid "login"
msgstr "Login"
#: cps/web.py:231
2 cps/web.py:2343
#: cps/web.py:231
3 cps/web.py:2344
msgid "Token not found"
msgstr "Token wurde nicht gefunden"
#: cps/web.py:232
0 cps/web.py:2351
#: cps/web.py:232
1 cps/web.py:2352
msgid "Token has expired"
msgstr "Das Token ist abgelaufen"
#: cps/web.py:232
8
#: cps/web.py:232
9
msgid "Success! Please return to your device"
msgstr "Erfolg! Bitte zum Gerät zurückkehren"
#: cps/web.py:237
8
#: cps/web.py:237
9
msgid "Please configure the SMTP mail settings first..."
msgstr "Bitte zuerst die SMTP Mail Einstellung konfigurieren ..."
#: cps/web.py:238
3
#: cps/web.py:238
4
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht"
#: cps/web.py:238
7
#: cps/web.py:238
8
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s"
#: cps/web.py:23
89 cps/web.py:3191
#: cps/web.py:23
90 cps/web.py:3192
msgid "Please configure your kindle e-mail address first..."
msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..."
#: cps/web.py:240
0 cps/web.py:2452
#: cps/web.py:240
1 cps/web.py:2453
msgid "Invalid shelf specified"
msgstr "Ungültiges Bücherregal angegeben"
#: cps/web.py:240
7
#: cps/web.py:240
8
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Keine Erlaubnis ein Buch zum Bücherregale %(shelfname)s hinzuzufügen vorhanden"
#: cps/web.py:241
5
#: cps/web.py:241
6
msgid "You are not allowed to edit public shelves"
msgstr "Keine Erlaubnis öffentliche Bücherregale zu editieren vorhanden"
#: cps/web.py:242
4
#: cps/web.py:242
5
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Buch ist bereits Teil des Bücherregals %(shelfname)s"
#: cps/web.py:243
8
#: cps/web.py:243
9
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Das Buch wurde dem Bücherregal: %(sname)s hinzugefügt"
#: cps/web.py:245
7
#: cps/web.py:245
8
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Keine Erlaubnis ein Buch zum Bücherregal %(name)s hinzuzufügen"
#: cps/web.py:246
2
#: cps/web.py:246
3
msgid "User is not allowed to edit public shelves"
msgstr "Benutzer hat keine Erlaubnis öffentliche Bücherregale zu editieren"
#: cps/web.py:248
0
#: cps/web.py:248
1
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Bücher sind bereits Teil des Bücherregals %(name)s"
#: cps/web.py:249
4
#: cps/web.py:249
5
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Bücher wurden zum Bücherregal %(sname)s hinzugefügt"
#: cps/web.py:249
6
#: cps/web.py:249
7
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Bücher konnten nicht zum Bücherregal %(sname)s hinzugefügt werden"
#: cps/web.py:253
3
#: cps/web.py:253
4
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Das Buch wurde aus dem Bücherregal: %(sname)s entfernt"
#: cps/web.py:25
39
#: cps/web.py:25
40
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Keine Erlaubnis das Buch aus dem Bücherregal %(sname)s zu entfernen"
#: cps/web.py:256
0 cps/web.py:2584
#: cps/web.py:256
1 cps/web.py:2585
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Es existiert bereits ein Bücheregal mit dem Titel '%(title)s'."
#: cps/web.py:256
5
#: cps/web.py:256
6
#, python-format
msgid "Shelf %(title)s created"
msgstr "Bücherregal %(title)s erzeugt"
#: cps/web.py:256
7 cps/web.py:2595
#: cps/web.py:256
8 cps/web.py:2596
msgid "There was an error"
msgstr "Es trat ein Fehler auf"
#: cps/web.py:256
8 cps/web.py:2570
#: cps/web.py:256
9 cps/web.py:2571
msgid "create a shelf"
msgstr "Bücherregal erzeugen"
#: cps/web.py:259
3
#: cps/web.py:259
4
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Bücherregal %(title)s verändert"
#: cps/web.py:259
6 cps/web.py:2598
#: cps/web.py:259
7 cps/web.py:2599
msgid "Edit a shelf"
msgstr "Bücherregal editieren"
#: cps/web.py:26
19
#: cps/web.py:26
20
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Bücherregal %(name)s erfolgreich gelöscht"
#: cps/web.py:264
6
#: cps/web.py:264
7
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Bücherregal: '%(name)s'"
#: cps/web.py:26
49
#: cps/web.py:26
50
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Fehler beim Öffnen. Bücherregel exisitert nicht oder ist nicht zugänglich"
#: cps/web.py:268
0
#: cps/web.py:268
1
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Reihenfolge in Bücherregal '%(name)s' verändern"
#: cps/web.py:27
09 cps/web.py:3144
#: cps/web.py:27
10 cps/web.py:3145
msgid "E-mail is not from valid domain"
msgstr "E-Mail ist nicht Teil einer gültigen Domain"
#: cps/web.py:271
1 cps/web.py:2753 cps/web.py:2756
#: cps/web.py:271
2 cps/web.py:2754 cps/web.py:2757
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s's Profil"
#: cps/web.py:275
1
#: cps/web.py:275
2
msgid "Found an existing account for this e-mail address."
msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse."
#: cps/web.py:275
4
#: cps/web.py:275
5
msgid "Profile updated"
msgstr "Profil aktualisiert"
#: cps/web.py:278
5
#: cps/web.py:278
6
msgid "Admin page"
msgstr "Admin Seite"
#: cps/web.py:286
7 cps/web.py:3047
#: cps/web.py:286
8 cps/web.py:3048
msgid "Calibre-Web configuration updated"
msgstr "Calibre-Web Konfiguration wurde aktualisiert"
#: cps/templates/admin.html:100 cps/web.py:288
1
#: cps/templates/admin.html:100 cps/web.py:288
2
msgid "UI Configuration"
msgstr "Konfiguration Benutzeroberfläche"
#: cps/web.py:2
899
#: cps/web.py:2
900
msgid "Import of optional Google Drive requirements missing"
msgstr "Optionale Abhängigkeiten für Google Drive fehlen"
#: cps/web.py:290
2
#: cps/web.py:290
3
msgid "client_secrets.json is missing or not readable"
msgstr "client_secrets.json nicht vorhanden, oder nicht lesbar"
#: cps/web.py:290
7 cps/web.py:2936
#: cps/web.py:290
8 cps/web.py:2937
msgid "client_secrets.json is not configured for web application"
msgstr "client_secrets.json nicht als Webapplication konfiguriert"
#: cps/templates/admin.html:99 cps/web.py:29
39 cps/web.py:2965 cps/web.py:2977
#: cps/web.py:302
2 cps/web.py:3037 cps/web.py:3056 cps/web.py:3064
#: cps/web.py:308
0
#: cps/templates/admin.html:99 cps/web.py:29
40 cps/web.py:2966 cps/web.py:2978
#: cps/web.py:302
3 cps/web.py:3038 cps/web.py:3057 cps/web.py:3065
#: cps/web.py:308
1
msgid "Basic Configuration"
msgstr "Basis Konfiguration"
#: cps/web.py:296
2
#: cps/web.py:296
3
msgid "Keyfile location is not valid, please enter correct path"
msgstr "SSL-Keydatei Speicherort ist ungültig, bitte gültigen Pfad angeben"
#: cps/web.py:297
4
#: cps/web.py:297
5
msgid "Certfile location is not valid, please enter correct path"
msgstr "SSL-Certdatei Speicherort ist ungültig, bitte gültigen Pfad angeben"
#: cps/web.py:30
19
#: cps/web.py:30
20
msgid "Logfile location is not valid, please enter correct path"
msgstr "Speicherort Logdatei ist ungültig, bitte Pfad korrigieren"
#: cps/web.py:306
0
#: cps/web.py:306
1
msgid "DB location is not valid, please enter correct path"
msgstr "DB Speicherort ist ungültig, bitte Pfad korrigieren"
#: cps/templates/admin.html:33 cps/web.py:314
0 cps/web.py:3146 cps/web.py:3162
#: cps/templates/admin.html:33 cps/web.py:314
1 cps/web.py:3147 cps/web.py:3163
msgid "Add new user"
msgstr "Neuen Benutzer hinzufügen"
#: cps/web.py:315
2
#: cps/web.py:315
3
#, python-format
msgid "User '%(user)s' created"
msgstr "Benutzer '%(user)s' angelegt"
#: cps/web.py:315
6
#: cps/web.py:315
7
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Es existiert bereits ein Account für diese E-Mailadresse oder Benutzernamen."
#: cps/web.py:318
6
#: cps/web.py:318
7
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Test E-Mail wurde erfolgreich an %(kindlemail)s versendet"
#: cps/web.py:31
89
#: cps/web.py:31
90
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Es trat ein Fehler beim Versenden der Test E-Mail auf: %(res)s"
#: cps/web.py:319
3
#: cps/web.py:319
4
msgid "E-mail server settings updated"
msgstr "E-Mail Server Einstellungen aktualisiert"
#: cps/web.py:319
4
#: cps/web.py:319
5
msgid "Edit e-mail server settings"
msgstr "E-Mail Server Einstellungen bearbeiten"
#: cps/web.py:32
19
#: cps/web.py:32
20
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Benutzer '%(nick)s' gelöscht"
#: cps/web.py:333
2
#: cps/web.py:333
3
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Benutzer '%(nick)s' aktualisiert"
#: cps/web.py:333
5
#: cps/web.py:333
6
msgid "An unknown error occured."
msgstr "Es ist ein unbekannter Fehler aufgetreten."
#: cps/web.py:333
7
#: cps/web.py:333
8
#, python-format
msgid "Edit User %(nick)s"
msgstr "Benutzer %(nick)s bearbeiten"
#: cps/web.py:335
4
#: cps/web.py:335
5
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt"
#: cps/web.py:336
8 cps/web.py:3574
#: cps/web.py:336
9 cps/web.py:3575
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht zugänglich"
#: cps/web.py:339
6 cps/web.py:3868
#: cps/web.py:339
7
msgid "edit metadata"
msgstr "Metadaten editieren"
#: cps/web.py:34
89 cps/web.py:3736
#: cps/web.py:34
90 cps/web.py:3737
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Dateiendung '%(ext)s' kann nicht auf diesen Server hochgeladen werden"
#: cps/web.py:349
3 cps/web.py:3740
#: cps/web.py:349
4 cps/web.py:3741
msgid "File to be uploaded must have an extension"
msgstr "Dateien müssen eine Erweiterung haben, um hochgeladen zu werden"
#: cps/web.py:350
5 cps/web.py:3760
#: cps/web.py:350
6 cps/web.py:3761
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Fehler beim Erzeugen des Pfads %(path)s (Zugriff verweigert)"
#: cps/web.py:351
0
#: cps/web.py:351
1
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Fehler beim speichern der Datei %(file)s."
#: cps/web.py:352
7
#: cps/web.py:352
8
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Dateiformat %(ext)s zu %(book)s hinzugefügt"
#: cps/web.py:354
5
#: cps/web.py:354
6
#, python-format
msgid "Failed to create path for cover %(path)s (Permission denied)."
msgstr "Fehler beim Erzeugen des Pfads für das Cover %(path)s (Zugriff verweigert)"
#: cps/web.py:355
3
#: cps/web.py:355
4
#, python-format
msgid "Failed to store cover-file %(cover)s."
msgstr "Fehler beim Speichern des Covers %(cover)s."
#: cps/web.py:355
6
#: cps/web.py:355
7
msgid "Cover-file is not a valid image file"
msgstr "Cover-Datei ist keine gültige Bilddatei"
#: cps/web.py:358
6 cps/web.py:3595
#: cps/web.py:358
7 cps/web.py:3596
msgid "unknown"
msgstr "Unbekannt"
#: cps/web.py:362
7
#: cps/web.py:362
8
msgid "Cover is not a jpg file, can't save"
msgstr "Cover ist keine JPG Datei, konnte nicht gespeichert werden"
#: cps/web.py:367
5
#: cps/web.py:367
6
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s ist keine gültige Sprache"
#: cps/web.py:370
6
#: cps/web.py:370
7
msgid "Metadata successfully updated"
msgstr "Metadaten wurden erfolgreich aktualisiert"
#: cps/web.py:371
5
#: cps/web.py:371
6
msgid "Error editing book, please check logfile for details"
msgstr "Fehler beim Editieren des Buchs, Details im Logfile"
#: cps/web.py:376
5
#: cps/web.py:376
6
#, python-format
msgid "Failed to store file %(file)s (Permission denied)."
msgstr "Fehler beim speichern der Datei %(file)s (Zugriff verweigert)"
#: cps/web.py:377
0
#: cps/web.py:377
1
#, python-format
msgid "Failed to delete file %(file)s (Permission denied)."
msgstr "Fehler beim Löschen von Datei %(file)s (Zugriff verweigert)"
#: cps/web.py:388
8
#: cps/web.py:388
3
msgid "Source or destination format for conversion missing"
msgstr "Quell- oder Zielformat für Konvertierung fehlt"
#: cps/web.py:389
8
#: cps/web.py:389
3
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Buch wurde erfolgreich für die Konvertierung in das %(book_format)s Format eingereiht"
#: cps/web.py:3
902
#: cps/web.py:3
897
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Es trat ein Fehlker beim Konvertieren des Buches auf: %(res)s"
...
...
@@ -779,7 +779,7 @@ msgstr "Kindle"
msgid "DLS"
msgstr "DLS"
#: cps/templates/admin.html:13 cps/templates/layout.html:7
4
#: cps/templates/admin.html:13 cps/templates/layout.html:7
5
msgid "Admin"
msgstr "Admin"
...
...
@@ -788,7 +788,7 @@ msgstr "Admin"
msgid "Download"
msgstr "Download"
#: cps/templates/admin.html:15 cps/templates/layout.html:6
4
#: cps/templates/admin.html:15 cps/templates/layout.html:6
5
msgid "Upload"
msgstr "Hochladen"
...
...
@@ -989,7 +989,7 @@ msgstr "Beschreibung"
msgid "Tags"
msgstr "Tags"
#: cps/templates/book_edit.html:75 cps/templates/layout.html:15
7
#: cps/templates/book_edit.html:75 cps/templates/layout.html:15
8
#: cps/templates/search_form.html:53
msgid "Series"
msgstr "Serien"
...
...
@@ -1071,7 +1071,7 @@ msgstr "Suchbegriff"
msgid " Search keyword "
msgstr " Suchbegriff "
#: cps/templates/book_edit.html:218 cps/templates/layout.html:4
6
#: cps/templates/book_edit.html:218 cps/templates/layout.html:4
7
msgid "Go!"
msgstr "Los!"
...
...
@@ -1083,7 +1083,7 @@ msgstr "Klicke auf das Bild um die Metadaten zu übertragen"
msgid "Loading..."
msgstr "Lade..."
#: cps/templates/book_edit.html:239 cps/templates/layout.html:22
4
#: cps/templates/book_edit.html:239 cps/templates/layout.html:22
5
msgid "Close"
msgstr "Schließen"
...
...
@@ -1121,7 +1121,7 @@ msgstr "Google Drive authentifizieren"
#: cps/templates/config_edit.html:40
msgid "Please hit submit to continue with setup"
msgstr ""
msgstr "
Bitte wähle Abschicken um mit dem Setup fortzufahren
"
#: cps/templates/config_edit.html:43
msgid "Please finish Google Drive setup after login"
...
...
@@ -1251,7 +1251,7 @@ msgstr "Pfad zu Konvertertool"
msgid "Location of Unrar binary"
msgstr "Pfad zum UnRar Programm"
#: cps/templates/config_edit.html:229 cps/templates/layout.html:8
2
#: cps/templates/config_edit.html:229 cps/templates/layout.html:8
3
#: cps/templates/login.html:4
msgid "Login"
msgstr "Login"
...
...
@@ -1260,8 +1260,8 @@ msgstr "Login"
msgid "View Configuration"
msgstr "Ansichtskonfiguration"
#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:13
3
#: cps/templates/layout.html:13
4
cps/templates/shelf_edit.html:7
#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:13
4
#: cps/templates/layout.html:13
5
cps/templates/shelf_edit.html:7
msgid "Title"
msgstr "Titel"
...
...
@@ -1473,12 +1473,12 @@ msgstr "Hinzufügen"
msgid "Do you really want to delete this domain rule?"
msgstr "Soll diese Domain Regel wirklich gelöscht werden?"
#: cps/templates/feed.xml:21 cps/templates/layout.html:20
8
#: cps/templates/feed.xml:21 cps/templates/layout.html:20
9
msgid "Next"
msgstr "Nächste"
#: cps/templates/feed.xml:33 cps/templates/index.xml:11
#: cps/templates/layout.html:4
3 cps/templates/layout.html:44
#: cps/templates/layout.html:4
4 cps/templates/layout.html:45
msgid "Search"
msgstr "Suche"
...
...
@@ -1494,7 +1494,7 @@ msgstr "Entdecke (Zufälliges Buch)"
msgid "Start"
msgstr "Start"
#: cps/templates/index.xml:18 cps/templates/layout.html:1
39
#: cps/templates/index.xml:18 cps/templates/layout.html:1
40
msgid "Hot Books"
msgstr "Beliebte Bücher"
...
...
@@ -1502,7 +1502,7 @@ msgstr "Beliebte Bücher"
msgid "Popular publications from this catalog based on Downloads."
msgstr "Beliebte Publikationen aus dieser Bibliothek basierend auf Downloadzahlen."
#: cps/templates/index.xml:25 cps/templates/layout.html:14
2
#: cps/templates/index.xml:25 cps/templates/layout.html:14
3
msgid "Best rated Books"
msgstr "Best bewertete Bücher"
...
...
@@ -1522,7 +1522,7 @@ msgstr "Die neuesten Bücher"
msgid "Show Random Books"
msgstr "Zeige zufällige Bücher"
#: cps/templates/index.xml:62 cps/templates/layout.html:16
0
#: cps/templates/index.xml:62 cps/templates/layout.html:16
1
msgid "Authors"
msgstr "Autoren"
...
...
@@ -1530,7 +1530,7 @@ msgstr "Autoren"
msgid "Books ordered by Author"
msgstr "Bücher nach Autoren sortiert"
#: cps/templates/index.xml:69 cps/templates/layout.html:16
3
#: cps/templates/index.xml:69 cps/templates/layout.html:16
4
msgid "Publishers"
msgstr "Verleger"
...
...
@@ -1546,7 +1546,7 @@ msgstr "Bücher nach Kategorien sortiert"
msgid "Books ordered by series"
msgstr "Bücher nach Reihen geordnet"
#: cps/templates/index.xml:90 cps/templates/layout.html:1
69
#: cps/templates/index.xml:90 cps/templates/layout.html:1
70
msgid "Public Shelves"
msgstr "Öffentliche Bücherregale"
...
...
@@ -1554,7 +1554,7 @@ msgstr "Öffentliche Bücherregale"
msgid "Books organized in public shelfs, visible to everyone"
msgstr "Bücher organisiert in öffentlichem Bücherregal, sichtbar für jedermann"
#: cps/templates/index.xml:98 cps/templates/layout.html:17
3
#: cps/templates/index.xml:98 cps/templates/layout.html:17
4
msgid "Your Shelves"
msgstr "Deine Bücherregale"
...
...
@@ -1562,91 +1562,95 @@ msgstr "Deine Bücherregale"
msgid "User's own shelfs, only visible to the current user himself"
msgstr "Persönliches Bücherregal des Benutzers, nur sichtbar für den aktuellen Benutzer"
#: cps/templates/layout.html:3
3
#: cps/templates/layout.html:3
4
msgid "Toggle navigation"
msgstr "Nagivation umschalten"
#: cps/templates/layout.html:5
4
#: cps/templates/layout.html:5
5
msgid "Advanced Search"
msgstr "Erweiterte Suche"
#: cps/templates/layout.html:7
8
#: cps/templates/layout.html:7
9
msgid "Logout"
msgstr "Logout"
#: cps/templates/layout.html:8
3
cps/templates/register.html:14
#: cps/templates/layout.html:8
4
cps/templates/register.html:14
msgid "Register"
msgstr "Registrieren"
#: cps/templates/layout.html:1
08
#: cps/templates/layout.html:1
10
msgid "Uploading..."
msgstr "Hochladen..."
#: cps/templates/layout.html:1
09
#: cps/templates/layout.html:1
11
msgid "please don't refresh the page"
msgstr "Bitte die Seite nicht neu laden"
#: cps/templates/layout.html:12
0
#: cps/templates/layout.html:12
1
msgid "Browse"
msgstr "Browsen"
#: cps/templates/layout.html:12
2
#: cps/templates/layout.html:12
3
msgid "Recently Added"
msgstr "Kürzlich hinzugefügt"
#: cps/templates/layout.html:12
7
#: cps/templates/layout.html:12
8
msgid "Sorted Books"
msgstr "Bücher Sortiert"
#: cps/templates/layout.html:13
1 cps/templates/layout.html:132
#: cps/templates/layout.html:13
3 cps/templates/layout.html:134
#: cps/templates/layout.html:13
2 cps/templates/layout.html:133
#: cps/templates/layout.html:13
4 cps/templates/layout.html:135
msgid "Sort By"
msgstr "Sortiert nach"
#: cps/templates/layout.html:13
1
#: cps/templates/layout.html:13
2
msgid "Newest"
msgstr "Neueste"
#: cps/templates/layout.html:13
2
#: cps/templates/layout.html:13
3
msgid "Oldest"
msgstr "Älteste"
#: cps/templates/layout.html:13
3
#: cps/templates/layout.html:13
4
msgid "Ascending"
msgstr "Aufsteigend"
#: cps/templates/layout.html:13
4
#: cps/templates/layout.html:13
5
msgid "Descending"
msgstr "Absteigend"
#: cps/templates/layout.html:15
1
#: cps/templates/layout.html:15
2
msgid "Discover"
msgstr "Entdecke"
#: cps/templates/layout.html:15
4
#: cps/templates/layout.html:15
5
msgid "Categories"
msgstr "Kategorien"
#: cps/templates/layout.html:16
6
cps/templates/search_form.html:74
#: cps/templates/layout.html:16
7
cps/templates/search_form.html:74
msgid "Languages"
msgstr "Sprachen"
#: cps/templates/layout.html:17
8
#: cps/templates/layout.html:17
9
msgid "Create a Shelf"
msgstr "Bücherregal erzeugen"
#: cps/templates/layout.html:1
79
cps/templates/stats.html:3
#: cps/templates/layout.html:1
80
cps/templates/stats.html:3
msgid "About"
msgstr "Über"
#: cps/templates/layout.html:19
3
#: cps/templates/layout.html:19
4
msgid "Previous"
msgstr "Vorheriger"
#: cps/templates/layout.html:22
0
#: cps/templates/layout.html:22
1
msgid "Book Details"
msgstr "Buchdetails"
#: cps/templates/layout.html:255
msgid "Upload done, processing, please wait..."
msgstr "Hochladen beendet, verarbeite Daten, bitte warten..."
#: cps/templates/login.html:8 cps/templates/login.html:9
#: cps/templates/register.html:7 cps/templates/user_edit.html:8
msgid "Username"
...
...
@@ -1669,12 +1673,12 @@ msgstr "Einloggen mit magischem Link"
msgid "Calibre-Web ebook catalog"
msgstr "Calibre-Web E-Book Katalog"
#: cps/templates/read.html:
69
cps/templates/readcbr.html:79
#: cps/templates/read.html:
71
cps/templates/readcbr.html:79
#: cps/templates/readcbr.html:103
msgid "Settings"
msgstr "Einstellungen"
#: cps/templates/read.html:7
2
#: cps/templates/read.html:7
4
msgid "Reflow text when sidebars are open."
msgstr "Text umbrechen wenn Seitenleiste geöffnet ist."
...
...
@@ -1962,42 +1966,3 @@ msgstr "Benutzer löschen"
msgid "Recent Downloads"
msgstr "Letzte Downloads"
#~ msgid "Current commit timestamp"
#~ msgstr "Aktuelles Commit Datum"
#~ msgid "Newest commit timestamp"
#~ msgstr "Neuestes Commit Datum"
#~ msgid "Convert: %(book)s"
#~ msgstr "Konvertiere: %(book)s"
#~ msgid "Convert to %(format)s: %(book)s"
#~ msgstr "Konvertiere %(book)s in %(format)s: "
#~ msgid "Files are replaced"
#~ msgstr "Ersetze Dateien"
#~ msgid "Server is stopped"
#~ msgstr "Stoppe Server"
#~ msgid "Convertertool %(converter)s not found"
#~ msgstr "Konvertertool %(converter)s nicht gefunden"
#~ msgid "Choose a password"
#~ msgstr "Wähle ein Passwort"
#~ msgid "Could not find any formats suitable for sending by e-mail"
#~ msgstr "Es konnten keine passenden Formate für das Versenden per E-Mail gefunden werden"
#~ msgid "Author list"
#~ msgstr "Autorenliste"
#~ msgid "File %(file)s uploaded"
#~ msgstr "Datei %(file)s hochgeladen"
#~ msgid "Update done"
#~ msgstr "Update durchgeführt"
#~ msgid "A new update is available. Click on the button below to update to version: "
#~ msgstr "Ein neues Update ist verfügbar. Klicke auf den Button unten, um auf Version: "
cps/web.py
View file @
f6fbe2e1
...
...
@@ -2027,7 +2027,7 @@ def advanced_search():
series
=
series
,
title
=
_
(
u"search"
),
cc
=
cc
,
page
=
"advsearch"
)
@
app
.
route
(
"/cover/<book_id>"
)
@
app
.
route
(
"/cover/<
int:
book_id>"
)
@
login_required_if_no_ano
def
get_cover
(
book_id
):
book
=
db
.
session
.
query
(
db
.
Books
)
.
filter
(
db
.
Books
.
id
==
book_id
)
.
first
()
...
...
@@ -3851,7 +3851,7 @@ def upload():
gdriveutils
.
updateGdriveCalibreFromLocal
()
if
error
:
flash
(
error
,
category
=
"error"
)
uploadText
=
(
u"File
%
s"
%
book
.
title
)
uploadText
=
_
(
u"File
%(title)
s"
,
title
=
book
.
title
)
helper
.
global_WorkerThread
.
add_upload
(
current_user
.
nickname
,
"<a href=
\"
"
+
url_for
(
'show_book'
,
book_id
=
book
.
id
)
+
"
\"
>"
+
uploadText
+
"</a>"
)
...
...
messages.pot
View file @
f6fbe2e1
...
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-02-
03 16:21
+0100\n"
"POT-Creation-Date: 2019-02-
20 20:23
+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
...
...
@@ -17,8 +17,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.6.0\n"
#: cps/book_formats.py:1
45 cps/book_formats.py:146 cps/book_formats.py:150
#: cps/book_formats.py:1
54
cps/converter.py:29 cps/converter.py:45
#: cps/book_formats.py:1
52 cps/book_formats.py:153 cps/book_formats.py:157
#: cps/book_formats.py:1
61
cps/converter.py:29 cps/converter.py:45
msgid "not installed"
msgstr ""
...
...
@@ -30,132 +30,132 @@ msgstr ""
msgid "not configured"
msgstr ""
#: cps/helper.py:7
7
#: cps/helper.py:7
2
#, python-format
msgid "%(format)s format not found for book id: %(book)d"
msgstr ""
#: cps/helper.py:8
9
#: cps/helper.py:8
4
#, python-format
msgid "%(format)s not found on Google Drive: %(fn)s"
msgstr ""
#: cps/helper.py:9
6 cps/helper.py:204
cps/templates/detail.html:49
#: cps/helper.py:9
1 cps/helper.py:199
cps/templates/detail.html:49
msgid "Send to Kindle"
msgstr ""
#: cps/helper.py:9
7 cps/helper.py:115 cps/helper.py:206
#: cps/helper.py:9
2 cps/helper.py:110 cps/helper.py:201
msgid "This e-mail has been sent via Calibre-Web."
msgstr ""
#: cps/helper.py:10
8
#: cps/helper.py:10
3
#, python-format
msgid "%(format)s not found: %(fn)s"
msgstr ""
#: cps/helper.py:1
13
#: cps/helper.py:1
08
msgid "Calibre-Web test e-mail"
msgstr ""
#: cps/helper.py:1
14
#: cps/helper.py:1
09
msgid "Test e-mail"
msgstr ""
#: cps/helper.py:1
30
#: cps/helper.py:1
25
msgid "Get Started with Calibre-Web"
msgstr ""
#: cps/helper.py:1
31
#: cps/helper.py:1
26
#, python-format
msgid "Registration e-mail for user: %(name)s"
msgstr ""
#: cps/helper.py:1
44 cps/helper.py:146 cps/helper.py:148 cps/helper.py:150
#: cps/helper.py:15
6 cps/helper.py:158 cps/helper.py:160 cps/helper.py:162
#: cps/helper.py:1
39 cps/helper.py:141 cps/helper.py:143 cps/helper.py:145
#: cps/helper.py:15
1 cps/helper.py:153 cps/helper.py:155 cps/helper.py:157
#, python-format
msgid "Send %(format)s to Kindle"
msgstr ""
#: cps/helper.py:16
6 cps/helper.py:170
#: cps/helper.py:16
1 cps/helper.py:165
#, python-format
msgid "Convert %(orig)s to %(format)s and send to Kindle"
msgstr ""
#: cps/helper.py:20
5
#: cps/helper.py:20
0
#, python-format
msgid "E-mail: %(book)s"
msgstr ""
#: cps/helper.py:20
8
#: cps/helper.py:20
3
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr ""
#: cps/helper.py:3
13
#: cps/helper.py:3
08
#, python-format
msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr ""
#: cps/helper.py:3
23
#: cps/helper.py:3
18
#, python-format
msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr ""
#: cps/helper.py:33
7
#: cps/helper.py:33
2
#, python-format
msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr ""
#: cps/helper.py:3
62 cps/helper.py:371
#: cps/helper.py:3
58 cps/helper.py:368 cps/helper.py:376
#, python-format
msgid "File %(file)s not found on Google Drive"
msgstr ""
#: cps/helper.py:
402
#: cps/helper.py:
397
#, python-format
msgid "Book path %(path)s not found on Google Drive"
msgstr ""
#: cps/helper.py:5
10
#: cps/helper.py:5
05
msgid "Error excecuting UnRar"
msgstr ""
#: cps/helper.py:5
12
#: cps/helper.py:5
07
msgid "Unrar binary file not found"
msgstr ""
#: cps/helper.py:5
43
#: cps/helper.py:5
38
msgid "Waiting"
msgstr ""
#: cps/helper.py:54
5
#: cps/helper.py:54
0
msgid "Failed"
msgstr ""
#: cps/helper.py:54
7
#: cps/helper.py:54
2
msgid "Started"
msgstr ""
#: cps/helper.py:54
9
#: cps/helper.py:54
4
msgid "Finished"
msgstr ""
#: cps/helper.py:5
51
#: cps/helper.py:5
46
msgid "Unknown Status"
msgstr ""
#: cps/helper.py:55
6
#: cps/helper.py:55
1
msgid "E-mail: "
msgstr ""
#: cps/helper.py:55
8 cps/helper.py:562
#: cps/helper.py:55
3 cps/helper.py:557
msgid "Convert: "
msgstr ""
#: cps/helper.py:5
60
#: cps/helper.py:5
55
msgid "Upload: "
msgstr ""
#: cps/helper.py:5
64
#: cps/helper.py:5
59
msgid "Unknown Task: "
msgstr ""
...
...
@@ -200,7 +200,7 @@ msgstr ""
msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr ""
#: cps/updater.py:491 cps/web.py:276
6
#: cps/updater.py:491 cps/web.py:276
7
msgid "Unknown"
msgstr ""
...
...
@@ -268,7 +268,7 @@ msgstr ""
msgid "Random Books"
msgstr ""
#: cps/web.py:1337 cps/web.py:1592 cps/web.py:213
5
#: cps/web.py:1337 cps/web.py:1592 cps/web.py:213
6
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
...
...
@@ -308,7 +308,7 @@ msgstr ""
msgid "Category: %(name)s"
msgstr ""
#: cps/templates/layout.html:7
1
cps/web.py:1628
#: cps/templates/layout.html:7
2
cps/web.py:1628
msgid "Tasks"
msgstr ""
...
...
@@ -355,395 +355,395 @@ msgid "search"
msgstr ""
#: cps/templates/index.xml:47 cps/templates/index.xml:51
#: cps/templates/layout.html:14
6 cps/web.py:2094
#: cps/templates/layout.html:14
7 cps/web.py:2095
msgid "Read Books"
msgstr ""
#: cps/templates/index.xml:55 cps/templates/index.xml:59
#: cps/templates/layout.html:14
8 cps/web.py:2097
#: cps/templates/layout.html:14
9 cps/web.py:2098
msgid "Unread Books"
msgstr ""
#: cps/web.py:214
5 cps/web.py:2147 cps/web.py:2149 cps/web.py:2161
#: cps/web.py:214
6 cps/web.py:2148 cps/web.py:2150 cps/web.py:2162
msgid "Read a Book"
msgstr ""
#: cps/web.py:222
0 cps/web.py:3138
#: cps/web.py:222
1 cps/web.py:3139
msgid "Please fill out all fields!"
msgstr ""
#: cps/web.py:222
1 cps/web.py:2243 cps/web.py:2247 cps/web.py:2252
#: cps/web.py:225
4
#: cps/web.py:222
2 cps/web.py:2244 cps/web.py:2248 cps/web.py:2253
#: cps/web.py:225
5
msgid "register"
msgstr ""
#: cps/web.py:224
2 cps/web.py:3357
#: cps/web.py:224
3 cps/web.py:3358
msgid "An unknown error occurred. Please try again later."
msgstr ""
#: cps/web.py:224
5
#: cps/web.py:224
6
msgid "Your e-mail is not allowed to register"
msgstr ""
#: cps/web.py:224
8
#: cps/web.py:224
9
msgid "Confirmation e-mail was send to your e-mail account."
msgstr ""
#: cps/web.py:225
1
#: cps/web.py:225
2
msgid "This username or e-mail address is already in use."
msgstr ""
#: cps/web.py:226
8 cps/web.py:2364
#: cps/web.py:226
9 cps/web.py:2365
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr ""
#: cps/web.py:227
3
#: cps/web.py:227
4
msgid "Wrong Username or Password"
msgstr ""
#: cps/web.py:22
79 cps/web.py:2300
#: cps/web.py:22
80 cps/web.py:2301
msgid "login"
msgstr ""
#: cps/web.py:231
2 cps/web.py:2343
#: cps/web.py:231
3 cps/web.py:2344
msgid "Token not found"
msgstr ""
#: cps/web.py:232
0 cps/web.py:2351
#: cps/web.py:232
1 cps/web.py:2352
msgid "Token has expired"
msgstr ""
#: cps/web.py:232
8
#: cps/web.py:232
9
msgid "Success! Please return to your device"
msgstr ""
#: cps/web.py:237
8
#: cps/web.py:237
9
msgid "Please configure the SMTP mail settings first..."
msgstr ""
#: cps/web.py:238
3
#: cps/web.py:238
4
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr ""
#: cps/web.py:238
7
#: cps/web.py:238
8
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr ""
#: cps/web.py:23
89 cps/web.py:3191
#: cps/web.py:23
90 cps/web.py:3192
msgid "Please configure your kindle e-mail address first..."
msgstr ""
#: cps/web.py:240
0 cps/web.py:2452
#: cps/web.py:240
1 cps/web.py:2453
msgid "Invalid shelf specified"
msgstr ""
#: cps/web.py:240
7
#: cps/web.py:240
8
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr ""
#: cps/web.py:241
5
#: cps/web.py:241
6
msgid "You are not allowed to edit public shelves"
msgstr ""
#: cps/web.py:242
4
#: cps/web.py:242
5
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr ""
#: cps/web.py:243
8
#: cps/web.py:243
9
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr ""
#: cps/web.py:245
7
#: cps/web.py:245
8
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr ""
#: cps/web.py:246
2
#: cps/web.py:246
3
msgid "User is not allowed to edit public shelves"
msgstr ""
#: cps/web.py:248
0
#: cps/web.py:248
1
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr ""
#: cps/web.py:249
4
#: cps/web.py:249
5
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr ""
#: cps/web.py:249
6
#: cps/web.py:249
7
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr ""
#: cps/web.py:253
3
#: cps/web.py:253
4
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr ""
#: cps/web.py:25
39
#: cps/web.py:25
40
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
#: cps/web.py:256
0 cps/web.py:2584
#: cps/web.py:256
1 cps/web.py:2585
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr ""
#: cps/web.py:256
5
#: cps/web.py:256
6
#, python-format
msgid "Shelf %(title)s created"
msgstr ""
#: cps/web.py:256
7 cps/web.py:2595
#: cps/web.py:256
8 cps/web.py:2596
msgid "There was an error"
msgstr ""
#: cps/web.py:256
8 cps/web.py:2570
#: cps/web.py:256
9 cps/web.py:2571
msgid "create a shelf"
msgstr ""
#: cps/web.py:259
3
#: cps/web.py:259
4
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
#: cps/web.py:259
6 cps/web.py:2598
#: cps/web.py:259
7 cps/web.py:2599
msgid "Edit a shelf"
msgstr ""
#: cps/web.py:26
19
#: cps/web.py:26
20
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr ""
#: cps/web.py:264
6
#: cps/web.py:264
7
#, python-format
msgid "Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:26
49
#: cps/web.py:26
50
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
#: cps/web.py:268
0
#: cps/web.py:268
1
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:27
09 cps/web.py:3144
#: cps/web.py:27
10 cps/web.py:3145
msgid "E-mail is not from valid domain"
msgstr ""
#: cps/web.py:271
1 cps/web.py:2753 cps/web.py:2756
#: cps/web.py:271
2 cps/web.py:2754 cps/web.py:2757
#, python-format
msgid "%(name)s's profile"
msgstr ""
#: cps/web.py:275
1
#: cps/web.py:275
2
msgid "Found an existing account for this e-mail address."
msgstr ""
#: cps/web.py:275
4
#: cps/web.py:275
5
msgid "Profile updated"
msgstr ""
#: cps/web.py:278
5
#: cps/web.py:278
6
msgid "Admin page"
msgstr ""
#: cps/web.py:286
7 cps/web.py:3047
#: cps/web.py:286
8 cps/web.py:3048
msgid "Calibre-Web configuration updated"
msgstr ""
#: cps/templates/admin.html:100 cps/web.py:288
1
#: cps/templates/admin.html:100 cps/web.py:288
2
msgid "UI Configuration"
msgstr ""
#: cps/web.py:2
899
#: cps/web.py:2
900
msgid "Import of optional Google Drive requirements missing"
msgstr ""
#: cps/web.py:290
2
#: cps/web.py:290
3
msgid "client_secrets.json is missing or not readable"
msgstr ""
#: cps/web.py:290
7 cps/web.py:2936
#: cps/web.py:290
8 cps/web.py:2937
msgid "client_secrets.json is not configured for web application"
msgstr ""
#: cps/templates/admin.html:99 cps/web.py:29
39 cps/web.py:2965 cps/web.py:2977
#: cps/web.py:302
2 cps/web.py:3037 cps/web.py:3056 cps/web.py:3064
#: cps/web.py:308
0
#: cps/templates/admin.html:99 cps/web.py:29
40 cps/web.py:2966 cps/web.py:2978
#: cps/web.py:302
3 cps/web.py:3038 cps/web.py:3057 cps/web.py:3065
#: cps/web.py:308
1
msgid "Basic Configuration"
msgstr ""
#: cps/web.py:296
2
#: cps/web.py:296
3
msgid "Keyfile location is not valid, please enter correct path"
msgstr ""
#: cps/web.py:297
4
#: cps/web.py:297
5
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
#: cps/web.py:30
19
#: cps/web.py:30
20
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
#: cps/web.py:306
0
#: cps/web.py:306
1
msgid "DB location is not valid, please enter correct path"
msgstr ""
#: cps/templates/admin.html:33 cps/web.py:314
0 cps/web.py:3146 cps/web.py:3162
#: cps/templates/admin.html:33 cps/web.py:314
1 cps/web.py:3147 cps/web.py:3163
msgid "Add new user"
msgstr ""
#: cps/web.py:315
2
#: cps/web.py:315
3
#, python-format
msgid "User '%(user)s' created"
msgstr ""
#: cps/web.py:315
6
#: cps/web.py:315
7
msgid "Found an existing account for this e-mail address or nickname."
msgstr ""
#: cps/web.py:318
6
#: cps/web.py:318
7
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr ""
#: cps/web.py:31
89
#: cps/web.py:31
90
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr ""
#: cps/web.py:319
3
#: cps/web.py:319
4
msgid "E-mail server settings updated"
msgstr ""
#: cps/web.py:319
4
#: cps/web.py:319
5
msgid "Edit e-mail server settings"
msgstr ""
#: cps/web.py:32
19
#: cps/web.py:32
20
#, python-format
msgid "User '%(nick)s' deleted"
msgstr ""
#: cps/web.py:333
2
#: cps/web.py:333
3
#, python-format
msgid "User '%(nick)s' updated"
msgstr ""
#: cps/web.py:333
5
#: cps/web.py:333
6
msgid "An unknown error occured."
msgstr ""
#: cps/web.py:333
7
#: cps/web.py:333
8
#, python-format
msgid "Edit User %(nick)s"
msgstr ""
#: cps/web.py:335
4
#: cps/web.py:335
5
#, python-format
msgid "Password for user %(user)s reset"
msgstr ""
#: cps/web.py:336
8 cps/web.py:3574
#: cps/web.py:336
9 cps/web.py:3575
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
#: cps/web.py:339
6 cps/web.py:3868
#: cps/web.py:339
7
msgid "edit metadata"
msgstr ""
#: cps/web.py:34
89 cps/web.py:3736
#: cps/web.py:34
90 cps/web.py:3737
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr ""
#: cps/web.py:349
3 cps/web.py:3740
#: cps/web.py:349
4 cps/web.py:3741
msgid "File to be uploaded must have an extension"
msgstr ""
#: cps/web.py:350
5 cps/web.py:3760
#: cps/web.py:350
6 cps/web.py:3761
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr ""
#: cps/web.py:351
0
#: cps/web.py:351
1
#, python-format
msgid "Failed to store file %(file)s."
msgstr ""
#: cps/web.py:352
7
#: cps/web.py:352
8
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr ""
#: cps/web.py:354
5
#: cps/web.py:354
6
#, python-format
msgid "Failed to create path for cover %(path)s (Permission denied)."
msgstr ""
#: cps/web.py:355
3
#: cps/web.py:355
4
#, python-format
msgid "Failed to store cover-file %(cover)s."
msgstr ""
#: cps/web.py:355
6
#: cps/web.py:355
7
msgid "Cover-file is not a valid image file"
msgstr ""
#: cps/web.py:358
6 cps/web.py:3595
#: cps/web.py:358
7 cps/web.py:3596
msgid "unknown"
msgstr ""
#: cps/web.py:362
7
#: cps/web.py:362
8
msgid "Cover is not a jpg file, can't save"
msgstr ""
#: cps/web.py:367
5
#: cps/web.py:367
6
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
#: cps/web.py:370
6
#: cps/web.py:370
7
msgid "Metadata successfully updated"
msgstr ""
#: cps/web.py:371
5
#: cps/web.py:371
6
msgid "Error editing book, please check logfile for details"
msgstr ""
#: cps/web.py:376
5
#: cps/web.py:376
6
#, python-format
msgid "Failed to store file %(file)s (Permission denied)."
msgstr ""
#: cps/web.py:377
0
#: cps/web.py:377
1
#, python-format
msgid "Failed to delete file %(file)s (Permission denied)."
msgstr ""
#: cps/web.py:388
8
#: cps/web.py:388
3
msgid "Source or destination format for conversion missing"
msgstr ""
#: cps/web.py:389
8
#: cps/web.py:389
3
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr ""
#: cps/web.py:3
902
#: cps/web.py:3
897
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr ""
...
...
@@ -778,7 +778,7 @@ msgstr ""
msgid "DLS"
msgstr ""
#: cps/templates/admin.html:13 cps/templates/layout.html:7
4
#: cps/templates/admin.html:13 cps/templates/layout.html:7
5
msgid "Admin"
msgstr ""
...
...
@@ -787,7 +787,7 @@ msgstr ""
msgid "Download"
msgstr ""
#: cps/templates/admin.html:15 cps/templates/layout.html:6
4
#: cps/templates/admin.html:15 cps/templates/layout.html:6
5
msgid "Upload"
msgstr ""
...
...
@@ -988,7 +988,7 @@ msgstr ""
msgid "Tags"
msgstr ""
#: cps/templates/book_edit.html:75 cps/templates/layout.html:15
7
#: cps/templates/book_edit.html:75 cps/templates/layout.html:15
8
#: cps/templates/search_form.html:53
msgid "Series"
msgstr ""
...
...
@@ -1070,7 +1070,7 @@ msgstr ""
msgid " Search keyword "
msgstr ""
#: cps/templates/book_edit.html:218 cps/templates/layout.html:4
6
#: cps/templates/book_edit.html:218 cps/templates/layout.html:4
7
msgid "Go!"
msgstr ""
...
...
@@ -1082,7 +1082,7 @@ msgstr ""
msgid "Loading..."
msgstr ""
#: cps/templates/book_edit.html:239 cps/templates/layout.html:22
4
#: cps/templates/book_edit.html:239 cps/templates/layout.html:22
5
msgid "Close"
msgstr ""
...
...
@@ -1250,7 +1250,7 @@ msgstr ""
msgid "Location of Unrar binary"
msgstr ""
#: cps/templates/config_edit.html:229 cps/templates/layout.html:8
2
#: cps/templates/config_edit.html:229 cps/templates/layout.html:8
3
#: cps/templates/login.html:4
msgid "Login"
msgstr ""
...
...
@@ -1259,8 +1259,8 @@ msgstr ""
msgid "View Configuration"
msgstr ""
#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:13
3
#: cps/templates/layout.html:13
4
cps/templates/shelf_edit.html:7
#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:13
4
#: cps/templates/layout.html:13
5
cps/templates/shelf_edit.html:7
msgid "Title"
msgstr ""
...
...
@@ -1472,12 +1472,12 @@ msgstr ""
msgid "Do you really want to delete this domain rule?"
msgstr ""
#: cps/templates/feed.xml:21 cps/templates/layout.html:20
8
#: cps/templates/feed.xml:21 cps/templates/layout.html:20
9
msgid "Next"
msgstr ""
#: cps/templates/feed.xml:33 cps/templates/index.xml:11
#: cps/templates/layout.html:4
3 cps/templates/layout.html:44
#: cps/templates/layout.html:4
4 cps/templates/layout.html:45
msgid "Search"
msgstr ""
...
...
@@ -1493,7 +1493,7 @@ msgstr ""
msgid "Start"
msgstr ""
#: cps/templates/index.xml:18 cps/templates/layout.html:1
39
#: cps/templates/index.xml:18 cps/templates/layout.html:1
40
msgid "Hot Books"
msgstr ""
...
...
@@ -1501,7 +1501,7 @@ msgstr ""
msgid "Popular publications from this catalog based on Downloads."
msgstr ""
#: cps/templates/index.xml:25 cps/templates/layout.html:14
2
#: cps/templates/index.xml:25 cps/templates/layout.html:14
3
msgid "Best rated Books"
msgstr ""
...
...
@@ -1521,7 +1521,7 @@ msgstr ""
msgid "Show Random Books"
msgstr ""
#: cps/templates/index.xml:62 cps/templates/layout.html:16
0
#: cps/templates/index.xml:62 cps/templates/layout.html:16
1
msgid "Authors"
msgstr ""
...
...
@@ -1529,7 +1529,7 @@ msgstr ""
msgid "Books ordered by Author"
msgstr ""
#: cps/templates/index.xml:69 cps/templates/layout.html:16
3
#: cps/templates/index.xml:69 cps/templates/layout.html:16
4
msgid "Publishers"
msgstr ""
...
...
@@ -1545,7 +1545,7 @@ msgstr ""
msgid "Books ordered by series"
msgstr ""
#: cps/templates/index.xml:90 cps/templates/layout.html:1
69
#: cps/templates/index.xml:90 cps/templates/layout.html:1
70
msgid "Public Shelves"
msgstr ""
...
...
@@ -1553,7 +1553,7 @@ msgstr ""
msgid "Books organized in public shelfs, visible to everyone"
msgstr ""
#: cps/templates/index.xml:98 cps/templates/layout.html:17
3
#: cps/templates/index.xml:98 cps/templates/layout.html:17
4
msgid "Your Shelves"
msgstr ""
...
...
@@ -1561,91 +1561,95 @@ msgstr ""
msgid "User's own shelfs, only visible to the current user himself"
msgstr ""
#: cps/templates/layout.html:3
3
#: cps/templates/layout.html:3
4
msgid "Toggle navigation"
msgstr ""
#: cps/templates/layout.html:5
4
#: cps/templates/layout.html:5
5
msgid "Advanced Search"
msgstr ""
#: cps/templates/layout.html:7
8
#: cps/templates/layout.html:7
9
msgid "Logout"
msgstr ""
#: cps/templates/layout.html:8
3
cps/templates/register.html:14
#: cps/templates/layout.html:8
4
cps/templates/register.html:14
msgid "Register"
msgstr ""
#: cps/templates/layout.html:1
08
#: cps/templates/layout.html:1
10
msgid "Uploading..."
msgstr ""
#: cps/templates/layout.html:1
09
#: cps/templates/layout.html:1
11
msgid "please don't refresh the page"
msgstr ""
#: cps/templates/layout.html:12
0
#: cps/templates/layout.html:12
1
msgid "Browse"
msgstr ""
#: cps/templates/layout.html:12
2
#: cps/templates/layout.html:12
3
msgid "Recently Added"
msgstr ""
#: cps/templates/layout.html:12
7
#: cps/templates/layout.html:12
8
msgid "Sorted Books"
msgstr ""
#: cps/templates/layout.html:13
1 cps/templates/layout.html:132
#: cps/templates/layout.html:13
3 cps/templates/layout.html:134
#: cps/templates/layout.html:13
2 cps/templates/layout.html:133
#: cps/templates/layout.html:13
4 cps/templates/layout.html:135
msgid "Sort By"
msgstr ""
#: cps/templates/layout.html:13
1
#: cps/templates/layout.html:13
2
msgid "Newest"
msgstr ""
#: cps/templates/layout.html:13
2
#: cps/templates/layout.html:13
3
msgid "Oldest"
msgstr ""
#: cps/templates/layout.html:13
3
#: cps/templates/layout.html:13
4
msgid "Ascending"
msgstr ""
#: cps/templates/layout.html:13
4
#: cps/templates/layout.html:13
5
msgid "Descending"
msgstr ""
#: cps/templates/layout.html:15
1
#: cps/templates/layout.html:15
2
msgid "Discover"
msgstr ""
#: cps/templates/layout.html:15
4
#: cps/templates/layout.html:15
5
msgid "Categories"
msgstr ""
#: cps/templates/layout.html:16
6
cps/templates/search_form.html:74
#: cps/templates/layout.html:16
7
cps/templates/search_form.html:74
msgid "Languages"
msgstr ""
#: cps/templates/layout.html:17
8
#: cps/templates/layout.html:17
9
msgid "Create a Shelf"
msgstr ""
#: cps/templates/layout.html:1
79
cps/templates/stats.html:3
#: cps/templates/layout.html:1
80
cps/templates/stats.html:3
msgid "About"
msgstr ""
#: cps/templates/layout.html:19
3
#: cps/templates/layout.html:19
4
msgid "Previous"
msgstr ""
#: cps/templates/layout.html:22
0
#: cps/templates/layout.html:22
1
msgid "Book Details"
msgstr ""
#: cps/templates/layout.html:255
msgid "Upload done, processing, please wait..."
msgstr ""
#: cps/templates/login.html:8 cps/templates/login.html:9
#: cps/templates/register.html:7 cps/templates/user_edit.html:8
msgid "Username"
...
...
@@ -1668,12 +1672,12 @@ msgstr ""
msgid "Calibre-Web ebook catalog"
msgstr ""
#: cps/templates/read.html:
69
cps/templates/readcbr.html:79
#: cps/templates/read.html:
71
cps/templates/readcbr.html:79
#: cps/templates/readcbr.html:103
msgid "Settings"
msgstr ""
#: cps/templates/read.html:7
2
#: cps/templates/read.html:7
4
msgid "Reflow text when sidebars are open."
msgstr ""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment