diff --git a/.versioneer-lookup b/.versioneer-lookup index 9e4f93d0..9bc29b46 100644 --- a/.versioneer-lookup +++ b/.versioneer-lookup @@ -7,18 +7,20 @@ # The file is processed from top to bottom, the first matching line wins. If or 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 ' 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 diff --git a/CHANGELOG.md b/CHANGELOG.md index 49d80050..de984d39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a43ece0b..427d2b44 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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` (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 diff --git a/SUPPORTERS.md b/SUPPORTERS.md index 958f3c02..a49b3375 100644 --- a/SUPPORTERS.md +++ b/SUPPORTERS.md @@ -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)! \ No newline at end of file +and 734 more wonderful people pledging on the [Patreon campaign](https://patreon.com/foosel)! \ No newline at end of file diff --git a/docs/events/index.rst b/docs/events/index.rst index 70aa5d2f..fb2ad097 100644 --- a/docs/events/index.rst +++ b/docs/events/index.rst @@ -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 -------- diff --git a/src/octoprint/events.py b/src/octoprint/events.py index 7e786519..ea5e8a4b 100644 --- a/src/octoprint/events.py +++ b/src/octoprint/events.py @@ -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" diff --git a/src/octoprint/plugins/announcements/__init__.py b/src/octoprint/plugins/announcements/__init__.py index d7b1fa67..ce8101dc 100644 --- a/src/octoprint/plugins/announcements/__init__.py +++ b/src/octoprint/plugins/announcements/__init__.py @@ -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", diff --git a/src/octoprint/plugins/cura/__init__.py b/src/octoprint/plugins/cura/__init__.py index 62f6770c..4517efd9 100644 --- a/src/octoprint/plugins/cura/__init__.py +++ b/src/octoprint/plugins/cura/__init__.py @@ -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: diff --git a/src/octoprint/server/api/slicing.py b/src/octoprint/server/api/slicing.py index 59d578dc..96423195 100644 --- a/src/octoprint/server/api/slicing.py +++ b/src/octoprint/server/api/slicing.py @@ -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 diff --git a/src/octoprint/slicing/__init__.py b/src/octoprint/slicing/__init__.py index 3248bd63..46eb026e 100644 --- a/src/octoprint/slicing/__init__.py +++ b/src/octoprint/slicing/__init__.py @@ -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): diff --git a/src/octoprint/slicing/exceptions.py b/src/octoprint/slicing/exceptions.py index 8a543e9f..7f4b1b6a 100644 --- a/src/octoprint/slicing/exceptions.py +++ b/src/octoprint/slicing/exceptions.py @@ -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) diff --git a/src/octoprint/static/js/app/dataupdater.js b/src/octoprint/static/js/app/dataupdater.js index 076a533a..2ce2ca9b 100644 --- a/src/octoprint/static/js/app/dataupdater.js +++ b/src/octoprint/static/js/app/dataupdater.js @@ -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(); } diff --git a/src/octoprint/static/js/app/main.js b/src/octoprint/static/js/app/main.js index 402933a6..61d25b64 100644 --- a/src/octoprint/static/js/app/main.js +++ b/src/octoprint/static/js/app/main.js @@ -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); + }); } ); diff --git a/src/octoprint/static/js/app/viewmodels/files.js b/src/octoprint/static/js/app/viewmodels/files.js index 3c58b69e..c20bda06 100644 --- a/src/octoprint/static/js/app/viewmodels/files.js +++ b/src/octoprint/static/js/app/viewmodels/files.js @@ -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()); }; diff --git a/src/octoprint/static/js/app/viewmodels/loginstate.js b/src/octoprint/static/js/app/viewmodels/loginstate.js index 046936a9..f1133abf 100644 --- a/src/octoprint/static/js/app/viewmodels/loginstate.js +++ b/src/octoprint/static/js/app/viewmodels/loginstate.js @@ -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([ diff --git a/src/octoprint/static/js/app/viewmodels/slicing.js b/src/octoprint/static/js/app/viewmodels/slicing.js index c7fdba0f..88a92c26 100644 --- a/src/octoprint/static/js/app/viewmodels/slicing.js +++ b/src/octoprint/static/js/app/viewmodels/slicing.js @@ -103,6 +103,7 @@ $(function() { if (selectedSlicer != undefined) { self.slicer(selectedSlicer); + self.profilesForSlicer(selectedSlicer); } self.defaultSlicer = selectedSlicer; diff --git a/src/octoprint/translations/de/LC_MESSAGES/messages.mo b/src/octoprint/translations/de/LC_MESSAGES/messages.mo index 947535d8..bcdcf24a 100644 Binary files a/src/octoprint/translations/de/LC_MESSAGES/messages.mo and b/src/octoprint/translations/de/LC_MESSAGES/messages.mo differ diff --git a/src/octoprint/translations/de/LC_MESSAGES/messages.po b/src/octoprint/translations/de/LC_MESSAGES/messages.po index 9215382c..1aaf2389 100644 --- a/src/octoprint/translations/de/LC_MESSAGES/messages.po +++ b/src/octoprint/translations/de/LC_MESSAGES/messages.po @@ -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 \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 over the next couple of minutes, 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 in den nächsten Minuten 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 could not reconnect automatically, 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 konnte mich nicht automatisch neu verbinden, 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: 5MB, 500KB" +msgstr "Wert inklusive Größeneinheit. Erlaubte Einheiten sind: b, byte, bytes, kb, mb, gb, tb (Groß-/Kleinschreibung irrelevant). Beispiel: 5MB, 500KB" + #: 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" diff --git a/translations/de/LC_MESSAGES/messages.mo b/translations/de/LC_MESSAGES/messages.mo index 947535d8..bcdcf24a 100644 Binary files a/translations/de/LC_MESSAGES/messages.mo and b/translations/de/LC_MESSAGES/messages.mo differ diff --git a/translations/de/LC_MESSAGES/messages.po b/translations/de/LC_MESSAGES/messages.po index 9215382c..1aaf2389 100644 --- a/translations/de/LC_MESSAGES/messages.po +++ b/translations/de/LC_MESSAGES/messages.po @@ -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 \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 over the next couple of minutes, 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 in den nächsten Minuten 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 could not reconnect automatically, 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 konnte mich nicht automatisch neu verbinden, 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: 5MB, 500KB" +msgstr "Wert inklusive Größeneinheit. Erlaubte Einheiten sind: b, byte, bytes, kb, mb, gb, tb (Groß-/Kleinschreibung irrelevant). Beispiel: 5MB, 500KB" + #: 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" diff --git a/translations/messages.pot b/translations/messages.pot index 0e283491..1bc5ef39 100644 --- a/translations/messages.pot +++ b/translations/messages.pot @@ -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 \n" "Language-Team: LANGUAGE \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 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 could not reconnect automatically, 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: 5MB, " +"500KB" +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 ""