mirror of
https://github.com/janeczku/calibre-web
synced 2024-11-24 18:47:23 +00:00
commit
2b9ab96f28
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1,3 +1,3 @@
|
|||||||
web.py ident export-subst
|
helper.py ident export-subst
|
||||||
cps/static/css/libs/* linguist-vendored
|
cps/static/css/libs/* linguist-vendored
|
||||||
cps/static/js/libs/* linguist-vendored
|
cps/static/js/libs/* linguist-vendored
|
||||||
|
@ -44,5 +44,9 @@ if args.k:
|
|||||||
print("Keyfilepath is invalid. Exiting...")
|
print("Keyfilepath is invalid. Exiting...")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
if (args.k and not args.c) or (not args.k and args.c):
|
||||||
|
print("Certfile and Keyfile have to be used together. Exiting...")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if args.k is "":
|
if args.k is "":
|
||||||
keyfilepath = ""
|
keyfilepath = ""
|
||||||
|
@ -559,16 +559,11 @@ def is_sha1(sha1):
|
|||||||
|
|
||||||
|
|
||||||
def get_current_version_info():
|
def get_current_version_info():
|
||||||
try:
|
content = {}
|
||||||
with open('version', 'r') as f:
|
content[0] = '$Format:%H$'
|
||||||
content = f.readlines()
|
content[1] = '$Format:%cI$'
|
||||||
content = [x.strip() for x in content]
|
# content[0] = 'bb7d2c6273ae4560e83950d36d64533343623a57'
|
||||||
|
# content[1] = '2018-09-09T10:13:08+02:00'
|
||||||
if len(content) != 2:
|
|
||||||
return False
|
|
||||||
|
|
||||||
if is_sha1(content[0]) and len(content[1]) > 0:
|
if is_sha1(content[0]) and len(content[1]) > 0:
|
||||||
return {'hash': content[0], 'datetime': content[1]}
|
return {'hash': content[0], 'datetime': content[1]}
|
||||||
except FileNotFoundError:
|
|
||||||
return False
|
|
||||||
return False
|
return False
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
from socket import error as SocketError
|
from socket import error as SocketError
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
import signal
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from gevent.pywsgi import WSGIServer
|
from gevent.pywsgi import WSGIServer
|
||||||
from gevent.pool import Pool
|
from gevent.pool import Pool
|
||||||
@ -26,7 +28,8 @@ class server:
|
|||||||
restart= False
|
restart= False
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
signal.signal(signal.SIGINT, self.killServer)
|
||||||
|
signal.signal(signal.SIGTERM, self.killServer)
|
||||||
|
|
||||||
def start_gevent(self):
|
def start_gevent(self):
|
||||||
try:
|
try:
|
||||||
@ -86,6 +89,9 @@ class server:
|
|||||||
def setRestartTyp(self,starttyp):
|
def setRestartTyp(self,starttyp):
|
||||||
self.restart=starttyp
|
self.restart=starttyp
|
||||||
|
|
||||||
|
def killServer(self, signum, frame):
|
||||||
|
self.stopServer()
|
||||||
|
|
||||||
def stopServer(self):
|
def stopServer(self):
|
||||||
if gevent_present:
|
if gevent_present:
|
||||||
self.wsgiserver.close()
|
self.wsgiserver.close()
|
||||||
|
@ -96,8 +96,8 @@
|
|||||||
<div class="col-xs-6 col-sm-5">{% if config.config_remote_login %}<span class="glyphicon glyphicon-ok"></span>{% else %}<span class="glyphicon glyphicon-remove"></span>{% endif %}</div>
|
<div class="col-xs-6 col-sm-5">{% if config.config_remote_login %}<span class="glyphicon glyphicon-ok"></span>{% else %}<span class="glyphicon glyphicon-remove"></span>{% endif %}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn btn-default"><a href="{{url_for('configuration')}}">{{_('Basic Configuration')}}</a></div>
|
<div class="btn btn-default"><a id="basic_config" href="{{url_for('configuration')}}">{{_('Basic Configuration')}}</a></div>
|
||||||
<div class="btn btn-default"><a href="{{url_for('view_configuration')}}">{{_('UI Configuration')}}</a></div>
|
<div class="btn btn-default"><a id="view_config" href="{{url_for('view_configuration')}}">{{_('UI Configuration')}}</a></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -105,8 +105,8 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<h2>{{_('Administration')}}</h2>
|
<h2>{{_('Administration')}}</h2>
|
||||||
<div class="btn btn-default" id="restart_database">{{_('Reconnect to Calibre DB')}}</div>
|
<div class="btn btn-default" id="restart_database">{{_('Reconnect to Calibre DB')}}</div>
|
||||||
<div class="btn btn-default" data-toggle="modal" data-target="#RestartDialog">{{_('Restart Calibre-Web')}}</div>
|
<div class="btn btn-default" id="admin_restart"data-toggle="modal" data-target="#RestartDialog">{{_('Restart Calibre-Web')}}</div>
|
||||||
<div class="btn btn-default" data-toggle="modal" data-target="#ShutdownDialog">{{_('Stop Calibre-Web')}}</div>
|
<div class="btn btn-default" id="admin_stop" data-toggle="modal" data-target="#ShutdownDialog">{{_('Stop Calibre-Web')}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -122,8 +122,8 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr id="current_version">
|
<tr id="current_version">
|
||||||
<td>{{commit}} <i>({{_('current version')}})</i></td>
|
<td>{{commit}} </td>
|
||||||
<td>/</td>
|
<td><i>{{_('Current version')}}</i></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if display_convertbtn and conversion_formats|length > 0 %}
|
{% if source_formats|length > 0 and conversion_formats|length > 0 %}
|
||||||
<div class="text-center more-stuff"><h4>{{_('Convert book format:')}}</h4>
|
<div class="text-center more-stuff"><h4>{{_('Convert book format:')}}</h4>
|
||||||
<form class="padded-bottom" action="{{ url_for('convert_bookformat', book_id=book.id) }}" method="post" id="book_convert_frm">
|
<form class="padded-bottom" action="{{ url_for('convert_bookformat', book_id=book.id) }}" method="post" id="book_convert_frm">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
@ -34,8 +34,8 @@
|
|||||||
<label class="control-label" for="book_format_from">{{_('Convert from:')}}</label>
|
<label class="control-label" for="book_format_from">{{_('Convert from:')}}</label>
|
||||||
<select class="form-control" name="book_format_from" id="book_format_from">
|
<select class="form-control" name="book_format_from" id="book_format_from">
|
||||||
<option disabled selected value> -- {{_('select an option')}} -- </option>
|
<option disabled selected value> -- {{_('select an option')}} -- </option>
|
||||||
{% for file in book.data %}
|
{% for format in source_formats %}
|
||||||
<option>{{file.format}} </option>
|
<option>{{format|upper}} </option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
<label class="control-label" for="book_format_to">{{_('Convert to:')}}</label>
|
<label class="control-label" for="book_format_to">{{_('Convert to:')}}</label>
|
||||||
|
@ -207,12 +207,12 @@
|
|||||||
|
|
||||||
|
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button type="submit" class="btn btn-default">{{_('Submit')}}</button>
|
<button type="submit" name="submit" class="btn btn-default">{{_('Submit')}}</button>
|
||||||
{% if not origin %}
|
{% if not origin %}
|
||||||
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>
|
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if success %}
|
{% if success %}
|
||||||
<a href="{{ url_for('login') }}" class="btn btn-default">{{_('Login')}}</a>
|
<a href="{{ url_for('login') }}" name="login" class="btn btn-default">{{_('Login')}}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -160,7 +160,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<button type="submit" class="btn btn-default">{{_('Submit')}}</button>
|
<button type="submit" name="submit" class="btn btn-default">{{_('Submit')}}</button>
|
||||||
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>
|
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -174,8 +174,10 @@
|
|||||||
|
|
||||||
|
|
||||||
{% if entry.comments|length > 0 and entry.comments[0].text|length > 0%}
|
{% if entry.comments|length > 0 and entry.comments[0].text|length > 0%}
|
||||||
|
<div class="comments">
|
||||||
<h3>{{_('Description:')}}</h3>
|
<h3>{{_('Description:')}}</h3>
|
||||||
{{entry.comments[0].text|safe}}
|
{{entry.comments[0].text|safe}}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,16 +122,16 @@
|
|||||||
<li id="nav_new" {% if page == 'root' %}class="active"{% endif %}><a href="{{url_for('index')}}"><span class="glyphicon glyphicon-book"></span> {{_('Recently Added')}}</a></li>
|
<li id="nav_new" {% if page == 'root' %}class="active"{% endif %}><a href="{{url_for('index')}}"><span class="glyphicon glyphicon-book"></span> {{_('Recently Added')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_sorted() %}
|
{% if g.user.show_sorted() %}
|
||||||
<li class="dropdown">
|
<li id="nav_sort" class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
||||||
<span class="glyphicon glyphicon-sort-by-attributes"></span>{{_('Sorted Books')}}
|
<span class="glyphicon glyphicon-sort-by-attributes"></span>{{_('Sorted Books')}}
|
||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li {% if page == 'newest' %}class="active"{% endif %}><a href="{{url_for('newest_books')}}">{{_('Sort By')}} {{_('Newest')}}</a></li>
|
<li id="nav_sort_old" {% if page == 'newest' %}class="active"{% endif %}><a href="{{url_for('newest_books')}}">{{_('Sort By')}} {{_('Newest')}}</a></li>
|
||||||
<li {% if page == 'oldest' %}class="active"{% endif %}><a href="{{url_for('oldest_books')}}">{{_('Sort By')}} {{_('Oldest')}}</a></li>
|
<li id="nav_sort_new" {% if page == 'oldest' %}class="active"{% endif %}><a href="{{url_for('oldest_books')}}">{{_('Sort By')}} {{_('Oldest')}}</a></li>
|
||||||
<li {% if page == 'a-z' %}class="active"{% endif %}><a href="{{url_for('titles_ascending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Ascending')}})</a></li>
|
<li id="nav_sort_asc" {% if page == 'a-z' %}class="active"{% endif %}><a href="{{url_for('titles_ascending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Ascending')}})</a></li>
|
||||||
<li {% if page == 'z-a' %}class="active"{% endif %}><a href="{{url_for('titles_descending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Descending')}})</a></li>
|
<li id="nav_sort_desc" {% if page == 'z-a' %}class="active"{% endif %}><a href="{{url_for('titles_descending')}}">{{_('Sort By')}} {{_('Title')}} ({{_('Descending')}})</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
@ -139,13 +139,13 @@
|
|||||||
<li id="nav_hot" {% if page == 'hot' %}class="active"{% endif %}><a href="{{url_for('hot_books')}}"><span class="glyphicon glyphicon-fire"></span>{{_('Hot Books')}}</a></li>
|
<li id="nav_hot" {% if page == 'hot' %}class="active"{% endif %}><a href="{{url_for('hot_books')}}"><span class="glyphicon glyphicon-fire"></span>{{_('Hot Books')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_best_rated_books() %}
|
{% if g.user.show_best_rated_books() %}
|
||||||
<li {% if page == 'rated' %}class="active"{% endif %}><a href="{{url_for('best_rated_books')}}"><span class="glyphicon glyphicon-star"></span>{{_('Best rated Books')}}</a></li>
|
<li id="nav_rated" {% if page == 'rated' %}class="active"{% endif %}><a href="{{url_for('best_rated_books')}}"><span class="glyphicon glyphicon-star"></span>{{_('Best rated Books')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_read_and_unread() %}
|
{% if g.user.show_read_and_unread() %}
|
||||||
{% if not g.user.is_anonymous %}
|
{% if not g.user.is_anonymous %}
|
||||||
<li {% if page == 'read' %}class="active"{% endif %}><a href="{{url_for('read_books')}}"><span class="glyphicon glyphicon-eye-open"></span>{{_('Read Books')}}</a></li>
|
<li id="nav_read" {% if page == 'read' %}class="active"{% endif %}><a href="{{url_for('read_books')}}"><span class="glyphicon glyphicon-eye-open"></span>{{_('Read Books')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
<li {% if page == 'read' %}class="active"{% endif %}><a href="{{url_for('unread_books')}}"><span class="glyphicon glyphicon-eye-close"></span>{{_('Unread Books')}}</a></li>
|
<li id="nav_unread" {% if page == 'read' %}class="active"{% endif %}><a href="{{url_for('unread_books')}}"><span class="glyphicon glyphicon-eye-close"></span>{{_('Unread Books')}}</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
{% if g.user.show_random_books() %}
|
{% if g.user.show_random_books() %}
|
||||||
<li id="nav_rand" {% if page == 'discover' %}class="active"{% endif %}><a href="{{url_for('discover')}}"><span class="glyphicon glyphicon-random"></span>{{_('Discover')}}</a></li>
|
<li id="nav_rand" {% if page == 'discover' %}class="active"{% endif %}><a href="{{url_for('discover')}}"><span class="glyphicon glyphicon-random"></span>{{_('Discover')}}</a></li>
|
||||||
@ -165,11 +165,11 @@
|
|||||||
{% if g.user.is_authenticated or g.user.is_anonymous %}
|
{% if g.user.is_authenticated or g.user.is_anonymous %}
|
||||||
<li class="nav-head hidden-xs">{{_('Public Shelves')}}</li>
|
<li class="nav-head hidden-xs">{{_('Public Shelves')}}</li>
|
||||||
{% for shelf in g.public_shelfes %}
|
{% for shelf in g.public_shelfes %}
|
||||||
<li><a href="{{url_for('show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list"></span>{{shelf.name}}</a></li>
|
<li><a href="{{url_for('show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list public_shelf"></span>{{shelf.name|shortentitle(40)}}</a></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<li class="nav-head hidden-xs">{{_('Your Shelves')}}</li>
|
<li class="nav-head hidden-xs">{{_('Your Shelves')}}</li>
|
||||||
{% for shelf in g.user.shelf %}
|
{% for shelf in g.user.shelf %}
|
||||||
<li><a href="{{url_for('show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list"></span>{{shelf.name}}</a></li>
|
<li><a href="{{url_for('show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list private_shelf"></span>{{shelf.name|shortentitle(40)}}</a></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if not g.user.is_anonymous %}
|
{% if not g.user.is_anonymous %}
|
||||||
<li id="nav_createshelf" class="create-shelf"><a href="{{url_for('create_shelf')}}">{{_('Create a Shelf')}}</a></li>
|
<li id="nav_createshelf" class="create-shelf"><a href="{{url_for('create_shelf')}}">{{_('Create a Shelf')}}</a></li>
|
||||||
|
@ -7,15 +7,11 @@
|
|||||||
<label for="nickname">{{_('Username')}}</label>
|
<label for="nickname">{{_('Username')}}</label>
|
||||||
<input type="text" class="form-control" id="nickname" name="nickname" placeholder="{{_('Choose a username')}}" required>
|
<input type="text" class="form-control" id="nickname" name="nickname" placeholder="{{_('Choose a username')}}" required>
|
||||||
</div>
|
</div>
|
||||||
<!--div class="form-group required">
|
|
||||||
<label for="password">{{_('Password')}}</label>
|
|
||||||
<input type="password" class="form-control" id="password" name="password" placeholder="{{_('Choose a password')}}" required>
|
|
||||||
</div-->
|
|
||||||
<div class="form-group required">
|
<div class="form-group required">
|
||||||
<label for="email">{{_('E-mail address')}}</label>
|
<label for="email">{{_('E-mail address')}}</label>
|
||||||
<input type="email" class="form-control" id="email" name="email" placeholder="{{_('Your email address')}}" required>
|
<input type="email" class="form-control" id="email" name="email" placeholder="{{_('Your email address')}}" required>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary">{{_('Register')}}</button>
|
<button type="submit" id="submit" class="btn btn-primary">{{_('Register')}}</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% if error %}
|
{% if error %}
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
<h2>{{title}}</h2>
|
<h2>{{title}}</h2>
|
||||||
{% if g.user.is_authenticated %}
|
{% if g.user.is_authenticated %}
|
||||||
{% if (g.user.role_edit_shelfs() and shelf.is_public ) or not shelf.is_public %}
|
{% if (g.user.role_edit_shelfs() and shelf.is_public ) or not shelf.is_public %}
|
||||||
<div data-toggle="modal" data-target="#DeleteShelfDialog" class="btn btn-danger">{{ _('Delete this Shelf') }} </div>
|
<div id="delete_shelf" data-toggle="modal" data-target="#DeleteShelfDialog" class="btn btn-danger">{{ _('Delete this Shelf') }} </div>
|
||||||
<a href="{{ url_for('edit_shelf', shelf_id=shelf.id) }}" class="btn btn-primary">{{ _('Edit Shelf') }} </a>
|
<a id="edit_shelf" href="{{ url_for('edit_shelf', shelf_id=shelf.id) }}" class="btn btn-primary">{{ _('Edit Shelf') }} </a>
|
||||||
<a href="{{ url_for('order_shelf', shelf_id=shelf.id) }}" class="btn btn-primary">{{ _('Change order') }} </a>
|
<a id="order_shelf" href="{{ url_for('order_shelf', shelf_id=shelf.id) }}" class="btn btn-primary">{{ _('Change order') }} </a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -14,11 +14,13 @@
|
|||||||
{% for entry in entries %}
|
{% for entry in entries %}
|
||||||
<div class="col-sm-3 col-lg-2 col-xs-6 book">
|
<div class="col-sm-3 col-lg-2 col-xs-6 book">
|
||||||
<div class="cover">
|
<div class="cover">
|
||||||
{% if entry.has_cover is defined %}
|
|
||||||
<a href="{{ url_for('show_book', book_id=entry.id) }}" data-toggle="modal" data-target="#bookDetailsModal" data-remote="false">
|
<a href="{{ url_for('show_book', book_id=entry.id) }}" data-toggle="modal" data-target="#bookDetailsModal" data-remote="false">
|
||||||
<img src="{{ url_for('get_cover', cover_path=entry.path.replace('\\','/')) }}" />
|
{% if entry.has_cover %}
|
||||||
</a>
|
<img src="{{ url_for('get_cover', cover_path=entry.path.replace('\\','/')) }}" alt="{{ entry.title }}" />
|
||||||
|
{% else %}
|
||||||
|
<img src="{{ url_for('static', filename='generic_cover.jpg') }}" alt="{{ entry.title }}" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="meta">
|
<div class="meta">
|
||||||
<p class="title">{{entry.title|shortentitle}}</p>
|
<p class="title">{{entry.title|shortentitle}}</p>
|
||||||
@ -56,7 +58,7 @@
|
|||||||
<div class="modal-body text-center">
|
<div class="modal-body text-center">
|
||||||
<span>{{_('Shelf will be lost for everybody and forever!')}}</span>
|
<span>{{_('Shelf will be lost for everybody and forever!')}}</span>
|
||||||
<p></p>
|
<p></p>
|
||||||
<a href="{{ url_for('delete_shelf', shelf_id=shelf.id) }}" class="btn btn-danger">{{_('Ok')}}</a>
|
<a id="confirm" href="{{ url_for('delete_shelf', shelf_id=shelf.id) }}" class="btn btn-danger">{{_('Ok')}}</a>
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{_('Back')}}</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">{{_('Back')}}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<button type="submit" class="btn btn-default">{{_('Submit')}}</button>
|
<button type="submit" class="btn btn-default" id="submit">{{_('Submit')}}</button>
|
||||||
{% if shelf.id != None %}
|
{% if shelf.id != None %}
|
||||||
<a href="{{ url_for('show_shelf', shelf_id=shelf.id) }}" class="btn btn-default">{{_('Back')}}</a>
|
<a href="{{ url_for('show_shelf', shelf_id=shelf.id) }}" class="btn btn-default">{{_('Back')}}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -22,8 +22,6 @@
|
|||||||
<input type="password" class="form-control" name="password" id="password" value="" autocomplete="off">
|
<input type="password" class="form-control" name="password" id="password" value="" autocomplete="off">
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="kindle_mail">{{_('Kindle E-Mail')}}</label>
|
<label for="kindle_mail">{{_('Kindle E-Mail')}}</label>
|
||||||
@ -142,7 +140,7 @@
|
|||||||
{% if g.user and g.user.role_admin() and not profile and not new_user and not content.role_anonymous() %}
|
{% if g.user and g.user.role_admin() and not profile and not new_user and not content.role_anonymous() %}
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" name="delete"> {{_('Delete this user')}}
|
<input type="checkbox" id="delete" name="delete"> {{_('Delete this user')}}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -151,8 +149,8 @@
|
|||||||
<button type="submit" id="submit" class="btn btn-default">{{_('Submit')}}</button>
|
<button type="submit" id="submit" class="btn btn-default">{{_('Submit')}}</button>
|
||||||
{% if not profile %}
|
{% if not profile %}
|
||||||
<a href="{{ url_for('admin') }}" id="back" class="btn btn-default">{{_('Back')}}</a>
|
<a href="{{ url_for('admin') }}" id="back" class="btn btn-default">{{_('Back')}}</a>
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% if downloads %}
|
{% if downloads %}
|
||||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
16755
cps/translations/iso639.pickle
Normal file
16755
cps/translations/iso639.pickle
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -3,13 +3,11 @@
|
|||||||
# This file is distributed under the same license as the Calibre-Web
|
# This file is distributed under the same license as the Calibre-Web
|
||||||
# project.
|
# project.
|
||||||
# FIRST AUTHOR white<space_white@yahoo.com>, 2017.
|
# FIRST AUTHOR white<space_white@yahoo.com>, 2017.
|
||||||
# # Translation template file..
|
|
||||||
# Copyright (C) 2011 Kovid Goyal
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Calibre-Web\n"
|
"Project-Id-Version: Calibre-Web\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
|
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
|
||||||
"POT-Creation-Date: 2018-09-08 14:49+0200\n"
|
"POT-Creation-Date: 2018-09-14 21:11+0200\n"
|
||||||
"PO-Revision-Date: 2018-02-07 02:20-0500\n"
|
"PO-Revision-Date: 2018-02-07 02:20-0500\n"
|
||||||
"Last-Translator: white <space_white@yahoo.com>\n"
|
"Last-Translator: white <space_white@yahoo.com>\n"
|
||||||
"Language: ja\n"
|
"Language: ja\n"
|
||||||
@ -116,707 +114,750 @@ msgstr ""
|
|||||||
msgid "Unrar binary file not found"
|
msgid "Unrar binary file not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1114
|
#: cps/web.py:1112 cps/web.py:2778
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1121 cps/web.py:1152
|
||||||
|
msgid "HTTP Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1123 cps/web.py:1154
|
||||||
|
msgid "Connection error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1125 cps/web.py:1156
|
||||||
|
msgid "Timeout while establishing connection"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1127 cps/web.py:1158
|
||||||
|
msgid "General error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1133
|
||||||
|
msgid "Unexpected data while reading update information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1140
|
||||||
|
msgid "No update available. You already have the latest version installed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1165
|
||||||
|
msgid "A new update is available. Click on the button below to update to the latest version."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1215
|
||||||
|
msgid "Could not fetch update information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1230
|
||||||
msgid "Requesting update package"
|
msgid "Requesting update package"
|
||||||
msgstr "更新パッケージを要求します"
|
msgstr "更新パッケージを要求します"
|
||||||
|
|
||||||
#: cps/web.py:1115
|
#: cps/web.py:1231
|
||||||
msgid "Downloading update package"
|
msgid "Downloading update package"
|
||||||
msgstr "更新パッケージをダウンロードします"
|
msgstr "更新パッケージをダウンロードします"
|
||||||
|
|
||||||
#: cps/web.py:1116
|
#: cps/web.py:1232
|
||||||
msgid "Unzipping update package"
|
msgid "Unzipping update package"
|
||||||
msgstr "更新パッケージをZIP解凍します"
|
msgstr "更新パッケージをZIP解凍します"
|
||||||
|
|
||||||
#: cps/web.py:1117
|
#: cps/web.py:1233
|
||||||
msgid "Files are replaced"
|
msgid "Files are replaced"
|
||||||
msgstr "ファイルを書き換えました"
|
msgstr "ファイルを書き換えました"
|
||||||
|
|
||||||
#: cps/web.py:1118
|
#: cps/web.py:1234
|
||||||
msgid "Database connections are closed"
|
msgid "Database connections are closed"
|
||||||
msgstr "データベースの接続が閉じられました"
|
msgstr "データベースの接続が閉じられました"
|
||||||
|
|
||||||
#: cps/web.py:1119
|
#: cps/web.py:1235
|
||||||
msgid "Server is stopped"
|
msgid "Server is stopped"
|
||||||
msgstr "サーバがシャットダウンされました"
|
msgstr "サーバがシャットダウンされました"
|
||||||
|
|
||||||
#: cps/web.py:1120
|
#: cps/web.py:1236
|
||||||
msgid "Update finished, please press okay and reload page"
|
msgid "Update finished, please press okay and reload page"
|
||||||
msgstr "更新完了、Okayまたは再読み込みボタンを押してください"
|
msgstr "更新完了、Okayまたは再読み込みボタンを押してください"
|
||||||
|
|
||||||
#: cps/web.py:1140
|
#: cps/web.py:1256
|
||||||
msgid "Recently Added Books"
|
msgid "Recently Added Books"
|
||||||
msgstr "最近追加された本"
|
msgstr "最近追加された本"
|
||||||
|
|
||||||
#: cps/web.py:1150
|
#: cps/web.py:1266
|
||||||
msgid "Newest Books"
|
msgid "Newest Books"
|
||||||
msgstr "最新の本"
|
msgstr "最新の本"
|
||||||
|
|
||||||
#: cps/web.py:1162
|
#: cps/web.py:1278
|
||||||
msgid "Oldest Books"
|
msgid "Oldest Books"
|
||||||
msgstr "最古の本"
|
msgstr "最古の本"
|
||||||
|
|
||||||
#: cps/web.py:1174
|
#: cps/web.py:1290
|
||||||
msgid "Books (A-Z)"
|
msgid "Books (A-Z)"
|
||||||
msgstr "本(A-Z)"
|
msgstr "本(A-Z)"
|
||||||
|
|
||||||
#: cps/web.py:1185
|
#: cps/web.py:1301
|
||||||
msgid "Books (Z-A)"
|
msgid "Books (Z-A)"
|
||||||
msgstr "本 (Z-A)"
|
msgstr "本 (Z-A)"
|
||||||
|
|
||||||
#: cps/web.py:1214
|
#: cps/web.py:1330
|
||||||
msgid "Hot Books (most downloaded)"
|
msgid "Hot Books (most downloaded)"
|
||||||
msgstr "有名な本(ダウンロード数)"
|
msgstr "有名な本(ダウンロード数)"
|
||||||
|
|
||||||
#: cps/web.py:1227
|
#: cps/web.py:1343
|
||||||
msgid "Best rated books"
|
msgid "Best rated books"
|
||||||
msgstr "最高評判の本"
|
msgstr "最高評判の本"
|
||||||
|
|
||||||
#: cps/templates/index.xml:36 cps/web.py:1239
|
#: cps/templates/index.xml:36 cps/web.py:1355
|
||||||
msgid "Random Books"
|
msgid "Random Books"
|
||||||
msgstr "任意の本"
|
msgstr "任意の本"
|
||||||
|
|
||||||
#: cps/web.py:1254
|
#: cps/web.py:1370
|
||||||
msgid "Author list"
|
msgid "Author list"
|
||||||
msgstr "著者リスト"
|
msgstr "著者リスト"
|
||||||
|
|
||||||
#: cps/web.py:1266 cps/web.py:1329 cps/web.py:1484 cps/web.py:2036
|
#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152
|
||||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||||
msgstr "電子本を開けません。ファイルは存在しないまたはアクセスできません"
|
msgstr "電子本を開けません。ファイルは存在しないまたはアクセスできません"
|
||||||
|
|
||||||
#: cps/templates/index.xml:73 cps/web.py:1313
|
#: cps/templates/index.xml:73 cps/web.py:1429
|
||||||
msgid "Series list"
|
msgid "Series list"
|
||||||
msgstr "叢書リスト"
|
msgstr "叢書リスト"
|
||||||
|
|
||||||
#: cps/web.py:1327
|
#: cps/web.py:1443
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Series: %(serie)s"
|
msgid "Series: %(serie)s"
|
||||||
msgstr "叢書: %(serie)s"
|
msgstr "叢書: %(serie)s"
|
||||||
|
|
||||||
#: cps/web.py:1354
|
#: cps/web.py:1470
|
||||||
msgid "Available languages"
|
msgid "Available languages"
|
||||||
msgstr "利用可能な言語"
|
msgstr "利用可能な言語"
|
||||||
|
|
||||||
#: cps/web.py:1371
|
#: cps/web.py:1487
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Language: %(name)s"
|
msgid "Language: %(name)s"
|
||||||
msgstr "言語: %(name)s"
|
msgstr "言語: %(name)s"
|
||||||
|
|
||||||
#: cps/templates/index.xml:66 cps/web.py:1382
|
#: cps/templates/index.xml:66 cps/web.py:1498
|
||||||
msgid "Category list"
|
msgid "Category list"
|
||||||
msgstr "カテゴリーリスト"
|
msgstr "カテゴリーリスト"
|
||||||
|
|
||||||
#: cps/web.py:1396
|
#: cps/web.py:1512
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Category: %(name)s"
|
msgid "Category: %(name)s"
|
||||||
msgstr "カテゴリー: %(name)s"
|
msgstr "カテゴリー: %(name)s"
|
||||||
|
|
||||||
#: cps/templates/layout.html:71 cps/web.py:1535
|
#: cps/templates/layout.html:71 cps/web.py:1651
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1565
|
#: cps/web.py:1681
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "統計"
|
msgstr "統計"
|
||||||
|
|
||||||
#: cps/web.py:1670
|
#: cps/web.py:1786
|
||||||
msgid ""
|
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
|
||||||
"Callback domain is not verified, please follow steps to verify domain in "
|
|
||||||
"google developer console"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1746
|
#: cps/web.py:1861
|
||||||
msgid "Server restarted, please reload page"
|
msgid "Server restarted, please reload page"
|
||||||
msgstr "サーバを再起動しました、ページを再読み込みしてください"
|
msgstr "サーバを再起動しました、ページを再読み込みしてください"
|
||||||
|
|
||||||
#: cps/web.py:1749
|
#: cps/web.py:1864
|
||||||
msgid "Performing shutdown of server, please close window"
|
msgid "Performing shutdown of server, please close window"
|
||||||
msgstr "サーバをシャットダウンします、ページを閉じてください"
|
msgstr "サーバをシャットダウンします、ページを閉じてください"
|
||||||
|
|
||||||
#: cps/web.py:1767
|
#: cps/web.py:1883
|
||||||
msgid "Update done"
|
msgid "Update done"
|
||||||
msgstr "更新完了"
|
msgstr "更新完了"
|
||||||
|
|
||||||
#: cps/web.py:1837
|
#: cps/web.py:1953
|
||||||
msgid "Published after "
|
msgid "Published after "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1844
|
#: cps/web.py:1960
|
||||||
msgid "Published before "
|
msgid "Published before "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1858
|
#: cps/web.py:1974
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rating <= %(rating)s"
|
msgid "Rating <= %(rating)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1860
|
#: cps/web.py:1976
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rating >= %(rating)s"
|
msgid "Rating >= %(rating)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1919 cps/web.py:1928
|
#: cps/web.py:2035 cps/web.py:2044
|
||||||
msgid "search"
|
msgid "search"
|
||||||
msgstr "検索"
|
msgstr "検索"
|
||||||
|
|
||||||
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
||||||
#: cps/templates/layout.html:146 cps/web.py:1995
|
#: cps/templates/layout.html:146 cps/web.py:2111
|
||||||
msgid "Read Books"
|
msgid "Read Books"
|
||||||
msgstr "既読の本"
|
msgstr "既読の本"
|
||||||
|
|
||||||
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
||||||
#: cps/templates/layout.html:148 cps/web.py:1998
|
#: cps/templates/layout.html:148 cps/web.py:2114
|
||||||
msgid "Unread Books"
|
msgid "Unread Books"
|
||||||
msgstr "未読の本"
|
msgstr "未読の本"
|
||||||
|
|
||||||
#: cps/web.py:2046 cps/web.py:2048 cps/web.py:2050 cps/web.py:2062
|
#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178
|
||||||
msgid "Read a Book"
|
msgid "Read a Book"
|
||||||
msgstr "本を読む"
|
msgstr "本を読む"
|
||||||
|
|
||||||
#: cps/web.py:2128 cps/web.py:3006
|
#: cps/web.py:2244 cps/web.py:3129
|
||||||
msgid "Please fill out all fields!"
|
msgid "Please fill out all fields!"
|
||||||
msgstr "全ての項目を入力してください"
|
msgstr "全ての項目を入力してください"
|
||||||
|
|
||||||
#: cps/web.py:2129 cps/web.py:2150 cps/web.py:2154 cps/web.py:2159
|
#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275
|
||||||
#: cps/web.py:2161
|
#: cps/web.py:2277
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr "登録"
|
msgstr "登録"
|
||||||
|
|
||||||
#: cps/web.py:2149 cps/web.py:3222
|
#: cps/web.py:2265 cps/web.py:3345
|
||||||
msgid "An unknown error occurred. Please try again later."
|
msgid "An unknown error occurred. Please try again later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2152
|
#: cps/web.py:2268
|
||||||
msgid "Your e-mail is not allowed to register"
|
msgid "Your e-mail is not allowed to register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2155
|
#: cps/web.py:2271
|
||||||
msgid "Confirmation e-mail was send to your e-mail account."
|
msgid "Confirmation e-mail was send to your e-mail account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2158
|
#: cps/web.py:2274
|
||||||
msgid "This username or e-mail address is already in use."
|
msgid "This username or e-mail address is already in use."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2175 cps/web.py:2271
|
#: cps/web.py:2291 cps/web.py:2387
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "you are now logged in as: '%(nickname)s'"
|
msgid "you are now logged in as: '%(nickname)s'"
|
||||||
msgstr "%(nickname)s としてログインします"
|
msgstr "%(nickname)s としてログインします"
|
||||||
|
|
||||||
#: cps/web.py:2180
|
#: cps/web.py:2296
|
||||||
msgid "Wrong Username or Password"
|
msgid "Wrong Username or Password"
|
||||||
msgstr "ユーザ名またはパスワードは間違いました"
|
msgstr "ユーザ名またはパスワードは間違いました"
|
||||||
|
|
||||||
#: cps/web.py:2186 cps/web.py:2207
|
#: cps/web.py:2302 cps/web.py:2323
|
||||||
msgid "login"
|
msgid "login"
|
||||||
msgstr "ログイン"
|
msgstr "ログイン"
|
||||||
|
|
||||||
#: cps/web.py:2219 cps/web.py:2250
|
#: cps/web.py:2335 cps/web.py:2366
|
||||||
msgid "Token not found"
|
msgid "Token not found"
|
||||||
msgstr "トークンは見つかりません"
|
msgstr "トークンは見つかりません"
|
||||||
|
|
||||||
#: cps/web.py:2227 cps/web.py:2258
|
#: cps/web.py:2343 cps/web.py:2374
|
||||||
msgid "Token has expired"
|
msgid "Token has expired"
|
||||||
msgstr "トークンは失効されました"
|
msgstr "トークンは失効されました"
|
||||||
|
|
||||||
#: cps/web.py:2235
|
#: cps/web.py:2351
|
||||||
msgid "Success! Please return to your device"
|
msgid "Success! Please return to your device"
|
||||||
msgstr "成功しまた!端末に戻ってください"
|
msgstr "成功しまた!端末に戻ってください"
|
||||||
|
|
||||||
#: cps/web.py:2285
|
#: cps/web.py:2401
|
||||||
msgid "Please configure the SMTP mail settings first..."
|
msgid "Please configure the SMTP mail settings first..."
|
||||||
msgstr "SMTPメールをまず設定してください"
|
msgstr "SMTPメールをまず設定してください"
|
||||||
|
|
||||||
#: cps/web.py:2289
|
#: cps/web.py:2405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book successfully queued for sending to %(kindlemail)s"
|
msgid "Book successfully queued for sending to %(kindlemail)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2293
|
#: cps/web.py:2409
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error sending this book: %(res)s"
|
msgid "There was an error sending this book: %(res)s"
|
||||||
msgstr "%(res)s を送信する際にエーラが発生しました"
|
msgstr "%(res)s を送信する際にエーラが発生しました"
|
||||||
|
|
||||||
#: cps/web.py:2295 cps/web.py:3060
|
#: cps/web.py:2411 cps/web.py:3183
|
||||||
msgid "Please configure your kindle e-mail address first..."
|
msgid "Please configure your kindle e-mail address first..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2339
|
#: cps/web.py:2455
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book has been added to shelf: %(sname)s"
|
msgid "Book has been added to shelf: %(sname)s"
|
||||||
msgstr "本 %(sname)s を書架に追加されました"
|
msgstr "本 %(sname)s を書架に追加されました"
|
||||||
|
|
||||||
#: cps/web.py:2350
|
#: cps/web.py:2466
|
||||||
msgid "Invalid shelf specified"
|
msgid "Invalid shelf specified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2355
|
#: cps/web.py:2471
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2360
|
#: cps/web.py:2476
|
||||||
msgid "User is not allowed to edit public shelves"
|
msgid "User is not allowed to edit public shelves"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2378
|
#: cps/web.py:2494
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Books are already part of the shelf: %(name)s"
|
msgid "Books are already part of the shelf: %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2392
|
#: cps/web.py:2508
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Books have been added to shelf: %(sname)s"
|
msgid "Books have been added to shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2394
|
#: cps/web.py:2510
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not add books to shelf: %(sname)s"
|
msgid "Could not add books to shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2431
|
#: cps/web.py:2547
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book has been removed from shelf: %(sname)s"
|
msgid "Book has been removed from shelf: %(sname)s"
|
||||||
msgstr "本 %(sname)s を書架から除去されました"
|
msgstr "本 %(sname)s を書架から除去されました"
|
||||||
|
|
||||||
#: cps/web.py:2437
|
#: cps/web.py:2553
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2457 cps/web.py:2481
|
#: cps/web.py:2573 cps/web.py:2597
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A shelf with the name '%(title)s' already exists."
|
msgid "A shelf with the name '%(title)s' already exists."
|
||||||
msgstr "名前を使った書架 '%(title)s' は既に存在しました"
|
msgstr "名前を使った書架 '%(title)s' は既に存在しました"
|
||||||
|
|
||||||
#: cps/web.py:2462
|
#: cps/web.py:2578
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf %(title)s created"
|
msgid "Shelf %(title)s created"
|
||||||
msgstr "書架%(title)s は作成されました"
|
msgstr "書架%(title)s は作成されました"
|
||||||
|
|
||||||
#: cps/web.py:2464 cps/web.py:2492
|
#: cps/web.py:2580 cps/web.py:2608
|
||||||
msgid "There was an error"
|
msgid "There was an error"
|
||||||
msgstr "エーラが発生しました"
|
msgstr "エーラが発生しました"
|
||||||
|
|
||||||
#: cps/web.py:2465 cps/web.py:2467
|
#: cps/web.py:2581 cps/web.py:2583
|
||||||
msgid "create a shelf"
|
msgid "create a shelf"
|
||||||
msgstr "書架を作成する"
|
msgstr "書架を作成する"
|
||||||
|
|
||||||
#: cps/web.py:2490
|
#: cps/web.py:2606
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf %(title)s changed"
|
msgid "Shelf %(title)s changed"
|
||||||
msgstr "書架 %(title)s 変わりました"
|
msgstr "書架 %(title)s 変わりました"
|
||||||
|
|
||||||
#: cps/web.py:2493 cps/web.py:2495
|
#: cps/web.py:2609 cps/web.py:2611
|
||||||
msgid "Edit a shelf"
|
msgid "Edit a shelf"
|
||||||
msgstr "書架を編集する"
|
msgstr "書架を編集する"
|
||||||
|
|
||||||
#: cps/web.py:2516
|
#: cps/web.py:2632
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "successfully deleted shelf %(name)s"
|
msgid "successfully deleted shelf %(name)s"
|
||||||
msgstr "%(name)s の書架を削除されました"
|
msgstr "%(name)s の書架を削除されました"
|
||||||
|
|
||||||
#: cps/web.py:2538
|
#: cps/web.py:2659
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf: '%(name)s'"
|
msgid "Shelf: '%(name)s'"
|
||||||
msgstr "書架: '%(name)s'"
|
msgstr "書架: '%(name)s'"
|
||||||
|
|
||||||
#: cps/web.py:2541
|
#: cps/web.py:2662
|
||||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||||
msgstr "書架を開けません。書架は存在しないまたはアクセスできません"
|
msgstr "書架を開けません。書架は存在しないまたはアクセスできません"
|
||||||
|
|
||||||
#: cps/web.py:2572
|
#: cps/web.py:2693
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Change order of Shelf: '%(name)s'"
|
msgid "Change order of Shelf: '%(name)s'"
|
||||||
msgstr "'%(name)s' の書架の順番を入れ替える"
|
msgstr "'%(name)s' の書架の順番を入れ替える"
|
||||||
|
|
||||||
#: cps/web.py:2601 cps/web.py:3012
|
#: cps/web.py:2722 cps/web.py:3135
|
||||||
msgid "E-mail is not from valid domain"
|
msgid "E-mail is not from valid domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2603 cps/web.py:2644 cps/web.py:2647
|
#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s's profile"
|
msgid "%(name)s's profile"
|
||||||
msgstr "%(name)sのプロファイル"
|
msgstr "%(name)sのプロファイル"
|
||||||
|
|
||||||
#: cps/web.py:2642
|
#: cps/web.py:2763
|
||||||
msgid "Found an existing account for this e-mail address."
|
msgid "Found an existing account for this e-mail address."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2645
|
#: cps/web.py:2766
|
||||||
msgid "Profile updated"
|
msgid "Profile updated"
|
||||||
msgstr "プロファイルが更新されました"
|
msgstr "プロファイルが更新されました"
|
||||||
|
|
||||||
#: cps/web.py:2657
|
#: cps/web.py:2794
|
||||||
msgid "Unknown"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cps/web.py:2671
|
|
||||||
msgid "Admin page"
|
msgid "Admin page"
|
||||||
msgstr "管理者ページ"
|
msgstr "管理者ページ"
|
||||||
|
|
||||||
#: cps/web.py:2749 cps/web.py:2922
|
#: cps/web.py:2872 cps/web.py:3045
|
||||||
msgid "Calibre-Web configuration updated"
|
msgid "Calibre-Web configuration updated"
|
||||||
msgstr "Calibre-Web 設定を更新されました"
|
msgstr "Calibre-Web 設定を更新されました"
|
||||||
|
|
||||||
#: cps/templates/admin.html:91 cps/web.py:2762
|
#: cps/templates/admin.html:100 cps/web.py:2885
|
||||||
msgid "UI Configuration"
|
msgid "UI Configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2780
|
#: cps/web.py:2903
|
||||||
msgid "Import of optional Google Drive requirements missing"
|
msgid "Import of optional Google Drive requirements missing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2783
|
#: cps/web.py:2906
|
||||||
msgid "client_secrets.json is missing or not readable"
|
msgid "client_secrets.json is missing or not readable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2788 cps/web.py:2815
|
#: cps/web.py:2911 cps/web.py:2938
|
||||||
msgid "client_secrets.json is not configured for web application"
|
msgid "client_secrets.json is not configured for web application"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:90 cps/web.py:2818 cps/web.py:2844 cps/web.py:2856
|
#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
|
||||||
#: cps/web.py:2898 cps/web.py:2913 cps/web.py:2930 cps/web.py:2937
|
#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
|
||||||
#: cps/web.py:2954
|
#: cps/web.py:3077
|
||||||
msgid "Basic Configuration"
|
msgid "Basic Configuration"
|
||||||
msgstr "基本設定"
|
msgstr "基本設定"
|
||||||
|
|
||||||
#: cps/web.py:2841
|
#: cps/web.py:2964
|
||||||
msgid "Keyfile location is not valid, please enter correct path"
|
msgid "Keyfile location is not valid, please enter correct path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2853
|
#: cps/web.py:2976
|
||||||
msgid "Certfile location is not valid, please enter correct path"
|
msgid "Certfile location is not valid, please enter correct path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2895
|
#: cps/web.py:3018
|
||||||
msgid "Logfile location is not valid, please enter correct path"
|
msgid "Logfile location is not valid, please enter correct path"
|
||||||
msgstr "ログファイルの場所は不適切です。正しい場所を入力してください"
|
msgstr "ログファイルの場所は不適切です。正しい場所を入力してください"
|
||||||
|
|
||||||
#: cps/web.py:2934
|
#: cps/web.py:3057
|
||||||
msgid "DB location is not valid, please enter correct path"
|
msgid "DB location is not valid, please enter correct path"
|
||||||
msgstr "データベースの場所は不適切です。正しい場所を入力してください"
|
msgstr "データベースの場所は不適切です。正しい場所を入力してください"
|
||||||
|
|
||||||
#: cps/templates/admin.html:31 cps/web.py:3008 cps/web.py:3014 cps/web.py:3030
|
#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153
|
||||||
msgid "Add new user"
|
msgid "Add new user"
|
||||||
msgstr "新規ユーザ追加"
|
msgstr "新規ユーザ追加"
|
||||||
|
|
||||||
#: cps/web.py:3020
|
#: cps/web.py:3143
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(user)s' created"
|
msgid "User '%(user)s' created"
|
||||||
msgstr "ユーザ '%(user)s' が作成されました"
|
msgstr "ユーザ '%(user)s' が作成されました"
|
||||||
|
|
||||||
#: cps/web.py:3024
|
#: cps/web.py:3147
|
||||||
msgid "Found an existing account for this e-mail address or nickname."
|
msgid "Found an existing account for this e-mail address or nickname."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3048 cps/web.py:3062
|
#: cps/web.py:3171 cps/web.py:3185
|
||||||
msgid "E-mail server settings updated"
|
msgid "E-mail server settings updated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3055
|
#: cps/web.py:3178
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Test e-mail successfully send to %(kindlemail)s"
|
msgid "Test e-mail successfully send to %(kindlemail)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3058
|
#: cps/web.py:3181
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error sending the Test e-mail: %(res)s"
|
msgid "There was an error sending the Test e-mail: %(res)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3063
|
#: cps/web.py:3186
|
||||||
msgid "Edit e-mail server settings"
|
msgid "Edit e-mail server settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3088
|
#: cps/web.py:3211
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(nick)s' deleted"
|
msgid "User '%(nick)s' deleted"
|
||||||
msgstr "ユーザ '%(nick)s' 削除されました"
|
msgstr "ユーザ '%(nick)s' 削除されました"
|
||||||
|
|
||||||
#: cps/web.py:3197
|
#: cps/web.py:3320
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(nick)s' updated"
|
msgid "User '%(nick)s' updated"
|
||||||
msgstr "ユーザ '%(nick)s' 更新されました"
|
msgstr "ユーザ '%(nick)s' 更新されました"
|
||||||
|
|
||||||
#: cps/web.py:3200
|
#: cps/web.py:3323
|
||||||
msgid "An unknown error occured."
|
msgid "An unknown error occured."
|
||||||
msgstr "不明のエーラが発生しました"
|
msgstr "不明のエーラが発生しました"
|
||||||
|
|
||||||
#: cps/web.py:3202
|
#: cps/web.py:3325
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Edit User %(nick)s"
|
msgid "Edit User %(nick)s"
|
||||||
msgstr "ユーザ編集 %(nick)s"
|
msgstr "ユーザ編集 %(nick)s"
|
||||||
|
|
||||||
#: cps/web.py:3219
|
#: cps/web.py:3342
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Password for user %(user)s reset"
|
msgid "Password for user %(user)s reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3239
|
#: cps/web.py:3362
|
||||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||||
msgstr "電子本を開けません。ファイルは存在しないまたはアクセスできません"
|
msgstr "電子本を開けません。ファイルは存在しないまたはアクセスできません"
|
||||||
|
|
||||||
#: cps/web.py:3270 cps/web.py:3546 cps/web.py:3551 cps/web.py:3706
|
#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
|
||||||
msgid "edit metadata"
|
msgid "edit metadata"
|
||||||
msgstr "メタデータを編集します"
|
msgstr "メタデータを編集します"
|
||||||
|
|
||||||
#: cps/web.py:3284 cps/web.py:3576
|
#: cps/web.py:3401 cps/web.py:3697
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
|
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
|
||||||
msgstr "ファイル拡張子 '%(ext)s' をこのサーバにアップロードする許可はありません"
|
msgstr "ファイル拡張子 '%(ext)s' をこのサーバにアップロードする許可はありません"
|
||||||
|
|
||||||
#: cps/web.py:3288 cps/web.py:3580
|
#: cps/web.py:3405 cps/web.py:3701
|
||||||
msgid "File to be uploaded must have an extension"
|
msgid "File to be uploaded must have an extension"
|
||||||
msgstr "ファイルをアップロードするために拡張子が必要です"
|
msgstr "ファイルをアップロードするために拡張子が必要です"
|
||||||
|
|
||||||
#: cps/web.py:3300 cps/web.py:3600
|
#: cps/web.py:3417 cps/web.py:3721
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to create path %(path)s (Permission denied)."
|
msgid "Failed to create path %(path)s (Permission denied)."
|
||||||
msgstr "場所 %(path)s の作成を失敗しました (許可拒否)"
|
msgstr "場所 %(path)s の作成を失敗しました (許可拒否)"
|
||||||
|
|
||||||
#: cps/web.py:3305
|
#: cps/web.py:3422
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store file %(file)s."
|
msgid "Failed to store file %(file)s."
|
||||||
msgstr "フアイル %(file)s の保存を失敗しました"
|
msgstr "フアイル %(file)s の保存を失敗しました"
|
||||||
|
|
||||||
#: cps/web.py:3321
|
#: cps/web.py:3438
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File format %(ext)s added to %(book)s"
|
msgid "File format %(ext)s added to %(book)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3339
|
#: cps/web.py:3455
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3346
|
#: cps/web.py:3462
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store cover-file %(cover)s."
|
msgid "Failed to store cover-file %(cover)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3349
|
#: cps/web.py:3465
|
||||||
msgid "Cover-file is not a valid image file"
|
msgid "Cover-file is not a valid image file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3362 cps/web.py:3366
|
#: cps/web.py:3482 cps/web.py:3486
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr "不明"
|
msgstr "不明"
|
||||||
|
|
||||||
#: cps/web.py:3388
|
#: cps/web.py:3508
|
||||||
msgid "Cover is not a jpg file, can't save"
|
msgid "Cover is not a jpg file, can't save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3555
|
#: cps/web.py:3554
|
||||||
|
#, python-format
|
||||||
|
msgid "%(langname)s is not a valid language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:3676
|
||||||
msgid "Error editing book, please check logfile for details"
|
msgid "Error editing book, please check logfile for details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3605
|
#: cps/web.py:3726
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store file %(file)s (Permission denied)."
|
msgid "Failed to store file %(file)s (Permission denied)."
|
||||||
msgstr "ファイル %(file)s の保存を失敗しました (許可拒否)"
|
msgstr "ファイル %(file)s の保存を失敗しました (許可拒否)"
|
||||||
|
|
||||||
#: cps/web.py:3610
|
#: cps/web.py:3731
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to delete file %(file)s (Permission denied)."
|
msgid "Failed to delete file %(file)s (Permission denied)."
|
||||||
msgstr "ファイル %(file)s の削除を失敗しました (許可拒否)"
|
msgstr "ファイル %(file)s の削除を失敗しました (許可拒否)"
|
||||||
|
|
||||||
#: cps/web.py:3692
|
#: cps/web.py:3813
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File %(file)s uploaded"
|
msgid "File %(file)s uploaded"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3722
|
#: cps/web.py:3843
|
||||||
msgid "Source or destination format for conversion missing"
|
msgid "Source or destination format for conversion missing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3732
|
#: cps/web.py:3853
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book successfully queued for converting to %(book_format)s"
|
msgid "Book successfully queued for converting to %(book_format)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3736
|
#: cps/web.py:3857
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error converting this book: %(res)s"
|
msgid "There was an error converting this book: %(res)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:215 cps/worker.py:387
|
#: cps/worker.py:215 cps/worker.py:398
|
||||||
msgid "Started"
|
msgid "Started"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:237
|
#: cps/worker.py:251
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Convertertool %(converter)s not found"
|
msgid "Convertertool %(converter)s not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:272
|
#: cps/worker.py:287
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Ebook-converter failed: %(error)s"
|
msgid "Ebook-converter failed: %(error)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:283
|
#: cps/worker.py:298
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||||
msgstr "Kindlegen 失敗しました、エーラ %(error)s. メッセージ: %(message)s"
|
msgstr "Kindlegen 失敗しました、エーラ %(error)s. メッセージ: %(message)s"
|
||||||
|
|
||||||
#: cps/worker.py:317 cps/worker.py:377 cps/worker.py:438
|
#: cps/worker.py:355 cps/worker.py:374
|
||||||
msgid "Finished"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cps/worker.py:344 cps/worker.py:363
|
|
||||||
msgid "Waiting"
|
msgid "Waiting"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:351
|
#: cps/worker.py:362
|
||||||
msgid "This e-mail has been sent via Calibre-Web."
|
msgid "This e-mail has been sent via Calibre-Web."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:472
|
#: cps/worker.py:388 cps/worker.py:484
|
||||||
|
msgid "Finished"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/worker.py:476
|
||||||
msgid "Failed"
|
msgid "Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:4
|
#: cps/templates/admin.html:6
|
||||||
msgid "User list"
|
msgid "User list"
|
||||||
msgstr "ユーザリスト"
|
msgstr "ユーザリスト"
|
||||||
|
|
||||||
#: cps/templates/admin.html:7
|
#: cps/templates/admin.html:9
|
||||||
msgid "Nickname"
|
msgid "Nickname"
|
||||||
msgstr "通称"
|
msgstr "通称"
|
||||||
|
|
||||||
#: cps/templates/admin.html:8
|
#: cps/templates/admin.html:10
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:9
|
#: cps/templates/admin.html:11
|
||||||
msgid "Kindle"
|
msgid "Kindle"
|
||||||
msgstr "Kindle"
|
msgstr "Kindle"
|
||||||
|
|
||||||
#: cps/templates/admin.html:10
|
#: cps/templates/admin.html:12
|
||||||
msgid "DLS"
|
msgid "DLS"
|
||||||
msgstr "DLS"
|
msgstr "DLS"
|
||||||
|
|
||||||
#: cps/templates/admin.html:11 cps/templates/layout.html:74
|
#: cps/templates/admin.html:13 cps/templates/layout.html:74
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "管理者"
|
msgstr "管理者"
|
||||||
|
|
||||||
#: cps/templates/admin.html:12 cps/templates/detail.html:22
|
#: cps/templates/admin.html:14 cps/templates/detail.html:22
|
||||||
#: cps/templates/detail.html:31
|
#: cps/templates/detail.html:31
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "ダウンロード"
|
msgstr "ダウンロード"
|
||||||
|
|
||||||
#: cps/templates/admin.html:13 cps/templates/layout.html:64
|
#: cps/templates/admin.html:15 cps/templates/layout.html:64
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "アップロード"
|
msgstr "アップロード"
|
||||||
|
|
||||||
#: cps/templates/admin.html:14
|
#: cps/templates/admin.html:16
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "編集"
|
msgstr "編集"
|
||||||
|
|
||||||
#: cps/templates/admin.html:32
|
#: cps/templates/admin.html:39
|
||||||
msgid "SMTP e-mail server settings"
|
msgid "SMTP e-mail server settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:35 cps/templates/email_edit.html:11
|
#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
|
||||||
msgid "SMTP hostname"
|
msgid "SMTP hostname"
|
||||||
msgstr "SMTPホスト名"
|
msgstr "SMTPホスト名"
|
||||||
|
|
||||||
#: cps/templates/admin.html:36
|
#: cps/templates/admin.html:43
|
||||||
msgid "SMTP port"
|
msgid "SMTP port"
|
||||||
msgstr "SMTPポート"
|
msgstr "SMTPポート"
|
||||||
|
|
||||||
#: cps/templates/admin.html:37
|
#: cps/templates/admin.html:44
|
||||||
msgid "SSL"
|
msgid "SSL"
|
||||||
msgstr "SSL"
|
msgstr "SSL"
|
||||||
|
|
||||||
#: cps/templates/admin.html:38 cps/templates/email_edit.html:27
|
#: cps/templates/admin.html:45 cps/templates/email_edit.html:27
|
||||||
msgid "SMTP login"
|
msgid "SMTP login"
|
||||||
msgstr "SMTP ログイン"
|
msgstr "SMTP ログイン"
|
||||||
|
|
||||||
#: cps/templates/admin.html:39
|
#: cps/templates/admin.html:46
|
||||||
msgid "From mail"
|
msgid "From mail"
|
||||||
msgstr "メールから"
|
msgstr "メールから"
|
||||||
|
|
||||||
#: cps/templates/admin.html:48
|
#: cps/templates/admin.html:56
|
||||||
msgid "Change SMTP settings"
|
msgid "Change SMTP settings"
|
||||||
msgstr "SMTP設定を変更する"
|
msgstr "SMTP設定を変更する"
|
||||||
|
|
||||||
#: cps/templates/admin.html:50
|
#: cps/templates/admin.html:62
|
||||||
msgid "Configuration"
|
msgid "Configuration"
|
||||||
msgstr "設定"
|
msgstr "設定"
|
||||||
|
|
||||||
#: cps/templates/admin.html:53
|
#: cps/templates/admin.html:65
|
||||||
msgid "Calibre DB dir"
|
msgid "Calibre DB dir"
|
||||||
msgstr "Calibre データベースの場所"
|
msgstr "Calibre データベースの場所"
|
||||||
|
|
||||||
#: cps/templates/admin.html:57
|
#: cps/templates/admin.html:69
|
||||||
msgid "Log level"
|
msgid "Log level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:61
|
#: cps/templates/admin.html:73
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "ポート"
|
msgstr "ポート"
|
||||||
|
|
||||||
#: cps/templates/admin.html:67 cps/templates/config_view_edit.html:23
|
#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23
|
||||||
msgid "Books per page"
|
msgid "Books per page"
|
||||||
msgstr "本数毎ページ"
|
msgstr "本数毎ページ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:71
|
#: cps/templates/admin.html:83
|
||||||
msgid "Uploading"
|
msgid "Uploading"
|
||||||
msgstr "アップロード中"
|
msgstr "アップロード中"
|
||||||
|
|
||||||
#: cps/templates/admin.html:75
|
#: cps/templates/admin.html:87
|
||||||
msgid "Anonymous browsing"
|
msgid "Anonymous browsing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:79
|
#: cps/templates/admin.html:91
|
||||||
msgid "Public registration"
|
msgid "Public registration"
|
||||||
msgstr "公的登録"
|
msgstr "公的登録"
|
||||||
|
|
||||||
#: cps/templates/admin.html:83 cps/templates/remote_login.html:4
|
#: cps/templates/admin.html:95 cps/templates/remote_login.html:4
|
||||||
msgid "Remote login"
|
msgid "Remote login"
|
||||||
msgstr "遠距離ログイン"
|
msgstr "遠距離ログイン"
|
||||||
|
|
||||||
#: cps/templates/admin.html:93
|
#: cps/templates/admin.html:106
|
||||||
msgid "Administration"
|
msgid "Administration"
|
||||||
msgstr "管理"
|
msgstr "管理"
|
||||||
|
|
||||||
#: cps/templates/admin.html:94
|
#: cps/templates/admin.html:107
|
||||||
msgid "Current commit timestamp"
|
|
||||||
msgstr "現在コミットのタイムスタンプ"
|
|
||||||
|
|
||||||
#: cps/templates/admin.html:95
|
|
||||||
msgid "Newest commit timestamp"
|
|
||||||
msgstr "最新コミットのタイムスタンプ"
|
|
||||||
|
|
||||||
#: cps/templates/admin.html:97
|
|
||||||
msgid "Reconnect to Calibre DB"
|
msgid "Reconnect to Calibre DB"
|
||||||
msgstr "Calibreデータベースに再接続します"
|
msgstr "Calibreデータベースに再接続します"
|
||||||
|
|
||||||
#: cps/templates/admin.html:98
|
#: cps/templates/admin.html:108
|
||||||
msgid "Restart Calibre-Web"
|
msgid "Restart Calibre-Web"
|
||||||
msgstr "Calibre-Webを再起動します"
|
msgstr "Calibre-Webを再起動します"
|
||||||
|
|
||||||
#: cps/templates/admin.html:99
|
#: cps/templates/admin.html:109
|
||||||
msgid "Stop Calibre-Web"
|
msgid "Stop Calibre-Web"
|
||||||
msgstr "Calibre-Webを停止します"
|
msgstr "Calibre-Webを停止します"
|
||||||
|
|
||||||
#: cps/templates/admin.html:100
|
#: cps/templates/admin.html:115
|
||||||
|
msgid "Update"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:119
|
||||||
|
msgid "Version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:120
|
||||||
|
msgid "Details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:126
|
||||||
|
msgid "Current version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:132
|
||||||
msgid "Check for update"
|
msgid "Check for update"
|
||||||
msgstr "更新を確認します"
|
msgstr "更新を確認します"
|
||||||
|
|
||||||
#: cps/templates/admin.html:101
|
#: cps/templates/admin.html:133
|
||||||
msgid "Perform Update"
|
msgid "Perform Update"
|
||||||
msgstr "更新を実行します"
|
msgstr "更新を実行します"
|
||||||
|
|
||||||
#: cps/templates/admin.html:110
|
#: cps/templates/admin.html:145
|
||||||
msgid "Do you really want to restart Calibre-Web?"
|
msgid "Do you really want to restart Calibre-Web?"
|
||||||
msgstr "Calibre-Webを再起動します。宜しいですか?"
|
msgstr "Calibre-Webを再起動します。宜しいですか?"
|
||||||
|
|
||||||
#: cps/templates/admin.html:115 cps/templates/admin.html:129
|
#: cps/templates/admin.html:150 cps/templates/admin.html:164
|
||||||
#: cps/templates/admin.html:150 cps/templates/shelf.html:59
|
#: cps/templates/admin.html:184 cps/templates/shelf.html:59
|
||||||
msgid "Ok"
|
msgid "Ok"
|
||||||
msgstr "はい"
|
msgstr "はい"
|
||||||
|
|
||||||
#: cps/templates/admin.html:116 cps/templates/admin.html:130
|
#: cps/templates/admin.html:151 cps/templates/admin.html:165
|
||||||
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
|
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
|
||||||
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
|
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
|
||||||
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
|
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
|
||||||
@ -825,11 +866,11 @@ msgstr "はい"
|
|||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "戻る"
|
msgstr "戻る"
|
||||||
|
|
||||||
#: cps/templates/admin.html:128
|
#: cps/templates/admin.html:163
|
||||||
msgid "Do you really want to stop Calibre-Web?"
|
msgid "Do you really want to stop Calibre-Web?"
|
||||||
msgstr "Calibre-Webを停止します。宜しいですか?"
|
msgstr "Calibre-Webを停止します。宜しいですか?"
|
||||||
|
|
||||||
#: cps/templates/admin.html:141
|
#: cps/templates/admin.html:175
|
||||||
msgid "Updating, please do not reload page"
|
msgid "Updating, please do not reload page"
|
||||||
msgstr "更新中、ページ再読み込みしないでください"
|
msgstr "更新中、ページ再読み込みしないでください"
|
||||||
|
|
||||||
@ -910,9 +951,7 @@ msgid "Rating"
|
|||||||
msgstr "評価"
|
msgstr "評価"
|
||||||
|
|
||||||
#: cps/templates/book_edit.html:87
|
#: cps/templates/book_edit.html:87
|
||||||
msgid ""
|
msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)"
|
||||||
"Cover URL (jpg, cover is downloaded and stored in database, field is "
|
|
||||||
"afterwards empty again)"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/book_edit.html:91
|
#: cps/templates/book_edit.html:91
|
||||||
@ -1840,9 +1879,7 @@ msgstr "最近ダウンロード"
|
|||||||
#~ msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
#~ msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
||||||
#~ msgstr "タイトルを'%(src)s'から'%(dest)s'の改名は失敗しました。エーラ: %(error)s"
|
#~ msgstr "タイトルを'%(src)s'から'%(dest)s'の改名は失敗しました。エーラ: %(error)s"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
||||||
#~ "Rename author from: '%(src)s' to "
|
|
||||||
#~ "'%(dest)s' failed with error: %(error)s"
|
|
||||||
#~ msgstr "著者を'%(src)s'から'%(dest)s'の改名は失敗しました。エーラ:%(error)s"
|
#~ msgstr "著者を'%(src)s'から'%(dest)s'の改名は失敗しました。エーラ:%(error)s"
|
||||||
|
|
||||||
#~ msgid "Password for user %(user)s reset"
|
#~ msgid "Password for user %(user)s reset"
|
||||||
@ -1866,3 +1903,9 @@ msgstr "最近ダウンロード"
|
|||||||
#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
|
#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
|
||||||
#~ msgstr "ファイル拡張子 \"%(ext)s\" をこのサーバにアップロードする許可はありません"
|
#~ msgstr "ファイル拡張子 \"%(ext)s\" をこのサーバにアップロードする許可はありません"
|
||||||
|
|
||||||
|
#~ msgid "Current commit timestamp"
|
||||||
|
#~ msgstr "現在コミットのタイムスタンプ"
|
||||||
|
|
||||||
|
#~ msgid "Newest commit timestamp"
|
||||||
|
#~ msgstr "最新コミットのタイムスタンプ"
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Calibre-Web\n"
|
"Project-Id-Version: Calibre-Web\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
|
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
|
||||||
"POT-Creation-Date: 2018-09-08 14:49+0200\n"
|
"POT-Creation-Date: 2018-09-14 21:11+0200\n"
|
||||||
"PO-Revision-Date: 2018-08-27 17:06+0700\n"
|
"PO-Revision-Date: 2018-08-27 17:06+0700\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language: km_KH\n"
|
"Language: km_KH\n"
|
||||||
@ -115,709 +115,750 @@ msgstr ""
|
|||||||
msgid "Unrar binary file not found"
|
msgid "Unrar binary file not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1114
|
#: cps/web.py:1112 cps/web.py:2778
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "មិនដឹង"
|
||||||
|
|
||||||
|
#: cps/web.py:1121 cps/web.py:1152
|
||||||
|
msgid "HTTP Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1123 cps/web.py:1154
|
||||||
|
msgid "Connection error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1125 cps/web.py:1156
|
||||||
|
msgid "Timeout while establishing connection"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1127 cps/web.py:1158
|
||||||
|
msgid "General error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1133
|
||||||
|
msgid "Unexpected data while reading update information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1140
|
||||||
|
msgid "No update available. You already have the latest version installed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1165
|
||||||
|
msgid "A new update is available. Click on the button below to update to the latest version."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1215
|
||||||
|
msgid "Could not fetch update information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1230
|
||||||
msgid "Requesting update package"
|
msgid "Requesting update package"
|
||||||
msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព"
|
msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព"
|
||||||
|
|
||||||
#: cps/web.py:1115
|
#: cps/web.py:1231
|
||||||
msgid "Downloading update package"
|
msgid "Downloading update package"
|
||||||
msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព"
|
msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព"
|
||||||
|
|
||||||
#: cps/web.py:1116
|
#: cps/web.py:1232
|
||||||
msgid "Unzipping update package"
|
msgid "Unzipping update package"
|
||||||
msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព"
|
msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព"
|
||||||
|
|
||||||
#: cps/web.py:1117
|
#: cps/web.py:1233
|
||||||
msgid "Files are replaced"
|
msgid "Files are replaced"
|
||||||
msgstr "ឯកសារត្រូវបានផ្លាស់ប្តូរ"
|
msgstr "ឯកសារត្រូវបានផ្លាស់ប្តូរ"
|
||||||
|
|
||||||
#: cps/web.py:1118
|
#: cps/web.py:1234
|
||||||
msgid "Database connections are closed"
|
msgid "Database connections are closed"
|
||||||
msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់"
|
msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់"
|
||||||
|
|
||||||
#: cps/web.py:1119
|
#: cps/web.py:1235
|
||||||
msgid "Server is stopped"
|
msgid "Server is stopped"
|
||||||
msgstr "ម៉ាស៊ីន server ត្រូវបានបញ្ឈប់"
|
msgstr "ម៉ាស៊ីន server ត្រូវបានបញ្ឈប់"
|
||||||
|
|
||||||
#: cps/web.py:1120
|
#: cps/web.py:1236
|
||||||
msgid "Update finished, please press okay and reload page"
|
msgid "Update finished, please press okay and reload page"
|
||||||
msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី"
|
msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី"
|
||||||
|
|
||||||
#: cps/web.py:1140
|
#: cps/web.py:1256
|
||||||
msgid "Recently Added Books"
|
msgid "Recently Added Books"
|
||||||
msgstr "សៀវភៅដែលទើបបានបន្ថែម"
|
msgstr "សៀវភៅដែលទើបបានបន្ថែម"
|
||||||
|
|
||||||
#: cps/web.py:1150
|
#: cps/web.py:1266
|
||||||
msgid "Newest Books"
|
msgid "Newest Books"
|
||||||
msgstr "សៀវភៅថ្មីៗជាងគេ"
|
msgstr "សៀវភៅថ្មីៗជាងគេ"
|
||||||
|
|
||||||
#: cps/web.py:1162
|
#: cps/web.py:1278
|
||||||
msgid "Oldest Books"
|
msgid "Oldest Books"
|
||||||
msgstr "សៀវភៅចាស់ជាងគេ"
|
msgstr "សៀវភៅចាស់ជាងគេ"
|
||||||
|
|
||||||
#: cps/web.py:1174
|
#: cps/web.py:1290
|
||||||
msgid "Books (A-Z)"
|
msgid "Books (A-Z)"
|
||||||
msgstr "សៀវភៅពី A ទៅ Z"
|
msgstr "សៀវភៅពី A ទៅ Z"
|
||||||
|
|
||||||
#: cps/web.py:1185
|
#: cps/web.py:1301
|
||||||
msgid "Books (Z-A)"
|
msgid "Books (Z-A)"
|
||||||
msgstr "សៀវភៅពី Z ទៅ A"
|
msgstr "សៀវភៅពី Z ទៅ A"
|
||||||
|
|
||||||
#: cps/web.py:1214
|
#: cps/web.py:1330
|
||||||
msgid "Hot Books (most downloaded)"
|
msgid "Hot Books (most downloaded)"
|
||||||
msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ"
|
msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ"
|
||||||
|
|
||||||
#: cps/web.py:1227
|
#: cps/web.py:1343
|
||||||
msgid "Best rated books"
|
msgid "Best rated books"
|
||||||
msgstr "សៀវភៅដែលត្រូវបានវាយតម្លៃល្អជាងគេ"
|
msgstr "សៀវភៅដែលត្រូវបានវាយតម្លៃល្អជាងគេ"
|
||||||
|
|
||||||
#: cps/templates/index.xml:36 cps/web.py:1239
|
#: cps/templates/index.xml:36 cps/web.py:1355
|
||||||
msgid "Random Books"
|
msgid "Random Books"
|
||||||
msgstr "សៀវភៅចៃដន្យ"
|
msgstr "សៀវភៅចៃដន្យ"
|
||||||
|
|
||||||
#: cps/web.py:1254
|
#: cps/web.py:1370
|
||||||
msgid "Author list"
|
msgid "Author list"
|
||||||
msgstr "បញ្ជីអ្នកនិពន្ធ"
|
msgstr "បញ្ជីអ្នកនិពន្ធ"
|
||||||
|
|
||||||
#: cps/web.py:1266 cps/web.py:1329 cps/web.py:1484 cps/web.py:2036
|
#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152
|
||||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||||
msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ មិនមានឯកសារនេះ ឬមិនអាចបើកបាន៖"
|
msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ មិនមានឯកសារនេះ ឬមិនអាចបើកបាន៖"
|
||||||
|
|
||||||
#: cps/templates/index.xml:73 cps/web.py:1313
|
#: cps/templates/index.xml:73 cps/web.py:1429
|
||||||
msgid "Series list"
|
msgid "Series list"
|
||||||
msgstr "បញ្ជីស៊េរី"
|
msgstr "បញ្ជីស៊េរី"
|
||||||
|
|
||||||
#: cps/web.py:1327
|
#: cps/web.py:1443
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Series: %(serie)s"
|
msgid "Series: %(serie)s"
|
||||||
msgstr "ស៊េរី៖ %(serie)s"
|
msgstr "ស៊េរី៖ %(serie)s"
|
||||||
|
|
||||||
#: cps/web.py:1354
|
#: cps/web.py:1470
|
||||||
msgid "Available languages"
|
msgid "Available languages"
|
||||||
msgstr "ភាសាដែលមាន"
|
msgstr "ភាសាដែលមាន"
|
||||||
|
|
||||||
#: cps/web.py:1371
|
#: cps/web.py:1487
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Language: %(name)s"
|
msgid "Language: %(name)s"
|
||||||
msgstr "ភាសា៖ %(name)s"
|
msgstr "ភាសា៖ %(name)s"
|
||||||
|
|
||||||
#: cps/templates/index.xml:66 cps/web.py:1382
|
#: cps/templates/index.xml:66 cps/web.py:1498
|
||||||
msgid "Category list"
|
msgid "Category list"
|
||||||
msgstr "បញ្ជីប្រភេទ"
|
msgstr "បញ្ជីប្រភេទ"
|
||||||
|
|
||||||
#: cps/web.py:1396
|
#: cps/web.py:1512
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Category: %(name)s"
|
msgid "Category: %(name)s"
|
||||||
msgstr "ប្រភេទ៖ %(name)s"
|
msgstr "ប្រភេទ៖ %(name)s"
|
||||||
|
|
||||||
#: cps/templates/layout.html:71 cps/web.py:1535
|
#: cps/templates/layout.html:71 cps/web.py:1651
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
msgstr "កិច្ចការនានា"
|
msgstr "កិច្ចការនានា"
|
||||||
|
|
||||||
#: cps/web.py:1565
|
#: cps/web.py:1681
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "ស្ថិតិ"
|
msgstr "ស្ថិតិ"
|
||||||
|
|
||||||
#: cps/web.py:1670
|
#: cps/web.py:1786
|
||||||
msgid ""
|
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
|
||||||
"Callback domain is not verified, please follow steps to verify domain in "
|
msgstr "Callback domain មិនទាន់បានផ្ទៀងផ្ទាត់ឲប្រើទេ សូមធ្វើតាមជំហានដើម្បីផ្ទៀងផ្ទាត់ domain នៅក្នុង Google Developer Console"
|
||||||
"google developer console"
|
|
||||||
msgstr ""
|
|
||||||
"Callback domain មិនទាន់បានផ្ទៀងផ្ទាត់ឲប្រើទេ "
|
|
||||||
"សូមធ្វើតាមជំហានដើម្បីផ្ទៀងផ្ទាត់ domain នៅក្នុង Google Developer Console"
|
|
||||||
|
|
||||||
#: cps/web.py:1746
|
#: cps/web.py:1861
|
||||||
msgid "Server restarted, please reload page"
|
msgid "Server restarted, please reload page"
|
||||||
msgstr "ម៉ាស៊ីន server បានដំណើរការម្តងទៀត សូមបើកទំព័រជាថ្មី"
|
msgstr "ម៉ាស៊ីន server បានដំណើរការម្តងទៀត សូមបើកទំព័រជាថ្មី"
|
||||||
|
|
||||||
#: cps/web.py:1749
|
#: cps/web.py:1864
|
||||||
msgid "Performing shutdown of server, please close window"
|
msgid "Performing shutdown of server, please close window"
|
||||||
msgstr "កំពុងបិទម៉ាស៊ីន server សូមបិទផ្ទាំងនេះ"
|
msgstr "កំពុងបិទម៉ាស៊ីន server សូមបិទផ្ទាំងនេះ"
|
||||||
|
|
||||||
#: cps/web.py:1767
|
#: cps/web.py:1883
|
||||||
msgid "Update done"
|
msgid "Update done"
|
||||||
msgstr "ការធ្វើបច្ចុប្បន្នភាពរួចរាល់"
|
msgstr "ការធ្វើបច្ចុប្បន្នភាពរួចរាល់"
|
||||||
|
|
||||||
#: cps/web.py:1837
|
#: cps/web.py:1953
|
||||||
msgid "Published after "
|
msgid "Published after "
|
||||||
msgstr "បានបោះពុម្ភក្រោយ "
|
msgstr "បានបោះពុម្ភក្រោយ "
|
||||||
|
|
||||||
#: cps/web.py:1844
|
#: cps/web.py:1960
|
||||||
msgid "Published before "
|
msgid "Published before "
|
||||||
msgstr "បានបោះពុម្ភមុន "
|
msgstr "បានបោះពុម្ភមុន "
|
||||||
|
|
||||||
#: cps/web.py:1858
|
#: cps/web.py:1974
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rating <= %(rating)s"
|
msgid "Rating <= %(rating)s"
|
||||||
msgstr "ការវាយតម្លៃ <= %(rating)s"
|
msgstr "ការវាយតម្លៃ <= %(rating)s"
|
||||||
|
|
||||||
#: cps/web.py:1860
|
#: cps/web.py:1976
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rating >= %(rating)s"
|
msgid "Rating >= %(rating)s"
|
||||||
msgstr "ការវាយតម្លៃ >= %(rating)s"
|
msgstr "ការវាយតម្លៃ >= %(rating)s"
|
||||||
|
|
||||||
#: cps/web.py:1919 cps/web.py:1928
|
#: cps/web.py:2035 cps/web.py:2044
|
||||||
msgid "search"
|
msgid "search"
|
||||||
msgstr "ស្វែងរក"
|
msgstr "ស្វែងរក"
|
||||||
|
|
||||||
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
||||||
#: cps/templates/layout.html:146 cps/web.py:1995
|
#: cps/templates/layout.html:146 cps/web.py:2111
|
||||||
msgid "Read Books"
|
msgid "Read Books"
|
||||||
msgstr "សៀវភៅដែលបានអានរួច"
|
msgstr "សៀវភៅដែលបានអានរួច"
|
||||||
|
|
||||||
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
||||||
#: cps/templates/layout.html:148 cps/web.py:1998
|
#: cps/templates/layout.html:148 cps/web.py:2114
|
||||||
msgid "Unread Books"
|
msgid "Unread Books"
|
||||||
msgstr "សៀវភៅដែលមិនទាន់បានអាន"
|
msgstr "សៀវភៅដែលមិនទាន់បានអាន"
|
||||||
|
|
||||||
#: cps/web.py:2046 cps/web.py:2048 cps/web.py:2050 cps/web.py:2062
|
#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178
|
||||||
msgid "Read a Book"
|
msgid "Read a Book"
|
||||||
msgstr "អានសៀវភៅ"
|
msgstr "អានសៀវភៅ"
|
||||||
|
|
||||||
#: cps/web.py:2128 cps/web.py:3006
|
#: cps/web.py:2244 cps/web.py:3129
|
||||||
msgid "Please fill out all fields!"
|
msgid "Please fill out all fields!"
|
||||||
msgstr "សូមបំពេញចន្លោះទាំងអស់!"
|
msgstr "សូមបំពេញចន្លោះទាំងអស់!"
|
||||||
|
|
||||||
#: cps/web.py:2129 cps/web.py:2150 cps/web.py:2154 cps/web.py:2159
|
#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275
|
||||||
#: cps/web.py:2161
|
#: cps/web.py:2277
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr "ចុះឈ្មោះ"
|
msgstr "ចុះឈ្មោះ"
|
||||||
|
|
||||||
#: cps/web.py:2149 cps/web.py:3222
|
#: cps/web.py:2265 cps/web.py:3345
|
||||||
msgid "An unknown error occurred. Please try again later."
|
msgid "An unknown error occurred. Please try again later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2152
|
#: cps/web.py:2268
|
||||||
msgid "Your e-mail is not allowed to register"
|
msgid "Your e-mail is not allowed to register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2155
|
#: cps/web.py:2271
|
||||||
msgid "Confirmation e-mail was send to your e-mail account."
|
msgid "Confirmation e-mail was send to your e-mail account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2158
|
#: cps/web.py:2274
|
||||||
msgid "This username or e-mail address is already in use."
|
msgid "This username or e-mail address is already in use."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2175 cps/web.py:2271
|
#: cps/web.py:2291 cps/web.py:2387
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "you are now logged in as: '%(nickname)s'"
|
msgid "you are now logged in as: '%(nickname)s'"
|
||||||
msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ ‘%(nickname)s’"
|
msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ ‘%(nickname)s’"
|
||||||
|
|
||||||
#: cps/web.py:2180
|
#: cps/web.py:2296
|
||||||
msgid "Wrong Username or Password"
|
msgid "Wrong Username or Password"
|
||||||
msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់"
|
msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់"
|
||||||
|
|
||||||
#: cps/web.py:2186 cps/web.py:2207
|
#: cps/web.py:2302 cps/web.py:2323
|
||||||
msgid "login"
|
msgid "login"
|
||||||
msgstr "ចូលប្រើ"
|
msgstr "ចូលប្រើ"
|
||||||
|
|
||||||
#: cps/web.py:2219 cps/web.py:2250
|
#: cps/web.py:2335 cps/web.py:2366
|
||||||
msgid "Token not found"
|
msgid "Token not found"
|
||||||
msgstr "រកមិនឃើញវត្ថុតាង"
|
msgstr "រកមិនឃើញវត្ថុតាង"
|
||||||
|
|
||||||
#: cps/web.py:2227 cps/web.py:2258
|
#: cps/web.py:2343 cps/web.py:2374
|
||||||
msgid "Token has expired"
|
msgid "Token has expired"
|
||||||
msgstr "វត្ថុតាងហួសពេលកំណត់"
|
msgstr "វត្ថុតាងហួសពេលកំណត់"
|
||||||
|
|
||||||
#: cps/web.py:2235
|
#: cps/web.py:2351
|
||||||
msgid "Success! Please return to your device"
|
msgid "Success! Please return to your device"
|
||||||
msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ"
|
msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ"
|
||||||
|
|
||||||
#: cps/web.py:2285
|
#: cps/web.py:2401
|
||||||
msgid "Please configure the SMTP mail settings first..."
|
msgid "Please configure the SMTP mail settings first..."
|
||||||
msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន"
|
msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន"
|
||||||
|
|
||||||
#: cps/web.py:2289
|
#: cps/web.py:2405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book successfully queued for sending to %(kindlemail)s"
|
msgid "Book successfully queued for sending to %(kindlemail)s"
|
||||||
msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ"
|
msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ"
|
||||||
|
|
||||||
#: cps/web.py:2293
|
#: cps/web.py:2409
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error sending this book: %(res)s"
|
msgid "There was an error sending this book: %(res)s"
|
||||||
msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s"
|
msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s"
|
||||||
|
|
||||||
#: cps/web.py:2295 cps/web.py:3060
|
#: cps/web.py:2411 cps/web.py:3183
|
||||||
msgid "Please configure your kindle e-mail address first..."
|
msgid "Please configure your kindle e-mail address first..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2339
|
#: cps/web.py:2455
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book has been added to shelf: %(sname)s"
|
msgid "Book has been added to shelf: %(sname)s"
|
||||||
msgstr "សៀវភៅត្រូវបានបន្ថែមទៅធ្នើ៖ %(sname)s"
|
msgstr "សៀវភៅត្រូវបានបន្ថែមទៅធ្នើ៖ %(sname)s"
|
||||||
|
|
||||||
#: cps/web.py:2350
|
#: cps/web.py:2466
|
||||||
msgid "Invalid shelf specified"
|
msgid "Invalid shelf specified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2355
|
#: cps/web.py:2471
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2360
|
#: cps/web.py:2476
|
||||||
msgid "User is not allowed to edit public shelves"
|
msgid "User is not allowed to edit public shelves"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2378
|
#: cps/web.py:2494
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Books are already part of the shelf: %(name)s"
|
msgid "Books are already part of the shelf: %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2392
|
#: cps/web.py:2508
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Books have been added to shelf: %(sname)s"
|
msgid "Books have been added to shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2394
|
#: cps/web.py:2510
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not add books to shelf: %(sname)s"
|
msgid "Could not add books to shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2431
|
#: cps/web.py:2547
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book has been removed from shelf: %(sname)s"
|
msgid "Book has been removed from shelf: %(sname)s"
|
||||||
msgstr "សៀវភៅត្រូវបានដកចេញពីធ្នើ៖ %(sname)s"
|
msgstr "សៀវភៅត្រូវបានដកចេញពីធ្នើ៖ %(sname)s"
|
||||||
|
|
||||||
#: cps/web.py:2437
|
#: cps/web.py:2553
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
||||||
msgstr "សូមអភ័យទោស អ្នកមិនមានសិទ្ធិដកសៀវភៅចេញពីធ្នើនេះទេ៖ %(sname)s"
|
msgstr "សូមអភ័យទោស អ្នកមិនមានសិទ្ធិដកសៀវភៅចេញពីធ្នើនេះទេ៖ %(sname)s"
|
||||||
|
|
||||||
#: cps/web.py:2457 cps/web.py:2481
|
#: cps/web.py:2573 cps/web.py:2597
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A shelf with the name '%(title)s' already exists."
|
msgid "A shelf with the name '%(title)s' already exists."
|
||||||
msgstr "មានធ្នើដែលមានឈ្មោះ ‘%(title)s’ រួចហើយ។"
|
msgstr "មានធ្នើដែលមានឈ្មោះ ‘%(title)s’ រួចហើយ។"
|
||||||
|
|
||||||
#: cps/web.py:2462
|
#: cps/web.py:2578
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf %(title)s created"
|
msgid "Shelf %(title)s created"
|
||||||
msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានបង្កើត"
|
msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានបង្កើត"
|
||||||
|
|
||||||
#: cps/web.py:2464 cps/web.py:2492
|
#: cps/web.py:2580 cps/web.py:2608
|
||||||
msgid "There was an error"
|
msgid "There was an error"
|
||||||
msgstr "មានបញ្ហា"
|
msgstr "មានបញ្ហា"
|
||||||
|
|
||||||
#: cps/web.py:2465 cps/web.py:2467
|
#: cps/web.py:2581 cps/web.py:2583
|
||||||
msgid "create a shelf"
|
msgid "create a shelf"
|
||||||
msgstr "បង្កើតធ្នើ"
|
msgstr "បង្កើតធ្នើ"
|
||||||
|
|
||||||
#: cps/web.py:2490
|
#: cps/web.py:2606
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf %(title)s changed"
|
msgid "Shelf %(title)s changed"
|
||||||
msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានប្តូរ"
|
msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានប្តូរ"
|
||||||
|
|
||||||
#: cps/web.py:2493 cps/web.py:2495
|
#: cps/web.py:2609 cps/web.py:2611
|
||||||
msgid "Edit a shelf"
|
msgid "Edit a shelf"
|
||||||
msgstr "កែប្រែធ្នើ"
|
msgstr "កែប្រែធ្នើ"
|
||||||
|
|
||||||
#: cps/web.py:2516
|
#: cps/web.py:2632
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "successfully deleted shelf %(name)s"
|
msgid "successfully deleted shelf %(name)s"
|
||||||
msgstr "បានបង្កើតធ្នើឈ្មោះ %(name)s ដោយជោគជ័យ"
|
msgstr "បានបង្កើតធ្នើឈ្មោះ %(name)s ដោយជោគជ័យ"
|
||||||
|
|
||||||
#: cps/web.py:2538
|
#: cps/web.py:2659
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf: '%(name)s'"
|
msgid "Shelf: '%(name)s'"
|
||||||
msgstr "ធ្នើ៖ ‘%(name)s’"
|
msgstr "ធ្នើ៖ ‘%(name)s’"
|
||||||
|
|
||||||
#: cps/web.py:2541
|
#: cps/web.py:2662
|
||||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||||
msgstr "មានបញ្ហាពេលបើកធ្នើ។ ពុំមានធ្នើ ឬមិនអាចបើកបាន"
|
msgstr "មានបញ្ហាពេលបើកធ្នើ។ ពុំមានធ្នើ ឬមិនអាចបើកបាន"
|
||||||
|
|
||||||
#: cps/web.py:2572
|
#: cps/web.py:2693
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Change order of Shelf: '%(name)s'"
|
msgid "Change order of Shelf: '%(name)s'"
|
||||||
msgstr "ប្តូរលំដាប់ធ្នើ៖ ‘%(name)s’"
|
msgstr "ប្តូរលំដាប់ធ្នើ៖ ‘%(name)s’"
|
||||||
|
|
||||||
#: cps/web.py:2601 cps/web.py:3012
|
#: cps/web.py:2722 cps/web.py:3135
|
||||||
msgid "E-mail is not from valid domain"
|
msgid "E-mail is not from valid domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2603 cps/web.py:2644 cps/web.py:2647
|
#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s's profile"
|
msgid "%(name)s's profile"
|
||||||
msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s"
|
msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s"
|
||||||
|
|
||||||
#: cps/web.py:2642
|
#: cps/web.py:2763
|
||||||
msgid "Found an existing account for this e-mail address."
|
msgid "Found an existing account for this e-mail address."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2645
|
#: cps/web.py:2766
|
||||||
msgid "Profile updated"
|
msgid "Profile updated"
|
||||||
msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ"
|
msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ"
|
||||||
|
|
||||||
#: cps/web.py:2657
|
#: cps/web.py:2794
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "មិនដឹង"
|
|
||||||
|
|
||||||
#: cps/web.py:2671
|
|
||||||
msgid "Admin page"
|
msgid "Admin page"
|
||||||
msgstr "ទំព័ររដ្ឋបាល"
|
msgstr "ទំព័ររដ្ឋបាល"
|
||||||
|
|
||||||
#: cps/web.py:2749 cps/web.py:2922
|
#: cps/web.py:2872 cps/web.py:3045
|
||||||
msgid "Calibre-Web configuration updated"
|
msgid "Calibre-Web configuration updated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:91 cps/web.py:2762
|
#: cps/templates/admin.html:100 cps/web.py:2885
|
||||||
msgid "UI Configuration"
|
msgid "UI Configuration"
|
||||||
msgstr "ការកំណត់ផ្ទាំងប្រើប្រាស់"
|
msgstr "ការកំណត់ផ្ទាំងប្រើប្រាស់"
|
||||||
|
|
||||||
#: cps/web.py:2780
|
#: cps/web.py:2903
|
||||||
msgid "Import of optional Google Drive requirements missing"
|
msgid "Import of optional Google Drive requirements missing"
|
||||||
msgstr "ខ្វះការនាំចូលតម្រូវការបន្ថែមរបស់ Google Drive"
|
msgstr "ខ្វះការនាំចូលតម្រូវការបន្ថែមរបស់ Google Drive"
|
||||||
|
|
||||||
#: cps/web.py:2783
|
#: cps/web.py:2906
|
||||||
msgid "client_secrets.json is missing or not readable"
|
msgid "client_secrets.json is missing or not readable"
|
||||||
msgstr "មិនមានឯកសារ client_secrets.json ឬមិនអាចបើកបាន"
|
msgstr "មិនមានឯកសារ client_secrets.json ឬមិនអាចបើកបាន"
|
||||||
|
|
||||||
#: cps/web.py:2788 cps/web.py:2815
|
#: cps/web.py:2911 cps/web.py:2938
|
||||||
msgid "client_secrets.json is not configured for web application"
|
msgid "client_secrets.json is not configured for web application"
|
||||||
msgstr "ឯកសារ client_secrets.json មិនទាន់បានកំណត់សម្រាប់កម្មវិធីវែប"
|
msgstr "ឯកសារ client_secrets.json មិនទាន់បានកំណត់សម្រាប់កម្មវិធីវែប"
|
||||||
|
|
||||||
#: cps/templates/admin.html:90 cps/web.py:2818 cps/web.py:2844 cps/web.py:2856
|
#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
|
||||||
#: cps/web.py:2898 cps/web.py:2913 cps/web.py:2930 cps/web.py:2937
|
#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
|
||||||
#: cps/web.py:2954
|
#: cps/web.py:3077
|
||||||
msgid "Basic Configuration"
|
msgid "Basic Configuration"
|
||||||
msgstr "ការកំណត់សាមញ្ញ"
|
msgstr "ការកំណត់សាមញ្ញ"
|
||||||
|
|
||||||
#: cps/web.py:2841
|
#: cps/web.py:2964
|
||||||
msgid "Keyfile location is not valid, please enter correct path"
|
msgid "Keyfile location is not valid, please enter correct path"
|
||||||
msgstr "ទីតាំងរបស់ keyfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ"
|
msgstr "ទីតាំងរបស់ keyfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ"
|
||||||
|
|
||||||
#: cps/web.py:2853
|
#: cps/web.py:2976
|
||||||
msgid "Certfile location is not valid, please enter correct path"
|
msgid "Certfile location is not valid, please enter correct path"
|
||||||
msgstr "ទីតាំងរបស់ certfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ"
|
msgstr "ទីតាំងរបស់ certfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ"
|
||||||
|
|
||||||
#: cps/web.py:2895
|
#: cps/web.py:3018
|
||||||
msgid "Logfile location is not valid, please enter correct path"
|
msgid "Logfile location is not valid, please enter correct path"
|
||||||
msgstr "ទីតាំងរបស់ logfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ"
|
msgstr "ទីតាំងរបស់ logfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ"
|
||||||
|
|
||||||
#: cps/web.py:2934
|
#: cps/web.py:3057
|
||||||
msgid "DB location is not valid, please enter correct path"
|
msgid "DB location is not valid, please enter correct path"
|
||||||
msgstr "ទីតាំងរបស់ database មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ"
|
msgstr "ទីតាំងរបស់ database មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:31 cps/web.py:3008 cps/web.py:3014 cps/web.py:3030
|
#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153
|
||||||
msgid "Add new user"
|
msgid "Add new user"
|
||||||
msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី"
|
msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី"
|
||||||
|
|
||||||
#: cps/web.py:3020
|
#: cps/web.py:3143
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(user)s' created"
|
msgid "User '%(user)s' created"
|
||||||
msgstr "បានបង្កើតអ្នកប្រើប្រាស់ ‘%(user)s’"
|
msgstr "បានបង្កើតអ្នកប្រើប្រាស់ ‘%(user)s’"
|
||||||
|
|
||||||
#: cps/web.py:3024
|
#: cps/web.py:3147
|
||||||
msgid "Found an existing account for this e-mail address or nickname."
|
msgid "Found an existing account for this e-mail address or nickname."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3048 cps/web.py:3062
|
#: cps/web.py:3171 cps/web.py:3185
|
||||||
msgid "E-mail server settings updated"
|
msgid "E-mail server settings updated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3055
|
#: cps/web.py:3178
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Test e-mail successfully send to %(kindlemail)s"
|
msgid "Test e-mail successfully send to %(kindlemail)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3058
|
#: cps/web.py:3181
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error sending the Test e-mail: %(res)s"
|
msgid "There was an error sending the Test e-mail: %(res)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3063
|
#: cps/web.py:3186
|
||||||
msgid "Edit e-mail server settings"
|
msgid "Edit e-mail server settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3088
|
#: cps/web.py:3211
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(nick)s' deleted"
|
msgid "User '%(nick)s' deleted"
|
||||||
msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានលុប"
|
msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានលុប"
|
||||||
|
|
||||||
#: cps/web.py:3197
|
#: cps/web.py:3320
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(nick)s' updated"
|
msgid "User '%(nick)s' updated"
|
||||||
msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានកែប្រែ"
|
msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានកែប្រែ"
|
||||||
|
|
||||||
#: cps/web.py:3200
|
#: cps/web.py:3323
|
||||||
msgid "An unknown error occured."
|
msgid "An unknown error occured."
|
||||||
msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។"
|
msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។"
|
||||||
|
|
||||||
#: cps/web.py:3202
|
#: cps/web.py:3325
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Edit User %(nick)s"
|
msgid "Edit User %(nick)s"
|
||||||
msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s"
|
msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s"
|
||||||
|
|
||||||
#: cps/web.py:3219
|
#: cps/web.py:3342
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Password for user %(user)s reset"
|
msgid "Password for user %(user)s reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3239
|
#: cps/web.py:3362
|
||||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||||
msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន"
|
msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន"
|
||||||
|
|
||||||
#: cps/web.py:3270 cps/web.py:3546 cps/web.py:3551 cps/web.py:3706
|
#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
|
||||||
msgid "edit metadata"
|
msgid "edit metadata"
|
||||||
msgstr "កែប្រែទិន្នន័យមេតា"
|
msgstr "កែប្រែទិន្នន័យមេតា"
|
||||||
|
|
||||||
#: cps/web.py:3284 cps/web.py:3576
|
#: cps/web.py:3401 cps/web.py:3697
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
|
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
|
||||||
msgstr "ឯកសារប្រភេទ '%(ext)s' មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ"
|
msgstr "ឯកសារប្រភេទ '%(ext)s' មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ"
|
||||||
|
|
||||||
#: cps/web.py:3288 cps/web.py:3580
|
#: cps/web.py:3405 cps/web.py:3701
|
||||||
msgid "File to be uploaded must have an extension"
|
msgid "File to be uploaded must have an extension"
|
||||||
msgstr "ឯកសារដែលត្រូវអាប់ឡូដត្រូវមានកន្ទុយឯកសារ"
|
msgstr "ឯកសារដែលត្រូវអាប់ឡូដត្រូវមានកន្ទុយឯកសារ"
|
||||||
|
|
||||||
#: cps/web.py:3300 cps/web.py:3600
|
#: cps/web.py:3417 cps/web.py:3721
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to create path %(path)s (Permission denied)."
|
msgid "Failed to create path %(path)s (Permission denied)."
|
||||||
msgstr "មិនអាចបង្កើតទីតាំង %(path)s (ពុំមានសិទ្ធិ)។"
|
msgstr "មិនអាចបង្កើតទីតាំង %(path)s (ពុំមានសិទ្ធិ)។"
|
||||||
|
|
||||||
#: cps/web.py:3305
|
#: cps/web.py:3422
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store file %(file)s."
|
msgid "Failed to store file %(file)s."
|
||||||
msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s ។"
|
msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s ។"
|
||||||
|
|
||||||
#: cps/web.py:3321
|
#: cps/web.py:3438
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File format %(ext)s added to %(book)s"
|
msgid "File format %(ext)s added to %(book)s"
|
||||||
msgstr "ឯកសារទម្រង់ %(ext)s ត្រូវបានបន្ថែមទៅ %(book)s"
|
msgstr "ឯកសារទម្រង់ %(ext)s ត្រូវបានបន្ថែមទៅ %(book)s"
|
||||||
|
|
||||||
#: cps/web.py:3339
|
#: cps/web.py:3455
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3346
|
#: cps/web.py:3462
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store cover-file %(cover)s."
|
msgid "Failed to store cover-file %(cover)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3349
|
#: cps/web.py:3465
|
||||||
msgid "Cover-file is not a valid image file"
|
msgid "Cover-file is not a valid image file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3362 cps/web.py:3366
|
#: cps/web.py:3482 cps/web.py:3486
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr "មិនដឹង"
|
msgstr "មិនដឹង"
|
||||||
|
|
||||||
#: cps/web.py:3388
|
#: cps/web.py:3508
|
||||||
msgid "Cover is not a jpg file, can't save"
|
msgid "Cover is not a jpg file, can't save"
|
||||||
msgstr "គម្របមិនមែនជាឯកសារ JPG មិនអាចរក្សាទុក"
|
msgstr "គម្របមិនមែនជាឯកសារ JPG មិនអាចរក្សាទុក"
|
||||||
|
|
||||||
#: cps/web.py:3555
|
#: cps/web.py:3554
|
||||||
|
#, python-format
|
||||||
|
msgid "%(langname)s is not a valid language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:3676
|
||||||
msgid "Error editing book, please check logfile for details"
|
msgid "Error editing book, please check logfile for details"
|
||||||
msgstr "មានបញ្ហាពេលកែប្រែសៀវភៅ សូមពិនិត្យមើល logfile សម្រាប់ព័ត៌មានបន្ថែម"
|
msgstr "មានបញ្ហាពេលកែប្រែសៀវភៅ សូមពិនិត្យមើល logfile សម្រាប់ព័ត៌មានបន្ថែម"
|
||||||
|
|
||||||
#: cps/web.py:3605
|
#: cps/web.py:3726
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store file %(file)s (Permission denied)."
|
msgid "Failed to store file %(file)s (Permission denied)."
|
||||||
msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s (មិនមានសិទ្ធិ)។"
|
msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s (មិនមានសិទ្ធិ)។"
|
||||||
|
|
||||||
#: cps/web.py:3610
|
#: cps/web.py:3731
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to delete file %(file)s (Permission denied)."
|
msgid "Failed to delete file %(file)s (Permission denied)."
|
||||||
msgstr "មិនអាចលុបឯកសារ %(file)s (មិនមានសិទ្ធិ)។"
|
msgstr "មិនអាចលុបឯកសារ %(file)s (មិនមានសិទ្ធិ)។"
|
||||||
|
|
||||||
#: cps/web.py:3692
|
#: cps/web.py:3813
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File %(file)s uploaded"
|
msgid "File %(file)s uploaded"
|
||||||
msgstr "ឯកសារ %(file)s ត្រូវបានអាប់ឡូដ"
|
msgstr "ឯកសារ %(file)s ត្រូវបានអាប់ឡូដ"
|
||||||
|
|
||||||
#: cps/web.py:3722
|
#: cps/web.py:3843
|
||||||
msgid "Source or destination format for conversion missing"
|
msgid "Source or destination format for conversion missing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3732
|
#: cps/web.py:3853
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book successfully queued for converting to %(book_format)s"
|
msgid "Book successfully queued for converting to %(book_format)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3736
|
#: cps/web.py:3857
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error converting this book: %(res)s"
|
msgid "There was an error converting this book: %(res)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:215 cps/worker.py:387
|
#: cps/worker.py:215 cps/worker.py:398
|
||||||
msgid "Started"
|
msgid "Started"
|
||||||
msgstr "បានចាប់ផ្តើម"
|
msgstr "បានចាប់ផ្តើម"
|
||||||
|
|
||||||
#: cps/worker.py:237
|
#: cps/worker.py:251
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Convertertool %(converter)s not found"
|
msgid "Convertertool %(converter)s not found"
|
||||||
msgstr "មិនអាចរកឃើញកម្មវិធីបម្លែង %(converter)s"
|
msgstr "មិនអាចរកឃើញកម្មវិធីបម្លែង %(converter)s"
|
||||||
|
|
||||||
#: cps/worker.py:272
|
#: cps/worker.py:287
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Ebook-converter failed: %(error)s"
|
msgid "Ebook-converter failed: %(error)s"
|
||||||
msgstr "Ebook-converter បានបរាជ័យ៖ %(error)s"
|
msgstr "Ebook-converter បានបរាជ័យ៖ %(error)s"
|
||||||
|
|
||||||
#: cps/worker.py:283
|
#: cps/worker.py:298
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||||
msgstr "Kindlegen បានបរាជ័យដោយមានកំហុស %(error)s. សារ៖ %(message)s"
|
msgstr "Kindlegen បានបរាជ័យដោយមានកំហុស %(error)s. សារ៖ %(message)s"
|
||||||
|
|
||||||
#: cps/worker.py:317 cps/worker.py:377 cps/worker.py:438
|
#: cps/worker.py:355 cps/worker.py:374
|
||||||
msgid "Finished"
|
|
||||||
msgstr "បានបញ្ចប់"
|
|
||||||
|
|
||||||
#: cps/worker.py:344 cps/worker.py:363
|
|
||||||
msgid "Waiting"
|
msgid "Waiting"
|
||||||
msgstr "កំពុងរង់ចាំ"
|
msgstr "កំពុងរង់ចាំ"
|
||||||
|
|
||||||
#: cps/worker.py:351
|
#: cps/worker.py:362
|
||||||
msgid "This e-mail has been sent via Calibre-Web."
|
msgid "This e-mail has been sent via Calibre-Web."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:472
|
#: cps/worker.py:388 cps/worker.py:484
|
||||||
|
msgid "Finished"
|
||||||
|
msgstr "បានបញ្ចប់"
|
||||||
|
|
||||||
|
#: cps/worker.py:476
|
||||||
msgid "Failed"
|
msgid "Failed"
|
||||||
msgstr "បានបរាជ័យ"
|
msgstr "បានបរាជ័យ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:4
|
#: cps/templates/admin.html:6
|
||||||
msgid "User list"
|
msgid "User list"
|
||||||
msgstr "បញ្ជីអ្នកប្រើប្រាស់"
|
msgstr "បញ្ជីអ្នកប្រើប្រាស់"
|
||||||
|
|
||||||
#: cps/templates/admin.html:7
|
#: cps/templates/admin.html:9
|
||||||
msgid "Nickname"
|
msgid "Nickname"
|
||||||
msgstr "ឈ្មោះហៅក្រៅ"
|
msgstr "ឈ្មោះហៅក្រៅ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:8
|
#: cps/templates/admin.html:10
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:9
|
#: cps/templates/admin.html:11
|
||||||
msgid "Kindle"
|
msgid "Kindle"
|
||||||
msgstr "ឧបករណ៍ Kindle"
|
msgstr "ឧបករណ៍ Kindle"
|
||||||
|
|
||||||
#: cps/templates/admin.html:10
|
#: cps/templates/admin.html:12
|
||||||
msgid "DLS"
|
msgid "DLS"
|
||||||
msgstr "ឯកសារ DLS"
|
msgstr "ឯកសារ DLS"
|
||||||
|
|
||||||
#: cps/templates/admin.html:11 cps/templates/layout.html:74
|
#: cps/templates/admin.html:13 cps/templates/layout.html:74
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "រដ្ឋបាល"
|
msgstr "រដ្ឋបាល"
|
||||||
|
|
||||||
#: cps/templates/admin.html:12 cps/templates/detail.html:22
|
#: cps/templates/admin.html:14 cps/templates/detail.html:22
|
||||||
#: cps/templates/detail.html:31
|
#: cps/templates/detail.html:31
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "ទាញយក"
|
msgstr "ទាញយក"
|
||||||
|
|
||||||
#: cps/templates/admin.html:13 cps/templates/layout.html:64
|
#: cps/templates/admin.html:15 cps/templates/layout.html:64
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "អាប់ឡូដ"
|
msgstr "អាប់ឡូដ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:14
|
#: cps/templates/admin.html:16
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "កែប្រែ"
|
msgstr "កែប្រែ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:32
|
#: cps/templates/admin.html:39
|
||||||
msgid "SMTP e-mail server settings"
|
msgid "SMTP e-mail server settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:35 cps/templates/email_edit.html:11
|
#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
|
||||||
msgid "SMTP hostname"
|
msgid "SMTP hostname"
|
||||||
msgstr "ឈ្មោះម៉ាស៊ីន SMTP"
|
msgstr "ឈ្មោះម៉ាស៊ីន SMTP"
|
||||||
|
|
||||||
#: cps/templates/admin.html:36
|
#: cps/templates/admin.html:43
|
||||||
msgid "SMTP port"
|
msgid "SMTP port"
|
||||||
msgstr "លេខ port SMTP"
|
msgstr "លេខ port SMTP"
|
||||||
|
|
||||||
#: cps/templates/admin.html:37
|
#: cps/templates/admin.html:44
|
||||||
msgid "SSL"
|
msgid "SSL"
|
||||||
msgstr "SSL"
|
msgstr "SSL"
|
||||||
|
|
||||||
#: cps/templates/admin.html:38 cps/templates/email_edit.html:27
|
#: cps/templates/admin.html:45 cps/templates/email_edit.html:27
|
||||||
msgid "SMTP login"
|
msgid "SMTP login"
|
||||||
msgstr "អ្នកចូលប្រើ SMTP"
|
msgstr "អ្នកចូលប្រើ SMTP"
|
||||||
|
|
||||||
#: cps/templates/admin.html:39
|
#: cps/templates/admin.html:46
|
||||||
msgid "From mail"
|
msgid "From mail"
|
||||||
msgstr "ពីអ៊ីមែល"
|
msgstr "ពីអ៊ីមែល"
|
||||||
|
|
||||||
#: cps/templates/admin.html:48
|
#: cps/templates/admin.html:56
|
||||||
msgid "Change SMTP settings"
|
msgid "Change SMTP settings"
|
||||||
msgstr "ប្តូរការកំណត់ SMTP"
|
msgstr "ប្តូរការកំណត់ SMTP"
|
||||||
|
|
||||||
#: cps/templates/admin.html:50
|
#: cps/templates/admin.html:62
|
||||||
msgid "Configuration"
|
msgid "Configuration"
|
||||||
msgstr "ការកំណត់"
|
msgstr "ការកំណត់"
|
||||||
|
|
||||||
#: cps/templates/admin.html:53
|
#: cps/templates/admin.html:65
|
||||||
msgid "Calibre DB dir"
|
msgid "Calibre DB dir"
|
||||||
msgstr "ទីតាំង database Calibre"
|
msgstr "ទីតាំង database Calibre"
|
||||||
|
|
||||||
#: cps/templates/admin.html:57
|
#: cps/templates/admin.html:69
|
||||||
msgid "Log level"
|
msgid "Log level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:61
|
#: cps/templates/admin.html:73
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "លេខ port"
|
msgstr "លេខ port"
|
||||||
|
|
||||||
#: cps/templates/admin.html:67 cps/templates/config_view_edit.html:23
|
#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23
|
||||||
msgid "Books per page"
|
msgid "Books per page"
|
||||||
msgstr "ចំនួនសៀវភៅក្នុងមួយទំព័រ"
|
msgstr "ចំនួនសៀវភៅក្នុងមួយទំព័រ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:71
|
#: cps/templates/admin.html:83
|
||||||
msgid "Uploading"
|
msgid "Uploading"
|
||||||
msgstr "កំពុងអាប់ឡូដ"
|
msgstr "កំពុងអាប់ឡូដ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:75
|
#: cps/templates/admin.html:87
|
||||||
msgid "Anonymous browsing"
|
msgid "Anonymous browsing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:79
|
#: cps/templates/admin.html:91
|
||||||
msgid "Public registration"
|
msgid "Public registration"
|
||||||
msgstr "ការចុះឈ្មាះសាធារណៈ"
|
msgstr "ការចុះឈ្មាះសាធារណៈ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:83 cps/templates/remote_login.html:4
|
#: cps/templates/admin.html:95 cps/templates/remote_login.html:4
|
||||||
msgid "Remote login"
|
msgid "Remote login"
|
||||||
msgstr "ការចូលប្រើប្រាស់ពីចម្ងាយ"
|
msgstr "ការចូលប្រើប្រាស់ពីចម្ងាយ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:93
|
#: cps/templates/admin.html:106
|
||||||
msgid "Administration"
|
msgid "Administration"
|
||||||
msgstr "កិច្ចការរដ្ឋបាល"
|
msgstr "កិច្ចការរដ្ឋបាល"
|
||||||
|
|
||||||
#: cps/templates/admin.html:94
|
#: cps/templates/admin.html:107
|
||||||
msgid "Current commit timestamp"
|
|
||||||
msgstr "Commit timestamp បច្ចុប្បន្ន"
|
|
||||||
|
|
||||||
#: cps/templates/admin.html:95
|
|
||||||
msgid "Newest commit timestamp"
|
|
||||||
msgstr "Commit timestamp ចុងក្រោយគេ"
|
|
||||||
|
|
||||||
#: cps/templates/admin.html:97
|
|
||||||
msgid "Reconnect to Calibre DB"
|
msgid "Reconnect to Calibre DB"
|
||||||
msgstr "ភ្ជាប់ទៅ database Calibre ម្តងទៀត"
|
msgstr "ភ្ជាប់ទៅ database Calibre ម្តងទៀត"
|
||||||
|
|
||||||
#: cps/templates/admin.html:98
|
#: cps/templates/admin.html:108
|
||||||
msgid "Restart Calibre-Web"
|
msgid "Restart Calibre-Web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:99
|
#: cps/templates/admin.html:109
|
||||||
msgid "Stop Calibre-Web"
|
msgid "Stop Calibre-Web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:100
|
#: cps/templates/admin.html:115
|
||||||
|
msgid "Update"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:119
|
||||||
|
msgid "Version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:120
|
||||||
|
msgid "Details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:126
|
||||||
|
msgid "Current version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:132
|
||||||
msgid "Check for update"
|
msgid "Check for update"
|
||||||
msgstr "រកមើលបច្ចុប្បន្នភាព"
|
msgstr "រកមើលបច្ចុប្បន្នភាព"
|
||||||
|
|
||||||
#: cps/templates/admin.html:101
|
#: cps/templates/admin.html:133
|
||||||
msgid "Perform Update"
|
msgid "Perform Update"
|
||||||
msgstr "ធ្វើបច្ចុប្បន្នភាព"
|
msgstr "ធ្វើបច្ចុប្បន្នភាព"
|
||||||
|
|
||||||
#: cps/templates/admin.html:110
|
#: cps/templates/admin.html:145
|
||||||
msgid "Do you really want to restart Calibre-Web?"
|
msgid "Do you really want to restart Calibre-Web?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:115 cps/templates/admin.html:129
|
#: cps/templates/admin.html:150 cps/templates/admin.html:164
|
||||||
#: cps/templates/admin.html:150 cps/templates/shelf.html:59
|
#: cps/templates/admin.html:184 cps/templates/shelf.html:59
|
||||||
msgid "Ok"
|
msgid "Ok"
|
||||||
msgstr "បាទ/ចាស"
|
msgstr "បាទ/ចាស"
|
||||||
|
|
||||||
#: cps/templates/admin.html:116 cps/templates/admin.html:130
|
#: cps/templates/admin.html:151 cps/templates/admin.html:165
|
||||||
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
|
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
|
||||||
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
|
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
|
||||||
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
|
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
|
||||||
@ -826,11 +867,11 @@ msgstr "បាទ/ចាស"
|
|||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "មកក្រោយ"
|
msgstr "មកក្រោយ"
|
||||||
|
|
||||||
#: cps/templates/admin.html:128
|
#: cps/templates/admin.html:163
|
||||||
msgid "Do you really want to stop Calibre-Web?"
|
msgid "Do you really want to stop Calibre-Web?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:141
|
#: cps/templates/admin.html:175
|
||||||
msgid "Updating, please do not reload page"
|
msgid "Updating, please do not reload page"
|
||||||
msgstr "កំពុងធ្វើបច្ចុប្បន្នភាព សូមកុំបើកទំព័រជាថ្មី"
|
msgstr "កំពុងធ្វើបច្ចុប្បន្នភាព សូមកុំបើកទំព័រជាថ្មី"
|
||||||
|
|
||||||
@ -911,12 +952,8 @@ msgid "Rating"
|
|||||||
msgstr "ការវាយតម្លៃ"
|
msgstr "ការវាយតម្លៃ"
|
||||||
|
|
||||||
#: cps/templates/book_edit.html:87
|
#: cps/templates/book_edit.html:87
|
||||||
msgid ""
|
msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)"
|
||||||
"Cover URL (jpg, cover is downloaded and stored in database, field is "
|
msgstr "URL របស់ក្របមុខ (ឯកសារ JPG ក្របមុខត្រូវបានទាញយក និងរក្សាទុកក្នុង database ក្រោយមកចន្លោះនេះទទេម្តងទៀត)"
|
||||||
"afterwards empty again)"
|
|
||||||
msgstr ""
|
|
||||||
"URL របស់ក្របមុខ (ឯកសារ JPG ក្របមុខត្រូវបានទាញយក និងរក្សាទុកក្នុង database"
|
|
||||||
" ក្រោយមកចន្លោះនេះទទេម្តងទៀត)"
|
|
||||||
|
|
||||||
#: cps/templates/book_edit.html:91
|
#: cps/templates/book_edit.html:91
|
||||||
msgid "Upload Cover from local drive"
|
msgid "Upload Cover from local drive"
|
||||||
@ -1291,9 +1328,7 @@ msgstr "កែប្រែទិន្នន័យមេតា"
|
|||||||
|
|
||||||
#: cps/templates/email_edit.html:15
|
#: cps/templates/email_edit.html:15
|
||||||
msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)"
|
msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)"
|
||||||
msgstr ""
|
msgstr "លេខ port SMTP (ជាធម្មតាលេខ 25 សម្រាប់ SMTP ធម្មតា ឬ 465 សម្រាប់ SSL ឬ 587 សម្រាប់ STARTTLS)"
|
||||||
"លេខ port SMTP (ជាធម្មតាលេខ 25 សម្រាប់ SMTP ធម្មតា ឬ 465 សម្រាប់ SSL ឬ 587"
|
|
||||||
" សម្រាប់ STARTTLS)"
|
|
||||||
|
|
||||||
#: cps/templates/email_edit.html:19
|
#: cps/templates/email_edit.html:19
|
||||||
msgid "Encryption"
|
msgid "Encryption"
|
||||||
@ -1845,9 +1880,7 @@ msgstr "ការទាញយកថ្មីៗ"
|
|||||||
#~ msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
#~ msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
||||||
#~ msgstr "ប្តូរចំណងជើងពី “%(src)s” ទៅជា “%(dest)s” បរាជ័យដោយបញ្ហា: %(error)s"
|
#~ msgstr "ប្តូរចំណងជើងពី “%(src)s” ទៅជា “%(dest)s” បរាជ័យដោយបញ្ហា: %(error)s"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
||||||
#~ "Rename author from: '%(src)s' to "
|
|
||||||
#~ "'%(dest)s' failed with error: %(error)s"
|
|
||||||
#~ msgstr "ប្តូរអ្នកនិពន្ធពី “%(src)s” ទៅជា “%(dest)s” បរាជ័យដោយបញ្ហា: %(error)s"
|
#~ msgstr "ប្តូរអ្នកនិពន្ធពី “%(src)s” ទៅជា “%(dest)s” បរាជ័យដោយបញ្ហា: %(error)s"
|
||||||
|
|
||||||
#~ msgid "Password for user %(user)s reset"
|
#~ msgid "Password for user %(user)s reset"
|
||||||
@ -1871,3 +1904,9 @@ msgstr "ការទាញយកថ្មីៗ"
|
|||||||
#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
|
#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
|
||||||
#~ msgstr "ឯកសារប្រភេទ “%(ext)s” មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ"
|
#~ msgstr "ឯកសារប្រភេទ “%(ext)s” មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ"
|
||||||
|
|
||||||
|
#~ msgid "Current commit timestamp"
|
||||||
|
#~ msgstr "Commit timestamp បច្ចុប្បន្ន"
|
||||||
|
|
||||||
|
#~ msgid "Newest commit timestamp"
|
||||||
|
#~ msgstr "Commit timestamp ចុងក្រោយគេ"
|
||||||
|
|
||||||
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -3,19 +3,11 @@
|
|||||||
# This file is distributed under the same license as the Calibre-Web
|
# This file is distributed under the same license as the Calibre-Web
|
||||||
# project.
|
# project.
|
||||||
# FIRST AUTHOR dalin <dalin.lin@gmail.com>, 2017.
|
# FIRST AUTHOR dalin <dalin.lin@gmail.com>, 2017.
|
||||||
# # Translation template file..
|
|
||||||
# Copyright (C) 2011 Kovid Goyal
|
|
||||||
#
|
|
||||||
# Translators:
|
|
||||||
# Alastair McKinstry <mckinstry@computer.org>, 2001
|
|
||||||
# LI Daobing <lidaobing@gmail.com>, 2007-2008
|
|
||||||
# nature <wangyihaoa@gmail.com>, 2015
|
|
||||||
# Wang Vincent <susemm@163.com>, 2016
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Calibre-Web\n"
|
"Project-Id-Version: Calibre-Web\n"
|
||||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
|
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
|
||||||
"POT-Creation-Date: 2018-09-08 14:49+0200\n"
|
"POT-Creation-Date: 2018-09-14 21:11+0200\n"
|
||||||
"PO-Revision-Date: 2017-01-06 17:00+0000\n"
|
"PO-Revision-Date: 2017-01-06 17:00+0000\n"
|
||||||
"Last-Translator: dalin <dalin.lin@gmail.com>\n"
|
"Last-Translator: dalin <dalin.lin@gmail.com>\n"
|
||||||
"Language: zh_Hans_CN\n"
|
"Language: zh_Hans_CN\n"
|
||||||
@ -122,707 +114,750 @@ msgstr "执行UnRar时出错"
|
|||||||
msgid "Unrar binary file not found"
|
msgid "Unrar binary file not found"
|
||||||
msgstr "找不到Unrar二进制文件"
|
msgstr "找不到Unrar二进制文件"
|
||||||
|
|
||||||
#: cps/web.py:1114
|
#: cps/web.py:1112 cps/web.py:2778
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "未知"
|
||||||
|
|
||||||
|
#: cps/web.py:1121 cps/web.py:1152
|
||||||
|
msgid "HTTP Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1123 cps/web.py:1154
|
||||||
|
msgid "Connection error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1125 cps/web.py:1156
|
||||||
|
msgid "Timeout while establishing connection"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1127 cps/web.py:1158
|
||||||
|
msgid "General error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1133
|
||||||
|
msgid "Unexpected data while reading update information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1140
|
||||||
|
msgid "No update available. You already have the latest version installed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1165
|
||||||
|
msgid "A new update is available. Click on the button below to update to the latest version."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1215
|
||||||
|
msgid "Could not fetch update information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1230
|
||||||
msgid "Requesting update package"
|
msgid "Requesting update package"
|
||||||
msgstr "正在请求更新包"
|
msgstr "正在请求更新包"
|
||||||
|
|
||||||
#: cps/web.py:1115
|
#: cps/web.py:1231
|
||||||
msgid "Downloading update package"
|
msgid "Downloading update package"
|
||||||
msgstr "正在下载更新包"
|
msgstr "正在下载更新包"
|
||||||
|
|
||||||
#: cps/web.py:1116
|
#: cps/web.py:1232
|
||||||
msgid "Unzipping update package"
|
msgid "Unzipping update package"
|
||||||
msgstr "正在解压更新包"
|
msgstr "正在解压更新包"
|
||||||
|
|
||||||
#: cps/web.py:1117
|
#: cps/web.py:1233
|
||||||
msgid "Files are replaced"
|
msgid "Files are replaced"
|
||||||
msgstr "文件已替换"
|
msgstr "文件已替换"
|
||||||
|
|
||||||
#: cps/web.py:1118
|
#: cps/web.py:1234
|
||||||
msgid "Database connections are closed"
|
msgid "Database connections are closed"
|
||||||
msgstr "数据库连接已关闭"
|
msgstr "数据库连接已关闭"
|
||||||
|
|
||||||
#: cps/web.py:1119
|
#: cps/web.py:1235
|
||||||
msgid "Server is stopped"
|
msgid "Server is stopped"
|
||||||
msgstr "服务器已停止"
|
msgstr "服务器已停止"
|
||||||
|
|
||||||
#: cps/web.py:1120
|
#: cps/web.py:1236
|
||||||
msgid "Update finished, please press okay and reload page"
|
msgid "Update finished, please press okay and reload page"
|
||||||
msgstr "更新完成,请按确定并刷新页面"
|
msgstr "更新完成,请按确定并刷新页面"
|
||||||
|
|
||||||
#: cps/web.py:1140
|
#: cps/web.py:1256
|
||||||
msgid "Recently Added Books"
|
msgid "Recently Added Books"
|
||||||
msgstr "最近添加的书籍"
|
msgstr "最近添加的书籍"
|
||||||
|
|
||||||
#: cps/web.py:1150
|
#: cps/web.py:1266
|
||||||
msgid "Newest Books"
|
msgid "Newest Books"
|
||||||
msgstr "最新书籍"
|
msgstr "最新书籍"
|
||||||
|
|
||||||
#: cps/web.py:1162
|
#: cps/web.py:1278
|
||||||
msgid "Oldest Books"
|
msgid "Oldest Books"
|
||||||
msgstr "最旧书籍"
|
msgstr "最旧书籍"
|
||||||
|
|
||||||
#: cps/web.py:1174
|
#: cps/web.py:1290
|
||||||
msgid "Books (A-Z)"
|
msgid "Books (A-Z)"
|
||||||
msgstr "书籍 (A-Z)"
|
msgstr "书籍 (A-Z)"
|
||||||
|
|
||||||
#: cps/web.py:1185
|
#: cps/web.py:1301
|
||||||
msgid "Books (Z-A)"
|
msgid "Books (Z-A)"
|
||||||
msgstr "书籍 (Z-A)"
|
msgstr "书籍 (Z-A)"
|
||||||
|
|
||||||
#: cps/web.py:1214
|
#: cps/web.py:1330
|
||||||
msgid "Hot Books (most downloaded)"
|
msgid "Hot Books (most downloaded)"
|
||||||
msgstr "热门书籍(最多下载)"
|
msgstr "热门书籍(最多下载)"
|
||||||
|
|
||||||
#: cps/web.py:1227
|
#: cps/web.py:1343
|
||||||
msgid "Best rated books"
|
msgid "Best rated books"
|
||||||
msgstr "最高评分书籍"
|
msgstr "最高评分书籍"
|
||||||
|
|
||||||
#: cps/templates/index.xml:36 cps/web.py:1239
|
#: cps/templates/index.xml:36 cps/web.py:1355
|
||||||
msgid "Random Books"
|
msgid "Random Books"
|
||||||
msgstr "随机书籍"
|
msgstr "随机书籍"
|
||||||
|
|
||||||
#: cps/web.py:1254
|
#: cps/web.py:1370
|
||||||
msgid "Author list"
|
msgid "Author list"
|
||||||
msgstr "作者列表"
|
msgstr "作者列表"
|
||||||
|
|
||||||
#: cps/web.py:1266 cps/web.py:1329 cps/web.py:1484 cps/web.py:2036
|
#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152
|
||||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||||
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
|
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
|
||||||
|
|
||||||
#: cps/templates/index.xml:73 cps/web.py:1313
|
#: cps/templates/index.xml:73 cps/web.py:1429
|
||||||
msgid "Series list"
|
msgid "Series list"
|
||||||
msgstr "丛书列表"
|
msgstr "丛书列表"
|
||||||
|
|
||||||
#: cps/web.py:1327
|
#: cps/web.py:1443
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Series: %(serie)s"
|
msgid "Series: %(serie)s"
|
||||||
msgstr "丛书: %(serie)s"
|
msgstr "丛书: %(serie)s"
|
||||||
|
|
||||||
#: cps/web.py:1354
|
#: cps/web.py:1470
|
||||||
msgid "Available languages"
|
msgid "Available languages"
|
||||||
msgstr "可用语言"
|
msgstr "可用语言"
|
||||||
|
|
||||||
#: cps/web.py:1371
|
#: cps/web.py:1487
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Language: %(name)s"
|
msgid "Language: %(name)s"
|
||||||
msgstr "语言: %(name)s"
|
msgstr "语言: %(name)s"
|
||||||
|
|
||||||
#: cps/templates/index.xml:66 cps/web.py:1382
|
#: cps/templates/index.xml:66 cps/web.py:1498
|
||||||
msgid "Category list"
|
msgid "Category list"
|
||||||
msgstr "分类列表"
|
msgstr "分类列表"
|
||||||
|
|
||||||
#: cps/web.py:1396
|
#: cps/web.py:1512
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Category: %(name)s"
|
msgid "Category: %(name)s"
|
||||||
msgstr "分类: %(name)s"
|
msgstr "分类: %(name)s"
|
||||||
|
|
||||||
#: cps/templates/layout.html:71 cps/web.py:1535
|
#: cps/templates/layout.html:71 cps/web.py:1651
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
msgstr "任务"
|
msgstr "任务"
|
||||||
|
|
||||||
#: cps/web.py:1565
|
#: cps/web.py:1681
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr "统计"
|
msgstr "统计"
|
||||||
|
|
||||||
#: cps/web.py:1670
|
#: cps/web.py:1786
|
||||||
msgid ""
|
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
|
||||||
"Callback domain is not verified, please follow steps to verify domain in "
|
|
||||||
"google developer console"
|
|
||||||
msgstr "回调域名尚未被校验,请在google开发者控制台按步骤校验域名"
|
msgstr "回调域名尚未被校验,请在google开发者控制台按步骤校验域名"
|
||||||
|
|
||||||
#: cps/web.py:1746
|
#: cps/web.py:1861
|
||||||
msgid "Server restarted, please reload page"
|
msgid "Server restarted, please reload page"
|
||||||
msgstr "服务器已重启,请刷新页面"
|
msgstr "服务器已重启,请刷新页面"
|
||||||
|
|
||||||
#: cps/web.py:1749
|
#: cps/web.py:1864
|
||||||
msgid "Performing shutdown of server, please close window"
|
msgid "Performing shutdown of server, please close window"
|
||||||
msgstr "正在关闭服务器,请关闭窗口"
|
msgstr "正在关闭服务器,请关闭窗口"
|
||||||
|
|
||||||
#: cps/web.py:1767
|
#: cps/web.py:1883
|
||||||
msgid "Update done"
|
msgid "Update done"
|
||||||
msgstr "更新完成"
|
msgstr "更新完成"
|
||||||
|
|
||||||
#: cps/web.py:1837
|
#: cps/web.py:1953
|
||||||
msgid "Published after "
|
msgid "Published after "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1844
|
#: cps/web.py:1960
|
||||||
msgid "Published before "
|
msgid "Published before "
|
||||||
msgstr "出版时早于 "
|
msgstr "出版时早于 "
|
||||||
|
|
||||||
#: cps/web.py:1858
|
#: cps/web.py:1974
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rating <= %(rating)s"
|
msgid "Rating <= %(rating)s"
|
||||||
msgstr "评分 <= %(rating)s"
|
msgstr "评分 <= %(rating)s"
|
||||||
|
|
||||||
#: cps/web.py:1860
|
#: cps/web.py:1976
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rating >= %(rating)s"
|
msgid "Rating >= %(rating)s"
|
||||||
msgstr "评分 >= %(rating)s"
|
msgstr "评分 >= %(rating)s"
|
||||||
|
|
||||||
#: cps/web.py:1919 cps/web.py:1928
|
#: cps/web.py:2035 cps/web.py:2044
|
||||||
msgid "search"
|
msgid "search"
|
||||||
msgstr "搜索"
|
msgstr "搜索"
|
||||||
|
|
||||||
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
||||||
#: cps/templates/layout.html:146 cps/web.py:1995
|
#: cps/templates/layout.html:146 cps/web.py:2111
|
||||||
msgid "Read Books"
|
msgid "Read Books"
|
||||||
msgstr "已读书籍"
|
msgstr "已读书籍"
|
||||||
|
|
||||||
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
||||||
#: cps/templates/layout.html:148 cps/web.py:1998
|
#: cps/templates/layout.html:148 cps/web.py:2114
|
||||||
msgid "Unread Books"
|
msgid "Unread Books"
|
||||||
msgstr "未读书籍"
|
msgstr "未读书籍"
|
||||||
|
|
||||||
#: cps/web.py:2046 cps/web.py:2048 cps/web.py:2050 cps/web.py:2062
|
#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178
|
||||||
msgid "Read a Book"
|
msgid "Read a Book"
|
||||||
msgstr "阅读一本书"
|
msgstr "阅读一本书"
|
||||||
|
|
||||||
#: cps/web.py:2128 cps/web.py:3006
|
#: cps/web.py:2244 cps/web.py:3129
|
||||||
msgid "Please fill out all fields!"
|
msgid "Please fill out all fields!"
|
||||||
msgstr "请填写所有字段"
|
msgstr "请填写所有字段"
|
||||||
|
|
||||||
#: cps/web.py:2129 cps/web.py:2150 cps/web.py:2154 cps/web.py:2159
|
#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275
|
||||||
#: cps/web.py:2161
|
#: cps/web.py:2277
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr "注册"
|
msgstr "注册"
|
||||||
|
|
||||||
#: cps/web.py:2149 cps/web.py:3222
|
#: cps/web.py:2265 cps/web.py:3345
|
||||||
msgid "An unknown error occurred. Please try again later."
|
msgid "An unknown error occurred. Please try again later."
|
||||||
msgstr "发生一个未知错误,请稍后再试。"
|
msgstr "发生一个未知错误,请稍后再试。"
|
||||||
|
|
||||||
#: cps/web.py:2152
|
#: cps/web.py:2268
|
||||||
msgid "Your e-mail is not allowed to register"
|
msgid "Your e-mail is not allowed to register"
|
||||||
msgstr "您的邮箱不能用来注册"
|
msgstr "您的邮箱不能用来注册"
|
||||||
|
|
||||||
#: cps/web.py:2155
|
#: cps/web.py:2271
|
||||||
msgid "Confirmation e-mail was send to your e-mail account."
|
msgid "Confirmation e-mail was send to your e-mail account."
|
||||||
msgstr "确认邮件已经发送到您的邮箱。"
|
msgstr "确认邮件已经发送到您的邮箱。"
|
||||||
|
|
||||||
#: cps/web.py:2158
|
#: cps/web.py:2274
|
||||||
msgid "This username or e-mail address is already in use."
|
msgid "This username or e-mail address is already in use."
|
||||||
msgstr "这个用户名或者邮箱已经被使用。"
|
msgstr "这个用户名或者邮箱已经被使用。"
|
||||||
|
|
||||||
#: cps/web.py:2175 cps/web.py:2271
|
#: cps/web.py:2291 cps/web.py:2387
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "you are now logged in as: '%(nickname)s'"
|
msgid "you are now logged in as: '%(nickname)s'"
|
||||||
msgstr "您现在已以'%(nickname)s'身份登录"
|
msgstr "您现在已以'%(nickname)s'身份登录"
|
||||||
|
|
||||||
#: cps/web.py:2180
|
#: cps/web.py:2296
|
||||||
msgid "Wrong Username or Password"
|
msgid "Wrong Username or Password"
|
||||||
msgstr "用户名或密码错误"
|
msgstr "用户名或密码错误"
|
||||||
|
|
||||||
#: cps/web.py:2186 cps/web.py:2207
|
#: cps/web.py:2302 cps/web.py:2323
|
||||||
msgid "login"
|
msgid "login"
|
||||||
msgstr "登录"
|
msgstr "登录"
|
||||||
|
|
||||||
#: cps/web.py:2219 cps/web.py:2250
|
#: cps/web.py:2335 cps/web.py:2366
|
||||||
msgid "Token not found"
|
msgid "Token not found"
|
||||||
msgstr "找不到Token"
|
msgstr "找不到Token"
|
||||||
|
|
||||||
#: cps/web.py:2227 cps/web.py:2258
|
#: cps/web.py:2343 cps/web.py:2374
|
||||||
msgid "Token has expired"
|
msgid "Token has expired"
|
||||||
msgstr "Token已过期"
|
msgstr "Token已过期"
|
||||||
|
|
||||||
#: cps/web.py:2235
|
#: cps/web.py:2351
|
||||||
msgid "Success! Please return to your device"
|
msgid "Success! Please return to your device"
|
||||||
msgstr "成功!请返回您的设备"
|
msgstr "成功!请返回您的设备"
|
||||||
|
|
||||||
#: cps/web.py:2285
|
#: cps/web.py:2401
|
||||||
msgid "Please configure the SMTP mail settings first..."
|
msgid "Please configure the SMTP mail settings first..."
|
||||||
msgstr "请先配置SMTP邮箱..."
|
msgstr "请先配置SMTP邮箱..."
|
||||||
|
|
||||||
#: cps/web.py:2289
|
#: cps/web.py:2405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book successfully queued for sending to %(kindlemail)s"
|
msgid "Book successfully queued for sending to %(kindlemail)s"
|
||||||
msgstr "书籍已经被成功加入 %(kindlemail)s 的发送队列"
|
msgstr "书籍已经被成功加入 %(kindlemail)s 的发送队列"
|
||||||
|
|
||||||
#: cps/web.py:2293
|
#: cps/web.py:2409
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error sending this book: %(res)s"
|
msgid "There was an error sending this book: %(res)s"
|
||||||
msgstr "发送这本书的时候出现错误: %(res)s"
|
msgstr "发送这本书的时候出现错误: %(res)s"
|
||||||
|
|
||||||
#: cps/web.py:2295 cps/web.py:3060
|
#: cps/web.py:2411 cps/web.py:3183
|
||||||
msgid "Please configure your kindle e-mail address first..."
|
msgid "Please configure your kindle e-mail address first..."
|
||||||
msgstr "请先配置您的kindle邮箱..."
|
msgstr "请先配置您的kindle邮箱..."
|
||||||
|
|
||||||
#: cps/web.py:2339
|
#: cps/web.py:2455
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book has been added to shelf: %(sname)s"
|
msgid "Book has been added to shelf: %(sname)s"
|
||||||
msgstr "此书已被添加到书架: %(sname)s"
|
msgstr "此书已被添加到书架: %(sname)s"
|
||||||
|
|
||||||
#: cps/web.py:2350
|
#: cps/web.py:2466
|
||||||
msgid "Invalid shelf specified"
|
msgid "Invalid shelf specified"
|
||||||
msgstr "指定的书架无效"
|
msgstr "指定的书架无效"
|
||||||
|
|
||||||
#: cps/web.py:2355
|
#: cps/web.py:2471
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
||||||
msgstr "您没有添加书籍到书架 %(name)s 的权限"
|
msgstr "您没有添加书籍到书架 %(name)s 的权限"
|
||||||
|
|
||||||
#: cps/web.py:2360
|
#: cps/web.py:2476
|
||||||
msgid "User is not allowed to edit public shelves"
|
msgid "User is not allowed to edit public shelves"
|
||||||
msgstr "用户没有编辑公开书架的权限"
|
msgstr "用户没有编辑公开书架的权限"
|
||||||
|
|
||||||
#: cps/web.py:2378
|
#: cps/web.py:2494
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Books are already part of the shelf: %(name)s"
|
msgid "Books are already part of the shelf: %(name)s"
|
||||||
msgstr "书籍已经在书架 %(name)s 中了"
|
msgstr "书籍已经在书架 %(name)s 中了"
|
||||||
|
|
||||||
#: cps/web.py:2392
|
#: cps/web.py:2508
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Books have been added to shelf: %(sname)s"
|
msgid "Books have been added to shelf: %(sname)s"
|
||||||
msgstr "书籍已经被添加到书架 %(sname)s 中'"
|
msgstr "书籍已经被添加到书架 %(sname)s 中'"
|
||||||
|
|
||||||
#: cps/web.py:2394
|
#: cps/web.py:2510
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not add books to shelf: %(sname)s"
|
msgid "Could not add books to shelf: %(sname)s"
|
||||||
msgstr "无法添加书籍到书架: %(sname)s"
|
msgstr "无法添加书籍到书架: %(sname)s"
|
||||||
|
|
||||||
#: cps/web.py:2431
|
#: cps/web.py:2547
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book has been removed from shelf: %(sname)s"
|
msgid "Book has been removed from shelf: %(sname)s"
|
||||||
msgstr "此书已从书架 %(sname)s 中删除"
|
msgstr "此书已从书架 %(sname)s 中删除"
|
||||||
|
|
||||||
#: cps/web.py:2437
|
#: cps/web.py:2553
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
||||||
msgstr "对不起,您没有从书架 %(sname)s 中删除书籍的权限"
|
msgstr "对不起,您没有从书架 %(sname)s 中删除书籍的权限"
|
||||||
|
|
||||||
#: cps/web.py:2457 cps/web.py:2481
|
#: cps/web.py:2573 cps/web.py:2597
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A shelf with the name '%(title)s' already exists."
|
msgid "A shelf with the name '%(title)s' already exists."
|
||||||
msgstr "已存在书架 '%(title)s'。"
|
msgstr "已存在书架 '%(title)s'。"
|
||||||
|
|
||||||
#: cps/web.py:2462
|
#: cps/web.py:2578
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf %(title)s created"
|
msgid "Shelf %(title)s created"
|
||||||
msgstr "书架 %(title)s 已被创建"
|
msgstr "书架 %(title)s 已被创建"
|
||||||
|
|
||||||
#: cps/web.py:2464 cps/web.py:2492
|
#: cps/web.py:2580 cps/web.py:2608
|
||||||
msgid "There was an error"
|
msgid "There was an error"
|
||||||
msgstr "发生错误"
|
msgstr "发生错误"
|
||||||
|
|
||||||
#: cps/web.py:2465 cps/web.py:2467
|
#: cps/web.py:2581 cps/web.py:2583
|
||||||
msgid "create a shelf"
|
msgid "create a shelf"
|
||||||
msgstr "创建书架"
|
msgstr "创建书架"
|
||||||
|
|
||||||
#: cps/web.py:2490
|
#: cps/web.py:2606
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf %(title)s changed"
|
msgid "Shelf %(title)s changed"
|
||||||
msgstr "书架 %(title)s 已被修改"
|
msgstr "书架 %(title)s 已被修改"
|
||||||
|
|
||||||
#: cps/web.py:2493 cps/web.py:2495
|
#: cps/web.py:2609 cps/web.py:2611
|
||||||
msgid "Edit a shelf"
|
msgid "Edit a shelf"
|
||||||
msgstr "编辑书架"
|
msgstr "编辑书架"
|
||||||
|
|
||||||
#: cps/web.py:2516
|
#: cps/web.py:2632
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "successfully deleted shelf %(name)s"
|
msgid "successfully deleted shelf %(name)s"
|
||||||
msgstr "成功删除书架 %(name)s"
|
msgstr "成功删除书架 %(name)s"
|
||||||
|
|
||||||
#: cps/web.py:2538
|
#: cps/web.py:2659
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf: '%(name)s'"
|
msgid "Shelf: '%(name)s'"
|
||||||
msgstr "书架: '%(name)s'"
|
msgstr "书架: '%(name)s'"
|
||||||
|
|
||||||
#: cps/web.py:2541
|
#: cps/web.py:2662
|
||||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||||
msgstr "打开书架出错。书架不存在或不可访问"
|
msgstr "打开书架出错。书架不存在或不可访问"
|
||||||
|
|
||||||
#: cps/web.py:2572
|
#: cps/web.py:2693
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Change order of Shelf: '%(name)s'"
|
msgid "Change order of Shelf: '%(name)s'"
|
||||||
msgstr "修改书架 '%(name)s' 顺序"
|
msgstr "修改书架 '%(name)s' 顺序"
|
||||||
|
|
||||||
#: cps/web.py:2601 cps/web.py:3012
|
#: cps/web.py:2722 cps/web.py:3135
|
||||||
msgid "E-mail is not from valid domain"
|
msgid "E-mail is not from valid domain"
|
||||||
msgstr "邮箱不在有效域中'"
|
msgstr "邮箱不在有效域中'"
|
||||||
|
|
||||||
#: cps/web.py:2603 cps/web.py:2644 cps/web.py:2647
|
#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s's profile"
|
msgid "%(name)s's profile"
|
||||||
msgstr "%(name)s 的资料"
|
msgstr "%(name)s 的资料"
|
||||||
|
|
||||||
#: cps/web.py:2642
|
#: cps/web.py:2763
|
||||||
msgid "Found an existing account for this e-mail address."
|
msgid "Found an existing account for this e-mail address."
|
||||||
msgstr "找到一个已有账号使用这个邮箱。"
|
msgstr "找到一个已有账号使用这个邮箱。"
|
||||||
|
|
||||||
#: cps/web.py:2645
|
#: cps/web.py:2766
|
||||||
msgid "Profile updated"
|
msgid "Profile updated"
|
||||||
msgstr "资料已更新"
|
msgstr "资料已更新"
|
||||||
|
|
||||||
#: cps/web.py:2657
|
#: cps/web.py:2794
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "未知"
|
|
||||||
|
|
||||||
#: cps/web.py:2671
|
|
||||||
msgid "Admin page"
|
msgid "Admin page"
|
||||||
msgstr "管理页"
|
msgstr "管理页"
|
||||||
|
|
||||||
#: cps/web.py:2749 cps/web.py:2922
|
#: cps/web.py:2872 cps/web.py:3045
|
||||||
msgid "Calibre-Web configuration updated"
|
msgid "Calibre-Web configuration updated"
|
||||||
msgstr "Calibre-Web配置已更新"
|
msgstr "Calibre-Web配置已更新"
|
||||||
|
|
||||||
#: cps/templates/admin.html:91 cps/web.py:2762
|
#: cps/templates/admin.html:100 cps/web.py:2885
|
||||||
msgid "UI Configuration"
|
msgid "UI Configuration"
|
||||||
msgstr "UI配置"
|
msgstr "UI配置"
|
||||||
|
|
||||||
#: cps/web.py:2780
|
#: cps/web.py:2903
|
||||||
msgid "Import of optional Google Drive requirements missing"
|
msgid "Import of optional Google Drive requirements missing"
|
||||||
msgstr "可选的Google Drive依赖导入缺失"
|
msgstr "可选的Google Drive依赖导入缺失"
|
||||||
|
|
||||||
#: cps/web.py:2783
|
#: cps/web.py:2906
|
||||||
msgid "client_secrets.json is missing or not readable"
|
msgid "client_secrets.json is missing or not readable"
|
||||||
msgstr "client_secrets.json文件缺失或不可读"
|
msgstr "client_secrets.json文件缺失或不可读"
|
||||||
|
|
||||||
#: cps/web.py:2788 cps/web.py:2815
|
#: cps/web.py:2911 cps/web.py:2938
|
||||||
msgid "client_secrets.json is not configured for web application"
|
msgid "client_secrets.json is not configured for web application"
|
||||||
msgstr "没有为web应用配置client_secrets.json"
|
msgstr "没有为web应用配置client_secrets.json"
|
||||||
|
|
||||||
#: cps/templates/admin.html:90 cps/web.py:2818 cps/web.py:2844 cps/web.py:2856
|
#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
|
||||||
#: cps/web.py:2898 cps/web.py:2913 cps/web.py:2930 cps/web.py:2937
|
#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
|
||||||
#: cps/web.py:2954
|
#: cps/web.py:3077
|
||||||
msgid "Basic Configuration"
|
msgid "Basic Configuration"
|
||||||
msgstr "基本配置"
|
msgstr "基本配置"
|
||||||
|
|
||||||
#: cps/web.py:2841
|
#: cps/web.py:2964
|
||||||
msgid "Keyfile location is not valid, please enter correct path"
|
msgid "Keyfile location is not valid, please enter correct path"
|
||||||
msgstr "key文件位置无效,请输入正确路径"
|
msgstr "key文件位置无效,请输入正确路径"
|
||||||
|
|
||||||
#: cps/web.py:2853
|
#: cps/web.py:2976
|
||||||
msgid "Certfile location is not valid, please enter correct path"
|
msgid "Certfile location is not valid, please enter correct path"
|
||||||
msgstr "证书文件位置无效,请输入正确路径"
|
msgstr "证书文件位置无效,请输入正确路径"
|
||||||
|
|
||||||
#: cps/web.py:2895
|
#: cps/web.py:3018
|
||||||
msgid "Logfile location is not valid, please enter correct path"
|
msgid "Logfile location is not valid, please enter correct path"
|
||||||
msgstr "日志文件位置无效,请输入正确路径"
|
msgstr "日志文件位置无效,请输入正确路径"
|
||||||
|
|
||||||
#: cps/web.py:2934
|
#: cps/web.py:3057
|
||||||
msgid "DB location is not valid, please enter correct path"
|
msgid "DB location is not valid, please enter correct path"
|
||||||
msgstr "DB位置无效,请输入正确路径"
|
msgstr "DB位置无效,请输入正确路径"
|
||||||
|
|
||||||
#: cps/templates/admin.html:31 cps/web.py:3008 cps/web.py:3014 cps/web.py:3030
|
#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153
|
||||||
msgid "Add new user"
|
msgid "Add new user"
|
||||||
msgstr "添加新用户"
|
msgstr "添加新用户"
|
||||||
|
|
||||||
#: cps/web.py:3020
|
#: cps/web.py:3143
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(user)s' created"
|
msgid "User '%(user)s' created"
|
||||||
msgstr "用户 '%(user)s' 已被创建"
|
msgstr "用户 '%(user)s' 已被创建"
|
||||||
|
|
||||||
#: cps/web.py:3024
|
#: cps/web.py:3147
|
||||||
msgid "Found an existing account for this e-mail address or nickname."
|
msgid "Found an existing account for this e-mail address or nickname."
|
||||||
msgstr "此邮箱或昵称的账号已经存在。"
|
msgstr "此邮箱或昵称的账号已经存在。"
|
||||||
|
|
||||||
#: cps/web.py:3048 cps/web.py:3062
|
#: cps/web.py:3171 cps/web.py:3185
|
||||||
msgid "E-mail server settings updated"
|
msgid "E-mail server settings updated"
|
||||||
msgstr "已更新邮件服务器设置"
|
msgstr "已更新邮件服务器设置"
|
||||||
|
|
||||||
#: cps/web.py:3055
|
#: cps/web.py:3178
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Test e-mail successfully send to %(kindlemail)s"
|
msgid "Test e-mail successfully send to %(kindlemail)s"
|
||||||
msgstr "测试邮件已经被成功发到 %(kindlemail)s"
|
msgstr "测试邮件已经被成功发到 %(kindlemail)s"
|
||||||
|
|
||||||
#: cps/web.py:3058
|
#: cps/web.py:3181
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error sending the Test e-mail: %(res)s"
|
msgid "There was an error sending the Test e-mail: %(res)s"
|
||||||
msgstr "发送测试邮件出错了: %(res)s"
|
msgstr "发送测试邮件出错了: %(res)s"
|
||||||
|
|
||||||
#: cps/web.py:3063
|
#: cps/web.py:3186
|
||||||
msgid "Edit e-mail server settings"
|
msgid "Edit e-mail server settings"
|
||||||
msgstr "编辑邮箱服务器设置"
|
msgstr "编辑邮箱服务器设置"
|
||||||
|
|
||||||
#: cps/web.py:3088
|
#: cps/web.py:3211
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(nick)s' deleted"
|
msgid "User '%(nick)s' deleted"
|
||||||
msgstr "用户 '%(nick)s' 已被删除"
|
msgstr "用户 '%(nick)s' 已被删除"
|
||||||
|
|
||||||
#: cps/web.py:3197
|
#: cps/web.py:3320
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(nick)s' updated"
|
msgid "User '%(nick)s' updated"
|
||||||
msgstr "用户 '%(nick)s' 已被更新"
|
msgstr "用户 '%(nick)s' 已被更新"
|
||||||
|
|
||||||
#: cps/web.py:3200
|
#: cps/web.py:3323
|
||||||
msgid "An unknown error occured."
|
msgid "An unknown error occured."
|
||||||
msgstr "发生未知错误。"
|
msgstr "发生未知错误。"
|
||||||
|
|
||||||
#: cps/web.py:3202
|
#: cps/web.py:3325
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Edit User %(nick)s"
|
msgid "Edit User %(nick)s"
|
||||||
msgstr "编辑用户 %(nick)s"
|
msgstr "编辑用户 %(nick)s"
|
||||||
|
|
||||||
#: cps/web.py:3219
|
#: cps/web.py:3342
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Password for user %(user)s reset"
|
msgid "Password for user %(user)s reset"
|
||||||
msgstr "用户 %(user)s 的密码已重置"
|
msgstr "用户 %(user)s 的密码已重置"
|
||||||
|
|
||||||
#: cps/web.py:3239
|
#: cps/web.py:3362
|
||||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||||
msgstr "打开电子书出错。文件不存在或不可访问"
|
msgstr "打开电子书出错。文件不存在或不可访问"
|
||||||
|
|
||||||
#: cps/web.py:3270 cps/web.py:3546 cps/web.py:3551 cps/web.py:3706
|
#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
|
||||||
msgid "edit metadata"
|
msgid "edit metadata"
|
||||||
msgstr "编辑元数据"
|
msgstr "编辑元数据"
|
||||||
|
|
||||||
#: cps/web.py:3284 cps/web.py:3576
|
#: cps/web.py:3401 cps/web.py:3697
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
|
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
|
||||||
msgstr "不能上传后缀为 '%(ext)s' 的文件到此服务器"
|
msgstr "不能上传后缀为 '%(ext)s' 的文件到此服务器"
|
||||||
|
|
||||||
#: cps/web.py:3288 cps/web.py:3580
|
#: cps/web.py:3405 cps/web.py:3701
|
||||||
msgid "File to be uploaded must have an extension"
|
msgid "File to be uploaded must have an extension"
|
||||||
msgstr "要上传的文件必须有一个后缀"
|
msgstr "要上传的文件必须有一个后缀"
|
||||||
|
|
||||||
#: cps/web.py:3300 cps/web.py:3600
|
#: cps/web.py:3417 cps/web.py:3721
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to create path %(path)s (Permission denied)."
|
msgid "Failed to create path %(path)s (Permission denied)."
|
||||||
msgstr "创建路径 %(path)s 失败(权限拒绝)。"
|
msgstr "创建路径 %(path)s 失败(权限拒绝)。"
|
||||||
|
|
||||||
#: cps/web.py:3305
|
#: cps/web.py:3422
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store file %(file)s."
|
msgid "Failed to store file %(file)s."
|
||||||
msgstr "保存文件 %(file)s 失败。"
|
msgstr "保存文件 %(file)s 失败。"
|
||||||
|
|
||||||
#: cps/web.py:3321
|
#: cps/web.py:3438
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File format %(ext)s added to %(book)s"
|
msgid "File format %(ext)s added to %(book)s"
|
||||||
msgstr "已添加 %(ext)s 格式到 %(book)s"
|
msgstr "已添加 %(ext)s 格式到 %(book)s"
|
||||||
|
|
||||||
#: cps/web.py:3339
|
#: cps/web.py:3455
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3346
|
#: cps/web.py:3462
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store cover-file %(cover)s."
|
msgid "Failed to store cover-file %(cover)s."
|
||||||
msgstr "保存封面文件 %(cover)s 失败。"
|
msgstr "保存封面文件 %(cover)s 失败。"
|
||||||
|
|
||||||
#: cps/web.py:3349
|
#: cps/web.py:3465
|
||||||
msgid "Cover-file is not a valid image file"
|
msgid "Cover-file is not a valid image file"
|
||||||
msgstr "封面文件不是一个有效的图片文件"
|
msgstr "封面文件不是一个有效的图片文件"
|
||||||
|
|
||||||
#: cps/web.py:3362 cps/web.py:3366
|
#: cps/web.py:3482 cps/web.py:3486
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr "未知"
|
msgstr "未知"
|
||||||
|
|
||||||
#: cps/web.py:3388
|
#: cps/web.py:3508
|
||||||
msgid "Cover is not a jpg file, can't save"
|
msgid "Cover is not a jpg file, can't save"
|
||||||
msgstr "封面不是一个jpg文件,无法保存"
|
msgstr "封面不是一个jpg文件,无法保存"
|
||||||
|
|
||||||
#: cps/web.py:3555
|
#: cps/web.py:3554
|
||||||
|
#, python-format
|
||||||
|
msgid "%(langname)s is not a valid language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:3676
|
||||||
msgid "Error editing book, please check logfile for details"
|
msgid "Error editing book, please check logfile for details"
|
||||||
msgstr "编辑书籍出错,详情请检查日志文件"
|
msgstr "编辑书籍出错,详情请检查日志文件"
|
||||||
|
|
||||||
#: cps/web.py:3605
|
#: cps/web.py:3726
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store file %(file)s (Permission denied)."
|
msgid "Failed to store file %(file)s (Permission denied)."
|
||||||
msgstr "存储文件 %(file)s 失败(权限拒绝)。"
|
msgstr "存储文件 %(file)s 失败(权限拒绝)。"
|
||||||
|
|
||||||
#: cps/web.py:3610
|
#: cps/web.py:3731
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to delete file %(file)s (Permission denied)."
|
msgid "Failed to delete file %(file)s (Permission denied)."
|
||||||
msgstr "删除文件 %(file)s 失败(权限拒绝)。"
|
msgstr "删除文件 %(file)s 失败(权限拒绝)。"
|
||||||
|
|
||||||
#: cps/web.py:3692
|
#: cps/web.py:3813
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File %(file)s uploaded"
|
msgid "File %(file)s uploaded"
|
||||||
msgstr "文件 %(file)s 已上传"
|
msgstr "文件 %(file)s 已上传"
|
||||||
|
|
||||||
#: cps/web.py:3722
|
#: cps/web.py:3843
|
||||||
msgid "Source or destination format for conversion missing"
|
msgid "Source or destination format for conversion missing"
|
||||||
msgstr "转换的源或目的格式缺失"
|
msgstr "转换的源或目的格式缺失"
|
||||||
|
|
||||||
#: cps/web.py:3732
|
#: cps/web.py:3853
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book successfully queued for converting to %(book_format)s"
|
msgid "Book successfully queued for converting to %(book_format)s"
|
||||||
msgstr "书籍已经被成功加入 %(book_format)s 的转换队列"
|
msgstr "书籍已经被成功加入 %(book_format)s 的转换队列"
|
||||||
|
|
||||||
#: cps/web.py:3736
|
#: cps/web.py:3857
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error converting this book: %(res)s"
|
msgid "There was an error converting this book: %(res)s"
|
||||||
msgstr "转换此书时出现错误: %(res)s"
|
msgstr "转换此书时出现错误: %(res)s"
|
||||||
|
|
||||||
#: cps/worker.py:215 cps/worker.py:387
|
#: cps/worker.py:215 cps/worker.py:398
|
||||||
msgid "Started"
|
msgid "Started"
|
||||||
msgstr "已开始"
|
msgstr "已开始"
|
||||||
|
|
||||||
#: cps/worker.py:237
|
#: cps/worker.py:251
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Convertertool %(converter)s not found"
|
msgid "Convertertool %(converter)s not found"
|
||||||
msgstr "找不到转换工具 $(converter)s"
|
msgstr "找不到转换工具 $(converter)s"
|
||||||
|
|
||||||
#: cps/worker.py:272
|
#: cps/worker.py:287
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Ebook-converter failed: %(error)s"
|
msgid "Ebook-converter failed: %(error)s"
|
||||||
msgstr "电子书转换器失败: %(error)s"
|
msgstr "电子书转换器失败: %(error)s"
|
||||||
|
|
||||||
#: cps/worker.py:283
|
#: cps/worker.py:298
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||||
msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s"
|
msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s"
|
||||||
|
|
||||||
#: cps/worker.py:317 cps/worker.py:377 cps/worker.py:438
|
#: cps/worker.py:355 cps/worker.py:374
|
||||||
msgid "Finished"
|
|
||||||
msgstr "已完成"
|
|
||||||
|
|
||||||
#: cps/worker.py:344 cps/worker.py:363
|
|
||||||
msgid "Waiting"
|
msgid "Waiting"
|
||||||
msgstr "等待中"
|
msgstr "等待中"
|
||||||
|
|
||||||
#: cps/worker.py:351
|
#: cps/worker.py:362
|
||||||
msgid "This e-mail has been sent via Calibre-Web."
|
msgid "This e-mail has been sent via Calibre-Web."
|
||||||
msgstr "此邮件已经通过Calibre-Web发送"
|
msgstr "此邮件已经通过Calibre-Web发送"
|
||||||
|
|
||||||
#: cps/worker.py:472
|
#: cps/worker.py:388 cps/worker.py:484
|
||||||
|
msgid "Finished"
|
||||||
|
msgstr "已完成"
|
||||||
|
|
||||||
|
#: cps/worker.py:476
|
||||||
msgid "Failed"
|
msgid "Failed"
|
||||||
msgstr "失败"
|
msgstr "失败"
|
||||||
|
|
||||||
#: cps/templates/admin.html:4
|
#: cps/templates/admin.html:6
|
||||||
msgid "User list"
|
msgid "User list"
|
||||||
msgstr "用户列表"
|
msgstr "用户列表"
|
||||||
|
|
||||||
#: cps/templates/admin.html:7
|
#: cps/templates/admin.html:9
|
||||||
msgid "Nickname"
|
msgid "Nickname"
|
||||||
msgstr "昵称"
|
msgstr "昵称"
|
||||||
|
|
||||||
#: cps/templates/admin.html:8
|
#: cps/templates/admin.html:10
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:9
|
#: cps/templates/admin.html:11
|
||||||
msgid "Kindle"
|
msgid "Kindle"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:10
|
#: cps/templates/admin.html:12
|
||||||
msgid "DLS"
|
msgid "DLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:11 cps/templates/layout.html:74
|
#: cps/templates/admin.html:13 cps/templates/layout.html:74
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "管理"
|
msgstr "管理"
|
||||||
|
|
||||||
#: cps/templates/admin.html:12 cps/templates/detail.html:22
|
#: cps/templates/admin.html:14 cps/templates/detail.html:22
|
||||||
#: cps/templates/detail.html:31
|
#: cps/templates/detail.html:31
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr "下载"
|
msgstr "下载"
|
||||||
|
|
||||||
#: cps/templates/admin.html:13 cps/templates/layout.html:64
|
#: cps/templates/admin.html:15 cps/templates/layout.html:64
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr "上传"
|
msgstr "上传"
|
||||||
|
|
||||||
#: cps/templates/admin.html:14
|
#: cps/templates/admin.html:16
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr "编辑"
|
msgstr "编辑"
|
||||||
|
|
||||||
#: cps/templates/admin.html:32
|
#: cps/templates/admin.html:39
|
||||||
msgid "SMTP e-mail server settings"
|
msgid "SMTP e-mail server settings"
|
||||||
msgstr "SMTP邮件服务器设置"
|
msgstr "SMTP邮件服务器设置"
|
||||||
|
|
||||||
#: cps/templates/admin.html:35 cps/templates/email_edit.html:11
|
#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
|
||||||
msgid "SMTP hostname"
|
msgid "SMTP hostname"
|
||||||
msgstr "SMTP地址"
|
msgstr "SMTP地址"
|
||||||
|
|
||||||
#: cps/templates/admin.html:36
|
#: cps/templates/admin.html:43
|
||||||
msgid "SMTP port"
|
msgid "SMTP port"
|
||||||
msgstr "SMTP端口"
|
msgstr "SMTP端口"
|
||||||
|
|
||||||
#: cps/templates/admin.html:37
|
#: cps/templates/admin.html:44
|
||||||
msgid "SSL"
|
msgid "SSL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:38 cps/templates/email_edit.html:27
|
#: cps/templates/admin.html:45 cps/templates/email_edit.html:27
|
||||||
msgid "SMTP login"
|
msgid "SMTP login"
|
||||||
msgstr "SMTP用户名"
|
msgstr "SMTP用户名"
|
||||||
|
|
||||||
#: cps/templates/admin.html:39
|
#: cps/templates/admin.html:46
|
||||||
msgid "From mail"
|
msgid "From mail"
|
||||||
msgstr "来自邮箱"
|
msgstr "来自邮箱"
|
||||||
|
|
||||||
#: cps/templates/admin.html:48
|
#: cps/templates/admin.html:56
|
||||||
msgid "Change SMTP settings"
|
msgid "Change SMTP settings"
|
||||||
msgstr "修改SMTP设置"
|
msgstr "修改SMTP设置"
|
||||||
|
|
||||||
#: cps/templates/admin.html:50
|
#: cps/templates/admin.html:62
|
||||||
msgid "Configuration"
|
msgid "Configuration"
|
||||||
msgstr "配置"
|
msgstr "配置"
|
||||||
|
|
||||||
#: cps/templates/admin.html:53
|
#: cps/templates/admin.html:65
|
||||||
msgid "Calibre DB dir"
|
msgid "Calibre DB dir"
|
||||||
msgstr "Calibre DB目录"
|
msgstr "Calibre DB目录"
|
||||||
|
|
||||||
#: cps/templates/admin.html:57
|
#: cps/templates/admin.html:69
|
||||||
msgid "Log level"
|
msgid "Log level"
|
||||||
msgstr "日志级别"
|
msgstr "日志级别"
|
||||||
|
|
||||||
#: cps/templates/admin.html:61
|
#: cps/templates/admin.html:73
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "端口"
|
msgstr "端口"
|
||||||
|
|
||||||
#: cps/templates/admin.html:67 cps/templates/config_view_edit.html:23
|
#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23
|
||||||
msgid "Books per page"
|
msgid "Books per page"
|
||||||
msgstr "每页书籍数"
|
msgstr "每页书籍数"
|
||||||
|
|
||||||
#: cps/templates/admin.html:71
|
#: cps/templates/admin.html:83
|
||||||
msgid "Uploading"
|
msgid "Uploading"
|
||||||
msgstr "上传"
|
msgstr "上传"
|
||||||
|
|
||||||
#: cps/templates/admin.html:75
|
#: cps/templates/admin.html:87
|
||||||
msgid "Anonymous browsing"
|
msgid "Anonymous browsing"
|
||||||
msgstr "匿名浏览"
|
msgstr "匿名浏览"
|
||||||
|
|
||||||
#: cps/templates/admin.html:79
|
#: cps/templates/admin.html:91
|
||||||
msgid "Public registration"
|
msgid "Public registration"
|
||||||
msgstr "开放注册"
|
msgstr "开放注册"
|
||||||
|
|
||||||
#: cps/templates/admin.html:83 cps/templates/remote_login.html:4
|
#: cps/templates/admin.html:95 cps/templates/remote_login.html:4
|
||||||
msgid "Remote login"
|
msgid "Remote login"
|
||||||
msgstr "远程登录"
|
msgstr "远程登录"
|
||||||
|
|
||||||
#: cps/templates/admin.html:93
|
#: cps/templates/admin.html:106
|
||||||
msgid "Administration"
|
msgid "Administration"
|
||||||
msgstr "管理"
|
msgstr "管理"
|
||||||
|
|
||||||
#: cps/templates/admin.html:94
|
#: cps/templates/admin.html:107
|
||||||
msgid "Current commit timestamp"
|
|
||||||
msgstr "当前提交时间戳"
|
|
||||||
|
|
||||||
#: cps/templates/admin.html:95
|
|
||||||
msgid "Newest commit timestamp"
|
|
||||||
msgstr "最新提交时间戳"
|
|
||||||
|
|
||||||
#: cps/templates/admin.html:97
|
|
||||||
msgid "Reconnect to Calibre DB"
|
msgid "Reconnect to Calibre DB"
|
||||||
msgstr "重新连接到Calibre数据库"
|
msgstr "重新连接到Calibre数据库"
|
||||||
|
|
||||||
#: cps/templates/admin.html:98
|
#: cps/templates/admin.html:108
|
||||||
msgid "Restart Calibre-Web"
|
msgid "Restart Calibre-Web"
|
||||||
msgstr "重启 Calibre-Web"
|
msgstr "重启 Calibre-Web"
|
||||||
|
|
||||||
#: cps/templates/admin.html:99
|
#: cps/templates/admin.html:109
|
||||||
msgid "Stop Calibre-Web"
|
msgid "Stop Calibre-Web"
|
||||||
msgstr "停止 Calibre-Web"
|
msgstr "停止 Calibre-Web"
|
||||||
|
|
||||||
#: cps/templates/admin.html:100
|
#: cps/templates/admin.html:115
|
||||||
|
msgid "Update"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:119
|
||||||
|
msgid "Version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:120
|
||||||
|
msgid "Details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:126
|
||||||
|
msgid "Current version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:132
|
||||||
msgid "Check for update"
|
msgid "Check for update"
|
||||||
msgstr "检查更新"
|
msgstr "检查更新"
|
||||||
|
|
||||||
#: cps/templates/admin.html:101
|
#: cps/templates/admin.html:133
|
||||||
msgid "Perform Update"
|
msgid "Perform Update"
|
||||||
msgstr "执行更新"
|
msgstr "执行更新"
|
||||||
|
|
||||||
#: cps/templates/admin.html:110
|
#: cps/templates/admin.html:145
|
||||||
msgid "Do you really want to restart Calibre-Web?"
|
msgid "Do you really want to restart Calibre-Web?"
|
||||||
msgstr "您确定要重启 Calibre-Web 吗?"
|
msgstr "您确定要重启 Calibre-Web 吗?"
|
||||||
|
|
||||||
#: cps/templates/admin.html:115 cps/templates/admin.html:129
|
#: cps/templates/admin.html:150 cps/templates/admin.html:164
|
||||||
#: cps/templates/admin.html:150 cps/templates/shelf.html:59
|
#: cps/templates/admin.html:184 cps/templates/shelf.html:59
|
||||||
msgid "Ok"
|
msgid "Ok"
|
||||||
msgstr "确定"
|
msgstr "确定"
|
||||||
|
|
||||||
#: cps/templates/admin.html:116 cps/templates/admin.html:130
|
#: cps/templates/admin.html:151 cps/templates/admin.html:165
|
||||||
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
|
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
|
||||||
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
|
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
|
||||||
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
|
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
|
||||||
@ -831,11 +866,11 @@ msgstr "确定"
|
|||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "后退"
|
msgstr "后退"
|
||||||
|
|
||||||
#: cps/templates/admin.html:128
|
#: cps/templates/admin.html:163
|
||||||
msgid "Do you really want to stop Calibre-Web?"
|
msgid "Do you really want to stop Calibre-Web?"
|
||||||
msgstr "您确定要关闭 Calibre-Web 吗?"
|
msgstr "您确定要关闭 Calibre-Web 吗?"
|
||||||
|
|
||||||
#: cps/templates/admin.html:141
|
#: cps/templates/admin.html:175
|
||||||
msgid "Updating, please do not reload page"
|
msgid "Updating, please do not reload page"
|
||||||
msgstr "正在更新,请不要刷新页面"
|
msgstr "正在更新,请不要刷新页面"
|
||||||
|
|
||||||
@ -916,9 +951,7 @@ msgid "Rating"
|
|||||||
msgstr "评分"
|
msgstr "评分"
|
||||||
|
|
||||||
#: cps/templates/book_edit.html:87
|
#: cps/templates/book_edit.html:87
|
||||||
msgid ""
|
msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)"
|
||||||
"Cover URL (jpg, cover is downloaded and stored in database, field is "
|
|
||||||
"afterwards empty again)"
|
|
||||||
msgstr "封面URL(jpg,封面会被下载被保存在数据库中,然后字段会被重新清空)"
|
msgstr "封面URL(jpg,封面会被下载被保存在数据库中,然后字段会被重新清空)"
|
||||||
|
|
||||||
#: cps/templates/book_edit.html:91
|
#: cps/templates/book_edit.html:91
|
||||||
@ -1849,9 +1882,7 @@ msgstr "最近下载"
|
|||||||
#~ msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
#~ msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
||||||
#~ msgstr "将标题从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s"
|
#~ msgstr "将标题从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
|
||||||
#~ "Rename author from: '%(src)s' to "
|
|
||||||
#~ "'%(dest)s' failed with error: %(error)s"
|
|
||||||
#~ msgstr "将作者从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s"
|
#~ msgstr "将作者从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s"
|
||||||
|
|
||||||
#~ msgid "Password for user %(user)s reset"
|
#~ msgid "Password for user %(user)s reset"
|
||||||
@ -1875,3 +1906,9 @@ msgstr "最近下载"
|
|||||||
#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
|
#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
|
||||||
#~ msgstr "不能上传后缀为 \"%(ext)s\" 的文件到此服务器"
|
#~ msgstr "不能上传后缀为 \"%(ext)s\" 的文件到此服务器"
|
||||||
|
|
||||||
|
#~ msgid "Current commit timestamp"
|
||||||
|
#~ msgstr "当前提交时间戳"
|
||||||
|
|
||||||
|
#~ msgid "Newest commit timestamp"
|
||||||
|
#~ msgstr "最新提交时间戳"
|
||||||
|
|
||||||
|
128
cps/web.py
128
cps/web.py
@ -41,6 +41,8 @@ from flask import (Flask, render_template, request, Response, redirect,
|
|||||||
url_for, send_from_directory, make_response, g, flash,
|
url_for, send_from_directory, make_response, g, flash,
|
||||||
abort, Markup)
|
abort, Markup)
|
||||||
from flask import __version__ as flaskVersion
|
from flask import __version__ as flaskVersion
|
||||||
|
from werkzeug import __version__ as werkzeugVersion
|
||||||
|
from jinja2 import __version__ as jinja2Version
|
||||||
import cache_buster
|
import cache_buster
|
||||||
import ub
|
import ub
|
||||||
from ub import config
|
from ub import config
|
||||||
@ -85,6 +87,10 @@ import hashlib
|
|||||||
from redirect import redirect_back
|
from redirect import redirect_back
|
||||||
import time
|
import time
|
||||||
import server
|
import server
|
||||||
|
try:
|
||||||
|
import cPickle
|
||||||
|
except ImportError:
|
||||||
|
import pickle as cPickle
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
@ -103,10 +109,12 @@ current_milli_time = lambda: int(round(time.time() * 1000))
|
|||||||
# Global variables
|
# Global variables
|
||||||
gdrive_watch_callback_token = 'target=calibreweb-watch_files'
|
gdrive_watch_callback_token = 'target=calibreweb-watch_files'
|
||||||
|
|
||||||
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'epub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'cbt', 'djvu', 'prc', 'doc', 'docx',
|
EXTENSIONS_UPLOAD = {'txt', 'pdf', 'epub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'cbt', 'djvu', 'prc', 'doc', 'docx',
|
||||||
'fb2'}
|
'fb2', 'html', 'rtf', 'odt'}
|
||||||
# READER_EXTENSIONS = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + (['rar','cbr'] if rar_support else []))
|
EXTENSIONS_CONVERT = {'pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'html', 'rtf', 'odt'}
|
||||||
# READER_EXTENSIONS = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt', 'rar', 'cbr'])
|
|
||||||
|
# EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + (['rar','cbr'] if rar_support else []))
|
||||||
|
|
||||||
|
|
||||||
def md5(fname):
|
def md5(fname):
|
||||||
hash_md5 = hashlib.md5()
|
hash_md5 = hashlib.md5()
|
||||||
@ -183,7 +191,6 @@ logging.getLogger("book_formats").addHandler(file_handler)
|
|||||||
logging.getLogger("book_formats").setLevel(config.config_log_level)
|
logging.getLogger("book_formats").setLevel(config.config_log_level)
|
||||||
|
|
||||||
Principal(app)
|
Principal(app)
|
||||||
|
|
||||||
babel = Babel(app)
|
babel = Babel(app)
|
||||||
|
|
||||||
import uploader
|
import uploader
|
||||||
@ -195,6 +202,9 @@ lm.anonymous_user = ub.Anonymous
|
|||||||
app.secret_key = os.getenv('SECRET_KEY', 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT')
|
app.secret_key = os.getenv('SECRET_KEY', 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT')
|
||||||
db.setup_db()
|
db.setup_db()
|
||||||
|
|
||||||
|
with open(os.path.join(config.get_main_dir, 'cps/translations/iso639.pickle'), 'rb') as f:
|
||||||
|
language_table = cPickle.load(f)
|
||||||
|
|
||||||
|
|
||||||
def is_gdrive_ready():
|
def is_gdrive_ready():
|
||||||
return os.path.exists(os.path.join(config.get_main_dir, 'settings.yaml')) and \
|
return os.path.exists(os.path.join(config.get_main_dir, 'settings.yaml')) and \
|
||||||
@ -418,7 +428,7 @@ def yesno(value, yes, no):
|
|||||||
def canread(ext):
|
def canread(ext):
|
||||||
if isinstance(ext, db.Data):
|
if isinstance(ext, db.Data):
|
||||||
ext = ext.format
|
ext = ext.format
|
||||||
return ext.lower() in READER_EXTENSIONS'''
|
return ext.lower() in EXTENSIONS_READER'''
|
||||||
|
|
||||||
|
|
||||||
def admin_required(f):
|
def admin_required(f):
|
||||||
@ -582,7 +592,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session
|
|||||||
new_element = db_object(add_element, add_element)
|
new_element = db_object(add_element, add_element)
|
||||||
elif db_type == 'custom':
|
elif db_type == 'custom':
|
||||||
new_element = db_object(value=add_element)
|
new_element = db_object(value=add_element)
|
||||||
else: # db_type should be tag, or languages
|
else: # db_type should be tag, language or publisher
|
||||||
new_element = db_object(add_element)
|
new_element = db_object(add_element)
|
||||||
db_session.add(new_element)
|
db_session.add(new_element)
|
||||||
# add element to book
|
# add element to book
|
||||||
@ -1036,9 +1046,14 @@ def get_tags_json():
|
|||||||
def get_languages_json():
|
def get_languages_json():
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
query = request.args.get('q').lower()
|
query = request.args.get('q').lower()
|
||||||
languages = speaking_language()
|
# languages = speaking_language()
|
||||||
entries = [s for s in languages if query in s.name.lower()]
|
languages = language_table[get_locale()]
|
||||||
json_dumps = json.dumps([dict(name=r.name) for r in entries])
|
entries_start = [s for key, s in languages.items() if s.lower().startswith(query.lower())]
|
||||||
|
if len(entries_start) < 5:
|
||||||
|
entries = [s for key,s in languages.items() if query in s.lower()]
|
||||||
|
entries_start.extend(entries[0:(5-len(entries_start))])
|
||||||
|
entries_start = list(set(entries_start))
|
||||||
|
json_dumps = json.dumps([dict(name=r) for r in entries_start[0:5]])
|
||||||
return json_dumps
|
return json_dumps
|
||||||
|
|
||||||
|
|
||||||
@ -1149,7 +1164,7 @@ def get_update_status():
|
|||||||
|
|
||||||
if 'committer' in update_data and 'message' in update_data:
|
if 'committer' in update_data and 'message' in update_data:
|
||||||
status['success'] = True
|
status['success'] = True
|
||||||
status['message'] = _(u'A new update is available. Click on the button below update to the latest version.')
|
status['message'] = _(u'A new update is available. Click on the button below to update to the latest version.')
|
||||||
|
|
||||||
new_commit_date = datetime.datetime.strptime(
|
new_commit_date = datetime.datetime.strptime(
|
||||||
update_data['committer']['date'], '%Y-%m-%dT%H:%M:%SZ') - tz
|
update_data['committer']['date'], '%Y-%m-%dT%H:%M:%SZ') - tz
|
||||||
@ -1652,8 +1667,10 @@ def stats():
|
|||||||
categorys = db.session.query(db.Tags).count()
|
categorys = db.session.query(db.Tags).count()
|
||||||
series = db.session.query(db.Series).count()
|
series = db.session.query(db.Series).count()
|
||||||
versions = uploader.book_formats.get_versions()
|
versions = uploader.book_formats.get_versions()
|
||||||
versions['Babel'] = 'v'+babelVersion
|
versions['Babel'] = 'v' + babelVersion
|
||||||
versions['Sqlalchemy'] = 'v'+sqlalchemyVersion
|
versions['Sqlalchemy'] = 'v' + sqlalchemyVersion
|
||||||
|
versions['Werkzeug'] = 'v' + werkzeugVersion
|
||||||
|
versions['Jinja2'] = 'v' + jinja2Version
|
||||||
versions['Flask'] = 'v'+flaskVersion
|
versions['Flask'] = 'v'+flaskVersion
|
||||||
versions['Flask Login'] = 'v'+flask_loginVersion
|
versions['Flask Login'] = 'v'+flask_loginVersion
|
||||||
versions['Flask Principal'] = 'v'+flask_principalVersion
|
versions['Flask Principal'] = 'v'+flask_principalVersion
|
||||||
@ -1689,7 +1706,7 @@ def delete_book(book_id, book_format):
|
|||||||
modify_database_object([u''], book.tags, db.Tags, db.session, 'tags')
|
modify_database_object([u''], book.tags, db.Tags, db.session, 'tags')
|
||||||
modify_database_object([u''], book.series, db.Series, db.session, 'series')
|
modify_database_object([u''], book.series, db.Series, db.session, 'series')
|
||||||
modify_database_object([u''], book.languages, db.Languages, db.session, 'languages')
|
modify_database_object([u''], book.languages, db.Languages, db.session, 'languages')
|
||||||
modify_database_object([u''], book.publishers, db.Publishers, db.session, 'series')
|
modify_database_object([u''], book.publishers, db.Publishers, db.session, 'publishers')
|
||||||
|
|
||||||
cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
|
cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
|
||||||
for c in cc:
|
for c in cc:
|
||||||
@ -2406,18 +2423,22 @@ def add_to_shelf(shelf_id, book_id):
|
|||||||
if shelf is None:
|
if shelf is None:
|
||||||
app.logger.info("Invalid shelf specified")
|
app.logger.info("Invalid shelf specified")
|
||||||
if not request.is_xhr:
|
if not request.is_xhr:
|
||||||
|
flash(_(u"Invalid shelf specified"), category="error")
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
return "Invalid shelf specified", 400
|
return "Invalid shelf specified", 400
|
||||||
|
|
||||||
if not shelf.is_public and not shelf.user_id == int(current_user.id):
|
if not shelf.is_public and not shelf.user_id == int(current_user.id):
|
||||||
app.logger.info("Sorry you are not allowed to add a book to the the shelf: %s" % shelf.name)
|
app.logger.info("Sorry you are not allowed to add a book to the the shelf: %s" % shelf.name)
|
||||||
if not request.is_xhr:
|
if not request.is_xhr:
|
||||||
|
flash(_(u"Sorry you are not allowed to add a book to the the shelf: %(shelfname)s", shelfname=shelf.name),
|
||||||
|
category="error")
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
return "Sorry you are not allowed to add a book to the the shelf: %s" % shelf.name, 403
|
return "Sorry you are not allowed to add a book to the the shelf: %s" % shelf.name, 403
|
||||||
|
|
||||||
if shelf.is_public and not current_user.role_edit_shelfs():
|
if shelf.is_public and not current_user.role_edit_shelfs():
|
||||||
app.logger.info("User is not allowed to edit public shelves")
|
app.logger.info("User is not allowed to edit public shelves")
|
||||||
if not request.is_xhr:
|
if not request.is_xhr:
|
||||||
|
flash(_(u"You are not allowed to edit public shelves"), category="error")
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
return "User is not allowed to edit public shelves", 403
|
return "User is not allowed to edit public shelves", 403
|
||||||
|
|
||||||
@ -2426,6 +2447,7 @@ def add_to_shelf(shelf_id, book_id):
|
|||||||
if book_in_shelf:
|
if book_in_shelf:
|
||||||
app.logger.info("Book is already part of the shelf: %s" % shelf.name)
|
app.logger.info("Book is already part of the shelf: %s" % shelf.name)
|
||||||
if not request.is_xhr:
|
if not request.is_xhr:
|
||||||
|
flash(_(u"Book is already part of the shelf: %(shelfname)s", shelfname=shelf.name), category="error")
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
return "Book is already part of the shelf: %s" % shelf.name, 400
|
return "Book is already part of the shelf: %s" % shelf.name, 400
|
||||||
|
|
||||||
@ -2440,7 +2462,10 @@ def add_to_shelf(shelf_id, book_id):
|
|||||||
ub.session.commit()
|
ub.session.commit()
|
||||||
if not request.is_xhr:
|
if not request.is_xhr:
|
||||||
flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success")
|
flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success")
|
||||||
|
if "HTTP_REFERER" in request.environ:
|
||||||
return redirect(request.environ["HTTP_REFERER"])
|
return redirect(request.environ["HTTP_REFERER"])
|
||||||
|
else:
|
||||||
|
return redirect(url_for('index'))
|
||||||
return "", 204
|
return "", 204
|
||||||
|
|
||||||
|
|
||||||
@ -2637,7 +2662,12 @@ def show_shelf(shelf_id):
|
|||||||
ub.BookShelf.order.asc()).all()
|
ub.BookShelf.order.asc()).all()
|
||||||
for book in books_in_shelf:
|
for book in books_in_shelf:
|
||||||
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
|
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
|
||||||
|
if cur_book:
|
||||||
result.append(cur_book)
|
result.append(cur_book)
|
||||||
|
else:
|
||||||
|
app.logger.info('Not existing book %s in shelf %s deleted' % (book.book_id, shelf.id))
|
||||||
|
ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete()
|
||||||
|
ub.session.commit()
|
||||||
return render_title_template('shelf.html', entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name),
|
return render_title_template('shelf.html', entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name),
|
||||||
shelf=shelf, page="shelf")
|
shelf=shelf, page="shelf")
|
||||||
else:
|
else:
|
||||||
@ -2993,7 +3023,8 @@ def configuration_helper(origin):
|
|||||||
if content.config_logfile != to_save["config_logfile"]:
|
if content.config_logfile != to_save["config_logfile"]:
|
||||||
# check valid path, only path or file
|
# check valid path, only path or file
|
||||||
if os.path.dirname(to_save["config_logfile"]):
|
if os.path.dirname(to_save["config_logfile"]):
|
||||||
if os.path.exists(os.path.dirname(to_save["config_logfile"])):
|
if os.path.exists(os.path.dirname(to_save["config_logfile"])) and \
|
||||||
|
os.path.basename(to_save["config_logfile"]) and not os.path.isdir(to_save["config_logfile"]):
|
||||||
content.config_logfile = to_save["config_logfile"]
|
content.config_logfile = to_save["config_logfile"]
|
||||||
else:
|
else:
|
||||||
ub.session.commit()
|
ub.session.commit()
|
||||||
@ -3041,8 +3072,6 @@ def configuration_helper(origin):
|
|||||||
gdriveError=gdriveError, goodreads=goodreads_support, rarfile_support=rar_support,
|
gdriveError=gdriveError, goodreads=goodreads_support, rarfile_support=rar_support,
|
||||||
title=_(u"Basic Configuration"), page="config")
|
title=_(u"Basic Configuration"), page="config")
|
||||||
if reboot_required:
|
if reboot_required:
|
||||||
# ub.session.close()
|
|
||||||
# ub.engine.dispose()
|
|
||||||
# stop Server
|
# stop Server
|
||||||
server.Server.setRestartTyp(True)
|
server.Server.setRestartTyp(True)
|
||||||
server.Server.stopServer()
|
server.Server.stopServer()
|
||||||
@ -3092,6 +3121,11 @@ def new_user():
|
|||||||
content.sidebar_view += ub.SIDEBAR_AUTHOR
|
content.sidebar_view += ub.SIDEBAR_AUTHOR
|
||||||
if "show_detail_random" in to_save:
|
if "show_detail_random" in to_save:
|
||||||
content.sidebar_view += ub.DETAIL_RANDOM
|
content.sidebar_view += ub.DETAIL_RANDOM
|
||||||
|
if "show_sorted" in to_save:
|
||||||
|
content.sidebar_view += ub.SIDEBAR_SORTED
|
||||||
|
if "show_recent" in to_save:
|
||||||
|
content.sidebar_view += ub.SIDEBAR_RECENT
|
||||||
|
|
||||||
content.role = 0
|
content.role = 0
|
||||||
if "admin_role" in to_save:
|
if "admin_role" in to_save:
|
||||||
content.role = content.role + ub.ROLE_ADMIN
|
content.role = content.role + ub.ROLE_ADMIN
|
||||||
@ -3345,22 +3379,19 @@ def edit_book(book_id):
|
|||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
|
|
||||||
for indx in range(0, len(book.languages)):
|
for indx in range(0, len(book.languages)):
|
||||||
try:
|
book.languages[indx].language_name = language_table[get_locale()][book.languages[indx].lang_code]
|
||||||
book.languages[indx].language_name = LC.parse(book.languages[indx].lang_code).get_language_name(
|
|
||||||
get_locale())
|
|
||||||
except UnknownLocaleError:
|
|
||||||
book.languages[indx].language_name = _(isoLanguages.get(part3=book.languages[indx].lang_code).name)
|
|
||||||
for authr in book.authors:
|
for authr in book.authors:
|
||||||
author_names.append(authr.name.replace('|', ','))
|
author_names.append(authr.name.replace('|', ','))
|
||||||
|
|
||||||
# Option for showing convertbook button
|
# Option for showing convertbook button
|
||||||
|
valid_source_formats=list()
|
||||||
if config.config_ebookconverter == 2:
|
if config.config_ebookconverter == 2:
|
||||||
display_convertbtn = True
|
for file in book.data:
|
||||||
else:
|
if file.format.lower() in EXTENSIONS_CONVERT:
|
||||||
display_convertbtn = False
|
valid_source_formats.append(file.format.lower())
|
||||||
|
|
||||||
# Determine what formats don't already exist
|
# Determine what formats don't already exist
|
||||||
allowed_conversion_formats = ALLOWED_EXTENSIONS.copy()
|
allowed_conversion_formats = EXTENSIONS_CONVERT.copy()
|
||||||
for file in book.data:
|
for file in book.data:
|
||||||
try:
|
try:
|
||||||
allowed_conversion_formats.remove(file.format.lower())
|
allowed_conversion_formats.remove(file.format.lower())
|
||||||
@ -3372,12 +3403,9 @@ def edit_book(book_id):
|
|||||||
# Show form
|
# Show form
|
||||||
if request.method != 'POST':
|
if request.method != 'POST':
|
||||||
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
||||||
title=_(u"edit metadata"), page="editbook", display_convertbtn=display_convertbtn,
|
title=_(u"edit metadata"), page="editbook",
|
||||||
conversion_formats=allowed_conversion_formats)
|
conversion_formats=allowed_conversion_formats,
|
||||||
|
source_formats=valid_source_formats)
|
||||||
# Update book
|
|
||||||
edited_books_id = set()
|
|
||||||
|
|
||||||
# Check and handle Uploaded file
|
# Check and handle Uploaded file
|
||||||
if 'btn-upload-format' in request.files:
|
if 'btn-upload-format' in request.files:
|
||||||
requested_file = request.files['btn-upload-format']
|
requested_file = request.files['btn-upload-format']
|
||||||
@ -3385,7 +3413,7 @@ def edit_book(book_id):
|
|||||||
if requested_file.filename != '':
|
if requested_file.filename != '':
|
||||||
if '.' in requested_file.filename:
|
if '.' in requested_file.filename:
|
||||||
file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
|
file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
|
||||||
if file_ext not in ALLOWED_EXTENSIONS:
|
if file_ext not in EXTENSIONS_UPLOAD:
|
||||||
flash(_("File extension '%(ext)s' is not allowed to be uploaded to this server", ext=file_ext),
|
flash(_("File extension '%(ext)s' is not allowed to be uploaded to this server", ext=file_ext),
|
||||||
category="error")
|
category="error")
|
||||||
return redirect(url_for('show_book', book_id=book.id))
|
return redirect(url_for('show_book', book_id=book.id))
|
||||||
@ -3432,7 +3460,6 @@ def edit_book(book_id):
|
|||||||
# check for empty request
|
# check for empty request
|
||||||
if requested_file.filename != '':
|
if requested_file.filename != '':
|
||||||
file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
|
file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
|
||||||
# file_name = book.path.rsplit('/', 1)[-1]
|
|
||||||
filepath = os.path.normpath(os.path.join(config.config_calibre_dir, book.path))
|
filepath = os.path.normpath(os.path.join(config.config_calibre_dir, book.path))
|
||||||
saved_filename = os.path.join(filepath, 'cover.' + file_ext)
|
saved_filename = os.path.join(filepath, 'cover.' + file_ext)
|
||||||
|
|
||||||
@ -3456,10 +3483,14 @@ def edit_book(book_id):
|
|||||||
to_save = request.form.to_dict()
|
to_save = request.form.to_dict()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# Update book
|
||||||
|
edited_books_id = set()
|
||||||
|
#handle book title
|
||||||
if book.title != to_save["book_title"]:
|
if book.title != to_save["book_title"]:
|
||||||
book.title = to_save["book_title"]
|
book.title = to_save["book_title"]
|
||||||
edited_books_id.add(book.id)
|
edited_books_id.add(book.id)
|
||||||
|
|
||||||
|
# handle author(s)
|
||||||
input_authors = to_save["author_name"].split('&')
|
input_authors = to_save["author_name"].split('&')
|
||||||
input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors))
|
input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors))
|
||||||
# we have all author names now
|
# we have all author names now
|
||||||
@ -3495,22 +3526,22 @@ def edit_book(book_id):
|
|||||||
if book.series_index != to_save["series_index"]:
|
if book.series_index != to_save["series_index"]:
|
||||||
book.series_index = to_save["series_index"]
|
book.series_index = to_save["series_index"]
|
||||||
|
|
||||||
|
# Handle book comments/description
|
||||||
if len(book.comments):
|
if len(book.comments):
|
||||||
book.comments[0].text = to_save["description"]
|
book.comments[0].text = to_save["description"]
|
||||||
else:
|
else:
|
||||||
book.comments.append(db.Comments(text=to_save["description"], book=book.id))
|
book.comments.append(db.Comments(text=to_save["description"], book=book.id))
|
||||||
|
|
||||||
|
# Handle book tags
|
||||||
input_tags = to_save["tags"].split(',')
|
input_tags = to_save["tags"].split(',')
|
||||||
input_tags = list(map(lambda it: it.strip(), input_tags))
|
input_tags = list(map(lambda it: it.strip(), input_tags))
|
||||||
modify_database_object(input_tags, book.tags, db.Tags, db.session, 'tags')
|
modify_database_object(input_tags, book.tags, db.Tags, db.session, 'tags')
|
||||||
|
|
||||||
|
# Handle book series
|
||||||
input_series = [to_save["series"].strip()]
|
input_series = [to_save["series"].strip()]
|
||||||
input_series = [x for x in input_series if x != '']
|
input_series = [x for x in input_series if x != '']
|
||||||
modify_database_object(input_series, book.series, db.Series, db.session, 'series')
|
modify_database_object(input_series, book.series, db.Series, db.session, 'series')
|
||||||
|
|
||||||
input_languages = to_save["languages"].split(',')
|
|
||||||
input_languages = list(map(lambda it: it.strip().lower(), input_languages))
|
|
||||||
|
|
||||||
if to_save["pubdate"]:
|
if to_save["pubdate"]:
|
||||||
try:
|
try:
|
||||||
book.pubdate = datetime.datetime.strptime(to_save["pubdate"], "%Y-%m-%d")
|
book.pubdate = datetime.datetime.strptime(to_save["pubdate"], "%Y-%m-%d")
|
||||||
@ -3518,24 +3549,25 @@ def edit_book(book_id):
|
|||||||
book.pubdate = db.Books.DEFAULT_PUBDATE
|
book.pubdate = db.Books.DEFAULT_PUBDATE
|
||||||
else:
|
else:
|
||||||
book.pubdate = db.Books.DEFAULT_PUBDATE
|
book.pubdate = db.Books.DEFAULT_PUBDATE
|
||||||
|
|
||||||
'''if len(book.publishers):
|
'''if len(book.publishers):
|
||||||
if to_save["publisher"] != book.publishers[0].name:
|
if to_save["publisher"] != book.publishers[0].name:
|
||||||
modify_database_object(to_save["publisher"], book.publishers, db.Publishers, db.session, 'series')
|
modify_database_object(to_save["publisher"], book.publishers, db.Publishers, db.session, 'series')
|
||||||
else:
|
else:
|
||||||
modify_database_object(to_save["publisher"], book.publishers, db.Publishers, db.session, 'series')'''
|
modify_database_object(to_save["publisher"], book.publishers, db.Publishers, db.session, 'series')'''
|
||||||
|
|
||||||
# retranslate displayed text to language codes
|
# handle book languages
|
||||||
languages = db.session.query(db.Languages).all()
|
input_languages = to_save["languages"].split(',')
|
||||||
|
# input_languages = list(map(lambda it: it.strip().lower(), input_languages))
|
||||||
|
input_languages = [x.strip().lower() for x in input_languages if x != '']
|
||||||
input_l = []
|
input_l = []
|
||||||
for lang in languages:
|
invers_lang_table = [x.lower() for x in language_table[get_locale()].values()]
|
||||||
|
for lang in input_languages:
|
||||||
try:
|
try:
|
||||||
lang.name = LC.parse(lang.lang_code).get_language_name(get_locale()).lower()
|
res = list(language_table[get_locale()].keys())[invers_lang_table.index(lang)]
|
||||||
except UnknownLocaleError:
|
input_l.append(res)
|
||||||
lang.name = _(isoLanguages.get(part3=lang.lang_code).name).lower()
|
except ValueError:
|
||||||
for inp_lang in input_languages:
|
app.logger.error('%s is not a valid language' % lang)
|
||||||
if inp_lang == lang.name:
|
flash(_(u"%(langname)s is not a valid language", langname=lang), category="error")
|
||||||
input_l.append(lang.lang_code)
|
|
||||||
modify_database_object(input_l, book.languages, db.Languages, db.session, 'languages')
|
modify_database_object(input_l, book.languages, db.Languages, db.session, 'languages')
|
||||||
|
|
||||||
if to_save["rating"].strip():
|
if to_save["rating"].strip():
|
||||||
@ -3676,7 +3708,7 @@ def upload():
|
|||||||
# check if file extension is correct
|
# check if file extension is correct
|
||||||
if '.' in requested_file.filename:
|
if '.' in requested_file.filename:
|
||||||
file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
|
file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
|
||||||
if file_ext not in ALLOWED_EXTENSIONS:
|
if file_ext not in EXTENSIONS_UPLOAD:
|
||||||
flash(
|
flash(
|
||||||
_("File extension '%(ext)s' is not allowed to be uploaded to this server",
|
_("File extension '%(ext)s' is not allowed to be uploaded to this server",
|
||||||
ext=file_ext), category="error")
|
ext=file_ext), category="error")
|
||||||
|
@ -232,10 +232,25 @@ class WorkerThread(threading.Thread):
|
|||||||
bookid = self.queue[self.current]['bookid']
|
bookid = self.queue[self.current]['bookid']
|
||||||
format_old_ext = u'.' + self.queue[self.current]['settings']['old_book_format'].lower()
|
format_old_ext = u'.' + self.queue[self.current]['settings']['old_book_format'].lower()
|
||||||
format_new_ext = u'.' + self.queue[self.current]['settings']['new_book_format'].lower()
|
format_new_ext = u'.' + self.queue[self.current]['settings']['new_book_format'].lower()
|
||||||
|
|
||||||
|
# check to see if destination format already exists -
|
||||||
|
# if it does - mark the conversion task as complete and return a success
|
||||||
|
# this will allow send to kindle workflow to continue to work
|
||||||
|
if os.path.isfile(file_path + format_new_ext):
|
||||||
|
web.app.logger.info("Book id %d already converted to %s", bookid, format_new_ext)
|
||||||
|
cur_book = web.db.session.query(web.db.Books).filter(web.db.Books.id == bookid).first()
|
||||||
|
self.queue[self.current]['path'] = file_path
|
||||||
|
self.queue[self.current]['title'] = cur_book.title
|
||||||
|
self._handleSuccess()
|
||||||
|
return file_path + format_new_ext
|
||||||
|
else:
|
||||||
|
web.app.logger.info("Book id %d - target format of %s does not existing. Moving forward with convert.", bookid, format_new_ext)
|
||||||
|
|
||||||
# check if converter-executable is existing
|
# check if converter-executable is existing
|
||||||
if not os.path.exists(web.ub.config.config_converterpath):
|
if not os.path.exists(web.ub.config.config_converterpath):
|
||||||
self._handleError(_(u"Convertertool %(converter)s not found", converter=web.ub.config.config_converterpath))
|
self._handleError(_(u"Convertertool %(converter)s not found", converter=web.ub.config.config_converterpath))
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# check which converter to use kindlegen is "1"
|
# check which converter to use kindlegen is "1"
|
||||||
if format_old_ext == '.epub' and format_new_ext == '.mobi':
|
if format_old_ext == '.epub' and format_new_ext == '.mobi':
|
||||||
@ -313,11 +328,7 @@ class WorkerThread(threading.Thread):
|
|||||||
self.queue[self.current]['title'] = cur_book.title
|
self.queue[self.current]['title'] = cur_book.title
|
||||||
if web.ub.config.config_use_google_drive:
|
if web.ub.config.config_use_google_drive:
|
||||||
os.remove(file_path + format_old_ext)
|
os.remove(file_path + format_old_ext)
|
||||||
self.queue[self.current]['status'] = STAT_FINISH_SUCCESS
|
self._handleSuccess()
|
||||||
self.UIqueue[self.current]['status'] = _('Finished')
|
|
||||||
self.UIqueue[self.current]['progress'] = "100 %"
|
|
||||||
self.UIqueue[self.current]['runtime'] = self._formatRuntime(
|
|
||||||
datetime.now() - self.queue[self.current]['starttime'])
|
|
||||||
return file_path + format_new_ext
|
return file_path + format_new_ext
|
||||||
else:
|
else:
|
||||||
error_message = format_new_ext.upper() + ' format not found on disk'
|
error_message = format_new_ext.upper() + ' format not found on disk'
|
||||||
@ -434,12 +445,7 @@ class WorkerThread(threading.Thread):
|
|||||||
self.asyncSMTP.login(str(obj['settings']["mail_login"]), str(obj['settings']["mail_password"]))
|
self.asyncSMTP.login(str(obj['settings']["mail_login"]), str(obj['settings']["mail_password"]))
|
||||||
self.asyncSMTP.sendmail(obj['settings']["mail_from"], obj['recipent'], msg)
|
self.asyncSMTP.sendmail(obj['settings']["mail_from"], obj['recipent'], msg)
|
||||||
self.asyncSMTP.quit()
|
self.asyncSMTP.quit()
|
||||||
self.queue[self.current]['status'] = STAT_FINISH_SUCCESS
|
self._handleSuccess()
|
||||||
self.UIqueue[self.current]['status'] = _('Finished')
|
|
||||||
self.UIqueue[self.current]['progress'] = "100 %"
|
|
||||||
self.UIqueue[self.current]['runtime'] = self._formatRuntime(
|
|
||||||
datetime.now() - self.queue[self.current]['starttime'])
|
|
||||||
|
|
||||||
sys.stderr = org_stderr
|
sys.stderr = org_stderr
|
||||||
|
|
||||||
except (MemoryError) as e:
|
except (MemoryError) as e:
|
||||||
@ -452,8 +458,6 @@ class WorkerThread(threading.Thread):
|
|||||||
self._handleError(u'Error sending email: ' + e.strerror)
|
self._handleError(u'Error sending email: ' + e.strerror)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _formatRuntime(self, runtime):
|
def _formatRuntime(self, runtime):
|
||||||
self.UIqueue[self.current]['rt'] = runtime.total_seconds()
|
self.UIqueue[self.current]['rt'] = runtime.total_seconds()
|
||||||
val = re.split('\:|\.', str(runtime))[0:3]
|
val = re.split('\:|\.', str(runtime))[0:3]
|
||||||
@ -475,8 +479,15 @@ class WorkerThread(threading.Thread):
|
|||||||
datetime.now() - self.queue[self.current]['starttime'])
|
datetime.now() - self.queue[self.current]['starttime'])
|
||||||
self.UIqueue[self.current]['message'] = error_message
|
self.UIqueue[self.current]['message'] = error_message
|
||||||
|
|
||||||
|
def _handleSuccess(self):
|
||||||
|
self.queue[self.current]['status'] = STAT_FINISH_SUCCESS
|
||||||
|
self.UIqueue[self.current]['status'] = _('Finished')
|
||||||
|
self.UIqueue[self.current]['progress'] = "100 %"
|
||||||
|
self.UIqueue[self.current]['runtime'] = self._formatRuntime(
|
||||||
|
datetime.now() - self.queue[self.current]['starttime'])
|
||||||
|
|
||||||
|
|
||||||
|
# Enable logging of smtp lib debug output
|
||||||
class StderrLogger(object):
|
class StderrLogger(object):
|
||||||
|
|
||||||
buffer = ''
|
buffer = ''
|
||||||
|
425
messages.pot
425
messages.pot
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2018-09-08 14:49+0200\n"
|
"POT-Creation-Date: 2018-09-14 21:11+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -113,705 +113,750 @@ msgstr ""
|
|||||||
msgid "Unrar binary file not found"
|
msgid "Unrar binary file not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1114
|
#: cps/web.py:1112 cps/web.py:2778
|
||||||
msgid "Requesting update package"
|
msgid "Unknown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1115
|
#: cps/web.py:1121 cps/web.py:1152
|
||||||
msgid "Downloading update package"
|
msgid "HTTP Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1116
|
#: cps/web.py:1123 cps/web.py:1154
|
||||||
msgid "Unzipping update package"
|
msgid "Connection error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1117
|
#: cps/web.py:1125 cps/web.py:1156
|
||||||
msgid "Files are replaced"
|
msgid "Timeout while establishing connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1118
|
#: cps/web.py:1127 cps/web.py:1158
|
||||||
msgid "Database connections are closed"
|
msgid "General error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1119
|
#: cps/web.py:1133
|
||||||
msgid "Server is stopped"
|
msgid "Unexpected data while reading update information"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cps/web.py:1120
|
|
||||||
msgid "Update finished, please press okay and reload page"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1140
|
#: cps/web.py:1140
|
||||||
|
msgid "No update available. You already have the latest version installed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1165
|
||||||
|
msgid "A new update is available. Click on the button below to update to the latest version."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1215
|
||||||
|
msgid "Could not fetch update information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1230
|
||||||
|
msgid "Requesting update package"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1231
|
||||||
|
msgid "Downloading update package"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1232
|
||||||
|
msgid "Unzipping update package"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1233
|
||||||
|
msgid "Files are replaced"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1234
|
||||||
|
msgid "Database connections are closed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1235
|
||||||
|
msgid "Server is stopped"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1236
|
||||||
|
msgid "Update finished, please press okay and reload page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:1256
|
||||||
msgid "Recently Added Books"
|
msgid "Recently Added Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1150
|
#: cps/web.py:1266
|
||||||
msgid "Newest Books"
|
msgid "Newest Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1162
|
#: cps/web.py:1278
|
||||||
msgid "Oldest Books"
|
msgid "Oldest Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1174
|
#: cps/web.py:1290
|
||||||
msgid "Books (A-Z)"
|
msgid "Books (A-Z)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1185
|
#: cps/web.py:1301
|
||||||
msgid "Books (Z-A)"
|
msgid "Books (Z-A)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1214
|
#: cps/web.py:1330
|
||||||
msgid "Hot Books (most downloaded)"
|
msgid "Hot Books (most downloaded)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1227
|
#: cps/web.py:1343
|
||||||
msgid "Best rated books"
|
msgid "Best rated books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/index.xml:36 cps/web.py:1239
|
#: cps/templates/index.xml:36 cps/web.py:1355
|
||||||
msgid "Random Books"
|
msgid "Random Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1254
|
#: cps/web.py:1370
|
||||||
msgid "Author list"
|
msgid "Author list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1266 cps/web.py:1329 cps/web.py:1484 cps/web.py:2036
|
#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152
|
||||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/index.xml:73 cps/web.py:1313
|
#: cps/templates/index.xml:73 cps/web.py:1429
|
||||||
msgid "Series list"
|
msgid "Series list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1327
|
#: cps/web.py:1443
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Series: %(serie)s"
|
msgid "Series: %(serie)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1354
|
#: cps/web.py:1470
|
||||||
msgid "Available languages"
|
msgid "Available languages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1371
|
#: cps/web.py:1487
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Language: %(name)s"
|
msgid "Language: %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/index.xml:66 cps/web.py:1382
|
#: cps/templates/index.xml:66 cps/web.py:1498
|
||||||
msgid "Category list"
|
msgid "Category list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1396
|
#: cps/web.py:1512
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Category: %(name)s"
|
msgid "Category: %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/layout.html:71 cps/web.py:1535
|
#: cps/templates/layout.html:71 cps/web.py:1651
|
||||||
msgid "Tasks"
|
msgid "Tasks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1565
|
#: cps/web.py:1681
|
||||||
msgid "Statistics"
|
msgid "Statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1670
|
#: cps/web.py:1786
|
||||||
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
|
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1746
|
#: cps/web.py:1861
|
||||||
msgid "Server restarted, please reload page"
|
msgid "Server restarted, please reload page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1749
|
#: cps/web.py:1864
|
||||||
msgid "Performing shutdown of server, please close window"
|
msgid "Performing shutdown of server, please close window"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1767
|
#: cps/web.py:1883
|
||||||
msgid "Update done"
|
msgid "Update done"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1837
|
#: cps/web.py:1953
|
||||||
msgid "Published after "
|
msgid "Published after "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1844
|
#: cps/web.py:1960
|
||||||
msgid "Published before "
|
msgid "Published before "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1858
|
#: cps/web.py:1974
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rating <= %(rating)s"
|
msgid "Rating <= %(rating)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1860
|
#: cps/web.py:1976
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Rating >= %(rating)s"
|
msgid "Rating >= %(rating)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:1919 cps/web.py:1928
|
#: cps/web.py:2035 cps/web.py:2044
|
||||||
msgid "search"
|
msgid "search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
||||||
#: cps/templates/layout.html:146 cps/web.py:1995
|
#: cps/templates/layout.html:146 cps/web.py:2111
|
||||||
msgid "Read Books"
|
msgid "Read Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
||||||
#: cps/templates/layout.html:148 cps/web.py:1998
|
#: cps/templates/layout.html:148 cps/web.py:2114
|
||||||
msgid "Unread Books"
|
msgid "Unread Books"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2046 cps/web.py:2048 cps/web.py:2050 cps/web.py:2062
|
#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178
|
||||||
msgid "Read a Book"
|
msgid "Read a Book"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2128 cps/web.py:3006
|
#: cps/web.py:2244 cps/web.py:3129
|
||||||
msgid "Please fill out all fields!"
|
msgid "Please fill out all fields!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2129 cps/web.py:2150 cps/web.py:2154 cps/web.py:2159
|
#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275
|
||||||
#: cps/web.py:2161
|
#: cps/web.py:2277
|
||||||
msgid "register"
|
msgid "register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2149 cps/web.py:3222
|
#: cps/web.py:2265 cps/web.py:3345
|
||||||
msgid "An unknown error occurred. Please try again later."
|
msgid "An unknown error occurred. Please try again later."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2152
|
#: cps/web.py:2268
|
||||||
msgid "Your e-mail is not allowed to register"
|
msgid "Your e-mail is not allowed to register"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2155
|
#: cps/web.py:2271
|
||||||
msgid "Confirmation e-mail was send to your e-mail account."
|
msgid "Confirmation e-mail was send to your e-mail account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2158
|
#: cps/web.py:2274
|
||||||
msgid "This username or e-mail address is already in use."
|
msgid "This username or e-mail address is already in use."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2175 cps/web.py:2271
|
#: cps/web.py:2291 cps/web.py:2387
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "you are now logged in as: '%(nickname)s'"
|
msgid "you are now logged in as: '%(nickname)s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2180
|
#: cps/web.py:2296
|
||||||
msgid "Wrong Username or Password"
|
msgid "Wrong Username or Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2186 cps/web.py:2207
|
#: cps/web.py:2302 cps/web.py:2323
|
||||||
msgid "login"
|
msgid "login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2219 cps/web.py:2250
|
#: cps/web.py:2335 cps/web.py:2366
|
||||||
msgid "Token not found"
|
msgid "Token not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2227 cps/web.py:2258
|
#: cps/web.py:2343 cps/web.py:2374
|
||||||
msgid "Token has expired"
|
msgid "Token has expired"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2235
|
#: cps/web.py:2351
|
||||||
msgid "Success! Please return to your device"
|
msgid "Success! Please return to your device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2285
|
#: cps/web.py:2401
|
||||||
msgid "Please configure the SMTP mail settings first..."
|
msgid "Please configure the SMTP mail settings first..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2289
|
#: cps/web.py:2405
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book successfully queued for sending to %(kindlemail)s"
|
msgid "Book successfully queued for sending to %(kindlemail)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2293
|
#: cps/web.py:2409
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error sending this book: %(res)s"
|
msgid "There was an error sending this book: %(res)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2295 cps/web.py:3060
|
#: cps/web.py:2411 cps/web.py:3183
|
||||||
msgid "Please configure your kindle e-mail address first..."
|
msgid "Please configure your kindle e-mail address first..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2339
|
#: cps/web.py:2455
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book has been added to shelf: %(sname)s"
|
msgid "Book has been added to shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2350
|
#: cps/web.py:2466
|
||||||
msgid "Invalid shelf specified"
|
msgid "Invalid shelf specified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2355
|
#: cps/web.py:2471
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2360
|
#: cps/web.py:2476
|
||||||
msgid "User is not allowed to edit public shelves"
|
msgid "User is not allowed to edit public shelves"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2378
|
#: cps/web.py:2494
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Books are already part of the shelf: %(name)s"
|
msgid "Books are already part of the shelf: %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2392
|
#: cps/web.py:2508
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Books have been added to shelf: %(sname)s"
|
msgid "Books have been added to shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2394
|
#: cps/web.py:2510
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Could not add books to shelf: %(sname)s"
|
msgid "Could not add books to shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2431
|
#: cps/web.py:2547
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book has been removed from shelf: %(sname)s"
|
msgid "Book has been removed from shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2437
|
#: cps/web.py:2553
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2457 cps/web.py:2481
|
#: cps/web.py:2573 cps/web.py:2597
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A shelf with the name '%(title)s' already exists."
|
msgid "A shelf with the name '%(title)s' already exists."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2462
|
#: cps/web.py:2578
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf %(title)s created"
|
msgid "Shelf %(title)s created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2464 cps/web.py:2492
|
#: cps/web.py:2580 cps/web.py:2608
|
||||||
msgid "There was an error"
|
msgid "There was an error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2465 cps/web.py:2467
|
#: cps/web.py:2581 cps/web.py:2583
|
||||||
msgid "create a shelf"
|
msgid "create a shelf"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2490
|
#: cps/web.py:2606
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf %(title)s changed"
|
msgid "Shelf %(title)s changed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2493 cps/web.py:2495
|
#: cps/web.py:2609 cps/web.py:2611
|
||||||
msgid "Edit a shelf"
|
msgid "Edit a shelf"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2516
|
#: cps/web.py:2632
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "successfully deleted shelf %(name)s"
|
msgid "successfully deleted shelf %(name)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2538
|
#: cps/web.py:2659
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Shelf: '%(name)s'"
|
msgid "Shelf: '%(name)s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2541
|
#: cps/web.py:2662
|
||||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2572
|
#: cps/web.py:2693
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Change order of Shelf: '%(name)s'"
|
msgid "Change order of Shelf: '%(name)s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2601 cps/web.py:3012
|
#: cps/web.py:2722 cps/web.py:3135
|
||||||
msgid "E-mail is not from valid domain"
|
msgid "E-mail is not from valid domain"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2603 cps/web.py:2644 cps/web.py:2647
|
#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(name)s's profile"
|
msgid "%(name)s's profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2642
|
#: cps/web.py:2763
|
||||||
msgid "Found an existing account for this e-mail address."
|
msgid "Found an existing account for this e-mail address."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2645
|
#: cps/web.py:2766
|
||||||
msgid "Profile updated"
|
msgid "Profile updated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2657
|
#: cps/web.py:2794
|
||||||
msgid "Unknown"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cps/web.py:2671
|
|
||||||
msgid "Admin page"
|
msgid "Admin page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2749 cps/web.py:2922
|
#: cps/web.py:2872 cps/web.py:3045
|
||||||
msgid "Calibre-Web configuration updated"
|
msgid "Calibre-Web configuration updated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:91 cps/web.py:2762
|
#: cps/templates/admin.html:100 cps/web.py:2885
|
||||||
msgid "UI Configuration"
|
msgid "UI Configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2780
|
#: cps/web.py:2903
|
||||||
msgid "Import of optional Google Drive requirements missing"
|
msgid "Import of optional Google Drive requirements missing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2783
|
#: cps/web.py:2906
|
||||||
msgid "client_secrets.json is missing or not readable"
|
msgid "client_secrets.json is missing or not readable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2788 cps/web.py:2815
|
#: cps/web.py:2911 cps/web.py:2938
|
||||||
msgid "client_secrets.json is not configured for web application"
|
msgid "client_secrets.json is not configured for web application"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:90 cps/web.py:2818 cps/web.py:2844 cps/web.py:2856
|
#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
|
||||||
#: cps/web.py:2898 cps/web.py:2913 cps/web.py:2930 cps/web.py:2937
|
#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
|
||||||
#: cps/web.py:2954
|
#: cps/web.py:3077
|
||||||
msgid "Basic Configuration"
|
msgid "Basic Configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2841
|
#: cps/web.py:2964
|
||||||
msgid "Keyfile location is not valid, please enter correct path"
|
msgid "Keyfile location is not valid, please enter correct path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2853
|
#: cps/web.py:2976
|
||||||
msgid "Certfile location is not valid, please enter correct path"
|
msgid "Certfile location is not valid, please enter correct path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2895
|
#: cps/web.py:3018
|
||||||
msgid "Logfile location is not valid, please enter correct path"
|
msgid "Logfile location is not valid, please enter correct path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:2934
|
#: cps/web.py:3057
|
||||||
msgid "DB location is not valid, please enter correct path"
|
msgid "DB location is not valid, please enter correct path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:31 cps/web.py:3008 cps/web.py:3014 cps/web.py:3030
|
#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153
|
||||||
msgid "Add new user"
|
msgid "Add new user"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3020
|
#: cps/web.py:3143
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(user)s' created"
|
msgid "User '%(user)s' created"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3024
|
#: cps/web.py:3147
|
||||||
msgid "Found an existing account for this e-mail address or nickname."
|
msgid "Found an existing account for this e-mail address or nickname."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3048 cps/web.py:3062
|
#: cps/web.py:3171 cps/web.py:3185
|
||||||
msgid "E-mail server settings updated"
|
msgid "E-mail server settings updated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3055
|
#: cps/web.py:3178
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Test e-mail successfully send to %(kindlemail)s"
|
msgid "Test e-mail successfully send to %(kindlemail)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3058
|
#: cps/web.py:3181
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error sending the Test e-mail: %(res)s"
|
msgid "There was an error sending the Test e-mail: %(res)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3063
|
#: cps/web.py:3186
|
||||||
msgid "Edit e-mail server settings"
|
msgid "Edit e-mail server settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3088
|
#: cps/web.py:3211
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(nick)s' deleted"
|
msgid "User '%(nick)s' deleted"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3197
|
#: cps/web.py:3320
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "User '%(nick)s' updated"
|
msgid "User '%(nick)s' updated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3200
|
#: cps/web.py:3323
|
||||||
msgid "An unknown error occured."
|
msgid "An unknown error occured."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3202
|
#: cps/web.py:3325
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Edit User %(nick)s"
|
msgid "Edit User %(nick)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3219
|
#: cps/web.py:3342
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Password for user %(user)s reset"
|
msgid "Password for user %(user)s reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3239
|
#: cps/web.py:3362
|
||||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3270 cps/web.py:3546 cps/web.py:3551 cps/web.py:3706
|
#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
|
||||||
msgid "edit metadata"
|
msgid "edit metadata"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3284 cps/web.py:3576
|
#: cps/web.py:3401 cps/web.py:3697
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
|
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3288 cps/web.py:3580
|
#: cps/web.py:3405 cps/web.py:3701
|
||||||
msgid "File to be uploaded must have an extension"
|
msgid "File to be uploaded must have an extension"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3300 cps/web.py:3600
|
#: cps/web.py:3417 cps/web.py:3721
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to create path %(path)s (Permission denied)."
|
msgid "Failed to create path %(path)s (Permission denied)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3305
|
#: cps/web.py:3422
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store file %(file)s."
|
msgid "Failed to store file %(file)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3321
|
#: cps/web.py:3438
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File format %(ext)s added to %(book)s"
|
msgid "File format %(ext)s added to %(book)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3339
|
#: cps/web.py:3455
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3346
|
#: cps/web.py:3462
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store cover-file %(cover)s."
|
msgid "Failed to store cover-file %(cover)s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3349
|
#: cps/web.py:3465
|
||||||
msgid "Cover-file is not a valid image file"
|
msgid "Cover-file is not a valid image file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3362 cps/web.py:3366
|
#: cps/web.py:3482 cps/web.py:3486
|
||||||
msgid "unknown"
|
msgid "unknown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3388
|
#: cps/web.py:3508
|
||||||
msgid "Cover is not a jpg file, can't save"
|
msgid "Cover is not a jpg file, can't save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3555
|
#: cps/web.py:3554
|
||||||
|
#, python-format
|
||||||
|
msgid "%(langname)s is not a valid language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/web.py:3676
|
||||||
msgid "Error editing book, please check logfile for details"
|
msgid "Error editing book, please check logfile for details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3605
|
#: cps/web.py:3726
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to store file %(file)s (Permission denied)."
|
msgid "Failed to store file %(file)s (Permission denied)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3610
|
#: cps/web.py:3731
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Failed to delete file %(file)s (Permission denied)."
|
msgid "Failed to delete file %(file)s (Permission denied)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3692
|
#: cps/web.py:3813
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "File %(file)s uploaded"
|
msgid "File %(file)s uploaded"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3722
|
#: cps/web.py:3843
|
||||||
msgid "Source or destination format for conversion missing"
|
msgid "Source or destination format for conversion missing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3732
|
#: cps/web.py:3853
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Book successfully queued for converting to %(book_format)s"
|
msgid "Book successfully queued for converting to %(book_format)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/web.py:3736
|
#: cps/web.py:3857
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There was an error converting this book: %(res)s"
|
msgid "There was an error converting this book: %(res)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:215 cps/worker.py:387
|
#: cps/worker.py:215 cps/worker.py:398
|
||||||
msgid "Started"
|
msgid "Started"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:237
|
#: cps/worker.py:251
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Convertertool %(converter)s not found"
|
msgid "Convertertool %(converter)s not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:272
|
#: cps/worker.py:287
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Ebook-converter failed: %(error)s"
|
msgid "Ebook-converter failed: %(error)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:283
|
#: cps/worker.py:298
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:317 cps/worker.py:377 cps/worker.py:438
|
#: cps/worker.py:355 cps/worker.py:374
|
||||||
msgid "Finished"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cps/worker.py:344 cps/worker.py:363
|
|
||||||
msgid "Waiting"
|
msgid "Waiting"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:351
|
#: cps/worker.py:362
|
||||||
msgid "This e-mail has been sent via Calibre-Web."
|
msgid "This e-mail has been sent via Calibre-Web."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/worker.py:472
|
#: cps/worker.py:388 cps/worker.py:484
|
||||||
|
msgid "Finished"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/worker.py:476
|
||||||
msgid "Failed"
|
msgid "Failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:4
|
#: cps/templates/admin.html:6
|
||||||
msgid "User list"
|
msgid "User list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:7
|
#: cps/templates/admin.html:9
|
||||||
msgid "Nickname"
|
msgid "Nickname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:8
|
#: cps/templates/admin.html:10
|
||||||
msgid "E-mail"
|
msgid "E-mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:9
|
#: cps/templates/admin.html:11
|
||||||
msgid "Kindle"
|
msgid "Kindle"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:10
|
#: cps/templates/admin.html:12
|
||||||
msgid "DLS"
|
msgid "DLS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:11 cps/templates/layout.html:74
|
#: cps/templates/admin.html:13 cps/templates/layout.html:74
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:12 cps/templates/detail.html:22
|
#: cps/templates/admin.html:14 cps/templates/detail.html:22
|
||||||
#: cps/templates/detail.html:31
|
#: cps/templates/detail.html:31
|
||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:13 cps/templates/layout.html:64
|
#: cps/templates/admin.html:15 cps/templates/layout.html:64
|
||||||
msgid "Upload"
|
msgid "Upload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:14
|
#: cps/templates/admin.html:16
|
||||||
msgid "Edit"
|
msgid "Edit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:32
|
#: cps/templates/admin.html:39
|
||||||
msgid "SMTP e-mail server settings"
|
msgid "SMTP e-mail server settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:35 cps/templates/email_edit.html:11
|
#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
|
||||||
msgid "SMTP hostname"
|
msgid "SMTP hostname"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:36
|
#: cps/templates/admin.html:43
|
||||||
msgid "SMTP port"
|
msgid "SMTP port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:37
|
#: cps/templates/admin.html:44
|
||||||
msgid "SSL"
|
msgid "SSL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:38 cps/templates/email_edit.html:27
|
#: cps/templates/admin.html:45 cps/templates/email_edit.html:27
|
||||||
msgid "SMTP login"
|
msgid "SMTP login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:39
|
#: cps/templates/admin.html:46
|
||||||
msgid "From mail"
|
msgid "From mail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:48
|
#: cps/templates/admin.html:56
|
||||||
msgid "Change SMTP settings"
|
msgid "Change SMTP settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:50
|
#: cps/templates/admin.html:62
|
||||||
msgid "Configuration"
|
msgid "Configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:53
|
#: cps/templates/admin.html:65
|
||||||
msgid "Calibre DB dir"
|
msgid "Calibre DB dir"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:57
|
#: cps/templates/admin.html:69
|
||||||
msgid "Log level"
|
msgid "Log level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:61
|
#: cps/templates/admin.html:73
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:67 cps/templates/config_view_edit.html:23
|
#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23
|
||||||
msgid "Books per page"
|
msgid "Books per page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:71
|
#: cps/templates/admin.html:83
|
||||||
msgid "Uploading"
|
msgid "Uploading"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:75
|
#: cps/templates/admin.html:87
|
||||||
msgid "Anonymous browsing"
|
msgid "Anonymous browsing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:79
|
#: cps/templates/admin.html:91
|
||||||
msgid "Public registration"
|
msgid "Public registration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:83 cps/templates/remote_login.html:4
|
#: cps/templates/admin.html:95 cps/templates/remote_login.html:4
|
||||||
msgid "Remote login"
|
msgid "Remote login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:93
|
#: cps/templates/admin.html:106
|
||||||
msgid "Administration"
|
msgid "Administration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:94
|
#: cps/templates/admin.html:107
|
||||||
msgid "Current commit timestamp"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cps/templates/admin.html:95
|
|
||||||
msgid "Newest commit timestamp"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cps/templates/admin.html:97
|
|
||||||
msgid "Reconnect to Calibre DB"
|
msgid "Reconnect to Calibre DB"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:98
|
#: cps/templates/admin.html:108
|
||||||
msgid "Restart Calibre-Web"
|
msgid "Restart Calibre-Web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:99
|
#: cps/templates/admin.html:109
|
||||||
msgid "Stop Calibre-Web"
|
msgid "Stop Calibre-Web"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:100
|
#: cps/templates/admin.html:115
|
||||||
|
msgid "Update"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:119
|
||||||
|
msgid "Version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:120
|
||||||
|
msgid "Details"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:126
|
||||||
|
msgid "Current version"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: cps/templates/admin.html:132
|
||||||
msgid "Check for update"
|
msgid "Check for update"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:101
|
#: cps/templates/admin.html:133
|
||||||
msgid "Perform Update"
|
msgid "Perform Update"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:110
|
#: cps/templates/admin.html:145
|
||||||
msgid "Do you really want to restart Calibre-Web?"
|
msgid "Do you really want to restart Calibre-Web?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:115 cps/templates/admin.html:129
|
#: cps/templates/admin.html:150 cps/templates/admin.html:164
|
||||||
#: cps/templates/admin.html:150 cps/templates/shelf.html:59
|
#: cps/templates/admin.html:184 cps/templates/shelf.html:59
|
||||||
msgid "Ok"
|
msgid "Ok"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:116 cps/templates/admin.html:130
|
#: cps/templates/admin.html:151 cps/templates/admin.html:165
|
||||||
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
|
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
|
||||||
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
|
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
|
||||||
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
|
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
|
||||||
@ -820,11 +865,11 @@ msgstr ""
|
|||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:128
|
#: cps/templates/admin.html:163
|
||||||
msgid "Do you really want to stop Calibre-Web?"
|
msgid "Do you really want to stop Calibre-Web?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: cps/templates/admin.html:141
|
#: cps/templates/admin.html:175
|
||||||
msgid "Updating, please do not reload page"
|
msgid "Updating, please do not reload page"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -15,6 +15,6 @@ six==1.10.0
|
|||||||
goodreads>=0.3.2
|
goodreads>=0.3.2
|
||||||
python-Levenshtein>=0.12.0
|
python-Levenshtein>=0.12.0
|
||||||
# other
|
# other
|
||||||
lxml==3.7.2
|
lxml>=3.8.0
|
||||||
rarfile>=2.7
|
rarfile>=2.7
|
||||||
natsort>=2.2.0
|
natsort>=2.2.0
|
||||||
|
Loading…
Reference in New Issue
Block a user