diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index aaa74ce..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1 +0,0 @@ -**Currently no pull request are accepted due to extensive refactoring!** diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 0000000..8c5fbf9 --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,86 @@ +repository: + # See https://developer.github.com/v3/repos/#edit for all available settings. + + # The name of the repository. Changing this will rename the repository +# name: repo-name + + # A short description of the repository that will show up on GitHub +# description: description of repo + + # A URL with more information about the repository +# homepage: https://example.github.io/ + + # Either `true` to make the repository private, or `false` to make it public. +# private: false + + # Either `true` to enable issues for this repository, `false` to disable them. + has_issues: true + + # Either `true` to enable the wiki for this repository, `false` to disable it. + has_wiki: true + + # Either `true` to enable downloads for this repository, `false` to disable them. +# has_downloads: true + + # Updates the default branch for this repository. +# default_branch: master + + # Either `true` to allow squash-merging pull requests, or `false` to prevent + # squash-merging. +# allow_squash_merge: true + + # Either `true` to allow merging pull requests with a merge commit, or `false` + # to prevent merging pull requests with merge commits. +# allow_merge_commit: true + + # Either `true` to allow rebase-merging pull requests, or `false` to prevent + # rebase-merging. +# allow_rebase_merge: true + +# Labels: define labels for Issues and Pull Requests +labels: + - name: "type: bug" + description: "Something isn't working" + color: d73a4a + - name: "type: enhancement" + description: "New feature or request" + color: a2eeef + - name: "type: question" + description: "Further information is requested" + color: d876e3 + - name: "status: analysing" + color: d3d847 + - name: "status: inProgress" + description: "I am working on it" + color: 5319e7 + - name: "status: inNextRelease" + description: "Will be implemented/fixed in next release" + color: 4ae857 + - name: "status: waitingForFeedback" + description: "Wating for Customers feedback" + color: bfdadc + - name: "status: waitingForTestFeedback" + color: 006b75 + - name: "status: wontfix" + description: "I don't wont to fix this" + color: fbca04 + - name: "status: markedForAutoClose" + description: "Issue will be closed automatically" + color: ed6d75 + + +# Collaborators: give specific users access to this repository. +#collaborators: +# - username: bkeepers + # Note: Only valid on organization-owned repositories. + # The permission to grant the collaborator. Can be one of: + # * `pull` - can pull, but not push to or administer this repository. + # * `push` - can pull and push, but not administer this repository. + # * `admin` - can pull, push and administer this repository. +# permission: push + +# - username: hubot +# permission: pull + +# - username: +# permission: pull diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..07cd942 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,18 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 30 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 10 +# Issues with these labels will never be considered stale +exemptLabels: + - "status: analysing" + - "status: inNextRelease" + - "status: inProgress" + - "status: wontfix" +# Label to use when marking an issue as stale +staleLabel: "status: markedForAutoClose" +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked for closing, because it has not had + activity in 30 days. It will be closed if no further activity occurs in 10 days. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/.github/workflows/github-release-actions.yml b/.github/workflows/github-release-actions.yml new file mode 100644 index 0000000..ef600fd --- /dev/null +++ b/.github/workflows/github-release-actions.yml @@ -0,0 +1,78 @@ +### +### Simple script to build a zip file of the whole repository +### +# +#script: +## debug - echo 'Hello World' +# - export PLUGIN_VERSION=$(cat setup.py | grep 'plugin_version = "*"' | cut -d '"' -f2) +# - zip -r master.zip * -i '\octoprint_*' 'translations' 'README.md' 'requirements.txt' 'setup.py' +## debug - ls -al +# +### see "Fix travis automatic build and deploy" +### https://github.com/oliexdev/openScale/pull/121 +### https://github.com/oliexdev/openScale/pull/121/files +#before_deploy: +# - git tag -f travis-build +# - git remote add gh https://${TRAVIS_REPO_SLUG%/*}:${GITHUB_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git +# - git push -f gh travis-build +# - git remote remove gh +# +#deploy: +# name: "V${PLUGIN_VERSION}-draft" +# #prerelease: true +# draft: true +# provider: releases +# api_key: "${GITHUB_TOKEN}" +# file: "master.zip" +# overwrite: true +# skip_cleanup: true +# target_commitish: $TRAVIS_COMMIT + + + +name: Build Plugin Release - Action +on: [push] +jobs: + Build-Release-ZIP-Action: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v2 + + - run: echo "Read current plugin version..." + - run: export PLUGIN_VERSION=$(cat setup.py | grep 'plugin_version = "*"' | cut -d '"' -f2) + - run: echo "Plugin Version $PLUGIN_VERSION ${PLUGIN_VERSION}" + + - run: echo "Build ZIP" + - run: zip -r master.zip * -i '\octoprint_*' 'translations' 'README.md' 'requirements.txt' 'setup.py' + - name: List files in the repository + run: | + ls ${{ github.workspace }} + + - name: version + run: echo "::set-output name=version::$(cat setup.py | grep 'plugin_version = "*"' | cut -d '"' -f2)" + id: version + + - name: release + uses: actions/create-release@v1 + id: create_release + env: + GITHUB_TOKEN: ${{ github.token }} + with: + draft: true + prerelease: false + release_name: V${{ steps.version.outputs.version }}-draft + tag_name: ${{ steps.version.outputs.version }}-draft + body_path: RELEASE_TEMPLATE.md + + - name: upload master.zip to release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ github.token }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: master.zip + asset_name: master.zip + asset_content_type: application/gzip + + - run: echo "🍏 This job's status is ${{ job.status }}." \ No newline at end of file diff --git a/.travis.yml.notusedanymore b/.travis.yml.notusedanymore new file mode 100644 index 0000000..be51dff --- /dev/null +++ b/.travis.yml.notusedanymore @@ -0,0 +1,29 @@ +## +## Simple script to build a zip file of the whole repository +## + +script: +# debug - echo 'Hello World' + - export PLUGIN_VERSION=$(cat setup.py | grep 'plugin_version = "*"' | cut -d '"' -f2) + - zip -r master.zip * -i '\octoprint_*' 'translations' 'README.md' 'requirements.txt' 'setup.py' +# debug - ls -al + +## see "Fix travis automatic build and deploy" +## https://github.com/oliexdev/openScale/pull/121 +## https://github.com/oliexdev/openScale/pull/121/files +before_deploy: + - git tag -f travis-build + - git remote add gh https://${TRAVIS_REPO_SLUG%/*}:${GITHUB_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git + - git push -f gh travis-build + - git remote remove gh + +deploy: + name: "V${PLUGIN_VERSION}-draft" + #prerelease: true + draft: true + provider: releases + api_key: "${GITHUB_TOKEN}" + file: "master.zip" + overwrite: true + skip_cleanup: true + target_commitish: $TRAVIS_COMMIT diff --git a/README.md b/README.md index 84d4e75..76e4740 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,39 @@ # OctoPrint-FilamentManager +## UNDER NEW MANAGEMENT + + Hi everybody, + because there was no activtiy in the last month on the origial GitHub-Repository from @malnvenshorn, + the community decided to find a new home of this OctoPrint-Plugin and here it is ;-) + See https://github.com/OctoPrint/plugins.octoprint.org/issues/471 for more details + + What is my roadmap/stratagy of "hosting" this plugin? + - First: Plugin should run under the latest versions of python and OctoPrint + - Analysing/fixing issues that prevent using the plugin + - An open mind for new ideas.... + - ...but if the effort to implement new features is to height, then it will probably be implemented in my SpoolManager-Plugin + (https://github.com/OllisGit/OctoPrint-SpoolManager) + - ...also I will move more and more features from FilamentManager to SpoolManager (e.g. external Database, MultiTool, ...) + +# Overview + +[![Version](https://img.shields.io/badge/dynamic/json.svg?color=brightgreen&label=version&url=https://api.github.com/repos/OllisGit/OctoPrint-FilamentManager/releases&query=$[0].name)]() +[![Released](https://img.shields.io/badge/dynamic/json.svg?color=brightgreen&label=released&url=https://api.github.com/repos/OllisGit/OctoPrint-FilamentManager/releases&query=$[0].published_at)]() +![GitHub Releases (by Release)](https://img.shields.io/github/downloads/OllisGit/OctoPrint-FilamentManager/latest/total.svg) + This OctoPrint plugin makes it easy to manage your inventory of filament spools. You can add all your spools and assign them to print jobs. The Filament Manager will automatically track the amount of extruded filament so you can always see how much is left on your spools. -If you have questions or encounter issues please take a look at the [Frequently Asked Questions](https://github.com/malnvenshorn/OctoPrint-FilamentManager/wiki#faq) first. There might be already an answer. In case you haven't found what you are looking for, feel free to open a [ticket](https://github.com/malnvenshorn/OctoPrint-FilamentManager/issues/new) and I'll try to help. Since OctoPrint provides an own [community forum](https://discourse.octoprint.org/) questions and requests for help should be placed there. +If you have questions or encounter issues please take a look at the [Frequently Asked Questions](https://github.com/OllisGit/OctoPrint-FilamentManager/wiki#faq) first. There might be already an answer. +In case you haven't found what you are looking for, feel free to open a [ticket](https://github.com/OllisGit/OctoPrint-FilamentManager/issues/new/choose) and I'll try to help. +Or ask questions and requests for help in the community forum [community forum](https://community.octoprint.org/). + +#### Support my Efforts + +This plugin, as well as my [other plugins](https://github.com/OllisGit/) were developed in my spare time. +If you like it, I would be thankful about a cup of coffee :) + +[![More coffee, more code](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6SW5R6ZUKLB5E&source=url) + ## Features @@ -18,12 +49,24 @@ If you have questions or encounter issues please take a look at the [Frequently 1. Install this plugin via the bundled [Plugin Manager](https://github.com/foosel/OctoPrint/wiki/Plugin:-Plugin-Manager) or manually using this URL: - `https://github.com/malnvenshorn/OctoPrint-FilamentManager/archive/master.zip` + `https://github.com/OllisGit/OctoPrint-FilamentManager/releases/latest/download/master.zip` -1. For PostgreSQL support you need to install an additional dependency: +1. For PostgreSQL support you need to install an additional dependency. Take a look into the [wiki](https://github.com/OllisGit/OctoPrint-FilamentManager/wiki) for more details. `pip install psycopg2` + +### Using PostgreSQL with Docker +You need to make sure that you setup a docker runtime on your system. After that you can "manage" a PostgreSQL with the following commands: + + docker-compose up +_ + + docker-compose down --volumes +_ + + docker-compose run postgres bash + ## Screenshots ![FilamentManager Sidebar](screenshots/filamentmanager_sidebar.png?raw=true) @@ -33,3 +76,22 @@ or manually using this URL: ![FilamentManager Settings Spool](screenshots/filamentmanager_settings_spool.png?raw=true) ![FilamentManager Settings](screenshots/filamentmanager_settings.png?raw=true) + +# Developer section + +## API - Calls + +E.g. +``` +url = 'http://localhost/plugin/filamentmanager/selections/0' + headers = {'X-Api-Key': config.API_KEY} + payload = { + "selection": { + "tool": 0, + "spool": { + "id": id + } + }, + "updateui": True + } +``` diff --git a/RELEASE_TEMPLATE.md b/RELEASE_TEMPLATE.md new file mode 100644 index 0000000..f88c24a --- /dev/null +++ b/RELEASE_TEMPLATE.md @@ -0,0 +1,15 @@ +## [BugFix] +- #xxx + +## [Enhancement] +- #xxx + +## Counter +![downloaded](https://img.shields.io/github/downloads/OllisGit/OctoPrint-FilamentManager/xxx/total) + +## Support my Efforts + +This plugin, as well as my [other plugins](https://github.com/OllisGit/) were developed in my spare time. +If you like it, I would be thankful about a cup of coffee :) + +[![More coffee, more code](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6SW5R6ZUKLB5E&source=url) diff --git a/TODOs.md b/TODOs.md new file mode 100644 index 0000000..1102ff3 --- /dev/null +++ b/TODOs.md @@ -0,0 +1,5 @@ +What are the next steps? +======================== + +- handling release channel +- issue 23: update to SQLAlchemy 1.3.23 (precondition: release-channel) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b2dfa2f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3' +services: + postgres: + image: "postgres" # use latest official postgres version +# env_file: +# - database.env # configure postgres + volumes: + - postgres-data:/var/lib/postgresql/data/ # persist data even if container shuts down + ports: + - 5432:5432 + environment: + - POSTGRES_DB=spoolmanagerdb + - POSTGRES_USER=Olli + - POSTGRES_PASSWORD=illO + +volumes: + postgres-data: # named volumes can be managed easier using docker-compose diff --git a/octoprint_filamentmanager/__init__.py b/octoprint_filamentmanager/__init__.py index 3988788..79da242 100644 --- a/octoprint_filamentmanager/__init__.py +++ b/octoprint_filamentmanager/__init__.py @@ -15,7 +15,8 @@ from .api import FilamentManagerApi from .data import FilamentManager -from .odometer import FilamentOdometer +from .newodometer import NewFilamentOdometer +# from .odometer import FilamentOdometer class FilamentManagerPlugin(FilamentManagerApi, @@ -31,7 +32,8 @@ class FilamentManagerPlugin(FilamentManagerApi, def __init__(self): self.client_id = None self.filamentManager = None - self.filamentOdometer = None + # self.filamentOdometer = None + self.myFilamentOdometer = None self.lastPrintState = None self.odometerEnabled = False @@ -49,8 +51,13 @@ def get_client_id(): self.client_id = get_client_id() - self.filamentOdometer = FilamentOdometer() - self.filamentOdometer.set_g90_extruder(self._settings.getBoolean(["feature", "g90InfluencesExtruder"])) + # self.filamentOdometer = FilamentOdometer() + # self.filamentOdometer.set_g90_extruder(self._settings.get_boolean(["feature", "g90InfluencesExtruder"])) + + self.myFilamentOdometer = NewFilamentOdometer() + self.myFilamentOdometer.set_g90_extruder(self._settings.get_boolean(["feature", "g90InfluencesExtruder"])) + + self.alreadyCanceled = False db_config = self._settings.get(["database"], merged=True) migrate_schema_version = False @@ -97,6 +104,7 @@ def get_client_id(): .format(old=schema_version, new=self.DB_VERSION)) except Exception as e: self._logger.error("Failed to initialize database: {message}".format(message=str(e))) + self._logger.exception("Failed to initialize database: {message}".format(message=str(e))) def migrate_database_schema(self, target, current): if current <= 1: @@ -118,6 +126,9 @@ def migrate_database_schema(self, target, current): self.filamentManager.initialize() def on_after_startup(self): + self.odometerEnabled = self._settings.get_boolean(["enableOdometer"]) + self.pauseEnabled = self._settings.get_boolean(["autoPause"]) + # subscribe to the notify channel so that we get notified if another client has altered the data # notify is not available if we are connected to the internal sqlite database if self.filamentManager is not None and self.filamentManager.notify is not None: @@ -132,11 +143,7 @@ def notify(pid, channel, payload): self.update_pause_thresholds() # set temperature offsets for saved selections - try: - all_selections = self.filamentManager.get_all_selections(self.client_id) - self.set_temp_offsets(all_selections) - except Exception as e: - self._logger.error("Failed to set temperature offsets: {message}".format(message=str(e))) + self.assign_temperature_offset() def on_shutdown(self): if self.filamentManager is not None: @@ -196,7 +203,11 @@ def on_settings_save(self, data): # we have to recalculate the pause thresholds self.update_pause_thresholds() - self.filamentOdometer.set_g90_extruder(self._settings.getBoolean(["feature", "g90InfluencesExtruder"])) + # self.filamentOdometer.set_g90_extruder(self._settings.get_boolean(["feature", "g90InfluencesExtruder"])) + self.myFilamentOdometer.set_g90_extruder(self._settings.get_boolean(["feature", "g90InfluencesExtruder"])) + + self.odometerEnabled = self._settings.get_boolean(["enableOdometer"]) + self.pauseEnabled = self._settings.get_boolean(["autoPause"]) # AssetPlugin @@ -221,43 +232,115 @@ def get_template_configs(self): # EventHandlerPlugin def on_event(self, event, payload): - if event == Events.PRINTER_STATE_CHANGED: - self.on_printer_state_changed(payload) - - def on_printer_state_changed(self, payload): - if payload['state_id'] == "PRINTING": - if self.lastPrintState == "PAUSED": - # resuming print - self.filamentOdometer.reset_extruded_length() - else: - # starting new print - self.filamentOdometer.reset() - self.odometerEnabled = self._settings.getBoolean(["enableOdometer"]) - self.pauseEnabled = self._settings.getBoolean(["autoPause"]) - self._logger.debug("Printer State: %s" % payload["state_string"]) - self._logger.debug("Odometer: %s" % ("On" if self.odometerEnabled else "Off")) - self._logger.debug("AutoPause: %s" % ("On" if self.pauseEnabled and self.odometerEnabled else "Off")) - elif self.lastPrintState == "PRINTING": - # print state changed from printing => update filament usage - self._logger.debug("Printer State: %s" % payload["state_string"]) - if self.odometerEnabled: - self.odometerEnabled = False # disabled because we don't want to track manual extrusion - self.update_filament_usage() - - # update last print state - self.lastPrintState = payload['state_id'] + # if event == Events.PRINTER_STATE_CHANGED: + # self.on_printer_state_changed(payload) + + if Events.PRINT_STARTED == event: + self.alreadyCanceled = False + self._printJobStarted(payload) + elif Events.PRINT_PAUSED == event: + self.alreadyCanceled = True + self._printJobPaused() + elif Events.PRINT_RESUMED == event: + self.alreadyCanceled = True + self._printJobResumed() + elif Events.PRINT_DONE == event: + self._printJobFinished() + elif Events.PRINT_FAILED == event: + if self.alreadyCanceled == False: + self._printJobFinished() + elif Events.PRINT_CANCELLED == event: + self.alreadyCanceled = True + self._printJobFinished() + + elif Events.CONNECTED == event: + self.assign_temperature_offset() + + pass + + def _printJobStarted(self, payload): + + # starting new print + # self.filamentOdometer.reset() + self.myFilamentOdometer.reset() + + self.odometerEnabled = self._settings.get_boolean(["enableOdometer"]) + self.pauseEnabled = self._settings.get_boolean(["autoPause"]) + self._logger.debug("Printer started") + self._logger.debug("Odometer: %s" % ("On" if self.odometerEnabled else "Off")) + self._logger.debug("AutoPause: %s" % ("On" if self.pauseEnabled and self.odometerEnabled else "Off")) + + pass + + def _printJobPaused(self): + # do nothing + pass + + def _printJobResumed(self): + # do nothing + pass + + def _printJobFinished(self): + self.update_filament_usage() + pass + + # def on_printer_state_changed(self, payload): + # if payload['state_id'] == "PRINTING": + # if self.lastPrintState == "PAUSED": + # # resuming print + # # no idea why on pausing the extruded length should be reseted self.filamentOdometer.reset_extruded_length() + # pass + # else: + # # starting new print + # # self.filamentOdometer.reset() + # self.myFilamentOdometer.reset() + # self.odometerEnabled = self._settings.get_boolean(["enableOdometer"]) + # self.pauseEnabled = self._settings.get_boolean(["autoPause"]) + # self._logger.debug("Printer State: %s" % payload["state_string"]) + # self._logger.debug("Odometer: %s" % ("On" if self.odometerEnabled else "Off")) + # self._logger.debug("AutoPause: %s" % ("On" if self.pauseEnabled and self.odometerEnabled else "Off")) + # elif self.lastPrintState == "PRINTING": + # # print state changed from printing => update filament usage + # self._logger.debug("Printer State: %s" % payload["state_string"]) + # if self.odometerEnabled: + # self.odometerEnabled = False # disabled because we don't want to track manual extrusion + # self.update_filament_usage() + # + # # update last print state + # self.lastPrintState = payload['state_id'] + + def assign_temperature_offset(self): + try: + all_selections = self.filamentManager.get_all_selections(self.client_id) + self.set_temp_offsets(all_selections) + except Exception as e: + self._logger.error("Failed to set temperature offsets: {message}".format(message=str(e))) + self._logger.exception("Failed to set temperature offsets: {message}".format(message=str(e))) def update_filament_usage(self): printer_profile = self._printer_profile_manager.get_current_or_default() - extrusion = self.filamentOdometer.get_extrusion() - numTools = min(printer_profile['extruder']['count'], len(extrusion)) + # extrusion = self.filamentOdometer.get_extrusion() + extrusion = self.myFilamentOdometer.getExtrusionAmount() + + printerProfileToolCount = printer_profile['extruder']['count'] + self._logger.info("Updating Filament usage for octoprint configured toolcount: {toolCount}" + .format(toolCount=str(printerProfileToolCount))) + + self._logger.info("Filament tracked toolcount: {toolCount}" + .format(toolCount=str(len(extrusion)))) + + self._logger.info("Filament tracked values: {trackedValues}" + .format(trackedValues=str(extrusion))) + + numTools = min(printerProfileToolCount, len(extrusion)) def calculate_weight(length, profile): radius = profile["diameter"] / 2 # mm volume = (length * PI * radius * radius) / 1000 # cm³ return volume * profile["density"] # g - for tool in xrange(0, numTools): + + for tool in range(0, numTools): self._logger.info("Filament used: {length} mm (tool{id})" .format(length=str(extrusion[tool]), id=str(tool))) @@ -282,29 +365,37 @@ def calculate_weight(length, profile): spool_string = "{name} - {material} ({vendor})" spool_string = spool_string.format(name=spool["name"], material=spool["profile"]["material"], vendor=spool["profile"]["vendor"]) - self._logger.debug("Updated remaining filament on spool '{spool}' from {old}g to {new}g ({diff}g)" + self._logger.info("Updated remaining filament on spool '{spool}' from {old}g to {new}g ({diff}g)" .format(spool=spool_string, old=str(old_value), new=str(new_value), diff=str(new_value - old_value))) except Exception as e: self._logger.error("Failed to update filament on tool{id}: {message}" .format(id=str(tool), message=str(e))) + self._logger.exception("Failed to update filament on tool{id}: {message}" + .format(id=str(tool), message=str(e))) self.send_client_message("data_changed", data=dict(table="spools", action="update")) self.on_data_modified("spools", "update") # Protocol hook - def filament_odometer(self, comm_instance, phase, cmd, cmd_type, gcode, *args, **kwargs): - if self.odometerEnabled: - self.filamentOdometer.parse(gcode, cmd) + # is enabled in plugin settings and is currently prining + + if self.odometerEnabled and self._printer.is_printing(): + # self.filamentOdometer.parse(gcode, cmd) + self.myFilamentOdometer.processGCodeLine(cmd) + if self.pauseEnabled and self.check_threshold(): self._logger.info("Filament is running out, pausing print") self._printer.pause_print() def check_threshold(self): - extrusion = self.filamentOdometer.get_extrusion() - tool = self.filamentOdometer.get_current_tool() + # extrusion = self.filamentOdometer.get_extrusion() + extrusion = self.myFilamentOdometer.getExtrusionAmount() + # tool = self.filamentOdometer.get_current_tool() + tool = self.myFilamentOdometer.getCurrentTool() threshold = self.pauseThresholds.get("tool%s" % tool) + return (threshold is not None and extrusion[tool] >= threshold) def update_pause_thresholds(self): @@ -320,6 +411,7 @@ def threshold(spool): if spool is not None: self.pauseThresholds["tool%s" % selection["tool"]] = threshold(spool) except ZeroDivisionError: + tool = selection["tool"] self._logger.warn("ZeroDivisionError while calculating pause threshold for tool{tool}, " "pause feature not available for selected spool".format(tool=tool)) @@ -330,6 +422,8 @@ def threshold(spool): except Exception as e: self._logger.error("Failed to fetch selected spools, pause feature will not be available: {message}" .format(message=str(e))) + self._logger.exception("Failed to fetch selected spools, pause feature will not be available: {message}" + .format(message=str(e))) else: for s in selections: set_threshold(s) @@ -346,18 +440,19 @@ def get_update_information(self): # version check: github repository type="github_release", - user="malnvenshorn", + user="OllisGit", repo="OctoPrint-FilamentManager", current=self._plugin_version, # update method: pip - pip="https://github.com/malnvenshorn/OctoPrint-FilamentManager/archive/{target_version}.zip" + #pip="https://github.com/malnvenshorn/OctoPrint-FilamentManager/archive/{target_version}.zip" + pip="https://github.com/OllisGit/OctoPrint-FilamentManager/releases/latest/download/master.zip" ) ) __plugin_name__ = "Filament Manager" - +__plugin_pythoncompat__ = ">=2.7,<4" __required_octoprint_version__ = ">=1.3.6" diff --git a/octoprint_filamentmanager/api/__init__.py b/octoprint_filamentmanager/api/__init__.py index 94e0724..4ad4d7f 100644 --- a/octoprint_filamentmanager/api/__init__.py +++ b/octoprint_filamentmanager/api/__init__.py @@ -16,6 +16,7 @@ import octoprint.plugin from octoprint.settings import valid_boolean_trues from octoprint.server import admin_permission +from octoprint.access.permissions import Permissions from octoprint.server.util.flask import restricted_access, check_lastmodified, check_etag from octoprint.util import dict_merge @@ -29,10 +30,15 @@ def get_profiles_list(self): force = request.values.get("force", "false") in valid_boolean_trues try: - lm = self.filamentManager.get_profiles_lastmodified() + if (self.filamentManager != None): + lm = self.filamentManager.get_profiles_lastmodified() + else: + self._logger.warn("self.filamentManager is not initialized yet") + return except Exception as e: lm = None self._logger.error("Failed to fetch profiles lastmodified timestamp: {message}".format(message=str(e))) + self._logger.exception("Failed to fetch profiles lastmodified timestamp: {message}".format(message=str(e))) etag = entity_tag(lm) @@ -45,12 +51,17 @@ def get_profiles_list(self): return add_revalidation_header_with_no_max_age(response, lm, etag) except Exception as e: self._logger.error("Failed to fetch profiles: {message}".format(message=str(e))) + self._logger.exception("Failed to fetch profiles: {message}".format(message=str(e))) return make_response("Failed to fetch profiles, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/profiles/", methods=["GET"]) def get_profile(self, identifier): try: - profile = self.filamentManager.get_profile(identifier) + if (self.filamentManager != None): + profile = self.filamentManager.get_profile(identifier) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return if profile is not None: return jsonify(dict(profile=profile)) else: @@ -59,6 +70,8 @@ def get_profile(self, identifier): except Exception as e: self._logger.error("Failed to fetch profile with id {id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to fetch profile with id {id}: {message}" + .format(id=str(identifier), message=str(e))) return make_response("Failed to fetch profile, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/profiles", methods=["POST"]) @@ -82,10 +95,15 @@ def create_profile(self): return make_response("Profile does not contain mandatory '{}' field".format(key), 400) try: - saved_profile = self.filamentManager.create_profile(new_profile) + if (self.filamentManager != None): + saved_profile = self.filamentManager.create_profile(new_profile) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return return jsonify(dict(profile=saved_profile)) except Exception as e: self._logger.error("Failed to create profile: {message}".format(message=str(e))) + self._logger.exception("Failed to create profile: {message}".format(message=str(e))) return make_response("Failed to create profile, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/profiles/", methods=["PATCH"]) @@ -103,10 +121,16 @@ def update_profile(self, identifier): return make_response("No profile included in request", 400) try: - profile = self.filamentManager.get_profile(identifier) + if (self.filamentManager != None): + profile = self.filamentManager.get_profile(identifier) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return except Exception as e: self._logger.error("Failed to fetch profile with id {id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to fetch profile with id {id}: {message}" + .format(id=str(identifier), message=str(e))) return make_response("Failed to fetch profile, see the log for more details", 500) if not profile: @@ -121,6 +145,8 @@ def update_profile(self, identifier): except Exception as e: self._logger.error("Failed to update profile with id {id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to update profile with id {id}: {message}" + .format(id=str(identifier), message=str(e))) return make_response("Failed to update profile, see the log for more details", 500) else: self.on_data_modified("profiles", "update") @@ -130,11 +156,17 @@ def update_profile(self, identifier): @restricted_access def delete_profile(self, identifier): try: - self.filamentManager.delete_profile(identifier) + if (self.filamentManager != None): + self.filamentManager.delete_profile(identifier) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return return make_response("", 204) except Exception as e: self._logger.error("Failed to delete profile with id {id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to delete profile with id {id}: {message}" + .format(id=str(identifier), message=str(e))) return make_response("Failed to delete profile, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/spools", methods=["GET"]) @@ -142,10 +174,15 @@ def get_spools_list(self): force = request.values.get("force", "false") in valid_boolean_trues try: - lm = self.filamentManager.get_spools_lastmodified() + if (self.filamentManager != None): + lm = self.filamentManager.get_spools_lastmodified() + else: + self._logger.warn("self.filamentManager is not initialized yet") + return except Exception as e: lm = None self._logger.error("Failed to fetch spools lastmodified timestamp: {message}".format(message=str(e))) + self._logger.exception("Failed to fetch spools lastmodified timestamp: {message}".format(message=str(e))) etag = entity_tag(lm) @@ -158,12 +195,17 @@ def get_spools_list(self): return add_revalidation_header_with_no_max_age(response, lm, etag) except Exception as e: self._logger.error("Failed to fetch spools: {message}".format(message=str(e))) + self._logger.exception("Failed to fetch spools: {message}".format(message=str(e))) return make_response("Failed to fetch spools, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/spools/", methods=["GET"]) def get_spool(self, identifier): try: - spool = self.filamentManager.get_spool(identifier) + if (self.filamentManager != None): + spool = self.filamentManager.get_spool(identifier) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return if spool is not None: return jsonify(dict(spool=spool)) else: @@ -172,6 +214,8 @@ def get_spool(self, identifier): except Exception as e: self._logger.error("Failed to fetch spool with id {id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to fetch spool with id {id}: {message}" + .format(id=str(identifier), message=str(e))) return make_response("Failed to fetch spool, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/spools", methods=["POST"]) @@ -198,10 +242,19 @@ def create_spool(self): return make_response("Spool does not contain mandatory 'id (profile)' field", 400) try: - saved_spool = self.filamentManager.create_spool(new_spool) + if (self.filamentManager != None): + saved_spool = self.filamentManager.create_spool(new_spool) + if ("updateui" in json_data): + update = json_data["updateui"] + if update == True: + self.send_client_message("data_changed", data=dict(table="spools", action="update")) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return return jsonify(dict(spool=saved_spool)) except Exception as e: self._logger.error("Failed to create spool: {message}".format(message=str(e))) + self._logger.exception("Failed to create spool: {message}".format(message=str(e))) return make_response("Failed to create spool, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/spools/", methods=["PATCH"]) @@ -219,10 +272,16 @@ def update_spool(self, identifier): return make_response("No spool included in request", 400) try: - spool = self.filamentManager.get_spool(identifier) + if (self.filamentManager != None): + spool = self.filamentManager.get_spool(identifier) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return except Exception as e: self._logger.error("Failed to fetch spool with id {id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to fetch spool with id {id}: {message}" + .format(id=str(identifier), message=str(e))) return make_response("Failed to fetch spool, see the log for more details", 500) if not spool: @@ -237,6 +296,8 @@ def update_spool(self, identifier): except Exception as e: self._logger.error("Failed to update spool with id {id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to update spool with id {id}: {message}" + .format(id=str(identifier), message=str(e))) return make_response("Failed to update spool, see the log for more details", 500) else: self.on_data_modified("spools", "update") @@ -246,20 +307,36 @@ def update_spool(self, identifier): @restricted_access def delete_spool(self, identifier): try: - self.filamentManager.delete_spool(identifier) + if (self.filamentManager != None): + self.filamentManager.delete_spool(identifier) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return return make_response("", 204) except Exception as e: self._logger.error("Failed to delete spool with id {id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to delete spool with id {id}: {message}" + .format(id=str(identifier), message=str(e))) return make_response("Failed to delete spool, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/selections", methods=["GET"]) def get_selections_list(self): try: - all_selections = self.filamentManager.get_all_selections(self.client_id) + if (self.filamentManager != None): + + printer_profile = self._printer_profile_manager.get_current_or_default() + printerProfileToolCount = printer_profile['extruder']['count'] + all_selections = self.filamentManager.get_all_selections(self.client_id) + # return only the selection of the max tool count of the current printer profile + all_selections = all_selections[0:printerProfileToolCount] + else: + self._logger.warn("self.filamentManager is not initialized yet") + return return jsonify(dict(selections=all_selections)) except Exception as e: self._logger.error("Failed to fetch selected spools: {message}".format(message=str(e))) + self._logger.exception("Failed to fetch selected spools: {message}".format(message=str(e))) return make_response("Failed to fetch selected spools, see the log for more details", 500) @octoprint.plugin.BlueprintPlugin.route("/selections/", methods=["PATCH"]) @@ -287,29 +364,49 @@ def update_selection(self, identifier): return make_response("Trying to change filament while printing", 409) try: - saved_selection = self.filamentManager.update_selection(identifier, self.client_id, selection) + if (self.filamentManager != None): + saved_selection = self.filamentManager.update_selection(identifier, self.client_id, selection) + # Inform (external e.g. OctoPod) UI about spool selection change + self.send_client_message("selection_changed", data=dict(table="selections", action="update")) + if ("updateui" in json_data["selection"]): + update = json_data["selection"]["updateui"] + if update == True: + self.send_client_message("data_changed", data=dict(table="spools", action="update")) + + else: + self._logger.warn("self.filamentManager is not initialized yet") + return except Exception as e: self._logger.error("Failed to update selected spool for tool{id}: {message}" .format(id=str(identifier), message=str(e))) + self._logger.exception("Failed to update selected spool for tool{id}: {message}" + .format(id=str(identifier), message=str(e))) + return make_response("Failed to update selected spool, see the log for more details", 500) else: try: self.set_temp_offsets([saved_selection]) except Exception as e: self._logger.error("Failed to set temperature offsets: {message}".format(message=str(e))) + self._logger.exception("Failed to set temperature offsets: {message}".format(message=str(e))) self.on_data_modified("selections", "update") return jsonify(dict(selection=saved_selection)) @octoprint.plugin.BlueprintPlugin.route("/export", methods=["GET"]) @restricted_access - @admin_permission.require(403) + @Permissions.ADMIN.require(403) def export_data(self): try: tempdir = tempfile.mkdtemp() - self.filamentManager.export_data(tempdir) + if (self.filamentManager != None): + self.filamentManager.export_data(tempdir) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return archive_path = shutil.make_archive(tempfile.mktemp(), "zip", tempdir) except Exception as e: self._logger.error("Data export failed: {message}".format(message=str(e))) + self._logger.exception("Data export failed: {message}".format(message=str(e))) return make_response("Data export failed, see the log for more details", 500) finally: try: @@ -322,9 +419,13 @@ def export_data(self): archive_name = "filament_export_{timestamp}.zip".format(timestamp=timestamp) def file_generator(): - with open(archive_path) as f: - for c in f: - yield c + with open(archive_path, "rb") as f: + while True: + chunk = f.read() + if chunk: + yield(chunk) + else: + break try: os.remove(archive_path) except Exception as e: @@ -337,7 +438,7 @@ def file_generator(): @octoprint.plugin.BlueprintPlugin.route("/import", methods=["POST"]) @restricted_access - @admin_permission.require(403) + @Permissions.ADMIN.require(403) def import_data(self): def unzip(filename, extract_dir): # python 2.7 lacks of shutil.unpack_archive ¯\_(ツ)_/¯ @@ -361,9 +462,14 @@ def unzip(filename, extract_dir): try: tempdir = tempfile.mkdtemp() unzip(upload_path, tempdir) - self.filamentManager.import_data(tempdir) + if (self.filamentManager != None): + self.filamentManager.import_data(tempdir) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return except Exception as e: self._logger.error("Data import failed: {message}".format(message=str(e))) + self._logger.exception("Data import failed: {message}".format(message=str(e))) return make_response("Data import failed, see the log for more details", 500) finally: try: @@ -395,12 +501,17 @@ def test_database_connection(self): return make_response("Configuration does not contain mandatory '{}' field".format(key), 400) try: - connection = self.filamentManager.connect(config["uri"], - database=config["name"], - username=config["user"], - password=config["password"]) + if (self.filamentManager != None): + connection = self.filamentManager.connect(config["uri"], + database=config["name"], + username=config["user"], + password=config["password"]) + else: + self._logger.warn("self.filamentManager is not initialized yet") + return make_response("FilamentManager is still initializing (if this persists, some dependencies may be missing)", 503) except Exception as e: - return make_response("Failed to connect to the database with the given configuration", 400) + self._logger.exception("Failed to connect to the database with the given configuration") + return make_response("Failed to connect to the database with the given configuration: {}".format(e), 400) else: connection.close() return make_response("", 204) diff --git a/octoprint_filamentmanager/api/util.py b/octoprint_filamentmanager/api/util.py index 76d03ff..df6d95b 100644 --- a/octoprint_filamentmanager/api/util.py +++ b/octoprint_filamentmanager/api/util.py @@ -17,4 +17,4 @@ def add_revalidation_header_with_no_max_age(response, lm, etag): def entity_tag(lm): - return (hashlib.sha1(str(lm))).hexdigest() + return (hashlib.sha1(str(lm).encode(encoding='UTF-8')).hexdigest()) diff --git a/octoprint_filamentmanager/newodometer.py b/octoprint_filamentmanager/newodometer.py new file mode 100644 index 0000000..9d80072 --- /dev/null +++ b/octoprint_filamentmanager/newodometer.py @@ -0,0 +1,219 @@ + +# coding=utf-8 +from __future__ import absolute_import + +import math +# import logging +# copied from gcodeinterpreter.py Version OP 1.5.2 +class NewFilamentOdometer(object): + + def __init__(self): + # self._logger = logging.getLogger(__name__) + self.max_extruders = 10 + self.g90_extruder = False + self.reset() + + + def set_g90_extruder(self, flag=False): + self.g90_extruder = flag + + def reset(self): + self.currentE = [0.0] + self.totalExtrusion = [0.0] + self.maxExtrusion = [0.0] + self.currentExtruder = 0 # Tool Id + self.relativeE = False + self.relativeMode = False + self.duplicationMode = False + + + def processGCodeLine(self, line): + + # origLine = line + # comment should not be during "hook-processing" + if ";" in line: + # comment = line[line.find(";") + 1:].strip() + line = line[0: line.find(";")] + pass + + if (len(line) == 0): + return + G = self._getCodeInt(line, "G") + M = self._getCodeInt(line, "M") + T = self._getCodeInt(line, "T") + + if G is not None: + if G >= 0 and G <= 3: # Move G0/G1/G2/G3 + x = self._getCodeFloat(line, "X") + y = self._getCodeFloat(line, "Y") + z = self._getCodeFloat(line, "Z") + e = self._getCodeFloat(line, "E") + f = self._getCodeFloat(line, "F") + + if x is not None or y is not None or z is not None: + # this is a move + move = True + else: + # print head stays on position + move = False + + if e is not None: + if self.relativeMode or self.relativeE: + # e is already relative, nothing to do + pass + else: + e -= self.currentE[self.currentExtruder] + + # # If move with extrusion, calculate new min/max coordinates of model + # if e > 0.0 and move: + # # extrusion and move -> oldPos & pos relevant for print area & dimensions + # self._minMax.record(oldPos) + # self._minMax.record(pos) + + self.totalExtrusion[self.currentExtruder] += e + self.currentE[self.currentExtruder] += e + self.maxExtrusion[self.currentExtruder] = max( + self.maxExtrusion[self.currentExtruder], self.totalExtrusion[self.currentExtruder] + ) + + if self.currentExtruder == 0 and len(self.currentE) > 1 and self.duplicationMode: + # Copy first extruder length to other extruders + for i in range(1, len(self.currentE)): + self.totalExtrusion[i] += e + self.currentE[i] += e + self.maxExtrusion[i] = max(self.maxExtrusion[i], self.totalExtrusion[i]) + else: + e = 0.0 + + elif G == 90: # Absolute position + self.relativeMode = False + if self.g90_extruder: + self.relativeE = False + + elif G == 91: # Relative position + self.relativeMode = True + if self.g90_extruder: + self.relativeE = True + + elif G == 92: + x = self._getCodeFloat(line, "X") + y = self._getCodeFloat(line, "Y") + z = self._getCodeFloat(line, "Z") + e = self._getCodeFloat(line, "E") + + if e is None and x is None and y is None and z is None: + # no parameters, set all axis to 0 + self.currentE[self.currentExtruder] = 0.0 + # pos.x = 0.0 + # pos.y = 0.0 + # pos.z = 0.0 + else: + # some parameters set, only set provided axes + if e is not None: + self.currentE[self.currentExtruder] = e + # if x is not None: + # pos.x = x + # if y is not None: + # pos.y = y + # if z is not None: + # pos.z = z + + elif M is not None: + if M == 82: # Absolute E + self.relativeE = False + elif M == 83: # Relative E + self.relativeE = True + # elif M == 207 or M == 208: # Firmware retract settings + # s = self._getCodeFloat(line, "S") + # f = self._getCodeFloat(line, "F") + # if s is not None and f is not None: + # if M == 207: + # fwretractTime = s / f + # fwretractDist = s + # else: + # fwrecoverTime = (fwretractDist + s) / f + elif M == 605: # Duplication/Mirroring mode + s = self._getCodeInt(line, "S") + if s in [2, 4, 5, 6]: + # Duplication / Mirroring mode selected. Printer firmware copies extrusion commands + # from first extruder to all other extruders + self.duplicationMode = True + else: + self.duplicationMode = False + + elif T is not None: + if T > self.max_extruders: + # self._logger.warning( + # "GCODE tried to select tool %d, that looks wrong, ignoring for GCODE analysis" + # % T + # ) + print("GCODE tried to select tool %d, that looks wrong, ignoring for GCODE analysis" % T) + pass + elif T == self.currentExtruder: + pass + else: + # pos.x -= ( + # offsets[currentExtruder][0] + # if currentExtruder < len(offsets) + # else 0 + # ) + # pos.y -= ( + # offsets[currentExtruder][1] + # if currentExtruder < len(offsets) + # else 0 + # ) + + self.currentExtruder = T + + # pos.x += ( + # offsets[currentExtruder][0] + # if currentExtruder < len(offsets) + # else 0 + # ) + # pos.y += ( + # offsets[currentExtruder][1] + # if currentExtruder < len(offsets) + # else 0 + # ) + + if len(self.currentE) <= self.currentExtruder: + for _ in range(len(self.currentE), self.currentExtruder + 1): + self.currentE.append(0.0) + if len(self.maxExtrusion) <= self.currentExtruder: + for _ in range(len(self.maxExtrusion), self.currentExtruder + 1): + self.maxExtrusion.append(0.0) + if len(self.totalExtrusion) <= self.currentExtruder: + for _ in range(len(self.totalExtrusion), self.currentExtruder + 1): + self.totalExtrusion.append(0.0) + + def getCurrentTool(self): + return self.currentExtruder + + def getExtrusionAmount(self): + return self.maxExtrusion + + def _getCodeInt(self, line, code): + return self._getCode(line, code, int) + + + def _getCodeFloat(self, line, code): + return self._getCode(line, code, float) + + + def _getCode(self, line, code, c): + n = line.find(code) + 1 + if n < 1: + return None + m = line.find(" ", n) + try: + if m < 0: + result = c(line[n:]) + else: + result = c(line[n:m]) + except ValueError: + return None + + if math.isnan(result) or math.isinf(result): + return None + + return result diff --git a/octoprint_filamentmanager/odometer.py b/octoprint_filamentmanager/odometer.py index 3c60f23..99e0a51 100644 --- a/octoprint_filamentmanager/odometer.py +++ b/octoprint_filamentmanager/odometer.py @@ -24,6 +24,7 @@ def reset(self): self.totalExtrusion = [0.0] self.maxExtrusion = [0.0] self.currentTool = 0 + self.parseCount = 0 def reset_extruded_length(self): tools = len(self.maxExtrusion) @@ -31,10 +32,11 @@ def reset_extruded_length(self): self.totalExtrusion = [0.0] * tools def parse(self, gcode, cmd): + self.parseCount = self.parseCount + 1 if gcode is None: return - if gcode == "G1" or gcode == "G0": # move + if gcode in ("G0", "G1", "G2", "G3"): # move e = self._get_float(cmd, self.regexE) if e is not None: if self.relativeMode or self.relativeExtrusion: @@ -57,6 +59,12 @@ def parse(self, gcode, cmd): elif gcode == "G92": # set position e = self._get_float(cmd, self.regexE) if e is not None: + + print("*****") + print(str(self.parseCount)) + print(cmd) + print("*****") + self.lastExtrusion[self.currentTool] = e elif gcode == "M82": # set extruder to absolute mode self.relativeExtrusion = False diff --git a/octoprint_filamentmanager/static/js/filamentmanager.bundled.js b/octoprint_filamentmanager/static/js/filamentmanager.bundled.js index a7f5467..33eb3c9 100644 --- a/octoprint_filamentmanager/static/js/filamentmanager.bundled.js +++ b/octoprint_filamentmanager/static/js/filamentmanager.bundled.js @@ -230,6 +230,8 @@ FilamentManager.prototype.viewModels.config = function configurationViewModel() var api = this.core.client; var settingsViewModel = this.core.bridge.allViewModels.settingsViewModel; + self.testConnectionResult = ko.observable(null); + self.testConnectionResultTextColor = ko.observable("color:blue"); var dialog = $('#settings_plugin_filamentmanager_configurationdialog'); @@ -279,13 +281,27 @@ FilamentManager.prototype.viewModels.config = function configurationViewModel() var data = ko.mapping.toJS(self.config.database); + self.testConnectionResult('Waiting for response...'); + self.testConnectionResultTextColor('color:orange'); + api.database.test(data).done(function () { target.addClass('btn-success'); - }).fail(function () { + self.testConnectionResult('Success!'); + self.testConnectionResultTextColor('color:green'); + }).fail(function (response) { target.addClass('btn-danger'); + console.log(JSON.stringify(response)); + self.testConnectionResult(response.responseText); + self.testConnectionResultTextColor("color:red"); }).always(function () { $('i.fa-spinner', target).remove(); target.prop('disabled', false); + // clear the result message after a few seconds + window.setTimeout(function() { + self.testConnectionResult(''); + self.testConnectionResultTextColor(''); + target.removeClass('btn-success btn-danger'); + }, 10 * 1000) }); }; }; @@ -316,10 +332,17 @@ FilamentManager.prototype.viewModels.confirmation = function spoolSelectionConfi }; var showDialog = function showSpoolConfirmationDialog() { + var allCurrentSelections = selections.selectedSpools != null ? selections.selectedSpools() : null; var s = []; printerStateViewModel.filament().forEach(function (value) { var toolID = Utils.extractToolIDFromName(value.name()); - s.push({ spool: undefined, tool: toolID }); + + var currentSelectionForTool = allCurrentSelections?.[toolID]?.name; + + s.push({ spool: undefined, + tool: toolID, + currentSpoolName: currentSelectionForTool + }); }); self.selections(s); button.attr('disabled', true); @@ -707,36 +730,60 @@ FilamentManager.prototype.viewModels.spools = function spoolsViewModel() { var self = this.viewModels.spools; var api = this.core.client; + + self.overUsedUsage = ko.observable(false); + self.overUsedUsage.subscribe(function(newValue){ + // self.allSpools.updateItems(self.allSpools.items) + self.allSpools.toggleFilter("overUsedUsage"); + }); var profilesViewModel = this.viewModels.profiles; - self.allSpools = new ItemListHelper('filamentSpools', { - name: function name(a, b) { - // sorts ascending - if (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) return -1; - if (a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase()) return 1; - return 0; - }, - material: function material(a, b) { - // sorts ascending - if (a.profile.material.toLocaleLowerCase() < b.profile.material.toLocaleLowerCase()) return -1; - if (a.profile.material.toLocaleLowerCase() > b.profile.material.toLocaleLowerCase()) return 1; - return 0; - }, - vendor: function vendor(a, b) { - // sorts ascending - if (a.profile.vendor.toLocaleLowerCase() < b.profile.vendor.toLocaleLowerCase()) return -1; - if (a.profile.vendor.toLocaleLowerCase() > b.profile.vendor.toLocaleLowerCase()) return 1; - return 0; - }, - remaining: function remaining(a, b) { - // sorts descending - var ra = parseFloat(a.weight) - parseFloat(a.used); - var rb = parseFloat(b.weight) - parseFloat(b.used); - if (ra > rb) return -1; - if (ra < rb) return 1; - return 0; + + var myListHelperFilters = { + overUsedUsage: function (data){ + console.error(data); + var result = data.used < data.weight; + return result; } - }, {}, 'name', [], [], 10); + }; + var myListHelperExclusiveFilters = [["overUsedUsage"]]; + + self.allSpools = new ItemListHelper( + 'filamentSpools', + { + name: function name(a, b) { + // sorts ascending + if (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) return -1; + if (a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase()) return 1; + return 0; + }, + material: function material(a, b) { + // sorts ascending + if (a.profile.material.toLocaleLowerCase() < b.profile.material.toLocaleLowerCase()) return -1; + if (a.profile.material.toLocaleLowerCase() > b.profile.material.toLocaleLowerCase()) return 1; + return 0; + }, + vendor: function vendor(a, b) { + // sorts ascending + if (a.profile.vendor.toLocaleLowerCase() < b.profile.vendor.toLocaleLowerCase()) return -1; + if (a.profile.vendor.toLocaleLowerCase() > b.profile.vendor.toLocaleLowerCase()) return 1; + return 0; + }, + remaining: function remaining(a, b) { + // sorts descending + var ra = parseFloat(a.weight) - parseFloat(a.used); + var rb = parseFloat(b.weight) - parseFloat(b.used); + if (ra > rb) return -1; + if (ra < rb) return 1; + return 0; + } + }, + myListHelperFilters, + 'name', + [], + myListHelperExclusiveFilters, + 10); + self.pageSize = ko.pureComputed({ read: function read() { @@ -1044,4 +1091,4 @@ FilamentManager.prototype.viewModels.warning = function insufficientFilamentWarn dependencies: Plugin.REQUIRED_VIEWMODELS, elements: Plugin.BINDINGS }); -})(); \ No newline at end of file +})(); diff --git a/octoprint_filamentmanager/templates/settings_configdialog.jinja2 b/octoprint_filamentmanager/templates/settings_configdialog.jinja2 index b0ba38a..b03399b 100644 --- a/octoprint_filamentmanager/templates/settings_configdialog.jinja2 +++ b/octoprint_filamentmanager/templates/settings_configdialog.jinja2 @@ -73,6 +73,10 @@ +
+{# If you want to use an external database, please take a look into my wiki how to install the drivers and setup the database.#} + {{ _('If you want to use an external database, please take a look into my wiki how to install the drivers and setup the database.') }} +
@@ -105,7 +109,10 @@
- +
+ + +
{{ _("Note: If you change these settings you must restart your OctoPrint instance for the changes to take affect.") }} diff --git a/octoprint_filamentmanager/templates/sidebar.jinja2 b/octoprint_filamentmanager/templates/sidebar.jinja2 index 55c8e8c..23db613 100644 --- a/octoprint_filamentmanager/templates/sidebar.jinja2 +++ b/octoprint_filamentmanager/templates/sidebar.jinja2 @@ -1,8 +1,24 @@ + +
+
  - + + +
diff --git a/octoprint_filamentmanager/templates/spool_confirmation.jinja2 b/octoprint_filamentmanager/templates/spool_confirmation.jinja2 index 98232b1..61491c3 100644 --- a/octoprint_filamentmanager/templates/spool_confirmation.jinja2 +++ b/octoprint_filamentmanager/templates/spool_confirmation.jinja2 @@ -15,7 +15,7 @@
-   +  
diff --git a/octoprint_filamentmanager/translations/de/LC_MESSAGES/messages.mo b/octoprint_filamentmanager/translations/de/LC_MESSAGES/messages.mo index 9f3867b..764b6de 100644 Binary files a/octoprint_filamentmanager/translations/de/LC_MESSAGES/messages.mo and b/octoprint_filamentmanager/translations/de/LC_MESSAGES/messages.mo differ diff --git a/octoprint_filamentmanager/translations/de/LC_MESSAGES/messages.po b/octoprint_filamentmanager/translations/de/LC_MESSAGES/messages.po index ca7b099..d31220b 100644 --- a/octoprint_filamentmanager/translations/de/LC_MESSAGES/messages.po +++ b/octoprint_filamentmanager/translations/de/LC_MESSAGES/messages.po @@ -8,149 +8,153 @@ msgid "" msgstr "" "Project-Id-Version: OctoPrint-FilamentManager 0.1.0\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-02-04 15:21+0100\n" +"POT-Creation-Date: 2021-10-17 11:30+0200\n" "PO-Revision-Date: 2018-02-04 15:24+0100\n" "Last-Translator: Sven Lohrmann \n" "Language: de\n" "Language-Team: de \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.4.0\n" -"X-Generator: Poedit 2.0.6\n" +"Generated-By: Babel 2.9.0\n" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:334 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:357 msgid "Start Print" msgstr "Druck starten" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:349 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:372 msgid "Resume Print" msgstr "Druck fortsetzen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:424 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:447 msgid "Data import failed" msgstr "Daten-Import fehlgeschlagen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:425 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:448 msgid "Something went wrong, please consult the logs." msgstr "Etwas ist schief gelaufen, bitte konsultiere das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:557 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 msgid "Could not add profile" msgstr "Konnte Profil nicht hinzufügen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:558 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:581 msgid "" -"There was an unexpected error while saving the filament profile, please consult " -"the logs." +"There was an unexpected error while saving the filament profile, please " +"consult the logs." msgstr "" -"Unerwarteter Fehler beim Speichern des Filamentprofils, bitte konsultiere das " -"Log." +"Unerwarteter Fehler beim Speichern des Filamentprofils, bitte konsultiere" +" das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:579 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:602 msgid "Could not update profile" msgstr "Konnte Profil nicht aktualisieren" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:603 msgid "" -"There was an unexpected error while updating the filament profile, please " -"consult the logs." +"There was an unexpected error while updating the filament profile, please" +" consult the logs." msgstr "" -"Unerwarteter Fehler beim Aktualisieren des Filamentprofils, bitte konsultiere " -"das Log." +"Unerwarteter Fehler beim Aktualisieren des Filamentprofils, bitte " +"konsultiere das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:594 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:617 msgid "Could not delete profile" msgstr "Konnte Profil nicht löschen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:595 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:618 msgid "" -"There was an unexpected error while removing the filament profile, please " -"consult the logs." +"There was an unexpected error while removing the filament profile, please" +" consult the logs." msgstr "" -"Unerwarteter Fehler beim Löschen des Filamentprofils, bitte konsultiere das Log." +"Unerwarteter Fehler beim Löschen des Filamentprofils, bitte konsultiere " +"das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:604 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:627 msgid "Delete profile?" msgstr "Profil löschen?" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:605 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:628 msgid "" -"You are about to delete the filament profile (). Please note " -"that it is not possible to delete profiles with associated spools." +"You are about to delete the filament profile (). Please" +" note that it is not possible to delete profiles with associated spools." msgstr "" -"Du bist im Begriff das Filament-Profil () zu löschen. Bitte " -"beachte, dass es nicht möglich ist Profile zu löschen die Spulen zugewiesen " -"wurden." +"Du bist im Begriff das Filament-Profil () zu löschen. " +"Bitte beachte, dass es nicht möglich ist Profile zu löschen die Spulen " +"zugewiesen wurden." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:606 -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:902 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:629 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:949 #: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:15 msgid "Delete" msgstr "Löschen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:686 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:709 msgid "Could not select spool" msgstr "Konnte Spule nicht auswählen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:687 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:710 msgid "" -"There was an unexpected error while selecting the spool, please consult the logs." +"There was an unexpected error while selecting the spool, please consult " +"the logs." msgstr "Unerwarteter Fehler beim auswählen der Spule, bitte konsultiere das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:851 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:898 msgid "Could not add spool" msgstr "Konnte Spule nicht hinzufügen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:852 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:899 msgid "" -"There was an unexpected error while saving the filament spool, please consult " -"the logs." +"There was an unexpected error while saving the filament spool, please " +"consult the logs." msgstr "" -"Unerwarteter Fehler beim speichern der Filamentspule, bitte konsultiere das Log." +"Unerwarteter Fehler beim speichern der Filamentspule, bitte konsultiere " +"das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:874 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:921 msgid "Could not update spool" msgstr "Konnte Spule nicht aktualisieren" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:875 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:922 msgid "" -"There was an unexpected error while updating the filament spool, please consult " -"the logs." +"There was an unexpected error while updating the filament spool, please " +"consult the logs." msgstr "" -"Unerwarteter Fehler beim Aktualisieren der Filamentspule, bitte konsultiere das " -"Log." +"Unerwarteter Fehler beim Aktualisieren der Filamentspule, bitte " +"konsultiere das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:890 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:937 msgid "Could not delete spool" msgstr "Konnte Spule nicht löschen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:891 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:938 msgid "" -"There was an unexpected error while removing the filament spool, please consult " -"the logs." +"There was an unexpected error while removing the filament spool, please " +"consult the logs." msgstr "" -"Unerwarteter Fehler beim Löschen der Filamentspule, bitte konsultiere das Log." +"Unerwarteter Fehler beim Löschen der Filamentspule, bitte konsultiere das" +" Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:900 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:947 msgid "Delete spool?" msgstr "Spule löschen?" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:901 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:948 msgid "You are about to delete the filament spool - ()." msgstr "Du bist im Begriff die Filament-Spule - () zu löschen." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:973 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1020 msgid "Insufficient filament" msgstr "Filament nicht ausreichend" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:974 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1021 msgid "" -"The current print job needs more material than what's left on the selected spool." +"The current print job needs more material than what's left on the " +"selected spool." msgstr "" -"Der aktuelle Druckauftrag benötigt mehr Material als auf der ausgewählten Spule " -"vorhanden ist." +"Der aktuelle Druckauftrag benötigt mehr Material als auf der ausgewählten" +" Spule vorhanden ist." #: octoprint_filamentmanager/templates/settings.jinja2:4 #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:5 @@ -243,7 +247,7 @@ msgid "Features" msgstr "Funktionen" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:13 -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:87 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:91 msgid "Database" msgstr "Datenbank" @@ -253,10 +257,11 @@ msgstr "Aussehen" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:26 msgid "" -"Show dialog to confirm selected spools before starting/resuming the print job" +"Show dialog to confirm selected spools before starting/resuming the print" +" job" msgstr "" -"Vor dem starten/fortsetzen eines Druckauftrags einen Dialog zur Bestätigung der " -"ausgewählten Spulen anzeigen" +"Vor dem starten/fortsetzen eines Druckauftrags einen Dialog zur " +"Bestätigung der ausgewählten Spulen anzeigen" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:34 msgid "Warn if print job exceeds remaining filament" @@ -268,7 +273,7 @@ msgstr "Software-Hodometer aktivieren, um den Filamentverbrauch zu messen" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:50 msgid "Pause print if filament runs out" -msgstr "Druck pausieren, wenn Filament zur zeige geht" +msgstr "Druck pausieren, wenn Filament zur Neige geht" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:56 msgid "Pause threshold" @@ -278,64 +283,73 @@ msgstr "Schwellwert für Pause" msgid "Use external database" msgstr "Verwende externe Datenbank" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:80 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:78 +msgid "" +"If you want to use an external database, please take a look into my wiki how to " +"install the drivers and setup the database." +msgstr "" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:84 msgid "URI" msgstr "URI" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:94 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:98 msgid "Username" msgstr "Benutzername" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:101 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:105 msgid "Password" msgstr "Passwort" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:108 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:113 msgid "Test connection" msgstr "Verbindungstest" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:111 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:118 msgid "" -"Note: If you change these settings you must restart your OctoPrint instance for " -"the changes to take affect." +"Note: If you change these settings you must restart your OctoPrint " +"instance for the changes to take affect." msgstr "" -"Beachte: Wenn du diese Einstellungen änderst musst du OctoPrint neu starten, " -"damit diese wirksam werden." +"Beachte: Wenn du diese Einstellungen änderst musst du OctoPrint neu " +"starten, damit diese wirksam werden." -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:115 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:122 msgid "Import & Export" msgstr "Import & Export" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:120 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:127 msgid "Browse..." msgstr "Durchsuchen..." -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:124 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:131 msgid "Import" msgstr "Import" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:126 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:133 msgid "Export" msgstr "Export" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:128 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:135 msgid "" -"This does not look like a valid import archive. Only zip files are supported." +"This does not look like a valid import archive. Only zip files are " +"supported." msgstr "" -"Dies sieht nicht wie ein gültiges Archiv zum importieren aus. Es werden nur Zip-" -"Dateien unterstützt." +"Dies sieht nicht wie ein gültiges Archiv zum importieren aus. Es werden " +"nur Zip-Dateien unterstützt." -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:137 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:144 msgid "Currency symbol" msgstr "Währungssymbol" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:149 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:156 #: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:87 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:27 msgid "Cancel" msgstr "Abbrechen" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:150 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:157 #: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 #: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:88 msgid "Save" @@ -397,12 +411,16 @@ msgstr "Preis" msgid "Temperature offset" msgstr "Temperaturoffset" -#: octoprint_filamentmanager/templates/sidebar.jinja2:4 +#: octoprint_filamentmanager/templates/sidebar.jinja2:3 +msgid "hide overused usage" +msgstr "" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:10 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:18 msgid "Tool" msgstr "Tool" -#: octoprint_filamentmanager/templates/sidebar.jinja2:5 +#: octoprint_filamentmanager/templates/sidebar.jinja2:19 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:19 msgid "--- Select Spool ---" msgstr "--- Spule auswählen ---" @@ -413,20 +431,23 @@ msgstr "Bestätige deine Spulauswahl" #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:10 msgid "" -"There are no information available about the active tools for the print job. " -"Make sure the analysing process of the file has finished and that it's loaded " -"correctly." +"There are no information available about the active tools for the print " +"job. Make sure the analysing process of the file has finished and that " +"it's loaded correctly." msgstr "" "Es sind keine Informationen über die aktiven Tools für den Druckauftrag " -"vorhanden. Überprüfe ob die Datei bereits analysiert und korrekt geladen wurde." +"vorhanden. Überprüfe ob die Datei bereits analysiert und korrekt geladen " +"wurde." #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:14 msgid "" -"Please confirm your selected spools for all active tools. This dialog is meant " -"to protect you from accidentically selecting wrong spools for the print." +"Please confirm your selected spools for all active tools. This dialog is " +"meant to protect you from accidentically selecting wrong spools for the " +"print." msgstr "" -"Bitte bestätige deine Spulenauswahl für alle aktiven Tools. Dieser Dialog soll " -"verhindern, dass du aus Versehen falsche Spulen für deinen Druck auswählst." +"Bitte bestätige deine Spulenauswahl für alle aktiven Tools. Dieser Dialog" +" soll verhindern, dass du aus Versehen falsche Spulen für deinen Druck " +"auswählst." #~ msgid "Profile (ascending)" #~ msgstr "Profil (aufsteigend)" @@ -444,23 +465,27 @@ msgstr "" #~ msgstr "Abfrage der Spulen fehlgeschlagen" #~ msgid "" -#~ "There was an unexpected database error while saving the filament profile, " +#~ "There was an unexpected database error" +#~ " while saving the filament profile, " #~ "please consult the logs." #~ msgstr "" -#~ "Unerwarteter Fehler beim Speichern des Filamentprofils, bitte konsultiere das " -#~ "Log." +#~ "Unerwarteter Fehler beim Speichern des " +#~ "Filamentprofils, bitte konsultiere das Log." #~ msgid "" -#~ "There was an unexpected database error while updating the filament profile, " +#~ "There was an unexpected database error" +#~ " while updating the filament profile, " #~ "please consult the logs." #~ msgstr "" -#~ "Ein unerwarteter Datenbankfehler ist aufgetreten, bitte konsultiere die Logs." +#~ "Ein unerwarteter Datenbankfehler ist " +#~ "aufgetreten, bitte konsultiere die Logs." #~ msgid "" #~ "There was an unexpected error while removing the filament spool,\n" #~ " please consult the logs." #~ msgstr "" -#~ "Ein unerwarteter Datenbankfehler ist aufgetreten, bitte konsultiere die Logs." +#~ "Ein unerwarteter Datenbankfehler ist " +#~ "aufgetreten, bitte konsultiere die Logs." #~ msgid "Spool selection failed" #~ msgstr "Konnte Spule nicht auswählen" @@ -473,3 +498,4 @@ msgstr "" #~ msgid "Enable filament odometer" #~ msgstr "Filament-Hodometer aktivieren" + diff --git a/octoprint_filamentmanager/translations/es/LC_MESSAGES/messages.mo b/octoprint_filamentmanager/translations/es/LC_MESSAGES/messages.mo new file mode 100644 index 0000000..bcdd87b Binary files /dev/null and b/octoprint_filamentmanager/translations/es/LC_MESSAGES/messages.mo differ diff --git a/octoprint_filamentmanager/translations/es/LC_MESSAGES/messages.po b/octoprint_filamentmanager/translations/es/LC_MESSAGES/messages.po new file mode 100644 index 0000000..8fbf530 --- /dev/null +++ b/octoprint_filamentmanager/translations/es/LC_MESSAGES/messages.po @@ -0,0 +1,453 @@ +# Spanish translations for OctoPrint-FilamentManager. +# Copyright (C) 2019 The OctoPrint Project +# This file is distributed under the same license as the +# OctoPrint-FilamentManager project. +# Ivan Garcia , 2019. +# Carlos Romero , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: OctoPrint-FilamentManager 0.5.2\n" +"Report-Msgid-Bugs-To: i18n@octoprint.org\n" +"POT-Creation-Date: 2021-10-17 11:30+0200\n" +"PO-Revision-Date: 2021-10-18 12:35+0100\n" +"Last-Translator: Carlos Romero \n" +"Language: es\n" +"Language-Team: es \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.0\n" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:357 +msgid "Start Print" +msgstr "Comenzar Impresión" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:372 +msgid "Resume Print" +msgstr "Continuar Impresión" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:447 +msgid "Data import failed" +msgstr "Error al importar los datos" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:448 +msgid "Something went wrong, please consult the logs." +msgstr "Algo ha ido mal, revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 +msgid "Could not add profile" +msgstr "No se puede añadir el perfil" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:581 +msgid "" +"There was an unexpected error while saving the filament profile, please " +"consult the logs." +msgstr "" +"Ha ocurrido un error al intentar guardar el perfil del filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:602 +msgid "Could not update profile" +msgstr "No se puede actualizar el perfil" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:603 +msgid "" +"There was an unexpected error while updating the filament profile, please" +" consult the logs." +msgstr "Ha ocurrido un error mientras se actualizaba el perfil del filamento" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:617 +msgid "Could not delete profile" +msgstr "No se puede eliminar el perfil" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:618 +msgid "" +"There was an unexpected error while removing the filament profile, please" +" consult the logs." +msgstr "" +"Ha ocurrido un error al intentar eliminar el perfil del filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:627 +msgid "Delete profile?" +msgstr "¿Eliminar perfil?" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:628 +msgid "" +"You are about to delete the filament profile (). Please" +" note that it is not possible to delete profiles with associated spools." +msgstr "" +"Estas apunto de borrar el perfil de filamento (). Ten " +"en cuenta que no es posible borrar perfiles con bobinas asociadas." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:629 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:949 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:15 +msgid "Delete" +msgstr "Eliminar" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:709 +msgid "Could not select spool" +msgstr "No se puede elegir la bobina" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:710 +msgid "" +"There was an unexpected error while selecting the spool, please consult " +"the logs." +msgstr "" +"Ha ocurrido un error al intentar seleccionar el perfil del filamento, por" +" favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:898 +msgid "Could not add spool" +msgstr "No se puede añadir la bobina" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:899 +msgid "" +"There was an unexpected error while saving the filament spool, please " +"consult the logs." +msgstr "" +"Ha ocurrido un error al intentar guardar la bobina de filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:921 +msgid "Could not update spool" +msgstr "No se puede actualizar la bobina" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:922 +msgid "" +"There was an unexpected error while updating the filament spool, please " +"consult the logs." +msgstr "" +"Ha ocurrido un error al intentar actualizar la bobina de filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:937 +msgid "Could not delete spool" +msgstr "No se puede eliminar la bobina" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:938 +msgid "" +"There was an unexpected error while removing the filament spool, please " +"consult the logs." +msgstr "" +"Ha ocurrido un error al intentar eliminar la bobina de filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:947 +msgid "Delete spool?" +msgstr "¿Borrar bobina?" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:948 +msgid "You are about to delete the filament spool - ()." +msgstr "Estás a punto de borrar la bobina de filamento - ()." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1020 +msgid "Insufficient filament" +msgstr "Filamento insuficiente" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1021 +msgid "" +"The current print job needs more material than what's left on the " +"selected spool." +msgstr "" +"La impresión actual necesita más filamento del que hay en la bobina " +"seleccionada." + +#: octoprint_filamentmanager/templates/settings.jinja2:4 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:5 +msgid "Plugin Configuration" +msgstr "Configuración del plugin" + +#: octoprint_filamentmanager/templates/settings.jinja2:7 +msgid "Filament Spools" +msgstr "Bobinas de filamento" + +#: octoprint_filamentmanager/templates/settings.jinja2:13 +msgid "Items per page" +msgstr "Elementos por página" + +#: octoprint_filamentmanager/templates/settings.jinja2:22 +msgid "Sort by" +msgstr "Ordenar por" + +#: octoprint_filamentmanager/templates/settings.jinja2:23 +msgid "Name (ascending)" +msgstr "Nombre (Ascendente)" + +#: octoprint_filamentmanager/templates/settings.jinja2:24 +msgid "Material (ascending)" +msgstr "Material (Ascendente)" + +#: octoprint_filamentmanager/templates/settings.jinja2:25 +msgid "Vendor (ascending)" +msgstr "Fabricante (Ascendente)" + +#: octoprint_filamentmanager/templates/settings.jinja2:26 +msgid "Remaining (descending)" +msgstr "Restante (Descendente)" + +#: octoprint_filamentmanager/templates/settings.jinja2:36 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:15 +msgid "Name" +msgstr "Nombre" + +#: octoprint_filamentmanager/templates/settings.jinja2:37 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:38 +msgid "Material" +msgstr "Material" + +#: octoprint_filamentmanager/templates/settings.jinja2:38 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:26 +msgid "Vendor" +msgstr "Fabricante" + +#: octoprint_filamentmanager/templates/settings.jinja2:39 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:50 +msgid "Weight" +msgstr "Peso" + +#: octoprint_filamentmanager/templates/settings.jinja2:40 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:62 +msgid "Remaining" +msgstr "Restante" + +#: octoprint_filamentmanager/templates/settings.jinja2:41 +msgid "Used" +msgstr "Usado" + +#: octoprint_filamentmanager/templates/settings.jinja2:42 +msgid "Action" +msgstr "Acción" + +#: octoprint_filamentmanager/templates/settings.jinja2:54 +msgid "Edit Spool" +msgstr "Editar bobina" + +#: octoprint_filamentmanager/templates/settings.jinja2:55 +msgid "Duplicate Spool" +msgstr "Duplicar bobina" + +#: octoprint_filamentmanager/templates/settings.jinja2:56 +msgid "Delete Spool" +msgstr "Borrar bobina" + +#: octoprint_filamentmanager/templates/settings.jinja2:79 +msgid "Manage Profiles" +msgstr "Administrar perfiles" + +#: octoprint_filamentmanager/templates/settings.jinja2:80 +msgid "Add Spool" +msgstr "Añadir bobina" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:12 +msgid "Features" +msgstr "Características" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:13 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:91 +msgid "Database" +msgstr "Base de datos" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:14 +msgid "Appearance" +msgstr "Apariencia" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:26 +msgid "" +"Show dialog to confirm selected spools before starting/resuming the print" +" job" +msgstr "" +"Mostrar el diálogo para confirmar las bobinas antes de empezar/continuar " +"una impresión" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:34 +msgid "Warn if print job exceeds remaining filament" +msgstr "Avisar si la impresión excede el filamento restante" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:42 +msgid "Enable software odometer to measure used filament" +msgstr "Habilitar medición mediante software \"odometer\"" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:50 +msgid "Pause print if filament runs out" +msgstr "Pausar la impresión si el filamento se agota" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:56 +msgid "Pause threshold" +msgstr "Margen de pausa" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:74 +msgid "Use external database" +msgstr "Usar base de datos externa" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:78 +msgid "" +"If you want to use an external database, please take a look into my wiki how to " +"install the drivers and setup the database." +msgstr "" +"Si quieres usar una base de datos externa, por favor, mira mi wiki sobre como " +"instalar los drivers y configurar la base de datos." + + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:84 +msgid "URI" +msgstr "URI" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:98 +msgid "Username" +msgstr "Usuario" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:105 +msgid "Password" +msgstr "Contraseña" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:113 +msgid "Test connection" +msgstr "Comprobar conexión" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:118 +msgid "" +"Note: If you change these settings you must restart your OctoPrint " +"instance for the changes to take affect." +msgstr "" +"Nota: Si cambias esta configuración deberás reiniciar la instancia de " +"OctoPrint para que los cambios tengan efecto." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:122 +msgid "Import & Export" +msgstr "Importar y exportar" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:127 +msgid "Browse..." +msgstr "Examinar..." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:131 +msgid "Import" +msgstr "Importar" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:133 +msgid "Export" +msgstr "Exportar" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:135 +msgid "" +"This does not look like a valid import archive. Only zip files are " +"supported." +msgstr "No parece un fichero de importación válido. Sólo se permiten archivos zip." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:144 +msgid "Currency symbol" +msgstr "Símbolo de moneda" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:156 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:87 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:27 +msgid "Cancel" +msgstr "Cancelar" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:157 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:88 +msgid "Save" +msgstr "Guardar" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:5 +msgid "Filament Profiles" +msgstr "Perfiles de filamento" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:13 +msgid "--- New Profile ---" +msgstr "--- Nuevo perfil ---" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:14 +msgid "New" +msgstr "Nuevo" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 +msgid "Save profile" +msgstr "Guardar perfil" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:30 +msgid "Vendor must be set" +msgstr "Debes escribir el fabricante" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:42 +msgid "Material must be set" +msgstr "Debes escribir el material" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:50 +msgid "Density" +msgstr "Densidad" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:62 +msgid "Diameter" +msgstr "Diámetro" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:75 +msgid "Close" +msgstr "Cerrar" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:5 +msgid "Filament Spool" +msgstr "Bobina de Filamento" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:19 +msgid "Name must be set" +msgstr "Debes escribir un nombre" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:27 +msgid "Profile" +msgstr "Perfil" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:38 +msgid "Price" +msgstr "Precio" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:74 +msgid "Temperature offset" +msgstr "Compensación de temperatura" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:3 +msgid "hide overused usage" +msgstr "Ocultar bobinas agotadas" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:10 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:18 +msgid "Tool" +msgstr "Extrusor" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:19 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:19 +msgid "--- Select Spool ---" +msgstr "--- Seleccionar bobina ---" + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:5 +msgid "Confirm your selected spools" +msgstr "Confirma las bobinas seleccionadas" + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:10 +msgid "" +"There are no information available about the active tools for the print " +"job. Make sure the analysing process of the file has finished and that " +"it's loaded correctly." +msgstr "" +"No hay información disponible sobre el extrusor de la impresión actual. " +"Asegúrate de que el proceso de análisis esté finalizado y haya cargado" +" correctamente." + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:14 +msgid "" +"Please confirm your selected spools for all active tools. This dialog is " +"meant to protect you from accidentically selecting wrong spools for the " +"print." +msgstr "" +"Por favor, confirma las bobinas seleccionadas para todos los extrusores activos. Este diálogo está " +"pensado para evitar que elijas bobinas incorrectas para esta impresión." + diff --git a/octoprint_filamentmanager/translations/fr/LC_MESSAGES/messages.mo b/octoprint_filamentmanager/translations/fr/LC_MESSAGES/messages.mo new file mode 100644 index 0000000..268d332 Binary files /dev/null and b/octoprint_filamentmanager/translations/fr/LC_MESSAGES/messages.mo differ diff --git a/octoprint_filamentmanager/translations/fr/LC_MESSAGES/messages.po b/octoprint_filamentmanager/translations/fr/LC_MESSAGES/messages.po new file mode 100644 index 0000000..984539e --- /dev/null +++ b/octoprint_filamentmanager/translations/fr/LC_MESSAGES/messages.po @@ -0,0 +1,512 @@ +# French translations for OctoPrint-FilamentManager. +# Copyright (C) 2017 ORGANIZATION +# This file is distributed under the same license as the +# OctoPrint-FilamentManager project. +# FIRST AUTHOR , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: OctoPrint-FilamentManager 0.1.0\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2021-10-17 11:30+0200\n" +"PO-Revision-Date: 2021-07-14 21:16+0200\n" +"Last-Translator: Sven Lohrmann \n" +"Language: fr\n" +"Language-Team: de \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.0\n" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:357 +msgid "Start Print" +msgstr "Démarrer l'impression" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:372 +msgid "Resume Print" +msgstr "Reprendre l'impression" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:447 +msgid "Data import failed" +msgstr "Échec de l'importation des données" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:448 +msgid "Something went wrong, please consult the logs." +msgstr "Une erreur s'est produite, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 +msgid "Could not add profile" +msgstr "Impossible d'ajouter le profile" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:581 +msgid "" +"There was an unexpected error while saving the filament profile, please " +"consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de l'enregistrement du profile " +"de filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:602 +msgid "Could not update profile" +msgstr "Impossible de mettre à jour le profile" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:603 +msgid "" +"There was an unexpected error while updating the filament profile, please" +" consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de la mise à jour du profile de" +" filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:617 +msgid "Could not delete profile" +msgstr "Impossible de supprimer le profile" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:618 +msgid "" +"There was an unexpected error while removing the filament profile, please" +" consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de la suppression du profile de" +" filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:627 +msgid "Delete profile?" +msgstr "Supprimer le profile ?" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:628 +msgid "" +"You are about to delete the filament profile (). Please" +" note that it is not possible to delete profiles with associated spools." +msgstr "" +"Vous êtes sur le point de supprimer le profile de filament " +"(). Veuillez noter qu'il n'est pas possible de supprimer des " +"profils avec des bobines associés." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:629 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:949 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:15 +msgid "Delete" +msgstr "Effacer" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:709 +msgid "Could not select spool" +msgstr "Impossible de sélectionner la bobine" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:710 +msgid "" +"There was an unexpected error while selecting the spool, please consult " +"the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de la sélection du spool, " +"veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:898 +msgid "Could not add spool" +msgstr "Impossible d'ajouter la bobine" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:899 +msgid "" +"There was an unexpected error while saving the filament spool, please " +"consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de l'enregistrement de la " +"bobine de filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:921 +msgid "Could not update spool" +msgstr "Impossible de mettre à jour la bobine" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:922 +msgid "" +"There was an unexpected error while updating the filament spool, please " +"consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de la mise à jour de la bobine " +"de filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:937 +msgid "Could not delete spool" +msgstr "Impossible de supprimer la bobine" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:938 +msgid "" +"There was an unexpected error while removing the filament spool, please " +"consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors du retrait de la bobine de " +"filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:947 +msgid "Delete spool?" +msgstr "Supprimer la bobine ?" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:948 +msgid "You are about to delete the filament spool - ()." +msgstr "" +"Vous êtes sur le point de supprimer la bobine de filament - " +"()." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1020 +msgid "Insufficient filament" +msgstr "Filament insuffisant" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1021 +msgid "" +"The current print job needs more material than what's left on the " +"selected spool." +msgstr "" +"Le travail d'impression en cours nécessite plus de matériel que ce qui " +"reste sur la bobine sélectionnée." + +#: octoprint_filamentmanager/templates/settings.jinja2:4 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:5 +msgid "Plugin Configuration" +msgstr "Configuration du plug-in" + +#: octoprint_filamentmanager/templates/settings.jinja2:7 +msgid "Filament Spools" +msgstr "Bobines de filament" + +#: octoprint_filamentmanager/templates/settings.jinja2:13 +msgid "Items per page" +msgstr "Objets par page" + +#: octoprint_filamentmanager/templates/settings.jinja2:22 +msgid "Sort by" +msgstr "Trier par" + +#: octoprint_filamentmanager/templates/settings.jinja2:23 +msgid "Name (ascending)" +msgstr "Nom (alphabétique)" + +#: octoprint_filamentmanager/templates/settings.jinja2:24 +msgid "Material (ascending)" +msgstr "Matériel (alphabétique)" + +#: octoprint_filamentmanager/templates/settings.jinja2:25 +msgid "Vendor (ascending)" +msgstr "Vendeur (alphabétique)" + +#: octoprint_filamentmanager/templates/settings.jinja2:26 +msgid "Remaining (descending)" +msgstr "Restant (décroissant)" + +#: octoprint_filamentmanager/templates/settings.jinja2:36 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:15 +msgid "Name" +msgstr "Nom" + +#: octoprint_filamentmanager/templates/settings.jinja2:37 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:38 +msgid "Material" +msgstr "Matériel" + +#: octoprint_filamentmanager/templates/settings.jinja2:38 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:26 +msgid "Vendor" +msgstr "Vendeur" + +#: octoprint_filamentmanager/templates/settings.jinja2:39 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:50 +msgid "Weight" +msgstr "Poids" + +#: octoprint_filamentmanager/templates/settings.jinja2:40 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:62 +msgid "Remaining" +msgstr "Restant" + +#: octoprint_filamentmanager/templates/settings.jinja2:41 +msgid "Used" +msgstr "Utilisé" + +#: octoprint_filamentmanager/templates/settings.jinja2:42 +msgid "Action" +msgstr "Action" + +#: octoprint_filamentmanager/templates/settings.jinja2:54 +msgid "Edit Spool" +msgstr "Modifier la bobine" + +#: octoprint_filamentmanager/templates/settings.jinja2:55 +msgid "Duplicate Spool" +msgstr "Dupliquer la bobine" + +#: octoprint_filamentmanager/templates/settings.jinja2:56 +msgid "Delete Spool" +msgstr "Supprimer la bobine" + +#: octoprint_filamentmanager/templates/settings.jinja2:79 +msgid "Manage Profiles" +msgstr "Gérer les profiles" + +#: octoprint_filamentmanager/templates/settings.jinja2:80 +msgid "Add Spool" +msgstr "Ajouter une bobine" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:12 +msgid "Features" +msgstr "Caractéristiques" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:13 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:91 +msgid "Database" +msgstr "Base de données" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:14 +msgid "Appearance" +msgstr "Apparence" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:26 +msgid "" +"Show dialog to confirm selected spools before starting/resuming the print" +" job" +msgstr "" +"Afficher la boîte de dialogue pour confirmer les bobines sélectionnées " +"avant de démarrer/reprendre le travail d'impression" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:34 +msgid "Warn if print job exceeds remaining filament" +msgstr "Avertir si le travail d'impression dépasse le filament restant" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:42 +msgid "Enable software odometer to measure used filament" +msgstr "Activer l'odomètre logiciel pour mesurer le filament utilisé" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:50 +msgid "Pause print if filament runs out" +msgstr "Suspendre l'impression si le filament s'épuise" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:56 +msgid "Pause threshold" +msgstr "Seuil de pause" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:74 +msgid "Use external database" +msgstr "Utiliser une base de données externe" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:78 +msgid "" +"If you want to use an external database, please take a look into my wiki how to " +"install the drivers and setup the database." +msgstr "" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:84 +msgid "URI" +msgstr "URl" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:98 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:105 +msgid "Password" +msgstr "Mot de passe" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:113 +msgid "Test connection" +msgstr "Tester la connexion" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:118 +msgid "" +"Note: If you change these settings you must restart your OctoPrint " +"instance for the changes to take affect." +msgstr "" +"Remarque : si vous modifiez ces paramètres, vous devez redémarrer votre " +"instance OctoPrint pour que les modifications prennent effet." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:122 +msgid "Import & Export" +msgstr "Importer / Exporter" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:127 +msgid "Browse..." +msgstr "Parcourir..." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:131 +msgid "Import" +msgstr "Importer" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:133 +msgid "Export" +msgstr "Exporter" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:135 +msgid "" +"This does not look like a valid import archive. Only zip files are " +"supported." +msgstr "" +"Cela ne ressemble pas à une archive d'importation valide. Seuls les " +"fichiers ZIP sont pris en charge." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:144 +msgid "Currency symbol" +msgstr "Symbole de la monnaie" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:156 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:87 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:27 +msgid "Cancel" +msgstr "Annuler" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:157 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:88 +msgid "Save" +msgstr "Sauvegarder" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:5 +msgid "Filament Profiles" +msgstr "Profiles de filaments" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:13 +msgid "--- New Profile ---" +msgstr "--- Nouveau profile ---" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:14 +msgid "New" +msgstr "Nouveau" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 +msgid "Save profile" +msgstr "Enregistrer le profile" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:30 +msgid "Vendor must be set" +msgstr "Le fournisseur doit être défini" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:42 +msgid "Material must be set" +msgstr "Le matériel doit être réglé" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:50 +msgid "Density" +msgstr "Densité" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:62 +msgid "Diameter" +msgstr "Diamètre" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:75 +msgid "Close" +msgstr "Fermer" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:5 +msgid "Filament Spool" +msgstr "Bobine de filament" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:19 +msgid "Name must be set" +msgstr "Le nom doit être défini" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:27 +msgid "Profile" +msgstr "Profile" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:38 +msgid "Price" +msgstr "Prix" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:74 +msgid "Temperature offset" +msgstr "Décalage de température" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:3 +msgid "hide overused usage" +msgstr "" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:10 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:18 +msgid "Tool" +msgstr "Outil" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:19 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:19 +msgid "--- Select Spool ---" +msgstr "--- Sélectionnez la bobine ---" + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:5 +msgid "Confirm your selected spools" +msgstr "Confirmez vos bobines sélectionnées" + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:10 +msgid "" +"There are no information available about the active tools for the print " +"job. Make sure the analysing process of the file has finished and that " +"it's loaded correctly." +msgstr "" +"Aucune information n'est disponible sur les outils actifs pour le travail" +" d'impression. Assurez-vous que le processus d'analyse du fichier est " +"terminé et qu'il est chargé correctement." + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:14 +msgid "" +"Please confirm your selected spools for all active tools. This dialog is " +"meant to protect you from accidentically selecting wrong spools for the " +"print." +msgstr "" +"Veuillez confirmer vos bobines sélectionnées pour tous les outils actifs." +" Cette boîte de dialogue est destinée à vous protéger contre la sélection" +" accidentelle de mauvais spools pour l'impression." + +#~ msgid "Profile (ascending)" +#~ msgstr "Profile (croissant)" + +#~ msgid "Selected Spools" +#~ msgstr "Bobines sélectionnées" + +#~ msgid "Filament warning" +#~ msgstr "Avertissement de filament" + +#~ msgid "Saving failed" +#~ msgstr "Échec de l'enregistrement" + +#~ msgid "Failed to query spools" +#~ msgstr "Échec de la requête des bobines" + +#~ msgid "" +#~ "There was an unexpected database error" +#~ " while saving the filament profile, " +#~ "please consult the logs." +#~ msgstr "" +#~ "Une erreur de base de données " +#~ "inattendue s'est produite lors de " +#~ "l'enregistrement du profile de filament, " +#~ "veuillez consulter les journaux." + +#~ msgid "" +#~ "There was an unexpected database error" +#~ " while updating the filament profile, " +#~ "please consult the logs." +#~ msgstr "" +#~ "Une erreur de base de données " +#~ "inattendue s'est produite lors de la " +#~ "mise à jour du profile de " +#~ "filament, veuillez consulter les journaux." + +#~ msgid "" +#~ "There was an unexpected error while removing the filament spool,\n" +#~ " please consult the logs." +#~ msgstr "" +#~ "Une erreur inattendue s'est produite " +#~ "lors du retrait de la bobine de" +#~ " filament,\n" +#~ " veuillez " +#~ "consulter les journaux." + +#~ msgid "Spool selection failed" +#~ msgstr "Échec de la sélection de la bobine" + +#~ msgid "Cannot delete profiles with associated spools." +#~ msgstr "Impossible de supprimer les profiles avec les bobines associés." + +#~ msgid "Data import successfull" +#~ msgstr "Importation des données réussie" + +#~ msgid "Enable filament odometer" +#~ msgstr "Activer l'odomètre à filament" + diff --git a/setup.py b/setup.py index 5075e2e..1ca7d52 100644 --- a/setup.py +++ b/setup.py @@ -6,11 +6,11 @@ plugin_identifier = "filamentmanager" plugin_package = "octoprint_filamentmanager" plugin_name = "OctoPrint-FilamentManager" -plugin_version = "0.5.3" +plugin_version = "1.9.1" plugin_description = "Manage your spools and keep track of remaining filament on them" -plugin_author = "Sven Lohrmann" -plugin_author_email = "malnvenshorn@gmail.com" -plugin_url = "https://github.com/malnvenshorn/OctoPrint-FilamentManager" +plugin_author = "Sven Lohrmann, Olli" +plugin_author_email = "ollisgit@gmail.com, malnvenshorn@gmail.com" +plugin_url = "https://github.com/OllisGit/OctoPrint-FilamentManager" plugin_license = "AGPLv3" plugin_requires = ["backports.csv>=1.0.5,<1.1", "uritools>=2.1,<2.2", diff --git a/translations/de/LC_MESSAGES/messages.mo b/translations/de/LC_MESSAGES/messages.mo index 9f3867b..764b6de 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 ca7b099..d31220b 100644 --- a/translations/de/LC_MESSAGES/messages.po +++ b/translations/de/LC_MESSAGES/messages.po @@ -8,149 +8,153 @@ msgid "" msgstr "" "Project-Id-Version: OctoPrint-FilamentManager 0.1.0\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-02-04 15:21+0100\n" +"POT-Creation-Date: 2021-10-17 11:30+0200\n" "PO-Revision-Date: 2018-02-04 15:24+0100\n" "Last-Translator: Sven Lohrmann \n" "Language: de\n" "Language-Team: de \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.4.0\n" -"X-Generator: Poedit 2.0.6\n" +"Generated-By: Babel 2.9.0\n" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:334 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:357 msgid "Start Print" msgstr "Druck starten" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:349 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:372 msgid "Resume Print" msgstr "Druck fortsetzen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:424 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:447 msgid "Data import failed" msgstr "Daten-Import fehlgeschlagen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:425 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:448 msgid "Something went wrong, please consult the logs." msgstr "Etwas ist schief gelaufen, bitte konsultiere das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:557 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 msgid "Could not add profile" msgstr "Konnte Profil nicht hinzufügen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:558 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:581 msgid "" -"There was an unexpected error while saving the filament profile, please consult " -"the logs." +"There was an unexpected error while saving the filament profile, please " +"consult the logs." msgstr "" -"Unerwarteter Fehler beim Speichern des Filamentprofils, bitte konsultiere das " -"Log." +"Unerwarteter Fehler beim Speichern des Filamentprofils, bitte konsultiere" +" das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:579 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:602 msgid "Could not update profile" msgstr "Konnte Profil nicht aktualisieren" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:603 msgid "" -"There was an unexpected error while updating the filament profile, please " -"consult the logs." +"There was an unexpected error while updating the filament profile, please" +" consult the logs." msgstr "" -"Unerwarteter Fehler beim Aktualisieren des Filamentprofils, bitte konsultiere " -"das Log." +"Unerwarteter Fehler beim Aktualisieren des Filamentprofils, bitte " +"konsultiere das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:594 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:617 msgid "Could not delete profile" msgstr "Konnte Profil nicht löschen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:595 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:618 msgid "" -"There was an unexpected error while removing the filament profile, please " -"consult the logs." +"There was an unexpected error while removing the filament profile, please" +" consult the logs." msgstr "" -"Unerwarteter Fehler beim Löschen des Filamentprofils, bitte konsultiere das Log." +"Unerwarteter Fehler beim Löschen des Filamentprofils, bitte konsultiere " +"das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:604 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:627 msgid "Delete profile?" msgstr "Profil löschen?" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:605 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:628 msgid "" -"You are about to delete the filament profile (). Please note " -"that it is not possible to delete profiles with associated spools." +"You are about to delete the filament profile (). Please" +" note that it is not possible to delete profiles with associated spools." msgstr "" -"Du bist im Begriff das Filament-Profil () zu löschen. Bitte " -"beachte, dass es nicht möglich ist Profile zu löschen die Spulen zugewiesen " -"wurden." +"Du bist im Begriff das Filament-Profil () zu löschen. " +"Bitte beachte, dass es nicht möglich ist Profile zu löschen die Spulen " +"zugewiesen wurden." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:606 -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:902 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:629 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:949 #: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:15 msgid "Delete" msgstr "Löschen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:686 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:709 msgid "Could not select spool" msgstr "Konnte Spule nicht auswählen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:687 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:710 msgid "" -"There was an unexpected error while selecting the spool, please consult the logs." +"There was an unexpected error while selecting the spool, please consult " +"the logs." msgstr "Unerwarteter Fehler beim auswählen der Spule, bitte konsultiere das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:851 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:898 msgid "Could not add spool" msgstr "Konnte Spule nicht hinzufügen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:852 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:899 msgid "" -"There was an unexpected error while saving the filament spool, please consult " -"the logs." +"There was an unexpected error while saving the filament spool, please " +"consult the logs." msgstr "" -"Unerwarteter Fehler beim speichern der Filamentspule, bitte konsultiere das Log." +"Unerwarteter Fehler beim speichern der Filamentspule, bitte konsultiere " +"das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:874 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:921 msgid "Could not update spool" msgstr "Konnte Spule nicht aktualisieren" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:875 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:922 msgid "" -"There was an unexpected error while updating the filament spool, please consult " -"the logs." +"There was an unexpected error while updating the filament spool, please " +"consult the logs." msgstr "" -"Unerwarteter Fehler beim Aktualisieren der Filamentspule, bitte konsultiere das " -"Log." +"Unerwarteter Fehler beim Aktualisieren der Filamentspule, bitte " +"konsultiere das Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:890 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:937 msgid "Could not delete spool" msgstr "Konnte Spule nicht löschen" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:891 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:938 msgid "" -"There was an unexpected error while removing the filament spool, please consult " -"the logs." +"There was an unexpected error while removing the filament spool, please " +"consult the logs." msgstr "" -"Unerwarteter Fehler beim Löschen der Filamentspule, bitte konsultiere das Log." +"Unerwarteter Fehler beim Löschen der Filamentspule, bitte konsultiere das" +" Log." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:900 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:947 msgid "Delete spool?" msgstr "Spule löschen?" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:901 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:948 msgid "You are about to delete the filament spool - ()." msgstr "Du bist im Begriff die Filament-Spule - () zu löschen." -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:973 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1020 msgid "Insufficient filament" msgstr "Filament nicht ausreichend" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:974 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1021 msgid "" -"The current print job needs more material than what's left on the selected spool." +"The current print job needs more material than what's left on the " +"selected spool." msgstr "" -"Der aktuelle Druckauftrag benötigt mehr Material als auf der ausgewählten Spule " -"vorhanden ist." +"Der aktuelle Druckauftrag benötigt mehr Material als auf der ausgewählten" +" Spule vorhanden ist." #: octoprint_filamentmanager/templates/settings.jinja2:4 #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:5 @@ -243,7 +247,7 @@ msgid "Features" msgstr "Funktionen" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:13 -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:87 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:91 msgid "Database" msgstr "Datenbank" @@ -253,10 +257,11 @@ msgstr "Aussehen" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:26 msgid "" -"Show dialog to confirm selected spools before starting/resuming the print job" +"Show dialog to confirm selected spools before starting/resuming the print" +" job" msgstr "" -"Vor dem starten/fortsetzen eines Druckauftrags einen Dialog zur Bestätigung der " -"ausgewählten Spulen anzeigen" +"Vor dem starten/fortsetzen eines Druckauftrags einen Dialog zur " +"Bestätigung der ausgewählten Spulen anzeigen" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:34 msgid "Warn if print job exceeds remaining filament" @@ -268,7 +273,7 @@ msgstr "Software-Hodometer aktivieren, um den Filamentverbrauch zu messen" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:50 msgid "Pause print if filament runs out" -msgstr "Druck pausieren, wenn Filament zur zeige geht" +msgstr "Druck pausieren, wenn Filament zur Neige geht" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:56 msgid "Pause threshold" @@ -278,64 +283,73 @@ msgstr "Schwellwert für Pause" msgid "Use external database" msgstr "Verwende externe Datenbank" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:80 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:78 +msgid "" +"If you want to use an external database, please take a look into my wiki how to " +"install the drivers and setup the database." +msgstr "" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:84 msgid "URI" msgstr "URI" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:94 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:98 msgid "Username" msgstr "Benutzername" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:101 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:105 msgid "Password" msgstr "Passwort" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:108 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:113 msgid "Test connection" msgstr "Verbindungstest" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:111 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:118 msgid "" -"Note: If you change these settings you must restart your OctoPrint instance for " -"the changes to take affect." +"Note: If you change these settings you must restart your OctoPrint " +"instance for the changes to take affect." msgstr "" -"Beachte: Wenn du diese Einstellungen änderst musst du OctoPrint neu starten, " -"damit diese wirksam werden." +"Beachte: Wenn du diese Einstellungen änderst musst du OctoPrint neu " +"starten, damit diese wirksam werden." -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:115 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:122 msgid "Import & Export" msgstr "Import & Export" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:120 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:127 msgid "Browse..." msgstr "Durchsuchen..." -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:124 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:131 msgid "Import" msgstr "Import" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:126 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:133 msgid "Export" msgstr "Export" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:128 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:135 msgid "" -"This does not look like a valid import archive. Only zip files are supported." +"This does not look like a valid import archive. Only zip files are " +"supported." msgstr "" -"Dies sieht nicht wie ein gültiges Archiv zum importieren aus. Es werden nur Zip-" -"Dateien unterstützt." +"Dies sieht nicht wie ein gültiges Archiv zum importieren aus. Es werden " +"nur Zip-Dateien unterstützt." -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:137 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:144 msgid "Currency symbol" msgstr "Währungssymbol" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:149 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:156 #: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:87 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:27 msgid "Cancel" msgstr "Abbrechen" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:150 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:157 #: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 #: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:88 msgid "Save" @@ -397,12 +411,16 @@ msgstr "Preis" msgid "Temperature offset" msgstr "Temperaturoffset" -#: octoprint_filamentmanager/templates/sidebar.jinja2:4 +#: octoprint_filamentmanager/templates/sidebar.jinja2:3 +msgid "hide overused usage" +msgstr "" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:10 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:18 msgid "Tool" msgstr "Tool" -#: octoprint_filamentmanager/templates/sidebar.jinja2:5 +#: octoprint_filamentmanager/templates/sidebar.jinja2:19 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:19 msgid "--- Select Spool ---" msgstr "--- Spule auswählen ---" @@ -413,20 +431,23 @@ msgstr "Bestätige deine Spulauswahl" #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:10 msgid "" -"There are no information available about the active tools for the print job. " -"Make sure the analysing process of the file has finished and that it's loaded " -"correctly." +"There are no information available about the active tools for the print " +"job. Make sure the analysing process of the file has finished and that " +"it's loaded correctly." msgstr "" "Es sind keine Informationen über die aktiven Tools für den Druckauftrag " -"vorhanden. Überprüfe ob die Datei bereits analysiert und korrekt geladen wurde." +"vorhanden. Überprüfe ob die Datei bereits analysiert und korrekt geladen " +"wurde." #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:14 msgid "" -"Please confirm your selected spools for all active tools. This dialog is meant " -"to protect you from accidentically selecting wrong spools for the print." +"Please confirm your selected spools for all active tools. This dialog is " +"meant to protect you from accidentically selecting wrong spools for the " +"print." msgstr "" -"Bitte bestätige deine Spulenauswahl für alle aktiven Tools. Dieser Dialog soll " -"verhindern, dass du aus Versehen falsche Spulen für deinen Druck auswählst." +"Bitte bestätige deine Spulenauswahl für alle aktiven Tools. Dieser Dialog" +" soll verhindern, dass du aus Versehen falsche Spulen für deinen Druck " +"auswählst." #~ msgid "Profile (ascending)" #~ msgstr "Profil (aufsteigend)" @@ -444,23 +465,27 @@ msgstr "" #~ msgstr "Abfrage der Spulen fehlgeschlagen" #~ msgid "" -#~ "There was an unexpected database error while saving the filament profile, " +#~ "There was an unexpected database error" +#~ " while saving the filament profile, " #~ "please consult the logs." #~ msgstr "" -#~ "Unerwarteter Fehler beim Speichern des Filamentprofils, bitte konsultiere das " -#~ "Log." +#~ "Unerwarteter Fehler beim Speichern des " +#~ "Filamentprofils, bitte konsultiere das Log." #~ msgid "" -#~ "There was an unexpected database error while updating the filament profile, " +#~ "There was an unexpected database error" +#~ " while updating the filament profile, " #~ "please consult the logs." #~ msgstr "" -#~ "Ein unerwarteter Datenbankfehler ist aufgetreten, bitte konsultiere die Logs." +#~ "Ein unerwarteter Datenbankfehler ist " +#~ "aufgetreten, bitte konsultiere die Logs." #~ msgid "" #~ "There was an unexpected error while removing the filament spool,\n" #~ " please consult the logs." #~ msgstr "" -#~ "Ein unerwarteter Datenbankfehler ist aufgetreten, bitte konsultiere die Logs." +#~ "Ein unerwarteter Datenbankfehler ist " +#~ "aufgetreten, bitte konsultiere die Logs." #~ msgid "Spool selection failed" #~ msgstr "Konnte Spule nicht auswählen" @@ -473,3 +498,4 @@ msgstr "" #~ msgid "Enable filament odometer" #~ msgstr "Filament-Hodometer aktivieren" + diff --git a/translations/es/LC_MESSAGES/messages.mo b/translations/es/LC_MESSAGES/messages.mo new file mode 100644 index 0000000..bcdd87b Binary files /dev/null and b/translations/es/LC_MESSAGES/messages.mo differ diff --git a/translations/es/LC_MESSAGES/messages.po b/translations/es/LC_MESSAGES/messages.po new file mode 100644 index 0000000..8fbf530 --- /dev/null +++ b/translations/es/LC_MESSAGES/messages.po @@ -0,0 +1,453 @@ +# Spanish translations for OctoPrint-FilamentManager. +# Copyright (C) 2019 The OctoPrint Project +# This file is distributed under the same license as the +# OctoPrint-FilamentManager project. +# Ivan Garcia , 2019. +# Carlos Romero , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: OctoPrint-FilamentManager 0.5.2\n" +"Report-Msgid-Bugs-To: i18n@octoprint.org\n" +"POT-Creation-Date: 2021-10-17 11:30+0200\n" +"PO-Revision-Date: 2021-10-18 12:35+0100\n" +"Last-Translator: Carlos Romero \n" +"Language: es\n" +"Language-Team: es \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.0\n" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:357 +msgid "Start Print" +msgstr "Comenzar Impresión" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:372 +msgid "Resume Print" +msgstr "Continuar Impresión" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:447 +msgid "Data import failed" +msgstr "Error al importar los datos" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:448 +msgid "Something went wrong, please consult the logs." +msgstr "Algo ha ido mal, revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 +msgid "Could not add profile" +msgstr "No se puede añadir el perfil" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:581 +msgid "" +"There was an unexpected error while saving the filament profile, please " +"consult the logs." +msgstr "" +"Ha ocurrido un error al intentar guardar el perfil del filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:602 +msgid "Could not update profile" +msgstr "No se puede actualizar el perfil" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:603 +msgid "" +"There was an unexpected error while updating the filament profile, please" +" consult the logs." +msgstr "Ha ocurrido un error mientras se actualizaba el perfil del filamento" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:617 +msgid "Could not delete profile" +msgstr "No se puede eliminar el perfil" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:618 +msgid "" +"There was an unexpected error while removing the filament profile, please" +" consult the logs." +msgstr "" +"Ha ocurrido un error al intentar eliminar el perfil del filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:627 +msgid "Delete profile?" +msgstr "¿Eliminar perfil?" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:628 +msgid "" +"You are about to delete the filament profile (). Please" +" note that it is not possible to delete profiles with associated spools." +msgstr "" +"Estas apunto de borrar el perfil de filamento (). Ten " +"en cuenta que no es posible borrar perfiles con bobinas asociadas." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:629 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:949 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:15 +msgid "Delete" +msgstr "Eliminar" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:709 +msgid "Could not select spool" +msgstr "No se puede elegir la bobina" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:710 +msgid "" +"There was an unexpected error while selecting the spool, please consult " +"the logs." +msgstr "" +"Ha ocurrido un error al intentar seleccionar el perfil del filamento, por" +" favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:898 +msgid "Could not add spool" +msgstr "No se puede añadir la bobina" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:899 +msgid "" +"There was an unexpected error while saving the filament spool, please " +"consult the logs." +msgstr "" +"Ha ocurrido un error al intentar guardar la bobina de filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:921 +msgid "Could not update spool" +msgstr "No se puede actualizar la bobina" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:922 +msgid "" +"There was an unexpected error while updating the filament spool, please " +"consult the logs." +msgstr "" +"Ha ocurrido un error al intentar actualizar la bobina de filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:937 +msgid "Could not delete spool" +msgstr "No se puede eliminar la bobina" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:938 +msgid "" +"There was an unexpected error while removing the filament spool, please " +"consult the logs." +msgstr "" +"Ha ocurrido un error al intentar eliminar la bobina de filamento, por " +"favor revisa el log para más información." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:947 +msgid "Delete spool?" +msgstr "¿Borrar bobina?" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:948 +msgid "You are about to delete the filament spool - ()." +msgstr "Estás a punto de borrar la bobina de filamento - ()." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1020 +msgid "Insufficient filament" +msgstr "Filamento insuficiente" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1021 +msgid "" +"The current print job needs more material than what's left on the " +"selected spool." +msgstr "" +"La impresión actual necesita más filamento del que hay en la bobina " +"seleccionada." + +#: octoprint_filamentmanager/templates/settings.jinja2:4 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:5 +msgid "Plugin Configuration" +msgstr "Configuración del plugin" + +#: octoprint_filamentmanager/templates/settings.jinja2:7 +msgid "Filament Spools" +msgstr "Bobinas de filamento" + +#: octoprint_filamentmanager/templates/settings.jinja2:13 +msgid "Items per page" +msgstr "Elementos por página" + +#: octoprint_filamentmanager/templates/settings.jinja2:22 +msgid "Sort by" +msgstr "Ordenar por" + +#: octoprint_filamentmanager/templates/settings.jinja2:23 +msgid "Name (ascending)" +msgstr "Nombre (Ascendente)" + +#: octoprint_filamentmanager/templates/settings.jinja2:24 +msgid "Material (ascending)" +msgstr "Material (Ascendente)" + +#: octoprint_filamentmanager/templates/settings.jinja2:25 +msgid "Vendor (ascending)" +msgstr "Fabricante (Ascendente)" + +#: octoprint_filamentmanager/templates/settings.jinja2:26 +msgid "Remaining (descending)" +msgstr "Restante (Descendente)" + +#: octoprint_filamentmanager/templates/settings.jinja2:36 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:15 +msgid "Name" +msgstr "Nombre" + +#: octoprint_filamentmanager/templates/settings.jinja2:37 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:38 +msgid "Material" +msgstr "Material" + +#: octoprint_filamentmanager/templates/settings.jinja2:38 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:26 +msgid "Vendor" +msgstr "Fabricante" + +#: octoprint_filamentmanager/templates/settings.jinja2:39 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:50 +msgid "Weight" +msgstr "Peso" + +#: octoprint_filamentmanager/templates/settings.jinja2:40 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:62 +msgid "Remaining" +msgstr "Restante" + +#: octoprint_filamentmanager/templates/settings.jinja2:41 +msgid "Used" +msgstr "Usado" + +#: octoprint_filamentmanager/templates/settings.jinja2:42 +msgid "Action" +msgstr "Acción" + +#: octoprint_filamentmanager/templates/settings.jinja2:54 +msgid "Edit Spool" +msgstr "Editar bobina" + +#: octoprint_filamentmanager/templates/settings.jinja2:55 +msgid "Duplicate Spool" +msgstr "Duplicar bobina" + +#: octoprint_filamentmanager/templates/settings.jinja2:56 +msgid "Delete Spool" +msgstr "Borrar bobina" + +#: octoprint_filamentmanager/templates/settings.jinja2:79 +msgid "Manage Profiles" +msgstr "Administrar perfiles" + +#: octoprint_filamentmanager/templates/settings.jinja2:80 +msgid "Add Spool" +msgstr "Añadir bobina" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:12 +msgid "Features" +msgstr "Características" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:13 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:91 +msgid "Database" +msgstr "Base de datos" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:14 +msgid "Appearance" +msgstr "Apariencia" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:26 +msgid "" +"Show dialog to confirm selected spools before starting/resuming the print" +" job" +msgstr "" +"Mostrar el diálogo para confirmar las bobinas antes de empezar/continuar " +"una impresión" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:34 +msgid "Warn if print job exceeds remaining filament" +msgstr "Avisar si la impresión excede el filamento restante" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:42 +msgid "Enable software odometer to measure used filament" +msgstr "Habilitar medición mediante software \"odometer\"" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:50 +msgid "Pause print if filament runs out" +msgstr "Pausar la impresión si el filamento se agota" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:56 +msgid "Pause threshold" +msgstr "Margen de pausa" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:74 +msgid "Use external database" +msgstr "Usar base de datos externa" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:78 +msgid "" +"If you want to use an external database, please take a look into my wiki how to " +"install the drivers and setup the database." +msgstr "" +"Si quieres usar una base de datos externa, por favor, mira mi wiki sobre como " +"instalar los drivers y configurar la base de datos." + + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:84 +msgid "URI" +msgstr "URI" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:98 +msgid "Username" +msgstr "Usuario" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:105 +msgid "Password" +msgstr "Contraseña" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:113 +msgid "Test connection" +msgstr "Comprobar conexión" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:118 +msgid "" +"Note: If you change these settings you must restart your OctoPrint " +"instance for the changes to take affect." +msgstr "" +"Nota: Si cambias esta configuración deberás reiniciar la instancia de " +"OctoPrint para que los cambios tengan efecto." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:122 +msgid "Import & Export" +msgstr "Importar y exportar" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:127 +msgid "Browse..." +msgstr "Examinar..." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:131 +msgid "Import" +msgstr "Importar" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:133 +msgid "Export" +msgstr "Exportar" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:135 +msgid "" +"This does not look like a valid import archive. Only zip files are " +"supported." +msgstr "No parece un fichero de importación válido. Sólo se permiten archivos zip." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:144 +msgid "Currency symbol" +msgstr "Símbolo de moneda" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:156 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:87 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:27 +msgid "Cancel" +msgstr "Cancelar" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:157 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:88 +msgid "Save" +msgstr "Guardar" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:5 +msgid "Filament Profiles" +msgstr "Perfiles de filamento" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:13 +msgid "--- New Profile ---" +msgstr "--- Nuevo perfil ---" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:14 +msgid "New" +msgstr "Nuevo" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 +msgid "Save profile" +msgstr "Guardar perfil" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:30 +msgid "Vendor must be set" +msgstr "Debes escribir el fabricante" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:42 +msgid "Material must be set" +msgstr "Debes escribir el material" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:50 +msgid "Density" +msgstr "Densidad" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:62 +msgid "Diameter" +msgstr "Diámetro" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:75 +msgid "Close" +msgstr "Cerrar" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:5 +msgid "Filament Spool" +msgstr "Bobina de Filamento" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:19 +msgid "Name must be set" +msgstr "Debes escribir un nombre" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:27 +msgid "Profile" +msgstr "Perfil" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:38 +msgid "Price" +msgstr "Precio" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:74 +msgid "Temperature offset" +msgstr "Compensación de temperatura" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:3 +msgid "hide overused usage" +msgstr "Ocultar bobinas agotadas" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:10 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:18 +msgid "Tool" +msgstr "Extrusor" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:19 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:19 +msgid "--- Select Spool ---" +msgstr "--- Seleccionar bobina ---" + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:5 +msgid "Confirm your selected spools" +msgstr "Confirma las bobinas seleccionadas" + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:10 +msgid "" +"There are no information available about the active tools for the print " +"job. Make sure the analysing process of the file has finished and that " +"it's loaded correctly." +msgstr "" +"No hay información disponible sobre el extrusor de la impresión actual. " +"Asegúrate de que el proceso de análisis esté finalizado y haya cargado" +" correctamente." + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:14 +msgid "" +"Please confirm your selected spools for all active tools. This dialog is " +"meant to protect you from accidentically selecting wrong spools for the " +"print." +msgstr "" +"Por favor, confirma las bobinas seleccionadas para todos los extrusores activos. Este diálogo está " +"pensado para evitar que elijas bobinas incorrectas para esta impresión." + diff --git a/translations/fr/LC_MESSAGES/messages.mo b/translations/fr/LC_MESSAGES/messages.mo new file mode 100644 index 0000000..268d332 Binary files /dev/null and b/translations/fr/LC_MESSAGES/messages.mo differ diff --git a/translations/fr/LC_MESSAGES/messages.po b/translations/fr/LC_MESSAGES/messages.po new file mode 100644 index 0000000..984539e --- /dev/null +++ b/translations/fr/LC_MESSAGES/messages.po @@ -0,0 +1,512 @@ +# French translations for OctoPrint-FilamentManager. +# Copyright (C) 2017 ORGANIZATION +# This file is distributed under the same license as the +# OctoPrint-FilamentManager project. +# FIRST AUTHOR , 2017. +# +msgid "" +msgstr "" +"Project-Id-Version: OctoPrint-FilamentManager 0.1.0\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2021-10-17 11:30+0200\n" +"PO-Revision-Date: 2021-07-14 21:16+0200\n" +"Last-Translator: Sven Lohrmann \n" +"Language: fr\n" +"Language-Team: de \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.0\n" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:357 +msgid "Start Print" +msgstr "Démarrer l'impression" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:372 +msgid "Resume Print" +msgstr "Reprendre l'impression" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:447 +msgid "Data import failed" +msgstr "Échec de l'importation des données" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:448 +msgid "Something went wrong, please consult the logs." +msgstr "Une erreur s'est produite, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 +msgid "Could not add profile" +msgstr "Impossible d'ajouter le profile" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:581 +msgid "" +"There was an unexpected error while saving the filament profile, please " +"consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de l'enregistrement du profile " +"de filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:602 +msgid "Could not update profile" +msgstr "Impossible de mettre à jour le profile" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:603 +msgid "" +"There was an unexpected error while updating the filament profile, please" +" consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de la mise à jour du profile de" +" filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:617 +msgid "Could not delete profile" +msgstr "Impossible de supprimer le profile" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:618 +msgid "" +"There was an unexpected error while removing the filament profile, please" +" consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de la suppression du profile de" +" filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:627 +msgid "Delete profile?" +msgstr "Supprimer le profile ?" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:628 +msgid "" +"You are about to delete the filament profile (). Please" +" note that it is not possible to delete profiles with associated spools." +msgstr "" +"Vous êtes sur le point de supprimer le profile de filament " +"(). Veuillez noter qu'il n'est pas possible de supprimer des " +"profils avec des bobines associés." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:629 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:949 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:15 +msgid "Delete" +msgstr "Effacer" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:709 +msgid "Could not select spool" +msgstr "Impossible de sélectionner la bobine" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:710 +msgid "" +"There was an unexpected error while selecting the spool, please consult " +"the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de la sélection du spool, " +"veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:898 +msgid "Could not add spool" +msgstr "Impossible d'ajouter la bobine" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:899 +msgid "" +"There was an unexpected error while saving the filament spool, please " +"consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de l'enregistrement de la " +"bobine de filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:921 +msgid "Could not update spool" +msgstr "Impossible de mettre à jour la bobine" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:922 +msgid "" +"There was an unexpected error while updating the filament spool, please " +"consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors de la mise à jour de la bobine " +"de filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:937 +msgid "Could not delete spool" +msgstr "Impossible de supprimer la bobine" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:938 +msgid "" +"There was an unexpected error while removing the filament spool, please " +"consult the logs." +msgstr "" +"Une erreur inattendue s'est produite lors du retrait de la bobine de " +"filament, veuillez consulter les journaux." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:947 +msgid "Delete spool?" +msgstr "Supprimer la bobine ?" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:948 +msgid "You are about to delete the filament spool - ()." +msgstr "" +"Vous êtes sur le point de supprimer la bobine de filament - " +"()." + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1020 +msgid "Insufficient filament" +msgstr "Filament insuffisant" + +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1021 +msgid "" +"The current print job needs more material than what's left on the " +"selected spool." +msgstr "" +"Le travail d'impression en cours nécessite plus de matériel que ce qui " +"reste sur la bobine sélectionnée." + +#: octoprint_filamentmanager/templates/settings.jinja2:4 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:5 +msgid "Plugin Configuration" +msgstr "Configuration du plug-in" + +#: octoprint_filamentmanager/templates/settings.jinja2:7 +msgid "Filament Spools" +msgstr "Bobines de filament" + +#: octoprint_filamentmanager/templates/settings.jinja2:13 +msgid "Items per page" +msgstr "Objets par page" + +#: octoprint_filamentmanager/templates/settings.jinja2:22 +msgid "Sort by" +msgstr "Trier par" + +#: octoprint_filamentmanager/templates/settings.jinja2:23 +msgid "Name (ascending)" +msgstr "Nom (alphabétique)" + +#: octoprint_filamentmanager/templates/settings.jinja2:24 +msgid "Material (ascending)" +msgstr "Matériel (alphabétique)" + +#: octoprint_filamentmanager/templates/settings.jinja2:25 +msgid "Vendor (ascending)" +msgstr "Vendeur (alphabétique)" + +#: octoprint_filamentmanager/templates/settings.jinja2:26 +msgid "Remaining (descending)" +msgstr "Restant (décroissant)" + +#: octoprint_filamentmanager/templates/settings.jinja2:36 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:15 +msgid "Name" +msgstr "Nom" + +#: octoprint_filamentmanager/templates/settings.jinja2:37 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:38 +msgid "Material" +msgstr "Matériel" + +#: octoprint_filamentmanager/templates/settings.jinja2:38 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:26 +msgid "Vendor" +msgstr "Vendeur" + +#: octoprint_filamentmanager/templates/settings.jinja2:39 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:50 +msgid "Weight" +msgstr "Poids" + +#: octoprint_filamentmanager/templates/settings.jinja2:40 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:62 +msgid "Remaining" +msgstr "Restant" + +#: octoprint_filamentmanager/templates/settings.jinja2:41 +msgid "Used" +msgstr "Utilisé" + +#: octoprint_filamentmanager/templates/settings.jinja2:42 +msgid "Action" +msgstr "Action" + +#: octoprint_filamentmanager/templates/settings.jinja2:54 +msgid "Edit Spool" +msgstr "Modifier la bobine" + +#: octoprint_filamentmanager/templates/settings.jinja2:55 +msgid "Duplicate Spool" +msgstr "Dupliquer la bobine" + +#: octoprint_filamentmanager/templates/settings.jinja2:56 +msgid "Delete Spool" +msgstr "Supprimer la bobine" + +#: octoprint_filamentmanager/templates/settings.jinja2:79 +msgid "Manage Profiles" +msgstr "Gérer les profiles" + +#: octoprint_filamentmanager/templates/settings.jinja2:80 +msgid "Add Spool" +msgstr "Ajouter une bobine" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:12 +msgid "Features" +msgstr "Caractéristiques" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:13 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:91 +msgid "Database" +msgstr "Base de données" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:14 +msgid "Appearance" +msgstr "Apparence" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:26 +msgid "" +"Show dialog to confirm selected spools before starting/resuming the print" +" job" +msgstr "" +"Afficher la boîte de dialogue pour confirmer les bobines sélectionnées " +"avant de démarrer/reprendre le travail d'impression" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:34 +msgid "Warn if print job exceeds remaining filament" +msgstr "Avertir si le travail d'impression dépasse le filament restant" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:42 +msgid "Enable software odometer to measure used filament" +msgstr "Activer l'odomètre logiciel pour mesurer le filament utilisé" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:50 +msgid "Pause print if filament runs out" +msgstr "Suspendre l'impression si le filament s'épuise" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:56 +msgid "Pause threshold" +msgstr "Seuil de pause" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:74 +msgid "Use external database" +msgstr "Utiliser une base de données externe" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:78 +msgid "" +"If you want to use an external database, please take a look into my wiki how to " +"install the drivers and setup the database." +msgstr "" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:84 +msgid "URI" +msgstr "URl" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:98 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:105 +msgid "Password" +msgstr "Mot de passe" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:113 +msgid "Test connection" +msgstr "Tester la connexion" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:118 +msgid "" +"Note: If you change these settings you must restart your OctoPrint " +"instance for the changes to take affect." +msgstr "" +"Remarque : si vous modifiez ces paramètres, vous devez redémarrer votre " +"instance OctoPrint pour que les modifications prennent effet." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:122 +msgid "Import & Export" +msgstr "Importer / Exporter" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:127 +msgid "Browse..." +msgstr "Parcourir..." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:131 +msgid "Import" +msgstr "Importer" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:133 +msgid "Export" +msgstr "Exporter" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:135 +msgid "" +"This does not look like a valid import archive. Only zip files are " +"supported." +msgstr "" +"Cela ne ressemble pas à une archive d'importation valide. Seuls les " +"fichiers ZIP sont pris en charge." + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:144 +msgid "Currency symbol" +msgstr "Symbole de la monnaie" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:156 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:87 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:27 +msgid "Cancel" +msgstr "Annuler" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:157 +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:88 +msgid "Save" +msgstr "Sauvegarder" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:5 +msgid "Filament Profiles" +msgstr "Profiles de filaments" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:13 +msgid "--- New Profile ---" +msgstr "--- Nouveau profile ---" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:14 +msgid "New" +msgstr "Nouveau" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 +msgid "Save profile" +msgstr "Enregistrer le profile" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:30 +msgid "Vendor must be set" +msgstr "Le fournisseur doit être défini" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:42 +msgid "Material must be set" +msgstr "Le matériel doit être réglé" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:50 +msgid "Density" +msgstr "Densité" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:62 +msgid "Diameter" +msgstr "Diamètre" + +#: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:75 +msgid "Close" +msgstr "Fermer" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:5 +msgid "Filament Spool" +msgstr "Bobine de filament" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:19 +msgid "Name must be set" +msgstr "Le nom doit être défini" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:27 +msgid "Profile" +msgstr "Profile" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:38 +msgid "Price" +msgstr "Prix" + +#: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:74 +msgid "Temperature offset" +msgstr "Décalage de température" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:3 +msgid "hide overused usage" +msgstr "" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:10 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:18 +msgid "Tool" +msgstr "Outil" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:19 +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:19 +msgid "--- Select Spool ---" +msgstr "--- Sélectionnez la bobine ---" + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:5 +msgid "Confirm your selected spools" +msgstr "Confirmez vos bobines sélectionnées" + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:10 +msgid "" +"There are no information available about the active tools for the print " +"job. Make sure the analysing process of the file has finished and that " +"it's loaded correctly." +msgstr "" +"Aucune information n'est disponible sur les outils actifs pour le travail" +" d'impression. Assurez-vous que le processus d'analyse du fichier est " +"terminé et qu'il est chargé correctement." + +#: octoprint_filamentmanager/templates/spool_confirmation.jinja2:14 +msgid "" +"Please confirm your selected spools for all active tools. This dialog is " +"meant to protect you from accidentically selecting wrong spools for the " +"print." +msgstr "" +"Veuillez confirmer vos bobines sélectionnées pour tous les outils actifs." +" Cette boîte de dialogue est destinée à vous protéger contre la sélection" +" accidentelle de mauvais spools pour l'impression." + +#~ msgid "Profile (ascending)" +#~ msgstr "Profile (croissant)" + +#~ msgid "Selected Spools" +#~ msgstr "Bobines sélectionnées" + +#~ msgid "Filament warning" +#~ msgstr "Avertissement de filament" + +#~ msgid "Saving failed" +#~ msgstr "Échec de l'enregistrement" + +#~ msgid "Failed to query spools" +#~ msgstr "Échec de la requête des bobines" + +#~ msgid "" +#~ "There was an unexpected database error" +#~ " while saving the filament profile, " +#~ "please consult the logs." +#~ msgstr "" +#~ "Une erreur de base de données " +#~ "inattendue s'est produite lors de " +#~ "l'enregistrement du profile de filament, " +#~ "veuillez consulter les journaux." + +#~ msgid "" +#~ "There was an unexpected database error" +#~ " while updating the filament profile, " +#~ "please consult the logs." +#~ msgstr "" +#~ "Une erreur de base de données " +#~ "inattendue s'est produite lors de la " +#~ "mise à jour du profile de " +#~ "filament, veuillez consulter les journaux." + +#~ msgid "" +#~ "There was an unexpected error while removing the filament spool,\n" +#~ " please consult the logs." +#~ msgstr "" +#~ "Une erreur inattendue s'est produite " +#~ "lors du retrait de la bobine de" +#~ " filament,\n" +#~ " veuillez " +#~ "consulter les journaux." + +#~ msgid "Spool selection failed" +#~ msgstr "Échec de la sélection de la bobine" + +#~ msgid "Cannot delete profiles with associated spools." +#~ msgstr "Impossible de supprimer les profiles avec les bobines associés." + +#~ msgid "Data import successfull" +#~ msgstr "Importation des données réussie" + +#~ msgid "Enable filament odometer" +#~ msgstr "Activer l'odomètre à filament" + diff --git a/translations/messages.pot b/translations/messages.pot index b35a733..024e87c 100644 --- a/translations/messages.pot +++ b/translations/messages.pot @@ -1,138 +1,138 @@ # Translations template for OctoPrint-FilamentManager. -# Copyright (C) 2018 The OctoPrint Project +# Copyright (C) 2021 The OctoPrint Project # This file is distributed under the same license as the # OctoPrint-FilamentManager project. -# FIRST AUTHOR , 2018. +# FIRST AUTHOR , 2021. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: OctoPrint-FilamentManager 0.5.2\n" +"Project-Id-Version: OctoPrint-FilamentManager 1.9.0\n" "Report-Msgid-Bugs-To: i18n@octoprint.org\n" -"POT-Creation-Date: 2018-02-04 15:21+0100\n" +"POT-Creation-Date: 2021-10-17 11:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.4.0\n" +"Generated-By: Babel 2.9.0\n" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:334 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:357 msgid "Start Print" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:349 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:372 msgid "Resume Print" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:424 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:447 msgid "Data import failed" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:425 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:448 msgid "Something went wrong, please consult the logs." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:557 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 msgid "Could not add profile" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:558 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:581 msgid "" "There was an unexpected error while saving the filament profile, please " "consult the logs." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:579 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:602 msgid "Could not update profile" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:580 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:603 msgid "" "There was an unexpected error while updating the filament profile, please" " consult the logs." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:594 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:617 msgid "Could not delete profile" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:595 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:618 msgid "" "There was an unexpected error while removing the filament profile, please" " consult the logs." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:604 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:627 msgid "Delete profile?" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:605 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:628 msgid "" "You are about to delete the filament profile (). Please" " note that it is not possible to delete profiles with associated spools." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:606 -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:902 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:629 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:949 #: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:15 msgid "Delete" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:686 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:709 msgid "Could not select spool" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:687 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:710 msgid "" "There was an unexpected error while selecting the spool, please consult " "the logs." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:851 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:898 msgid "Could not add spool" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:852 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:899 msgid "" "There was an unexpected error while saving the filament spool, please " "consult the logs." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:874 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:921 msgid "Could not update spool" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:875 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:922 msgid "" "There was an unexpected error while updating the filament spool, please " "consult the logs." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:890 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:937 msgid "Could not delete spool" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:891 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:938 msgid "" "There was an unexpected error while removing the filament spool, please " "consult the logs." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:900 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:947 msgid "Delete spool?" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:901 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:948 msgid "You are about to delete the filament spool - ()." msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:973 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1020 msgid "Insufficient filament" msgstr "" -#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:974 +#: octoprint_filamentmanager/static/js/filamentmanager.bundled.js:1021 msgid "" "The current print job needs more material than what's left on the " "selected spool." @@ -229,7 +229,7 @@ msgid "Features" msgstr "" #: octoprint_filamentmanager/templates/settings_configdialog.jinja2:13 -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:87 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:91 msgid "Database" msgstr "" @@ -263,61 +263,69 @@ msgstr "" msgid "Use external database" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:80 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:78 +msgid "" +"If you want to use an external database, please take a look into my wiki how to " +"install the drivers and setup the database." +msgstr "" + +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:84 msgid "URI" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:94 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:98 msgid "Username" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:101 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:105 msgid "Password" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:108 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:113 msgid "Test connection" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:111 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:118 msgid "" "Note: If you change these settings you must restart your OctoPrint " "instance for the changes to take affect." msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:115 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:122 msgid "Import & Export" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:120 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:127 msgid "Browse..." msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:124 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:131 msgid "Import" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:126 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:133 msgid "Export" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:128 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:135 msgid "" "This does not look like a valid import archive. Only zip files are " "supported." msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:137 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:144 msgid "Currency symbol" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:149 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:156 #: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:87 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:27 msgid "Cancel" msgstr "" -#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:150 +#: octoprint_filamentmanager/templates/settings_configdialog.jinja2:157 #: octoprint_filamentmanager/templates/settings_profiledialog.jinja2:16 #: octoprint_filamentmanager/templates/settings_spooldialog.jinja2:88 msgid "Save" @@ -379,12 +387,16 @@ msgstr "" msgid "Temperature offset" msgstr "" -#: octoprint_filamentmanager/templates/sidebar.jinja2:4 +#: octoprint_filamentmanager/templates/sidebar.jinja2:3 +msgid "hide overused usage" +msgstr "" + +#: octoprint_filamentmanager/templates/sidebar.jinja2:10 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:18 msgid "Tool" msgstr "" -#: octoprint_filamentmanager/templates/sidebar.jinja2:5 +#: octoprint_filamentmanager/templates/sidebar.jinja2:19 #: octoprint_filamentmanager/templates/spool_confirmation.jinja2:19 msgid "--- Select Spool ---" msgstr ""