Merge branch 'maintenance' into devel

Conflicts:
	CHANGELOG.md
	src/octoprint/static/js/app/dataupdater.js
	src/octoprint/static/js/app/main.js
	src/octoprint/static/js/app/viewmodels/files.js
	src/octoprint/static/js/app/viewmodels/loginstate.js
This commit is contained in:
Gina Häußge 2016-06-09 12:32:52 +02:00
commit de78c14ae3
21 changed files with 437 additions and 277 deletions

View file

@ -7,18 +7,20 @@
# The file is processed from top to bottom, the first matching line wins. If <tag> or <reference commit> are left out,
# the lookup table does not apply to the matched branches
# master shall not use the lookup table, only tags
# master, prerelease and rc shall not use the lookup table, only tags
master
prerelease
rc
# neither should disconnected checkouts, e.g. 'git checkout <tag>'
HEAD
\(detached.*
# maintenance is currently the branch for preparation of maintenance release 1.2.12
# maintenance is currently the branch for preparation of maintenance release 1.2.13
# so are any fix/... and improve/... branches
maintenance 1.2.12 e79703ba6eec1ecdfa21cf8f2a9efbc1eb6120e3 pep440-dev
fix/.* 1.2.12 e79703ba6eec1ecdfa21cf8f2a9efbc1eb6120e3 pep440-dev
improve/.* 1.2.12 e79703ba6eec1ecdfa21cf8f2a9efbc1eb6120e3 pep440-dev
maintenance 1.2.13 685ce16c85eea9c4f11586ea99c9a84aca382bd4 pep440-dev
fix/.* 1.2.13 685ce16c85eea9c4f11586ea99c9a84aca382bd4 pep440-dev
improve/.* 1.2.13 685ce16c85eea9c4f11586ea99c9a84aca382bd4 pep440-dev
# every other branch is a development branch and thus gets resolved to 1.3.0-dev for now
.* 1.3.0 198d3450d94be1a2 pep440-dev

View file

@ -74,6 +74,32 @@
* [#1047](https://github.com/foosel/OctoPrint/issues/1047) - Fixed 90 degree
webcam rotation for iOS Safari.
## 1.2.12 (2016-06-09)
### Improvements
* [#1338](https://github.com/foosel/OctoPrint/issues/1338): Threshold configuration fields now include information about how to specify the thresholds.
* Mark unrendered timelapses currently being processed (recording or rendering) in the list and remove action buttons so no accidental double-processing can take place.
* Removed file extension from "rendering" and "rendered" notifications, was misleading when using the [mp4 wrapper script](https://github.com/guysoft/OctoPi/issues/184).
* Added some new events for manipulation of slicing profiles.
* Small fix of the german translation.
### Bug Fixes
* [#1314](https://github.com/foosel/OctoPrint/issues/1314): Do not change the extension of `.g` files being uploaded to SD (e.g. `auto0.g`)
* [#1320](https://github.com/foosel/OctoPrint/issues/1320): Allow deletion of *.mp4 timelapse files (see [this wrapper script](https://github.com/guysoft/OctoPi/issues/184)).
* [#1324](https://github.com/foosel/OctoPrint/issues/1324): Make daemonized OctoPrint properly clean up its pid file again (see also [#1330](https://github.com/foosel/OctoPrint/pull/1330)).
* [#1326](https://github.com/foosel/OctoPrint/issues/1326): Do not try to clean up an unrendered timelapse while it is already being deleted (and produce way too much logging output in the process).
* [#1343](https://github.com/foosel/OctoPrint/issues/1343): Events are now processed in the order they are fired in, making e.g. the "timelapse rendering" message always appear before "timelapse failed" and hence not stay on forever in case of a failed timelapse.
* [#1344](https://github.com/foosel/OctoPrint/issues/1344): `ProgressPlugin`s now get also notified about a progress of 0%.
* [#1357](https://github.com/foosel/OctoPrint/issues/1357): Fixed wrongly named method call on editing access control options for a user, causing that to not work properly.
* [#1361](https://github.com/foosel/OctoPrint/issues/1361): Properly reload profile list for currently selected slicer in the slicing dialog on change of profiles.
* [#1364](https://github.com/foosel/OctoPrint/issues/1364): Fixed a race condition that could cause the UI to not initialize correctly due to 401 errors, leaving it in an unusable state until a reload.
* Fixed concurrent message pushing to the frontend being able to break push messages for the session by forcing synchronization of SockJS message sending.
* Do not require admin rights for connecting/disconnecting, like it was in 1.1.x (note that this is supposed to become configurable behaviour once [#1110](https://github.com/foosel/OctoPrint/issues/1110) gets implemented)
([Commits](https://github.com/foosel/OctoPrint/compare/1.2.11...1.2.12))
## 1.2.11 (2016-05-04)
### Important Announcement

View file

@ -302,6 +302,11 @@ There are three main branches in OctoPrint:
the scheme `x.y.z` (e.g. `1.2.9`) or - if it's absolutely necessary to
add a commit after release to this branch - `x.y.z.post<commits since x.y.z>`
(e.g. `1.2.9.post1`).
* `prerelease`: This branch is only used during the short period where a
future release has "graduated" from the `maintenance` branch and is already
tagged, but still marked on Github as a pre-release. This is mostly used for
update testing just before new releases. Version number follows the scheme
`x.y.z` (e.g. `1.2.9`), just like the `master` branch.
* `maintenance`: Improvements and fixes of the current release that make up
the next release go here. More or less continously updated. You can consider
this a preview of the next release version. It should be very stable at all
@ -329,6 +334,9 @@ Those usually have one of the following prefixes:
`maintenance` and `devel` branches.
* `dev/...` or `feature/...`: New functionality under development that is to be merged
into the `devel` branch.
* `rc`: A branch similar in nature to the `prerelease` branch, only that it will be
used to provide current release candidates of the next stable version to be derived
from the `devel` branch.
There is also the `gh-pages` branch, which holds OctoPrint's web page, and a couple of
older development branches that are slowly being migrated or deleted.
@ -367,6 +375,7 @@ the local version identifier to allow for an exact determination of the active c
* 2016-02-16: Added requirement to add information from template to existing
tickets as well, explained issue with "me too" red herrings.
* 2016-03-14: Some more requirements for PRs, and a PR template.
* 2016-06-08: New `prerelease` and `rc` branches explained.
## Footnotes
* [1] - If you are wondering why, the problem is that anything that you add

View file

@ -7,35 +7,60 @@ thanks to everyone who contributed!
## Patreon Patrons
* 3D Moniak
* alephobjects
* Andrew Moorby
* Arnljot Arntsen
* Aurelio Bernal Ramírez
* Bart Zudell
* Brad Jackson
* Brent Fiegle
* Brian E. Tyler
* Charles Mitchell
* Christian Petropolis
* COLLE+McVOY
* CreativeTools
* D Brian Kimmel
* DeltaMaker 3D Printers
* Doug Johnson
* E3D BigBox
* Erik de Bruijn
* Ernesto Martinez
* Exovite
* Frank Sander
* georgeroblesjr
* Gregor Luetolf
* Jason Galarneau
* Joe Korzeniewski
* Joshua Gregory
* Kaile Riser
* Kale Stedman
* Kevin Freeheart
* Kyle Gress
* Makespace Madrid
* Mark Lane
* Mark Qvist
* Mark Walker
* Masayoshi Mitsui
* Michael McDargh
* Miguel Angel Salmeron
* MikeyDK
* Mikey
* Miles Flavel
* Mohammed Khorakiwala
* Noe Ruiz
* Paul Generes
* Peter Schmehl
* Roger Strolz
* Roy Cortes
* Samer Najia
* SD3D
* Shane Ekerbicer
* Simon
* Stefan Krister
* stefi davis
* Steven Pearson
* Sven Mueller
* Tom
* Thomas Hatley
* Thomas Sanladerer
* Trent Shumay
and 414 more wonderful people pledging on the [Patreon campaign](https://patreon.com/foosel)!
and 734 more wonderful people pledging on the [Patreon campaign](https://patreon.com/foosel)!

View file

@ -382,6 +382,30 @@ SlicingFailed
* ``gcode``: the sliced GCODE's filename
* ``reason``: the reason for the slicing having failed
SlicingProfileAdded
A new slicing profile was added.
Payload:
* ``slicer``: the slicer for which the profile was added
* ``profile``: the profile that was added
SlicingProfileModified
A new slicing profile was modified.
Payload:
* ``slicer``: the slicer for which the profile was modified
* ``profile``: the profile that was modified
SlicingProfileDeleted
A slicing profile was deleted.
Payload:
* ``slicer``: the slicer for which the profile was deleted
* ``profile``: the profile that was deleted
Settings
--------

View file

@ -91,6 +91,14 @@ class Events(object):
SLICING_DONE = "SlicingDone"
SLICING_FAILED = "SlicingFailed"
SLICING_CANCELLED = "SlicingCancelled"
SLICING_PROFILE_ADDED = "SlicingProfileAdded"
SLICING_PROFILE_MODIFIED = "SlicingProfileModified"
SLICING_PROFILE_DELETED = "SlicingProfileDeleted"
# Printer Profiles
PRINTER_PROFILE_ADDED = "PrinterProfileAdded"
PRINTER_PROFILE_MODIFIED = "PrinterProfileModified"
PRINTER_PROFILE_DELETED = "PrinterProfileDeleted"
# Settings
SETTINGS_UPDATED = "SettingsUpdated"

View file

@ -49,6 +49,10 @@ class AnnouncementPlugin(octoprint.plugin.AssetPlugin,
type="rss",
url="http://octoprint.org/feeds/important.xml",
read_until=1449446400),
_news=dict(name="OctoPrint News",
priority=2,
type="rss",
url="http://octoprint.org/feeds/news.xml"),
_releases=dict(name="OctoPrint Release Announcements",
priority=2,
type="rss",

View file

@ -224,9 +224,6 @@ class CuraPlugin(octoprint.plugin.SlicerPlugin,
return octoprint.slicing.SlicingProfile(properties["type"], "unknown", profile_dict, display_name=display_name, description=description)
def save_slicer_profile(self, path, profile, allow_overwrite=True, overrides=None):
if os.path.exists(path) and not allow_overwrite:
raise octoprint.slicing.ProfileAlreadyExists("cura", profile.name)
new_profile = Profile.merge_profile(profile.data, overrides=overrides)
if profile.display_name is not None:

View file

@ -14,7 +14,7 @@ from octoprint.server.api import api, NO_CONTENT
from octoprint.settings import settings as s, valid_boolean_trues
from octoprint.slicing import UnknownSlicer, SlicerNotConfigured, ProfileAlreadyExists, UnknownProfile
from octoprint.slicing import UnknownSlicer, SlicerNotConfigured, ProfileAlreadyExists, UnknownProfile, CouldNotDeleteProfile
@api.route("/slicing", methods=["GET"])
@ -146,6 +146,8 @@ def slicingDelSlicerProfile(slicer, name):
slicingManager.delete_profile(slicer, name)
except UnknownSlicer:
return make_response("Unknown slicer {slicer}".format(**locals()), 404)
except CouldNotDeleteProfile as e:
return make_response("Could not delete profile {profile} for slicer {slicer}: {cause}".format(profile=name, slicer=slicer, cause=str(e.cause)), 500)
return NO_CONTENT

View file

@ -409,7 +409,18 @@ class SlicingManager(object):
profile.description = description
path = self.get_profile_path(slicer, name)
is_overwrite = os.path.exists(path)
if is_overwrite and not allow_overwrite:
raise ProfileAlreadyExists(slicer, profile.name)
self._save_profile_to_path(slicer, path, profile, overrides=overrides, allow_overwrite=allow_overwrite)
payload = dict(slicer=slicer,
profile=name)
event = octoprint.events.Events.SLICING_PROFILE_MODIFIED if is_overwrite else octoprint.events.Events.SLICING_PROFILE_ADDED
octoprint.events.eventManager().fire(event, payload)
return profile
def _temporary_profile(self, slicer, name=None, overrides=None):
@ -438,6 +449,7 @@ class SlicingManager(object):
Raises:
~octoprint.slicing.exceptions.UnknownSlicer: The slicer ``slicer`` is unknown.
~octoprint.slicing.exceptions.CouldNotDeleteProfile: There was an error while deleting the profile.
"""
if not slicer in self.registered_slicers:
@ -447,10 +459,17 @@ class SlicingManager(object):
raise ValueError("name must be set")
try:
path = self.get_profile_path(slicer, name, must_exist=True)
except UnknownProfile:
return
os.remove(path)
try:
path = self.get_profile_path(slicer, name, must_exist=True)
except UnknownProfile:
return
os.remove(path)
except ProfileException as e:
raise e
except Exception as e:
raise CouldNotDeleteProfile(slicer, name, cause=e)
else:
octoprint.events.eventManager().fire(octoprint.events.Events.SLICING_PROFILE_DELETED, dict(slicer=slicer, profile=name))
def set_default_profile(self, slicer, name, require_configured=False,
require_exists=True):

View file

@ -105,3 +105,16 @@ class ProfileAlreadyExists(ProfileException):
def __init__(self, slicer, profile, *args, **kwargs):
ProfileException.__init__(self, slicer, profile, *args, **kwargs)
self.message = "Profile {profile} for slicer {slicer} already exists".format(profile=profile, slicer=slicer)
class CouldNotDeleteProfile(ProfileException):
"""
Raised if there is an unexpected error trying to delete a known profile.
"""
def __init__(self, slicer, profile, cause=None, *args, **kwargs):
ProfileException.__init__(self, slicer, profile, *args, **kwargs)
self.cause = cause
if cause:
self.message = "Could not delete profile {profile} for slicer {slicer}: {cause}".format(profile=profile, slicer=slicer, cause=str(cause))
else:
self.message = "Could not delete profile {profile} for slicer {slicer}".format(profile=profile, slicer=slicer)

View file

@ -6,6 +6,8 @@ function DataUpdater(allViewModels) {
self._pluginHash = undefined;
self._configHash = undefined;
self._connectedDeferred = undefined;
self._throttleFactor = 1;
self._baseProcessingLimit = 500.0;
self._lastProcessingTimes = [];
@ -36,11 +38,21 @@ function DataUpdater(allViewModels) {
};
self.connect = function() {
if (self._connectedDeferred) {
self._connectedDeferred.reject();
}
self._connectedDeferred = $.Deferred();
OctoPrint.socket.connect({debug: !!SOCKJS_DEBUG});
return self._connectedDeferred.promise();
};
self.reconnect = function() {
if (self._connectedDeferred) {
self._connectedDeferred.reject();
}
self._connectedDeferred = $.Deferred();
OctoPrint.socket.reconnect();
return self._connectedDeferred.promise();
};
self._onReconnectAttempt = function(trial) {
@ -125,6 +137,14 @@ function DataUpdater(allViewModels) {
if (versionChanged || pluginsChanged || configChanged) {
showReloadOverlay();
}
log.info("Connected to the server");
// if we have a connected promise, resolve it now
if (self._connectedDeferred) {
self._connectedDeferred.resolve();
self._connectedDeferred = undefined;
}
};
self._onHistoryData = function(event) {
@ -266,6 +286,4 @@ function DataUpdater(allViewModels) {
.onMessage("event", self._onEvent)
.onMessage("timelapse", self._onTimelapse)
.onMessage("plugin", self._onPluginMessage);
self.connect();
}

View file

@ -302,8 +302,6 @@ $(function() {
}
log.info("... dependency resolution done");
var dataUpdater = new DataUpdater(allViewModels);
//~~ some additional hooks and initializations
// make sure modals max out at the window height
@ -424,10 +422,6 @@ $(function() {
// reload overlay
$("#reloadui_overlay_reload").click(function() { location.reload(); });
//~~ Starting up the app
callViewModels(allViewModels, "onStartup");
//~~ view model binding
var bindViewModels = function() {
@ -515,12 +509,25 @@ $(function() {
log.debug("Browser tab is now " + (status ? "visible" : "hidden"));
callViewModels(allViewModels, "onBrowserTabVisibilityChange", [status]);
});
log.info("Application startup complete");
};
if (!_.has(viewModelMap, "settingsViewModel")) {
throw new Error("settingsViewModel is missing, can't run UI")
}
viewModelMap["settingsViewModel"].requestData()
.done(bindViewModels);
log.info("Initial application setup done, connecting to server...");
var dataUpdater = new DataUpdater(allViewModels);
dataUpdater.connect()
.done(function() {
log.info("Finalizing application startup");
//~~ Starting up the app
callViewModels(allViewModels, "onStartup");
viewModelMap["settingsViewModel"].requestData()
.done(bindViewModels);
});
}
);

View file

@ -637,12 +637,7 @@ $(function() {
self.requestData(payload.remote, "sdcard");
};
self.onServerConnect = function(payload) {
self._enableDragNDrop(true);
self.requestData(undefined, undefined, self.currentPath());
};
self.onServerReconnect = function(payload) {
self.onServerConnect = self.onServerReconnect = function(payload) {
self._enableDragNDrop(true);
self.requestData(undefined, undefined, self.currentPath());
};

View file

@ -111,7 +111,7 @@ $(function() {
self.allViewModels = allViewModels;
};
self.onDataUpdaterReconnect = function() {
self.onServerConnect = self.onServerReconnect = function() {
self.requestData();
};
@ -126,10 +126,6 @@ $(function() {
})
}
};
self.onStartupComplete = function() {
self.requestData();
};
}
OCTOPRINT_VIEWMODELS.push([

View file

@ -103,6 +103,7 @@ $(function() {
if (selectedSlicer != undefined) {
self.slicer(selectedSlicer);
self.profilesForSlicer(selectedSlicer);
}
self.defaultSlicer = selectedSlicer;

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: OctoPrint\n"
"Report-Msgid-Bugs-To: i18n@octoprint.org\n"
"POT-Creation-Date: 2016-05-04 13:26+0200\n"
"PO-Revision-Date: 2016-05-09 15:26+0100\n"
"POT-Creation-Date: 2016-06-08 11:03+0200\n"
"PO-Revision-Date: 2016-06-08 11:04+0100\n"
"Last-Translator: Gina Häußge <osd@foosel.net>\n"
"Language: de\n"
"Language-Team: German (http://www.transifex.com/projects/p/octoprint/language/de/)\n"
@ -976,128 +976,73 @@ msgstr "Zugriff"
msgid "Interface"
msgstr "Interface"
#: src/octoprint/static/js/app/dataupdater.js:94
#: src/octoprint/static/js/app/dataupdater.js:129
#: src/octoprint/static/js/app/dataupdater.js:92
#: src/octoprint/static/js/app/dataupdater.js:127
#: src/octoprint/static/js/app/helpers.js:451
#: src/octoprint/templates/overlays/offline.jinja2:6
msgid "Server is offline"
msgstr "Der Server ist offline"
#: src/octoprint/static/js/app/dataupdater.js:95
#: src/octoprint/static/js/app/dataupdater.js:93
msgid "The server appears to be offline, at least I'm not getting any response from it. I'll try to reconnect automatically <strong>over the next couple of minutes</strong>, however you are welcome to try a manual reconnect anytime using the button below."
msgstr "Der Server scheint offline zu sein, zumindest kann ich mich nicht mit ihm verbinden. Ich werde <strong>in den nächsten Minuten</strong> versuchen mich erneut zu verbinden, aber Du kannst mittels des folgenden Buttons auch jederzeit einen manuellen Verbindungsversuch anstoßen."
#: src/octoprint/static/js/app/dataupdater.js:130
#: src/octoprint/static/js/app/dataupdater.js:128
msgid "The server appears to be offline, at least I'm not getting any response from it. I <strong>could not reconnect automatically</strong>, but you may try a manual reconnect using the button below."
msgstr "Der Server scheint offline zu sein, zumindest kann ich mich nicht mit ihm verbinden. Ich <strong>konnte mich nicht automatisch neu verbinden</strong>, aber Du kannst mittels des folgenden Buttons einen manuellen Verbindungsversuch anstoßen."
#: src/octoprint/static/js/app/dataupdater.js:208
#: src/octoprint/static/js/app/dataupdater.js:314
#: src/octoprint/static/js/app/dataupdater.js:206
#: src/octoprint/static/js/app/dataupdater.js:226
#, python-format
msgid "Slicing ... (%(percentage)d%%)"
msgstr "Slice ... (%(percentage)d%%)"
#: src/octoprint/static/js/app/dataupdater.js:230
msgid "Rendering timelapse"
msgstr "Zeitrafferaufnahme wird gerendert"
#: src/octoprint/static/js/app/dataupdater.js:231
#, python-format
msgid "Now rendering timelapse %(movie_basename)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering."
msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_basename)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird."
#: src/octoprint/static/js/app/dataupdater.js:244
msgid "Timelapse ready"
msgstr "Zeitrafferaufnahme fertig"
#: src/octoprint/static/js/app/dataupdater.js:245
#, python-format
msgid "New timelapse %(movie_basename)s is done rendering."
msgstr "Neue Zeitrafferaufnahme %(movie_basename)s wurde fertig gerendert"
#: src/octoprint/static/js/app/dataupdater.js:256
#, python-format
msgid "Rendering of timelapse %(movie_basename)s failed with return code %(returncode)s"
msgstr "Rendering der Zeitrafferaufnahme %(movie_basename)s fehlgeschlagen mit Returncode %(returncode)s"
#: src/octoprint/static/js/app/dataupdater.js:263
msgid "Rendering failed"
msgstr "Rendering fehlgeschlagen"
#: src/octoprint/static/js/app/dataupdater.js:276
msgid "Capturing timelapse postroll"
msgstr "Zeichne Timelapse-Postroll auf"
#: src/octoprint/static/js/app/dataupdater.js:280
msgid "Now capturing timelapse post roll, this will take only a moment..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird nur einen Moment dauern..."
#: src/octoprint/static/js/app/dataupdater.js:287
#, python-format
msgid "%(minutes)d min"
msgstr "%(minutes)d Min"
#: src/octoprint/static/js/app/dataupdater.js:288
#, python-format
msgid "Now capturing timelapse post roll, this will take approximately %(duration)s (so until %(time)s)..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern (also etwa bis %(time)s)..."
#: src/octoprint/static/js/app/dataupdater.js:290
#, python-format
msgid "%(seconds)d sec"
msgstr "%(seconds) Sek"
#: src/octoprint/static/js/app/dataupdater.js:291
#, python-format
msgid "Now capturing timelapse post roll, this will take approximately %(duration)s..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern..."
#: src/octoprint/static/js/app/dataupdater.js:316
#: src/octoprint/static/js/app/dataupdater.js:228
msgid "Slicing ..."
msgstr "Slice ..."
#: src/octoprint/static/js/app/dataupdater.js:322
#: src/octoprint/static/js/app/dataupdater.js:234
msgid "Slicing done"
msgstr "Slicing abgeschlossen"
#: src/octoprint/static/js/app/dataupdater.js:322
#: src/octoprint/static/js/app/dataupdater.js:234
#, python-format
msgid "Sliced %(stl)s to %(gcode)s, took %(time).2f seconds"
msgstr "%(stl)s nach %(gcode)s geslicet, dauerte %(time).2f Sekunden"
#: src/octoprint/static/js/app/dataupdater.js:332
#: src/octoprint/static/js/app/dataupdater.js:244
#, python-format
msgid "Could not slice %(stl)s to %(gcode)s: %(reason)s"
msgstr "Konnte %(stl)s nicht nach %(gcode)s slicen: %(reason)s"
#: src/octoprint/static/js/app/dataupdater.js:333
#: src/octoprint/static/js/app/dataupdater.js:245
msgid "Slicing failed"
msgstr "Slicing fehlgeschlagen"
#: src/octoprint/static/js/app/dataupdater.js:337
#: src/octoprint/static/js/app/dataupdater.js:249
msgid "Streaming ..."
msgstr "Streaming ..."
#: src/octoprint/static/js/app/dataupdater.js:343
#: src/octoprint/static/js/app/dataupdater.js:255
msgid "Streaming done"
msgstr "Streaming abgeschlossen"
#: src/octoprint/static/js/app/dataupdater.js:344
#: src/octoprint/static/js/app/dataupdater.js:256
#, python-format
msgid "Streamed %(local)s to %(remote)s on SD, took %(time).2f seconds"
msgstr "%(local)s nach %(remote)s gestreamt, dauerte %(time).2f Sekunden"
#: src/octoprint/static/js/app/dataupdater.js:350
#: src/octoprint/static/js/app/dataupdater.js:358
#: src/octoprint/static/js/app/dataupdater.js:262
#: src/octoprint/static/js/app/dataupdater.js:270
msgid "Unhandled communication error"
msgstr "Unbehandelter Kommunikationsfehler"
#: src/octoprint/static/js/app/dataupdater.js:351
#: src/octoprint/static/js/app/dataupdater.js:263
#, python-format
msgid "There was an unhandled error while talking to the printer. Due to that the ongoing print job was cancelled. Error: %(firmwareError)s"
msgstr "Es gab einen unbehandelten Fehler bei der Kommunikation mit dem Drucker. Daher wurder der laufende Druckauftrag abgebrochen. Fehler: %(firmwareError)s"
#: src/octoprint/static/js/app/dataupdater.js:359
#: src/octoprint/static/js/app/dataupdater.js:271
#, python-format
msgid "The was an unhandled error while talking to the printer. Due to that OctoPrint disconnected. Error: %(error)s"
msgstr "Es gab einen unbehandelten Fehler bei der Kommunikation mit dem Drucker. Daher hat OctoPrint die Verbindung getrennt. Fehler: %(error)s"
@ -1550,6 +1495,61 @@ msgstr "zeige %(displayed)d Zeilen (Buffer voll)"
msgid "showing %(displayed)d lines"
msgstr "zeige %(displayed)d Zeilen"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:255
msgid "Capturing timelapse postroll"
msgstr "Zeichne Timelapse-Postroll auf"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:259
msgid "Now capturing timelapse post roll, this will take only a moment..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird nur einen Moment dauern..."
#: src/octoprint/static/js/app/viewmodels/timelapse.js:266
#, python-format
msgid "%(minutes)d min"
msgstr "%(minutes)d Min"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:267
#, python-format
msgid "Now capturing timelapse post roll, this will take approximately %(duration)s (so until %(time)s)..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern (also etwa bis %(time)s)..."
#: src/octoprint/static/js/app/viewmodels/timelapse.js:269
#, python-format
msgid "%(seconds)d sec"
msgstr "%(seconds) Sek"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:270
#, python-format
msgid "Now capturing timelapse post roll, this will take approximately %(duration)s..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern..."
#: src/octoprint/static/js/app/viewmodels/timelapse.js:283
msgid "Rendering timelapse"
msgstr "Zeitrafferaufnahme wird gerendert"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:284
#, python-format
msgid "Now rendering timelapse %(movie_prefix)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering."
msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_prefix)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird."
#: src/octoprint/static/js/app/viewmodels/timelapse.js:290
#, python-format
msgid "Rendering of timelapse %(movie_prefix)s failed with return code %(returncode)s"
msgstr "Rendering der Zeitrafferaufnahme %(movie_prefix)s fehlgeschlagen mit Returncode %(returncode)s"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:294
msgid "Rendering failed"
msgstr "Rendering fehlgeschlagen"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:303
msgid "Timelapse ready"
msgstr "Zeitrafferaufnahme fertig"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:304
#, python-format
msgid "New timelapse %(movie_prefix)s is done rendering."
msgstr "Neue Zeitrafferaufnahme %(movie_prefix)s wurde fertig gerendert"
#: src/octoprint/static/js/app/viewmodels/usersettings.js:10
msgid "Site default"
msgstr "Seitenvoreinstellung"
@ -1994,6 +1994,10 @@ msgstr "Warnung"
msgid "Critical"
msgstr "Kritisch"
#: src/octoprint/templates/dialogs/settings/folders.jinja2:59
msgid "Provide values including size unit. Allowed units are: b, byte, bytes, kb, mb, gb, tb (case insensitive). Example: <code>5MB</code>, <code>500KB</code>"
msgstr "Wert inklusive Größeneinheit. Erlaubte Einheiten sind: b, byte, bytes, kb, mb, gb, tb (Groß-/Kleinschreibung irrelevant). Beispiel: <code>5MB</code>, <code>500KB</code>"
#: src/octoprint/templates/dialogs/settings/gcodescripts.jinja2:3
msgid "Before print job starts"
msgstr "Vor dem Start eines Druckjobs"
@ -2826,11 +2830,11 @@ msgstr "Ungerenderte Zeitrafferaufnahmen"
msgid "Frames"
msgstr "Frames"
#: src/octoprint/templates/tabs/timelapse.jinja2:97
#: src/octoprint/templates/tabs/timelapse.jinja2:99
msgid "Delete unrendered timelapse"
msgstr "Ungerenderte Zeitrafferaufnahme löschen"
#: src/octoprint/templates/tabs/timelapse.jinja2:97
#: src/octoprint/templates/tabs/timelapse.jinja2:99
msgid "Render timelapse"
msgstr "Zeitrafferaufnahme rendern"

View file

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: OctoPrint\n"
"Report-Msgid-Bugs-To: i18n@octoprint.org\n"
"POT-Creation-Date: 2016-05-04 13:26+0200\n"
"PO-Revision-Date: 2016-05-09 15:26+0100\n"
"POT-Creation-Date: 2016-06-08 11:03+0200\n"
"PO-Revision-Date: 2016-06-08 11:04+0100\n"
"Last-Translator: Gina Häußge <osd@foosel.net>\n"
"Language: de\n"
"Language-Team: German (http://www.transifex.com/projects/p/octoprint/language/de/)\n"
@ -976,128 +976,73 @@ msgstr "Zugriff"
msgid "Interface"
msgstr "Interface"
#: src/octoprint/static/js/app/dataupdater.js:94
#: src/octoprint/static/js/app/dataupdater.js:129
#: src/octoprint/static/js/app/dataupdater.js:92
#: src/octoprint/static/js/app/dataupdater.js:127
#: src/octoprint/static/js/app/helpers.js:451
#: src/octoprint/templates/overlays/offline.jinja2:6
msgid "Server is offline"
msgstr "Der Server ist offline"
#: src/octoprint/static/js/app/dataupdater.js:95
#: src/octoprint/static/js/app/dataupdater.js:93
msgid "The server appears to be offline, at least I'm not getting any response from it. I'll try to reconnect automatically <strong>over the next couple of minutes</strong>, however you are welcome to try a manual reconnect anytime using the button below."
msgstr "Der Server scheint offline zu sein, zumindest kann ich mich nicht mit ihm verbinden. Ich werde <strong>in den nächsten Minuten</strong> versuchen mich erneut zu verbinden, aber Du kannst mittels des folgenden Buttons auch jederzeit einen manuellen Verbindungsversuch anstoßen."
#: src/octoprint/static/js/app/dataupdater.js:130
#: src/octoprint/static/js/app/dataupdater.js:128
msgid "The server appears to be offline, at least I'm not getting any response from it. I <strong>could not reconnect automatically</strong>, but you may try a manual reconnect using the button below."
msgstr "Der Server scheint offline zu sein, zumindest kann ich mich nicht mit ihm verbinden. Ich <strong>konnte mich nicht automatisch neu verbinden</strong>, aber Du kannst mittels des folgenden Buttons einen manuellen Verbindungsversuch anstoßen."
#: src/octoprint/static/js/app/dataupdater.js:208
#: src/octoprint/static/js/app/dataupdater.js:314
#: src/octoprint/static/js/app/dataupdater.js:206
#: src/octoprint/static/js/app/dataupdater.js:226
#, python-format
msgid "Slicing ... (%(percentage)d%%)"
msgstr "Slice ... (%(percentage)d%%)"
#: src/octoprint/static/js/app/dataupdater.js:230
msgid "Rendering timelapse"
msgstr "Zeitrafferaufnahme wird gerendert"
#: src/octoprint/static/js/app/dataupdater.js:231
#, python-format
msgid "Now rendering timelapse %(movie_basename)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering."
msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_basename)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird."
#: src/octoprint/static/js/app/dataupdater.js:244
msgid "Timelapse ready"
msgstr "Zeitrafferaufnahme fertig"
#: src/octoprint/static/js/app/dataupdater.js:245
#, python-format
msgid "New timelapse %(movie_basename)s is done rendering."
msgstr "Neue Zeitrafferaufnahme %(movie_basename)s wurde fertig gerendert"
#: src/octoprint/static/js/app/dataupdater.js:256
#, python-format
msgid "Rendering of timelapse %(movie_basename)s failed with return code %(returncode)s"
msgstr "Rendering der Zeitrafferaufnahme %(movie_basename)s fehlgeschlagen mit Returncode %(returncode)s"
#: src/octoprint/static/js/app/dataupdater.js:263
msgid "Rendering failed"
msgstr "Rendering fehlgeschlagen"
#: src/octoprint/static/js/app/dataupdater.js:276
msgid "Capturing timelapse postroll"
msgstr "Zeichne Timelapse-Postroll auf"
#: src/octoprint/static/js/app/dataupdater.js:280
msgid "Now capturing timelapse post roll, this will take only a moment..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird nur einen Moment dauern..."
#: src/octoprint/static/js/app/dataupdater.js:287
#, python-format
msgid "%(minutes)d min"
msgstr "%(minutes)d Min"
#: src/octoprint/static/js/app/dataupdater.js:288
#, python-format
msgid "Now capturing timelapse post roll, this will take approximately %(duration)s (so until %(time)s)..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern (also etwa bis %(time)s)..."
#: src/octoprint/static/js/app/dataupdater.js:290
#, python-format
msgid "%(seconds)d sec"
msgstr "%(seconds) Sek"
#: src/octoprint/static/js/app/dataupdater.js:291
#, python-format
msgid "Now capturing timelapse post roll, this will take approximately %(duration)s..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern..."
#: src/octoprint/static/js/app/dataupdater.js:316
#: src/octoprint/static/js/app/dataupdater.js:228
msgid "Slicing ..."
msgstr "Slice ..."
#: src/octoprint/static/js/app/dataupdater.js:322
#: src/octoprint/static/js/app/dataupdater.js:234
msgid "Slicing done"
msgstr "Slicing abgeschlossen"
#: src/octoprint/static/js/app/dataupdater.js:322
#: src/octoprint/static/js/app/dataupdater.js:234
#, python-format
msgid "Sliced %(stl)s to %(gcode)s, took %(time).2f seconds"
msgstr "%(stl)s nach %(gcode)s geslicet, dauerte %(time).2f Sekunden"
#: src/octoprint/static/js/app/dataupdater.js:332
#: src/octoprint/static/js/app/dataupdater.js:244
#, python-format
msgid "Could not slice %(stl)s to %(gcode)s: %(reason)s"
msgstr "Konnte %(stl)s nicht nach %(gcode)s slicen: %(reason)s"
#: src/octoprint/static/js/app/dataupdater.js:333
#: src/octoprint/static/js/app/dataupdater.js:245
msgid "Slicing failed"
msgstr "Slicing fehlgeschlagen"
#: src/octoprint/static/js/app/dataupdater.js:337
#: src/octoprint/static/js/app/dataupdater.js:249
msgid "Streaming ..."
msgstr "Streaming ..."
#: src/octoprint/static/js/app/dataupdater.js:343
#: src/octoprint/static/js/app/dataupdater.js:255
msgid "Streaming done"
msgstr "Streaming abgeschlossen"
#: src/octoprint/static/js/app/dataupdater.js:344
#: src/octoprint/static/js/app/dataupdater.js:256
#, python-format
msgid "Streamed %(local)s to %(remote)s on SD, took %(time).2f seconds"
msgstr "%(local)s nach %(remote)s gestreamt, dauerte %(time).2f Sekunden"
#: src/octoprint/static/js/app/dataupdater.js:350
#: src/octoprint/static/js/app/dataupdater.js:358
#: src/octoprint/static/js/app/dataupdater.js:262
#: src/octoprint/static/js/app/dataupdater.js:270
msgid "Unhandled communication error"
msgstr "Unbehandelter Kommunikationsfehler"
#: src/octoprint/static/js/app/dataupdater.js:351
#: src/octoprint/static/js/app/dataupdater.js:263
#, python-format
msgid "There was an unhandled error while talking to the printer. Due to that the ongoing print job was cancelled. Error: %(firmwareError)s"
msgstr "Es gab einen unbehandelten Fehler bei der Kommunikation mit dem Drucker. Daher wurder der laufende Druckauftrag abgebrochen. Fehler: %(firmwareError)s"
#: src/octoprint/static/js/app/dataupdater.js:359
#: src/octoprint/static/js/app/dataupdater.js:271
#, python-format
msgid "The was an unhandled error while talking to the printer. Due to that OctoPrint disconnected. Error: %(error)s"
msgstr "Es gab einen unbehandelten Fehler bei der Kommunikation mit dem Drucker. Daher hat OctoPrint die Verbindung getrennt. Fehler: %(error)s"
@ -1550,6 +1495,61 @@ msgstr "zeige %(displayed)d Zeilen (Buffer voll)"
msgid "showing %(displayed)d lines"
msgstr "zeige %(displayed)d Zeilen"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:255
msgid "Capturing timelapse postroll"
msgstr "Zeichne Timelapse-Postroll auf"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:259
msgid "Now capturing timelapse post roll, this will take only a moment..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird nur einen Moment dauern..."
#: src/octoprint/static/js/app/viewmodels/timelapse.js:266
#, python-format
msgid "%(minutes)d min"
msgstr "%(minutes)d Min"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:267
#, python-format
msgid "Now capturing timelapse post roll, this will take approximately %(duration)s (so until %(time)s)..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern (also etwa bis %(time)s)..."
#: src/octoprint/static/js/app/viewmodels/timelapse.js:269
#, python-format
msgid "%(seconds)d sec"
msgstr "%(seconds) Sek"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:270
#, python-format
msgid "Now capturing timelapse post roll, this will take approximately %(duration)s..."
msgstr "Zeichne jetzt Timelapse-Postroll auf, dies wird voraussichtlich %(duration)s dauern..."
#: src/octoprint/static/js/app/viewmodels/timelapse.js:283
msgid "Rendering timelapse"
msgstr "Zeitrafferaufnahme wird gerendert"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:284
#, python-format
msgid "Now rendering timelapse %(movie_prefix)s. Due to performance reasons it is not recommended to start a print job while a movie is still rendering."
msgstr "Rendere jetzt die Zeitrafferaufnahme %(movie_prefix)s. Aus Gründen der Performance ist es nicht empfehlenswert, einen Druckauftrage zu starten, so lange die Aufnahme noch gerendert wird."
#: src/octoprint/static/js/app/viewmodels/timelapse.js:290
#, python-format
msgid "Rendering of timelapse %(movie_prefix)s failed with return code %(returncode)s"
msgstr "Rendering der Zeitrafferaufnahme %(movie_prefix)s fehlgeschlagen mit Returncode %(returncode)s"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:294
msgid "Rendering failed"
msgstr "Rendering fehlgeschlagen"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:303
msgid "Timelapse ready"
msgstr "Zeitrafferaufnahme fertig"
#: src/octoprint/static/js/app/viewmodels/timelapse.js:304
#, python-format
msgid "New timelapse %(movie_prefix)s is done rendering."
msgstr "Neue Zeitrafferaufnahme %(movie_prefix)s wurde fertig gerendert"
#: src/octoprint/static/js/app/viewmodels/usersettings.js:10
msgid "Site default"
msgstr "Seitenvoreinstellung"
@ -1994,6 +1994,10 @@ msgstr "Warnung"
msgid "Critical"
msgstr "Kritisch"
#: src/octoprint/templates/dialogs/settings/folders.jinja2:59
msgid "Provide values including size unit. Allowed units are: b, byte, bytes, kb, mb, gb, tb (case insensitive). Example: <code>5MB</code>, <code>500KB</code>"
msgstr "Wert inklusive Größeneinheit. Erlaubte Einheiten sind: b, byte, bytes, kb, mb, gb, tb (Groß-/Kleinschreibung irrelevant). Beispiel: <code>5MB</code>, <code>500KB</code>"
#: src/octoprint/templates/dialogs/settings/gcodescripts.jinja2:3
msgid "Before print job starts"
msgstr "Vor dem Start eines Druckjobs"
@ -2826,11 +2830,11 @@ msgstr "Ungerenderte Zeitrafferaufnahmen"
msgid "Frames"
msgstr "Frames"
#: src/octoprint/templates/tabs/timelapse.jinja2:97
#: src/octoprint/templates/tabs/timelapse.jinja2:99
msgid "Delete unrendered timelapse"
msgstr "Ungerenderte Zeitrafferaufnahme löschen"
#: src/octoprint/templates/tabs/timelapse.jinja2:97
#: src/octoprint/templates/tabs/timelapse.jinja2:99
msgid "Render timelapse"
msgstr "Zeitrafferaufnahme rendern"

View file

@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: OctoPrint 1.2.11.dev32+g76959e0.dirty\n"
"Project-Id-Version: OctoPrint 1.2.12.dev21+g5006b01.dirty\n"
"Report-Msgid-Bugs-To: i18n@octoprint.org\n"
"POT-Creation-Date: 2016-05-04 13:26+0200\n"
"POT-Creation-Date: 2016-06-08 11:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1045,14 +1045,14 @@ msgstr ""
msgid "Interface"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:94
#: src/octoprint/static/js/app/dataupdater.js:129
#: src/octoprint/static/js/app/dataupdater.js:92
#: src/octoprint/static/js/app/dataupdater.js:127
#: src/octoprint/static/js/app/helpers.js:451
#: src/octoprint/templates/overlays/offline.jinja2:6
msgid "Server is offline"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:95
#: src/octoprint/static/js/app/dataupdater.js:93
msgid ""
"The server appears to be offline, at least I'm not getting any response "
"from it. I'll try to reconnect automatically <strong>over the next couple"
@ -1060,131 +1060,67 @@ msgid ""
"anytime using the button below."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:130
#: src/octoprint/static/js/app/dataupdater.js:128
msgid ""
"The server appears to be offline, at least I'm not getting any response "
"from it. I <strong>could not reconnect automatically</strong>, but you "
"may try a manual reconnect using the button below."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:208
#: src/octoprint/static/js/app/dataupdater.js:314
#: src/octoprint/static/js/app/dataupdater.js:206
#: src/octoprint/static/js/app/dataupdater.js:226
#, python-format
msgid "Slicing ... (%(percentage)d%%)"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:230
msgid "Rendering timelapse"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:231
#, python-format
msgid ""
"Now rendering timelapse %(movie_basename)s. Due to performance reasons it"
" is not recommended to start a print job while a movie is still "
"rendering."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:244
msgid "Timelapse ready"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:245
#, python-format
msgid "New timelapse %(movie_basename)s is done rendering."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:256
#, python-format
msgid ""
"Rendering of timelapse %(movie_basename)s failed with return code "
"%(returncode)s"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:263
msgid "Rendering failed"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:276
msgid "Capturing timelapse postroll"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:280
msgid "Now capturing timelapse post roll, this will take only a moment..."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:287
#, python-format
msgid "%(minutes)d min"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:288
#, python-format
msgid ""
"Now capturing timelapse post roll, this will take approximately "
"%(duration)s (so until %(time)s)..."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:290
#, python-format
msgid "%(seconds)d sec"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:291
#, python-format
msgid ""
"Now capturing timelapse post roll, this will take approximately "
"%(duration)s..."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:316
#: src/octoprint/static/js/app/dataupdater.js:228
msgid "Slicing ..."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:322
#: src/octoprint/static/js/app/dataupdater.js:234
msgid "Slicing done"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:322
#: src/octoprint/static/js/app/dataupdater.js:234
#, python-format
msgid "Sliced %(stl)s to %(gcode)s, took %(time).2f seconds"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:332
#: src/octoprint/static/js/app/dataupdater.js:244
#, python-format
msgid "Could not slice %(stl)s to %(gcode)s: %(reason)s"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:333
#: src/octoprint/static/js/app/dataupdater.js:245
msgid "Slicing failed"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:337
#: src/octoprint/static/js/app/dataupdater.js:249
msgid "Streaming ..."
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:343
#: src/octoprint/static/js/app/dataupdater.js:255
msgid "Streaming done"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:344
#: src/octoprint/static/js/app/dataupdater.js:256
#, python-format
msgid "Streamed %(local)s to %(remote)s on SD, took %(time).2f seconds"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:350
#: src/octoprint/static/js/app/dataupdater.js:358
#: src/octoprint/static/js/app/dataupdater.js:262
#: src/octoprint/static/js/app/dataupdater.js:270
msgid "Unhandled communication error"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:351
#: src/octoprint/static/js/app/dataupdater.js:263
#, python-format
msgid ""
"There was an unhandled error while talking to the printer. Due to that "
"the ongoing print job was cancelled. Error: %(firmwareError)s"
msgstr ""
#: src/octoprint/static/js/app/dataupdater.js:359
#: src/octoprint/static/js/app/dataupdater.js:271
#, python-format
msgid ""
"The was an unhandled error while talking to the printer. Due to that "
@ -1655,6 +1591,69 @@ msgstr ""
msgid "showing %(displayed)d lines"
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:255
msgid "Capturing timelapse postroll"
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:259
msgid "Now capturing timelapse post roll, this will take only a moment..."
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:266
#, python-format
msgid "%(minutes)d min"
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:267
#, python-format
msgid ""
"Now capturing timelapse post roll, this will take approximately "
"%(duration)s (so until %(time)s)..."
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:269
#, python-format
msgid "%(seconds)d sec"
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:270
#, python-format
msgid ""
"Now capturing timelapse post roll, this will take approximately "
"%(duration)s..."
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:283
msgid "Rendering timelapse"
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:284
#, python-format
msgid ""
"Now rendering timelapse %(movie_prefix)s. Due to performance reasons it "
"is not recommended to start a print job while a movie is still rendering."
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:290
#, python-format
msgid ""
"Rendering of timelapse %(movie_prefix)s failed with return code "
"%(returncode)s"
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:294
msgid "Rendering failed"
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:303
msgid "Timelapse ready"
msgstr ""
#: src/octoprint/static/js/app/viewmodels/timelapse.js:304
#, python-format
msgid "New timelapse %(movie_prefix)s is done rendering."
msgstr ""
#: src/octoprint/static/js/app/viewmodels/usersettings.js:10
msgid "Site default"
msgstr ""
@ -2109,6 +2108,13 @@ msgstr ""
msgid "Critical"
msgstr ""
#: src/octoprint/templates/dialogs/settings/folders.jinja2:59
msgid ""
"Provide values including size unit. Allowed units are: b, byte, bytes, "
"kb, mb, gb, tb (case insensitive). Example: <code>5MB</code>, "
"<code>500KB</code>"
msgstr ""
#: src/octoprint/templates/dialogs/settings/gcodescripts.jinja2:3
msgid "Before print job starts"
msgstr ""
@ -3006,11 +3012,11 @@ msgstr ""
msgid "Frames"
msgstr ""
#: src/octoprint/templates/tabs/timelapse.jinja2:97
#: src/octoprint/templates/tabs/timelapse.jinja2:99
msgid "Delete unrendered timelapse"
msgstr ""
#: src/octoprint/templates/tabs/timelapse.jinja2:97
#: src/octoprint/templates/tabs/timelapse.jinja2:99
msgid "Render timelapse"
msgstr ""