From 60daf455b95894f42ea971b408042ff5ade26149 Mon Sep 17 00:00:00 2001 From: Juan Silveira Date: Sat, 29 Jun 2024 03:49:23 +0900 Subject: [PATCH] Improvements to bugfix/working-tests. (#739) * #704, #705 Add third wave water profiles, and make water section like the preparation methods, to add a specific or custom one. * We removed in lokalise all old translations to make some more cleanup. * Preset third wave water translations * Changed font size * Resetting smoothedValue when attaching to the scale flow * #709, #708, #707, #706 Added haptic engine added text to speech for bluetooth scale connection added sort of images added indicator that machines are connected * #710 - toggle hour and minutes * #711 - Enable tare again on brew timer start when pressure or temperature threshold is hit cause of logic changes * #712 - Unarchive a bean * #713 - Focus seconds directly when opening the timer * #714 - Save again the brew when the while brewing is shown * #715 - Send EY to visualizer * Adding Bookoo devices * Adding translations * Corrected identifier name, testDeviceScan corrected, aswell as searching the pressure devices to find the bookoo pressure * Swiching to nativestorage back * Removing splash screens * Removing splash screen plugin, upgrading to android 13 (jdk 17 now needed). https://github.com/apache/cordova-android/pull/1678 Added kotlin version etc. Removing splash files, after they are not longer supported with android * Making text to speech just for IOS possible, aswell as fixing android image choosing with new version update * update text * Removed unused function * Made extraction chart labels translatable (#718) Co-authored-by: Lars Saalbach * Fix typos in Spanish translation (#716) * update text * Added first 7.3.0 update texts * outcomenting the bookoo pressure * Add new functions for starting Value Transmission * Use Value Transmission functions depending on timer * Commiting the pressure changes for the booko * Fixing the meticulous API data :) * Adding the strip android permissions, specialy for write storage aswell for: android.permission.BODY_SENSORS android.permission.ACTIVITY_RECOGNITION * Fix pin formater for beans * Set final weight for meticulous * Updating 7.3 patchnotes * Fixing to the next version * Fixing iOS image selection * #721 - Adding download button for brew by weight & retrying the call to the xenia. * #721 - Fixing null value * Lokalise update (#724) * Fixings the MA_STATUS Wait, and wait 2 seconds. Changing the notes and aromatics to the bottomline * Lokalise update (#725) * Lokalise update (#727) * Enabling pressure sensor, updating to 7.3.0 version tag * Fix tests after master merge. * Everywhere: Add missing decalations, imports and providers. * water-information-card: Add a water.type so Water.getIcon returns. * app.component: Remove Platform spy because it was missing is function * #736 - Removing the plugin cause of the core dependency * Add missing OnDestroy to BrewAddComponent. (#738) Original fix in b9ffb35 by AdrisGithub. ngOnDestroy added in 5538f04. * Remove duplicate text in README.md (#729) Duplicate text aded in 9d05b7c Co-authored-by: Grapehfruit * Split beforEach calls into async and sync calls. compileComponents is async so it needs to be in a waitForAsync block. The actual component creation should be in a sync block. Reference: https://angular.dev/guide/testing/components-scenarios#calling-compilecomponents * Delete unused import. setParseTemplateAsSourceFileForTest * Uncomment CuppingRadarComponent test. Register chart.js components in the same way as is done in app.component.ts * Revert changes to plotly.min.js. This file is imported, it shouldn't have been re-formatted. * Fix and uncomment graph-display-card.component.spec.ts. Split beforEach in async and sync. Clean up formatting. * UnComment and fix BrewBrewingGraphComponent test. * Create a MockBrew class that extends Brew and stubs out reading the Preparation from storage. * Provide MockBrew instance as `data` input. * In BrewBrewingGraphComponent.getPreparation, delegate to this.data.getPreparation insteda of re-implementing reading from storage. This allows for stubbing the storage read in a single palce. * Split beforeEach in async and sync sections ref: https://angular.dev/guide/testing/components-scenarios#calling-compilecomponents --------- Co-authored-by: Grapehfruit Co-authored-by: randomcoffeesnob Co-authored-by: agubelu --- README.md | 7 +- config.xml | 25 +- hooks/stripAndroidPermissions.js | 26 + package-lock.json | 246 +- package.json | 35 +- .../splash/drawable-land-hdpi-screen.png | Bin 29441 -> 0 bytes .../splash/drawable-land-ldpi-screen.png | Bin 9925 -> 0 bytes .../splash/drawable-land-mdpi-screen.png | Bin 16195 -> 0 bytes .../splash/drawable-land-xhdpi-screen.png | Bin 51771 -> 0 bytes .../splash/drawable-land-xxhdpi-screen.png | Bin 69211 -> 0 bytes .../splash/drawable-land-xxxhdpi-screen.png | Bin 89138 -> 0 bytes .../splash/drawable-port-hdpi-screen.png | Bin 28906 -> 0 bytes .../splash/drawable-port-ldpi-screen.png | Bin 9970 -> 0 bytes .../splash/drawable-port-mdpi-screen.png | Bin 16207 -> 0 bytes .../splash/drawable-port-xhdpi-screen.png | Bin 50534 -> 0 bytes .../splash/drawable-port-xxhdpi-screen.png | Bin 67934 -> 0 bytes .../splash/drawable-port-xxxhdpi-screen.png | Bin 88005 -> 0 bytes src/app/app.component.spec.ts | 192 +- src/app/app.component.ts | 10 +- src/app/app.scss | 22 + .../bean-popover-actions.component.html | 4 + .../default-parameter.component.spec.ts | 4 +- .../list-view-parameter.component.spec.ts | 4 +- .../manage-parameter.component.spec.ts | 4 +- .../repeat-parameter.component.spec.ts | 4 +- .../sort-parameter.component.spec.ts | 4 +- src/app/brew/brew-add/brew-add.component.html | 22 + src/app/brew/brew-add/brew-add.component.ts | 24 +- .../brew-brix-calculator.component.spec.ts | 4 +- ...w-choose-graph-reference.component.spec.ts | 4 +- ...oose-preparation-to-brew.component.spec.ts | 4 +- .../brew-cupping.component.spec.ts | 4 +- .../brew/brew-detail/brew-detail.component.ts | 6 + .../brew/brew-edit/brew-edit.component.html | 22 + src/app/brew/brew-edit/brew-edit.component.ts | 27 +- .../brew-popover-actions.component.spec.ts | 5 +- .../brew-popover-extraction.component.ts | 22 +- .../brew-rating/brew-rating.component.spec.ts | 4 +- .../brew-ratio-calculator.component.spec.ts | 4 +- src/app/dashboard/dashboard.page.spec.ts | 4 +- .../graph-section/graph-section.page.spec.ts | 7 +- .../graph-add/graph-add.component.spec.ts | 4 +- .../graph-detail.component.spec.ts | 4 +- .../graph-edit/graph-edit.component.spec.ts | 4 +- .../graph-section/graph/graph.page.spec.ts | 7 +- src/app/info/cookie/cookie.component.spec.ts | 4 +- .../mill-modal-select.component.spec.ts | 4 +- .../preparation-add-type.component.spec.ts | 4 +- .../preparation-detail.component.spec.ts | 4 +- .../preparation-edit-tool.component.spec.ts | 4 +- ...preparation-modal-select.component.spec.ts | 4 +- .../green-bean-add.component.spec.ts | 4 +- .../green-bean-detail.component.spec.ts | 4 +- .../green-bean-edit.component.spec.ts | 4 +- .../green-bean-filter.component.spec.ts | 4 +- .../green-bean-sort.component.spec.ts | 7 +- .../green-beans/green-beans.page.spec.ts | 4 +- .../roasting-machine-add.component.spec.ts | 4 +- .../roasting-machine-detail.component.spec.ts | 4 +- .../roasting-machine-edit.component.spec.ts | 4 +- .../roasting-machine.page.spec.ts | 6 +- ...opover-bluetooth-actions.component.spec.ts | 4 +- src/app/settings/settings.page.html | 95 + src/app/settings/settings.page.ts | 99 +- src/app/shared/shared.module.ts | 5 +- .../water-add-type.component.html | 20 + .../water-add-type.component.scss | 6 + .../water-add-type.component.spec.ts | 41 + .../water-add-type.component.ts | 262 ++ .../water/water-add/water-add.component.html | 52 +- .../water/water-add/water-add.component.scss | 35 +- .../water-add/water-add.component.spec.ts | 9 +- .../water/water-add/water-add.component.ts | 76 +- .../water-detail.component.spec.ts | 4 +- .../water-edit/water-edit.component.spec.ts | 6 +- .../water-section/water/water.page.spec.ts | 4 +- .../beanconqueror-finished.svg | 4 +- .../beanconqueror-meticulous-logo.svg | 13 + .../beanconqueror-no-wifi.svg | 1 + ...wave-water-classic-light-roast-profile.svg | 4 + ...ror-third-wave-water-cold-brew-profile.svg | 4 + ...or-third-wave-water-dark-roast-profile.svg | 4 + ...rd-wave-water-espresso-machine-profile.svg | 4 + .../beanconqueror-third-wave-water-logo.svg | 1130 ++++++ ...eror-third-wave-water-low-acid-profile.svg | 4 + ...-third-wave-water-medium-roast-profile.svg | 4 + .../beanconqueror-unfinish.svg | 1 + .../custom-ion-icons/beanconqueror-wifi.svg | 1 + .../beanconqueror-xenia-logo.svg | 30 + src/assets/i18n/de.json | 703 +--- src/assets/i18n/en.json | 703 +--- src/assets/i18n/es.json | 719 +--- src/assets/i18n/fr.json | 703 +--- src/assets/i18n/id.json | 703 +--- src/assets/i18n/it.json | 701 +--- src/assets/i18n/pl.json | 707 +--- src/assets/i18n/tr.json | 703 +--- src/assets/i18n/zh.json | 3107 +++++++---------- src/assets/js/plotly.min.js | 233 +- src/classes/devices/bluetoothDevice.ts | 5 + src/classes/devices/bokooScale.ts | 132 + src/classes/devices/bookooPressure.ts | 115 + src/classes/devices/index.ts | 8 + src/classes/devices/popsiclePressure.ts | 7 + .../devices/pressureBluetoothDevice.ts | 2 + src/classes/devices/prsPressure.ts | 7 + .../devices/transducerDirectPressure.ts | 6 + src/classes/preparation/preparation.ts | 1 - .../meticulous/meticulousDevice.ts | 3 + .../meticulous/meticulousShotData.ts | 3 + src/classes/settings/settings.ts | 25 + src/classes/version/iVersion.ts | 24 +- src/classes/visualizer/brewVisualizer.ts | 2 + src/classes/visualizer/visualizer.ts | 7 +- src/classes/water/water.ts | 29 + .../bean-information.component.html | 10 +- .../bean-information.component.spec.ts | 4 +- .../bean-information.component.ts | 15 +- .../bean-general-information.component.html | 2 +- ...bean-general-information.component.spec.ts | 4 +- .../bean-general-information.component.ts | 9 + .../bean-roast-information.component.spec.ts | 4 +- .../bean-roast-information.component.ts | 2 +- .../bean-sort-information.component.spec.ts | 4 +- ...-detail-sort-information.component.spec.ts | 4 +- ...bean-general-information.component.spec.ts | 4 +- ...rew-graph-reference-card.component.spec.ts | 4 +- .../brew-timer/brew-timer.component.ts | 2 +- .../brew-brewing-graph.component.spec.ts | 114 +- .../brew-brewing-graph.component.ts | 196 +- ...ewing-preparation-device.component.spec.ts | 4 +- ...ew-brewing-preparation-device.component.ts | 15 +- .../brew-brewing/brew-brewing.component.html | 3 +- .../brew-brewing/brew-brewing.component.ts | 26 +- .../cupping-radar.component.spec.ts | 69 +- .../graph-display-card.component.spec.ts | 70 +- .../graph-information-card.component.spec.ts | 4 +- .../green-bean-information.component.spec.ts | 4 +- .../mill-information-card.component.spec.ts | 4 +- ...default-custom-parameter.component.spec.ts | 4 +- ...st-view-custom-parameter.component.spec.ts | 4 +- .../manage-custom-parameter.component.spec.ts | 4 +- .../repeat-custom-parameter.component.spec.ts | 4 +- .../sort-custom-parameter.component.spec.ts | 4 +- .../photo-add/photo-add.component.html | 6 + .../photo-add/photo-add.component.ts | 20 + ...aration-information-card.component.spec.ts | 6 +- ...machine-information-card.component.spec.ts | 4 +- src/components/timer/timer.component.ts | 2 +- .../water-information-card.component.html | 9 +- .../water-information-card.component.scss | 5 + .../water-information-card.component.spec.ts | 8 +- .../water-information-card.component.ts | 124 +- src/data/tracking/beanTracking.ts | 1 + src/enums/beans/beanAction.ts | 1 + src/enums/water/waterTypes.ts | 9 + src/interfaces/settings/iSettings.ts | 12 + src/interfaces/visualizer/iBrewVisualizer.ts | 3 + .../analytics-popover.component.spec.ts | 4 +- .../datetime-popover.component.html | 42 +- .../datetime-popover.component.spec.ts | 4 +- .../datetime-popover.component.ts | 45 +- .../loading-popover.component.spec.ts | 4 +- .../qr-code-scanner-popover.component.spec.ts | 6 +- .../welcome-popover.component.spec.ts | 4 +- .../coffee-bluetooth-devices.service.ts | 44 +- .../hapticService/haptic.service.spec.ts | 16 + src/services/hapticService/haptic.service.ts | 15 + .../text-to-speech.service.spec.ts | 16 + .../textToSpeech/text-to-speech.service.ts | 57 + src/services/uiExcel.ts | 135 +- src/services/uiImage.ts | 63 +- src/services/uiUpdate.ts | 2 +- src/services/uiWaterHelper.ts | 3 - .../visualizer-service.service.ts | 6 + 175 files changed, 5784 insertions(+), 7607 deletions(-) create mode 100644 hooks/stripAndroidPermissions.js delete mode 100644 resources/android/splash/drawable-land-hdpi-screen.png delete mode 100644 resources/android/splash/drawable-land-ldpi-screen.png delete mode 100644 resources/android/splash/drawable-land-mdpi-screen.png delete mode 100644 resources/android/splash/drawable-land-xhdpi-screen.png delete mode 100644 resources/android/splash/drawable-land-xxhdpi-screen.png delete mode 100644 resources/android/splash/drawable-land-xxxhdpi-screen.png delete mode 100644 resources/android/splash/drawable-port-hdpi-screen.png delete mode 100644 resources/android/splash/drawable-port-ldpi-screen.png delete mode 100644 resources/android/splash/drawable-port-mdpi-screen.png delete mode 100644 resources/android/splash/drawable-port-xhdpi-screen.png delete mode 100644 resources/android/splash/drawable-port-xxhdpi-screen.png delete mode 100644 resources/android/splash/drawable-port-xxxhdpi-screen.png create mode 100644 src/app/water-section/water/water-add-type/water-add-type.component.html create mode 100644 src/app/water-section/water/water-add-type/water-add-type.component.scss create mode 100644 src/app/water-section/water/water-add-type/water-add-type.component.spec.ts create mode 100644 src/app/water-section/water/water-add-type/water-add-type.component.ts create mode 100644 src/assets/custom-ion-icons/beanconqueror-meticulous-logo.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-no-wifi.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-third-wave-water-classic-light-roast-profile.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-third-wave-water-cold-brew-profile.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-third-wave-water-dark-roast-profile.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-third-wave-water-espresso-machine-profile.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-third-wave-water-logo.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-third-wave-water-low-acid-profile.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-third-wave-water-medium-roast-profile.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-unfinish.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-wifi.svg create mode 100644 src/assets/custom-ion-icons/beanconqueror-xenia-logo.svg create mode 100644 src/classes/devices/bokooScale.ts create mode 100644 src/classes/devices/bookooPressure.ts create mode 100755 src/enums/water/waterTypes.ts create mode 100644 src/services/hapticService/haptic.service.spec.ts create mode 100644 src/services/hapticService/haptic.service.ts create mode 100644 src/services/textToSpeech/text-to-speech.service.spec.ts create mode 100644 src/services/textToSpeech/text-to-speech.service.ts diff --git a/README.md b/README.md index 68b0f66f3..75ac8eae7 100644 --- a/README.md +++ b/README.md @@ -250,11 +250,14 @@ node -v -> v18.15.0 -> works ### iOS-Version: -`ionic cordova platform add ios@7.0.1` +`ionic cordova platform add ios@7.1.0` ### Android-Version: -`ionic cordova platform add android@12.0.0` +`ionic cordova platform add android@13.0.0` +`jdk 17 needed` + +You need to remove WRITE_EXTERNAL_STORAGE on the x-socialshare plugin.xml ### Github Page Hosting diff --git a/config.xml b/config.xml index 265bb7a83..bd5a0a739 100644 --- a/config.xml +++ b/config.xml @@ -1,5 +1,5 @@ - + Beanconqueror Lars Saalbach @@ -16,8 +16,9 @@ - - + + + @@ -30,6 +31,11 @@ + + + + + + + + + + diff --git a/src/assets/custom-ion-icons/beanconqueror-no-wifi.svg b/src/assets/custom-ion-icons/beanconqueror-no-wifi.svg new file mode 100644 index 000000000..7a8a484b2 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-no-wifi.svg @@ -0,0 +1 @@ + diff --git a/src/assets/custom-ion-icons/beanconqueror-third-wave-water-classic-light-roast-profile.svg b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-classic-light-roast-profile.svg new file mode 100644 index 000000000..32520e094 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-classic-light-roast-profile.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/custom-ion-icons/beanconqueror-third-wave-water-cold-brew-profile.svg b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-cold-brew-profile.svg new file mode 100644 index 000000000..5f0aeafc8 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-cold-brew-profile.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/custom-ion-icons/beanconqueror-third-wave-water-dark-roast-profile.svg b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-dark-roast-profile.svg new file mode 100644 index 000000000..dded72a50 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-dark-roast-profile.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/custom-ion-icons/beanconqueror-third-wave-water-espresso-machine-profile.svg b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-espresso-machine-profile.svg new file mode 100644 index 000000000..174f68828 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-espresso-machine-profile.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/custom-ion-icons/beanconqueror-third-wave-water-logo.svg b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-logo.svg new file mode 100644 index 000000000..e12910783 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-logo.svg @@ -0,0 +1,1130 @@ + + + + + + + + + + + + + + diff --git a/src/assets/custom-ion-icons/beanconqueror-third-wave-water-low-acid-profile.svg b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-low-acid-profile.svg new file mode 100644 index 000000000..f4b5618b4 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-low-acid-profile.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/custom-ion-icons/beanconqueror-third-wave-water-medium-roast-profile.svg b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-medium-roast-profile.svg new file mode 100644 index 000000000..ae1cb1af8 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-third-wave-water-medium-roast-profile.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/custom-ion-icons/beanconqueror-unfinish.svg b/src/assets/custom-ion-icons/beanconqueror-unfinish.svg new file mode 100644 index 000000000..bf7a13e51 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-unfinish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/custom-ion-icons/beanconqueror-wifi.svg b/src/assets/custom-ion-icons/beanconqueror-wifi.svg new file mode 100644 index 000000000..313537a2c --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-wifi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/custom-ion-icons/beanconqueror-xenia-logo.svg b/src/assets/custom-ion-icons/beanconqueror-xenia-logo.svg new file mode 100644 index 000000000..f5d396315 --- /dev/null +++ b/src/assets/custom-ion-icons/beanconqueror-xenia-logo.svg @@ -0,0 +1,30 @@ + +image/svg+xml \ No newline at end of file diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index dc4f7d147..d0ce042a2 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -471,619 +471,6 @@ "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "Speichere die zu dir genommene Koffeinmenge", "UPDATE_TITLE": "Was gibt's neues", "NEXT": "Weiter", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "Version 5.0: Das ist neu", - "DESCRIPTION": [ - "Neues Layout, neue Icons, neue Farben, neues Logo", - "Neue Brühmethoden", - "Brühmethoden können nun Kategorisiert werden (Perkolation, Espresso, Full Immersion)", - "Brühmethoden können nun mit Tools hinterlegt werden (Filter, Siebe etc.)", - "Brühmethoden können nun einen eigenen Workflow haben", - "Weitere Bohneninformationen sowie unterschiedliche Bohnensorten können gepflegt werden", - "Bezugsfeld - Wassermenge ist nur für Perkolation\/Full Immersion verfügbar", - "Wo hast du den letzten Kaffee bezogen? Aktiviere dies in den Einstellungen", - "Neue Möglichkeit: Aktiviere 'schnelle Brühwiederholung' in den Einstellungen", - "Aktualisierungsinformationen beim App start", - "Abfrage hinzugefügt die App zu bewerten - nach 25 Verwendungen", - "Bohnen können nun sortiert werden", - "Brühungen und Bohnen können nun durchsucht werden", - "Ausgefülltes Cupping Radar wird nun in den Brühdetails angezeigt", - "Übrige Bohnenmenge wird nun auf der Startseite angezeigt", - "Röster werden bei Bohnen nun vorgeschlagen", - "Bewertung von Brühungen auf Sterne verändert" - ] - }, - "5.1.0": { - "TITLE": "Version 5.1: Das ist neu", - "DESCRIPTION": [ - "Neue Zeitauswahl für Brühungen", - "Röstdatum für Bohnen kann nun wieder ausgewählt werden auf iOS", - "Bilder können wieder auf dem iPad ausgewählt werden", - "TDS-Berechnung ist nun wieder bei der Brühmenge ersichtlich", - "Sicherheitsabstände wurden für iOS-Geräte hinzugefügt" - ] - }, - "5.2.0": { - "TITLE": "Version 5.2: Das ist neu", - "DESCRIPTION": [ - "Brühungen:<\/b>", - "Brühtimer läuft im Hintergrund weiter", - "Brühungen können favorisiert werden", - "Brühungen hinzufügen sowie Editiert sieht gleich aus", - "Display kann aktiv gehalten werden während eines Bezuges (Aktivierbar in den Einstellungen)", - "Liste der letzten Brühungen zeigt nun ebenfalls archivierte Brühungen", - "", - "Bohnen:<\/b>", - "Bohnenbilder werden in der Übersicht angezeigt", - "Bohnen können bewertet werden", - "", - "Interaktionen:<\/b>", - "Langes drücken auf Kacheln führt zur Editierungsansicht", - "Detailansichten werden nun mit einem direkten Klick auf die Kachel unterstützt", - "Github \/ Facebook \/ Instagram Webseiten verlinkt", - "", - "Fehlerbehebungen:<\/b>", - "Bohneninformationen wurden Fehlerhaft kopiert", - "Brühmenge wurde Standardmäßig aktiviert für neue Nutzer", - "", - "Sonstiges:<\/b>", - "Apple Healthkit Integration (Aktivierbar in den Einstellungen)", - "Aufräumarbeiten", - "Layoutänderungen", - "Statistikerweiterung", - "Startüberprüfungsroutine überarbeitet", - "Unterstützung für unterschiedlich große Kacheln für Brühungen und Bohnen" - ] - }, - "5.3.1": { - "TITLE": "Version 5.3: Das ist neu", - "DESCRIPTION": [ - "Zubereitungsmethoden:<\/b>", - "Veränderung der Ansichtskachel", - "Bilder können in der Editierung hinterlegt werden", - "Zubereitungstool wird in der Editierungsansicht abgespeichert, auch wenn nicht auf '+' gedrückt wurde", - "", - "Mühlen:<\/b>", - "Bilder können in der Editierung hinterlegt werden", - "", - "Brühungen:<\/b>", - "Parameter 'Anhänge' in 'Anhänge \/ Fotos' verändert", - "", - "Übersichtsseite:<\/b>", - "Bei weniger als 1000g Bohnen, wird die Zahl nun ausgeschrieben", - "", - "Fehlerbehebungen:<\/b>", - "Editieren durch langes Drücken veränderte die Informationen in der Oberfläche nicht", - "Informationen auf der Übersichtsseite werden aktualisiert bei Veränderungen", - "Mehrere Sorteninformationen bei Blends können wieder hinterlegt werden", - "Fehlermeldung beim Appstart hinzugefügt falls Appdaten fehlen" - ] - }, - "5.4.0": { - "TITLE": "Version 5.4: Das ist neu", - "DESCRIPTION": [ - "Röstabteilung:<\/b>", - "Verwalte absofort alle deine Rohbohnen und deine Röster (Aktivierbar in den Einstellungen)", - "Lege alle Rohbohnen an und transferiere sie als geröstete Bohne.", - "Lege deine Röstmaschinen an und Verbinde diese mit deiner jeweiligen Röstung", - "", - "Webseite:<\/b>", - "Go Live sowie Verlinkung der neuen Webseite! -> https:\/\/beanconqueror.com", - "", - "Unterstützung:<\/b>", - "Du wolltest Beanconqueror schon immer Unterstützten, die Verlinkung zu 'Buy me a coffee' wurde eingebaut", - "", - "iOS - iCloud:<\/b>", - "Der erste Schritt für die iCloud Unterstützung wurde gemacht. Beim ersten Start werden deine Daten in das iCloud fähige Backupverzeichnis verschoben", - "Aktiviere in deinen iOS-Einstellungen, dass du Beanconqueror sichern möchtest", - "", - "Android\/iOS - Automatisierte Datei-Sicherheitsexporte:<\/b>", - "Automatisierte Beanconqueror.json-Dateien werden abgespeichert für maximal 7 Tage, danach werden diese automatisch entfernt", - "Android: Download\/Beanconqueror_export\/Beanconqueror_automatic_export_TAG.json", - "iOS: Dateien\/Download\/Beanconqueror_export\/Beanconqueror_automatic_export_TAG.json", - "", - "Einstellungen:<\/b>", - "Excel Export - Du kannst jetzt, alle deine Daten als Exceldatei herunterladen um damit weiter zu arbeiten", - "Bestimme selbst mit welcher Bildqualität Bilder gespeichert werden 50% - 100% (Standard 100%)", - "Brühbewertung - Definiere selbst wieviel maximale Sterne\/Punkte du für deine Brühung vergeben willst minimum 5, maximum 100", - "", - "Neues Tracking:<\/b>", - "Umstieg auf Open-Source-Dienst Matomo, welcher auf unserem eigenen Server gehostet wird", - "Google Analytics \/ Firebase wurde entfernt", - "", - "Teilen:<\/b>", - "Teile deine Brühungen und Bohnen mit allen Kaffeeliebhabern!", - "", - "Fehlerbehebungen:<\/b>", - "Apple Healthkit - Einstellung wurden nicht gespeichert", - "Ab und zu wurden die Bewertungssterne nicht ausgefüllt (Brühung hinzufügen\/editieren)", - "Editieren durch langes Drücken, der Bereich konnte nicht mehr gescrollt werden", - "Importierung von größeren Daten auf iOS führte zu Fehlverhalten", - "Löschverhalten von Bohnen\/Zubereitungsmethoden\/Mühlen war nicht konsistent und führte zu grafischen Fehlern", - "Getränkemenge wurde fehlerhaft Kalkuliert in Statistiken und Übersicht", - "", - "Sonstiges:<\/b>", - "Aufräumarbeiten", - "Layoutänderungen", - "Statistikerweiterung", - "Startüberprüfungsroutine überarbeitet, Bitte warten Fenster wurde hinzugefügt", - "Einige Label Änderungen", - "Datenzugriffe\/Reihenfolgen wurden innerhalb der App verändert um Probleme zu vermeiden" - ] - }, - "6.0.0": { - "TITLE": "Version 6.0: Das ist neu", - "DESCRIPTION": [ - "Bluetooth Waage<\/b>", - "Unterstützung der ersten Bluetooth Waage - Decent-Scale - Vielen Dank an Decent Espresso", - "Unterstützung von Acaia Lunar", - "", - "Aromen Verkostung<\/b>", - "Verkoste jede Brühung mit den jeweiligen Aromen", - "", - "Wasserbereich<\/b>", - "Füge dein eigenes Wasser hinzu, aktiviere diesen Bereich in den Einstellungen", - "", - "Mehr Sprachen<\/b>", - "Unterstützung für Spanisch - Vielen Dank an Frank!", - "", - "Verbesserungen<\/b>", - "Wiederhole Brühungen mit Zubereitungsmethoden nun schneller, Drücke Lange '+'", - "Neue Parameter hinzugefügt", - "Unterstützung verschiedener Währungen", - "Editierung der Brühung in der Detailansicht", - "Mehrfachauswahl von Bildern", - "Unterstützung von Brix in TDS Umrechnung", - "Kaffeepackung aufgebraucht Abfrage bei der letzten Brühung", - "Röstdatum von Bohnen kann nun zurückgesetzt werden", - "Unterstützung von Detailansichten für Bohnen, Mühlen und Zubereitungsmethoden in der Brühansicht", - "Brühratio g\/l aufgenommen", - "", - "iOS<\/b>", - "Unterstützung von Sicherheitsabständen", - "", - "Fehlerbehebungen:<\/b>", - "Apple Healthkit - Entkoffeinierter Kaffee wurde gespeichert", - "Kopieren von Bohnen führte zu Fehlverhalten", - "Brühzeit im Excelexport hinzugefügt", - "Kleinere Fehlerbehebungen", - "", - "Sonstiges:<\/b>", - "Bohnen \/ Mühlen \/ Zubereitungsmethoden werden nun Alphabetisch sortiert in Auswahlfeldern" - ] - }, - "6.1.0": { - "TITLE": "Version 6.1: Das ist neu", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Scanne nun Kaffeepackungen ein! Alle Kaffeeinformationen wurden direkt durch die Rösterei bereitgestellt", - "", - "Bluetooth Waage<\/b>", - "Unterstützung von Acaia Pearl 2021 - Danke an Micah und Mike", - "Unterstützung von Acaia Lunar 2021 - Danke an Micah und Mike", - "Unterstützung von Acaia Pyxis - Danke an Micah und Mike", - "Unterstützung von Hiroia Jimmy - Danke an Silas", - "Unterstützung von Felicita Arc - Danke an Herman", - "Achtung: Acaia Pearl < 2021 ist leider noch nicht unterstützt!", - "Gewichtsinformationen der Bluetoothwaage können auch bei der Bohnenseite verwendet werden", - "Gewichtsveränderungen werden auch ohne das Starten der Brühung übermittelt", - "", - "Brühübersicht<\/b>", - "Individualisiere die anzuzeigenden Parameter in der Brühübersicht für alle Zubereitungsarten, oder je Zubereitungsart", - "Brühmethodenbilder werden in der Listenansicht angezeigt", - "", - "Brühgraph<\/b>", - "Überarbeitung des Brühgraphs zu einer geschmeidigeren Ansicht", - "Brühgraph kann nun maximiert werden", - "Brühgraph kann in der Detailansicht nun exportiert und gezoomt werden", - "Durchschnittliche Flussmenge wird nun angezeigt", - "", - "Bohnen<\/b>", - "Erweiterung der Felder um: Kaufdatum, FOB-Preis, Einkaufspreis", - "Bohnen können nun favoritisiert und gefiltert werden", - "Wenn Bohnen archiviert werden, können diese nun direkt Bewertet werden", - "Beim Drücken auf das '+' kannst du nun auswählen ob du eine Bohne einscannen oder hinzufügen möchtest", - "Drücke lange auf das '+' um direkt eine Bohne hinzuzufügen", - "", - "Zubereitungsmethoden<\/b>", - "Zubereitungsmethoden können nun wiederholt werden mit allen dazugehörigen Einstellungen", - "Weitere Zubereitungsmethoden verfügbar - Danke an Nicola", - "Auswahl der jeweiligen Zubereitungsmethode bei einer Brühung zeigt nun ebenfalls das Bild an", - "", - "Einstellungen<\/b>", - "Bewertungen können nun verschiedene Schritte beinhalten (1, 0.75, 0.5, 0.25, 0.1)", - "Bluetoothwaage - Stelle nun ein ob die Waage bei einer neuen Brühung oder beim Starten zurückgesetzt werden soll", - "Bluetoothwaage - Stelle ein ob du Anomalien oder negative Werte ignorieren möchtest - falls ja ist ein Live-Graph nicht möglich", - "Wähle nun aus, ob du archivierte Brühungen auf der Heimseite angezeigt bekommen möchtest", - "Exportieren - Exportiert nun auch die Rohdaten der protokollierten Waagenbrühungen", - "", - "Verbesserungen<\/b>", - "Löschen von Zubereitungsmethoden-Tools löschen keine Brühungen mehr", - "Zubereitungsmethoden-Tools können nun editiert und archiviert werden", - "", - "Fehlerbehebungen:<\/b>", - "Weitere Fehler gefunden, welche zu einem Datenverlust führen konnten", - "Kleinere Fehlerbehebungen", - "", - "Sonstiges:<\/b>", - "Aktualisierung auf Ionic-Framework 6, hierdurch sind kleinere visuelle Änderungen gekommen" - ] - }, - "6.1.3": { - "TITLE": "Version 6.1.3: Das ist neu", - "DESCRIPTION": [ - "Android - Achtung<\/b>", - "An aller erste Stelle: Entschuldigung!", - "Leider wurde durch die Umstellung von APK auf AAB das Dateisystem zurückgesetzt und die App startet (vermutlich) ohne Daten.", - "Während der Entwicklung konnte ich dieses Problem leider nicht feststellen oder ausmachen.", - "Falls die App leer gestartet wurde, bitte geh in die Einstellungen, und importiere unter 'Download\/Beanconqueror_export\/Beanconqueror_automatic_export_*.json' * steht für den letzten Zeitstempel das Backup.", - "Alle Daten sollten dann wie gewohnt wieder vorhanden sein, falls nicht schreib mir bitte eine E-Mail: info@beanconqueror.com." - ] - }, - "6.1.5": { - "TITLE": "Version 6.1.5: Das ist neu", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Lade die QR-Code Daten der Rösterei nun erneut", - "", - "Brühgraph<\/b>", - "Wasserfluss wird nun in Echtzeit berechnet", - "", - "Bohnen<\/b>", - "Suchfeld bei der Auswahl der Bohnen", - "", - "Fehlerbehebungen:<\/b>", - "Nach Aufnahme eines Bildes war der Ladebalken nicht verschwunden", - "Kleinere Fehlerbehebungen" - ] - }, - "6.2.0": { - "TITLE": "Version 6.2.0: Das ist neu", - "DESCRIPTION": [ - "Druckgeräte<\/b>", - "Unterstützung von 'Do it yourself' Popsicle - Sensor - Danke an Mike und Shay", - "Autostart Timer bei einem Gewissen Wasserdruck - Editierbar in den Einstellungen", - "Drücken der Druck-Anzeige setzt den Druck auf '0' zurück", - "Anzeige des Druckgerättypes und der Mac-Adresse beim Verbinden", - "", - "Bluetooth Waage<\/b>", - "Unterstützung von Eureka Precisa - Danke an Mimoja", - "Bestimmte das Verhalten der Bluetooth Waage bei einer neuen Brühung - Editierbar in den Einstellungen", - "Bestimmte welche Graphen bei Filter oder Espresso angezeigt werden sollen - Editierbar in den Einstellungen", - "Sequenzielle Abarbeitung von Bluetooth-Befehlen um Fehlerfälle zu reduzieren", - "Anzeige des Waagentypes und der Mac-Adresse beim Verbinden", - "", - "Brühungen<\/b>", - "Unterstützung von Millisekunden - Aktivierbar in den Einstellungen", - "Filtersystem erweitert, damit man bei Bohnen auch Rösttyp und Röster suchen kann", - "Bei einer verbundenen Bluetoothwaage sowie Druckgerät kann nun auf der Brühseite, die Verbindung erneut aufgebaut werden", - "", - "Bohnen<\/b>", - "Teile deine Bohnen (ohne Server) - Danke an Mike", - "Zeige alle Brühungen zu der Bohne", - "Unterstützung der Bohnenbewertung - wie bei Brühungen - Editierbar in den Einstellungen", - "", - "Weitere Sprachen<\/b>", - "Unterstützung von Türkisch - Danke an Halil Portakal", - "Unterstützung von Chinesisch - Danke an Jiageng", - "", - "Mühlen<\/b>", - "Anzeige des letztens Mahlgrades sowie der letzten Bohne", - "", - "Verbesserungen<\/b>", - "Fehlermeldung beim Scannen einer Bohne, wenn diese noch nicht Freigegeben wurde", - "Die Editierung des Brühdatums ist nun Standardmäßig aktiviert", - "", - "Sonstiges:<\/b>", - "Typo fehler behoben", - "Behebung eines Fehlers, dass Sternbewertungen nicht mehr zu sehen waren, trotz Grundeinstellungen", - "Ältere Brühgraphen durch eine Bluetoothwaage können wieder exportiert werden", - "Aktualisierung auf Ionic 6.3.0", - "Kleinere Fehlerbehebungen" - ] - }, - "6.3.0": { - "TITLE": "Version 6.3.0: Das ist neu", - "DESCRIPTION": [ - "Bluetooth Waage<\/b>", - "Definiere wieviele Millisekunden zwischen den Bluetooth befehlen gewartet werden soll", - "", - "Brühungen<\/b>", - "Zurücksetzen der Bezugszeit-Daten", - "Bei verbundener Bluetooth-Waage, wird nun das letzte Bezugsgewicht in der Kachel angezeigt", - "Größere Buttons bei der Brühmaximierung", - "Herunterladen der Brühdaten als Excel oder JSON", - "Bohnenbilder können nun anstatt der Zubereitungsmethodenbilder angezeigt werden -> Aktivierbar in den Einstellungen", - "", - "Bohnen<\/b>", - "Bohnen können nun auch nach Varietäten durchsucht werden", - "", - "Mühlen<\/b>", - "Anzeigte der Notizen in der Listen- sowie Detailansicht", - "", - "Verbesserungen<\/b>", - "Wähle aus, wieviel Millisekunden-Nachkommastellen angezeigt werden sollen (Einzugeben bleiben weiterhin 3-Stellen)", - "Spenden-Buttons eingebaut", - "Textboxen sind nun Scrollbar", - "Brühzeit in den Statistiken werden nun Formatiert angezeigt", - "Benachrichtungslabels erscheinen nun oben und können mit einem X geschlossen werden", - "Deaktivierte Detail-Parameter wurden freigeschaltet, z.B. kann nun auch die Mühle ausgeblendet werden", - "Analytische Datenerhebung kann deaktiviert oder aktiviert werden", - "", - "Sonstiges:<\/b>", - "Typo Fehler behoben", - "Aktualisierung auf Ionic 6.4.0", - "Kleinere Fehlerbehebungen" - ] - }, - "6.4.0": { - "TITLE": "Version 6.4.0: Das ist neu", - "DESCRIPTION": [ - "Bluetooth Thermometer<\/b>", - "Unterstützung von ETI Ltd Thermometern (ThermaQ Blue, BlueTherm, etc) - Sensors - Danke an Myles", - "Autostart Timer bei einer gewissen Temperatur - Siehe Einstellungen", - "", - "Bluetooth Waage<\/b>", - "Unterstützung von Skale 2", - "Wenn eine Bluetooth-Waage die Brühung zurücksetzen möchte, gibt es ein Sicherheits-Popup", - "", - "Visualizer<\/b>", - "Lade deine Aufgezeichneten Brühungen mit Bluetooth-Geräten herunter und Lade diese in Visualizer hoch - Danke an Miha für die Unterstützung", - "(Schritt 2: Automatischer Upload)", - "", - "Bohnen<\/b>", - "Bohnenparameter sowie Listenparameter können nun individualisiert und gepflegt werden", - "Bohnen können nun nach Röstgrad gefiltert werden", - "Bohnenseite kann nun als Startseite hinterlegt werden - Siehe Einstellungen", - "Automatische Textvorschläge für bereits hinterlegte Werte, für spezifische Felder eingebaut z.B. Varietät", - "Bohnen-Varietätsinformationen können nun in dem Freitextfeld eingegeben und gesucht werden", - "", - "Brühungen<\/b>", - "Neuer Button, über welchen du direkt eine Zubereitungsart starten kannst", - "Individualisiere welche Parameter beim 'Wiederholen' hinterlegt werden sollen - Standardmäßig alle", - "Filtere nun nach Brühungen welche mit Bluetooth-Geräten aufgenommen wurden", - "Überarbeitung der Echtzeit Brühgrafik mit verbundenen Bluetoothgeräten", - "Brühraten Kalkulator kann nun bei Brühung Hinzufügen\/Editieren aufgerufen werden, für eine schnelle Berechnung", - "Beim Drücken von 'Speichern', wird der Timer nun gestoppt", - "", - "Discord<\/b>", - "Komme jetzt zum Beanconqueror Discord Server zu Diskussion, Fragen oder Feedback", - "", - "Android<\/b>", - "Teilen Funktionalität funktioniert wieder", - "Exportiere und Importiere nun ebenfalls deine Brühgraphen", - "", - "Verbesserungen<\/b>", - "Dauerhafte Anzeige, wieviele Einträge angezeigt werden, bzw. nach dem Filtern vorhanden sind", - "Beim Hinzufügen\/Editieren einer Brühung, wird der Speichern\/Abbrechen-Button ausgeblendet, sobald die Tastatur sichtbar ist", - "Aktiviere in den Einstellungen, dass beim Mahlgrad eine Numerische Tastatur angezeigt werden soll", - "", - "Sonstiges:<\/b>", - "Kleinere Fehlerbehebungen" - ] - }, - "6.4.10": { - "TITLE": "Version 6.4.1: Das ist neu", - "DESCRIPTION": [ - "Sonstiges:<\/b>", - "Kleinere Fehlerbehebungen" - ] - }, - "6.4.20": { - "TITLE": "Version 6.4.2: Das ist neu", - "DESCRIPTION": [ - "Startcrash behoben", - "Neuladen der App wurde gefixt, wenn eine Bluetooth Waage nicht verbunden werden konnte" - ] - }, - "6.5.0": { - "TITLE": "Version 6.5.0: Das ist neu", - "DESCRIPTION": [ - "Bluetooth Waage<\/b>", - "Unterstützung von DiFluid Microbalance sowie Smart Chef Scale - Vielen Dank an Yannick!", - "Nur für Espresso-Zubereitungsmethoden: Aktiviere in den Einstellungen, dass die Brühung automatisch gestoppt wird, sobald keine Flussveränderung mehr erkannt wird", - "Sicherheitshinweis eingebaut, sobald Beanconqueror von der Waage keine Gewichtswerte übermittelt bekommt", - "", - "Bohnen<\/b>", - "Teile deine Bohne nun ebenfalls als Bild oder URL", - "", - "Xenia<\/b>", - "Die Druckdaten sowie die Temperaturdaten während der Brühung werden nun ebenfalls aus der Xenia ausgelesen und dargestellt sowie gespeichert", - "", - "Brühung<\/b>", - "Sobald eine Brühung gestoppt wird, wird der Brühgraph nun vollständig dargestellt", - "", - "Export\/Import<\/b>", - "Anstatt von .JSON-Dateien werden nun .ZIP-Dateien für das Importieren sowie Exportieren verwendet.", - "Bitte gehe daher, einmal in die Einstellungen und mache dieses mal ein Sicherheitsbackup, zusätzlich zu den automatisch geschriebenen", - "", - "Verbesserungen<\/b>", - "Kleine Verbesserungen", - "", - "Sonstiges<\/b>", - "Kleinere Fehlerbehebungen" - ] - }, - "6.5.1": { - "TITLE": "Version 6.5.1: Das ist neu", - "DESCRIPTION": [ - "Sonstiges<\/b>", - "Kleinere Fehlerbehebungen" - ] - }, - "6.6.0": { - "TITLE": "Version 6.6.0: Das ist neu", - "DESCRIPTION": [ - "Refraktometer<\/b>", - "Unterstützung des R2 DiFluid Refraktometers - Vielen Dank an Yannick!", - "", - "Bluetooth Waage<\/b>", - "Unterstützung von Blackcoffee.io - Vielen Dank an Yannick!", - "Verbesserung der Wasser-Fluss Berechnung für billige Waagen", - "", - "Brühungen<\/b>", - "Markiere eine Brühung zu einer Bohne als 'Beste Brühung' - Aktivierbar in den Einstellungen", - "Kopiere den Inhalt deiner Notizen in der Detailansicht", - "Filtere deine Brühungen nach verwendeten Profilen", - "Bewerte deine Brühung über das Listenmenü", - "Lade die Visualizer Datei ebenfalls in der Detailansicht herunter", - "", - "Xenia<\/b>", - "Script-Ausführungen werden in die Notizen hinterlegt", - "Brühtemperatur der Maschine wird nun beim Start des Bezugs aus der Maschine ausgelesen und hinterlegt", - "", - "Verbesserungen<\/b>", - "Kleine Verbesserungen", - "", - "Sonstiges<\/b>", - "Kleinere Fehlerbehebungen" - ] - }, - "6.6.1": { - "TITLE": "Version 6.6.1: Das ist neu", - "DESCRIPTION": [ - "Sonstiges:<\/b>", - "Kleinere Fehlerbehebungen" - ] - }, - "6.6.2": { - "TITLE": "Version 6.6.2: Das ist neu", - "DESCRIPTION": [ - "[ANDROID]Android 13 - Dateisystem Veränderungen:<\/b>", - "[ANDROID]Durch die Veränderungen der Dateisystemrechte in Android, mussten die Zugriffswege, wie Dateien gesichert und Importiert werden überarbeitet werden. Weiterhin hatten Kamera sowie Bildzugriffe nicht mehr funktioniert bei Android 13 Geräten und wurden mit diesem Update nun behoben.", - "[ANDROID]Die Mindestanforderung für diese App musste ebenfalls auf Android 7.0 angehoben werden, durch diese Veränderungen.", - "[ANDROID]Wie der Import\/Export nun Funktioniert findest du hier:https:\/\/beanconqueror.com\/faq", - "", - "[IOS]iOS - Aktualisierung Bibliotheken<\/b>", - "[IOS]Aktualisierung der Cordova-Bibliotheken, die mit diesem Release aktualisiert wurden :)" - ] - }, - "7.0.0": { - "TITLE": "Version 7.0: Das ist neu", - "DESCRIPTION": [ - "Bluetooth Waagen Modus<\/b>", - "Start des Timers bei der ersten erkannten Gewichtsänderung - Aktivierbar in den Einstellungen (neuer Button sichtbar)", - "Ignoriere das aktuelle übertragene Gewicht - z.B. für Swirls, Stirs oder Herunternehmen eines Gewichts ohne gewollte Grafikausschläge - Aktivierbar in den Einstellungen (neuer Button sichtbar)", - "", - "Bluetooth Waagen<\/b>", - "Unterstützung einer Bluetooth-No-Name Waage", - "Beim Verbinden einer DiFluid Microbalance oder Felicita Waage wird das Kommando-Delay direkt gesetzt", - "", - "Grafenbereich<\/b>", - "Aktiviere den Grafenbereich in den Einstellungen", - "Hinterlege einen Brühgraf für eine neue Brühung, um diese nachzuverfolgen", - "Grafen können von einer Brühung stammen oder aus dem individuellen Grafenbereich", - "Lade einen eigenen Grafen hoch - Exportiere hierfür eine .JSON-Datei bei deinen Brühungen", - "", - "Visualizer<\/b>", - "Lade jede neue Brühung mit einem verbundenen Graf direkt zum Visualizer hoch - Aktivierbar in den Einstellungen", - "Lade bei Bedarf alle Brühungen zum Visualizer hoch", - "Vielen Dank an Miha für die Unterstützung!", - "", - "Brühungen<\/b>", - "Wiederhole eine Brühung aus der Detailansicht", - "Erster-Tropfen kann nun bei einer Zubereitungsmethodik aktiviert werden, auch wenn es sich nicht um eine Espresso-Methode handelt (z.B. Pulsar)", - "Anzeige der Brührate mit verbundener Waage bei der maximierten Ansicht", - "Letzte Brühungen werden nun alphabetisch sortiert, und das letzte verwendete Datum wird angezeigt", - "Echtzeitfluss mit verbundener Waage zeigt bei Espresso nun auch Werte unter 1g\/s an", - "", - "Bohnen<\/b>", - "Wiederhole die letzte Brühung oder die beste Brühung aus der Bohnenansichtskarte", - "", - "Zubereitungsmethodik<\/b>", - "Zubereitungstools werden nun alphabetisch sortiert und können gefiltert werden", - "Letzte Benutzung der Zubereitungsmethodik wird nun beim Auswählen angezeigt", - "", - "Mühlen<\/b>", - "Letzter Mahlgrad sowie letzte Benutzung sind beim Auswählen einer Mühle nun sichtbar", - "", - "Xenia<\/b>", - "Fehlerbehebung: Deaktivierte Skripte werden nicht mehr ausgeführt", - "", - "Einstellungen<\/b>", - "Einblendung einer Sicherheitsabfrage, falls du etwas bei einer Brühung oder einer Bohne verändert hast - Aktivierbar in den Einstellungen", - "Setze nun deine individuelle Start X- und Y-Achse für Brühungen mit Bluetooth-Geräten", - "", - "Ionic 7<\/b>", - "Update von Ionic 6 auf Ionic 7", - "[IOS]Mindestversion für iOS ist nun iOS 14", - "[ANDROID]Mindestversion für Android ist nun Android 7.1", - "", - "Lokalise<\/b>", - "Verwendung von Lokalise für alle Übersetzungen - Vielen Dank an Yannick", - "Du willst auch übersetzen - Mit Lokalise ist dies nun ganz einfach? Melde dich: info@beanconqueror.com", - "", - "Sonstiges<\/b>", - "Kleinere Fehlerbehebungen", - "" - ] - }, - "7.1.0": { - "TITLE": "Version 7.1.0: Das ist neu", - "DESCRIPTION": [ - "Weitere Sprachen<\/b>", - "Unterstützung von Französisch - Danke an Yannick", - "Unterstützung von Indonesisch – Danke an Bondan, Ganjar", - "", - "Bluetooth Waagen<\/b>", - "Unterstützung einer neuen DIY-Bluetooth-Waage (Rust & Python Firmware)", - "Unterstützung von DiFluid Microbalance Ti", - "Verbesserung der Flussberechnung für alle Waagen", - "", - "Grafenbereich<\/b>", - "Weitere Informationen auf der Brühreferenz zur Auswahl hinzugefügt", - "", - "Brühungen<\/b>", - "Bluetooth-Waagen - Eine Schaltfläche zum Tarieren wurde oben in die Symbolleiste eingefügt", - "", - "Bohnen<\/b>", - "Unterstützung beim Kopieren verschiedener Sorteninformationen", - "", - "Wasserbereich<\/b>", - "Parameter \"Kalium\" hinzugefügt", - "", - "Mühlen<\/b>", - "RPM-Parameter jetzt in der Listenansicht und Auswahlansicht sichtbar", - "", - "Einstellungen<\/b>", - "Definiere deine eigene Zeitachse für Filter oder Espresso mit angeschlossenen Bluetooth-Geräten", - "Hinzufügen verschiedener Datumsformate, um auch dem amerikanischen Format zu entsprechen", - "", - "Sonstiges<\/b>", - "Kleinere Fehlerbehebungen" - ] - }, - "7.2.0": { - "TITLE": "Version 7.2.0: Das ist neu", - "DESCRIPTION": [ - "Weitere Sprachen<\/b>", - "Unterstützung von Italienisch - Danke an Cancercookie", - "Unterstützung für Polnisch - Danke an MarcinSachs", - "", - "Bluetooth Waagen<\/b>", - "Der Zeitstart wird abgewartet, bis die Waage mehrere 0-Gewichtsmeldungen ausgibt, wenn \"Waage beim Start des Timers tarieren\" eingestellt ist.", - "", - "Xenia<\/b>", - "Hinzufügen einer Wechseloption für die Verwendung der V1- und V2-API", - "Hinzufügen einer Funktion \"Brew By Weight\" mit automatischer Berechnung, um den Shot beim gewünschten Gewicht zu stoppen", - "", - "Meticulous<\/b>", - "Erste Meticulous-Integration – Danke an das gesamte Meticulous-Team!", - "", - "Einstellungen<\/b>", - "Ein Schwellenwert für die Zählung des ersten Tropfens", - "", - "Sonstiges<\/b>", - "Einige technische Änderungen im Code", - "Kleine Optimierungen", - "[IOS]Anzeige von Popups, wenn der Datenbankzugriff nicht hergestellt werden konnte.", - "", - " Danke <\/b>", - "Ein großes Dankeschön an alle Übersetzer, die enorme Anstrengungen unternehmen, um die App in mehreren Sprachen verfügbar zu machen." - ] - } - }, "CUSTOM_PARAMETERS": "Parameter individualisieren", "CUSTOM_DEFAULT_PARAMETERS": "Vorbelegung", "CUSTOM_MANAGE_PARAMETERS": "Verwalten", @@ -1458,7 +845,7 @@ "LOCATION": "Um Bluetooth-Waagen zu finden, muss der Standort freigegeben werden", "BLUETOOTH": "Um Bluetooth-Waagen zu finden, muss Bluetooth freigegeben werden" }, - "INFORMATION_DESCRIPTION": "Unterstütze Waagen sind: Decent Scale sowie Acaia Scales, Felicita Scales, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti, Smartchef Scale, Blackcoffee.io und Eureka Precisa. Achtung: Falls die Eureka Precisa einen negativen Wert bekommt, stoppt der Timer automatisch" + "INFORMATION_DESCRIPTION": "Unterstütze Waagen sind: Decent Scale sowie Acaia Scales, Felicita Scales, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti, Smartchef Scale, Blackcoffee.io, Bookoo Mini Scale und Eureka Precisa. Achtung: Falls die Eureka Precisa einen negativen Wert bekommt, stoppt der Timer automatisch" }, "QR": { "WRONG_QRCODE_DESCRIPTION": "Falscher QR-Code oder falscher Inhalt", @@ -1561,7 +948,7 @@ "DISCONNECTED_SUCCESSFULLY": "Druckgerät getrennt", "DISCONNECTED_UNPLANNED": "Druckgerät ungeplant getrennt", "STAY_CONNECTED_ON_APP_MINIMIZE": "Druckgerät verbunden lassen bei App minimierung\/inaktivität", - "INFORMATION_DESCRIPTION": "Unterstütze Druckgeräte sind Popsicle, Pressensor, Smart Espresso Profiler", + "INFORMATION_DESCRIPTION": "Unterstütze Druckgeräte sind Popsicle, Pressensor, Smart Espresso Profiler, Bookoo Espresso Monitor", "BLUETOOTH_SCAN_RUNNING": "Druckgeräte werden für 60 Sekunden versucht zu finden, bitte warten", "BLUETOOTH_NOT_ENABLED": "Bluetooth ist nicht aktiviert, bitte aktiviere dies in den Einstellungen", "REQUEST_PERMISSION": { @@ -1835,5 +1222,89 @@ "STARTING_IN": "Beginnt in ... {{time}}", "IOS_DATABASE_ISSUE_TITLE": "ACHTUNG !!!!! - DATENBANKVERBINDUNG VERLOREN", "IOS_DATABASE_ISSUE_DESCRIPTION": "Wir bedauern, Ihnen mitteilen zu müssen, dass die Verbindung zur Datenbank unterbrochen wurde. Dieses Problem ist auf einen ungelösten Fehler im Apple-System zurückzuführen, der außerhalb der Kontrolle von Beanconqueror liegt. Um einen möglichen Datenverlust zu vermeiden, bitten wir Sie, die Beanconqueror-Anwendung sofort zu schließen und erneut zu öffnen.", - "RELOAD_APP": "Jetzt App neu laden" + "RELOAD_APP": "Jetzt App neu laden", + "WATER_TYPE_ADD_CUSTOM": "", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "STARK
unterextrahiert", + "EXTRACTION_CHART_LABEL_STRONG": "STARK
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "STARK
harsch", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "unterextrahiert", + "EXTRACTION_CHART_LABEL_IDEAL": "IDEAL", + "EXTRACTION_CHART_LABEL_HARSH": "harsch", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "SCHWACH
unterextrahiert", + "EXTRACTION_CHART_LABEL_WEAK": "SCHWACH
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "SCHWACH
harsch", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "Text in Sprache", + "TEXT_TO_SPEECH": { + "ACTIVATE": "\"Text in Sprache\" aktivieren", + "BREW_STARTED": "Brühung gestartet", + "BREW_ENDED": "Brühende", + "TIME": "Zeit", + "SPEAK_EVERY_MS": "Jede ausgewählte Millisekunde sprechen", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "Folgende Nummern werden testgesprochen", + "TEST_SPEAK": "Sprachtest starten", + "PITCH": "Pitch", + "RATE": "Rate" + }, + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "Haptisches Feedback", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "Haptisches Feedback aktivieren", + "BREW_STARTED": "Vibrieren beim Brühbeginn", + "BREW_STOPPED": "Vibrieren bei Brühstopp", + "TARE": "Vibration beim Tarieren der Waage" + }, + "CONNECTED": "Verbunden", + "DISCONNECTED": "Getrennt", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "Dies ist eine experimentelle Funktion", + "SHOW_HOURS": "Stunden anzeigen", + "SHOW_MINUTES": "Minuten anzeigen", + "BEANS_UNARCHIVE": "Archivierung aufheben", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "Bean wurde dearchiviert", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "Version 7.3.0: Das ist neu", + "DESCRIPTION": [ + "Wasser - Third Wave Water hinzugefügt<\/b>", + "Die beliebten Third Wave Wasser Profile sind nun in der Wasserauswahl verfügbar", + "", + "Bluetooth Waagen<\/b>", + "Unterstützung der Bookoo Mini Scale – Danke an Yannick!", + "", + "Druck Geräte", + "Unterstützung des Bookoo-Drucksensors – Danke an Yannick!", + "Bitte beachte, dass der eigentliche Schwellwert-Autostart derzeit nicht unterstützt wird.", + "", + " Haptische Engine <\/b>", + "Vibration beim Beginn der Zubereitung - Experimentelle Funktion - Aktivierung in den Einstellungen", + "", + "[IOS] Text in Sprache<\/b>", + "[IOS] Text-to-Speech aktivieren und alle Gewichtswerte der Waage sowie den Brühtimer aussprechen - Experimentelle Funktion - Aktivierung in den Einstellungen", + "", + "Visualizer<\/b>", + "Extraktionsertrag an Visualizer senden", + "", + "Bilder<\/b>", + "Kann jetzt nach links oder rechts sortiert werden", + "", + "Brühen", + "Beim Öffnen des TImers geht der Fokus direkt auf die Sekunden", + "Stunden oder Minuten im Timer-Overlay ausblenden", + "Verbindungsstatus in der Symbolleiste für Xenia oder Meticulous anzeigen.", + "Behebung des Problems, dass man im Bearbeitungsmodus einen Brühvorgang nicht speichern konnten, wenn der Abschnitt „Während der Zubereitung“ nicht sichtbar war", + "", + "Bohnen<\/b>", + "Dearchivieren einer Bohne in der Aktionsliste", + "", + "Sonstiges<\/b>", + "Einige technische Änderungen im Code", + "Kleine Optimierungen" + ] + } + } } \ No newline at end of file diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 928755a97..32a3db659 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -471,619 +471,6 @@ "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "Save consumed caffeine amount", "UPDATE_TITLE": "Whats new?", "NEXT": "Next", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "Version 5.0: What's new?", - "DESCRIPTION": [ - "New layout, new icons, new colors, new logo", - "New preparation methods", - "Preparations now can be categorized (percolation, espresso, full immersion)", - "Preparation can now inherit tools (e.g. different filters)", - "Preparation parameter can now be customized, define your own workflow for each preparation", - "Added more editable bean information, different sorts can now be added", - "Amount of water field is available for percolation\/full immersion", - "Where did you brew your best coffee? Active coordinate saving in settings", - "Activate fast repeat to add brews instant", - "Added update screen to show the latest changes", - "Question added to rate the app after 25 uses", - "Added sorting for beans", - "Added search panel for brews\/beans", - "Cupping chart is added to brew details", - "Left over beans weight added on homescreen", - "Added typeahead for roasters", - "Rating moved to stars instead of icons" - ] - }, - "5.1.0": { - "TITLE": "Version 5.1: What's new?", - "DESCRIPTION": [ - "New timepicker for brews", - "Roasting date can now be again selected on iOS", - "Images can be choosen again on iPad", - "TDS calculation is now again visible on beverage quantity", - "Safe zones added for iOS-devices" - ] - }, - "5.2.0": { - "TITLE": "Version 5.2: What's new?", - "DESCRIPTION": [ - "Brews:<\/b>", - "Brew timer continues in the background", - "Brews can be favored", - "Screen for adding and editing a brew looks identical", - "Display can stay active during brewing (can be activated in the settings menu)", - "List of recent brews now also shows archived brews", - "", - "Beans:<\/b>", - "Bean photos are shown in the overview", - "Beans can be rated", - "", - "Interactions:<\/b>", - "Long press on a card leads to the edit view", - "Detail view can be accessed via click on the card", - "Github \/ Facebook \/ Instagram accounts linked", - "", - "Bugfixes:<\/b>", - "Bean information have been copied incorrect", - "Brew amount was activated by default for new users", - "", - "Other:<\/b>", - "Apple Healthkit integration (can be activated in the settings menu)", - "Cleanups", - "Layout changes", - "Extension of statistics", - "Startup check revised", - "Support for different card sized for brews and beans" - ] - }, - "5.3.1": { - "TITLE": "Version 5.3: What's new?", - "DESCRIPTION": [ - "Brew methods:<\/b>", - "Changes to the card view", - "Custom images can be attached in the edit screen", - "Brew tools will be saved in edit screen, even when '+' is not pressed", - "", - "Grinders:<\/b>", - "Custom images can be attached in the edit screen", - "", - "Brews:<\/b>", - "Parameter 'Attachments' renamed in 'Attachments \/ Photos'", - "", - "Dashboard:<\/b>", - "If bean amount is less then 1000g, the number will be written as a whole", - "", - "Bug fixes:<\/b>", - "Editing via a long-press, does not change information any more", - "Information on the dashboard are updated after made changes", - "Multiple variety information with blends can be saved again", - "Added startup error message if app-data is missing" - ] - }, - "5.4.0": { - "TITLE": "Version 5.4: What's new?", - "DESCRIPTION": [ - "Roasting section:<\/b>", - "Manage all of your green beans and roasters (can be activated in the settings menu)", - "Save all of your green beans and transfer them into roasted onces", - "Add your roaster and connect them with your different kind of roasted beans", - "", - "Website:<\/b>", - "Go live of our new website! -> https:\/\/beanconqueror.com", - "", - "Support us:<\/b>", - "You've always wanted to support Beanconqueror? We've added a new 'Buy me a coffee' connection", - "", - "iOS - iCloud:<\/b>", - "The first step into iCloud support was made. At the very first start all of your existing app data will be moved into the support iCloud directory.", - "You have to activate this option in the iCloud Settings first in order to save Beanconqueror on iCloud", - "", - "Android\/iOS - Automated file-export:<\/b>", - "Automated Beanconqueror.json-File is saved for a maximum of 7 days, after that they will be automated deleted again", - "Android: Download\/Beanconqueror_export\/Beanconqueror_automatic_export_DAY.json", - "iOS: Files\/Download\/Beanconqueror_export\/Beanconqueror_automatic_export_FILE.json", - "", - "Settings:<\/b>", - "Excel - Export all of your data to excel to work with it even further", - "Define your own image quality between 50% to 100% (default 100%)", - "Brew rating - Define how much stars\/points you'd like to set for each brew. Minimum 5, maximum 100", - "", - "New tracking:<\/b>", - "We've changed to our open source service Matomo, which will be hosted on our own server", - "Removed Google Analytics \/ Firebase", - "", - "Bug fixes:<\/b>", - "Apple Healthkit - Settings were not saved", - "Sometimes brew rating stars weren't filled (Brew add\/edit)", - "Edit via long tap, screen wasn't scrollable", - "Import of bigger files on iOS led to misconduct", - "Delete procedure of beans \/ preparations or mills were not consistent and lead to graphical issues", - "Wrong calculation of beverage quantity in statistics and list views", - "", - "Share:<\/b>", - "Share your brews and beans with all coffee lovers!", - "", - "Other:<\/b>", - "Clean ups", - "Layout changes", - "Extension of statistics", - "Startup check revised, added please wait window", - "Some label changes", - "Changed data access \/ order inside app to reduce problems" - ] - }, - "6.0.0": { - "TITLE": "Version 6.0: What's new?", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Support of the first bluetooth scale - Decent-Scale - Big thanks to Decent Espresso", - "Support of Acaia Lunar", - "", - "Aroma cupping<\/b>", - "Cup each brew with the different aromatics and flavors", - "", - "Water section<\/b>", - "Add your own water, activate this section in the settings", - "", - "Support of more languages<\/b>", - "Support for spanish - Big thanks to Frank!", - "", - "Improvements<\/b>", - "Support of long press '+' on brews", - "Added new brew parameters", - "Support of different currencies", - "Edit brew while in detail view", - "Choose multiple images at once", - "Support of brix to TDS conversion", - "If bean package is empty, you'll be asked if you want to archive the package on the last brew", - "Reset of roastdate supported", - "Support of detail views on beans, grinders and preparation methods", - "Added brew ratio (g\/l)", - "", - "iOS<\/b>", - "Support of safe areas", - "", - "Bug fixes<\/b>", - "Apple Healthkit - Decaffeinated coffee was saved", - "Copy of beans led to misconduct", - "Added brew time to excel export", - "Small bug fixes", - "", - "Others<\/b>", - "Beans, grinders and preparation methods are now sorted alphabetic in dropdowns" - ] - }, - "6.1.0": { - "TITLE": "Version 6.1: What's new?", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Scan your coffee bags! All coffee information are directly inserted from the roastery.", - "", - "Bluetooth scales<\/b>", - "Support of Acaia Pearl 2021 - Thanks to Micah and Mike", - "Support of Acaia Lunar 2021 - Thanks to Micah and Mike", - "Support of Acaia Pyxis - Thanks to Micah and Mike", - "Support of Hiroia Jimmy - Thanks to Silas", - "Support of Felicita Arc - Thanks to Herman", - "Care: Acaia Pearl < 2021 is not supported right now", - "Weightinformation of bluetooth scale can now be used on the beans page", - "Weight changes are now visible without starting a brew via timer", - "", - "Brew overview<\/b>", - "Customize your visible brew parameters in the overview in general or for each preparation method", - "Preparation images are now visible in the listview", - "", - "Brew graph<\/b>", - "Rework of brew graph to a more smoother solution", - "Brew graph now can be maximized", - "Brew graph can now be zoomed in the brew-detail view aswell as exported", - "Average flow quantity is now displayed", - "", - "Beans<\/b>", - "Added fields: Buy date, FOB-Price, Purchasing price", - "Beans can now be favorited and filtered", - "If a bean gets archived, you can now rate the package aswell", - "Pressing '+' you can now choose to add or scan a new package", - "Long press '+' to directly add a new bean", - "", - "Preparation methods<\/b>", - "Preparation methods can now be repeated with all settings", - "More preparation methods are available - Thanks to Nicola", - "Selecting a preparation method also displays the image", - "", - "Settings<\/b>", - "Ratings can now be stepped (1, 0.75, 0.5, 0.25, 0.1)", - "Bluetooth scale - Define if the scale should be set to weight zero when starting a new brew, or starting the timer", - "Bluetooth scale - Define if you want to ignore anomalies or negative values - if yes, a live graph won't be possible", - "Choose now, if you want to see archived brews on the home page", - "Export also now exports the raw data of the saved bluetooth values", - "", - "Improvements<\/b>", - "Delete of preparation method tools now won't delete brews anymore", - "Preparation method tools now can be edited and archived", - "", - "Bug fixes:<\/b>", - "Found more issues which could lead to a data loss", - "Small bug fixes", - "", - "Others:<\/b>", - "Updating to Ionic-Framework 6, therefore some small visual changes takes place" - ] - }, - "6.1.3": { - "TITLE": "Version 6.1.3: What's new?", - "DESCRIPTION": [ - "Android - Attention<\/b>", - "In first please: Sorry!", - "Sadly the database was resetted from going form APK to AAB format on Android Play Store, and your app will propably start without data.", - "I could not debug or control this situation, while development everything worked as expected", - "If your app started blank, please go into settings and import the file below 'Download\/Beanconqueror_export\/Beanconqueror_automatic_export_*.json' * stands for the latest timestamp, the backup.", - "All datas should then be back as normal, if not please write me an e-mail: info@beanconqueror.com." - ] - }, - "6.1.5": { - "TITLE": "Version 6.1.5: What's new?", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Reload beans which where scanned via qr-codes", - "", - "Brew graph<\/b>", - "Water flow is calculated now in realtime", - "", - "Beans<\/b>", - "Search beans now in selection", - "", - "Bug fixes<\/b>", - "After taking a picture, the loading spinner didn't disappear", - "Smaller bugfixes" - ] - }, - "6.2.0": { - "TITLE": "Version 6.2.0: Thats new", - "DESCRIPTION": [ - "Pressure devices<\/b>", - "Support of 'Do it yourself' Popsicle - Sensor - Thanks to Mike and Shay", - "Autostart timer on a specific pressure - editable in settings", - "Press of pressure gauge, will reset pressure to 0", - "Display name of pressure device and mac-address on connect", - "", - "Bluetooth scales<\/b>", - "Support of Eureka Precisa - Thanks to Mimoja", - "Define the behavior of the bluetooth scale on a new brew - editable in settings", - "Define which graphs should be displayed on filter or espresso - editable in settings", - "Sequential processing of bluetooth commands to reduce issues", - "Display name of bluetooth scale and mac-address on connect", - "", - "Brews<\/b>", - "Supports now milliseconds - Activate in settings", - "Filtersystem expanded, search for roast type and roastery", - "You can reconnect your bluetooth scale or pressure device on the brew add\/edit page", - "", - "Beans<\/b>", - "Share your bean (without server needed) - Thanks to Mike", - "Show all brews to your bean", - "Support bean rating like for brews - editable in settings", - "", - "More languages<\/b>", - "Support of Turkish - Thanks to Halil Portakal", - "Support of Chinese - Thanks to Jiageng", - "", - "Mills<\/b>", - "Display of the last used grind setting, aswell as the last used bean", - "", - "Improvements<\/b>", - "Error message when a bean is scanned, which has not been approved yet", - "The edit of the brew-date is not activated by default", - "", - "Others<\/b>", - "Typos fixed", - "Fixed an issue that you didn't see the star-rating even with normal settings", - "Older brew graphics can now be exported again", - "Update to Ionic 6.3.0", - "Smaller bug fixes" - ] - }, - "6.3.0": { - "TITLE": "Version 6.3.0: Thats new", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Define how long shall be waited until the next bluetooth command", - "", - "Brews<\/b>", - "Reset the Brewtime dates", - "If Bluetooth-Scale connected, the last brew weight will be displayed in the tile", - "Bigger buttons on the maximized brew graph", - "Choose excel or json by downloading the brew data", - "Bean pictures can now be displayed, instead of preparation method icons\/pictures -> Activate in the settings", - "", - "Beans<\/b>", - "Beans can now be searched by their varieties", - "", - "Mills<\/b>", - "Displaying notes inside the list and detail view", - "", - "Improvements<\/b>", - "Choose how many milliseconds shall be displayed (Entered values still need to be 3 decimal places)", - "Added donation buttons", - "Text Areas are now scrollable", - "Brewtime at statistics are now formatted", - "Notification popups appear now on top and can be closed by X", - "Disabled detail parameter are active now, e.g. can now be the Grinder be hidden", - "Analytics can be deactivated or activated", - "", - "Others:<\/b>", - "Typos fixed", - "Update to Ionic 6.4.0", - "Smaller bug fixes" - ] - }, - "6.4.0": { - "TITLE": "Version 6.4.0: What's new?", - "DESCRIPTION": [ - "Bluetooth thermometers<\/b>", - "Support for ETI Ltd thermometers (ThermaQ Blue, BlueTherm, etc) - Sensors - Thanks to Myles", - "Autostart timer on a specific temperature - editable in settings", - "", - "Bluetooth scales<\/b>", - "Support of Skale 2", - "If a bluetooth scale wants to reset a brew, the user will get an approval dialogue", - "", - "Visualizer<\/b>", - "Upload your recorded brews with used bluetooth-devices manually to visualizer.coffee - Thanks to Miha for your support", - "(Step 2: Automatic upload)", - "", - "Bean<\/b>", - "Bean parameters and list parameters can now be individualized and changed", - "Beans can now be filtered by roast degree", - "Bean page can now be set as starting page - see settings", - "Type ahead fields for specific fields added, e.g. Variety", - "Bean variety information can now be searched with free text", - "", - "Brews<\/b>", - "New button, where a preparation method can be chosen directly", - "Individualize which parameters shall be preset when choosing 'Repeat' - Default: all", - "Added a filter for all brews which have bluetooth device data attached", - "Re-work of live brew graphic", - "Added brew-ratio calculator for brew add\/edit to enable faster calculation", - "Pressing 'Save' will stop the timer", - "", - "Discord<\/b>", - "Join the Beanconqueror Discord Server to discuss, report bugs, as questions or give feedback", - "", - "Android<\/b>", - "Sharing functionality is working again", - "Export and import your brew graphs", - "", - "Improvements<\/b>", - "Display the number of entries that exist when using filtering", - "On brew add\/edit, the save or cancel button will be hidden as long as the keyboard is shown", - "Numeric keyboard for the grind size field - activate in settings", - "", - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.4.10": { - "TITLE": "Version 6.4.1: What's new?", - "DESCRIPTION": [ - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.4.20": { - "TITLE": "Version 6.4.2: What's new?", - "DESCRIPTION": [ - "Fixing crash on startup", - "Fixing recycle when a bluetooth scale could not connect" - ] - }, - "6.5.0": { - "TITLE": "Version 6.5.0: What's new?", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Support of DiFluid Microbalance aswell as Smart Chef Scale - Thanks to Yannick!", - "For Espresso: Activate in Settings, allow a brew to be automatically stopped when no flow rate is detected", - "Added warning popup, when Beanconqueror doesn't receive any weight updates from a scale", - "", - "Beans<\/b>", - "Share beans as an image now as well as a URL", - "", - "Xenia<\/b>", - "The pressure and temperature of a shot are now recorded as well", - "", - "Brews<\/b>", - "If a brew is stopped, the brew graph is now fully displayed", - "", - "Export\/Import<\/b>", - "Instead of a .json file we're now using .zip files, for data import and export", - "Please make sure to go to settings and do a one-time safety backup, combined with the already existing automatic backup to ensure data safety", - "", - "Improvements<\/b>", - "Small improvements", - "", - "Others<\/b>", - "Small bug fixes" - ] - }, - "6.5.1": { - "TITLE": "Version 6.5.1: What's new?", - "DESCRIPTION": [ - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.6.0": { - "TITLE": "Version 6.6.0: What's new?", - "DESCRIPTION": [ - "Refractometer<\/b>", - "Support of DiFluid R2- Thanks to Yannick!", - "", - "Bluetooth scales<\/b>", - "Support of Blackcoffee.io - Thanks to Yannick!", - "Tweaking the flow-rate for pour scales", - "", - "Brews<\/b>", - "Mark a brew for one bean as 'best brew' - Activatable in settings", - "Copy your notes in the detailview now", - "Filter your brews by the used profiles", - "Rate your brew directly by the list menu", - "Download the visualizer file now also in the detail view", - "", - "Xenia<\/b>", - "Script executes are now written into the notes", - "Setting the brew temperature of the machine when the brew starts", - "", - "Improvements<\/b>", - "Small improvements", - "", - "Others<\/b>", - "Small bug fixes" - ] - }, - "6.6.1": { - "TITLE": "Version 6.6.1: What's new?", - "DESCRIPTION": [ - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.6.2": { - "TITLE": "Version 6.6.2: What's new", - "DESCRIPTION": [ - "[ANDROID]Android 13 - Filestorage permissions<\/b>", - "[ANDROID]Due to changes in the file system permissions in Android, the access paths for how files are backed up and imported had to be revised. In addition, camera and image access no longer worked on Android 13 devices and got fixed with this update.", - "[ANDROID]Due to these changes, the minimum requirement for this app also had to be raised to Android 7.0.", - "[ANDROID]You can find out how Import\/Export works now here: https:\/\/beanconqueror.com\/faq", - "", - "[IOS]iOS - Updated libraries<\/b>", - "[IOS]Due to library changes in cordova, this is a release to match all these :)" - ] - }, - "7.0.0": { - "TITLE": "Version 7.00: What's new", - "DESCRIPTION": [ - "Bluetooth Scale Mode<\/b>", - "Start the timer on the first detected change in weight - Activatable in the settings (new button visible)", - "Ignore the current transmitted weight - e.g., for swirls, stirs, or removing weight without intentional graph spikes - Activatable in the settings (new button visible)", - "", - "Bluetooth Scales<\/b>", - "Support for a Bluetooth-No-Name scale", - "When connecting a DiFluid Microbalance or Felicita scale, the command delay is set directly", - "", - "Graph Area<\/b>", - "Activate the graph area in the settings", - "Set a brew graph for a new brew to follow it", - "Graphs can come from a brew or from the individual graph area", - "Upload your own graph - Export a .JSON file from your brews", - "", - "Visualizer<\/b>", - "Automatically upload each new brew with a connected graph to Visualizer - Activatable in the settings", - "Manually upload all brews to Visualizer if needed", - "Thanks to Miha for the support!", - "", - "Brews<\/b>", - "Repeat a brew from the detail view", - "First-drop can now be activated for a preparation method, even if it is not an espresso method (e.g., Pulsar)", - "Display of brew rate with a connected scale in the maximized view", - "Last brews are now sorted alphabetically, and the last used date is displayed", - "Real-time flow with a connected scale now shows values under 1g\/s for espresso", - "", - "Beans<\/b>", - "Repeat the last brew or the best brew from the beans view card", - "", - "Preparation method<\/b>", - "Preparation tools are now sorted alphabetically and can be filtered", - "Last usage of the preparation methodology is now displayed when selected", - "", - "Grinders<\/b>", - "Last grind size and last usage are now visible when selecting a grinder", - "", - "Xenia<\/b>", - "Bug fix: Deactivated scripts are no longer executed", - "", - "Settings<\/b>", - "Display of a security prompt if you have made changes to a brew or a bean - Activatable in the settings", - "Now set your individual start X- and Y-Axis for brews with bluetooth devices", - "", - "Ionic 7<\/b>", - "Update from Ionic 6 to Ionic 7", - "[IOS]Minimum version for iOS is now iOS 14", - "[ANDROID]Minimum version for Android is now Android 7.1", - "", - "Lokalise<\/b>", - "Use of Lokalise for all translations - Many thanks to Yannick", - "Want to translate too? With Localize, it's now easy. Contact us: info@beanconqueror.com", - "", - "Other<\/b>", - "Minor bug fixes", - "" - ] - }, - "7.1.0": { - "TITLE": "Version 7.1.0: What's new", - "DESCRIPTION": [ - "More languages<\/b>", - "Support of French - Thanks to Yannick", - "Support of Indonesian - Thanks to Bondan, Ganjar", - "", - "Bluetooth Scales<\/b>", - "Supporting a new DIY-Bluetooth-Scale (Rust & Python Firmware)", - "Support of DiFluid Microbalance Ti", - "Improving the flow calculation for all scales", - "", - "Graph Area<\/b>", - "Added more information to the choosing reference card", - "", - "Brews<\/b>", - "Bluetooth-Scales - Added a taring button to the top of the toolbar", - "", - "Beans<\/b>", - "Support of copying a variety information", - "", - "Water section<\/b>", - "Added potassium parameter", - "", - "Grinders<\/b>", - "RPM parameter now visible in the list view and selection view", - "", - "Settings<\/b>", - "Define your own time axis for filter or espresso with connected bluetooth devices", - "Adding different date formats to also match American format", - "", - "Other<\/b>", - "Minor bug fixes" - ] - }, - "7.2.0": { - "TITLE": "Version 7.2.0: What's new", - "DESCRIPTION": [ - "More languages<\/b>", - "Support of Italian - Thanks to Cancercookie", - "Support of Polish - Thanks to MarcinSachs", - "", - "Bluetooth Scales<\/b>", - "Time start will wait, until the scale is reporting several 0 weight reports, when you set 'Tare scale when starting timer'", - "", - "Xenia<\/b>", - "Adding toggle for V1 and V2 Api usage", - "Adding a Brew By Weight Feature with automatic calculcation to stop the shot on wished weight", - "", - "Meticulous<\/b>", - "First Meticulous integration - Thanks to the whole Meticulous Team!", - "", - "Settings<\/b>", - "Define a threshold for the first drip to count", - "", - "Other<\/b>", - "Some technical changes in the code", - "Small tweaks", - "[IOS]Showing popups if the database access could not be established.", - "", - "Thanks<\/b>", - "A big thank you to all translators who are putting in tremendous effort to make the app available in multiple languages." - ] - } - }, "CUSTOM_PARAMETERS": "Customize parameters", "CUSTOM_DEFAULT_PARAMETERS": "Default", "CUSTOM_MANAGE_PARAMETERS": "Manage", @@ -1458,7 +845,7 @@ "LOCATION": "To find bluetooth scales, the app needs access to the location.", "BLUETOOTH": "To find bluetooth scales, the app needs access to bluetooth" }, - "INFORMATION_DESCRIPTION": "Supported scales are: Decent Scale, Acaia, Felicita, Hiroia Jimmy, Skale 2, DiFluid Microbalance, Smartchef Scale, Blackcoffee.io and Eureka Precisa. Note: If the Eureka Precisa recieves a negative value, the timer stops" + "INFORMATION_DESCRIPTION": "Supported scales are: Decent Scale, Acaia, Felicita, Hiroia Jimmy, Skale 2, DiFluid Microbalance, Smartchef Scale, Blackcoffee.io, Bookoo Mini Scale and Eureka Precisa. Note: If the Eureka Precisa recieves a negative value, the timer stops" }, "QR": { "WRONG_QRCODE_DESCRIPTION": "Invalid QR code or unrecognised content", @@ -1561,7 +948,7 @@ "DISCONNECTED_SUCCESSFULLY": "Pressure device disconnected", "DISCONNECTED_UNPLANNED": "Pressure device disconnected unexpectedly", "STAY_CONNECTED_ON_APP_MINIMIZE": "Keep pressure device connected even when app is in the background", - "INFORMATION_DESCRIPTION": "Supported devices are: Popsicle, Pressensor, Smart Espresso Profiler", + "INFORMATION_DESCRIPTION": "Supported devices are: Popsicle, Pressensor, Smart Espresso Profiler, Bookoo Espresso Monitor", "BLUETOOTH_SCAN_RUNNING": "Searching for pressure device for up to 60s", "BLUETOOTH_NOT_ENABLED": "Bluetooth not activated, please activate to work properly", "REQUEST_PERMISSION": { @@ -1835,5 +1222,89 @@ "STARTING_IN": "Starting in ... {{time}}", "IOS_DATABASE_ISSUE_TITLE": "ATTENTION !!!!! - DATABASE CONNECTION LOST", "IOS_DATABASE_ISSUE_DESCRIPTION": "We regret to inform you that we have encountered a loss of connection to the Database. This issue is a result of an unresolved bug in Apple's system, beyond the control of Beanconqueror. To prevent any potential data loss, we kindly ask you to immediately force-close the Beanconqueror application and reopen it.", - "RELOAD_APP": "Reload app now" + "RELOAD_APP": "Reload app now", + "WATER_TYPE_ADD_CUSTOM": "Custom water", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "Add water", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "STRONG
underextracted", + "EXTRACTION_CHART_LABEL_STRONG": "STRONG
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "STRONG
harsh", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "underextracted", + "EXTRACTION_CHART_LABEL_IDEAL": "IDEAL", + "EXTRACTION_CHART_LABEL_HARSH": "harsh", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "WEAK
underextracted", + "EXTRACTION_CHART_LABEL_WEAK": "WEAK
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "WEAK
harsh", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "Text to speech", + "TEXT_TO_SPEECH": { + "ACTIVATE": "Activate Text to speech", + "BREW_STARTED": "Brew started", + "BREW_ENDED": "Brew end", + "TIME": "Time", + "SPEAK_EVERY_MS": "Speak every selected millisecond", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "Following numbers will be test spoken", + "TEST_SPEAK": "Start test speak", + "PITCH": "Pitch", + "RATE": "Rate" + }, + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "Haptic feedback", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "Activate haptic feedback", + "BREW_STARTED": "Vibrate on brew start", + "BREW_STOPPED": "Vibrate on brew stop", + "TARE": "Vibrate on scale tare" + }, + "CONNECTED": "Connected", + "DISCONNECTED": "Disconnected", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "This is an experimental feature", + "SHOW_HOURS": "Show hours", + "SHOW_MINUTES": "Show minutes", + "BEANS_UNARCHIVE": "Unarchive", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "Bean has been unarchived", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "Version 7.3.0: What's new", + "DESCRIPTION": [ + "Water Section - Added Third Wave Water<\/b>", + "Find all your loved Third Wave Water Profiles in the Water selection", + "", + "Bluetooth Scales<\/b>", + "Support of Bookoo-Scale - Thanks to Yannick!", + "", + "Pressure Sensor<\/b>", + "Support of Bookoo-Pressure Sensor - Thanks to Yannick!", + "Please note that the actual threshold-autostart is currently not supported.", + "", + "Haptic Engine<\/b>", + "Let the phone vibrate when you start a brew - Experimental feature - Enable in settings", + "", + "[IOS]Text to Speech<\/b>", + "[IOS]Enable text to speech and speak out all scale weight values aswell as the brew timer - Experimental feature - Enable in settings", + "", + "Visualizer<\/b>", + "Send Extraction Yield to Visualizer", + "", + "Images<\/b>", + "Can now be sorted to left or right", + "", + "Brew<\/b>", + "When opening the timer, focus seconds directly", + "Hide hours or minutes in the timer overlay", + "Show icon if the portafilter Xenia or Meticulous is connected or disconnected in the toolbar", + "Fixing that you could not save a brew when in edit mode when the while brewing section was not visible", + "", + "Bean<\/b>", + "Unarchive a bean in the action list", + "", + "Other<\/b>", + "Some technical changes in the code", + "Small tweaks" + ] + } + } } \ No newline at end of file diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json index 09e9b2e56..bfb208896 100644 --- a/src/assets/i18n/es.json +++ b/src/assets/i18n/es.json @@ -471,619 +471,6 @@ "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "Guarda la cantidad de cafeína consumida", "UPDATE_TITLE": "Novedades", "NEXT": "Siguiente", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "Versión 5.0: Novedades", - "DESCRIPTION": [ - "Nuevo diseño, nuevos iconos, nuevos colores, nuevo logotipo", - "Nuevos métodos de preparación", - "Los métodos de preparación ahora se pueden clasificar (percolación, espresso, inmersión completa)", - "Los métodos de preparación ahora se pueden almacenar con herramientas (filtros, coladores, etc.)", - "Los métodos de preparación ahora pueden tener su propio flujo de trabajo", - "Se puede almacenar más información sobre el grano, así como diferentes varietales de granos", - "Campo de referencia - la cantidad de agua solo está disponible para percolación\/inmersión total", - "¿Dónde sacaste el último café? Habilita esto en la configuración", - "Nueva opción: Activar 'repetición rápida de preparación' en la configuración", - "Actualizar información al iniciar la aplicación", - "Consulta agregada para calificar la aplicación - después de 25 usos", - "Los granos ahora se pueden clasificar", - "Las preparaciones y granos ahora se pueden buscar", - "El radar de catas lleno ahora se muestra en los detalles de preparación", - "La cantidad restante de granos ahora se muestra en la página de inicio", - "Ahora se proponen tostadores para los granos", - "Cambia la puntuación de las preparaciones a estrellas" - ] - }, - "5.1.0": { - "TITLE": "Versión 5.1: Novedades", - "DESCRIPTION": [ - "Nueva selección de tiempo para las preparaciones", - "En iOS se puede seleccionar nuevamente la fecha de tueste de los granos", - "En el iPad se pueden seleccionar nuevamente las imágenes", - "El cálculo de TDS es nuevamente visible en las preparaciones", - "Zonas seguras agregadas para dispositivos iOS" - ] - }, - "5.2.0": { - "TITLE": "Versión 5.2: Novedades", - "DESCRIPTION": [ - "Preparaciones:<\/b>", - "Temporizador de preparaciones continúa ejecutándose en segundo plano", - "Se pueden favorecer preparaciones", - "La página para agregar y editar preparaciones se ve idéntica", - "La pantalla se puede mantener activa durante una extracción (se puede activar en la configuración)", - "La lista de preparaciones recientes ahora también muestra preparaciones archivadas", - "", - "Granos:<\/b>", - "En la descripción general se muestran las imágenes de granos", - "Los granos pueden ser calificados", - "", - "Interacciones:<\/b>", - "La pulsación prolongada en los iconos conduce a la vista de edición", - "Las vistas detalladas ahora se admiten con un clic directo en el icono", - "Páginas web de Github \/ Facebook \/ Instagram vinculados", - "", - "Correcciones:<\/b>", - "La información de granos se copiaba incorrectamente", - "La cantidad de preparaciones se habilitaba de forma predeterminada para los nuevos usuarios", - "", - "Otros:<\/b>", - "Integración de Apple HealthKit (activable en configuración)", - "Limpieza", - "Cambios de diseño", - "Extensión de estadísticas", - "Rutina de verificación de inicio revisada", - "Soporte para iconos de diferentes tamaños para preparaciones y granos" - ] - }, - "5.3.1": { - "TITLE": "Versión 5.3: Novedades", - "DESCRIPTION": [ - "Métodos de preparación:<\/b>", - "Cambio de iconos", - "Las imágenes se pueden almacenar en la edición", - "La herramienta de preparación se guarda en la vista de edición, incluso si no se ha presionado '+'", - "", - "Molinos:<\/b>", - "Las imágenes se pueden almacenar en la edición", - "", - "Preparaciones:<\/b>", - "Parámetro 'Archivos adjuntos' cambiado a 'Archivos adjuntos \/ Fotos'", - "", - "Página de información general:<\/b>", - "Para menos de 1000 g de granos, el número ahora se anuncia", - "", - "Correcciones:<\/b>", - "La edición mediante pulsación prolongada no cambiaba la información en la interfaz", - "La información en la página de resumen se actualiza en caso de cambios", - "La información de múltiples varietales para mezclas (blends) se puede almacenar de nuevo", - "Se ha agregado un mensaje de error en el inicio de la aplicación si faltan datos de la aplicación" - ] - }, - "5.4.0": { - "TITLE": "Versión 5.4: Novedades", - "DESCRIPTION": [ - "Sección de tueste:<\/b>", - "Administra todos tus granos verdes y tostadoras (se puede activar en el menú de configuración)", - "Guarda todos tus granos verdes y transfiérelos a tostados", - "Agrega tu tostadora y conéctala con tus diferentes tipos de granos tostados", - "", - "Página web:<\/b>", - "¡Vaya en directo a nuestra nueva página web! -> https:\/\/beanconqueror.com", - "", - "Apóyanos:<\/b>", - "¿Siempre has querido apoyar a Beanconqueror? Hemos agregado un nuevo vínculo 'Cómprame un café'", - "", - "iOS - iCloud:<\/b>", - "Se dio el primer paso hacia la compatibilidad con iCloud. Al principio, todos los datos de su aplicación existente se moverán al directorio de soporte de iCloud.", - "Primero debe activar esta opción en la Configuración de iCloud para guardar Beanconqueror en iCloud", - "", - "Android\/iOS - Exportación de archivos automatizada:<\/b>", - "El archivo Beanconqueror.json se guarda durante un máximo de 7 días, después de lo cual se eliminará automáticamente de nuevo.", - "Android: Descargas \/ Beanconqueror_export \/ Beanconqueror_automatic_export_DAY.json", - "iOS: Archivos \/ Descargas \/ Beanconqueror_export \/ Beanconqueror_automatic_export_FILE.json", - "", - "Ajustes:<\/b>", - "Excel - Exporta todos tus datos a Excel para trabajar con ellos aún más", - "Define tu propia calidad de imagen entre 50% y 100% (predeterminado 100%)", - "Clasificación de preparación: define la cantidad de estrellas \/ puntos que te gustaría establecer para cada preparación. Mínimo 5, máximo 100", - "", - "Nuevo seguimiento:<\/b>", - "Hemos cambiado a nuestro servicio de código abierto Matomo, que estará alojado en nuestro propio servidor.", - "Se eliminó Google Analytics \/ Firebase", - "", - "Corrección de errores:<\/b>", - "Apple HealthKit - la configuración no se guardaba", - "A veces, las estrellas de calificación de preparación no se llenaban (preparación agregar \/ editar)", - "Editar con un toque largo, la pantalla no se podía desplazar", - "La importación de archivos grandes en iOS provocaba una mala conducta", - "El procedimiento de eliminación de granos\/ preparaciones o molinos no era consistente y daba lugar a problemas gráficos", - "Cálculo incorrecto de la cantidad de bebida en estadísticas y vistas de lista", - "", - "Compartir:<\/b>", - "¡Comparte tus preparaciones y granos con todos los amantes del café!", - "", - "Otros:<\/b>", - "Limpiezas", - "Cambios de diseño", - "Ampliación de estadísticas", - "Verificación de inicio revisada, agregada ventana de espera", - "Algunos cambios de etiqueta", - "Se modificó el acceso \/ orden a los datos dentro de la aplicación para reducir los problemas" - ] - }, - "6.0.0": { - "TITLE": "Versión 6.0: Novedades", - "DESCRIPTION": [ - "Básculas Bluetooth<\/b>", - "Compatibilidad con la primera báscula Bluetooth - Decent-Scale - Muchas gracias a Decent Espresso", - "Soporte para la Acaia Lunar", - "", - "Degustación de aromas<\/b>", - "Prueba cada bebida con sus respectivos aromas.", - "", - "Sección de agua<\/b>", - "Agrega tu propia agua, activa esta sección en la configuración", - "", - "Más idiomas<\/b>", - "Soporte para español - ¡Gracias a Frank!", - "", - "Mejoras<\/b>", - "Ahora repite más rápido la preparación con los métodos, presiona prolongadamente '+'", - "Nuevos parámetros agregados", - "Soporte de diferentes monedas", - "Edición de la preparación en la vista detallada.", - "Selección múltiple de imágenes", - "Soporte para conversión de Brix a TDS", - "Consulta sobre paquete de café consumido en la última preparación", - "La fecha de tueste de los granos ahora se puede restablecer", - "Soporte de vistas detalladas para granos, molinos y métodos de preparación en la vista de preparación", - "Proporción de preparación g \/ l añadida", - "", - "iOS<\/b>", - "Soporte para distancias de seguridad", - "", - "Corrección de errores:<\/b>", - "Apple HealthKit - el café descafeinado se guarda", - "Copiar granos conducía a un error", - "Tiempo de preparación agregado en la exportación de Excel", - "Correcciones de errores menores", - "", - "Otros:<\/b>", - "Los granos\/ molinos \/ métodos de preparación ahora se ordenan alfabéticamente en los campos de selección" - ] - }, - "6.1.0": { - "TITLE": "Versión 6.1: Novedades", - "DESCRIPTION": [ - "Códigos QR<\/b>", - "¡Escanea tus bolsas de café! Toda la información del café viene directamente del tostador.", - "", - "Básculas Bluetooth <\/b>", - "Soporte para la Acaia Pearl 2021 - Gracias a Micah y Mike", - "Soporte para la Acaia Lunar 2021 - Gracias a Micah y Mike", - "Soporte para la Acaia Pyxis - Gracias a Micah y Mike", - "Soporte para la Hiroia Jimmy - Gracias a Silas", - "Soporte para la Felicita Arc - Gracias a Herman", - "Cuidado: Acaia Pearl < 2021 no tiene soporte por el momento", - "La información de peso de la báscula bluetooth ahora se puede usar en la página de granos", - "Los cambios de peso ahora son visibles sin iniciar una preparación a través del temporizador", - "", - "Descripción general de la preparación<\/b>", - "Personalice sus parámetros de preparación visibles en la descripción general o para cada método de preparación", - "Las imágenes de preparación ahora son visibles en la vista de lista", - "", - "Gráfico de preparación<\/b>", - "Reelaboración del gráfico de preparación para una solución más fluida", - "El gráfico de preparación ahora se puede maximizar", - "El gráfico de preparación ahora se puede ampliar en la vista de detalles de preparación y exportar", - "Ahora se muestra la cantidad de flujo promedio", - "", - "Granos<\/b>", - "Campos agregados: Fecha de compra, Precio FOB, Precio de compra", - "Los granos ahora se pueden marcar como favoritos y filtrar", - "Si un grano se archiva, ahora también puede calificar el paquete", - "Al presionar '+' ahora puede elegir agregar o escanear un nuevo paquete", - "Mantenga presionado '+' para agregar directamente un nuevo grano", - "", - "Métodos de preparación<\/b>", - "Los métodos de preparación ahora se pueden repetir con todas las configuraciones", - "Hay más métodos de preparación disponibles - Gracias a Nicola", - "Al seleccionar un método de preparación también se muestra la imagen", - "", - "Ajustes<\/b>", - "Las calificaciones ahora se pueden escalonar (1, 0.75, 0.5, 0.25, 0.1)", - "Báscula Bluetooth: defina si la báscula debe configurarse en peso cero al iniciar una nueva preparación o iniciar el temporizador", - "Báscula Bluetooth: defina si desea ignorar anomalías o valores negativos; si es así, no será posible un gráfico en vivo", - "Elija ahora si desea ver las preparaciones archivadas en la página de inicio", - "Exportar ahora también exporta los datos sin procesar de los valores de bluetooth guardados", - "", - "Mejoras<\/b>", - "Eliminar las herramientas del método de preparación ahora ya no eliminará las preparaciones", - "Las herramientas del método de preparación ahora se pueden editar y archivar", - "", - "Corrección de errores:<\/b>", - "Se encontraron más problemas que podrían conducir a una pérdida de datos", - "Pequeñas correcciones de errores", - "", - "Otros:<\/b>", - "Actualizado a Ionic-Framework 6, por lo tanto, existen algunos pequeños cambios visuales" - ] - }, - "6.1.3": { - "TITLE": "Versión 6.1.3: Novedades", - "DESCRIPTION": [ - "Android - Atención<\/b>", - "Antes que nada: ¡perdón!", - "Lamentablemente la base de datos ha sido reseteada al pasar la aplicación de APK a AAB en Google Play Store y verás que no tienes datos en la aplicación.", - "No he podido prever esto durante el desarrollo porque todo funcionaba perfectamente", - "Si inicias la aplicación y no tienes datos, ve a configuración e importa el fichero que encontrarás en 'Download\/Beanconqueror_export\/Beanconqueror_automatic_export_*.json' * refleja el último día y hora de la copia de seguridad.", - "Deberían aparecer todos los datos que tenías, si no es el caso, envíame un correo a: info@beanconqueror.com." - ] - }, - "6.1.5": { - "TITLE": "Versión 6.1.5: Novedades", - "DESCRIPTION": [ - "Códigos QR<\/b>", - "Recargue granos que fueron escaneados a través de códigos QR", - "", - "Gráfico de preparación<\/b>", - "El flujo de agua se calcula ahora en tiempo real", - "", - "Granos<\/b>", - "Buscar granos ahora en la selección", - "", - "Corrección de errores<\/b>", - "Después de tomar una foto, la rueda giratoria de carga no desapareció.", - "Pequeñas correcciones de errores" - ] - }, - "6.2.0": { - "TITLE": "Versión 6.2.0: Novedades", - "DESCRIPTION": [ - "Sensores de presión<\/b>", - "Añadido soporte para sensor 'Do it yourself' Popsicle - Gracias a Mike y Shay", - "Inicio automático del temporizador al llegar a cierta presión - editable en la configuración", - "Presionar el manómetro resetea la presión a 0.", - "Ahora se muestra el nombre y la dirección del sensor de presión al conectarse", - "", - "Básculas Bluetooth<\/b>", - "Soporte para Eureka Precisa - Gracias a Mimoja", - "Elige el comportamiento de la báscula bluetooth en una nueva preparación - editable en configuración", - "Elige qué gráficos deben mostrarse en filtro o espresso - editable en configuración", - "Procesamiento secuencial de los comandos bluetooth para evitar errores", - "Ahora se muestran el nombre y la dirección MAC de la báscula al conectarse", - "", - "Preparaciones<\/b>", - "Añadido soporte para milisegundos - se puede activar en la configuración", - "Filtro de búsqueda mejorado, ahora se puede buscar por tipo de tueste y tostador", - "Ahora se puede reconectar la báscula o el sensor de presión en la página de añadir o editar preparación", - "", - "Granos<\/b>", - "Comparte tus granos (sin necesidad de servidor) - Gracias a Mike", - "Muestra todas las preparaciones asociadas a un grano", - "Añadido mismo tipo de puntuación que para las preparaciones - editable en la configuración", - "", - "Más idiomas<\/b>", - "Turco - Gracias a Halil Portakal", - "Chino (simplificado) - Gracias a Jiageng", - "", - "Molinos<\/b>", - "Ahora se muestra el último ajuste y el último grano usados", - "", - "Mejoras<\/b>", - "Mensaje de error cuando se escanea un grano que todavía no ha sido aprobado", - "La opción de editar la hora de la preparación ahora viene desactivada por defecto", - "", - "Otros<\/b>", - "Erratas corregidas", - "Corregido un error que no permitía ver algunas puntuaciones aún usando la configuración predeterminada", - "Se puede volver a exportar gráficos antiguos", - "Actualización a Ionic 6.3.0", - "Corrección de fallos menores" - ] - }, - "6.3.0": { - "TITLE": "Versión 6.3.0: Novedades", - "DESCRIPTION": [ - "Básculas bluetooth<\/b>", - "Indica el tiempo de espera entre comandos bluetooth", - "", - "Preparaciones<\/b>", - "Resetea la fecha de preparación", - "Si hay una báscula bluetooth conectada, se mostrará el tamaño de la última bebida", - "Botones más grandes en el gráfico a pantalla completa", - "Elige entre excel y json al descargar los datos de una preparación", - "Posibilidad de mostrar la foto de los granos en la lista de preparaciones en vez del icono o foto del método de preparación -> Activable en configuración", - "", - "Granos<\/b>", - "Añadida la opción de filtrar los granos por su varietal", - "", - "Molinos<\/b>", - "Se muestran las notas en la lista y en la vista detallada", - "", - "Mejoras<\/b>", - "Elige cuántos milisegundos quieres que se muestren (las preparaciones previamente registradas mostrarán 3 decimales por defecto)", - "Añadidos iconos de donaciones", - "Las áreas de texto ahora permiten hacer scroll", - "Modificado el formato de las preparaciones diarias en estadísticas", - "Ahora las notificaciones aparecen en la parte superior de la pantalla y se pueden cerrar dándole a la X", - "Ahora todos los parámetros de preparación pueden modificarse. Por ejemplo, se puede ocultar el molino", - "Añadida la opción de activar o desactivar analíticas", - "", - "Otros<\/b>", - "Erratas corregidas", - "Actualización a Ionic 6.4.0", - "Corrección de errores menores" - ] - }, - "6.4.0": { - "TITLE": "Versión 6.4.0: Novedades", - "DESCRIPTION": [ - "Termómetros Bluetooth<\/b>", - "Añadido soporte para termómetros y sensores de temperatura de ETI Ltd (ThermaQ Blue, BlueTherm, etc) - Gracias a Myles", - "Inicio automático del temporizador al llegar a cierta temperatura - editable en la configuración", - "", - "Básculas Bluetooth<\/b>", - "Añadido soporte de Skale 2", - "Si una báscula bluetooth quiere borrar la información de una preparación, el usuario recibirá una alerta de seguridad", - "", - "Visualizer<\/b>", - "Sube manualmente las preparaciones en las que has usado un dispositivo bluetooth - Gracias a Miha", - "(Paso 2: Subidas automáticas)", - "", - "Cafés<\/b>", - "Ahora se pueden personalizar los campos a rellenar y la información a mostrar", - "Filtra por mayor o menor tueste", - "Añadida la opción de configurar la página de las bolsas de café como página inicial - Ver configuración", - "Ahora se muestran sugerencias para autocompletar en más campos, como por ejemplo la variedad", - "La información adicional aparece en los resultados de búsqueda", - "", - "Preparaciones<\/b>", - "Nuevo botón en el que se puede elegir un método de preparación específico", - "Elige qué parámetros aparecen por defecto al seleccionar la opción 'Repetir' - Por defecto: todos", - "Filtra todas las preparaciones que han usado un dispositivo bluetooth", - "Mejoras en el gráfico en vivo", - "Añadido acceso directo a la calculadora de ratio al añadir o editar una preparación", - "Al pulsar 'Guardar' se parará el temporizador", - "", - "Discord<\/b>", - "Únete al Discord de Beanconqueror para hablar, debatir, pedir información u opinar sobre la aplicación", - "", - "Android<\/b>", - "La opción de compartir vuelve a funcionar", - "Exporta e importa los gráficos de tus preparaciones", - "", - "Mejoras<\/b>", - "Ahora se muestra el número de preparaciones y cafés disponibles y archivados", - "Al añadir o editar una preparación, los botones de guardar y cancelar no se mostrarán si el teclado está en pantalla", - "En la configuración se puede elegir que aparezca el teclado numérico para el ajuste de molienda", - "", - "Otros<\/b>", - "Corrección de errores menores" - ] - }, - "6.4.10": { - "TITLE": "Versión 6.4.1: Novedades", - "DESCRIPTION": [ - "Otros<\/b>", - "Corrección de errores menores" - ] - }, - "6.4.20": { - "TITLE": "Version 6.4.2: Novedades", - "DESCRIPTION": [ - "Corregido fallo que provocaba que se cerrara la aplicación al iniciarse", - "Corregido error de conexión con básculas bluetooth" - ] - }, - "6.5.0": { - "TITLE": "Version 6.5.0: Novedades", - "DESCRIPTION": [ - "Básculas Bluetooth<\/b>", - "Añadida compatibilidad con las básculas DiFluid Microbalance y Smart Chef Scale - Gracias Yannick", - "Sólo para métodos de preparación de tipo Espresso: Posibilidad de activar en la configuración que el temporizador se detenga automáticamente al no detectar flujo", - "Añadida una ventana emergente que aparecerá cuando Beanconqueror no recibe información en referencia al peso de una báscula", - "", - "Cafés<\/b>", - "Comparte tus cafés en formato imagen o en formato enlace", - "", - "Xenia<\/b>", - "Ahora se registran datos de presión y temperatura", - "", - "Preparaciones<\/b>", - "Se muestra el gráfico completo si no hay una preparación en curso", - "", - "Exportar\/Importar<\/b>", - "En vez de usar el formato JSON, ahora se usa el formato ZIP tanto para importar como para exportar", - "Por favor, antes de actualizar ve a la configuración y realiza una copia de seguridad manual además de la que se hace de forma automática.", - "", - "Mejoras<\/b>", - "Pequeñas mejoras", - "", - "Otros<\/b>", - "Corrección de errores menores" - ] - }, - "6.5.1": { - "TITLE": "Versión 6.5.1: Novedades", - "DESCRIPTION": [ - "Otros<\/b>", - "Corrección de errores menores" - ] - }, - "6.6.0": { - "TITLE": "Version 6.6.0: Novedades", - "DESCRIPTION": [ - "Refractómetro<\/b>", - "Añadido soporte para DiFluid R2 - Gracias a Yannick", - "", - "Básculas Bluetooth<\/b>", - "Añadido soporte para Blackcoffee.io - Gracias a Yannick", - "Solucionado un fallo que no mostraba el flujo correcto en algunas básculas", - "", - "Preparaciones<\/b>", - "Selecciona una preparación de un café como 'mejor preparación' - Activable en configuración", - "Es posible copiar las notas desde la vista de lista", - "Filtra tus preparaciones según el perfil usado", - "Puntua tus preparaciones desde el menú contextual", - "Descarga el fichero de Visualizer en la vista de lista", - "", - "Xenia<\/b>", - "Ahora se guarda qué script se ha ejecutado en las notas", - "Elige la temperatura de extracción cuando se inicia una preparación", - "", - "Mejoras<\/b>", - "Pequeñas mejoras", - "", - "Otros<\/b>", - "Corrección de errores menores" - ] - }, - "6.6.1": { - "TITLE": "Versión 6.6.1: Novedades", - "DESCRIPTION": [ - "Otros<\/b>", - "Corrección de errores menores" - ] - }, - "6.6.2": { - "TITLE": "Version 6.6.2: Novedades", - "DESCRIPTION": [ - "[ANDROID]Android 13 - Permisos del sistema de almacenamiento de archivos<\/b>", - "[ANDROID]Modificadas las rutas de acceso a los ficheros debido a los recientes cambios en los permisos del sistema de almacenamiento de archivos de Android. Además, se ha solucionado un error con la cámara y el acceso a las imágenes derivado de este cambio de permisos de Android 13.", - "[ANDROID]Debido a estos cambios, los requisitos mínimos del sistema operativo pasan a ser Android 7.0", - "[ANDROID]Puedes ver cómo importar y exportar funciona ahora aquí: https:\/\/beanconqueror.com\/faq", - "", - "[IOS]iOS - Actualización de librerías<\/b>", - "[IOS]Actualización para actualizar las librerías de Cordova" - ] - }, - "7.0.0": { - "TITLE": "Version 7.0.0: Novedades", - "DESCRIPTION": [ - "Modos en básculas Bluetooth<\/b>", - "Inicia el temporizador automáticamente al detectar un cambio de peso - Activable en configuración (aparecerá un icono nuevo)", - "Ignora temporalmente la transferencia de peso - para, por ejemplo, menear, agitar o mover sin que el gráfico genere picos de manera intencionada - Activable en configuración (aparecerá un icono nuevo)", - "", - "Básculas Bluetooth<\/b>", - "Añadido soporte para una báscula genérica", - "Al conectar una báscula DiFluid Microbalance o Felicita, el tiempo de espera entre comandos viene predefinido", - "", - "Gráficos<\/b>", - "Activa la sección de gráficos en configuración", - "Elige un gráfico e intenta replicarlo en tu siguiente preparación", - "El gráfico a replicar puede ser de una preparación anterior o uno que hayas subido a la sección gráficos", - "Exporta tus gráficos en formato .JSON desde una preparación y súbelos a la sección gráficos", - "", - "Visualizer<\/b>", - "Subida automática a Visualizer de todas aquellas preparaciones realizadas con una báscula conectada y que tengan gráfico de la extracción - Activable en configuración", - "Añadida la opción de subir cualquier preparación a Visualizer", - "Gracias a Miha", - "", - "Preparaciones<\/b>", - "Repite una preparación desde la vista detallada", - "La opción 'primeras gotas de café' se puede activar para cualquier método de preparación (ejemplo: Pulsar)", - "Se muestra el ratio en la vista a pantalla completa si hay una báscula conectada", - "Los métodos de preparación se muestran alfabéticamente y se muestra la última fecha de uso", - "Si hay una báscula conectada, en espresso se mostrará el flujo en tiempo real inferior a 1 g\/s.", - "", - "Cafés<\/b>", - "Repite la última o la mejor preparación desde la vista detallada de un café", - "", - "Métodos de preparación<\/b>", - "Añadido buscador a las herramientas de preparación y ordenadas alfabéticamente", - "Añadida la fecha de último uso al seleccionar un método de preparación", - "", - "Molinos<\/b>", - "Ahora se muestra el último ajuste y la fecha en que se usó por última vez", - "", - "Xenia<\/b>", - "Corregido: Los scripts desactivados ya no se ejecutan", - "", - "Configuración<\/b>", - "Muestra una ventana emergente de confirmación para evitar perder los cambios si has modificado una preparación o un café - Activable en configuración", - "Indica el rango de ambos ejes (X e Y) que quieras que se muestre cuando hay un dispositivo bluetooth conectado", - "", - "Ionic 7<\/b>", - "Actualización de Ionic 6 a Ionic 7", - "[IOS]Versión mínima de iOS pasa a ser iOS 14", - "[ANDROID]Versión mínima de Android pasa a ser Android 7.1", - "", - "Lokalise<\/b>", - "Migración a Lokalise para las traducciones - Gracias a Yannick", - "¿Quieres ayudarnos a traducir la aplicación? Con Lokalise es mucho más fácil. Contáctanos en info@beanconqueror.com", - "", - "Otros<\/b>", - "Corrección de errores menores", - "" - ] - }, - "7.1.0": { - "TITLE": "Versión 7.1.0: Novedades", - "DESCRIPTION": [ - "Más idiomas<\/b>", - "Añadida traducción al francés - Gracias a Yannick", - "Apoyo de Indonesia - Gracias a Bondan, Ganjar", - "", - "Básculas Bluetooth<\/b>", - "Añadido soporte para una báscula Bluetooth DYI (Rust & Python Firmware)", - "Añadido soporte para DiFluid Microbalance Ti", - "Mejoras para todas las básculas en la forma en la que se calcula el flujo", - "", - "Gráficos<\/b>", - "Añadida más información al seleccionar un gráfico a replicar", - "", - "Preparaciones<\/b>", - "Básculas Bluetooth - Añadido un botón en la barra de herramientas para tarar la báscula", - "", - "Cafés<\/b>", - "Support of copying a variety information", - "", - "Sección de agua<\/b>", - "Añadido potasio", - "", - "Molinos<\/b>", - "Ahora se muestran las RPM en la sección molinos y cuando se elige un molino en una preparación", - "", - "Configuración<\/b>", - "Define los segundos que se muestran para filtro y espresso con un dispositivo bluetooth conectado", - "Añadidos distintos formatos de fecha", - "", - "Otros<\/b>", - "Corrección de errores menores" - ] - }, - "7.2.0": { - "TITLE": "Versión 7.2.0: Novedades", - "DESCRIPTION": [ - "Más idiomas<\/b>", - "Añadida traducción al italiano - Gracias a Cancercookie", - "Añadida traducción al polaco - Gracias a MarcinSachs", - "", - "Básculas Bluetooth<\/b>", - "El temporizador de inicio esperará unos segundos hasta que la báscula reporte varios valores con peso 0 cuando la opción 'Tarar báscula al iniciar el temporizador' esté activada.", - "", - "Xenia<\/b>", - "Añadida opción para el uso de la API v1 o v2", - "Añadida la opción 'brew by weight' para detener la preparación al llegar al peso deseado", - "", - "Meticulous<\/b>", - "Primera integración con Meticulous - ¡Gracias a todo el equipo de Meticulous!", - "", - "Configuración<\/b>", - "Define el umbral de peso a partir del cual se registrará cuando cayeron las primeras gotas", - "", - "Otros<\/b>", - "Varias modificaciones técnicas en el código", - "Pequeñas mejoras", - "[IOS]Se mostrará una ventana emergente si hay una pérdida de conexión con la base de datos", - "", - "Gracias<\/b>", - "Muchas gracias a todos los traductores por el esfuerzo que están haciendo para que la aplicación esté disponible en más idiomas" - ] - } - }, "CUSTOM_PARAMETERS": "Personalizar parámetros", "CUSTOM_DEFAULT_PARAMETERS": "Predeterminado", "CUSTOM_MANAGE_PARAMETERS": "Administrar", @@ -1248,7 +635,7 @@ "WRONG_FILE_FORMAT": "Has elegido un formato de archivo no admitido", "SCAN_BEAN": "Escanear paquete", "CLEAR": "Limpiar", - "BEAN_LOOKS_LIKE_CONSUMED": "Parece has terminado la bolsa de cafçe, ¿quieres archivarla ahora?", + "BEAN_LOOKS_LIKE_CONSUMED": "Parece que has terminado la bolsa de café, ¿quieres archivarla ahora?", "CUPPING_1": "Frutas", "CUPPING_2": "Cítricos", "CUPPING_3": "Limón y limonada", @@ -1458,7 +845,7 @@ "LOCATION": "Para encontrar básculas bluetooth, la aplicación necesita acceder a la ubicación.", "BLUETOOTH": "Para encontrar básculas bluetooth, la aplicación necesita acceso al bluetooth" }, - "INFORMATION_DESCRIPTION": "Básculas compatibles: Decent, Acaia, Felicita, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti, Smartchef Scale, Blackcoffee.io y Eureka Precise. Atención: Si la báscula Eureka Precise recibe un valor negativo, el temporizador se detiene" + "INFORMATION_DESCRIPTION": "Básculas compatibles: Decent, Acaia, Felicita, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti, Smartchef Scale, Blackcoffee.io, Bookoo Mini Scale y Eureka Precise. Atención: Si la báscula Eureka Precise recibe un valor negativo, el temporizador se detiene" }, "QR": { "WRONG_QRCODE_DESCRIPTION": "Código QR incorrecto o contenido incorrecto", @@ -1561,7 +948,7 @@ "DISCONNECTED_SUCCESSFULLY": "Sensor de presión desconectado", "DISCONNECTED_UNPLANNED": "Desconexión no planificada del sensor de presión", "STAY_CONNECTED_ON_APP_MINIMIZE": "Mantener sensor de presión conectado con la aplicación en segundo plano", - "INFORMATION_DESCRIPTION": "Dispositivos soportados: Popsicle, Pressensor, Smart Espresso Profiler", + "INFORMATION_DESCRIPTION": "Dispositivos soportados: Popsicle, Pressensor, Smart Espresso Profiler, Bookoo Espresso Monitor", "BLUETOOTH_SCAN_RUNNING": "Se buscará el dispositivo de presión durante 60 segundos, espere", "BLUETOOTH_NOT_ENABLED": "Bluetooth desactivado, actívelo para que funcione correctamente", "REQUEST_PERMISSION": { @@ -1576,7 +963,7 @@ "LAST_USED_BEAN": "Último café", "PAGE_SETTINGS_BREW_MILLISECONDS_DECIMAL_PLACES_DESCRIPTION": "¿Cuántos decimales deberían mostrarse?", "SMART_SCALE_COMMAND_DELAY": "Tiempo de espera entre comandos", - "SMART_SCALE_COMMAND_DELAY_TOOLTIP": "¿Cuántos tiempo debería pasar entre dos comandos bluetooth?", + "SMART_SCALE_COMMAND_DELAY_TOOLTIP": "¿Cuánto tiempo debería pasar entre dos comandos bluetooth?", "SUPPORT_ME": "Donar", "PAGE_SETTINGS_BREW_DISPLAY_BEAN_IMAGE": "¿Mostrar foto de los cafés en preparaciones?", "PAGE_SETTINGS_BREW_DISPLAY_BEAN_IMAGE_DESCRIPTION": "Si un café tiene una imagen asignada, se usará esta en vez de la imagen del método de preparación", @@ -1614,7 +1001,7 @@ "BEAN_DATA_ELEVATION_TOOLTIP": "¿A qué altitud se ha cultivado?", "BEAN_DATA_PROCESSING_TOOLTIP": "¿Qué proceso de secado? Natural, lavado, etc.", "BEAN_DATA_VARIETY_TOOLTIP": "Variedad del café (Ejemplo: SL28)", - "BEAN_DATA_HARVEST_TIME_TOOLTIP": "¿Mesa y año de la cosecha?", + "BEAN_DATA_HARVEST_TIME_TOOLTIP": "¿Mes y año de la cosecha?", "BEAN_DATA_PERCENTAGE_TOOLTIP": "¿Qué porcentaje del café tras el tueste hay en la bolsa?", "BEAN_DATA_CERTIFICATION_TOOLTIP": "¿Tienen alguna certificación (Fairtrade, por ejemplo)?", "BEAN_DATA_PURCHASING_PRICE_TOOLTIP": "¿Cuánto ha pagado el tostador por este café?", @@ -1662,7 +1049,7 @@ }, "API_VERSION": "Versión de la API", "RESIDUAL_LAG_TIME": "Retraso residual", - "RESIDUAL_LAG_TIME_DESCRIPTION": "Elige el retraso residual tras finalizar una preparación. Con un portafiltro sin fondo necesitarás un tiempo menor, con un portafiltro con vertederás uno mayor. Cuanto más tarde tu báscula en reportar el peso, mayor tiempo necesitarás.", + "RESIDUAL_LAG_TIME_DESCRIPTION": "Elige el retraso residual tras finalizar una preparación. Con un portafiltro sin fondo necesitarás un tiempo menor, con un portafiltro con vertederas uno mayor. Cuanto más tarde tu báscula en reportar el peso, mayor tiempo necesitarás.", "TYPE_METICULOUS": { "TITLE": "Meticulous", "NO_PROFILE": "Sin perfil", @@ -1728,7 +1115,7 @@ "READ_END": "Prueba finalizada - resultado recibido" }, "COPIED_TO_CLIPBOARD_SUCCESSFULLY": "Copiado al portapapeles", - "COPIED_TO_CLIPBOARD_UNSUCCESSFULLY": "No se ha podido copiar al portapeles", + "COPIED_TO_CLIPBOARD_UNSUCCESSFULLY": "No se ha podido copiar al portapapeles", "PAGE_SETTINGS_LANGUAGE_FRENCH": "Francés", "ANDROID_EXTERNAL_FILE_ACCESS_NOT_POSSIBLE_TITLE": "No se pueden guardar los datos debido a restricciones de Android", "ANDROID_EXTERNAL_FILE_ACCESS_NEEDED_DESCRIPTION": "Tu dispositivo no es compatible con sistemas de almacenamiento externo de ficheros, por lo que tendrás que descargar el fichero .ZIP sin los recursos multimedia. Para más información, visita https:\/\/beanconqueror.com\/faq.", @@ -1771,8 +1158,8 @@ "RESET": "Reiniciar", "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_AXIS": "Define los valores de los ejes del gráfico", "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_AXIS_DESCRIPTION": "Elige qué valores mostrar por defecto en los ejes de los gráficos para filtro y espresso.", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_FILTER_WEIGHT": "Filter - Peso", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_FILTER_FLOW": "Filter - Flujo", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_FILTER_WEIGHT": "Filtro - Peso", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_FILTER_FLOW": "Filtro - Flujo", "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_ESPRESSO_WEIGHT": "Espresso - Peso", "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_ESPRESSO_FLOW": "Espresso - Flujo", "SMART_SCALE_IGNORE_INCOMING_WEIGHT": "Ignorar temporalmente la transferencia de peso.", @@ -1835,5 +1222,89 @@ "STARTING_IN": "Iniciando en... {{time}}", "IOS_DATABASE_ISSUE_TITLE": "¡ATENCIÓN! SE HA PERDIDO LA CONEXIÓN CON LA BASE DE DATOS", "IOS_DATABASE_ISSUE_DESCRIPTION": "Lamentamos comunicarte que la conexión con la base de datos se ha perdido. Este problema es debido a un fallo no resuelto en el sistema operativo por parte de Apple, que va más allá del control de Beanconqueror. Para evitar que ser pierdan datos, cierra completamente la aplicación y ábrela de nuevo.", - "RELOAD_APP": "Recargar aplicación ahora" -} + "RELOAD_APP": "Recargar aplicación ahora", + "WATER_TYPE_ADD_CUSTOM": "Agua personalizada", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "Añadir agua", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "INTENSO
ácido", + "EXTRACTION_CHART_LABEL_STRONG": "INTENSO
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "INTENSO
amargo", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "ácido", + "EXTRACTION_CHART_LABEL_IDEAL": "IDEAL", + "EXTRACTION_CHART_LABEL_HARSH": "amargo", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "DÉBIL
ácido", + "EXTRACTION_CHART_LABEL_WEAK": "DÉBIL
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "DÉBIL
amargo", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "Texto a voz", + "TEXT_TO_SPEECH": { + "ACTIVATE": "Activar síntesis de voz", + "BREW_STARTED": "Inicio de la preparación", + "BREW_ENDED": "Fin de la preparación", + "TIME": "Tiempo", + "SPEAK_EVERY_MS": "Hablar en los milisegundos seleccionados", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "Los siguientes números serán pronunciados a modo de prueba", + "TEST_SPEAK": "Comenzar prueba de voz", + "PITCH": "Tono de habla", + "RATE": "Velocidad de dicción" + }, + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "Vibración", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "Activar vibración", + "BREW_STARTED": "Vibrar al empezar preparación", + "BREW_STOPPED": "Vibrar al acabar preparación", + "TARE": "Vibrar al tarar la báscula" + }, + "CONNECTED": "Conectado", + "DISCONNECTED": "Desconectado", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "Esta es una función experimental", + "SHOW_HOURS": "Mostrar horas", + "SHOW_MINUTES": "Mostrar minutos", + "BEANS_UNARCHIVE": "Desarchivar", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "Café desarchivado", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "Versión 7.3.0: Novedades", + "DESCRIPTION": [ + "Agua - Añadida Third Wave Water<\/b>", + "Encuentra las distintas recetas de Third Wave Water en la sección agua", + "", + "Básculas Bluetooth<\/b>", + "Añadida compatibilidad con la báscula Bookoo - Gracias a Yannick", + "", + "Sensor de presión<\/b>", + "Añadida compatibilidad con el sensor Bookoo - Gracias a Yannick", + "La función de iniciar el temporizador al llegar a una presión predefinida todavía no es compatible con este sensor.", + "", + "Vibración<\/b>", + "Habilita la vibración del teléfono al iniciar una preparación - Función experimental - Activable en Configuración", + "", + "[iOS]Texto a voz<\/b>", + "[iOS] Activa el contenido leído para que el teléfono te diga el peso que indica la báscula y el tiempo de extracción - Función experimental - Activable en Configuración", + "", + "Visualizer<\/b>", + "Envía el porcentaje de extracción a Visualizer", + "", + "Imágenes<\/b>", + "Se puede modificar el orden en el que se muestran las fotos si hay más de una añadida", + "", + "Preparaciones<\/b>", + "Al abrir el temporizador, centrarse primero en los segundos", + "Oculta horas y\/o minutos en el selector de tiempo", + "Añadido icono en la barra de tareas que indica si Xenia o Meticulous están conectadas o desconectadas.", + "Corregido un error que no permitía editar y guardar una preparación si la sección \"Durante la preparación\" no estaba activa", + "", + "Cafés<\/b>", + "Añadida la opción de desarchivar un café a la lista de acciones rápidas", + "", + "Otros<\/b>", + "Cambios técnicos en el código", + "Correcciones menores" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 9d587378f..6261f834e 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -471,619 +471,6 @@ "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "Sauvegarder la quantité de caféine consommée", "UPDATE_TITLE": "Quoi de neuf ?", "NEXT": "Suivant", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "Quoi de neuf ?", - "DESCRIPTION": [ - "New layout, new icons, new colors, new logo", - "New preparation methods", - "Preparations now can be categorized (percolation, espresso, full immersion)", - "Preparation can now inherit tools (e.g. different filters)", - "Preparation parameter can now be customized, define your own workflow for each preparation", - "Added more editable bean information, different sorts can now be added", - "Amount of water field is available for percolation\/full immersion", - "Where did you brew your best coffee? Active coordinate saving in settings", - "Activate fast repeat to add brews instant", - "Added update screen to show the latest changes", - "Question added to rate the app after 25 uses", - "Added sorting for beans", - "Added search panel for brews\/beans", - "Cupping chart is added to brew details", - "Left over beans weight added on homescreen", - "Added typeahead for roasters", - "Rating moved to stars instead of icons" - ] - }, - "5.1.0": { - "TITLE": "Version 5.1: What's new?", - "DESCRIPTION": [ - "New timepicker for brews", - "Roasting date can now be again selected on iOS", - "Images can be choosen again on iPad", - "TDS calculation is now again visible on beverage quantity", - "Safe zones added for iOS-devices" - ] - }, - "5.2.0": { - "TITLE": "Version 5.2: What's new?", - "DESCRIPTION": [ - "Brews:<\/b>", - "Brew timer continues in the background", - "Brews can be favored", - "Screen for adding and editing a brew looks identical", - "Display can stay active during brewing (can be activated in the settings menu)", - "List of recent brews now also shows archived brews", - "", - "Beans:<\/b>", - "Bean photos are shown in the overview", - "Beans can be rated", - "", - "Interactions:<\/b>", - "Long press on a card leads to the edit view", - "Detail view can be accessed via click on the card", - "Github \/ Facebook \/ Instagram accounts linked", - "", - "Bugfixes:<\/b>", - "Bean information have been copied incorrect", - "Brew amount was activated by default for new users", - "", - "Other:<\/b>", - "Apple Healthkit integration (can be activated in the settings menu)", - "Cleanups", - "Layout changes", - "Extension of statistics", - "Startup check revised", - "Support for different card sized for brews and beans" - ] - }, - "5.3.1": { - "TITLE": "Version 5.3: What's new?", - "DESCRIPTION": [ - "Brew methods:<\/b>", - "Changes to the card view", - "Custom images can be attached in the edit screen", - "Brew tools will be saved in edit screen, even when '+' is not pressed", - "", - "Grinders:<\/b>", - "Custom images can be attached in the edit screen", - "", - "Brews:<\/b>", - "-", - "", - "Dashboard:<\/b>", - "If bean amount is less then 1000g, the number will be written as a whole", - "", - "Bug fixes:<\/b>", - "Editing via a long-press, does not change information any more", - "Information on the dashboard are updated after made changes", - "Multiple variety information with blends can be saved again", - "Added startup error message if app-data is missing" - ] - }, - "5.4.0": { - "TITLE": "Version 5.4: What's new?", - "DESCRIPTION": [ - "Roasting section:<\/b>", - "Manage all of your green beans and roasters (can be activated in the settings menu)", - "Save all of your green beans and transfer them into roasted onces", - "Add your roaster and connect them with your different kind of roasted beans", - "", - "Website:<\/b>", - "Go live of our new website! -> https:\/\/beanconqueror.com", - "", - "Support us:<\/b>", - "You've always wanted to support Beanconqueror? We've added a new 'Buy me a coffee' connection", - "", - "iOS - iCloud:<\/b>", - "The first step into iCloud support was made. At the very first start all of your existing app data will be moved into the support iCloud directory.", - "You have to activate this option in the iCloud Settings first in order to save Beanconqueror on iCloud", - "", - "Android\/iOS - Automated file-export:<\/b>", - "Automated Beanconqueror.json-File is saved for a maximum of 7 days, after that they will be automated deleted again", - "Android: Download\/Beanconqueror_export\/Beanconqueror_automatic_export_DAY.json", - "iOS: Files\/Download\/Beanconqueror_export\/Beanconqueror_automatic_export_FILE.json", - "", - "Settings:<\/b>", - "Excel - Export all of your data to excel to work with it even further", - "Define your own image quality between 50% to 100% (default 100%)", - "Brew rating - Define how much stars\/points you'd like to set for each brew. Minimum 5, maximum 100", - "", - "New tracking:<\/b>", - "We've changed to our open source service Matomo, which will be hosted on our own server", - "Removed Google Analytics \/ Firebase", - "", - "Bug fixes:<\/b>", - "Apple Healthkit - Settings were not saved", - "Sometimes brew rating stars weren't filled (Brew add\/edit)", - "Edit via long tap, screen wasn't scrollable", - "Import of bigger files on iOS led to misconduct", - "Delete procedure of beans \/ preparations or mills were not consistent and lead to graphical issues", - "Wrong calculation of beverage quantity in statistics and list views", - "", - "Share:<\/b>", - "Share your brews and beans with all coffee lovers!", - "", - "Other:<\/b>", - "Clean ups", - "Layout changes", - "Extension of statistics", - "Startup check revised, added please wait window", - "Some label changes", - "Changed data access \/ order inside app to reduce problems" - ] - }, - "6.0.0": { - "TITLE": "Version 6.0: What's new?", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Support of the first bluetooth scale - Decent-Scale - Big thanks to Decent Espresso", - "Support of Acaia Lunar", - "", - "Aroma cupping<\/b>", - "Cup each brew with the different aromatics and flavors", - "", - "Water section<\/b>", - "Add your own water, activate this section in the settings", - "", - "Support of more languages<\/b>", - "Support for spanish - Big thanks to Frank!", - "", - "Improvements<\/b>", - "Support of long press '+' on brews", - "Added new brew parameters", - "Support of different currencies", - "Edit brew while in detail view", - "Choose multiple images at once", - "Support of brix to TDS conversion", - "If bean package is empty, you'll be asked if you want to archive the package on the last brew", - "Reset of roastdate supported", - "Support of detail views on beans, grinders and preparation methods", - "Added brew ratio (g\/l)", - "", - "iOS<\/b>", - "Support of safe areas", - "", - "Bug fixes<\/b>", - "Apple Healthkit - Decaffeinated coffee was saved", - "Copy of beans led to misconduct", - "Added brew time to excel export", - "Small bug fixes", - "", - "Others<\/b>", - "Beans, grinders and preparation methods are now sorted alphabetic in dropdowns" - ] - }, - "6.1.0": { - "TITLE": "Version 6.1: What's new?", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Scan your coffee bags! All coffee information are directly inserted from the roastery.", - "", - "Bluetooth scales<\/b>", - "Support of Acaia Pearl 2021 - Thanks to Micah and Mike", - "Support of Acaia Lunar 2021 - Thanks to Micah and Mike", - "Support of Acaia Pyxis - Thanks to Micah and Mike", - "Support of Hiroia Jimmy - Thanks to Silas", - "Support of Felicita Arc - Thanks to Herman", - "Care: Acaia Pearl < 2021 is not supported right now", - "Weightinformation of bluetooth scale can now be used on the beans page", - "Weight changes are now visible without starting a brew via timer", - "", - "Brew overview<\/b>", - "Customize your visible brew parameters in the overview in general or for each preparation method", - "Preparation images are now visible in the listview", - "", - "Brew graph<\/b>", - "Rework of brew graph to a more smoother solution", - "Brew graph now can be maximized", - "Brew graph can now be zoomed in the brew-detail view aswell as exported", - "Average flow quantity is now displayed", - "", - "Beans<\/b>", - "Added fields: Buy date, FOB-Price, Purchasing price", - "Beans can now be favorited and filtered", - "If a bean gets archived, you can now rate the package aswell", - "Pressing '+' you can now choose to add or scan a new package", - "Long press '+' to directly add a new bean", - "", - "Preparation methods<\/b>", - "Preparation methods can now be repeated with all settings", - "More preparation methods are available - Thanks to Nicola", - "Selecting a preparation method also displays the image", - "", - "Settings<\/b>", - "Ratings can now be stepped (1, 0.75, 0.5, 0.25, 0.1)", - "Bluetooth scale - Define if the scale should be set to weight zero when starting a new brew, or starting the timer", - "Bluetooth scale - Define if you want to ignore anomalies or negative values - if yes, a live graph won't be possible", - "Choose now, if you want to see archived brews on the home page", - "Export also now exports the raw data of the saved bluetooth values", - "", - "Improvements<\/b>", - "Delete of preparation method tools now won't delete brews anymore", - "Preparation method tools now can be edited and archived", - "", - "Bug fixes:<\/b>", - "Found more issues which could lead to a data loss", - "Small bug fixes", - "", - "Others:<\/b>", - "Updating to Ionic-Framework 6, therefore some small visual changes takes place" - ] - }, - "6.1.3": { - "TITLE": "Version 6.1.3: What's new?", - "DESCRIPTION": [ - "Android - Attention<\/b>", - "In first please: Sorry!", - "Sadly the database was resetted from going form APK to AAB format on Android Play Store, and your app will propably start without data.", - "I could not debug or control this situation, while development everything worked as expected", - "If your app started blank, please go into settings and import the file below 'Download\/Beanconqueror_export\/Beanconqueror_automatic_export_*.json' * stands for the latest timestamp, the backup.", - "All datas should then be back as normal, if not please write me an e-mail: info@beanconqueror.com." - ] - }, - "6.1.5": { - "TITLE": "Version 6.1.5: What's new?", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Reload beans which where scanned via qr-codes", - "", - "Brew graph<\/b>", - "Water flow is calculated now in realtime", - "", - "Beans<\/b>", - "Search beans now in selection", - "", - "Bug fixes<\/b>", - "After taking a picture, the loading spinner didn't disappear", - "Smaller bugfixes" - ] - }, - "6.2.0": { - "TITLE": "Version 6.2.0: Thats new", - "DESCRIPTION": [ - "Pressure devices<\/b>", - "Support of 'Do it yourself' Popsicle - Sensor - Thanks to Mike and Shay", - "Autostart timer on a specific pressure - editable in settings", - "Press of pressure gauge, will reset pressure to 0", - "Display name of pressure device and mac-address on connect", - "", - "Bluetooth scales<\/b>", - "Support of Eureka Precisa - Thanks to Mimoja", - "Define the behavior of the bluetooth scale on a new brew - editable in settings", - "Define which graphs should be displayed on filter or espresso - editable in settings", - "Sequential processing of bluetooth commands to reduce issues", - "Display name of bluetooth scale and mac-address on connect", - "", - "Brews<\/b>", - "Supports now milliseconds - Activate in settings", - "Filtersystem expanded, search for roast type and roastery", - "You can reconnect your bluetooth scale or pressure device on the brew add\/edit page", - "", - "Beans<\/b>", - "Share your bean (without server needed) - Thanks to Mike", - "Show all brews to your bean", - "Support bean rating like for brews - editable in settings", - "", - "More languages<\/b>", - "Support of Turkish - Thanks to Halil Portakal", - "Support of Chinese - Thanks to Jiageng", - "", - "Mills<\/b>", - "Display of the last used grind setting, aswell as the last used bean", - "", - "Improvements<\/b>", - "Error message when a bean is scanned, which has not been approved yet", - "The edit of the brew-date is not activated by default", - "", - "Others<\/b>", - "Typos fixed", - "Fixed an issue that you didn't see the star-rating even with normal settings", - "Older brew graphics can now be exported again", - "Update to Ionic 6.3.0", - "Smaller bug fixes" - ] - }, - "6.3.0": { - "TITLE": "Version 6.3.0: Thats new", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Define how long shall be waited until the next bluetooth command", - "", - "Brews<\/b>", - "Reset the Brewtime dates", - "If Bluetooth-Scale connected, the last brew weight will be displayed in the tile", - "Bigger buttons on the maximized brew graph", - "Choose excel or json by downloading the brew data", - "Bean pictures can now be displayed, instead of preparation method icons\/pictures -> Activate in the settings", - "", - "Beans<\/b>", - "Beans can now be searched by their varieties", - "", - "Mills<\/b>", - "Displaying notes inside the list and detail view", - "", - "Improvements<\/b>", - "Choose how many milliseconds shall be displayed (Entered values still need to be 3 decimal places)", - "Added donation buttons", - "Text Areas are now scrollable", - "Brewtime at statistics are now formatted", - "Notification popups appear now on top and can be closed by X", - "Disabled detail parameter are active now, e.g. can now be the Grinder be hidden", - "Analytics can be deactivated or activated", - "", - "Others:<\/b>", - "Typos fixed", - "Update to Ionic 6.4.0", - "Smaller bug fixes" - ] - }, - "6.4.0": { - "TITLE": "Version 6.4.0: What's new?", - "DESCRIPTION": [ - "Bluetooth thermometers<\/b>", - "Support for ETI Ltd thermometers (ThermaQ Blue, BlueTherm, etc) - Sensors - Thanks to Myles", - "Autostart timer on a specific temperature - editable in settings", - "", - "Bluetooth scales<\/b>", - "Support of Skale 2", - "If a bluetooth scale wants to reset a brew, the user will get an approval dialogue", - "", - "Visualizer<\/b>", - "Upload your recorded brews with used bluetooth-devices manually to visualizer.coffee - Thanks to Miha for your support", - "(Step 2: Automatic upload)", - "", - "Bean<\/b>", - "Bean parameters and list parameters can now be individualized and changed", - "Beans can now be filtered by roast degree", - "Bean page can now be set as starting page - see settings", - "Type ahead fields for specific fields added, e.g. Variety", - "Bean variety information can now be searched with free text", - "", - "Brews<\/b>", - "New button, where a preparation method can be chosen directly", - "Individualize which parameters shall be preset when choosing 'Repeat' - Default: all", - "Added a filter for all brews which have bluetooth device data attached", - "Re-work of live brew graphic", - "Added brew-ratio calculator for brew add\/edit to enable faster calculation", - "Pressing 'Save' will stop the timer", - "", - "Discord<\/b>", - "Join the Beanconqueror Discord Server to discuss, report bugs, as questions or give feedback", - "", - "Android<\/b>", - "Sharing functionality is working again", - "Export and import your brew graphs", - "", - "Improvements<\/b>", - "Display the number of entries that exist when using filtering", - "On brew add\/edit, the save or cancel button will be hidden as long as the keyboard is shown", - "Numeric keyboard for the grind size field - activate in settings", - "", - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.4.10": { - "TITLE": "Version 6.4.1: What's new?", - "DESCRIPTION": [ - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.4.20": { - "TITLE": "Version 6.4.2: What's new?", - "DESCRIPTION": [ - "Fixing crash on startup", - "Fixing recycle when a bluetooth scale could not connect" - ] - }, - "6.5.0": { - "TITLE": "Version 6.5.0: What's new?", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Support of DiFluid Microbalance aswell as Smart Chef Scale - Thanks to Yannick!", - "For Espresso: Activate in Settings, allow a brew to be automatically stopped when no flow rate is detected", - "Added warning popup, when Beanconqueror doesn't receive any weight updates from a scale", - "", - "Beans<\/b>", - "Share beans as an image now as well as a URL", - "", - "Xenia<\/b>", - "The pressure and temperature of a shot are now recorded as well", - "", - "Brews<\/b>", - "If a brew is stopped, the brew graph is now fully displayed", - "", - "Export\/Import<\/b>", - "Instead of a .json file we're now using .zip files, for data import and export", - "Please make sure to go to settings and do a one-time safety backup, combined with the already existing automatic backup to ensure data safety", - "", - "Improvements<\/b>", - "Small improvements", - "", - "Others<\/b>", - "Small bug fixes" - ] - }, - "6.5.1": { - "TITLE": "Version 6.5.1: What's new?", - "DESCRIPTION": [ - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.6.0": { - "TITLE": "Version 6.6.0: What's new?", - "DESCRIPTION": [ - "Refractometer<\/b>", - "Support of DiFluid R2- Thanks to Yannick!", - "", - "Bluetooth scales<\/b>", - "Support of Blackcoffee.io - Thanks to Yannick!", - "Tweaking the flow-rate for pour scales", - "", - "Brews<\/b>", - "Mark a brew for one bean as 'best brew' - Activatable in settings", - "Copy your notes in the detailview now", - "Filter your brews by the used profiles", - "Rate your brew directly by the list menu", - "Download the visualizer file now also in the detail view", - "", - "Xenia<\/b>", - "Script executes are now written into the notes", - "Setting the brew temperature of the machine when the brew starts", - "", - "Improvements<\/b>", - "Small improvements", - "", - "Others<\/b>", - "Small bug fixes" - ] - }, - "6.6.1": { - "TITLE": "", - "DESCRIPTION": [ - "", - "" - ] - }, - "6.6.2": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "[ANDROID]En raison de ces changements, la configuration minimale requise pour cette application a également dû être augmentée à Android 7.0.", - "", - "", - "", - "" - ] - }, - "7.0.0": { - "TITLE": "Version 7.0: What's new?", - "DESCRIPTION": [ - "Mode balance Bluetooth<\/b>", - "Démarrer la minuterie au premier changement de poids détecté - Activable dans les paramètres (nouveau bouton visible)", - "Ignorer le poids transmis actuel - par exemple, pour les tourbillons, les remous ou l'enlèvement de poids sans pic graphique intentionnel - Activable dans les paramètres (nouveau bouton visible).", - "", - "Balances Bluetooth<\/b>", - "Prise en charge d'une balance Bluetooth sans nom", - "Lors de la connexion d'une balance DiFluid Microbalance ou Felicita, le délai de commande est réglé directement", - "", - "Zone graphique<\/b>", - "Activer la zone graphique dans les paramètres", - "Définir un graphique d'infusion pour qu'une nouvelle infusion suive", - "Les graphiques peuvent provenir d'une infusion ou de la zone graphique individuelle", - "Télécharge ton propre graphique - Exporte un fichier .JSON de tes infusions", - "", - "Visualizer<\/b>", - "Télécharger automatiquement dans Visualizer chaque nouvelle infusion avec un graphique connecté - Activable dans les paramètres", - "Téléchargement manuel de tous les brassins vers le Visualizer si nécessaire", - "Merci à Miha pour son soutien !", - "", - "Infusions<\/b>", - "Répéter une infusion à partir de la vue détaillée", - "La première goutte peut désormais être activée pour une méthode de préparation, même s'il ne s'agit pas d'une méthode d'espresso (par exemple, Pulsar).", - "Affichage du débit d'infusion avec une balance connectée dans la vue agrandie", - "Les dernières infusions sont désormais triées par ordre alphabétique et la dernière date utilisée est affichée", - "Le débit en temps réel avec une balance connectée indique maintenant des valeurs inférieures à 1g\/s pour l'espresso", - "", - "Grains<\/b>", - "Répéter le dernier brassage ou le meilleur brassage à partir de la carte de visualisation des grains.", - "", - "Méthode de préparation<\/b>", - "Les outils de préparation sont maintenant triés par ordre alphabétique et peuvent être filtrés", - "La dernière utilisation de la méthodologie de préparation est désormais affichée lorsqu'elle est sélectionnée", - "", - "Moulins", - "La dernière taille de mouture et la dernière utilisation sont désormais visibles lors de la sélection d'un moulin", - "", - "Xenia<\/b>", - "Correction d'un bug : Les scripts désactivés ne sont plus exécutés.", - "", - "Paramètres<\/b>", - "Affichage d'un message de sécurité en cas de modification d'un brassin ou d'un grain - Activable dans les réglages", - "Définis tes axes de départ individuels X et Y pour les brassages avec des appareils Bluetooth", - "", - "Ionic 7<\/b>", - "Mise à jour de Ionic 6 à Ionic 7", - "[IOS]La version minimale d'iOS est désormais iOS 14", - "[ANDROID]La version minimale d'Android est désormais Android 7.1", - "", - "Lokalise<\/b>", - "Utilisation de Lokalise pour toutes les traductions - Un grand merci à Yannick", - "Tu veux aussi traduire ? Avec Localize, c'est maintenant facile. Contacte-nous : info@beanconqueror.com", - "", - " Autre <\/b>", - "Corrections de bugs mineurs", - "" - ] - }, - "7.1.0": { - "TITLE": "Version 7.1.0: What's new", - "DESCRIPTION": [ - " Plus de langues <\/b>", - "Traduction française - Merci à Yannick", - "Soutien de l'Indonésien - Merci à Bondan, Ganjar", - "", - "Balances Bluetooth<\/b>", - "Prise en charge d'une nouvelle balance DIY-Bluetooth (firmware Rust & Python)", - "Prise en charge de DiFluid Microbalance Ti", - "Améliorer le calcul des débits à toutes les balances", - "", - "Zone graphique<\/b>", - "Ajout de plus d'informations à la carte de référence de choix", - "", - "Infusions<\/b>", - "Balances Bluetooth - Ajout d'un bouton de tarage en haut de la toolbar", - "", - "Grains<\/b>", - "Prise en charge de la copie des informations de variété", - "", - " Section Eau <\/b>", - "Paramètre de potassium ajouté", - "", - "Moulins", - "Le paramètre RPM est désormais visible dans la vue de liste et la vue de sélection", - "", - "Paramètres<\/b>", - "Définis ton propre axe de temps pour le filtre ou l'espresso avec des appareils bluetooth connectés", - "Ajout de différents formats de date pour correspondre également au format américain", - "", - " Autre <\/b>", - "Corrections de bugs mineurs" - ] - }, - "7.2.0": { - "TITLE": "Version 7.2.0: What's new", - "DESCRIPTION": [ - " Plus de langues <\/b>", - "Traction italienne - Merci à Cancercookie", - "Traduction polonaise - Merci à Marcin Sachs", - "", - "Balances Bluetooth<\/b>", - "La minuterie attendra, jusqu’à ce que la balance signale plusieurs rapports de poids 0, lorsque vous réglez 'Balance de tare lors du démarrage de la minuterie'", - "", - "Xenia<\/b>", - "Ajout d'une bascule pour l'utilisation des API V1 et V2", - "Ajout d'une fonction \"Brew By Weight\" avec calcul automatique pour arrêter le tir sur le poids souhaité", - "", - "Meticulous<\/b>", - "Première intégration Meticulous - Merci à toute l'équipe Meticulous !", - "", - "Paramètres<\/b>", - "Définir un seuil pour que la première goutte compte", - "", - " Autre <\/b>", - "Quelques changements techniques dans le code", - "Petits ajustements", - "[IOS]Affichage de popups si l'accès à la base de données n'a pas pu être établi.", - "", - " Merci <\/b>", - "Un grand merci à tous les traducteurs qui font des efforts considérables pour rendre l'application disponible dans plusieurs langues." - ] - } - }, "CUSTOM_PARAMETERS": "Personnaliser les paramètres", "CUSTOM_DEFAULT_PARAMETERS": "Défaut", "CUSTOM_MANAGE_PARAMETERS": "Gérer", @@ -1458,7 +845,7 @@ "LOCATION": "Pour trouver des balances Bluetooth, l'application doit accéder à l'emplacement.", "BLUETOOTH": "Pour trouver des balances Bluetooth, l'application doit accéder à bluetooth." }, - "INFORMATION_DESCRIPTION": "Les balances supportées sont : Decent Scale, Acaia, Felicita, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti, Smartchef Scale, Blackcoffee.io et Eureka Precisa. Remarque : Si la Eureka Precisa reçoit une valeur négative, le minuteur s'arrête" + "INFORMATION_DESCRIPTION": "Les balances supportées sont : Decent Scale, Acaia, Felicita, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti, Smartchef Scale, Blackcoffee.io, Bookoo Mini Scale et Eureka Precisa. Remarque : Si la Eureka Precisa reçoit une valeur négative, le minuteur s'arrête" }, "QR": { "WRONG_QRCODE_DESCRIPTION": "Code QR invalide ou contenu non reconnu", @@ -1561,7 +948,7 @@ "DISCONNECTED_SUCCESSFULLY": "Appareil à pression déconnectée", "DISCONNECTED_UNPLANNED": "Appareil de pression déconnecté de manière inattendue", "STAY_CONNECTED_ON_APP_MINIMIZE": "Garder l'appareil de pression connecté même lorsque l'application est en arrière-plan", - "INFORMATION_DESCRIPTION": "Les appareils supportés sont : Popsicle, Pressensor, Smart Espresso Profiler", + "INFORMATION_DESCRIPTION": "Les appareils supportés sont : Popsicle, Pressensor, Smart Espresso Profiler, Bookoo Espresso Monitor", "BLUETOOTH_SCAN_RUNNING": "Recherche d'appareil de pression pour jusqu'à 60s", "BLUETOOTH_NOT_ENABLED": "Bluetooth n'est pas activé, veuillez l'activer pour qu'il fonctionne correctement", "REQUEST_PERMISSION": { @@ -1835,5 +1222,89 @@ "STARTING_IN": "Partir à {{time}}", "IOS_DATABASE_ISSUE_TITLE": "ATTENTION !!!!! - CONNEXION À LA BASE DE DONNÉES PERDUE", "IOS_DATABASE_ISSUE_DESCRIPTION": "Nous avons le regret de vous informer que nous avons rencontré une perte de connexion à la base de données. Ce problème est le résultat d'un bug non résolu dans le système Apple, indépendant de la volonté de Beanconqueror. Pour éviter toute perte potentielle de données, nous vous demandons de bien vouloir fermer immédiatement de force l'application Beanconqueror et de la rouvrir.", - "RELOAD_APP": "Recharger l'application maintenant" + "RELOAD_APP": "Recharger l'application maintenant", + "WATER_TYPE_ADD_CUSTOM": "Eau personnalisée", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "Ajouter de l'eau", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "FORT
sous-extrait", + "EXTRACTION_CHART_LABEL_STRONG": "FORT
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "FORT
dur", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "sous-extrait", + "EXTRACTION_CHART_LABEL_IDEAL": "IDÉAL", + "EXTRACTION_CHART_LABEL_HARSH": "dur", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "FAIBLE
sous-extrait", + "EXTRACTION_CHART_LABEL_WEAK": "Faible
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "FAIBLE
dur", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "Synthèse vocale", + "TEXT_TO_SPEECH": { + "ACTIVATE": "Activer la synthèse vocale", + "BREW_STARTED": "Infusion commencée", + "BREW_ENDED": "Fin de l’infusion", + "TIME": "Temps", + "SPEAK_EVERY_MS": "Parler toutes les millisecondes sélectionnées", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "Les numéros suivants seront testés à l'oral", + "TEST_SPEAK": "Commencer le test parler", + "PITCH": "Pitch", + "RATE": "Taux" + }, + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "Retour haptique", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "Activer le retour haptique", + "BREW_STARTED": "Vibrer au démarrage de l'infusion", + "BREW_STOPPED": "Vibrer à l'arrêt de l'infusion", + "TARE": "Vibrer sur la tare de la balance" + }, + "CONNECTED": "Connectée", + "DISCONNECTED": "Déconnecté", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "Ceci est une fonctionnalité expérimentale", + "SHOW_HOURS": "Afficher les heures", + "SHOW_MINUTES": "Afficher les minutes", + "BEANS_UNARCHIVE": "Désarchiver", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "Le grain a été désarchivé", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "Version 7.3.0: What's new?", + "DESCRIPTION": [ + "Section Eau - Ajout de \"Third Wave Water\"<\/b>", + "Trouve tous tes profils de Third Wave Water préférés dans la sélection d'eau", + "", + "Balances Bluetooth<\/b>", + "Support de Bookoo-Scale - Merci à Yannick !", + "", + "Appareil à pression<\/b>", + "Support de Bookoo-Pressure Sensor - Merci à Yannick !", + "Veuillez noter que le seuil de démarrage automatique actuel n'est pas actuellement pris en charge.", + "", + " Moteur haptique <\/b>", + "Le téléphone va vibrer lorsque quand une infusion est commencé - Fonction expérimentale - Activer dans les paramètres", + "", + "[IOS]Synthèse vocale<\/b>", + "[IOS] Activer la synthèse vocale et énoncer toutes les valeurs de poids de la balance ainsi que la minuterie d’infusion - Fonction expérimentale - Activer dans les paramètres", + "", + "Visualizer<\/b>", + "Envoyer le rendement d'extraction au Visualizer", + "", + "Images<\/b>", + "Peut maintenant être trié à gauche ou à droite", + "", + "Infuser<\/b>", + "Lors de l'ouverture de la minuterie, la mise au point des secondes se fait directement", + "Masquer les heures ou les minutes dans la fenêtre de la minuterie", + "Afficher l’icône si le porte-filtre Xenia ou Méticuleux est connecté ou déconnecté dans la barre d’outils", + "Correction du problème qui empêchait de sauvegarder une infusion en mode édition lorsque la section \"pendant l'infusion\" n'était pas visible", + "", + "Bean<\/b>", + "Désarchiver un grain dans la liste d'actions", + "", + " Autre <\/b>", + "Quelques changements techniques dans le code", + "Petits ajustements" + ] + } + } } \ No newline at end of file diff --git a/src/assets/i18n/id.json b/src/assets/i18n/id.json index ed56d5861..a83a2a9c4 100644 --- a/src/assets/i18n/id.json +++ b/src/assets/i18n/id.json @@ -471,619 +471,6 @@ "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "Simpan jumlah konsumsi kafein", "UPDATE_TITLE": "Apa yang baru?", "NEXT": "Selanjutnya", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "Version 5.0: What's new?", - "DESCRIPTION": [ - "New layout, new icons, new colors, new logo", - "New preparation methods", - "Preparations now can be categorized (percolation, espresso, full immersion)", - "Preparation can now inherit tools (e.g. different filters)", - "Preparation parameter can now be customized, define your own workflow for each preparation", - "Added more editable bean information, different sorts can now be added", - "Amount of water field is available for percolation\/full immersion", - "Where did you brew your best coffee? Active coordinate saving in settings", - "Activate fast repeat to add brews instant", - "Added update screen to show the latest changes", - "Question added to rate the app after 25 uses", - "Added sorting for beans", - "Added search panel for brews\/beans", - "Cupping chart is added to brew details", - "Left over beans weight added on homescreen", - "Added typeahead for roasters", - "Rating moved to stars instead of icons" - ] - }, - "5.1.0": { - "TITLE": "Version 5.1: What's new?", - "DESCRIPTION": [ - "New timepicker for brews", - "Roasting date can now be again selected on iOS", - "Images can be choosen again on iPad", - "TDS calculation is now again visible on beverage quantity", - "Safe zones added for iOS-devices" - ] - }, - "5.2.0": { - "TITLE": "Version 5.2: What's new?", - "DESCRIPTION": [ - "Brews:<\/b>", - "Brew timer continues in the background", - "Brews can be favored", - "Screen for adding and editing a brew looks identical", - "Display can stay active during brewing (can be activated in the settings menu)", - "List of recent brews now also shows archived brews", - "", - "Beans:<\/b>", - "Bean photos are shown in the overview", - "Beans can be rated", - "", - "Interactions:<\/b>", - "Long press on a card leads to the edit view", - "Detail view can be accessed via click on the card", - "Github \/ Facebook \/ Instagram accounts linked", - "", - "Bugfixes:<\/b>", - "Bean information have been copied incorrect", - "Brew amount was activated by default for new users", - "", - "Other:<\/b>", - "Apple Healthkit integration (can be activated in the settings menu)", - "Cleanups", - "Layout changes", - "Extension of statistics", - "Startup check revised", - "Support for different card sized for brews and beans" - ] - }, - "5.3.1": { - "TITLE": "Version 5.3: What's new?", - "DESCRIPTION": [ - "Brew methods:<\/b>", - "Changes to the card view", - "Custom images can be attached in the edit screen", - "Brew tools will be saved in edit screen, even when '+' is not pressed", - "", - "Grinders:<\/b>", - "Custom images can be attached in the edit screen", - "", - "Brews:<\/b>", - "Parameter 'Attachments' renamed in 'Attachments \/ Photos'", - "", - "Dashboard:<\/b>", - "If bean amount is less then 1000g, the number will be written as a whole", - "", - "Bug fixes:<\/b>", - "Editing via a long-press, does not change information any more", - "Information on the dashboard are updated after made changes", - "Multiple variety information with blends can be saved again", - "Added startup error message if app-data is missing" - ] - }, - "5.4.0": { - "TITLE": "Version 5.4: What's new?", - "DESCRIPTION": [ - "Roasting section:<\/b>", - "Manage all of your green beans and roasters (can be activated in the settings menu)", - "Save all of your green beans and transfer them into roasted onces", - "Add your roaster and connect them with your different kind of roasted beans", - "", - "Website:<\/b>", - "Go live of our new website! -> https:\/\/beanconqueror.com", - "", - "Support us:<\/b>", - "You've always wanted to support Beanconqueror? We've added a new 'Buy me a coffee' connection", - "", - "iOS - iCloud:<\/b>", - "The first step into iCloud support was made. At the very first start all of your existing app data will be moved into the support iCloud directory.", - "You have to activate this option in the iCloud Settings first in order to save Beanconqueror on iCloud", - "", - "Android\/iOS - Automated file-export:<\/b>", - "Automated Beanconqueror.json-File is saved for a maximum of 7 days, after that they will be automated deleted again", - "Android: Download\/Beanconqueror_export\/Beanconqueror_automatic_export_DAY.json", - "iOS: Files\/Download\/Beanconqueror_export\/Beanconqueror_automatic_export_FILE.json", - "", - "Settings:<\/b>", - "Excel - Export all of your data to excel to work with it even further", - "Define your own image quality between 50% to 100% (default 100%)", - "Brew rating - Define how much stars\/points you'd like to set for each brew. Minimum 5, maximum 100", - "", - "New tracking:<\/b>", - "We've changed to our open source service Matomo, which will be hosted on our own server", - "Removed Google Analytics \/ Firebase", - "", - "Bug fixes:<\/b>", - "Apple Healthkit - Settings were not saved", - "Sometimes brew rating stars weren't filled (Brew add\/edit)", - "Edit via long tap, screen wasn't scrollable", - "Import of bigger files on iOS led to misconduct", - "Delete procedure of beans \/ preparations or mills were not consistent and lead to graphical issues", - "Wrong calculation of beverage quantity in statistics and list views", - "", - "Share:<\/b>", - "Share your brews and beans with all coffee lovers!", - "", - "Other:<\/b>", - "Clean ups", - "Layout changes", - "Extension of statistics", - "Startup check revised, added please wait window", - "Some label changes", - "Changed data access \/ order inside app to reduce problems" - ] - }, - "6.0.0": { - "TITLE": "Version 6.0: What's new?", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Support of the first bluetooth scale - Decent-Scale - Big thanks to Decent Espresso", - "Support of Acaia Lunar", - "", - "Aroma cupping<\/b>", - "Cup each brew with the different aromatics and flavors", - "", - "Water section<\/b>", - "Add your own water, activate this section in the settings", - "", - "Support of more languages<\/b>", - "Support for spanish - Big thanks to Frank!", - "", - "Improvements<\/b>", - "Support of long press '+' on brews", - "Added new brew parameters", - "Support of different currencies", - "Edit brew while in detail view", - "Choose multiple images at once", - "Support of brix to TDS conversion", - "If bean package is empty, you'll be asked if you want to archive the package on the last brew", - "Reset of roastdate supported", - "Support of detail views on beans, grinders and preparation methods", - "Added brew ratio (g\/l)", - "", - "iOS<\/b>", - "Support of safe areas", - "", - "Bug fixes<\/b>", - "Apple Healthkit - Decaffeinated coffee was saved", - "Copy of beans led to misconduct", - "Added brew time to excel export", - "Small bug fixes", - "", - "Others<\/b>", - "Beans, grinders and preparation methods are now sorted alphabetic in dropdowns" - ] - }, - "6.1.0": { - "TITLE": "Version 6.1: What's new?", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Scan your coffee bags! All coffee information are directly inserted from the roastery.", - "", - "Bluetooth scales<\/b>", - "Support of Acaia Pearl 2021 - Thanks to Micah and Mike", - "Support of Acaia Lunar 2021 - Thanks to Micah and Mike", - "Support of Acaia Pyxis - Thanks to Micah and Mike", - "Support of Hiroia Jimmy - Thanks to Silas", - "Support of Felicita Arc - Thanks to Herman", - "Care: Acaia Pearl < 2021 is not supported right now", - "Weightinformation of bluetooth scale can now be used on the beans page", - "Weight changes are now visible without starting a brew via timer", - "", - "Brew overview<\/b>", - "Customize your visible brew parameters in the overview in general or for each preparation method", - "Preparation images are now visible in the listview", - "", - "Brew graph<\/b>", - "Rework of brew graph to a more smoother solution", - "Brew graph now can be maximized", - "Brew graph can now be zoomed in the brew-detail view aswell as exported", - "Average flow quantity is now displayed", - "", - "Beans<\/b>", - "Added fields: Buy date, FOB-Price, Purchasing price", - "Beans can now be favorited and filtered", - "If a bean gets archived, you can now rate the package aswell", - "Pressing '+' you can now choose to add or scan a new package", - "Long press '+' to directly add a new bean", - "", - "Preparation methods<\/b>", - "Preparation methods can now be repeated with all settings", - "More preparation methods are available - Thanks to Nicola", - "Selecting a preparation method also displays the image", - "", - "Settings<\/b>", - "Ratings can now be stepped (1, 0.75, 0.5, 0.25, 0.1)", - "Bluetooth scale - Define if the scale should be set to weight zero when starting a new brew, or starting the timer", - "Bluetooth scale - Define if you want to ignore anomalies or negative values - if yes, a live graph won't be possible", - "Choose now, if you want to see archived brews on the home page", - "Export also now exports the raw data of the saved bluetooth values", - "", - "Improvements<\/b>", - "Delete of preparation method tools now won't delete brews anymore", - "Preparation method tools now can be edited and archived", - "", - "Bug fixes:<\/b>", - "Found more issues which could lead to a data loss", - "Small bug fixes", - "", - "Others:<\/b>", - "Updating to Ionic-Framework 6, therefore some small visual changes takes place" - ] - }, - "6.1.3": { - "TITLE": "Version 6.1.3: What's new?", - "DESCRIPTION": [ - "Android - Attention<\/b>", - "In first please: Sorry!", - "Sadly the database was resetted from going form APK to AAB format on Android Play Store, and your app will propably start without data.", - "I could not debug or control this situation, while development everything worked as expected", - "If your app started blank, please go into settings and import the file below 'Download\/Beanconqueror_export\/Beanconqueror_automatic_export_*.json' * stands for the latest timestamp, the backup.", - "All datas should then be back as normal, if not please write me an e-mail: info@beanconqueror.com." - ] - }, - "6.1.5": { - "TITLE": "Version 6.1.5: What's new?", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Reload beans which where scanned via qr-codes", - "", - "Brew graph<\/b>", - "Water flow is calculated now in realtime", - "", - "Beans<\/b>", - "Search beans now in selection", - "", - "Bug fixes<\/b>", - "After taking a picture, the loading spinner didn't disappear", - "Smaller bugfixes" - ] - }, - "6.2.0": { - "TITLE": "Version 6.2.0: Thats new", - "DESCRIPTION": [ - "Pressure devices<\/b>", - "Support of 'Do it yourself' Popsicle - Sensor - Thanks to Mike and Shay", - "Autostart timer on a specific pressure - editable in settings", - "Press of pressure gauge, will reset pressure to 0", - "Display name of pressure device and mac-address on connect", - "", - "Bluetooth scales<\/b>", - "Support of Eureka Precisa - Thanks to Mimoja", - "Define the behavior of the bluetooth scale on a new brew - editable in settings", - "Define which graphs should be displayed on filter or espresso - editable in settings", - "Sequential processing of bluetooth commands to reduce issues", - "Display name of bluetooth scale and mac-address on connect", - "", - "Brews<\/b>", - "Supports now milliseconds - Activate in settings", - "Filtersystem expanded, search for roast type and roastery", - "You can reconnect your bluetooth scale or pressure device on the brew add\/edit page", - "", - "Beans<\/b>", - "Share your bean (without server needed) - Thanks to Mike", - "Show all brews to your bean", - "Support bean rating like for brews - editable in settings", - "", - "More languages<\/b>", - "Support of Turkish - Thanks to Halil Portakal", - "Support of Chinese - Thanks to Jiageng", - "", - "Mills<\/b>", - "Display of the last used grind setting, aswell as the last used bean", - "", - "Improvements<\/b>", - "Error message when a bean is scanned, which has not been approved yet", - "The edit of the brew-date is not activated by default", - "", - "Others<\/b>", - "Typos fixed", - "Fixed an issue that you didn't see the star-rating even with normal settings", - "Older brew graphics can now be exported again", - "Update to Ionic 6.3.0", - "Smaller bug fixes" - ] - }, - "6.3.0": { - "TITLE": "Version 6.3.0: Thats new", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Define how long shall be waited until the next bluetooth command", - "", - "Brews<\/b>", - "Reset the Brewtime dates", - "If Bluetooth-Scale connected, the last brew weight will be displayed in the tile", - "Bigger buttons on the maximized brew graph", - "Choose excel or json by downloading the brew data", - "Bean pictures can now be displayed, instead of preparation method icons\/pictures -> Activate in the settings", - "", - "Beans<\/b>", - "Beans can now be searched by their varieties", - "", - "Mills<\/b>", - "Displaying notes inside the list and detail view", - "", - "Improvements<\/b>", - "Choose how many milliseconds shall be displayed (Entered values still need to be 3 decimal places)", - "Added donation buttons", - "Text Areas are now scrollable", - "Brewtime at statistics are now formatted", - "Notification popups appear now on top and can be closed by X", - "Disabled detail parameter are active now, e.g. can now be the Grinder be hidden", - "Analytics can be deactivated or activated", - "", - "Others:<\/b>", - "Typos fixed", - "Update to Ionic 6.4.0", - "Smaller bug fixes" - ] - }, - "6.4.0": { - "TITLE": "Version 6.4.0: What's new?", - "DESCRIPTION": [ - "Bluetooth thermometers<\/b>", - "Support for ETI Ltd thermometers (ThermaQ Blue, BlueTherm, etc) - Sensors - Thanks to Myles", - "Autostart timer on a specific temperature - editable in settings", - "", - "Bluetooth scales<\/b>", - "Support of Skale 2", - "If a bluetooth scale wants to reset a brew, the user will get an approval dialogue", - "", - "Visualizer<\/b>", - "Upload your recorded brews with used bluetooth-devices manually to visualizer.coffee - Thanks to Miha for your support", - "(Step 2: Automatic upload)", - "", - "Bean<\/b>", - "Bean parameters and list parameters can now be individualized and changed", - "Beans can now be filtered by roast degree", - "Bean page can now be set as starting page - see settings", - "Type ahead fields for specific fields added, e.g. Variety", - "Bean variety information can now be searched with free text", - "", - "Brews<\/b>", - "New button, where a preparation method can be chosen directly", - "Individualize which parameters shall be preset when choosing 'Repeat' - Default: all", - "Added a filter for all brews which have bluetooth device data attached", - "Re-work of live brew graphic", - "Added brew-ratio calculator for brew add\/edit to enable faster calculation", - "Pressing 'Save' will stop the timer", - "", - "Discord<\/b>", - "Join the Beanconqueror Discord Server to discuss, report bugs, as questions or give feedback", - "", - "Android<\/b>", - "Sharing functionality is working again", - "Export and import your brew graphs", - "", - "Improvements<\/b>", - "Display the number of entries that exist when using filtering", - "On brew add\/edit, the save or cancel button will be hidden as long as the keyboard is shown", - "Numeric keyboard for the grind size field - activate in settings", - "", - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.4.10": { - "TITLE": "Version 6.4.1: What's new?", - "DESCRIPTION": [ - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.4.20": { - "TITLE": "Version 6.4.2: What's new?", - "DESCRIPTION": [ - "Fixing crash on startup", - "Fixing recycle when a bluetooth scale could not connect" - ] - }, - "6.5.0": { - "TITLE": "Version 6.5.0: What's new?", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Support of DiFluid Microbalance aswell as Smart Chef Scale - Thanks to Yannick!", - "For Espresso: Activate in Settings, allow a brew to be automatically stopped when no flow rate is detected", - "Added warning popup, when Beanconqueror doesn't receive any weight updates from a scale", - "", - "Beans<\/b>", - "Share beans as an image now as well as a URL", - "", - "Xenia<\/b>", - "The pressure and temperature of a shot are now recorded as well", - "", - "Brews<\/b>", - "If a brew is stopped, the brew graph is now fully displayed", - "", - "Export\/Import<\/b>", - "Instead of a .json file we're now using .zip files, for data import and export", - "Please make sure to go to settings and do a one-time safety backup, combined with the already existing automatic backup to ensure data safety", - "", - "Improvements<\/b>", - "Small improvements", - "", - "Others<\/b>", - "Small bug fixes" - ] - }, - "6.5.1": { - "TITLE": "Version 6.5.1: What's new?", - "DESCRIPTION": [ - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.6.0": { - "TITLE": "Version 6.6.0: What's new?", - "DESCRIPTION": [ - "Refractometer<\/b>", - "Support of DiFluid R2- Thanks to Yannick!", - "", - "Bluetooth scales<\/b>", - "Support of Blackcoffee.io - Thanks to Yannick!", - "Tweaking the flow-rate for pour scales", - "", - "Brews<\/b>", - "Mark a brew for one bean as 'best brew' - Activatable in settings", - "Copy your notes in the detailview now", - "Filter your brews by the used profiles", - "Rate your brew directly by the list menu", - "Download the visualizer file now also in the detail view", - "", - "Xenia<\/b>", - "Script executes are now written into the notes", - "Setting the brew temperature of the machine when the brew starts", - "", - "Improvements<\/b>", - "Small improvements", - "", - "Others<\/b>", - "Small bug fixes" - ] - }, - "6.6.1": { - "TITLE": "Version 6.6.1: What's new?", - "DESCRIPTION": [ - "Others:<\/b>", - "Small bug fixes" - ] - }, - "6.6.2": { - "TITLE": "Versi 6.6.2: Apa yang baru", - "DESCRIPTION": [ - "", - "[ANDROID]Karena perubahan izin sistem file di Android, jalur akses untuk cara file dicadangkan dan diimpor harus direvisi. Selain itu, akses kamera dan gambar tidak lagi berfungsi di perangkat Android 13 dan telah diperbaiki dengan pembaruan ini.", - "[ANDROID]Karena perubahan ini, persyaratan minimum untuk aplikasi ini juga harus dinaikkan ke Android 7.0.", - "[ANDROID]Anda dapat mengetahui cara kerja Impor\/Ekspor sekarang di sini: https:\/\/beanconqueror.com\/faq", - "", - "", - "[IOS]Karena perubahan perpustakaan di cordova, ini adalah rilis yang cocok dengan semua ini :)" - ] - }, - "7.0.0": { - "TITLE": "Versi 7.00: Apa yang baru", - "DESCRIPTION": [ - "", - "Mulai pengatur waktu pada perubahan berat pertama yang terdeteksi - Dapat diaktifkan di pengaturan (tombol baru terlihat)", - "Abaikan beban yang ditransmisikan saat ini - misalnya, untuk berputar, mengaduk, atau menghilangkan beban tanpa lonjakan grafik yang disengaja - Dapat diaktifkan di pengaturan (tombol baru terlihat)", - "", - "Timbangan Bluetooth<\/b>", - "Dukungan untuk skala Bluetooth-Tanpa Nama", - "Saat menghubungkan skala DiFluid Microbalance atau Felicita, penundaan perintah diatur secara langsung", - "", - "", - "Aktifkan area grafik di pengaturan", - "Tetapkan grafik minuman untuk minuman baru untuk mengikutinya", - "Grafik dapat berasal dari minuman atau dari area grafik individual", - "Unggah grafik Anda sendiri - Ekspor file .JSON dari minuman Anda", - "", - "Visualizer<\/b>", - "Secara otomatis mengunggah setiap minuman baru dengan grafik yang terhubung ke Visualizer - Dapat diaktifkan di pengaturan", - "Unggah semua minuman secara manual ke Visualizer jika diperlukan", - "Terima kasih kepada Miha atas dukungannya!", - "", - "Seduhan<\/b>", - "Ulangi seduhan dari tampilan detail", - "Tetesan pertama sekarang dapat diaktifkan untuk metode seduhan, meskipun itu bukan metode espresso (misalnya Pulsar)", - "Tampilan laju seduhan dengan timbangan terhubung dalam tampilan maksimal", - "Seduhan terakhir sekarang diurutkan berdasarkan abjad, dan tanggal terakhir digunakan ditampilkan", - "Real-time flow dengan skala yang terhubung kini menunjukkan nilai di bawah 1g\/s untuk espresso", - "", - "Biji<\/b>", - "Ulangi seduhan terakhir atau seduhan terbaik dari kartu tampilan kopi", - "", - "Metode seduh<\/b>", - "Alat seduh sekarang diurutkan berdasarkan abjad dan dapat disaring", - "Penggunaan terakhir dari metode seduh sekarang ditampilkan ketika dipilih", - "", - "", - "Ukuran penggilingan terakhir dan penggunaan terakhir kini terlihat saat memilih penggiling", - "", - "", - "", - "", - "Pengaturan<\/b>", - "Tampilkan prompt keamanan jika Anda telah membuat perubahan pada minuman atau kacang - Dapat diaktifkan di pengaturan", - "Sekarang atur sumbu-X dan sumbu-Y secara individual untuk seduhan dengan perangkat bluetooth", - "", - "", - "Pembaruan dari Ionic 6 ke Ionic 7", - "[IOS]Versi minimum untuk iOS sekarang adalah iOS 14", - "[ANDROID]Versi minimum untuk Android sekarang adalah Android 7.1", - "", - "", - "Penggunaan Lokalise untuk semua terjemahan - Terima kasih banyak kepada Yannick", - "Ingin menerjemahkan juga? Dengan Lokalisasi, sekarang menjadi mudah. Hubungi kami: info@beanconqueror.com", - "", - "Lainnya<\/b>", - "", - "" - ] - }, - "7.1.0": { - "TITLE": "Versi 7.1.0: Apa yang baru", - "DESCRIPTION": [ - "Lebih banyak bahasa<\/b>", - "Dukungan Perancis - Terima kasih kepada Yannick", - "Dukungan Bahasa Indonesia - Terima kasih Bondan, Ganjar", - "", - "Mendukung timbangan Bluetooth DIY (Firmware Rust & Python)", - "Dukungan DiFluid Microbalance Ti", - "Meningkatkan perhitungan flow-rate untuk semua timbangan", - "Meningkatkan perhitungan aliran untuk semua skala", - "", - "Menambahkan lebih banyak informasi ke kartu referensi pemilihan", - "Menambahkan lebih banyak informasi ke kartu referensi pemilihan", - "", - "Bluetooth-Scales - Menambahkan tombol taring ke bagian atas toolbar", - "Bluetooth-Scales - Menambahkan tombol taring ke bagian atas toolbar", - "", - "Dukungan menyalin berbagai informasi", - "Dukungan menyalin berbagai informasi", - "", - "Parameter potassium telah ditambahkan", - "Menambahkan parameter potasium", - "", - "Parameter RPM sekarang terlihat dalam tampilan daftar dan tampilan pilihan", - "Parameter RPM kini terlihat di tampilan berderet dan tampilan pilihan", - "", - "Tentukan sumbu waktu Anda sendiri untuk filter atau espresso dengan perangkat bluetooth yang terhubung", - "Menambahkan format tanggal yang berbeda agar sesuai dengan format Amerika", - "Menambahkan format tanggal yang berbeda agar sesuai dengan format Amerika", - "", - "Perbaikan bug minor", - "Perbaikan bug kecil" - ] - }, - "7.2.0": { - "TITLE": "Versi 7.2.0: Apa yang baru", - "DESCRIPTION": [ - "Lebih banyak bahasa<\/b>", - "Dukungan bahasa Italia - Terima kasih kepada Cancercookie", - "Dukungan Polandia - Terima kasih kepada MarcinSachs", - "", - "Timbangan Bluetooth<\/b>", - "Waktu mulai akan menunggu hingga timbangan menginformasikan berat 0, saat Anda menyetel 'Tare timbangan saat memulai timer'", - "", - "Xenia<\/b>", - "Menambahkan tombol untuk penggunaan Api V1 dan V2", - "Menambahkan fitur Brew Berdasarkan Berat dengan perhitungan otomatis untuk menghentikan pada berat seduhan yang diinginkan", - "", - "Meticulous<\/b>", - "Integrasi Meticulous pertama - Terima kasih kepada seluruh Tim Meticulous!", - "", - "Pengaturan<\/b>", - "Tentukan ambang batas penghitungan tetesan pertama", - "", - "Lainnya<\/b>", - "Beberapa perubahan teknis dalam kode", - "Perubahan kecil", - "[IOS]Menampilkan popup jika akses database tidak dapat dilakukan.", - "", - "Terimakasih!<\/b>", - "Terima kasih sebesar-besarnya kepada semua penerjemah yang berupaya keras membuat aplikasi ini tersedia dalam berbagai bahasa." - ] - } - }, "CUSTOM_PARAMETERS": "Sesuaikan parameter", "CUSTOM_DEFAULT_PARAMETERS": "Default", "CUSTOM_MANAGE_PARAMETERS": "Atur", @@ -1458,7 +845,7 @@ "LOCATION": "Untuk mencari timbangan bluetooth, aplikasi perlu akses lokasi.", "BLUETOOTH": "Untuk mencari timbangan bluetooth, aplikasi perlu akses ke bluetooth" }, - "INFORMATION_DESCRIPTION": "Timbangan yang didukung: Decent Scale, Acaia, Felicita, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti,Smartchef Scale and Eureka Precisa. Catatan: Jika Eureka Precisa menerima nilai negatif, pengatur waktu akan berhenti." + "INFORMATION_DESCRIPTION": "Timbangan yang didukung: Decent Scale, Acaia, Felicita, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti,Smartchef Scale, Blackcoffee.io, Bookoo Mini Scale and Eureka Precisa. Catatan: Jika Eureka Precisa menerima nilai negatif, pengatur waktu akan berhenti." }, "QR": { "WRONG_QRCODE_DESCRIPTION": "Kode QR tidak valid atau konten tidak dikenal", @@ -1561,7 +948,7 @@ "DISCONNECTED_SUCCESSFULLY": "Perangkat tekanan terputus", "DISCONNECTED_UNPLANNED": "Perangkat tekanan terputus secara tak terduga", "STAY_CONNECTED_ON_APP_MINIMIZE": "Tetap terhubung dengan perangkat tekanan bahkan saat aplikasi di-minimize", - "INFORMATION_DESCRIPTION": "Perangkat yang didukung: Popsicle, Pressensor, Smart Espresso Profiler", + "INFORMATION_DESCRIPTION": "Perangkat yang didukung: Popsicle, Pressensor, Smart Espresso Profiler, Bookoo Espresso Monitor", "BLUETOOTH_SCAN_RUNNING": "Mencari perangkat tekanan hingga 60 detik", "BLUETOOTH_NOT_ENABLED": "Bluetooth tidak diaktifkan, harap aktifkan agar berfungsi dengan benar", "REQUEST_PERMISSION": { @@ -1835,5 +1222,89 @@ "STARTING_IN": "Mulai dari ... {{time}}", "IOS_DATABASE_ISSUE_TITLE": "PERHATIAN !!!!! - KONEKSI DATABASE TERPUTUS", "IOS_DATABASE_ISSUE_DESCRIPTION": "Dengan menyesal kami informasikan bahwa kami mengalami kehilangan koneksi ke Database. Masalah ini merupakan hasil dari bug yang belum terselesaikan di sistem Apple, di luar kendali Beanconqueror. Untuk mencegah potensi kehilangan data, kami meminta Anda untuk segera menutup paksa aplikasi Beanconqueror dan membukanya kembali.", - "RELOAD_APP": "Muat ulang aplikasi sekarang" + "RELOAD_APP": "Muat ulang aplikasi sekarang", + "WATER_TYPE_ADD_CUSTOM": "Air khusus", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "Tambahkan air", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "KUAT
kurang diekstraksi", + "EXTRACTION_CHART_LABEL_STRONG": "KUAT
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "KUAT
keras", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "kurang diekstraksi", + "EXTRACTION_CHART_LABEL_IDEAL": "IDEAL", + "EXTRACTION_CHART_LABEL_HARSH": "keras", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "LEMAH
kurang diekstraksi", + "EXTRACTION_CHART_LABEL_WEAK": "LEMAH
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "LEMAH
keras", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "Teks ke ucapan", + "TEXT_TO_SPEECH": { + "ACTIVATE": "Mengaktifkan Teks ke ucapan", + "BREW_STARTED": "Menyeduh dimulai", + "BREW_ENDED": "Akhir pembuatan bir", + "TIME": "Waktu", + "SPEAK_EVERY_MS": "Bicaralah setiap milidetik yang dipilih", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "Nomor-nomor berikut ini akan diujikan secara lisan", + "TEST_SPEAK": "Mulai tes berbicara", + "PITCH": "Pitch", + "RATE": "Nilai" + }, + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "Umpan balik haptik", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "Mengaktifkan umpan balik haptic", + "BREW_STARTED": "Bergetar saat mulai menyeduh", + "BREW_STOPPED": "Bergetar saat penghentian minuman", + "TARE": "Bergetar pada timbangan tara" + }, + "CONNECTED": "Terhubung", + "DISCONNECTED": "Terputus", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "Ini adalah fitur eksperimental", + "SHOW_HOURS": "Jam tayang", + "SHOW_MINUTES": "Tampilkan menit", + "BEANS_UNARCHIVE": "Tidak diarsipkan", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "Bean tidak diarsipkan", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "Versi 7.3.0: Apa yang baru", + "DESCRIPTION": [ + "Bagian Air - Menambahkan Air Gelombang Ketiga<\/b>", + "Temukan semua Profil Air Gelombang Ketiga yang Anda sukai dalam pilihan Air", + "", + "Timbangan Bluetooth<\/b>", + "Dukungan dari Bookoo-Scale - Terima kasih kepada Yannick!", + "", + "Sensor Tekanan<\/b>", + "Dukungan Sensor Tekanan Bookoo - Terima kasih kepada Yannick!", + "Harap perhatikan bahwa ambang batas mulai otomatis yang sebenarnya saat ini tidak didukung.", + "", + "Mesin Haptic<\/b>", + "Biarkan ponsel bergetar saat Anda memulai seduhan - Fitur eksperimental - Aktifkan di pengaturan", + "", + "[IOS]Teks ke Suara<\/b>", + "[IOS]Aktifkan teks ke ucapan dan ucapkan semua nilai bobot timbangan serta pengatur waktu seduh - Fitur eksperimental - Aktifkan di pengaturan", + "", + "Visualizer<\/b>", + "Kirim Hasil Ekstraksi ke Visualizer", + "", + "Gambar<\/b>", + "Sekarang dapat diurutkan ke kiri atau kanan", + "", + "Seduh<\/b>", + "Saat membuka pengatur waktu, fokuskan detik secara langsung", + "Sembunyikan overlay jam atau menit", + "Tampilkan ikon jika portafilter Xenia atau Meticulous terhubung atau terputus pada toolbar", + "Memperbaiki bahwa Anda tidak dapat menyimpan seduhan saat dalam mode edit ketika bagian penyeduhan tidak terlihat", + "", + "Biji<\/b>", + "Batalkan pengarsipan kopi dalam daftar", + "", + "Lainnya<\/b>", + "Beberapa perubahan teknis pada kode", + "Perubahan kecil" + ] + } + } } \ No newline at end of file diff --git a/src/assets/i18n/it.json b/src/assets/i18n/it.json index 582a0e56d..3512f43be 100644 --- a/src/assets/i18n/it.json +++ b/src/assets/i18n/it.json @@ -145,7 +145,7 @@ "BREW_DATA_BREW_QUANTITY": "Quantità d'acqua", "BREW_DATA_BEAN_TYPE": "Caffè", "BREW_DATA_BREW_TEMPERATURE": "Temperatura di Preparazione", - "BREW_DATA_PRESSURE_PROFILE": "Profilo pressione", + "BREW_DATA_PRESSURE_PROFILE": "Profilo\/Ricetta", "BREW_DATA_COFFEE_TYPE": "Stile", "BREW_DATA_COFFEE_CONCENTRATION": "Concentrazione", "BREW_DATA_COFFEE_FIRST_DRIP_TIME": "Prima goccia", @@ -471,619 +471,6 @@ "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "Tieni traccia della caffeina assunta", "UPDATE_TITLE": "Cosa c'è di nuovo?", "NEXT": "Avanti", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "5.1.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "" - ] - }, - "5.2.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "5.3.1": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "5.4.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.0.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.1.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.1.3": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "" - ] - }, - "6.1.5": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.2.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.3.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.4.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.4.10": { - "TITLE": "", - "DESCRIPTION": [ - "", - "" - ] - }, - "6.4.20": { - "TITLE": "", - "DESCRIPTION": [ - "", - "" - ] - }, - "6.5.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.5.1": { - "TITLE": "", - "DESCRIPTION": [ - "", - "" - ] - }, - "6.6.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "6.6.1": { - "TITLE": "", - "DESCRIPTION": [ - "", - "" - ] - }, - "6.6.2": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "" - ] - }, - "7.0.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - }, - "7.1.0": { - "TITLE": "", - "DESCRIPTION": [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "Altro<\/b>", - "Correzioni di bug minori" - ] - }, - "7.2.0": { - "TITLE": "Versione 7.2.0: Cosa c'è di nuovo", - "DESCRIPTION": [ - "Più lingue<\/b>", - "Supporto dell'italiano - Grazie a Cancercookie", - "Supporto del polacco - Grazie a MarcinSachs", - "", - "Bilance Bluetooth<\/b>", - "Con \"Tara la bilancia all'avvio\", il timer aspetterà che tutti i valori siano azzerati per partire.", - "", - "Xenia<\/b>", - "Aggiunta di un toggle per l'utilizzo delle API V1 e V2", - "Aggiunta della funzione \"estrazione in base al peso\" con stop automatico in base al peso desiderato.", - "", - "Meticoloso<\/b>", - "Prima integrazione con Meticulous - Grazie a tutto il Team Meticulous!", - "", - "Impostazioni<\/b>", - "Ora è possibile definire una soglia per avviare il timer alla prima goccia", - "", - "Altro<\/b>", - "Alcune modifiche tecniche al codice", - "Migliorie minori", - "[IOS]Ora viene mostrato un avviso quando non è possibile stabilire una connessione al database locale.", - "", - "Ringraziamenti<\/b>", - "Un grande ringraziamento a tutti i traduttori e al loro immenso impegno per rendere l'applicazione disponibile in più lingue." - ] - } - }, "CUSTOM_PARAMETERS": "Personalizza parametri", "CUSTOM_DEFAULT_PARAMETERS": "Predefiniti", "CUSTOM_MANAGE_PARAMETERS": "Gestisci", @@ -1835,5 +1222,89 @@ "STARTING_IN": "Avvio in... {{time}}", "IOS_DATABASE_ISSUE_TITLE": "ATTENZIONE! CONNESSIONE AL DATABASE LOCALE PERSA", "IOS_DATABASE_ISSUE_DESCRIPTION": "Disconnessione dal database locale rilevata. Questo è dovuto ad un bug irrisolto in iOS, al di fuori del controllo di Beanconqueror. Per prevenire potenziali perdite di dati, ti suggeriamo di riavviare l'app al più presto.", - "RELOAD_APP": "Riavvia app" + "RELOAD_APP": "Riavvia app", + "WATER_TYPE_ADD_CUSTOM": "Acqua custom", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "Aggiungi acqua", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "FORTE
sottoestratto", + "EXTRACTION_CHART_LABEL_STRONG": "FORTE
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "FORTE
eccessivo", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "sottoestratto", + "EXTRACTION_CHART_LABEL_IDEAL": "IDEALE", + "EXTRACTION_CHART_LABEL_HARSH": "eccessivo", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "FIACCO
sottoestratto", + "EXTRACTION_CHART_LABEL_WEAK": "FIACCO
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "FIACCO
eccessivo", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "Text to speech", + "TEXT_TO_SPEECH": { + "ACTIVATE": "Attiva sintesi vocale", + "BREW_STARTED": "Preprarazione iniziata", + "BREW_ENDED": "Preprarazione terminata", + "TIME": "Tempo", + "SPEAK_EVERY_MS": "Pronuncia ogni millisecondo selezionato", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "Questi numeri saranno pronunciati nel corso del test", + "TEST_SPEAK": "Test di ascolto", + "PITCH": "Tono", + "RATE": "Velocità" + }, + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "Haptic feedback", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "Attiva la vibrazione", + "BREW_STARTED": "Vibra all'inizio della preparazione", + "BREW_STOPPED": "Vibra allo stop della preparazione", + "TARE": "Vibra alla tara della bilancia" + }, + "CONNECTED": "Connesso", + "DISCONNECTED": "Disconnesso", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "Funzionalità sperimentale", + "SHOW_HOURS": "Mostra ore", + "SHOW_MINUTES": "Mostra minuti", + "BEANS_UNARCHIVE": "Annulla l'archiviazione", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "Il caffè è stato disarchiviato", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "Versione 7.3.0: Cosa c'è di nuovo", + "DESCRIPTION": [ + "Sezione Acqua - Aggiunta Third Wave Water<\/b>", + "Troverete tutti i vostri amati profili Third Wave Water nella sezione acqua", + "", + "Bilance Bluetooth<\/b>", + "Supporto della bilancia Bookoo - Grazie a Yannick!", + "", + "Sensori di pressione<\/b>", + "Supporto del manometro Bookoo - Grazie a Yannick!", + "Considera che l'effettivo avvio automatico tramite soglia non è attualmente supportato.", + "", + "Haptic Engine<\/b>", + "È possibile emettere una vibriazione all'inizio di una preparazione - Funzionalità sperimentale - Abilita nelle impostazioni", + "", + "[IOS] Text to Speech<\/b>", + "[IOS] Abilita la sintesi vocale di tutti i valori del peso della bilancia e del timer durante la preparazione - Funzionalità sperimentale - Abilita nelle impostazioni", + "", + "Visualizer<\/b>", + "È possibile inviare l'EY al Visualizer", + "", + "Immagini<\/b>", + "Ora può essere ordinato a sinistra o a destra", + "", + "Preparazione<\/b>", + "Ora il focus va in automatico sui secondi all'apertura del timer", + "È possibile nascondere le ore o i minuti nell'overlay del timer", + "Nuova icona nella barra degli strumenti che indica lo stato di connessione del portafiltro Xenia o Meticulous", + "Risolto il problema per cui non era possibile salvare le modifiche ad una preparazione fuori dalla sezione Preparazioni", + "", + "Caffè<\/b>", + "Nuova azione per annullare l'archiviazione di un caffè", + "", + "Altro<\/b>", + "Alcune modifiche tecniche al codice", + "Piccole migliorie" + ] + } + } } \ No newline at end of file diff --git a/src/assets/i18n/pl.json b/src/assets/i18n/pl.json index 49d3302a7..018e7c8bf 100644 --- a/src/assets/i18n/pl.json +++ b/src/assets/i18n/pl.json @@ -235,7 +235,7 @@ "CUPPING_SCORE": "Punkty cuppingowe", "CUPPING_SCORE_DRY_FRAGRANCE": "Zapach suchych ziaren", "CUPPING_SCORE_WET_AROMA": "Aromat", - "CUPPING_SCORE_BRIGHTNESS": "Jasność", + "CUPPING_SCORE_BRIGHTNESS": "Kwasowość", "CUPPING_SCORE_FLAVOR": "Smak", "CUPPING_SCORE_BODY": "Body", "CUPPING_SCORE_FINISH": "Posmak", @@ -471,619 +471,6 @@ "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "Zapisuj ilość spożywanej kofeiny", "UPDATE_TITLE": "Co nowego?", "NEXT": "Następny", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "Wersja 5.0: Co nowego?", - "DESCRIPTION": [ - "Nowy układ, nowe ikony, nowe kolory, nowe logo", - "Nowe metody parzenia", - "Preparaty można teraz podzielić na kategorie (perkolacja, espresso, pełne zanurzenie)", - "Przygotowanie może teraz dziedziczyć narzędzia (np. różne filtry)", - "Parametry parzenia można teraz dostosować, zdefiniować własny przepływ pracy dla każdego parzenia", - "Dodano bardziej edytowalne informacje o ziarnach, można teraz dodawać różne rodzaje", - "Ilość pola wodnego jest dostępna do przesiąkania\/pełnego zanurzenia", - "Gdzie parzyłeś najlepszą kawę? Aktywne zapisywanie współrzędnych w ustawieniach", - "Aktywuj szybkie powtarzanie, aby natychmiast dodać napar", - "Dodano ekran aktualizacji, aby pokazać najnowsze zmiany", - "Dodano pytanie, aby ocenić aplikację po 25 użyciach", - "Dodano sortowanie ziaren", - "Dodano panel wyszukiwania naparów\/ziaren", - "Do szczegółów parzenia dodano tabelę cuppingu", - "Pozostała masa ziaren dodana na ekranie głównym", - "Dodano nagłówek dla palarni", - "Ocena przeniesiona do gwiazdek zamiast ikon" - ] - }, - "5.1.0": { - "TITLE": "Wersja 5.1: Co nowego?", - "DESCRIPTION": [ - "Nowy sekundnik dla naparów", - "Datę wypału można teraz ponownie wybrać na iOS", - "Obrazy można wybrać ponownie na iPadzie", - "Obliczenia TDS są teraz ponownie widoczne w ilości naparu", - "Dodano bezpieczne strefy dla urządzeń iOS" - ] - }, - "5.2.0": { - "TITLE": "Wersja 5.2: Co nowego?", - "DESCRIPTION": [ - "Napary:<\/b>", - "Minutnik parzenia będzie działać w tle", - "Możliwość ustawienia preferowanych naparów", - "Ekran dodawania i edycji naparu wygląda identycznie", - "Wyświetlacz może pozostać aktywny podczas parzenia (można go włączyć w menu ustawień)", - "Lista ostatnich naparów pokazuje teraz także napary zarchiwizowane", - "", - "Ziarna:<\/b>", - "Zdjęcia ziaren są pokazane w przeglądzie", - "Ziarna można oceniać", - "", - "Interakcje:<\/b>", - "Długie naciśnięcie na kartę powoduje przejście do widoku edycji", - "Dostęp do widoku szczegółowego można uzyskać po kliknięciu karty", - "Połączone konta Github\/Facebook\/Instagram", - "", - "Poprawki błędów:<\/b>", - "Informacje o ziarnach zostały skopiowane nieprawidłowo", - "Ilość naparu została domyślnie aktywowana dla nowych użytkowników", - "", - "Inny:<\/b>", - "Integracja z Apple Healthkit (można aktywować w menu ustawień)", - "Oczyszczanie", - "Zmiany układu", - "Rozszerzenie statystyk", - "Poprawiono kontrolę uruchamiania", - "Obsługa różnych rozmiarów kart dla naparów i ziaren" - ] - }, - "5.3.1": { - "TITLE": "Wersja 5.3: Co nowego?", - "DESCRIPTION": [ - "Metody parzenia:<\/b>", - "Zmiany w widoku karty", - "Na ekranie edycji można dołączać niestandardowe obrazy", - "Narzędzia do parzenia zostaną zapisane na ekranie edycji, nawet jeśli '+' nie zostanie naciśnięty", - "", - "Młynki: <\/b>", - "Na ekranie edycji można dołączać niestandardowe obrazy", - "", - "Napary:<\/b>", - "Zmiana nazwy parametru 'Załączniki' w 'Załączniki \/ Zdjęcia''", - "", - "Panel:<\/b>", - "Jeśli ilość ziaren jest mniejsza niż 1000g, liczba zostanie zapisana jako całość", - "", - "Poprawki błędów:<\/b>", - "Edycja poprzez długie naciśnięcie nie powoduje już zmiany informacji", - "Informacje na tablicy są aktualizowane po dokonaniu zmian", - "Można ponownie zapisać wiele informacji o odmianach w mieszankach", - "Dodano komunikat o błędzie uruchamiania, jeśli brakuje danych aplikacji" - ] - }, - "5.4.0": { - "TITLE": "Wersja 5.4: Co nowego?", - "DESCRIPTION": [ - "Sekcja wypału:<\/b>", - "Zarządzaj wszystkimi zielonymi ziarnami i urządzeniami do palenia (można je aktywować w menu ustawień)", - "Zachowaj całe zielone ziarna i przenieś je do wypalanych", - "Dodaj swoją palarnię i połącz ją z różnymi rodzajami wypalanych ziaren", - "", - "Strona internetowa:<\/b>", - "Uruchomienie naszej nowej strony internetowej! -> https:\/\/beanconqueror.com", - "", - "Wesprzyj nas:<\/b>", - "Zawsze chciałeś wesprzeć Beanconqueror? Dodaliśmy nową opcję „Kup mi kawę”.", - "", - "iOS – iCloud:<\/b>", - "Pierwszy krok w stronę wsparcia iCloud został zrobiony. Przy pierwszym uruchomieniu wszystkie istniejące dane aplikacji zostaną przeniesione do katalogu iCloud.", - "Aby zapisać Beanconqueror na iCloud, musisz najpierw aktywować tę opcję w Ustawieniach iCloud", - "", - "Android\/iOS — automatyczny eksport plików:<\/b>", - "Zautomatyzowany plik Beanconqueror.json jest zapisywany maksymalnie przez 7 dni, po czym zostanie ponownie automatycznie usunięty", - "Android: Pobierz\/Beanconqueror_export\/Beanconqueror_automatic_export_DAY.json", - "iOS: Files\/Download\/Beanconqueror_export\/Beanconqueror_automatic_export_FILE.json", - "", - "Ustawienia:<\/b>", - "Excel — wyeksportuj wszystkie swoje dane do programu Excel, aby jeszcze bardziej z nimi pracować", - "Zdefiniuj własną jakość obrazu w zakresie od 50% do 100% (domyślnie 100%)", - "Ocena naparu — zdefiniuj, ile gwiazdek\/punktów chcesz ustawić dla każdego naparu. Minimum 5, maksymalnie 100", - "", - "Nowe śledzenie:<\/b>", - "Przeszliśmy na naszą usługę Matomo o otwartym kodzie źródłowym, która będzie hostowana na naszym własnym serwerze", - "Usunięto Google Analytics\/Firebase", - "", - "Poprawki błędów:<\/b>", - "Apple Healthkit — Ustawienia nie zostały zapisane", - "Czasami gwiazdki oceny naparu nie były wypełnione (dodaj\/edytuj napar)", - "Edycja poprzez długie dotknięcie, ekranu nie można było przewijać", - "Import większych plików na iOS doprowadził do niewłaściwego postępowania", - "Procedura usuwania ziaren\/naparów lub młynów nie była spójna i prowadziła do problemów graficznych", - "Błędne obliczenie ilości napoju w statystykach i widokach list", - "", - "Udostępniania:<\/b>", - "Podziel się swoimi naparami i ziarnami ze wszystkimi miłośnikami kawy!", - "", - "Inne:<\/b>", - "Sprzątanie", - "Zmiany układu", - "Rozszerzenie statystyk", - "Poprawiono kontrolę uruchamiania, dodano okno proszę czekać.", - "Niektóre zmiany etykiet", - "Zmieniono dostęp do danych\/porządek w aplikacji, aby zmniejszyć problemy" - ] - }, - "6.0.0": { - "TITLE": "Wersja 6.0: Co nowego?", - "DESCRIPTION": [ - "Wagi Bluetooth<\/b>", - "Wsparcie pierwszej wagi bluetooth - Decent-Scale - podziękowania dla Decent Espresso", - "Wsparcie dla Acaia Lunar", - "", - "Aromat<\/b>", - "Kubek każdego naparu z różnymi aromatami i smakami", - "", - "Sekcja wodna<\/b>", - "Dodaj własną wodę, aktywuj tę sekcję w ustawieniach", - "", - "Obsługa większej liczby języków<\/b>", - "Wsparcie dla języka hiszpańskiego — podziękowania dla Frank!", - "", - "Ulepszenia<\/b>", - "Obsługa długiego naciśnięcia '+' na naparach", - "Dodano nowe parametry parzenia", - "Obsługa różnych walut", - "Edytuj napar w widoku szczegółowym", - "Wybór wielu obrazów jednocześnie", - "Obsługa konwersji brix na TDS", - "Jeśli opakowanie ziaren jest puste, zostaniesz zapytany, czy chcesz zarchiwizować pakiet ostatniego parzenia", - "Wprowadzono resetowanie daty wypału", - "Obsługa szczegółowych widoków ziaren, młynków i metod parzenia", - "Dodany stosunek naparu (g\/l)", - "", - "iOS<\/b>", - "Wsparcie bezpiecznych obszarów", - "", - "Poprawki błędów<\/b>", - "Apple Healthkit – Kawa bezkofeinowa została zapisana", - "Kopia ziaren doprowadziła do niewłaściwego postępowania", - "Dodano czas parzenia do eksportu programu Excel", - "Małe poprawki błędów", - "", - "Inne<\/b>", - "Ziarna, młynki i metody parzenia są teraz sortowane alfabetycznie na listach rozwijanych" - ] - }, - "6.1.0": { - "TITLE": "Wersja 6.1: Co nowego?", - "DESCRIPTION": [ - "Kody QR<\/b>", - "Skanuj torebki z kawą! Wszystkie informacje o kawie są wprowadzane bezpośrednio z palarni.", - "", - "Wagi Bluetooth<\/b>", - "Wsparcie Acaia Pearl 2021 – podziękowania dla Micah i Mike", - "Wsparcie Acaia Lunar 2021 - Podziękowania dla Micah i Mike", - "Wsparcie Acaia Pyxis – podziękowania dla Micah i Mike", - "Wsparcie Hiroia Jimmy — podziękowania dla Silas", - "Wsparcie Felicita Arc – podziękowania dla Herman", - "Pielęgnacja: Acaia Pearl < 2021 nie jest obecnie obsługiwana", - "Informacje o wadze pochodzące z wagi Bluetooth mogą być teraz używane na stronie ziaren", - "Zmiany wagi są teraz widoczne bez konieczności rozpoczynania parzenia za pomocą timera", - "", - "Przegląd naparów<\/b>", - "Dostosuj widoczne parametry parzenia w ogólnym przeglądzie lub dla każdej metody parzenia", - "Obrazy naparów są teraz widoczne w widoku listy", - "", - "Wykres parzenia<\/b>", - "Przeróbka wykresu parzenia na bardziej płynne rozwiązanie", - "Wykres parzenia można teraz zmaksymalizować", - "Wykres parzenia można teraz powiększać w widoku szczegółów parzenia, a także eksportować", - "Wyświetlana jest teraz średnia wielkość przepływu", - "", - "Ziarna<\/b>", - "Dodano pola: Data zakupu, Cena FOB, Cena zakupu", - "Ziarna mogą być teraz dodawane do ulubionych i filtrowane", - "Jeśli ziarna zostaną zarchiwizowane, możesz teraz oceniać je także", - "Naciskając '+' możesz teraz dodać lub zeskanować nową paczkę", - "Naciśnij długo '+', aby bezpośrednio dodać nowe ziarna", - "", - "Metody parzenia<\/b>", - "Metody parzenia można teraz powtarzać ze wszystkimi ustawieniami", - "Dostępnych jest więcej metod parzenia — podziękowania dla Nicola", - "Wybranie metody parzenia powoduje również wyświetlenie obrazu", - "", - "Ustawienia<\/b>", - "Oceny można teraz stopniować (1, 0,75, 0,5, 0,25, 0,1)", - "Waga Bluetooth — określ, czy waga ma być ustawiona na zero przy rozpoczynaniu nowego parzenia, czy uruchamianiu timera", - "Waga Bluetooth — określ, czy chcesz ignorować anomalie lub wartości ujemne — jeśli tak, wykres na żywo nie będzie możliwy", - "Wybierz teraz, jeśli chcesz zobaczyć archiwalne napary na stronie głównej", - "Eksport eksportuje teraz również surowe dane zapisanych wartości Bluetooth", - "", - "Ulepszenia<\/b>", - "Usunięcie narzędzi metody parzenia nie spowoduje już usunięcia naparów", - "Narzędzia metod parzenia można teraz edytować i archiwizować", - "", - "Poprawki błędów:<\/b>", - "Znaleziono więcej problemów, które mogą prowadzić do utraty danych", - "Małe poprawki błędów", - "", - "Inne:<\/b>", - "Aktualizacja do Ionic-Framework 6, dlatego też mają miejsce pewne drobne zmiany wizualne" - ] - }, - "6.1.3": { - "TITLE": "Wersja 6.1.3: Co nowego?", - "DESCRIPTION": [ - "Android – Uwaga<\/b>", - "Na początek Przepraszam!", - "Niestety, baza danych została zresetowana z formatu APK do AAB w sklepie Android Play i Twoja aplikacja prawdopodobnie uruchomi się bez danych.", - "Nie mogłem debugować ani kontrolować tej sytuacji, podczas gdy programowanie wszystko działało zgodnie z oczekiwaniami", - "Jeśli Twoja aplikacja została uruchomiona pusta, przejdź do ustawień i zaimportuj poniższy plik 'Download\/Beanconqueror_export\/Beanconqueror_automatic_export_*.json' * oznacza najnowszy znacznik czasu, czyli kopię zapasową.", - "Wszystkie dane powinny wtedy wrócić do normy, jeśli nie, napisz do mnie e-mail: info@beanconqueror.com." - ] - }, - "6.1.5": { - "TITLE": "Wersja 6.1.5: Co nowego?", - "DESCRIPTION": [ - "Kody QR<\/b>", - "Załaduj ponownie ziarna, które zostały zeskanowane za pomocą kodów QR", - "", - "Wykres parzenia<\/b>", - "Przepływ wody jest teraz obliczany w czasie rzeczywistym", - "", - "Ziarna<\/b>", - "Wyszukaj ziarna teraz w wyborze", - "", - "Poprawki błędów<\/b>", - "Po zrobieniu zdjęcia symbol ładujący nie zniknął", - "Mniejsze poprawki błędów" - ] - }, - "6.2.0": { - "TITLE": "Wersja 6.2.0: Co nowego", - "DESCRIPTION": [ - "Urządzenia ciśnieniowe<\/b>", - "Wsparcie dla 'Zrób to sam' Popsicle - Sensor – podziękowania dla Mike i Shay", - "Timer autostartu przy określonym ciśnieniu — edytowalny w ustawieniach", - "Naciśnięcie manometru spowoduje zresetowanie ciśnienia do 0", - "Wyświetlana nazwa urządzenia ciśnieniowego i adres MAC po podłączeniu", - "", - "Wagi Bluetooth<\/b>", - "Wsparcie Eureka Precisa — podziękowania dla Mimoja", - "Określ zachowanie wagi bluetooth na nowym naparze — edytowalne w ustawieniach", - "Zdefiniuj, które wykresy mają być wyświetlane na filtrze lub espresso — można je edytować w ustawieniach", - "Sekwencyjne przetwarzanie poleceń Bluetooth w celu ograniczenia problemów", - "Wyświetlana nazwa wagi Bluetooth i adres MAC po podłączeniu", - "", - "Napary<\/b>", - "Obsługuje teraz milisekundy — Aktywuj w ustawieniach", - "Rozwinięty system filtrów, szukaj rodzaju i stopnia palenia", - "Możesz ponownie podłączyć wagę Bluetooth lub urządzenie ciśnieniowe na stronie dodawania\/edycji naparu", - "", - "Ziarna<\/b>", - "Udostępnij swoje ziarna (bez potrzeby korzystania z serwera) — podziękowania dla Mike", - "Pokaż wszystkie napary swoich ziaren", - "Obsługa oceny ziaren jak w przypadku naparów — można je edytować w ustawieniach", - "", - "Więcej języków<\/b>", - "Wsparcie języka tureckiego — podziękowania dla Halil Portakal", - "Wsparcie języka chińskiego — podziękowania dla Jiageng", - "", - "Młynki<\/b>", - "Wyświetlanie ostatnio używanego stopnia mielenia oraz ostatniego użytych ziaren", - "", - "Ulepszenia<\/b>", - "Komunikat o błędzie podczas skanowania ziaren, które nie zostały jeszcze zatwierdzone", - "Domyślnie edycja daty parzenia nie jest aktywna", - "", - "Inne<\/b>", - "Poprawiono literówki", - "Naprawiono problem polegający na tym, że liczba gwiazdek nie była widoczna nawet przy normalnych ustawieniach", - "Starsze grafiki naparów można teraz ponownie wyeksportować", - "Aktualizacja do wersji Ionic 6.3.0", - "Mniejsze poprawki błędów" - ] - }, - "6.3.0": { - "TITLE": "Wersja 6.3.0: Co nowego", - "DESCRIPTION": [ - "Wagi Bluetooth<\/b>", - "Określ, jak długo należy czekać do następnego polecenia Bluetooth", - "", - "Napary<\/b>", - "Resetowanie daty parzenia", - "Jeżeli waga Bluetooth jest podłączona, na kafelku wyświetli się waga ostatniego naparu", - "Większe przyciski na zmaksymalizowanym wykresie parzenia", - "Wybierz Excel lub json, pobierając dane naparu", - "Zamiast ikon\/obrazków metod przygotowania można teraz wyświetlać zdjęcia ziaren -> Aktywuj w ustawieniach", - "", - "Ziarna<\/b>", - "Ziarna można teraz wyszukiwać według ich odmian", - "", - "Młynki<\/b>", - "Wyświetlanie notatek na liście i w widoku szczegółowym", - "", - "Ulepszenia<\/b>", - "Wybierz, ile milisekund ma być wyświetlanych (wprowadzone wartości nadal muszą wynosić 3 miejsca po przecinku)", - "Dodano przyciski darowizn", - "Obszary tekstowe można teraz przewijać", - "Czas parzenia w statystykach jest teraz sformatowany", - "Wyskakujące okienka powiadomień pojawiają się teraz na górze i można je zamknąć za pomocą X", - "Wyłączone parametry szczegółowe są teraz aktywne, np. młynek może być teraz ukryty.", - "Analizę można dezaktywować lub aktywować", - "", - "Inne:<\/b>", - "Poprawiono literówki", - "Aktualizacja do wersji Ionic 6.4.0", - "Mniejsze poprawki błędów" - ] - }, - "6.4.0": { - "TITLE": "Wersja 6.4.0: Co nowego?", - "DESCRIPTION": [ - "Termometry Bluetooth<\/b>", - "Wsparcie dla termometrów ETI Ltd (ThermaQ Blue, BlueTherm itp.) - podziękowania dla Myles", - "Timer automatycznego uruchamiania w określonej temperaturze — można go edytować w ustawieniach", - "", - "Wagi Bluetooth<\/b>", - "Wsparcie 'Skale 2'", - "Jeśli waga Bluetooth chce zresetować napar, użytkownik otrzyma okno dialogowe zatwierdzenia", - "", - "Wizualizator<\/b>", - "Prześlij ręcznie nagrane napary za pomocą używanych urządzeń Bluetooth do visualizer.coffee — podziękowania dla Miha za wsparcie", - "(Krok 2: Automatyczne przesyłanie)", - "", - "Ziarna<\/b>", - "Parametry ziaren i parametry listy można teraz indywidualizować i zmieniać", - "Ziarna można teraz filtrować według stopnia wypalenia", - "Stronę ziaren można teraz ustawić jako stronę startową – zobacz ustawienia", - "Wpisz pola z wyprzedzeniem dla określonych dodanych pól, np. Odmiana", - "Informacje o odmianach ziaren można teraz wyszukiwać za pomocą dowolnego tekstu", - "", - "Napary<\/b>", - "Nowy przycisk, za pomocą którego można bezpośrednio wybrać metodę parzenia", - "Zindywidualizuj, które parametry mają być ustawione przy wyborze 'Powtórz' - Domyślnie: wszystkie", - "Dodano filtr dla wszystkich naparów, do których dołączone są dane urządzenia Bluetooth", - "Przeróbka grafiki naparu na żywo", - "Dodano kalkulator proporcji naparu do dodawania\/edycji naparu, aby umożliwić szybsze obliczenia", - "Naciśnięcie przycisku 'Zapisz'' spowoduje zatrzymanie timera", - "", - "Opinie<\/b>", - "Dołącz do serwera Discord Beanconqueror, aby dyskutować, zgłaszać błędy, zadawać pytania lub przekazywać opinie", - "", - "Android<\/b>", - "Funkcja udostępniania znów działa", - "Eksportuj i importuj wykresy parzenia", - "", - "Ulepszenia<\/b>", - "Wyświetla liczbę istniejących wpisów podczas korzystania z filtrowania", - "Podczas dodawania\/edycji naparu przycisk zapisywania lub anulowania będzie ukryty, dopóki widoczna będzie klawiatura", - "Klawiatura numeryczna dla pola rozmiaru mielenia — aktywuj w ustawieniach", - "", - "Inne:<\/b>", - "Małe poprawki błędów" - ] - }, - "6.4.10": { - "TITLE": "Wersja 6.4.1: Co nowego?", - "DESCRIPTION": [ - "Inne:<\/b>", - "Małe poprawki błędów" - ] - }, - "6.4.20": { - "TITLE": "Wersja 6.4.2: Co nowego?", - "DESCRIPTION": [ - "Naprawianie awarii podczas uruchamiania", - "Naprawianie recyklingu, gdy waga Bluetooth nie mogła się połączyć" - ] - }, - "6.5.0": { - "TITLE": "Wersja 6.5.0: Co nowego?", - "DESCRIPTION": [ - "Wagi Bluetooth<\/b>", - "Obsługa mikrowagi DiFluid i wagi Smart Chef — podziękowania dla Yannick!", - "W przypadku espresso: Aktywuj w Ustawieniach, aby pozwolić na automatyczne zatrzymanie naparu, gdy nie zostanie wykryty przepływ", - "Dodano wyskakujące okienko ostrzegawcze, gdy Beanconqueror nie otrzymuje żadnych aktualizacji masy z wagi", - "", - "Ziarna<\/b>", - "Udostępniaj teraz ziarna jako obraz i adres URL", - "", - "Xenia<\/b>", - "Rejestrowane jest teraz również ciśnienie i temperatura strzału", - "", - "Napary<\/b>", - "Wykres parzenia będzie teraz w całości wyświetlany również, jeśli nalewanie zostanie zatrzymane", - "", - "Eksportuj\/Importuj<\/b>", - "Zamiast pliku .json używamy teraz plików .zip do importowania i eksportowania danych", - "Pamiętaj, aby przejść do ustawień i wykonać jednorazową kopię bezpieczeństwa w połączeniu z już istniejącą automatyczną kopią zapasową, aby zapewnić bezpieczeństwo danych", - "", - "Ulepszenia<\/b>", - "Małe ulepszenia", - "", - "Inne<\/b>", - "Małe poprawki błędów" - ] - }, - "6.5.1": { - "TITLE": "Wersja 6.5.1: Co nowego?", - "DESCRIPTION": [ - "Inne:<\/b>", - "Małe poprawki błędów" - ] - }, - "6.6.0": { - "TITLE": "Wersja 6.6.0: Co nowego?", - "DESCRIPTION": [ - "Refraktometr<\/b>", - "Wsparcie dla DiFluid R2 — dzięki Yannick!", - "", - "Wagi Bluetooth<\/b>", - "Wsparcie Blackcoffee.io — dzięki Yannick!", - "Poprawianie natężenia przepływu dla wag", - "", - "Napary<\/b>", - "Oznacz napar dla jednego ziarna jako 'najlepszy napar' – można go aktywować w ustawieniach", - "Skopiuj teraz swoje notatki w widoku szczegółów", - "Filtruj swoje napary według używanych profili", - "Oceń swój napar bezpośrednio w menu na liście naparów", - "Pobieranie pliku wizualizatora także w widoku szczegółowym", - "", - "Xenia<\/b>", - "Wykonywane skrypty są teraz zapisywane w notatkach", - "Ustawianie temperatury parzenia urządzenia w momencie rozpoczęcia parzenia", - "", - "Ulepszenia<\/b>", - "Małe ulepszenia", - "", - "Inne<\/b>", - "Małe poprawki błędów" - ] - }, - "6.6.1": { - "TITLE": "Wersja 6.6.1: Co nowego?", - "DESCRIPTION": [ - "Inne:<\/b>", - "Drobne poprawki błędów" - ] - }, - "6.6.2": { - "TITLE": "Wersja 6.6.2: Co nowego", - "DESCRIPTION": [ - "[ANDROID]Android 13 - Uprawnienia do przechowywania plików<\/b>", - "[ANDROID]Ze względu na zmiany w uprawnieniach systemu plików w Androidzie, ścieżki dostępu do sposobu tworzenia kopii zapasowych i importowania plików musiały zostać zmienione. Ponadto, dostęp do aparatu i zdjęć nie działał już na urządzeniach z Androidem 13 i został naprawiony w tej aktualizacji.", - "[ANDROID]Ze względu na te zmiany, minimalne wymagania dla tej aplikacji również musiały zostać podniesione do Androida 7.0.", - "[ANDROID] Tutaj możesz dowiedzieć się, jak działa import\/eksport: https:\/\/beanconqueror.com\/faq", - "", - "[IOS]iOS — zaktualizowane biblioteki<\/b>", - "[IOS] Ze względu na zmiany w bibliotece Cordova, jest to wydanie, które spełnia wszystkie te wymagania :)" - ] - }, - "7.0.0": { - "TITLE": "Wersja 7.00: Co nowego", - "DESCRIPTION": [ - "Tryb wagi Bluetooth<\/b>", - "Uruchom timer przy pierwszej wykrytej zmianie wagi - Możliwość aktywacji w ustawieniach (widoczny nowy przycisk)", - "Ignorowanie aktualnie przesyłanej wagi — np. w przypadku zawirowań, poruszeń lub usuwania wagi bez celowych skoków wykresu — Możliwość aktywacji w ustawieniach (widoczny nowy przycisk)", - "", - "Wagi Bluetooth<\/b>", - "Obsługa wagi Bluetooth-No-Name", - "W przypadku podłączania mikrowagi DiFluid lub wagi Felicita opóźnienie polecenia ustawia się bezpośrednio", - "", - "Obszar wykresu<\/b>", - "Aktywuj obszar wykresu w ustawieniach", - "Ustaw wykres parzenia dla nowego naparu, aby podążał za nim", - "Wykresy mogą pochodzić z naparu lub z pojedynczego obszaru wykresu", - "Prześlij własny wykres — wyeksportuj plik .JSON ze swoich naparów", - "", - "Wizualizator<\/b>", - "Automatycznie przesyłaj każdy nowy napar z podłączonym wykresem do wizualizatora — Aktywuj w ustawieniach", - "W razie potrzeby ręcznie prześlij wszystkie napary do Wizualizatora", - "Podziękowanie dla Miha za wsparcie!", - "", - "Napary<\/b>", - "Powtórz napar z widoku szczegółowego", - "Pierwsza kropla może być teraz aktywowana dla metody przygotowania, nawet jeśli nie jest to metoda espresso (np. Pulsar)", - "Wyświetlanie szybkości parzenia z podłączoną wagą w widoku zmaksymalizowanym", - "Ostatnie napary są teraz sortowane alfabetycznie, a data ostatniego użycia jest wyświetlana", - "Przepływ w czasie rzeczywistym z podłączoną wagą pokazuje teraz wartości poniżej 1 g\/s dla espresso", - "", - "Ziarna<\/b>", - "Powtórz ostatni napar lub najlepszy napar z karty widoku ziaren", - "", - "Metoda parzenia<\/b>", - "Narzędzia do parzenia są teraz sortowane alfabetycznie i można je filtrować.", - "Ostatnie użycie metody parzenia jest teraz wyświetlane po wybraniu", - "", - "Młynki<\/b>", - "Ostatni rozmiar mielenia i ostatnie użycie są teraz widoczne podczas wybierania młynka.", - "", - "Xenia<\/b>", - "Poprawka: Dezaktywowane skrypty nie są już wykonywane", - "", - "Ustawienia<\/b>", - "Wyświetlanie monitu bezpieczeństwa, jeśli wprowadziłeś zmiany w naparze lub ziarnie - Aktywuj w ustawieniach", - "Teraz ustaw indywidualną oś X i Y startu dla naparów za pomocą urządzeń Bluetooth", - "", - "Ionic 7<\/b>", - "Aktualizacja z Ionic 6 do Ionic 7", - "[IOS] Minimalna wersja dla iOS to teraz iOS 14", - "[ANDROID] Minimalna wersja dla Androida to teraz Android 7.1", - "", - "Lokalise<\/b>", - "Korzystanie z Lokalise dla wszystkich tłumaczeń — Wielkie podziękowania dla Yannick", - "Chcesz też tłumaczyć? Dzięki Localize jest to teraz łatwe. Skontaktuj się z nami: info@beanconqueror.com", - "", - "Inne<\/b>", - "Drobne poprawki błędów", - "" - ] - }, - "7.1.0": { - "TITLE": "Wersja 7.1.0: Co nowego", - "DESCRIPTION": [ - "Więcej języków<\/b>", - "Wsparcie języka francuskiego — podziękowania dla Yannick", - "Wsparcie dla języka indonezyjskiego – podziękowania dla Bondan, Ganjar", - "", - "Wagi Bluetooth<\/b>", - "Obsługa nowej wagi DIY-Bluetooth (Rust & Python Firmware)", - "Obsługa mikrowagi DiFluid Ti", - "Usprawnienie obliczania przepływu dla wszystkich wag", - "", - "Obszar wykresu<\/b>", - "Dodano więcej informacji do karty referencyjnej wyboru", - "", - "Napary<\/b>", - "Wagi Bluetooth — dodano przycisk tarowania na górze paska narzędzi", - "", - "Ziarna<\/b>", - "Wsparcie kopiowania różnych informacji", - "", - "Sekcja wodna<\/b>", - "Dodano parametr potasu", - "", - "Młynki<\/b>", - "Parametr RPM jest teraz widoczny w widoku listy i widoku wyboru", - "", - "Ustawienia<\/b>", - "Zdefiniuj własną oś czasu dla filtra lub espresso za pomocą podłączonych urządzeń Bluetooth", - "Dodanie różnych formatów daty, aby dopasować je również do formatu amerykańskiego", - "", - "Inne<\/b>", - "Drobne poprawki błędów" - ] - }, - "7.2.0": { - "TITLE": "Wersja 7.00: Co nowego", - "DESCRIPTION": [ - "Więcej języków<\/b>", - "Wsparcie języka włoskiego - Podziękowania dla Cancercookie", - "Wsparcie języka polskiego - Podziękowania dla MarcinSachs", - "", - "Wagi Bluetooth<\/b>", - "Po ustawieniu opcji \"Tarowanie wagi po uruchomieniu timera\" czas startowy będzie czekał, aż waga zgłosi kilka raportów o masie 0.", - "", - "Xenia<\/b>", - "Dodanie przełącznika dla użycia API V1 i V2", - "Dodanie funkcji Parzenia wg Wagi z automatycznym obliczaniem zatrzymania parzenia po osiągnięciu pożądanej wagi.", - "", - "Meticulous<\/b>", - "Pierwsza integracja Meticulous — podziękowania dla całego zespołu Meticulous!", - "", - "Ustawienia<\/b>", - "Definiowanie progu, dla którego liczy się pierwsza kropla", - "", - "Inne<\/b>", - "Kilka zmian technicznych w kodzie", - "Małe poprawki", - "[IOS]Wyświetlanie wyskakujących okienek, gdy nie można było ustanowić połączenia z bazą danych.", - "", - "Podziękowania<\/b>", - "Wielkie podziękowania dla wszystkich tłumaczy, którzy wkładają ogromny wysiłek, aby aplikacja była dostępna w wielu językach." - ] - } - }, "CUSTOM_PARAMETERS": "Dostosuj parametry", "CUSTOM_DEFAULT_PARAMETERS": "Domyślny", "CUSTOM_MANAGE_PARAMETERS": "Zarządzaj", @@ -1542,8 +929,8 @@ "BREW_TEMPERATURE_REALTIME": "Temperatura", "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_SHOW_GRAPHS_FILTER": "Pokaż wykresy dla przelewu", "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_SHOW_GRAPHS_ESPRESSO": "Pokaż wykresy dla espresso", - "PAGE_SETTINGS_TAB_BLUETOOTH_PRESSURE": "Urządzenie do pomiaru ciśnienia", - "PAGE_SETTINGS_TAB_BLUETOOTH_TEMPERATURE": "Urządzenie do pomiaru temperatury", + "PAGE_SETTINGS_TAB_BLUETOOTH_PRESSURE": "Manometr", + "PAGE_SETTINGS_TAB_BLUETOOTH_TEMPERATURE": "Termometr", "PRESSURE_LOG": "Aktywuj pliki dziennika dla urządzenia ciśnieniowego", "PRESSURE_THRESHOLD_ACTIVE": "Uruchom timer z predefiniowanym ciśnieniem", "PRESSURE_THRESHOLD_BAR": "Ciśnienie progowe", @@ -1710,7 +1097,7 @@ "POPOVER_BEST_BREW": "Najlepszy napar", "PAGE_SETTINGS_BEST_BREW": "Aktywuj najlepsze napary", "PAGE_SETTINGS_BEST_BREW_DESCRIPTION": "Oznacz swój najlepszy napar dla konkretnego ziarna. Każde ziarno może mieć tylko jeden najlepszy napar zamiast wielu ulubionych.", - "PAGE_SETTINGS_TAB_BLUETOOTH_REFRACTOMETER": "Urządzenie refraktometryczne", + "PAGE_SETTINGS_TAB_BLUETOOTH_REFRACTOMETER": "Refraktometr", "REFRACTOMETER": { "CONNECTION_NOT_ESTABLISHED": "Nie znaleziono refraktometru lub nie można nawiązać połączenia", "CONNECTED_SUCCESSFULLY": "Podłączono refraktometr", @@ -1835,5 +1222,89 @@ "STARTING_IN": "Zaczynamy za... {{time}}", "IOS_DATABASE_ISSUE_TITLE": "UWAGA !!!!! - POŁĄCZENIE Z BAZĄ DANYCH UTRACONE", "IOS_DATABASE_ISSUE_DESCRIPTION": "Z przykrością informujemy, że nastąpiła utrata połączenia z bazą danych. Problem ten jest wynikiem nierozwiązanego błędu w systemie Apple, poza kontrolą Beanconqueror. Aby zapobiec potencjalnej utracie danych, uprzejmie prosimy o natychmiastowe zamknięcie aplikacji Beanconqueror i ponowne jej otwarcie.", - "RELOAD_APP": "Przeładuj aplikację teraz" + "RELOAD_APP": "Przeładuj aplikację teraz", + "WATER_TYPE_ADD_CUSTOM": "Niestandardowa woda", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "Dodaj wodę", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "MOCNE
niedoekstrahowany", + "EXTRACTION_CHART_LABEL_STRONG": "MOCNY
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "STRONG
ostry", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "niedoekstrahowany", + "EXTRACTION_CHART_LABEL_IDEAL": "IDEALNY", + "EXTRACTION_CHART_LABEL_HARSH": "surowy", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "SŁABE
niedostatecznie ekstrahowane", + "EXTRACTION_CHART_LABEL_WEAK": "SŁABY
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "SŁABY
surowy", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "Zamiana tekstu na mowę", + "TEXT_TO_SPEECH": { + "ACTIVATE": "Aktywuj zamianę tekstu na mowę", + "BREW_STARTED": "Rozpoczęto parzenie", + "BREW_ENDED": "Koniec parzenia", + "TIME": "Czas", + "SPEAK_EVERY_MS": "Mów co wybraną milisekundę", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "Następujące numery zostaną wypowiedziane w teście", + "TEST_SPEAK": "Rozpocznij rozmowę testową", + "PITCH": "Poziom", + "RATE": "Wskaźnik" + }, + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "Haptyczne sprzężenie zwrotne", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "Aktywacja haptycznego sprzężenia zwrotnego", + "BREW_STARTED": "Wibracja przy rozpoczęciu parzenia", + "BREW_STOPPED": "Wibracja po zatrzymaniu parzenia", + "TARE": "Wibracja podczas tarowania wagi" + }, + "CONNECTED": "Połączony", + "DISCONNECTED": "Odłączony", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "Jest to funkcja eksperymentalna", + "SHOW_HOURS": "Pokaż godziny", + "SHOW_MINUTES": "Pokaż minuty", + "BEANS_UNARCHIVE": "Cofnij archiwizację", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "Ziarno nie zostało zarchiwizowane", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "Wersja 7.3.0: Co nowego", + "DESCRIPTION": [ + "Sekcja Wodna — Dodano Wodę Trzeciej Fali<\/b>", + "Znajdź wszystkie swoje ulubione profile wody trzeciej fali w wyborze wody", + "", + "Wagi Bluetooth<\/b>", + "Wsparcie Bookoo-Scale - Podziękowania dla Yannick!", + "", + "Czujnik ciśnienia<\/b>", + "Wsparcie dla czujnika ciśnienia Bookoo — podziękowania dla Yannick!", + "Należy pamiętać, że rzeczywisty próg-autostart nie jest obecnie obsługiwany.", + "", + " Silnik dotykowy <\/b>", + "Pozwól telefonowi wibrować po rozpoczęciu parzenia — Funkcja eksperymentalna — Włącz w ustawieniach", + "", + "[IOS]Zamiana tekstu na mowę<\/b>", + "[IOS]Włącz zamianę tekstu na mowę i wypowiadaj wszystkie wartości wagi, a także licznik czasu parzenia - Funkcja eksperymentalna - Włącz w ustawieniach", + "", + " Wizualizator <\/b>", + "Wyślij wynik ekstrakcji do wizualizatora", + "", + "Obrazy<\/b>", + "Można teraz sortować w lewo lub w prawo", + "", + " Napar <\/b>", + "Otwierając timer, skup się bezpośrednio na sekundach", + "Ukryj godziny lub minuty w nakładce timera", + "Pokaż ikonę, jeśli kolba Xenia lub Meticulous jest podłączona lub odłączona na pasku narzędzi", + "Naprawiono błąd, który powodował, że nie można było zapisać naparu w trybie edycji, gdy sekcja podczas parzenia nie była widoczna", + "", + "Ziarna<\/b>", + "Usunięcie zarchiwizowanych ziaren z listy akcji", + "", + " Inne <\/b>", + "Kilka zmian technicznych w kodzie", + "Drobne poprawki" + ] + } + } } \ No newline at end of file diff --git a/src/assets/i18n/tr.json b/src/assets/i18n/tr.json index 9b83bf35e..0cb1d5846 100644 --- a/src/assets/i18n/tr.json +++ b/src/assets/i18n/tr.json @@ -471,619 +471,6 @@ "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "Tüketilen kafein miktarını kaydedin", "UPDATE_TITLE": "Yeni ne var?", "NEXT": "Sonraki", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "Version 5.0: Thats new!", - "DESCRIPTION": [ - "New layout, new icons, new colors, new logo", - "New preparation methods", - "Preparations now can be categorized (percolation, espresso, full immersion)", - "Preparation can now inherit tools (e.g. different filters)", - "Preparation parameter can now be customized, define your own workflow for each preparation", - "Added more editable bean information, different sorts can now be added", - "Amount of water field is available for percolation\/full immersion", - "Where did you brew your best coffee? Active coordinate saving in settings", - "Activate fast repeat to add brews instant", - "Added update screen to show the latest changes", - "Question added to rate the app after 25 uses", - "Added sorting for beans", - "Added search panel for brews\/beans", - "Cupping chart is added to brew details", - "Left over beans weight added on homescreen", - "Added typeahead for roasters", - "Rating moved to stars instead of icons" - ] - }, - "5.1.0": { - "TITLE": "Version 5.1: Thats new!", - "DESCRIPTION": [ - "New timepicker for brews", - "Roasting date can now be again selected on iOS", - "Images can be choosen again on iPad", - "TDS calculation is now again visible on beverage quantity", - "Safe zones added for iOS-devices" - ] - }, - "5.2.0": { - "TITLE": "Version 5.2: Thats new!", - "DESCRIPTION": [ - "Brews:<\/b>", - "Brew timer continues in the background", - "Brews can be favored", - "Screen for adding and editing a brew looks identical", - "Display can stay active during brewing (can be activated in the settings menu)", - "List of recent brews now also shows archived brews", - "", - "Beans:<\/b>", - "Bean photos are shown in the overview", - "Beans can be rated", - "", - "Interactions:<\/b>", - "Long press on a card leads to the edit view", - "Detail view can be accessed via click on the card", - "Github \/ Facebook \/ Instagram accounts linked", - "", - "Bugfixes:<\/b>", - "Bean information have been copied incorrect", - "Brew amount was activated by default for new users", - "", - "Other:<\/b>", - "Apple Healthkit integration (can be activated in the settings menu)", - "Cleanups", - "Layout changes", - "Extension of statistics", - "Startup check revised", - "Support for different card sized for brews and beans" - ] - }, - "5.3.1": { - "TITLE": "Version 5.3: Thats new!", - "DESCRIPTION": [ - "Brew methods:<\/b>", - "Changes to the card view", - "Custom images can be attached in the edit screen", - "Brew tools will be saved in edit screen, even when '+' is not pressed", - "", - "Grinders:<\/b>", - "Custom images can be attached in the edit screen", - "", - "Brews:<\/b>", - "Parameter 'Attachments' renamed in 'Attachments \/ Photos'", - "", - "Dashboard:<\/b>", - "If bean amount is less then 1000g, the number will be written as a whole", - "", - "Bug fixes:<\/b>", - "Editing via a long-press, does not change information any more", - "Information on the dashboard are updated after made changes", - "Multiple variety information with blends can be saved again", - "Added startup error message if app-data is missing" - ] - }, - "5.4.0": { - "TITLE": "Version 5.4: Thats new!", - "DESCRIPTION": [ - "Roasting section:<\/b>", - "Manage all of your green beans and roasters (can be activated in the settings menu)", - "Save all of your green beans and transfer them into roasted onces", - "Add your roaster and connect them with your different kind of roasted beans", - "", - "Website:<\/b>", - "Go live of our new website! -> https:\/\/beanconqueror.com", - "", - "Support us:<\/b>", - "You've always wanted to support Beanconqueror? We've added a new 'Buy me a coffee' connection", - "", - "iOS - iCloud:<\/b>", - "The first step into iCloud support was made. At the very first start all of your existing app data will be moved into the support iCloud directory.", - "You have to activate this option in the iCloud Settings first in order to save Beanconqueror on iCloud", - "", - "Android\/iOS - Automated file-export:<\/b>", - "Automated Beanconqueror.json-File is saved for a maximum of 7 days, after that they will be automated deleted again", - "Android: Download\/Beanconqueror_export\/Beanconqueror_automatic_export_DAY.json", - "iOS: Files\/Download\/Beanconqueror_export\/Beanconqueror_automatic_export_FILE.json", - "", - "Settings:<\/b>", - "Excel - Export all of your data to excel to work with it even further", - "Define your own image quality between 50% to 100% (default 100%)", - "Brew rating - Define how much stars\/points you'd like to set for each brew. Minimum 5, maximum 100", - "", - "New tracking:<\/b>", - "We've changed to our open source service Matomo, which will be hosted on our own server", - "Removed Google Analytics \/ Firebase", - "", - "Bug fixes:<\/b>", - "Apple Healthkit - Settings were not saved", - "Sometimes brew rating stars weren't filled (Brew add\/edit)", - "Edit via long tap, screen wasn't scrollable", - "Import of bigger files on iOS led to misconduct", - "Delete procedure of beans \/ preparations or mills were not consistent and lead to graphical issues", - "Wrong calculation of beverage quantity in statistics and list views", - "", - "Share:<\/b>", - "Share your brews and beans with all coffee lovers!", - "", - "Other:<\/b>", - "Clean ups", - "Layout changes", - "Extension of statistics", - "Startup check revised, added please wait window", - "Some label changes", - "Changed data access \/ order inside app to reduce problems" - ] - }, - "6.0.0": { - "TITLE": "Version 6.0: Thats new!", - "DESCRIPTION": [ - "Bluetooth scales<\/b>", - "Support of the first bluetooth scale - Decent-Scale - Big thanks to Decent Espresso", - "Support of Acaia Lunar", - "", - "Aroma cupping<\/b>", - "Cup each brew with the different aromatics and flavors", - "", - "Water section<\/b>", - "Add your own water, activate this section in the settings", - "", - "Support of more languages<\/b>", - "Support for spanish - Big thanks to Frank!", - "", - "Improvements<\/b>", - "Support of long press '+' on brews", - "Added new brew parameters", - "Support of different currencies", - "Edit brew while in detail view", - "Choose multiple images at once", - "Support of brix to TDS conversion", - "If bean package is empty, you'll be asked if you want to archive the package on the last brew", - "Reset of roastdate supported", - "Support of detail views on beans, grinders and preparation methods", - "Added brew ratio (g\/l)", - "", - "iOS<\/b>", - "Support of safe areas", - "", - "Bug fixes<\/b>", - "Apple Healthkit - Decaffeinated coffee was saved", - "Copy of beans led to misconduct", - "Added brew time to excel export", - "Small bug fixes", - "", - "Others<\/b>", - "Beans, grinders and preparation methods are now sorted alphabetic in dropdowns" - ] - }, - "6.1.0": { - "TITLE": "Version 6.1: Thats new!", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Scan your coffee bags! All coffee information are directly inserted from the roastery.", - "", - "Bluetooth scales<\/b>", - "Support of Acaia Pearl 2021 - Thanks to Micah and Mike", - "Support of Acaia Lunar 2021 - Thanks to Micah and Mike", - "Support of Acaia Pyxis - Thanks to Micah and Mike", - "Support of Hiroia Jimmy - Thanks to Silas", - "Support of Felicita Arc - Thanks to Herman", - "Care: Acaia Pearl < 2021 is not supported right now", - "Weightinformation of bluetooth scale can now be used on the beans page", - "Weight changes are now visible without starting a brew via timer", - "", - "Brew overview<\/b>", - "Customize your visible brew parameters in the overview in general or for each preparation method", - "Preparation images are now visible in the listview", - "", - "Brew graph<\/b>", - "Rework of brew graph to a more smoother solution", - "Brew graph now can be maximized", - "Brew graph can now be zoomed in the brew-detail view aswell as exported", - "Average flow quantity is now displayed", - "", - "Beans<\/b>", - "Added fields: Buy date, FOB-Price, Purchasing price", - "Beans can now be favorited and filtered", - "If a bean gets archived, you can now rate the package aswell", - "Pressing '+' you can now choose to add or scan a new package", - "Long press '+' to directly add a new bean", - "", - "Preparation methods<\/b>", - "Preparation methods can now be repeated with all settings", - "More preparation methods are available - Thanks to Nicola", - "Selecting a preparation method also displays the image", - "", - "Settings<\/b>", - "Ratings can now be stepped (1, 0.75, 0.5, 0.25, 0.1)", - "Bluetooth scale - Define if the scale should be set to weight zero when starting a new brew, or starting the timer", - "Bluetooth scale - Define if you want to ignore anomalies or negative values - if yes, a live graph won't be possible", - "Choose now, if you want to see archived brews on the home page", - "Export also now exports the raw data of the saved bluetooth values", - "", - "Improvements<\/b>", - "Delete of preparation method tools now won't delete brews anymore", - "Preparation method tools now can be edited and archived", - "", - "Bug fixes:<\/b>", - "Found more issues which could lead to a data loss", - "Small bug fixes", - "", - "Others:<\/b>", - "Updating to Ionic-Framework 6, therefore some small visual changes takes place" - ] - }, - "6.1.3": { - "TITLE": "Version 6.1.3: Thats new!", - "DESCRIPTION": [ - "Android - Attention<\/b>", - "In first please: Sorry!", - "Sadly the database was resetted from going form APK to AAB format on Android Play Store, and your app will propably start without data.", - "I could not debug or control this situation, while development everything worked as expected", - "If your app started blank, please go into settings and import the file below 'Download\/Beanconqueror_export\/Beanconqueror_automatic_export_*.json' * stands for the latest timestamp, the backup.", - "All datas should then be back as normal, if not please write me an e-mail: info@beanconqueror.com." - ] - }, - "6.1.5": { - "TITLE": "Version 6.1.5: Das ist neu", - "DESCRIPTION": [ - "QR Codes<\/b>", - "Lade die QR-Code Daten der Rösterei nun erneut", - "", - "Brühgraph<\/b>", - "Wasserfluss wird nun in Echtzeit berechnet", - "", - "Bohnen<\/b>", - "Suchfeld bei der Auswahl der Bohnen", - "", - "Fehlerbehebungen:<\/b>", - "Nach Aufnahme eines Bildes war der Ladebalken nicht verschwunden", - "Kleinere Fehlerbehebungen" - ] - }, - "6.2.0": { - "TITLE": "Version 6.2.0: Yenilikler", - "DESCRIPTION": [ - "Basınç cihazları<\/b>", - "Kendin yap - Popsicle Sensörünün desteği - Mike ve Shay desteğin için teşekkürler", - "Belirli bir basınçta otomatik başlatma zamanlayıcısı - ayarlardan düzenlenebilir", - "Basınç göstergesine basın, basıncı 0'a sıfırlayacaktır", - "Bağlantıda basınç aygıtının ve mac adresinin görünen adı", - "", - "Bluetooth tartılar<\/b>", - "Eureka Precisa Desteği - Mimoja desteğin için teşekkürler", - "Bluetooth tartının davranışını yeni bir demleme üzerinde tanımlayın - ayarlarda düzenlenebilir", - "Filtre veya espresso'da hangi grafiklerin görüntülenmesi gerektiğini tanımlayın - ayarlardan düzenlenebilir", - "Sorunları azaltmak için bluetooth komutlarının sıralı işlenmesi sağlandı", - "Bağlandığında bluetooth ölçeğinin ve mac adresinin görünen adı", - "", - "Demlemeler<\/b>", - "Milisaniye desteği - Ayarlarda etkinleştirilebilir", - "Filtre sistemi genişletildi, kavurma türü ve kavurucu için arama yapılabilir", - "Demleme ekle \/ düzenle sayfasından bluetooth tartınızı veya basınç cihazınızı yeniden bağlayabilirsiniz", - "", - "Çekirdekler<\/b>", - "Çekirdeğinizi paylaşın (ayrı bir sunucu gerektirmeden) - Mike desteğin için teşekkürler", - "Çekirdeğinizle yapılan tüm demlemeleri gösterin", - "Demlemede kullandığınız çekirdekleri derecelendirin - ayarlardan düzenlenebilir", - "", - "Daha fazla dil<\/b>", - "Türkçe Desteği - Halil Portakal desteğin için teşekkürler", - "Çince Desteği - Jiageng desteğin için teşekkürler", - "", - "Değirmenler<\/b>", - "Son kullanılan öğütme ayarının yanı sıra son kullanılan çekirdeğin görüntülenmesi", - "", - "Geliştirmeler<\/b>", - "Henüz onaylanmamış bir çekirdek tarandığında hata iletisi (bu bağlantı, bir kısmı veya tamamı ingilizce olan içeriğe işaret edebilir)", - "Demleme tarihinin düzenlenmesi varsayılan olarak etkin değildir", - "", - "Diğer<\/b>", - "Yazım hataları düzeltildi", - "Normal ayarlarda bile yıldız derecelendirmesini görmemenize neden olan bir hata düzeltildi", - "Eski demleme grafikleri artık tekrar dışa aktarılabilir", - "Ionic 6.3.0 güncellendi", - "Daha küçük hata düzeltmeleri" - ] - }, - "6.3.0": { - "TITLE": "Version 6.3.0: Neler yeni", - "DESCRIPTION": [ - "Bluetooth tartılar<\/b>", - "Bir sonraki bluetooth komutuna kadar kimin bekleyeceğini belirleyin", - "", - "Demlemeler<\/b>", - "Demleme tarihlerini sıfırlayın", - "Bluetooth-Tartı bağlıysa, son demleme ağırlığı kutucukta görüntülenecektir.", - "Büyütülmüş demleme grafiğinde daha büyük düğmeler", - "Demleme verilerini indirmek için excel veya json'u seçebilirsiniz", - "Artık hazırlama yöntemi simgeleri\/resimleri yerine çekirdek resimleri görüntülenebilir -> Ayarlarda etkinleştirin", - "", - "Çekirdekler<\/b>", - "Çekirdek artık çeşidine (varyeteye) göre aranabilir", - "", - "Değirmenler<\/b>", - "Notları liste içinde ve detay olarak görüntüleme", - "", - "İyileştirmeler<\/b>", - "Kaç milisaniyenin görüntüleneceğini seçin (Girilen değerlerin yine de 3 ondalık basamak olması gerekir)", - "Bağış düğmeleri eklendi", - "Metin alanları artık kaydırılabilir", - "İstatistiklerde demleme süresi artık biçimlendirildi", - "Bildirim açılır pencereleri artık en üstte görünür ve X(çarpı işareti) tarafından kapatılabilir", - "Devre dışı bırakılan detay parametresi artık aktif, örneğin artık Öğütücü gizlenebilir", - "Analizler devre dışı bırakılabilir veya etkinleştirilebilir", - "", - "Diğer:<\/b>", - "Yazım hataları düzeltildi", - "Ionic 6.4.0 güncellendi", - "Küçük hata düzeltmeleri" - ] - }, - "6.4.0": { - "TITLE": "Version 6.4.0: Neler yeni?", - "DESCRIPTION": [ - "Bluetooth termometreler<\/b>", - "ETI Ltd termometreleri için destek (ThermaQ Blue, BlueTherm vb.) - Sensörler - Myles'e teşekkürler", - "Belirli bir sıcaklıkta otomatik başlatma özelliği - ayarlar bölümünde düzenlenebilir", - "", - "Bluetooth tartılar<\/b>", - "Skale 2 desteği", - "Bir Bluetooth tartı bir demlemeyi sıfırlamak istediğinde, kullanıcı bir güvenlik popup'ı alacak", - "", - "Görselleştirici<\/b>", - "Kaydedilmiş demlemelerinizi kullanılmış bluetooth cihazlarıyla manuel olarak yükleyin - Miha'nın desteği için teşekkürler.", - "(Adım 2: Otomatik yükleme)", - "", - "Çekirdek<\/b>", - "Çekirdek parametreleri ve listesi artık kişiselleştirilebilir ve değiştirilebilir", - "Çekirdekler artık kavurma derecesine göre filtrelenebilir", - "Çekirdek sayfası artık başlangıç sayfası olarak ayarlanabilir - Ayarlara bakın", - "Belirli alanlar için ön izleme alanları eklendi, örneğin Tür(Varyete)", - "Çekirdek tür bilgileri artık serbest metin içinde aranabilir", - "", - "Demlemeler<\/b>", - "Doğrudan bir hazırlama yöntemi seçilebilecek yeni bir düğme eklendi", - "'Tekrar' seçildiğinde hangi parametrelerin önceden ayarlanacağı özelleştirilebilir - Varsayılan olarak: Tümü", - "Bluetooth cihazları kullanılarak yapılmış tüm demlemeleri filtreleyin", - "Canlı demleme grafiğinin yeniden düzenlenmesi", - "Hızlı hesaplama için demleme oranı hesaplayıcısı eklendi", - "'Kaydet' düğmesine basmak zamanlayıcıyı durduracak", - "", - "Discord<\/b>", - "Beanconqueror Discord Sunucusuna katılın, tartışın, soru sorun veya geri bildirimde bulunun", - "", - "Android<\/b>", - "Paylaşma işlevi tekrar çalışıyor", - "Demleme grafiklerinizi içe veya dışa aktarın", - "", - "Geliştirmeler<\/b>", - "Mevcut giriş sayısı veya filtreleme sonrası giriş sayısını görüntüleme", - "Bir demleme eklerken\/düzenlerken, klavye görüntülendiğinde kaydetme veya iptal düğmesi gizlenecek", - "Çekirdek boyutu alanında sayısal bir klavye göstermek için ayarlardan etkinleştirme seçeneği", - "", - "Diğerleri:<\/b>", - "Daha küçük hata düzeltmeleri" - ] - }, - "6.4.10": { - "TITLE": "Version 6.4.1: Neler yeni?", - "DESCRIPTION": [ - "Diğerleri:<\/b>", - "Daha küçük hata düzeltmeleri" - ] - }, - "6.4.20": { - "TITLE": "Version 6.4.2: What's new?", - "DESCRIPTION": [ - "Fixing crash on startup", - "Fixing recycle when a bluetooth scale could not connect" - ] - }, - "6.5.0": { - "TITLE": "Versiyon 6.5.0: Yenilikler", - "DESCRIPTION": [ - "Bluetooth tartılar<\/b>", - "DiFluid Microbalance ve Smart Chef Scale'in desteği - Yannick'e teşekkürler!", - "Sadece Espresso hazırlamaları için: Ayarlarda, akış hızı algılanmadığında otomatik olarak demleme durdurulacak şekilde etkinleştirebilirsiniz", - "Beanconqueror'a bir tartıdan herhangi bir ağırlık güncellemesi alınmadığında güvenlik uyarısı eklendi", - "", - "Çekirdek<\/b>", - "Çekirdekleri artık resim olarak ve URL olarak paylaşabilirsiniz", - "", - "Xenia<\/b>", - "Basınç ve sıcaklık verileri artık kaydediliyor", - "", - "Demlemeler<\/b>", - "Bir demleme durdurulduğunda, demleme grafiği tam olarak görüntülenir", - "", - "Dışa Aktar\/İçe Aktar<\/b>", - "Artık .JSON dosyaları yerine .ZIP dosyaları kullanıyoruz, bu dosyalar içe ve dışa aktarma için kullanılıyor", - "Lütfen, güvenlik yedeklemesi ile birlikte zaten mevcut olan otomatik yedekleme mantığıyla bir kez ayarlara giderek bu sefer güvenlik yedeklemesi yapmayı unutmayın", - "", - "Geliştirmeler<\/b>", - "Küçük geliştirmeler", - "", - "Diğer<\/b>", - "Küçük hata düzeltmeleri" - ] - }, - "6.5.1": { - "TITLE": "Version 6.5.1: Neler yeni?", - "DESCRIPTION": [ - "Diğerleri:<\/b>", - "Daha küçük hata düzeltmeleri" - ] - }, - "6.6.0": { - "TITLE": "Sürüm 6.6.0: Yenilikler", - "DESCRIPTION": [ - "Refraktometre<\/b>", - "DiFluid R2 desteği - Yannick'e teşekkürler!", - "", - "Bluetooth tartılar<\/b>", - "Blackcoffee.io desteği - Yannick'e teşekkürler!", - "Tartılar için akış hızı ayarı", - "", - "Demlemeler<\/b>", - "Bir kahve çekirdeği için 'en iyi demleme' olarak işaretleme - Ayarlarda etkinleştirilebilir", - "Notlarınızı artık detay görünümünde kopyalayın", - "Demlemelerinizi kullanılan profillere göre filtreleyin", - "Demlemelerinizi liste menüsü aracılığıyla doğrudan derecelendirin", - "Görselleştirme dosyasını artık detay görünümünde indirin", - "", - "Xenia<\/b>", - "Komut dosyaları artık notlara yazılıyor", - "Demleme başladığında makinenin demleme sıcaklığını ayarlama", - "", - "Geliştirmeler<\/b>", - "Küçük geliştirmeler", - "", - "Diğerleri<\/b>", - "Küçük hata düzeltmeleri" - ] - }, - "6.6.1": { - "TITLE": "Version 6.6.1: Neler yeni?", - "DESCRIPTION": [ - "Diğerleri:<\/b>", - "Daha küçük hata düzeltmeleri" - ] - }, - "6.6.2": { - "TITLE": "Version 6.6.2: What's new", - "DESCRIPTION": [ - "[ANDROID]Android 13 - Filestorage permissions<\/b>", - "[ANDROID]Due to changes in the file system permissions in Android, the access paths for how files are backed up and imported had to be revised. In addition, camera and image access no longer worked on Android 13 devices and got fixed with this update.", - "[ANDROID]Due to these changes, the minimum requirement for this app also had to be raised to Android 7.0.", - "[ANDROID]You can find out how Import\/Export works now here: https:\/\/beanconqueror.com\/faq", - "Empty", - "[IOS]iOS - Updated libraries<\/b>", - "[IOS]Due to library changes in cordova, this is a release to match all these :)" - ] - }, - "7.0.0": { - "TITLE": "Sürüm 7.00: Yenilikler", - "DESCRIPTION": [ - "Bluetooth Tartı Modu<\/b>", - "Ağırlıktaki ilk tespit edilen değişiklikte zamanlayıcıyı başlatın - Ayarlardan etkinleştirilebilir (yeni düğme görünür)", - "Güncel aktarılan ağırlığı görmezden gelin - ör; çalkalama, karıştırma veya grafikte kasıtlı ani yükselmeler olmadan ağırlığın kaldırılması - Ayarlarda etkinleştirilebilir (yeni düğme görünür)", - "Empty", - "Bluetooth Tartılar<\/b>", - "No Name Bluetooth tartısı için destek", - "DiFluid Microbalance veya Felicita tartıları bağlanırken, komut gecikmesi doğrudan ayarlanır", - "Empty", - "Grafik Alanı<\/b>", - "Ayarlarda grafik alanını etkinleştirin", - "Yeni bir demlemenin takip edeceği, bir demleme grafiği ayarlayın", - "Grafikler bir demlemeden veya ayrı bir grafik alanından gelebilir", - "Kendi grafiğinizi yükleyin - Demlemelerinizden bir .JSON dosyasını dışa aktarın", - "Empty", - "Görüntüleyici<\/b>", - "Her yeni demlemeyi bağlı bir grafikle otomatik olarak Görüntüleyiciye yükleyin - Ayarlardan etkinleştirilebilir", - "Gerekirse tüm demlemeleri Görüntüleyiciye manuel olarak yükleyin", - "Destek için Miha'ya teşekkürler!", - "Empty", - "Demlemeler<\/b>", - "Ayrıntılı görünümden bir demleme işlemini tekrarlayın", - "Artık bir espresso yöntemi olmasa bile (örneğin Pulsar) bir hazırlama yöntemi için ilk damlama etkinleştirilebilir.", - "Büyütülmüş görünümde demleme hızının bağlı bir ölçekle görüntülenmesi", - "Son demlemeler artık alfabetik olarak sıralanıyor ve son kullanılan tarih gösteriliyor", - "Bağlı ölçekle gerçek zamanlı espresso akışı için 1 g\/s'nin altındaki değerleri gösteriyor", - "Empty", - "Çekirdekler<\/b>", - "Çekirdek görüntüleme kartından son demlemeyi veya en iyi demlemeyi tekrarlayın", - "Empty", - "Hazırlık yöntemi<\/b>", - "Hazırlık araçları artık alfabetik olarak sıralanabilir ve filtrelenebilir", - "Hazırlama metodolojisinin son kullanımı artık seçildiğinde görüntüleniyor", - "Empty", - "Değirmenler<\/b>", - "Öğütücü seçerken artık son öğütme boyutu ve son kullanım görülebiliyor", - "Empty", - "Xenia<\/b>", - "Hata düzeltmesi: Devre dışı bırakılan komut dosyaları artık çalıştırılmıyor", - "Empty", - "Ayarlar<\/b>", - "Bir demleme veya kahve çekirdeğinde değişiklik yaptıysanız bir güvenlik uyarısının görüntülenmesi - Ayarlardan etkinleştirilebilir", - "Bluetooth cihazlı demlemeler için X ve Y ekseni ayaralamalarınızı yapabilirsiniz", - "Empty", - "Ionic 7<\/b>", - "Ionic 6'dan Ionic 7'ye Güncelleme", - "[IOS]IOS için minimum sürüm artık IOS 14 olacak", - "[ANDROID]Android için minimum sürüm artık Android 7.1 olacak", - "Empty", - "Yerelleştirme<\/b>", - "Tüm çeviriler için Localise kullanımı - Yannick'e çok teşekkürler", - "Siz de tercüme etmek ister misiniz? Localize ile artık çok kolay. Bize ulaşın: info@beanconqueror.com", - "Empty", - "Diğer<\/b>", - "Küçük hata düzeltmeleri", - "" - ] - }, - "7.1.0": { - "TITLE": "Sürüm 7.1.0: Yenilikler", - "DESCRIPTION": [ - "Daha fazla dil<\/b>", - "Fransızca desteği - Yannick'e teşekkürler", - "Endonezya'nın Desteği - Bondan, Ganjar'a teşekkürler", - "", - "Bluetooth Tartılar<\/b>", - "Yeni bir DIY-Bluetooth Tartısının Desteklenmesi (Rust & Python Firmware)", - "DiFluid Microbalance Ti Desteği", - "Tüm tartılar için akış hesaplamasının iyileştirilmesi", - "", - "Grafik Alanı<\/b>", - "Seçim referans kartına daha fazla bilgi eklendi", - "", - "Demlemeler<\/b>", - "Bluetooth-Tartılar - Araç çubuğunun üst kısmına bir dara alma düğmesi eklendi", - "", - "Çekirdekler<\/b>", - "Çeşitli bilgilerin kopyalanması desteği", - "", - "Su bölümü<\/b>", - "Potasyum parametresi eklendi", - "", - "Öğütücüler<\/b>", - "RPM parametresi artık liste görünümünde ve seçim görünümünde görülebilir", - "", - "Ayarlar<\/b>", - "Bağlı bluetooth cihazlarıyla filtre veya espresso için kendi zaman ekseninizi tanımlayın", - "Amerikan formatına da uyması için farklı tarih formatları ekleme", - "", - "Diğer<\/b>", - "Küçük hata düzeltmeleri" - ] - }, - "7.2.0": { - "TITLE": "Sürüm 7.2.0: Yenilikler", - "DESCRIPTION": [ - "Daha fazla dil<\/b>", - "İtalyanca Desteği - Cancercookie'ye Teşekkürler", - "Lehçe Desteği - MarcinSachs'a teşekkürler", - "", - "Bluetooth Tartılar<\/b>", - "'Zamanlayıcı başlatılırken terazinin darasını al' ayarını yaptığınızda, terazi birkaç 0 ağırlık raporu bildirene kadar zaman başlangıcı bekleyecektir.", - "", - "Xenia<\/b>", - "V1 ve V2 Api kullanımı için geçiş ekleme", - "İstenilen ağırlıkta akışı durdurmak için otomatik hesaplama ile \"Ağırlığa Göre Demleme Özelliği\" ekleme", - "", - " Meticulous <\/b>", - "İlk Meticulous entegrasyonu - Tüm Meticulous Ekibine teşekkürler!", - "", - "Ayarlar", - "Sayılacak ilk damla için bir eşik tanımlayın", - "", - "Diğer<\/b>", - "Koddaki bazı teknik değişiklikler", - "Küçük değişiklikler", - "[IOS]Veritabanı erişimi kurulamadığında açılır pencereler gösteriliyor.", - "", - " Teşekkürler <\/b>", - "Uygulamayı birden fazla dilde kullanılabilir hale getirmek için büyük çaba sarf eden tüm çevirmenlere teşekkür ederiz." - ] - } - }, "CUSTOM_PARAMETERS": "Parametreyi özelleştir", "CUSTOM_DEFAULT_PARAMETERS": "Varsayılan", "CUSTOM_MANAGE_PARAMETERS": "Yönet", @@ -1458,7 +845,7 @@ "LOCATION": "Bluetooth ile terazisiyi bulmak için uygulamanın konuma erişmesi gerekiyor.", "BLUETOOTH": "Bluetooth ile terazisiyi bulmak için uygulamanın bluetooth erişimi gerekiyor." }, - "INFORMATION_DESCRIPTION": "Desteklenen tartılar: Decent Tartı, Acaia Tartı, Felicita Tartı, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti,Smartchef Scale, Blackcoffee.io and Eureka Precisa. Care: If the Eureka Precisa recieves a negative value, the timer stops" + "INFORMATION_DESCRIPTION": "Desteklenen tartılar: Decent Tartı, Acaia Tartı, Felicita Tartı, Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti,Smartchef Scale, Blackcoffee.io, Bookoo Mini Scale and Eureka Precisa. Care: If the Eureka Precisa recieves a negative value, the timer stops" }, "QR": { "WRONG_QRCODE_DESCRIPTION": "Yanlış qr kodu veya yanlış içerik", @@ -1561,7 +948,7 @@ "DISCONNECTED_SUCCESSFULLY": "Basınç cihazı bağlantısı kesildi", "DISCONNECTED_UNPLANNED": "Basınç cihazının bağlantısı beklenmeyen bir şekilde kesildi", "STAY_CONNECTED_ON_APP_MINIMIZE": "Keep pressure device connected even when app is in the background", - "INFORMATION_DESCRIPTION": "Desteklenen cihazlar şunlardır: Popsicle, Pressensor, Smart Espresso Profiler", + "INFORMATION_DESCRIPTION": "Desteklenen cihazlar şunlardır: Popsicle, Pressensor, Smart Espresso Profiler, Bookoo Espresso Monitor", "BLUETOOTH_SCAN_RUNNING": "Basınç cihazı 60 saniye aranacak, lütfen bekleyin", "BLUETOOTH_NOT_ENABLED": "Bluetooth aktif değil, lütfen düzgün çalışması için etkinleştirin", "REQUEST_PERMISSION": { @@ -1835,5 +1222,89 @@ "STARTING_IN": "Başlayan ... {{time}}", "IOS_DATABASE_ISSUE_TITLE": "DİKKAT !!!!! - VERİTABANI BAĞLANTISI KAYBI", "IOS_DATABASE_ISSUE_DESCRIPTION": "Veritabanı ile bağlantı kaybıyla karşılaştığımızı size bildirmekten üzüntü duyuyoruz. Bu sorun, Beanconqueror'ın kontrolü dışında, Apple'ın sistemindeki çözülmemiş bir hatanın sonucudur. Olası bir veri kaybını önlemek için Beanconqueror uygulamasını derhal zorla kapatmanızı ve yeniden açmanızı rica ederiz.", - "RELOAD_APP": "Uygulamayı şimdi yeniden yükle" + "RELOAD_APP": "Uygulamayı şimdi yeniden yükle", + "WATER_TYPE_ADD_CUSTOM": "Özel su", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "Su ekle", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "GÜÇLÜ
az ekstraksiyon", + "EXTRACTION_CHART_LABEL_STRONG": "GÜÇLÜ
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "GÜÇLÜ
sert", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "Az ekstraksiyon", + "EXTRACTION_CHART_LABEL_IDEAL": "İDEAL", + "EXTRACTION_CHART_LABEL_HARSH": "sert", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "ZAYIF
az ekstraksiyon", + "EXTRACTION_CHART_LABEL_WEAK": "ZAYIF
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "ZAYIF
sert", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "Metinden konuşmaya", + "TEXT_TO_SPEECH": { + "ACTIVATE": "Metinden konuşmaya özelliğini etkinleştirin", + "BREW_STARTED": "Demleme başlangıcı", + "BREW_ENDED": "Demleme sonu", + "TIME": "Zaman", + "SPEAK_EVERY_MS": "Seçilen her milisaniyede konuşun", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "Aşağıdaki sayılar deneme amaçlı olarak söylenecektir", + "TEST_SPEAK": "Test konuşmasını başlat", + "PITCH": "Söylemek", + "RATE": "Oran" + }, + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "Dokunsal geri bildirim", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "Dokunsal geri bildirimi etkinleştirin", + "BREW_STARTED": "Demleme başladığında titrer", + "BREW_STOPPED": "Demleme durduğunda titrer", + "TARE": "Terazi dara aldığınızda titrer" + }, + "CONNECTED": "Bağlandı", + "DISCONNECTED": "Bağlantı kesildi", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "Bu deneysel bir özelliktir", + "SHOW_HOURS": "Saati göster", + "SHOW_MINUTES": "Dakikayı göster", + "BEANS_UNARCHIVE": "Arşivden çıkar", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "Çekirdek arşivden çıkarıldı", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "Sürüm 7.3.0: Yenilikler", + "DESCRIPTION": [ + "Su Bölümü - Üçüncü Dalga (Third Wave) Su Eklendi<\/b>", + "Sevdiğiniz tüm Üçüncü Dalga (Third wave) Su Profillerini Su seçkisinde bulabilirsiniz", + "", + "Bluetooth Tartılar<\/b>", + "Bookoo-Tartı desteği - Yannick'e teşekkürler!", + "", + "Basınç Sensörü<\/b>", + "Bookoo-Basınç Sensörü Desteği - Yannick'e teşekkürler!", + "Gerçek eşik - otomatik başlatmanın şu anda desteklenmediğini lütfen unutmayın.", + "", + "Dokunsal Motor<\/b>", + "Demlemeye başladığınızda telefonun titremesine izin verin - Deneysel özellik - Ayarlardan etkinleştirin", + "", + "[IOS]Metinden Konuşmaya<\/b>", + "[IOS]Metinden konuşmayı etkinleştirin ve demleme zamanlayıcısının yanı sıra tüm tartı ağırlık değerlerini söyleyin - Deneysel özellik - Ayarlardan etkinleştirin", + "", + "Görselleştirici<\/b>", + "Ekstraksiyon verimini görselleştiriciye gönder", + "", + "Resimler<\/b>", + "Artık sola veya sağa doğru sıralanabilir", + "", + "Demleme<\/b>", + "Zamanlayıcıyı açarken, doğrudan saniyelere odaklanın", + "Zamanlayıcı katmanında saatleri veya dakikaları gizleyin", + "Araç çubuğunda Xenia veya Meticulous bağlıysa veya bağlantısı kesilmişse o anki duruma ait simgeyi göster", + "Düzenleme modundayken demleme bölümü görünür olmadığında bir demlemeyi kaydedemiyor oluşunuz düzeltildi", + "", + "Çekirdek<\/b>", + "Eylem listesindeki bir çekirdeği arşivden çıkarma", + "", + "Diğer<\/b>", + "Koddaki bazı teknik değişiklikler", + "Küçük değişiklikler" + ] + } + } } \ No newline at end of file diff --git a/src/assets/i18n/zh.json b/src/assets/i18n/zh.json index 46e999a6f..39bf89cd3 100644 --- a/src/assets/i18n/zh.json +++ b/src/assets/i18n/zh.json @@ -1,1839 +1,1310 @@ { - "NAV_MENU": "菜单", - "NAV_HOME": "主页", - "NAV_SETTINGS": "设置", - "NAV_BREWS": "冲泡", - "NAV_BEANS": "咖啡豆", - "NAV_PREPARATION": "冲泡方法", - "NAV_MILL": "磨豆机", - "NAV_ABOUT_US": "关于我们", - "NAV_CONTACT": "联系方式", - "NAV_PRIVACY": "隐私", - "NAV_CREDITS": "Credits", - "NAV_TERMS": "团队和贡献者", - "NAV_THANKS": "谢谢!", - "NAV_LICENCES": "开源许可证", - "NAV_STATISTICS": "数据统计", - "NAV_IMPRESSUM": "公司信息", - "NAV_COOKIE": "缓存文件", - "NAV_LOGS": "日志", - "NAV_BREW_PARAMS": "冲泡参数", - "NAV_INFORMATION_TO_APP": "关于软件", - "NAV_WATER_SECTION": "水质", - "NAV_HELPER": "计算", - "POPOVER_BREWS_OPTION_REPEAT": "复制", - "POPOVER_BREWS_OPTION_DETAIL": "详情", - "DETAIL": "详情", - "POPOVER_BREWS_OPTION_EDIT": "编辑", - "POPOVER_BREWS_OPTION_DELETE": "删除", - "POPOVER_BREWS_OPTION_PHOTO_GALLERY": "图库", - "POPOVER_BREWS_OPTION_CUPPING": "品尝", - "POPOVER_BREWS_OPTION_MAP_COORDINATES": "在地图上展示", - "POPOVER_BREWS_OPTION_FAST_REPEAT": "快速复制", - "PAGE_BREWS_NO_ENTRIES": "目前还没有添加冲泡方式", - "PAGE_BREWS_NO_ARCHIVED_ENTRIES": "目前还没有完成过一次冲泡", - "CANT_START_NEW_BREW_TITLE": "这儿少了点什么 ...", - "CANT_START_NEW_BREW_DESCRIPTION": "使用软件前,请至少添加一种咖啡豆、一种冲泡方式和一个研磨机。 你可以使用菜单跳转到不同的类别以添加上述信息。", - "PAGE_HOME_WELCOME_GREETINGS": "终于等到你来了!", - "PAGE_HOME_TOTAL_BREW": "冲泡", - "PAGE_HOME_TOTAL_BREWS": "冲泡次数", - "PAGE_HOME_BEAN_EXPLORED": "款咖啡豆", - "PAGE_HOME_BEANS_EXPLORED": "款咖啡豆", - "PAGE_HOME_LAST_BREWS": "冲泡记录", - "PAGE_HOME_LAST_BREW": "上一次冲泡", - "PAGE_HOME_DIFFERENT_PREPARATION_METHODS": "不同的冲泡方式", - "PAGE_HOME_DIFFERENT_MILLS": "不同的磨豆机", - "PAGE_HOME_SUPPORTER": "软件支持", - "PAGE_HOME_START_BREW": "开始冲泡", - "PAGE_BEANS_LIST_OBTAINABLE": "可用", - "PAGE_BEANS_LIST_YOU_GOT_NO_FRESH_BEANS": "咖啡豆没货啦,快买一点新的吧!", - "PAGE_BEANS_LIST_YOU_GOT_NO_FINISHED_BEANS": "目前还没有一包已经喝完的咖啡。", - "PAGE_MILL_LIST_NO_MILL_EXISTING": "你还没有添加任何一个磨豆机", - "PAGE_PREPARATION_LIST_NO_PREPARATION_EXISTING": "你还没有添加任何一个冲泡方式", - "PAGE_CONTACT_SUGGESTIONS_QUESTIONS_WISHES": "建议、问题或请求?", - "PAGE_THANKS_THANKS_FOR_YOUR_SUPPORT": "感谢你的支持", - "PAGE_SETTINGS_LANGUAGE": "语言偏好", - "PAGE_SETTINGS_LANGUAGE_GERMAN": "German", - "PAGE_SETTINGS_LANGUAGE_ENGLISH": "English", - "PAGE_SETTINGS_LANGUAGE_SPANISH": "Spanish", - "PAGE_SETTINGS_LANGUAGE_TURKISH": "土耳其语", - "PAGE_SETTINGS_LANGUAGE_CHINESE": "汉语", - "PAGE_SETTINGS_GENERAL_SETTINGS": "常规设置", - "PAGE_SETTINGS_TRANSFER": "数据转移", - "PAGE_SETTINGS_PRESET_LAST_BREW": "使用预设值?", - "PAGE_SETTINGS_DISPLAY": "显示方式", - "PAGE_SETTINGS_DISPLAY_SINGLE_PAGE": "单页", - "PAGE_SETTINGS_DISPLAY_PAGING": "连续页面", - "PAGE_SETTINGS_STARTUP_VIEW": "起始页", - "PAGE_SETTINGS_ANALYTICS_INFORMATION": "分析", - "PAGE_SETTINGS_ANALYTICS_INFORMATION_TOOLTIP": "按 i 了解更多信息", - "PAGE_SETTINGS_TRACK_BREW_COORDINATES": "保存冲泡经纬度", - "PAGE_SETTINGS_FAST_REPEAT": "快速复制", - "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION": "保存咖啡因信息", - "PAGE_SETTINGS_WAKE_LOCK": "冲泡时屏幕保持常亮", - "PAGE_SETTINGS_CURRENCY": "货币单位", - "PAGE_STATISTICS_DIFFERENT_PREPARATION_METHOD": "冲泡器具", - "PAGE_STATISTICS_TOTAL_GROUND_BEANS": "研磨的咖啡豆总计", - "PAGE_STATISTICS_MONEY_SPENT_FOR_COFFEE": "购买咖啡豆总费用", - "PAGE_STATISTICS_DRUNKEN_BREWS": "冲泡总数", - "PAGE_STATISTICS_BREW_PROCESSES": "总冲泡次数", - "PAGE_STATISTICS_DRUNKEN_QUANTITY": "咖啡豆消耗量", - "PAGE_STATISTICS_BEAN_WEIGHT_USED": "咖啡豆研磨总量", - "PAGE_BREW_TEXT_INFORMATION_FROM_ROASTER": "烘焙信息", - "PAGE_ABOUT_NO_VERSION_AVAILABLE": "没有可用的版本", - "PAGE_ABOUT_APP_VERSION": "软件版本", - "PAGE_LICENCES_WEBSITE": "网站", - "BEAN_DATA_ROAST_NAME": "烘焙程度", - "BEAN_DATA_CUSTOM_ROAST_NAME": "自定义烘焙温度", - "BEAN_DATA_ROASTING_DATE": "烘焙日期", - "BEAN_DATA_ROASTER": "烘焙者", - "BEAN_DATA_VARIETY": "品种", - "BEAN_DATA_PROCESSING": "处理法", - "BEAN_DATA_COUNTRY": "国家", - "BEAN_DATA_MIX": "单一产地\/拼配", - "BEAN_DATA_AROMATICS": "风味味谱", - "BEAN_DATA_WEIGHT": "重量", - "BEAN_DATA_COST": "花销", - "BEAN_DATA_NAME": "咖啡豆名称", - "BEAN_DATA_REGION": "地区", - "BEAN_DATA_FARM": "庄园", - "BEAN_DATA_FARMER": "农场主", - "BEAN_DATA_ELEVATION": "海拔", - "BEAN_DATA_HARVEST_TIME": "收获日期", - "BEAN_DATA_PERCENTAGE": "百分比", - "BEAN_DATA_CERTIFICATION": "咖啡豆认证", - "BEAN_DATA_ROASTING_TYPE": "烘焙用于", - "BEAN_DATA_DECAFFEINATED": "无咖啡因", - "BEAN_DATA_URL": "网站", - "BEAN_DATA_EAN": "条形码", - "BEAN_DATA_PURCHASING_PRICE": "购买价格", - "BEAN_DATA_FOB_PRICE": "离岸价", - "BEAN_DATA_CUPPING_POINTS": "杯测分数", - "BREW_DATA_CUSTOM_BREW_TIME": "自定义冲泡时间", - "BREW_CREATION_DATE": "创建日期", - "REPEAT": "重复", - "EDIT": "编辑", - "DELETE": "删除", - "FINISHED": "归档", - "NOTES": "笔记", - "ADD_PHOTO": "添加照片", - "CANCEL": "取消", - "GENERATE": "生成", - "SAVE": "保存", - "ADD_SOMETHING": "添加", - "CONTACT": "联系", - "NAME": "名称", - "IMPORT": "导入", - "EXPORT": "导出", - "VIEW": "查看", - "ARCHIVE": "归档", - "CURRENT": "当前", - "BACK": "返回", - "CLOSE": "关闭", - "DAY": "日", - "BREW_DATA_TEMPERATURE_TIME": "温度时间", - "BREW_DATA_SURF_TIME": "冲泡时间", - "BREW_DATA_TIME": "时间", - "BREW_DATA_GRIND_SIZE": "研磨设置", - "BREW_DATA_GRIND_WEIGHT": "咖啡粉 (gr)", - "BREW_DATA_IN_OUT_BR": "入\/出 (BR)", - "BREW_DATA_NOTES": "笔记", - "BREW_DATA_PREPARATION_METHOD": "冲泡器具", - "BREW_DATA_MILL": "磨豆机", - "BREW_DATA_MILL_SPEED": "研磨速度 (rpm)", - "BREW_DATA_MILL_TIMER": "研磨时间", - "BREW_DATA_BREW_QUANTITY": "水量", - "BREW_DATA_BEAN_TYPE": "咖啡豆类型", - "BREW_DATA_BREW_TEMPERATURE": "冲泡温度", - "BREW_DATA_PRESSURE_PROFILE": "冲泡参数", - "BREW_DATA_COFFEE_TYPE": "咖啡类型", - "BREW_DATA_COFFEE_CONCENTRATION": "咖啡浓度", - "BREW_DATA_COFFEE_FIRST_DRIP_TIME": "第一滴咖啡落下", - "BREW_DATA_COFFEE_BLOOMING_TIME": "闷蒸\/预浸泡时间", - "BREW_DATA_ATTACHMENTS": "附件\/照片", - "BREW_DATA_RATING": "评分", - "BREW_DATA_CALCULATED_COFFEE_BREW_TIME": "萃取时间", - "BREW_DATA_TDS": "总溶解固体", - "BREW_DATA_CALCULATED_EXTRACTION_YIELD": "萃取率 %", - "BREW_INFORMATION_BREW_RATIO": "冲泡率", - "BREW_INFORMATION_BEAN_AGE": "豆龄", - "BREW_INFORMATION_BREW_QUANTITY_TYPE_NAME": "计数类型", - "BREW_DATA_TDS_EY": "TDS \/ %EY", - "BREW_DATA_BREW_BEVERAGE_QUANTITY": "冲泡出的咖啡", - "BREW_DATA_PREPARATION_METHOD_TOOL": "冲泡器具", - "BREW_DATA_WATER": "水质", - "BREW_DATA_BEAN_WEIGHT_IN": "咖啡豆数量 (gr)", - "BREW_DATA_VESSEL": "Server", - "BREW_DATA_VESSEL_WEIGHT": "Server weight", - "BREW_DATA_VESSEL_NAME": "Server name", - "BREW_DATA_FLAVOR": "风味", - "BREW_DATA_FLOW_PROFILE": "Flow", - "ONE_DAY": "天", - "DAYS": "天", - "ONE_HOUR": "小时", - "HOURS": "小时", - "ONE_MINUTE": "分钟", - "MINUTES": "分钟", - "WITHOUT_COFFEE": "没冲咖啡", - "NOT_FOUND": "未找到", - "INVALID_FILE_FORMAT": "文件格式无效", - "FILE_NOT_FOUND_INFORMATION": "文件未找到", - "ERROR_ON_FILE_READING": "读取文件数据时出错", - "IMPORT_SUCCESSFULLY": "导入成功", - "IMPORT_UNSUCCESSFULLY_DATA_NOT_CHANGED": "导入不成功,没有数据被更改", - "INVALID_FILE_DATA": "无效的文件内容", - "DOWNLOADED": "下载", - "FILE_DOWNLOADED_SUCCESSFULLY": "文件 '{{fileName}}' 已成功下载到您的下载文件夹!", - "NO": "不", - "YES": "是", - "SURE_QUESTION": "确定吗?", - "DELETE_BREW_QUESTION": "删除本次冲泡?", - "DELETE_BEAN_QUESTION": "确定要删除这款咖啡豆吗? 所有相关的冲泡数据也将被删除!", - "DELETE_GREEN_BEAN_QUESTION": "确定要删除这款生豆吗? 所有相关的咖啡豆以及冲泡数据都将被删除!", - "DELETE_MILL_QUESTION": "确定要删除这个研磨机吗? 所有相关的冲泡数据也将被删除!", - "DELETE_PREPARATION_METHOD_QUESTION": "确定要删除这个器具吗? 所有相关的冲泡数据也将被删除!", - "DELETE_PREPARATION_TOOL_QUESTION": "确定要删除这个工具吗? 所有相关的冲泡数据也将被删除。", - "APP_COULD_NOT_STARTED_CORRECTLY_BECAUSE_MISSING_FILESYSTEM": "由于缺少文件系统,应用程序无法正确启动", - "CARE": "关心", - "ERROR_OCCURED": "出现错误", - "CSV_FILE_NOT_DOWNLOADED": "CSV 文件无法下载!", - "CSV_FILE_DOWNLOADED_SUCCESSFULLY": "CSV 文件 '{{fileName}}' 已成功下载到您的下载文件夹!", - "ADD_BREW": "添加冲泡", - "CHOOSE": "选择", - "CHOOSE_PHOTO_OR_LIBRARY": "拍摄照片或从相册选择", - "RECORD": "拍摄", - "PAGE_BEAN_INFORMATION": "咖啡豆信息", - "PAGE_BEAN_INFORMATION_GOOD_BREWS": "好的", - "PAGE_BEAN_INFORMATION_BAD_BREWS": "差的", - "PAGE_BEAN_INFORMATION_COUNT_BREWS": "总冲泡次数", - "INFORMATION": "信息", - "PAGE_BEAN_BREW_CHART_TITLE": "该款咖啡豆的冲泡概述", - "PAGE_BEAN_INFORMATION_AWESOME_BREWS": "令人惊叹", - "PAGE_BEAN_INFORMATION_NORMAL_BREWS": "感觉普通", - "PAGE_BEAN_INFORMATION_NOT_RATED_BREWS": "不做评价", - "PAGE_PREPARATION_INFORMATION_BREWS_DONE": "用这种器具冲泡", - "PAGE_PREPARATION_INFORMATION_BREWED_QUANTITY": "冲泡数量", - "PAGE_PREPARATION_INFORMATION_GRIND_WEIGHT": "消耗的豆子重量", - "PAGE_PREPARATION_INFORMATION_TIME_SPENT_BREWING": "总冲泡时间", - "PAGE_PREPARATION_INFORMATION": "器具信息", - "SECONDS": "秒", - "PAGE_MILL_INFORMATION": "磨豆机信息", - "PAGE_MILL_INFORMATION_BREWS_DONE": "使用这个磨豆机", - "PAGE_MILL_INFORMATION_GRIND_WEIGHT": "消耗的豆子重量", - "PAGE_HELPER_WATER_HARDNESS": "水的硬度", - "PAGE_HELPER_WATER_HARDNESS_CA_CONTENTS": "钙含量 mg\/l", - "PAGE_HELPER_WATER_HARDNESS_MG_CONTENTS": "镁含量 mg\/l", - "PAGE_HELPER_WATER_HARDNESS_GERMAN_HARDNESS": "°dH", - "PAGE_HELPER_WATER_HARDNESS_TOTAL_HARDNESS": "总硬度", - "PAGE_HELPER_BREW_RATIO": "粉液比", - "PAGE_HELPER_BREW_RATIO_GROUND_COFFEE": "咖啡粉重 (gr)", - "PAGE_HELPER_BREW_RATIO_WATER": "液体 (gr\/ml)", - "PAGE_HELPER_BREW_RATIO_CALCULATED": "计算出的粉液比", - "PAGE_SETTINGS_SHOW_ARCHIVED_BREWS": "显示已经归档的冲泡", - "PAGE_SETTINGS_SHOW_ARCHIVED_BEANS": "显示已经归档的咖啡豆", - "PAGE_SETTINGS_SHOW_ARCHIVED_GREEN_BEANS": "显示已经归档的生豆", - "CUPPING_SCORE": "分数", - "CUPPING_SCORE_DRY_FRAGRANCE": "干香", - "CUPPING_SCORE_WET_AROMA": "湿香", - "CUPPING_SCORE_BRIGHTNESS": "明亮度", - "CUPPING_SCORE_FLAVOR": "风味", - "CUPPING_SCORE_BODY": "醇厚度", - "CUPPING_SCORE_FINISH": "尾韵", - "CUPPING_SCORE_SWEETNESS": "甜度", - "CUPPING_SCORE_CLEAN_CUP": "干净度", - "CUPPING_SCORE_COMPLEXITY": "复杂度", - "CUPPING_SCORE_UNIFORMITY": "一致性", - "CUPPING_SCORE_CUPPERS_CORRECTION": "杯测矫正", - "CUPPING_SCORE_DRY_FRAGRANCE_TOOLTIP": "指加入热水前,干磨咖啡的气味", - "CUPPING_SCORE_WET_AROMA_TOOLTIP": "指加入热水后,湿咖啡研磨的气味。", - "CUPPING_SCORE_BRIGHTNESS_TOOLTIP": "酸度是由一组绿原酸、柠檬酸、奎宁酸、乙酸等引起的咖啡中尖锐的高调味道,主要在口腔和舌头的前部感觉到。 (质量很好;与咖啡的苦味无关,也不会直接导致胃部不适)。 酸度受到许多杯测者的重视,并且直接关系到杯子的质量,因为酸度是高海拔种植的产物。", - "CUPPING_SCORE_FLAVOR_TOOLTIP": "这是口中的整体印象,包括所有其他评级。 有 4 种“主要味道”组(酸、甜、咸、苦)和许多“次要味道”。", - "CUPPING_SCORE_BODY_TOOLTIP": "通常被称为“口感”,主体是冲泡咖啡的重量和厚度感,由杯子中可溶性固体的百分比引起,包括提取的所有有机化合物(冲泡方法和使用的磨碎咖啡量会影响这一点 大大)。 我们对 Body 的评分较低,因为清淡的咖啡肯定不错,而且在某些原产地,较轻的酒体最适合整体杯子的特性。", - "CUPPING_SCORE_FINISH_TOOLTIP": "口腔清洁后的挥之不去的或新出现的味道。 这包括咖啡从嘴里流出到几分钟后的时间……这就是为什么你会发现很多杯测者在一两分钟后仍然体验到积极的味道时会修改回味分数的原因。", - "CUPPING_SCORE_SWEETNESS_TOOLTIP": "甜味几乎总是咖啡的理想品质,即使它被委婉地描述为“质朴的甜味”或“苦乐参半”。你可能会注意到精致的甜味(想想欧洲糕点、精美的糖果、白糖、 纯甜味)得分高,以及来自水果糖(果糖)的复杂甜味。 麦芽甜味(麦芽糖)不太传统,但非常令人向往,蜂蜜的范围从非常纯净干净到复杂、质朴的几乎是酵母味。 基本上,如果甜度是杯子的关键,它会被评为很好。", - "CUPPING_SCORE_CLEAN_CUP_TOOLTIP": "请注意,“干净的杯子”并不意味着咖啡上没有污垢。 它只是关于风味和“不干净”的原始、时髦的咖啡,而且风味也可能非常理想,例如来自苏门答腊的湿法去壳印度尼西亚咖啡,或干加工的埃塞俄比亚和也门类型。", - "CUPPING_SCORE_COMPLEXITY_TOOLTIP": "复杂性与“风味”和“完成”分数相得益彰,以传达多种风味的多样性或层次感。 这意味着在杯子里有很多发现。 再说一次,简单的咖啡可以在过度暴露于许多强大的、强烈的、复杂的咖啡后得到解脱。", - "CUPPING_SCORE_UNIFORMITY_TOOLTIP": "均匀度是指杯与杯之间的差异。 干法咖啡在本质上可能不如湿法咖啡均匀。 如果偶尔放弃的话,我们永远不会避免很多味道很好的东西。 这是在杯测方案中进行评分的,其中每个被审查的批次都制作了多个杯子。", - "CUPPING_SCORE_CUPPERS_CORRECTION_TOOLTIP": "这改编自 SCAA 系统和卓越杯评分(他们有时称其为“总分”)。 它允许杯测者确保总分正确传达杯子的整体印象。 你可能会批评这种方法,并认为它是“捏造”的。 在某种程度上,你是对的......但是改变类别分数以达到所需的总分(当你知道它是 7 时,给咖啡的酸度为 9)会更糟糕,或者相反,有一个 绝对值得 90 分的咖啡最终以 84 分结束。具体的 Cupper 校正数无关紧要,无论是 5 还是 8 ......这个想法是总分给出了咖啡质量的正确印象。", - "CUPPING_SCORE_TOOLTIP": "100-95 = 令人震惊,90-94 = 杰出,85-89 = 非常好,80-84 = 好,75-79 = 一般,70-74 = 差", - "DETAIL_BREW": "冲泡详情", - "DETAIL_BEAN": "咖啡豆详情", - "DETAIL_MILL": "研磨机详情", - "DETAIL_PREPARATION": "准备冲泡", - "EDIT_BREW": "编辑冲泡", - "ADD_BEAN": "添加咖啡豆", - "EDIT_BEAN": "编辑咖啡豆", - "ADD_PREPARATION": "添加冲泡器具", - "EDIT_PREPARATION": "编辑冲泡器具", - "ADD_MILL": "新增研磨机", - "EDIT_MILL": "编辑研磨机", - "USE_FILTER": "应用筛选", - "RESET_FILTER": "重置筛选", - "COFFEE_GRAMS_GRINDED": "研磨咖啡豆总克数", - "BEANS_USED": "研磨咖啡豆种类", - "BREW_HEADER_BEFORE_BREW": "冲泡前", - "BREW_HEADER_WHILE_BREW": "冲泡时", - "BREW_HEADER_AFTER_BREW": "冲泡后", - "BREW_HEADER_CUPPING": "品尝", - "BEANS_CONSUMED": "归档", - "NAV_MANAGE_PARAMETERS": "管理参数", - "NAV_SORT_PARAMETERS": "参数排序", - "NAV_DEFAULT_PARAMETERS": "定义默认参数", - "PAGE_SORT_PARAMETERS_DESCRIPTION": "拖放参数以定义它们将显示的顺序", - "PAGE_MANAGE_PARAMETERS_DESCRIPTION": "编辑冲泡信息时要显示的数据", - "PAGE_DEFAULT_PARAMETERS_DESCRIPTION": "标记哪些参数应默认为最后使用的值", - "SORT_PARAMETERS_BEFORE": "冲泡前", - "SORT_PARAMETERS_MEANWHILE": "冲泡时", - "SORT_PARAMETERS_AFTER": "冲泡后", - "MORE_INFORMATION": "更多信息", - "UNDERSTOOD": "了解", - "WELCOME_PAGE_ACTIVATE_ANALYTICS_TITLE": "分析和跟踪", - "WELCOME_PAGE_ACTIVATE_ANALYTICS_DESCRIPTION": "我们希望不断改进应用程序、网站和我们未来为您提供的服务。 为此,我们需要跟踪您如何使用该应用程序及其功能的一些数据。 但我们承诺,我们永远不会追踪任何个人数据。 为了确保这些承诺,我们使用 Matomo,一个以数据安全和隐私为中心的开源服务,该服务托管在我们自己的服务器上 - 这确保只有我们拥有数据所有权。 我们的网站提供有关我们跟踪的参数的所有信息,此外,您可以查看 100% 开源的源代码。 如果你有任何问题,请随时与我们联系。", - "ANALYTICS_INFORMATION_TITLE": "分析和跟踪", - "ANALYTICS_INFORMATION_DESCRIPTION": "如您所知,您的数据和隐私的安全是我们的首要任务。因此,我们已从 Google Analytics 切换到以数据安全和隐私为重点的开源服务 Matomo,该服务由托管 在我们自己的服务器上 - 这意味着我们拥有完整的数据所有权。跟踪的参数没有改变,我们仍然承诺永远不会跟踪任何个人数据。我们的网站提供了我们跟踪的参数的所有信息,此外您可以查看100%开源的源代码。您有问题吗?联系我们。", - "ACTIVATE": "分析", - "DO_NOT_ACTIVE": "停止分析", - "WELCOME_PAGE_BEAN_TITLE": "咖啡豆", - "WELCOME_PAGE_BEAN_DESCRIPTION": "用咖啡豆来冲泡咖啡有点复杂。 请添加您的第一种咖啡豆以开始使用!", - "WELCOME_PAGE_BEAN_ADD": "添加咖啡豆", - "SKIP": "跳过", - "WELCOME_PAGE_PREPARATION_TITLE": "冲泡器具", - "WELCOME_PAGE_PREPARATION_DESCRIPTION": "V60滤杯, 爱乐压, 手冲式 - 冲泡咖啡的方式有很多种。请添加至少一个冲泡器具", - "WELCOME_PAGE_PREPARATION_ADD": "添加冲泡器具", - "WELCOME_PAGE_MILL_TITLE": "研磨机", - "WELCOME_PAGE_MILL_DESCRIPTION": "就快要完成了,但你需要一些东西来研磨咖啡豆!请添加至少一台研磨机", - "WELCOME_PAGE_MILL_ADD": "新增研磨机", - "WELCOME_PAGE_TITLE": "欢迎!", - "WELCOME_PAGE_BEAN_HEADLINE": "第一款咖啡豆", - "WELCOME_PAGE_PREPARATION_HEADLINE": "添加冲泡器具", - "WELCOME_PAGE_MILL_HEADLINE": "第一个研磨机", - "WELCOME_PAGE_LETS_START_HEADLINE": "现在我们开始吧!", - "WELCOME_PAGE_LETS_START_TITLE": "现在我们开始吧!", - "WELCOME_PAGE_LETS_START_DESCRIPTION": "恭喜,你已经准备好做你一生中最好的咖啡了。玩得开心,传播对好咖啡的热爱!", - "PREPARATION_TYPE": "制作类型", - "PREPARATION_TYPE_NAME": "名称", - "ARCHIVED": "归档", - "PAGE_SETTINGS_SHOW_ARCHIVED_PREPARATIONS": "显示归档的冲泡器具", - "PAGE_SETTINGS_SHOW_ARCHIVED_MILLS": "显示归档的冲泡研磨机", - "PAGE_MILL_LIST_NO_ARCHIVED_MILL_EXISTING": "你还没有归档任何一个研磨机", - "PAGE_PREPARATION_LIST_NO_ARCHIVED_PREPARATION_EXISTING": "你还没有归档任何一种器具", - "TOAST_BREW_ADDED_SUCCESSFULLY": "冲泡添加成功", - "TOAST_BREW_REPEATED_SUCCESSFULLY": "冲泡复制成功", - "TOAST_BEAN_ADDED_SUCCESSFULLY": "咖啡豆添加成功", - "TOAST_MILL_ADDED_SUCCESSFULLY": "新的研磨机已添加成功", - "TOAST_PREPARATION_ADDED_SUCCESSFULLY": "冲泡器具添加成功", - "TOAST_WATER_ADDED_SUCCESSFULLY": "水质添加成功", - "TOAST_BREW_DELETED_SUCCESSFULLY": "冲泡记录已被删除", - "TOAST_BEAN_DELETED_SUCCESSFULLY": "咖啡豆已被删除", - "TOAST_GREEN_BEAN_DELETED_SUCCESSFULLY": "生豆已被删除", - "TOAST_MILL_DELETED_SUCCESSFULLY": "研磨机已被删除", - "TOAST_WATER_DELETED_SUCCESSFULLY": "水质已被删除", - "TOAST_PREPARATION_DELETED_SUCCESSFULLY": "冲泡器具已被删除", - "TOAST_BREW_EDITED_SUCCESSFULLY": "冲泡记录已被编辑", - "TOAST_BEAN_EDITED_SUCCESSFULLY": "咖啡豆已被编辑", - "TOAST_MILL_EDITED_SUCCESSFULLY": "研磨机已被编辑", - "TOAST_PREPARATION_EDITED_SUCCESSFULLY": "器具已被编辑", - "TOAST_WATER_EDITED_SUCCESSFULLY": "水质已被编辑", - "TOAST_BEAN_ARCHIVED_SUCCESSFULLY": "咖啡豆已经归档", - "TOAST_MILL_ARCHIVED_SUCCESSFULLY": "研磨机已经归档", - "TOAST_PREPARATION_ARCHIVED_SUCCESSFULLY": "冲泡器具已经归档", - "TOAST_WATER_ARCHIVED_SUCCESSFULLY": "水质已被编辑", - "BEAN_WEIGHT_ALREADY_USED": "{{gramUsed}}g of {{gramTotal}}g ({{leftOver}}g)", - "PREPARATION_TYPE_CUSTOM_PREPARATION": "自定义冲泡器具", - "PREPARATION_TYPE_AEROPRESS": "爱乐压", - "PREPARATION_TYPE_V60": "V60滤杯", - "PREPARATION_TYPE_CHEMEX": "Chemex", - "PREPARATION_TYPE_BIALETTI": "比乐蒂\/摩卡壶", - "PREPARATION_TYPE_PORTAFILTER": "过滤手柄", - "PREPARATION_TYPE_KALITA_WAVE": "蛋糕杯", - "PREPARATION_TYPE_FRENCH_PRESS": "法压壶", - "PREPARATION_TYPE_SWANNECK": "Swanneck", - "PREPARATION_TYPE_DRIPPER": "聪明杯", - "PREPARATION_TYPE_DELTER_PRESS": "D特压(Delder Press)", - "PREPARATION_TYPE_COLD_BREW": "冷萃", - "PREPARATION_TYPE_AEROPRESS_INVERTED": "爱乐压倒压法", - "PREPARATION_TYPE_TURKISH": "极细研磨", - "PREPARATION_TYPE_BLUE_DRIPPER": "蓝瓶子滤杯", - "PREPARATION_TYPE_ADD_CUSTOM": "添加自定义器具", - "PREPARATION_TYPE_GINA": "Gina智能咖啡机", - "PREPARATION_TYPE_KONO": "KONO滤杯", - "PREPARATION_TYPE_ORIGAMI": "折纸滤杯", - "PREPARATION_TYPE_CAFELAT": "Cafelat拉杆咖啡机", - "PREPARATION_TYPE_OREA": "Orea滤杯", - "PREPARATION_TYPE_COLD_DRIP": "冰滴", - "PREPARATION_TYPE_HAND_LEVER": "手压式", - "PREPARATION_TYPE_FLAIR": "Flair手压意式咖啡机", - "PREPARATION_TYPE_APRIL_BREWER": "April Brewer滤杯", - "PREPARATION_TYPE_ESPRO_BLOOM": "Espro Bloom滤杯", - "PREPARATION_TYPE_FELLOW_STAGG": "Fellow Stagg温控咖啡壶", - "PREPARATION_TYPE_HSIAO_50": "Hsiao 50滤杯", - "PREPARATION_TYPE_KARLSBADER_KANNE": "Karlsbader", - "PREPARATION_TYPE_MOCCA_MASTER": "Mocca Master滴漏式咖啡机", - "PREPARATION_TYPE_SIPHON": "虹吸式", - "CHOOSE_BEANS": "选择咖啡豆", - "CHOOSE_BEAN": "选择咖啡豆", - "CHOOSE_WATERS": "选择水质", - "CHOOSE_WATER": "选择水质", - "CHOOSE_PREPARATIONS": "选择冲泡器具", - "CHOOSE_PREPARATION": "选择冲泡器具", - "CHOOSE_MILLS": "选择研磨机", - "CHOOSE_MILL": "选择研磨机", - "BEAN": { - "PLACE_HOLDER": { - "BEAN_DATA_NAME": "添加咖啡豆的名称", - "BEAN_DATA_ROAST_NAME": "添加烘焙温度", - "BEAN_DATA_ROASTING_DATE": "请输入咖啡豆的烘焙日期", - "BEAN_DATA_ROASTER": "请输入烘焙者的名称", - "BEAN_DATA_VARIETY": "添加咖啡品种", - "BEAN_DATA_PROCESSING": "请输入咖啡豆的处理方法,如:水洗", - "BEAN_DATA_COUNTRY": "它起源于哪儿?", - "BEAN_DATA_MIX": "什么是混合比例?", - "BEAN_DATA_AROMATICS": "描述它的风味吧", - "BEAN_DATA_WEIGHT": "咖啡豆的总重量", - "BEAN_DATA_COST": "购入这款咖啡豆花费了多少钱?", - "BEAN_DATA_REGION": "添加它的产区", - "BEAN_DATA_FARM": "添加它的庄园\/农场", - "BEAN_DATA_FARMER": "添加它的种植者名称", - "BEAN_DATA_ELEVATION": "请输入咖啡豆的生长海拔", - "BEAN_DATA_HARVEST_TIME": "请输入咖啡豆的收获日期", - "BEAN_DATA_BUY_DATE": "请输入咖啡豆的购买日期", - "BEAN_DATA_PERCENTAGE": "添加该款咖啡豆在此包装中的占比(主要用于拼配包装填写)", - "BEAN_DATA_CERTIFICATION": "添加豆类认证 (例如:fair trade, bio)", - "BEAN_DATA_ROASTING_TYPE": "添加烘焙类型", - "BEAN_DATA_DECAFFEINATED": "这款咖啡不含咖啡因", - "BEAN_DATA_URL": "添加网站链接", - "BEAN_DATA_EAN": "添加条形码", - "BEAN_DATA_CUPPING_POINTS": "添加它的杯测分数", - "BEAN_DATA_PURCHASING_PRICE": "添加购买价格", - "BEAN_DATA_FOB_PRICE": "添加离岸价格", - "NOTES": "为咖啡豆添加注释", - "CHOOSE_DATA_ROASTER": "添加烘焙机", - "CHOOSE_DATA_ROASTING_TYPE": "选择烘焙类型" - } - }, - "PREPARATION": { - "PLACE_HOLDER": { - "PREPARATION_TYPE_NAME": "添加名称", - "NOTES": "为冲泡器具添加注释" - } - }, - "MILL": { - "PLACE_HOLDER": { - "NAME": "添加名称", - "NOTES": "为研磨机添加注释" - } - }, - "BREW": { - "PLACE_HOLDER": { - "BREW_DATA_GRIND_SIZE": "输入研磨设置,如:5", - "BREW_DATA_GRIND_WEIGHT": "输入此次冲泡咖啡的咖啡粉克数 (gr)", - "BREW_DATA_BREW_TEMPERATURE": "输入冲泡温度", - "BREW_DATA_PREPARATION_METHOD": "选择冲泡器具", - "BREW_DATA_BEAN_TYPE": "选择咖啡豆", - "BREW_DATA_MILL": "选择一个研磨机", - "BREW_DATA_MILL_SPEED": "输入研磨机的研磨速度", - "BREW_DATA_MILL_TIMER": "输入研磨所花费的时间", - "BREW_DATA_PRESSURE_PROFILE": "压强\/流量曲线,冲泡建议等", - "BREW_DATA_TEMPERATURE_TIME": "请输入加热器具的时间", - "BREW_DATA_COFFEE_BLOOMING_TIME": "请输入闷蒸\/预浸泡所花费的时间", - "BREW_DATA_COFFEE_FIRST_DRIP_TIME": "咖啡的第一滴水是什么时候出现的?", - "BREW_DATA_BREW_QUANTITY": "冲泡时用了多少水?", - "BREW_DATA_COFFEE_TYPE": "输入咖啡类型 (e.g. ristretto)", - "BREW_DATA_COFFEE_CONCENTRATION": "输入咖啡浓度", - "BREW_DATA_TDS": "总共溶解了多少固体?", - "BREW_DATA_NOTES": "为这次冲泡添加注释", - "BREW_DATA_BREW_BEVERAGE_QUANTITY": "冲泡完成以后,得到了多少的咖啡液?", - "BREW_DATA_PREPARATION_METHOD_TOOL": "请选择你的冲泡器具", - "BREW_DATA_WATER": "选择此次使用的水质", - "BREW_DATA_BEAN_WEIGHT_IN": "你使用了多少咖啡豆? (gr)" - } - }, - "ROASTED_BEFORE": "烘焙在", - "DAY_OLD": "天前", - "DAYS_OLD": "天前", - "BEANS_AMOUNT_USED": "已使用", - "CUPPING_BREW": "品尝", - "COFFEE_DRUNKEN_QUANTITY": "咖啡液", - "IMAGE_DELETED": "图片已删除", - "IMAGE_NOT_DELETED": "图片无法删除", - "EXTERNAL_STORAGE_NOT_SUPPORTED": "抱歉,不支持外部故事", - "BEANS_ARCHIVED": "已归档", - "TAB_ARCHIVE": "归档", - "TODAY": "今日", - "PLEASE_WAIT": "请稍等...", - "PREPARATION_STYLE_POUR_OVER": "手冲咖啡", - "PREPARATION_STYLE_ESPRESSO": "意式浓缩", - "PREPARATION_STYLE_FULL_IMMERSION": "全浸泡", - "PREPARATION_STYLE_PERCOLATION": "渗滤式", - "PREPARATION_TYPE_STYLE": "冲泡方式", - "PAGE_SETTINGS_FAST_REPEAT_DESCRIPTION": "开启一个新的菜单条目 - 使用它您可以直接复制冲泡。", - "PAGE_SETTINGS_TRACK_BREW_COORDINATES_DESCRIPTION": "保存每次冲泡时的经纬度", - "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "节省消耗的咖啡因量", - "UPDATE_TITLE": "有什么新玩意儿?", - "NEXT": "下一个", - "UPDATE_TEXT_TITLE_TITLE": { - "5.0.0": { - "TITLE": "版本 5.0: 新玩意儿!", - "DESCRIPTION": [ - "新布局,新图标,新颜色,新标志", - "新的冲泡器具", - "现在可以对冲泡进行分类(渗透、浓缩咖啡、全浸)", - "冲泡工作现在可以继承工具(例如不同的过滤器)", - "现在可以自定义冲泡参数,为每个冲泡定义自己的冲泡流程", - "添加了更多可编辑的咖啡豆信息,现在可以添加不同的排序", - "水量可渗透\/全浸", - "你在哪里冲泡最好的咖啡? 主动设置经纬度保存", - "启用快速复制以立即添加冲泡", - "添加了更新屏幕以显示最新更改", - "在25次使用后向用户请求评分", - "为豆类添加了排序", - "添加了冲泡、咖啡豆的搜索面板", - "冲泡详细信息中添加了杯测图", - "在主页上显示剩余的豆子重量", - "为烘焙机添加了预输入", - "评级改为星级而不是图标" - ] - }, - "5.1.0": { - "TITLE": "版本 5.1: 新玩意儿!", - "DESCRIPTION": [ - "新的冲泡时间选择器", - "现在可以在 iOS 上再次选择烘焙日期", - "可以在 iPad 上再次选择图像", - "TDS 计算现在再次显示在饮料量上", - "为 iOS 设备添加了安全区域" - ] - }, - "5.2.0": { - "TITLE": "版本 5.2: 新玩意儿!", - "DESCRIPTION": [ - "冲泡:<\/b>", - "冲泡计时器将在后台继续计时", - "可以将冲泡设为喜爱", - "添加和编辑咖啡豆的界面现在看起来几乎完全相同了", - "屏幕在冲泡期间可以保持亮屏(可以在设置菜单中启用)", - "最近的冲泡列表现在还能显示归档的冲泡", - "", - "咖啡豆:<\/b>", - "咖啡豆照片显示在概览中", - "咖啡豆可以评级", - "", - "互动:<\/b>", - "长按卡片会进入编辑视图", - "可以通过点击卡片访问详细视图", - "Github \/ Facebook \/ Instagram 帐户已关联", - "", - "修复:<\/b>", - "咖啡豆信息复制不正确", - "新用户默认启用冲泡量", - "", - "其它:<\/b>", - "Apple Healthkit 集成(可在设置菜单中启用)", - "清理", - "布局更改", - "统计扩展", - "启动检查已修改", - "支持冲泡和咖啡豆的不同卡片大小" - ] - }, - "5.3.1": { - "TITLE": "Version 5.3: Thats new!", - "DESCRIPTION": [ - "Brew methods:<\/b>", - "Changes to the card view", - "Custom images can be attached in the edit screen", - "Brew tools will be saved in edit screen, even when '+' is not pressed", - "", - "Grinders:<\/b>", - "Custom images can be attached in the edit screen", - "", - "Brews:<\/b>", - "Parameter 'Attachments' renamed in 'Attachments \/ Photos'", - "", - "Dashboard:<\/b>", - "If bean amount is less then 1000g, the number will be written as a whole", - "", - "Bug fixes:<\/b>", - "Editing via a long-press, does not change information any more", - "Information on the dashboard are updated after made changes", - "Multiple variety information with blends can be saved again", - "Added startup error message if app-data is missing" - ] - }, - "5.4.0": { - "TITLE": "Version 5.4: Thats new!", - "DESCRIPTION": [ - "烘焙选项:<\/b>", - "Manage all of your green beans and roasters (can be activated in the settings menu)", - "Save all of your green beans and transfer them into roasted onces", - "Add your roaster and connect them with your different kind of roasted beans", - "", - "Website:<\/b>", - "Go live of our new website! -> https:\/\/beanconqueror.com", - "", - "Support us:<\/b>", - "You've always wanted to support Beanconqueror? We've added a new 'Buy me a coffee' connection", - "", - "iOS - iCloud:<\/b>", - "The first step into iCloud support was made. At the very first start all of your existing app data will be moved into the support iCloud directory.", - "You have to activate this option in the iCloud Settings first in order to save Beanconqueror on iCloud", - "", - "Android\/iOS - Automated file-export:<\/b>", - "Automated Beanconqueror.json-File is saved for a maximum of 7 days, after that they will be automated deleted again", - "Android: Download\/Beanconqueror_export\/Beanconqueror_automatic_export_DAY.json", - "iOS: Files\/Download\/Beanconqueror_export\/Beanconqueror_automatic_export_FILE.json", - "", - "Settings:<\/b>", - "Excel - Export all of your data to excel to work with it even further", - "Define your own image quality between 50% to 100% (default 100%)", - "Brew rating - Define how much stars\/points you'd like to set for each brew. Minimum 5, maximum 100", - "", - "New tracking:<\/b>", - "We've changed to our open source service Matomo, which will be hosted on our own server", - "Removed Google Analytics \/ Firebase", - "", - "Bug fixes:<\/b>", - "Apple Healthkit - Settings were not saved", - "Sometimes brew rating stars weren't filled (Brew add\/edit)", - "Edit via long tap, screen wasn't scrollable", - "Import of bigger files on iOS led to misconduct", - "Delete procedure of beans \/ preparations or mills were not consistent and lead to graphical issues", - "Wrong calculation of beverage quantity in statistics and list views", - "", - "分享:<\/b>", - "与所有咖啡爱好者分享您的咖啡和咖啡豆!", - "", - "Other:<\/b>", - "Clean ups", - "Layout changes", - "Extension of statistics", - "Startup check revised, added please wait window", - "Some label changes", - "Changed data access \/ order inside app to reduce problems" - ] - }, - "6.0.0": { - "TITLE": "Version 6.0: Thats new!", - "DESCRIPTION": [ - "蓝牙电子秤<\/b>", - "Support of the first bluetooth scale - Decent-Scale - Big thanks to Decent Espresso", - "Support of Acaia Lunar", - "", - "Aroma cupping<\/b>", - "Cup each brew with the different aromatics and flavors", - "", - "Water section<\/b>", - "Add your own water, activate this section in the settings", - "", - "Support of more languages<\/b>", - "Support for spanish - Big thanks to Frank!", - "", - "Improvements<\/b>", - "Support of long press '+' on brews", - "Added new brew parameters", - "Support of different currencies", - "Edit brew while in detail view", - "Choose multiple images at once", - "Support of brix to TDS conversion", - "If bean package is empty, you'll be asked if you want to archive the package on the last brew", - "Reset of roastdate supported", - "Support of detail views on beans, grinders and preparation methods", - "Added brew ratio (g\/l)", - "", - "iOS<\/b>", - "Support of safe areas", - "", - "Bug fixes<\/b>", - "Apple Healthkit - Decaffeinated coffee was saved", - "Copy of beans led to misconduct", - "Added brew time to excel export", - "Small bug fixes", - "", - "Others<\/b>", - "Beans, grinders and preparation methods are now sorted alphabetic in dropdowns" - ] - }, - "6.1.0": { - "TITLE": "版本 6.1: 这些是新东西!", - "DESCRIPTION": [ - "二维码<\/b>", - "扫描你的咖啡包装! 所有咖啡信息都将从烘焙店中插入。", - "", - "蓝牙电子秤<\/b>", - "支持 Acaia Pearl 2021 - 感谢 Micah 和 Mike", - "支持 Acaia Lunar 2021 - 感谢 Micah 和 Mike", - "支持 Acaia Pyxis - 感谢 Micah 和 Mike", - "支持Hiroia Jimmy - 感谢 Silas", - "支持 Felicita Arc - 感谢 Herman", - "注意:目前不支持 Acaia Pearl 2021 以下的电子秤", - "咖啡豆页面现在可以使用蓝牙电子秤获得的重量信息", - "现在无需通过计时器开始冲泡即可看到重量变化", - "", - "冲泡概述<\/b>", - "自定义概览中的可见冲煮参数或针对每种冲泡方法", - "准备图像现在在列表视图中可见", - "", - "冲泡视图<\/b>", - "重制了冲泡视图,相比以往更加平滑", - "冲泡视图现在可以最大化", - "冲泡视图现在可以在冲泡细节视图中放大以及导出", - "现在显示平均流量", - "", - "咖啡豆<\/b>", - "添加字段:购买日期、离岸价格、采购价格", - "现在可以收藏和筛选咖啡豆", - "如果咖啡豆被归档,您现在也可以对它进行评分", - "按+,您现在可以选择添加或扫描新的咖啡豆包装", - "长按+,直接添加新的咖啡豆", - "", - "预处理方法<\/b>", - "预处理方法现在可以重复所有设置", - "支持更多的预处理方法 - 感谢 Nicola", - "选择一个预处理方法并展示图片", - "", - "设置<\/b>", - "评级现在可以阶梯式进行(1、0.75、0.5、0.25、0.1)", - "蓝牙电子秤 - 定义在开始新的冲泡或启动计时器时是否应将秤设置为零重量", - "蓝牙电子秤 - 定义是否要忽略异常或负值 - 如果是,则无法生成实时图表", - "现在选择, 如果您想在主页上查看存档的咖啡豆", - "导出现在还导出保存的蓝牙值的原始数据", - "", - "改进<\/b>", - "删除冲泡方法和工具时,不会再删除与其相关的咖啡豆", - "制备方法工具现在可以编辑和存档", - "", - "Bug修复:<\/b>", - "发现更多可能导致数据丢失的问题", - "小错误修复", - "", - "其它:<\/b>", - "更新到 Ionic-Framework 6,因此发生了一些小的视觉变化" - ] - }, - "6.1.3": { - "TITLE": "版本 6.1.3: 这些是新东西!", - "DESCRIPTION": [ - "Android - 注意<\/b>", - "首先:对不起!", - "遗憾的是,数据库在 Android Play 商店中从 APK 格式重置为 AAB 格式,您的应用程序可能会在没有数据的情况下启动。", - "我无法调试或控制这种情况,虽然开发工作都按预期进行。", - "如果您的应用显示空白,请进入设置并导入下面的文件 'Download\/Beanconqueror_export\/Beanconqueror_automatic_export_*.json' * 代表最新的数据备份。", - "然后所有数据都应该恢复正常,如果没有,请给我写一封电子邮件:info@beanconqueror.com。" - ] - }, - "6.1.5": { - "TITLE": "Version 6.1.5: Das ist neu", - "DESCRIPTION": [ - "二维码<\/b>", - "Lade die QR-Code Daten der Rösterei nun erneut", - "", - "Brühgraph<\/b>", - "Wasserfluss wird nun in Echtzeit berechnet", - "", - "Bohnen<\/b>", - "Suchfeld bei der Auswahl der Bohnen", - "", - "Fehlerbehebungen:<\/b>", - "Nach Aufnahme eines Bildes war der Ladebalken nicht verschwunden", - "Kleinere Fehlerbehebungen" - ] - }, - "6.2.0": { - "TITLE": "版本 6.2.0: 这是新东西!", - "DESCRIPTION": [ - "压强设备<\/b>", - "支持 '自己去做' Popsicle - 传感器 - 感谢 Mike 和 Shay", - "在特定的压强开始自动计时 - 设置中可以修改", - "按压压强计重置压强为 0", - "连接时显示压强设备的名字和 mac 地址", - "", - "蓝牙电子秤<\/b>", - "支持 Eureka Precisa - 感谢 Mimoja", - "在新的冲泡中定义蓝牙电子秤的行为 - 可以在设置中修改", - "在手冲或意式浓缩中定义哪个图应该被显示 - 可以在设置中修改", - "顺序处理蓝牙命令以减少问题", - "连接时显示蓝牙电子秤的名字和 mac 地址", - "", - "冲泡<\/b>", - "支持毫秒 - 在设置中启用", - "支持搜索烘焙类型和烘焙器具", - "可以在冲泡添加或修改页面重连压强设备或电子秤", - "", - "咖啡豆<\/b>", - "分享咖啡豆(不需要服务器)- 感谢 Mike", - "展示你咖啡豆的所有冲泡", - "支持像冲泡评分一样的咖啡豆评分 - 可以在设置中修改", - "", - "多语言<\/b>", - "支持土耳其语 - 感谢 Halil Portakal", - "支持简体中文 - 感谢 家赓", - "", - "研磨<\/b>", - "显示上次的研磨设置", - "", - "提升<\/b>", - "尚未批准扫描咖啡豆时的错误信息", - "冲泡日期的编辑默认不激活", - "其他<\/b>", - "修复排版错误", - "修复设置不显示评分时却在启动时显示的问题", - "旧的冲泡图现在可以再次导出", - "更新到 Ionic 6.3.0", - "小错误修复", - "较小的错误修复" - ] - }, - "6.3.0": { - "TITLE": "版本 6.3.0: 更新内容", - "DESCRIPTION": [ - "蓝牙电子称<\/b>", - "定义等待下一个蓝牙命令的时间", - "", - "冲泡<\/b>", - "重置冲泡时间", - "如果连接了蓝牙秤,将显示最后一次冲泡重量", - "冲泡图最大化上更大的按钮", - "通过下载Excel或json文件导入冲泡数据", - "现在可以显示咖啡豆图片,而不是预置图标\/图片 -> 在设置中激活", - "", - "咖啡豆<\/b>", - "现在可以通过品种搜索豆类", - "", - "Mills<\/b>", - "在列表和详细视图中显示注释", - "", - "提升<\/b>", - "选择要显示多少毫秒(输入的值仍然需要小数点后三位)", - "添加捐赠按钮", - "文本区域现在可以滚动", - "统计数据的冲泡时间现在已格式化", - "通知弹出窗口现在出现在顶部,可以通过 X 关闭", - "提供禁用详细参数功能,例如现在可以隐藏磨豆机", - "可以停用或激活分析", - "", - "其他:<\/b>", - "修复排版错误", - "更新到 Ionic 6.4.0", - "修复小 bug " - ] - }, - "6.4.0": { - "TITLE": "版本 6.4.0: 更新内容", - "DESCRIPTION": [ - "蓝牙温度计<\/b>", - "支持 ETI Ltd 温度计 (ThermaQ Blue, BlueTherm 等) - 感谢 Myles", - "在特定温度下自动启动计时器 - 可在设置中编辑", - "", - "蓝牙秤<\/b>", - "支持 Skale 2", - "如果蓝牙秤想要重置一次冲泡,用户将获得一个安全弹出窗口", - "", - "可视化<\/b>", - "手动上传使用的蓝牙设备记录的酿造 - 感谢 Miha 的支持", - "(第二步:自动上传)", - "", - "咖啡豆<\/b>", - "现在可以自定义和更改咖啡豆参数和列表参数", - "现在可以按烘焙度筛选咖啡豆", - "咖啡豆页面现在可以设置为起始页 - 查看设置", - "特定字段的自动完成添加,例如品种", - "可以搜索咖啡豆品种信息", - "", - "冲泡<\/b>", - "新增可以选择预定义冲泡方法的按钮", - "个性化选择“重复”时要预设的参数 - 默认:全部", - "过滤所有使用过蓝牙设备的冲泡", - "重构了实时冲泡可视化", - "为冲泡添加\/编辑添加了比例计算器,以快速计算", - "按下“保存”将停止计时器", - "", - "Discord<\/b>", - "欢迎加入 Beanconqueror Discord 来讨论、提问或反馈意见", - "", - "Android<\/b>", - "共享功能再次可用", - "导出和导入您的冲泡图", - "", - "改进<\/b>", - "显示现有条目数量或过滤后的数量", - "在冲泡添加\/编辑时,键盘显示时隐藏保存或取消按钮", - "在设置中开启研磨大小字段上的数字键盘", - "", - "其他:<\/b>", - "修复了一些小错误" - ] - }, - "6.4.10": { - "TITLE": "版本 6.4.1: 更新内容", - "DESCRIPTION": [ - "其他:<\/b>", - "修复了一些小错误" - ] - }, - "6.4.20": { - "TITLE": "版本6.4.2:有什么新功能?", - "DESCRIPTION": [ - "修复启动时的崩溃问题", - "修复蓝牙秤无法连接时的回收问题" - ] - }, - "6.5.0": { - "TITLE": "版本6.5.0:有什么新功能?", - "DESCRIPTION": [ - "蓝牙秤<\/b>", - "支持 DiFluid Microbalance 和 Smart Chef 电子秤 - 感谢Yannick!", - "仅适用于浓缩咖啡冲泡:在设置中激活当不再检测到流量时,自动停止冲泡", - "添加安全弹窗,当 Beanconqueror 无法从秤接收任何重量更新时", - "", - "咖啡豆<\/b>", - "现在可以将咖啡豆以图像和 URL 方式分享", - "", - "Xenia<\/b>", - "现在还记录了压力和温度的冲泡数据", - "", - "冲泡<\/b>", - "如果停止冲泡,现在完整显示冲泡图表", - "", - "导入\/导出<\/b>", - "我们现在使用 ZIP 文件而不是 JSON 文件进行导入和导出", - "请确保前往设置并进行一次安全备份,结合已有的自动备份逻辑", - "", - "改进<\/b>", - "小的改进", - "", - "其他<\/b>", - "修复了一些小错误" - ] - }, - "6.5.1": { - "TITLE": "版本 6.5.1: 更新内容", - "DESCRIPTION": [ - "其他:<\/b>", - "修复了一些小错误" - ] + "NAV_MENU": "菜单", + "NAV_HOME": "主页", + "NAV_SETTINGS": "设置", + "NAV_BREWS": "冲泡", + "NAV_BEANS": "咖啡豆", + "NAV_PREPARATION": "冲泡方法", + "NAV_MILL": "磨豆机", + "NAV_ABOUT_US": "关于我们", + "NAV_CONTACT": "联系方式", + "NAV_PRIVACY": "隐私", + "NAV_CREDITS": "Credits", + "NAV_TERMS": "团队和贡献者", + "NAV_THANKS": "谢谢!", + "NAV_LICENCES": "开源许可证", + "NAV_STATISTICS": "数据统计", + "NAV_IMPRESSUM": "公司信息", + "NAV_COOKIE": "缓存文件", + "NAV_LOGS": "日志", + "NAV_BREW_PARAMS": "冲泡参数", + "NAV_INFORMATION_TO_APP": "关于软件", + "NAV_WATER_SECTION": "水质", + "NAV_HELPER": "计算", + "POPOVER_BREWS_OPTION_REPEAT": "复制", + "POPOVER_BREWS_OPTION_DETAIL": "详情", + "DETAIL": "详情", + "POPOVER_BREWS_OPTION_EDIT": "编辑", + "POPOVER_BREWS_OPTION_DELETE": "删除", + "POPOVER_BREWS_OPTION_PHOTO_GALLERY": "图库", + "POPOVER_BREWS_OPTION_CUPPING": "品尝", + "POPOVER_BREWS_OPTION_MAP_COORDINATES": "在地图上展示", + "POPOVER_BREWS_OPTION_FAST_REPEAT": "快速复制", + "PAGE_BREWS_NO_ENTRIES": "目前还没有添加冲泡方式", + "PAGE_BREWS_NO_ARCHIVED_ENTRIES": "目前还没有完成过一次冲泡", + "CANT_START_NEW_BREW_TITLE": "这儿少了点什么 ...", + "CANT_START_NEW_BREW_DESCRIPTION": "使用软件前,请至少添加一种咖啡豆、一种冲泡方式和一个研磨机。 你可以使用菜单跳转到不同的类别以添加上述信息。", + "PAGE_HOME_WELCOME_GREETINGS": "终于等到你来了!", + "PAGE_HOME_TOTAL_BREW": "冲泡", + "PAGE_HOME_TOTAL_BREWS": "冲泡次数", + "PAGE_HOME_BEAN_EXPLORED": "款咖啡豆", + "PAGE_HOME_BEANS_EXPLORED": "款咖啡豆", + "PAGE_HOME_LAST_BREWS": "冲泡记录", + "PAGE_HOME_LAST_BREW": "上一次冲泡", + "PAGE_HOME_DIFFERENT_PREPARATION_METHODS": "不同的冲泡方式", + "PAGE_HOME_DIFFERENT_MILLS": "不同的磨豆机", + "PAGE_HOME_SUPPORTER": "软件支持", + "PAGE_HOME_START_BREW": "开始冲泡", + "PAGE_BEANS_LIST_OBTAINABLE": "可用", + "PAGE_BEANS_LIST_YOU_GOT_NO_FRESH_BEANS": "咖啡豆没货啦,快买一点新的吧!", + "PAGE_BEANS_LIST_YOU_GOT_NO_FINISHED_BEANS": "目前还没有一包已经喝完的咖啡。", + "PAGE_MILL_LIST_NO_MILL_EXISTING": "你还没有添加任何一个磨豆机", + "PAGE_PREPARATION_LIST_NO_PREPARATION_EXISTING": "你还没有添加任何一个冲泡方式", + "PAGE_CONTACT_SUGGESTIONS_QUESTIONS_WISHES": "建议、问题或请求?", + "PAGE_THANKS_THANKS_FOR_YOUR_SUPPORT": "感谢你的支持", + "PAGE_SETTINGS_LANGUAGE": "语言偏好", + "PAGE_SETTINGS_LANGUAGE_GERMAN": "German", + "PAGE_SETTINGS_LANGUAGE_ENGLISH": "English", + "PAGE_SETTINGS_LANGUAGE_SPANISH": "Spanish", + "PAGE_SETTINGS_LANGUAGE_TURKISH": "土耳其语", + "PAGE_SETTINGS_LANGUAGE_CHINESE": "汉语", + "PAGE_SETTINGS_GENERAL_SETTINGS": "常规设置", + "PAGE_SETTINGS_TRANSFER": "数据转移", + "PAGE_SETTINGS_PRESET_LAST_BREW": "使用预设值?", + "PAGE_SETTINGS_DISPLAY": "显示方式", + "PAGE_SETTINGS_DISPLAY_SINGLE_PAGE": "单页", + "PAGE_SETTINGS_DISPLAY_PAGING": "连续页面", + "PAGE_SETTINGS_STARTUP_VIEW": "起始页", + "PAGE_SETTINGS_ANALYTICS_INFORMATION": "分析", + "PAGE_SETTINGS_ANALYTICS_INFORMATION_TOOLTIP": "按 i 了解更多信息", + "PAGE_SETTINGS_TRACK_BREW_COORDINATES": "保存冲泡经纬度", + "PAGE_SETTINGS_FAST_REPEAT": "快速复制", + "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION": "保存咖啡因信息", + "PAGE_SETTINGS_WAKE_LOCK": "冲泡时屏幕保持常亮", + "PAGE_SETTINGS_CURRENCY": "货币单位", + "PAGE_STATISTICS_DIFFERENT_PREPARATION_METHOD": "冲泡器具", + "PAGE_STATISTICS_TOTAL_GROUND_BEANS": "研磨的咖啡豆总计", + "PAGE_STATISTICS_MONEY_SPENT_FOR_COFFEE": "购买咖啡豆总费用", + "PAGE_STATISTICS_DRUNKEN_BREWS": "冲泡总数", + "PAGE_STATISTICS_BREW_PROCESSES": "总冲泡次数", + "PAGE_STATISTICS_DRUNKEN_QUANTITY": "咖啡豆消耗量", + "PAGE_STATISTICS_BEAN_WEIGHT_USED": "咖啡豆研磨总量", + "PAGE_BREW_TEXT_INFORMATION_FROM_ROASTER": "烘焙信息", + "PAGE_ABOUT_NO_VERSION_AVAILABLE": "没有可用的版本", + "PAGE_ABOUT_APP_VERSION": "软件版本", + "PAGE_LICENCES_WEBSITE": "网站", + "BEAN_DATA_ROAST_NAME": "烘焙程度", + "BEAN_DATA_CUSTOM_ROAST_NAME": "自定义烘焙温度", + "BEAN_DATA_ROASTING_DATE": "烘焙日期", + "BEAN_DATA_ROASTER": "烘焙者", + "BEAN_DATA_VARIETY": "品种", + "BEAN_DATA_PROCESSING": "处理法", + "BEAN_DATA_COUNTRY": "国家", + "BEAN_DATA_MIX": "单一产地\/拼配", + "BEAN_DATA_AROMATICS": "风味味谱", + "BEAN_DATA_WEIGHT": "重量", + "BEAN_DATA_COST": "花销", + "BEAN_DATA_NAME": "咖啡豆名称", + "BEAN_DATA_REGION": "地区", + "BEAN_DATA_FARM": "庄园", + "BEAN_DATA_FARMER": "农场主", + "BEAN_DATA_ELEVATION": "海拔", + "BEAN_DATA_HARVEST_TIME": "收获日期", + "BEAN_DATA_PERCENTAGE": "百分比", + "BEAN_DATA_CERTIFICATION": "咖啡豆认证", + "BEAN_DATA_ROASTING_TYPE": "烘焙用于", + "BEAN_DATA_DECAFFEINATED": "无咖啡因", + "BEAN_DATA_URL": "网站", + "BEAN_DATA_EAN": "条形码", + "BEAN_DATA_PURCHASING_PRICE": "购买价格", + "BEAN_DATA_FOB_PRICE": "离岸价", + "BEAN_DATA_CUPPING_POINTS": "杯测分数", + "BREW_DATA_CUSTOM_BREW_TIME": "自定义冲泡时间", + "BREW_CREATION_DATE": "创建日期", + "REPEAT": "重复", + "EDIT": "编辑", + "DELETE": "删除", + "FINISHED": "归档", + "NOTES": "笔记", + "ADD_PHOTO": "添加照片", + "CANCEL": "取消", + "GENERATE": "生成", + "SAVE": "保存", + "ADD_SOMETHING": "添加", + "CONTACT": "联系", + "NAME": "名称", + "IMPORT": "导入", + "EXPORT": "导出", + "VIEW": "查看", + "ARCHIVE": "归档", + "CURRENT": "当前", + "BACK": "返回", + "CLOSE": "关闭", + "DAY": "日", + "BREW_DATA_TEMPERATURE_TIME": "温度时间", + "BREW_DATA_SURF_TIME": "冲泡时间", + "BREW_DATA_TIME": "时间", + "BREW_DATA_GRIND_SIZE": "研磨设置", + "BREW_DATA_GRIND_WEIGHT": "咖啡粉 (gr)", + "BREW_DATA_IN_OUT_BR": "入\/出 (BR)", + "BREW_DATA_NOTES": "笔记", + "BREW_DATA_PREPARATION_METHOD": "冲泡器具", + "BREW_DATA_MILL": "磨豆机", + "BREW_DATA_MILL_SPEED": "研磨速度 (rpm)", + "BREW_DATA_MILL_TIMER": "研磨时间", + "BREW_DATA_BREW_QUANTITY": "水量", + "BREW_DATA_BEAN_TYPE": "咖啡豆类型", + "BREW_DATA_BREW_TEMPERATURE": "冲泡温度", + "BREW_DATA_PRESSURE_PROFILE": "冲泡参数", + "BREW_DATA_COFFEE_TYPE": "咖啡类型", + "BREW_DATA_COFFEE_CONCENTRATION": "咖啡浓度", + "BREW_DATA_COFFEE_FIRST_DRIP_TIME": "第一滴咖啡落下", + "BREW_DATA_COFFEE_BLOOMING_TIME": "闷蒸\/预浸泡时间", + "BREW_DATA_ATTACHMENTS": "附件\/照片", + "BREW_DATA_RATING": "评分", + "BREW_DATA_CALCULATED_COFFEE_BREW_TIME": "萃取时间", + "BREW_DATA_TDS": "总溶解固体", + "BREW_DATA_CALCULATED_EXTRACTION_YIELD": "萃取率 %", + "BREW_INFORMATION_BREW_RATIO": "冲泡率", + "BREW_INFORMATION_BEAN_AGE": "豆龄", + "BREW_INFORMATION_BREW_QUANTITY_TYPE_NAME": "计数类型", + "BREW_DATA_TDS_EY": "TDS \/ %EY", + "BREW_DATA_BREW_BEVERAGE_QUANTITY": "冲泡出的咖啡", + "BREW_DATA_PREPARATION_METHOD_TOOL": "冲泡器具", + "BREW_DATA_WATER": "水质", + "BREW_DATA_BEAN_WEIGHT_IN": "咖啡豆数量 (gr)", + "BREW_DATA_VESSEL": "Server", + "BREW_DATA_VESSEL_WEIGHT": "Server weight", + "BREW_DATA_VESSEL_NAME": "Server name", + "BREW_DATA_FLAVOR": "风味", + "BREW_DATA_FLOW_PROFILE": "Flow", + "ONE_DAY": "天", + "DAYS": "天", + "ONE_HOUR": "小时", + "HOURS": "小时", + "ONE_MINUTE": "分钟", + "MINUTES": "分钟", + "WITHOUT_COFFEE": "没冲咖啡", + "NOT_FOUND": "未找到", + "INVALID_FILE_FORMAT": "文件格式无效", + "FILE_NOT_FOUND_INFORMATION": "文件未找到", + "ERROR_ON_FILE_READING": "读取文件数据时出错", + "IMPORT_SUCCESSFULLY": "导入成功", + "IMPORT_UNSUCCESSFULLY_DATA_NOT_CHANGED": "导入不成功,没有数据被更改", + "INVALID_FILE_DATA": "无效的文件内容", + "DOWNLOADED": "下载", + "FILE_DOWNLOADED_SUCCESSFULLY": "文件 '{{fileName}}' 已成功下载到您的下载文件夹!", + "NO": "不", + "YES": "是", + "SURE_QUESTION": "确定吗?", + "DELETE_BREW_QUESTION": "删除本次冲泡?", + "DELETE_BEAN_QUESTION": "确定要删除这款咖啡豆吗? 所有相关的冲泡数据也将被删除!", + "DELETE_GREEN_BEAN_QUESTION": "确定要删除这款生豆吗? 所有相关的咖啡豆以及冲泡数据都将被删除!", + "DELETE_MILL_QUESTION": "确定要删除这个研磨机吗? 所有相关的冲泡数据也将被删除!", + "DELETE_PREPARATION_METHOD_QUESTION": "确定要删除这个器具吗? 所有相关的冲泡数据也将被删除!", + "DELETE_PREPARATION_TOOL_QUESTION": "确定要删除这个工具吗? 所有相关的冲泡数据也将被删除。", + "APP_COULD_NOT_STARTED_CORRECTLY_BECAUSE_MISSING_FILESYSTEM": "由于缺少文件系统,应用程序无法正确启动", + "CARE": "关心", + "ERROR_OCCURED": "出现错误", + "CSV_FILE_NOT_DOWNLOADED": "CSV 文件无法下载!", + "CSV_FILE_DOWNLOADED_SUCCESSFULLY": "CSV 文件 '{{fileName}}' 已成功下载到您的下载文件夹!", + "ADD_BREW": "添加冲泡", + "CHOOSE": "选择", + "CHOOSE_PHOTO_OR_LIBRARY": "拍摄照片或从相册选择", + "RECORD": "拍摄", + "PAGE_BEAN_INFORMATION": "咖啡豆信息", + "PAGE_BEAN_INFORMATION_GOOD_BREWS": "好的", + "PAGE_BEAN_INFORMATION_BAD_BREWS": "差的", + "PAGE_BEAN_INFORMATION_COUNT_BREWS": "总冲泡次数", + "INFORMATION": "信息", + "PAGE_BEAN_BREW_CHART_TITLE": "该款咖啡豆的冲泡概述", + "PAGE_BEAN_INFORMATION_AWESOME_BREWS": "令人惊叹", + "PAGE_BEAN_INFORMATION_NORMAL_BREWS": "感觉普通", + "PAGE_BEAN_INFORMATION_NOT_RATED_BREWS": "不做评价", + "PAGE_PREPARATION_INFORMATION_BREWS_DONE": "用这种器具冲泡", + "PAGE_PREPARATION_INFORMATION_BREWED_QUANTITY": "冲泡数量", + "PAGE_PREPARATION_INFORMATION_GRIND_WEIGHT": "消耗的豆子重量", + "PAGE_PREPARATION_INFORMATION_TIME_SPENT_BREWING": "总冲泡时间", + "PAGE_PREPARATION_INFORMATION": "器具信息", + "SECONDS": "秒", + "PAGE_MILL_INFORMATION": "磨豆机信息", + "PAGE_MILL_INFORMATION_BREWS_DONE": "使用这个磨豆机", + "PAGE_MILL_INFORMATION_GRIND_WEIGHT": "消耗的豆子重量", + "PAGE_HELPER_WATER_HARDNESS": "水的硬度", + "PAGE_HELPER_WATER_HARDNESS_CA_CONTENTS": "钙含量 mg\/l", + "PAGE_HELPER_WATER_HARDNESS_MG_CONTENTS": "镁含量 mg\/l", + "PAGE_HELPER_WATER_HARDNESS_GERMAN_HARDNESS": "°dH", + "PAGE_HELPER_WATER_HARDNESS_TOTAL_HARDNESS": "总硬度", + "PAGE_HELPER_BREW_RATIO": "粉液比", + "PAGE_HELPER_BREW_RATIO_GROUND_COFFEE": "咖啡粉重 (gr)", + "PAGE_HELPER_BREW_RATIO_WATER": "液体 (gr\/ml)", + "PAGE_HELPER_BREW_RATIO_CALCULATED": "计算出的粉液比", + "PAGE_SETTINGS_SHOW_ARCHIVED_BREWS": "显示已经归档的冲泡", + "PAGE_SETTINGS_SHOW_ARCHIVED_BEANS": "显示已经归档的咖啡豆", + "PAGE_SETTINGS_SHOW_ARCHIVED_GREEN_BEANS": "显示已经归档的生豆", + "CUPPING_SCORE": "分数", + "CUPPING_SCORE_DRY_FRAGRANCE": "干香", + "CUPPING_SCORE_WET_AROMA": "湿香", + "CUPPING_SCORE_BRIGHTNESS": "明亮度", + "CUPPING_SCORE_FLAVOR": "风味", + "CUPPING_SCORE_BODY": "醇厚度", + "CUPPING_SCORE_FINISH": "尾韵", + "CUPPING_SCORE_SWEETNESS": "甜度", + "CUPPING_SCORE_CLEAN_CUP": "干净度", + "CUPPING_SCORE_COMPLEXITY": "复杂度", + "CUPPING_SCORE_UNIFORMITY": "一致性", + "CUPPING_SCORE_CUPPERS_CORRECTION": "杯测矫正", + "CUPPING_SCORE_DRY_FRAGRANCE_TOOLTIP": "指加入热水前,干磨咖啡的气味", + "CUPPING_SCORE_WET_AROMA_TOOLTIP": "指加入热水后,湿咖啡研磨的气味。", + "CUPPING_SCORE_BRIGHTNESS_TOOLTIP": "酸度是由一组绿原酸、柠檬酸、奎宁酸、乙酸等引起的咖啡中尖锐的高调味道,主要在口腔和舌头的前部感觉到。 (质量很好;与咖啡的苦味无关,也不会直接导致胃部不适)。 酸度受到许多杯测者的重视,并且直接关系到杯子的质量,因为酸度是高海拔种植的产物。", + "CUPPING_SCORE_FLAVOR_TOOLTIP": "这是口中的整体印象,包括所有其他评级。 有 4 种“主要味道”组(酸、甜、咸、苦)和许多“次要味道”。", + "CUPPING_SCORE_BODY_TOOLTIP": "通常被称为“口感”,主体是冲泡咖啡的重量和厚度感,由杯子中可溶性固体的百分比引起,包括提取的所有有机化合物(冲泡方法和使用的磨碎咖啡量会影响这一点 大大)。 我们对 Body 的评分较低,因为清淡的咖啡肯定不错,而且在某些原产地,较轻的酒体最适合整体杯子的特性。", + "CUPPING_SCORE_FINISH_TOOLTIP": "口腔清洁后的挥之不去的或新出现的味道。 这包括咖啡从嘴里流出到几分钟后的时间……这就是为什么你会发现很多杯测者在一两分钟后仍然体验到积极的味道时会修改回味分数的原因。", + "CUPPING_SCORE_SWEETNESS_TOOLTIP": "甜味几乎总是咖啡的理想品质,即使它被委婉地描述为“质朴的甜味”或“苦乐参半”。你可能会注意到精致的甜味(想想欧洲糕点、精美的糖果、白糖、 纯甜味)得分高,以及来自水果糖(果糖)的复杂甜味。 麦芽甜味(麦芽糖)不太传统,但非常令人向往,蜂蜜的范围从非常纯净干净到复杂、质朴的几乎是酵母味。 基本上,如果甜度是杯子的关键,它会被评为很好。", + "CUPPING_SCORE_CLEAN_CUP_TOOLTIP": "请注意,“干净的杯子”并不意味着咖啡上没有污垢。 它只是关于风味和“不干净”的原始、时髦的咖啡,而且风味也可能非常理想,例如来自苏门答腊的湿法去壳印度尼西亚咖啡,或干加工的埃塞俄比亚和也门类型。", + "CUPPING_SCORE_COMPLEXITY_TOOLTIP": "复杂性与“风味”和“完成”分数相得益彰,以传达多种风味的多样性或层次感。 这意味着在杯子里有很多发现。 再说一次,简单的咖啡可以在过度暴露于许多强大的、强烈的、复杂的咖啡后得到解脱。", + "CUPPING_SCORE_UNIFORMITY_TOOLTIP": "均匀度是指杯与杯之间的差异。 干法咖啡在本质上可能不如湿法咖啡均匀。 如果偶尔放弃的话,我们永远不会避免很多味道很好的东西。 这是在杯测方案中进行评分的,其中每个被审查的批次都制作了多个杯子。", + "CUPPING_SCORE_CUPPERS_CORRECTION_TOOLTIP": "这改编自 SCAA 系统和卓越杯评分(他们有时称其为“总分”)。 它允许杯测者确保总分正确传达杯子的整体印象。 你可能会批评这种方法,并认为它是“捏造”的。 在某种程度上,你是对的......但是改变类别分数以达到所需的总分(当你知道它是 7 时,给咖啡的酸度为 9)会更糟糕,或者相反,有一个 绝对值得 90 分的咖啡最终以 84 分结束。具体的 Cupper 校正数无关紧要,无论是 5 还是 8 ......这个想法是总分给出了咖啡质量的正确印象。", + "CUPPING_SCORE_TOOLTIP": "100-95 = 令人震惊,90-94 = 杰出,85-89 = 非常好,80-84 = 好,75-79 = 一般,70-74 = 差", + "DETAIL_BREW": "冲泡详情", + "DETAIL_BEAN": "咖啡豆详情", + "DETAIL_MILL": "研磨机详情", + "DETAIL_PREPARATION": "准备冲泡", + "EDIT_BREW": "编辑冲泡", + "ADD_BEAN": "添加咖啡豆", + "EDIT_BEAN": "编辑咖啡豆", + "ADD_PREPARATION": "添加冲泡器具", + "EDIT_PREPARATION": "编辑冲泡器具", + "ADD_MILL": "新增研磨机", + "EDIT_MILL": "编辑研磨机", + "USE_FILTER": "应用筛选", + "RESET_FILTER": "重置筛选", + "COFFEE_GRAMS_GRINDED": "研磨咖啡豆总克数", + "BEANS_USED": "研磨咖啡豆种类", + "BREW_HEADER_BEFORE_BREW": "冲泡前", + "BREW_HEADER_WHILE_BREW": "冲泡时", + "BREW_HEADER_AFTER_BREW": "冲泡后", + "BREW_HEADER_CUPPING": "品尝", + "BEANS_CONSUMED": "归档", + "NAV_MANAGE_PARAMETERS": "管理参数", + "NAV_SORT_PARAMETERS": "参数排序", + "NAV_DEFAULT_PARAMETERS": "定义默认参数", + "PAGE_SORT_PARAMETERS_DESCRIPTION": "拖放参数以定义它们将显示的顺序", + "PAGE_MANAGE_PARAMETERS_DESCRIPTION": "编辑冲泡信息时要显示的数据", + "PAGE_DEFAULT_PARAMETERS_DESCRIPTION": "标记哪些参数应默认为最后使用的值", + "SORT_PARAMETERS_BEFORE": "冲泡前", + "SORT_PARAMETERS_MEANWHILE": "冲泡时", + "SORT_PARAMETERS_AFTER": "冲泡后", + "MORE_INFORMATION": "更多信息", + "UNDERSTOOD": "了解", + "WELCOME_PAGE_ACTIVATE_ANALYTICS_TITLE": "分析和跟踪", + "WELCOME_PAGE_ACTIVATE_ANALYTICS_DESCRIPTION": "我们希望不断改进应用程序、网站和我们未来为您提供的服务。 为此,我们需要跟踪您如何使用该应用程序及其功能的一些数据。 但我们承诺,我们永远不会追踪任何个人数据。 为了确保这些承诺,我们使用 Matomo,一个以数据安全和隐私为中心的开源服务,该服务托管在我们自己的服务器上 - 这确保只有我们拥有数据所有权。 我们的网站提供有关我们跟踪的参数的所有信息,此外,您可以查看 100% 开源的源代码。 如果你有任何问题,请随时与我们联系。", + "ANALYTICS_INFORMATION_TITLE": "分析和跟踪", + "ANALYTICS_INFORMATION_DESCRIPTION": "如您所知,您的数据和隐私的安全是我们的首要任务。因此,我们已从 Google Analytics 切换到以数据安全和隐私为重点的开源服务 Matomo,该服务由托管 在我们自己的服务器上 - 这意味着我们拥有完整的数据所有权。跟踪的参数没有改变,我们仍然承诺永远不会跟踪任何个人数据。我们的网站提供了我们跟踪的参数的所有信息,此外您可以查看100%开源的源代码。您有问题吗?联系我们。", + "ACTIVATE": "分析", + "DO_NOT_ACTIVE": "停止分析", + "WELCOME_PAGE_BEAN_TITLE": "咖啡豆", + "WELCOME_PAGE_BEAN_DESCRIPTION": "用咖啡豆来冲泡咖啡有点复杂。 请添加您的第一种咖啡豆以开始使用!", + "WELCOME_PAGE_BEAN_ADD": "添加咖啡豆", + "SKIP": "跳过", + "WELCOME_PAGE_PREPARATION_TITLE": "冲泡器具", + "WELCOME_PAGE_PREPARATION_DESCRIPTION": "V60滤杯, 爱乐压, 手冲式 - 冲泡咖啡的方式有很多种。请添加至少一个冲泡器具", + "WELCOME_PAGE_PREPARATION_ADD": "添加冲泡器具", + "WELCOME_PAGE_MILL_TITLE": "研磨机", + "WELCOME_PAGE_MILL_DESCRIPTION": "就快要完成了,但你需要一些东西来研磨咖啡豆!请添加至少一台研磨机", + "WELCOME_PAGE_MILL_ADD": "新增研磨机", + "WELCOME_PAGE_TITLE": "欢迎!", + "WELCOME_PAGE_BEAN_HEADLINE": "第一款咖啡豆", + "WELCOME_PAGE_PREPARATION_HEADLINE": "添加冲泡器具", + "WELCOME_PAGE_MILL_HEADLINE": "第一个研磨机", + "WELCOME_PAGE_LETS_START_HEADLINE": "现在我们开始吧!", + "WELCOME_PAGE_LETS_START_TITLE": "现在我们开始吧!", + "WELCOME_PAGE_LETS_START_DESCRIPTION": "恭喜,你已经准备好做你一生中最好的咖啡了。玩得开心,传播对好咖啡的热爱!", + "PREPARATION_TYPE": "制作类型", + "PREPARATION_TYPE_NAME": "名称", + "ARCHIVED": "归档", + "PAGE_SETTINGS_SHOW_ARCHIVED_PREPARATIONS": "显示归档的冲泡器具", + "PAGE_SETTINGS_SHOW_ARCHIVED_MILLS": "显示归档的冲泡研磨机", + "PAGE_MILL_LIST_NO_ARCHIVED_MILL_EXISTING": "你还没有归档任何一个研磨机", + "PAGE_PREPARATION_LIST_NO_ARCHIVED_PREPARATION_EXISTING": "你还没有归档任何一种器具", + "TOAST_BREW_ADDED_SUCCESSFULLY": "冲泡添加成功", + "TOAST_BREW_REPEATED_SUCCESSFULLY": "冲泡复制成功", + "TOAST_BEAN_ADDED_SUCCESSFULLY": "咖啡豆添加成功", + "TOAST_MILL_ADDED_SUCCESSFULLY": "新的研磨机已添加成功", + "TOAST_PREPARATION_ADDED_SUCCESSFULLY": "冲泡器具添加成功", + "TOAST_WATER_ADDED_SUCCESSFULLY": "水质添加成功", + "TOAST_BREW_DELETED_SUCCESSFULLY": "冲泡记录已被删除", + "TOAST_BEAN_DELETED_SUCCESSFULLY": "咖啡豆已被删除", + "TOAST_GREEN_BEAN_DELETED_SUCCESSFULLY": "生豆已被删除", + "TOAST_MILL_DELETED_SUCCESSFULLY": "研磨机已被删除", + "TOAST_WATER_DELETED_SUCCESSFULLY": "水质已被删除", + "TOAST_PREPARATION_DELETED_SUCCESSFULLY": "冲泡器具已被删除", + "TOAST_BREW_EDITED_SUCCESSFULLY": "冲泡记录已被编辑", + "TOAST_BEAN_EDITED_SUCCESSFULLY": "咖啡豆已被编辑", + "TOAST_MILL_EDITED_SUCCESSFULLY": "研磨机已被编辑", + "TOAST_PREPARATION_EDITED_SUCCESSFULLY": "器具已被编辑", + "TOAST_WATER_EDITED_SUCCESSFULLY": "水质已被编辑", + "TOAST_BEAN_ARCHIVED_SUCCESSFULLY": "咖啡豆已经归档", + "TOAST_MILL_ARCHIVED_SUCCESSFULLY": "研磨机已经归档", + "TOAST_PREPARATION_ARCHIVED_SUCCESSFULLY": "冲泡器具已经归档", + "TOAST_WATER_ARCHIVED_SUCCESSFULLY": "水质已被编辑", + "BEAN_WEIGHT_ALREADY_USED": "{{gramUsed}}g of {{gramTotal}}g ({{leftOver}}g)", + "PREPARATION_TYPE_CUSTOM_PREPARATION": "自定义冲泡器具", + "PREPARATION_TYPE_AEROPRESS": "爱乐压", + "PREPARATION_TYPE_V60": "V60滤杯", + "PREPARATION_TYPE_CHEMEX": "Chemex", + "PREPARATION_TYPE_BIALETTI": "比乐蒂\/摩卡壶", + "PREPARATION_TYPE_PORTAFILTER": "过滤手柄", + "PREPARATION_TYPE_KALITA_WAVE": "蛋糕杯", + "PREPARATION_TYPE_FRENCH_PRESS": "法压壶", + "PREPARATION_TYPE_SWANNECK": "Swanneck", + "PREPARATION_TYPE_DRIPPER": "聪明杯", + "PREPARATION_TYPE_DELTER_PRESS": "D特压(Delder Press)", + "PREPARATION_TYPE_COLD_BREW": "冷萃", + "PREPARATION_TYPE_AEROPRESS_INVERTED": "爱乐压倒压法", + "PREPARATION_TYPE_TURKISH": "极细研磨", + "PREPARATION_TYPE_BLUE_DRIPPER": "蓝瓶子滤杯", + "PREPARATION_TYPE_ADD_CUSTOM": "添加自定义器具", + "PREPARATION_TYPE_GINA": "Gina智能咖啡机", + "PREPARATION_TYPE_KONO": "KONO滤杯", + "PREPARATION_TYPE_ORIGAMI": "折纸滤杯", + "PREPARATION_TYPE_CAFELAT": "Cafelat拉杆咖啡机", + "PREPARATION_TYPE_OREA": "Orea滤杯", + "PREPARATION_TYPE_COLD_DRIP": "冰滴", + "PREPARATION_TYPE_HAND_LEVER": "手压式", + "PREPARATION_TYPE_FLAIR": "Flair手压意式咖啡机", + "PREPARATION_TYPE_APRIL_BREWER": "April Brewer滤杯", + "PREPARATION_TYPE_ESPRO_BLOOM": "Espro Bloom滤杯", + "PREPARATION_TYPE_FELLOW_STAGG": "Fellow Stagg温控咖啡壶", + "PREPARATION_TYPE_HSIAO_50": "Hsiao 50滤杯", + "PREPARATION_TYPE_KARLSBADER_KANNE": "Karlsbader", + "PREPARATION_TYPE_MOCCA_MASTER": "Mocca Master滴漏式咖啡机", + "PREPARATION_TYPE_SIPHON": "虹吸式", + "CHOOSE_BEANS": "选择咖啡豆", + "CHOOSE_BEAN": "选择咖啡豆", + "CHOOSE_WATERS": "选择水质", + "CHOOSE_WATER": "选择水质", + "CHOOSE_PREPARATIONS": "选择冲泡器具", + "CHOOSE_PREPARATION": "选择冲泡器具", + "CHOOSE_MILLS": "选择研磨机", + "CHOOSE_MILL": "选择研磨机", + "BEAN": { + "PLACE_HOLDER": { + "BEAN_DATA_NAME": "添加咖啡豆的名称", + "BEAN_DATA_ROAST_NAME": "添加烘焙温度", + "BEAN_DATA_ROASTING_DATE": "请输入咖啡豆的烘焙日期", + "BEAN_DATA_ROASTER": "请输入烘焙者的名称", + "BEAN_DATA_VARIETY": "添加咖啡品种", + "BEAN_DATA_PROCESSING": "请输入咖啡豆的处理方法,如:水洗", + "BEAN_DATA_COUNTRY": "它起源于哪儿?", + "BEAN_DATA_MIX": "什么是混合比例?", + "BEAN_DATA_AROMATICS": "描述它的风味吧", + "BEAN_DATA_WEIGHT": "咖啡豆的总重量", + "BEAN_DATA_COST": "购入这款咖啡豆花费了多少钱?", + "BEAN_DATA_REGION": "添加它的产区", + "BEAN_DATA_FARM": "添加它的庄园\/农场", + "BEAN_DATA_FARMER": "添加它的种植者名称", + "BEAN_DATA_ELEVATION": "请输入咖啡豆的生长海拔", + "BEAN_DATA_HARVEST_TIME": "请输入咖啡豆的收获日期", + "BEAN_DATA_BUY_DATE": "请输入咖啡豆的购买日期", + "BEAN_DATA_PERCENTAGE": "添加该款咖啡豆在此包装中的占比(主要用于拼配包装填写)", + "BEAN_DATA_CERTIFICATION": "添加豆类认证 (例如:fair trade, bio)", + "BEAN_DATA_ROASTING_TYPE": "添加烘焙类型", + "BEAN_DATA_DECAFFEINATED": "这款咖啡不含咖啡因", + "BEAN_DATA_URL": "添加网站链接", + "BEAN_DATA_EAN": "添加条形码", + "BEAN_DATA_CUPPING_POINTS": "添加它的杯测分数", + "BEAN_DATA_PURCHASING_PRICE": "添加购买价格", + "BEAN_DATA_FOB_PRICE": "添加离岸价格", + "NOTES": "为咖啡豆添加注释", + "CHOOSE_DATA_ROASTER": "添加烘焙机", + "CHOOSE_DATA_ROASTING_TYPE": "选择烘焙类型" + } }, - "6.6.0": { - "TITLE": "版本 6.6.0: 有什么新功能?", - "DESCRIPTION": [ - "折射仪<\/b>", - "支持 DiFluid R2 - 感谢 Yannick! ", - "", - "蓝牙秤<\/b>", - "支持 Blackcoffee.io - 感谢 Yannick! ", - "调整倾注秤的流速", - "", - "冲泡<\/b>", - "标记某种豆子的冲泡为'最佳冲泡' - 可在设置中激活", - "现在可以在详情视图中复制你的笔记", - "按使用的配置文件筛选您的冲泡记录", - "通过列表菜单直接为您的冲泡评分", - "现在在详情视图中也可以下载可视化文件", - "", - "Xenia<\/b>", - "脚本执行现在会被记录在笔记中", - "设置冲泡开始时机器的冲泡温度", - "", - "改进<\/b>", - "一些小的改进", - "", - "其他<\/b>", - "一些小的错误修复" - ] + "PREPARATION": { + "PLACE_HOLDER": { + "PREPARATION_TYPE_NAME": "添加名称", + "NOTES": "为冲泡器具添加注释" + } }, - "6.6.1": { - "TITLE": "版本 6.4.1: 更新内容", - "DESCRIPTION": [ - "其他:<\/b>", - "修复了一些小错误" - ] + "MILL": { + "PLACE_HOLDER": { + "NAME": "添加名称", + "NOTES": "为研磨机添加注释" + } }, - "6.6.2": { - "TITLE": "Version 6.6.2: What's new", - "DESCRIPTION": [ - "[ANDROID]Android 13 - Filestorage permissions<\/b>", - "[ANDROID]Due to changes in the file system permissions in Android, the access paths for how files are backed up and imported had to be revised. In addition, camera and image access no longer worked on Android 13 devices and got fixed with this update.", - "[ANDROID]Due to these changes, the minimum requirement for this app also had to be raised to Android 7.0.", - "[ANDROID]You can find out how Import\/Export works now here: https:\/\/beanconqueror.com\/faq", - "", - "[IOS]iOS - Updated libraries<\/b>", - "[IOS]Due to library changes in cordova, this is a release to match all these :)" - ] + "BREW": { + "PLACE_HOLDER": { + "BREW_DATA_GRIND_SIZE": "输入研磨设置,如:5", + "BREW_DATA_GRIND_WEIGHT": "输入此次冲泡咖啡的咖啡粉克数 (gr)", + "BREW_DATA_BREW_TEMPERATURE": "输入冲泡温度", + "BREW_DATA_PREPARATION_METHOD": "选择冲泡器具", + "BREW_DATA_BEAN_TYPE": "选择咖啡豆", + "BREW_DATA_MILL": "选择一个研磨机", + "BREW_DATA_MILL_SPEED": "输入研磨机的研磨速度", + "BREW_DATA_MILL_TIMER": "输入研磨所花费的时间", + "BREW_DATA_PRESSURE_PROFILE": "压强\/流量曲线,冲泡建议等", + "BREW_DATA_TEMPERATURE_TIME": "请输入加热器具的时间", + "BREW_DATA_COFFEE_BLOOMING_TIME": "请输入闷蒸\/预浸泡所花费的时间", + "BREW_DATA_COFFEE_FIRST_DRIP_TIME": "咖啡的第一滴水是什么时候出现的?", + "BREW_DATA_BREW_QUANTITY": "冲泡时用了多少水?", + "BREW_DATA_COFFEE_TYPE": "输入咖啡类型 (e.g. ristretto)", + "BREW_DATA_COFFEE_CONCENTRATION": "输入咖啡浓度", + "BREW_DATA_TDS": "总共溶解了多少固体?", + "BREW_DATA_NOTES": "为这次冲泡添加注释", + "BREW_DATA_BREW_BEVERAGE_QUANTITY": "冲泡完成以后,得到了多少的咖啡液?", + "BREW_DATA_PREPARATION_METHOD_TOOL": "请选择你的冲泡器具", + "BREW_DATA_WATER": "选择此次使用的水质", + "BREW_DATA_BEAN_WEIGHT_IN": "你使用了多少咖啡豆? (gr)" + } }, - "7.0.0": { - "TITLE": "版本 7.00:新功能", - "DESCRIPTION": [ - "蓝牙秤模式<\/b>", - "在检测到重量的第一次变化时启动计时器 - 可在设置中激活(新按钮)", - "忽略当前传输的重量 - 例如,对于搅拌或去除重量而不改变图形 - 可在设置中激活(新按钮可见)", - "", - "蓝牙秤<\/b>", - "支持无名蓝牙秤", - "连接DiFluid Microbalance或Felicita秤时,直接设置命令延迟", - "", - "图形区<\/b>", - "在设置中激活图形区", - "为新的冲泡设置图形以便随时关注", - "图形可以来自冲泡或个别图形区", - "上传您自己的图形 - 从您的冲泡中导出一个.JSON文件", - "", - "可视化器<\/b>", - "自动将每个具有连接图形的新冲泡上传到可视化器 - 可在设置中激活", - "如有需要,手动上传所有冲泡到可视化器", - "感谢Miha的支持!", - "", - "冲泡<\/b>", - "从详细视图中重复一次冲泡", - "即使不是浓缩方法(例如,Pulsar),也可以激活准备方法的首滴", - "在最大化视图中,使用连接的秤显示冲泡速率", - "最后的冲泡现在按字母顺序排序,并显示上次使用的日期", - "使用连接的秤时,实时流速现在对于浓缩咖啡显示小于1g\/s的值", - "", - "咖啡豆<\/b>", - "从咖啡豆视图卡片中重复上次冲泡或最佳冲泡", - "", - "准备方法<\/b>", - "准备工具现在按字母顺序排序,并可进行过滤", - "选择时,显示准备方法的最后使用日期", - "", - "磨豆机<\/b>", - "在选择磨豆机时,现在可以看到最后的磨豆尺寸和最后的使用", - "", - "Xenia<\/b>", - "修复:停用的脚本不再执行", - "请更新到最新的固件以支持脚本", - "设置<\/b>", - "设置<\/b>", - "如果您对冲泡或咖啡豆进行了更改,则显示安全提示 - 可在设置中激活", - "现在为使用蓝牙设备的冲泡设置您个人的起始X和Y轴", - "lonic 7<\/b>", - "Ionic 7<\/b>", - "从Ionic 6升级到Ionic 7", - "[IOS]iOS的最低版本现在是iOS 14", - "[ANDROID]Android的最低版本现在是Android 7.1", - "Lokalise<\/b>", - "Lokalise<\/b>", - "使用Lokalise进行所有翻译 - 非常感谢Yannick", - "使用Localize进行翻译现在变得很容易。联系我们:info@beanconqueror.com", - "其他<\/b>", - "其他<\/b>", - "小bug修复" - ] + "ROASTED_BEFORE": "烘焙在", + "DAY_OLD": "天前", + "DAYS_OLD": "天前", + "BEANS_AMOUNT_USED": "已使用", + "CUPPING_BREW": "品尝", + "COFFEE_DRUNKEN_QUANTITY": "咖啡液", + "IMAGE_DELETED": "图片已删除", + "IMAGE_NOT_DELETED": "图片无法删除", + "EXTERNAL_STORAGE_NOT_SUPPORTED": "抱歉,不支持外部故事", + "BEANS_ARCHIVED": "已归档", + "TAB_ARCHIVE": "归档", + "TODAY": "今日", + "PLEASE_WAIT": "请稍等...", + "PREPARATION_STYLE_POUR_OVER": "手冲咖啡", + "PREPARATION_STYLE_ESPRESSO": "意式浓缩", + "PREPARATION_STYLE_FULL_IMMERSION": "全浸泡", + "PREPARATION_STYLE_PERCOLATION": "渗滤式", + "PREPARATION_TYPE_STYLE": "冲泡方式", + "PAGE_SETTINGS_FAST_REPEAT_DESCRIPTION": "开启一个新的菜单条目 - 使用它您可以直接复制冲泡。", + "PAGE_SETTINGS_TRACK_BREW_COORDINATES_DESCRIPTION": "保存每次冲泡时的经纬度", + "PAGE_SETTINGS_TRACK_CAFFEINE_CONSUMPTION_DESCRIPTION": "节省消耗的咖啡因量", + "UPDATE_TITLE": "有什么新玩意儿?", + "NEXT": "下一个", + "CUSTOM_PARAMETERS": "自定义参数", + "CUSTOM_DEFAULT_PARAMETERS": "默认", + "CUSTOM_MANAGE_PARAMETERS": "管理", + "CUSTOM_SORT_PARAMETERS": "种类", + "BREW_PARAMETER_CUSTOMIZE_TITLE": "自定义每种冲泡器具的参数", + "BREW_PARAMETER_CUSTOMIZE_DESCRIPTION": "您想为每种冲泡器具选择自定义参数吗?跳转到“器具”,打开具体冲泡器具的选项,选择“自定义参数”。现在您可以选择将用于此准备的参数!", + "BREW_DATA_BREW_QUANTITY_TOOLTIP": "不能用于意式浓缩咖啡的水量", + "BREW_DATA_COFFEE_FIRST_DRIP_TIME_TOOLTIP": "咖啡首滴时间(仅适用于浓缩咖啡或特定过滤方法)", + "BREW_DATA_PREPARATION_METHOD_TOOLTIP": "冲泡活动时可自定义", + "PAGE_SETTINGS_GENERAL": "常规设置", + "EDIT_PREPARATION_CUSTOM_PARAMETERS": "自定义参数", + "ENABLE_PREPARATION_CUSTOM_PARAMETERS": "使用个人参数", + "BEAN_ADD_ANOTHER_SORT": "添加另一种类", + "BEAN_SORT": "种类", + "BEAN_SORT_INFORMATION": "变化信息", + "BEAN_SORT_MORE_INFORMATION": "更多信息", + "NAVIGATE_TO_PREPARATION_METHODS": "跳转到冲泡页面", + "PREPARATION_TOOLS": "冲泡器具", + "PREPARATION_TOOLS_INFORMATION": "为您的过滤器添加不同的容器. 对于 V60 滤杯 或 123 添加例如 布、纸或网状过滤器", + "PREPARATION_TOOLS_PLACEHOLDER": "纸或布过滤器、VST-20g、14g-Basket等。", + "PREPARATION_PARAMETERS_CUSTOMIZED": "参数自定义", + "BEANS_WEIGHT_AVAILABLE": "可用的咖啡豆", + "SORT_ORDER": "改变顺序", + "ASCENDING": "升序", + "DESCENDING": "倒序", + "SORT_AFTER": "排序", + "BEAN_SORT_NAME_OF_BEAN": "咖啡豆名称", + "BEAN_SORT_ROASTER": "烘焙机", + "BEAN_SORT_ROASTING_DATE": "烘焙日期", + "BEAN_TAB_ROAST_INFORMATION": "烘焙信息", + "BEAN_TAB_GENERAL_INFORMATION": "常规", + "BEAN_TAB_SORT_INFORMATION": "品种信息", + "PAGE_SETTINGS_MANAGE_ARCHIVE": "管理归档", + "LAST_USE": "上一次使用在", + "SEARCH": "搜索", + "OVERVIEW": "概览", + "BEAN_HEADER_ADDITIONALE_INFORMATION": "附加信息", + "THREE_DEE_TOUCH_ACTION_BREW": "冲泡", + "THREE_DEE_TOUCH_ACTION_BEAN": "咖啡豆", + "THREE_DEE_TOUCH_ACTION_PREPARATION": "冲泡器具", + "THREE_DEE_TOUCH_ACTION_MILL": "研磨机", + "PAGE_CREDITS_NOT_EXISTING": "无内容", + "TIMER_HOUR": "小时", + "TIMER_MINUTES": "分钟", + "TIMER_SECONDS": "秒", + "EXCEL": { + "BEAN": { + "CREATION_DATE": "创建日期", + "ID": "咖啡豆编号" + }, + "PREPARATION": { + "CREATION_DATE": "创建日期", + "ID": "器具编号" + }, + "GRINDER": { + "CREATION_DATE": "创建日期", + "ID": "工厂编号" + } }, - "7.1.0": { - "TITLE": "版本 7.1.0:新增内容", - "DESCRIPTION": [ - "更多语言<\/b>", - "支持法语 - 感谢 Yannick", - "印度尼西亚语的支持 - 感谢 Bondan, Ganjar", - "", - "蓝牙秤<\/b>", - "支持新的 DIY 蓝牙秤(Rust 和 Python 固件)", - "支持 DiFluid Microbalance Ti", - "改进所有秤的流量计算", - "", - "图形区<\/b>", - "在选择参考卡中添加了更多信息", - "", - "冲泡<\/b>", - "蓝牙秤 - 在工具栏顶部添加了去皮按钮", - "", - "咖啡豆<\/b>", - "支持复制品种信息", - "", - "水质部分<\/b>", - "添加钾参数", - "", - "磨豆机<\/b>", - "RPM 参数现在在列表视图和选择视图中可见", - "", - "设置", - "通过连接的蓝牙设备定义您自己的过滤器或浓缩咖啡的时间轴", - "添加不同的日期格式以匹配美国格式", - "", - "其他<\/b>", - "修复小 bug " - ] + "EXCEL_EXPORT": "导出为Excel", + "HEALTH_KIT_QUESTION_TITLE": "节省咖啡因消耗", + "HEALTH_KIT_QUESTION_MESSAGE": "通过启用,每次冲泡中占用的咖啡因将自动保存在 Apple Health 中", + "NAV_ROASTING_SECTION": "烘焙", + "ROASTING_SECTION": { + "NAV_GREEN_BEANS": "生豆", + "NAV_ROASTING_MACHINE": "烘焙机", + "ROASTING_MACHINE": { + "TOTAL_ROAST_QUANTITY": "烘焙出的咖啡豆", + "TOTAL_ROAST_COUNT": "烘焙次数" + }, + "GREEN_BEAN": { + "ADD": "添加", + "EDIT": "编辑", + "DETAIL": "生豆详情", + "ROASTABLE": "待烘焙", + "NO_ROASTS_YET": "目前还没有烘焙" + }, + "BEAN": { + "DROP_TEMPERATURE": "烘焙的最终温度", + "ROAST_LENGTH": "烘焙时长", + "ROASTER_MACHINE": "烘焙机", + "GREEN_BEAN_WEIGHT": "生豆重量", + "OUTSIDE_TEMPERATURE": "气温", + "HUMIDITY": "湿度", + "FIRST_CRACK_MINUTE": "一爆分钟", + "FIRST_CRACK_TEMPERATURE": "一爆温度", + "SECOND_CRACK_MINUTE": "二爆分钟", + "SECOND_CRACK_TEMPERATURE": "二爆温度", + "PLACE_HOLDER": { + "DROP_TEMPERATURE": "烘焙的最终温度", + "ROAST_LENGTH": "烘焙时长", + "ROASTER_MACHINE": "烘焙机", + "GREEN_BEAN_WEIGHT": "生豆重量", + "OUTSIDE_TEMPERATURE": "气温", + "HUMIDITY": "湿度", + "FIRST_CRACK_MINUTE": "一爆分钟", + "FIRST_CRACK_TEMPERATURE": "一爆温度", + "SECOND_CRACK_TEMPERATURE": "二爆温度", + "SECOND_CRACK_MINUTE": "二爆分钟" + } + } }, - "7.2.0": { - "TITLE": "7.2.0 版本:新功能", - "DESCRIPTION": [ - "更多语言<\/b>", - "支持意大利语 - 感谢 Cancercookie", - "支持波兰语 - 感谢 MarcinSachs", - "", - "蓝牙秤<\/b>", - "当您设置“开始计时并去皮”时,需要等待秤的读数多次为0后才会开始计时。", - "", - "Xenia<\/b>", - "新增 V1 和 V2 接口的切换开关", - "新增按重量萃取功能,可自动计算出期望重量,从而停止萃取", - "", - "Meticulous<\/b>", - "首次与 Meticulous 集成 - 感谢整个 Meticulous 团队!", - "", - "设置<\/b>", - "定义滴液开始的阈值", - "", - "其他", - "代码中的一些技术变更", - "小调整", - "[IOS]在数据库无法访问时会出现弹窗。", - "", - "感谢<\/b>", - "非常感谢所有翻译人员,他们付出了巨大的努力,使该应用程序可以支持多种语言。" - ] - } - }, - "CUSTOM_PARAMETERS": "自定义参数", - "CUSTOM_DEFAULT_PARAMETERS": "默认", - "CUSTOM_MANAGE_PARAMETERS": "管理", - "CUSTOM_SORT_PARAMETERS": "种类", - "BREW_PARAMETER_CUSTOMIZE_TITLE": "自定义每种冲泡器具的参数", - "BREW_PARAMETER_CUSTOMIZE_DESCRIPTION": "您想为每种冲泡器具选择自定义参数吗?跳转到“器具”,打开具体冲泡器具的选项,选择“自定义参数”。现在您可以选择将用于此准备的参数!", - "BREW_DATA_BREW_QUANTITY_TOOLTIP": "不能用于意式浓缩咖啡的水量", - "BREW_DATA_COFFEE_FIRST_DRIP_TIME_TOOLTIP": "咖啡首滴时间(仅适用于浓缩咖啡或特定过滤方法)", - "BREW_DATA_PREPARATION_METHOD_TOOLTIP": "冲泡活动时可自定义", - "PAGE_SETTINGS_GENERAL": "常规设置", - "EDIT_PREPARATION_CUSTOM_PARAMETERS": "自定义参数", - "ENABLE_PREPARATION_CUSTOM_PARAMETERS": "使用个人参数", - "BEAN_ADD_ANOTHER_SORT": "添加另一种类", - "BEAN_SORT": "种类", - "BEAN_SORT_INFORMATION": "变化信息", - "BEAN_SORT_MORE_INFORMATION": "更多信息", - "NAVIGATE_TO_PREPARATION_METHODS": "跳转到冲泡页面", - "PREPARATION_TOOLS": "冲泡器具", - "PREPARATION_TOOLS_INFORMATION": "为您的过滤器添加不同的容器. 对于 V60 滤杯 或 123 添加例如 布、纸或网状过滤器", - "PREPARATION_TOOLS_PLACEHOLDER": "纸或布过滤器、VST-20g、14g-Basket等。", - "PREPARATION_PARAMETERS_CUSTOMIZED": "参数自定义", - "BEANS_WEIGHT_AVAILABLE": "可用的咖啡豆", - "SORT_ORDER": "改变顺序", - "ASCENDING": "升序", - "DESCENDING": "倒序", - "SORT_AFTER": "排序", - "BEAN_SORT_NAME_OF_BEAN": "咖啡豆名称", - "BEAN_SORT_ROASTER": "烘焙机", - "BEAN_SORT_ROASTING_DATE": "烘焙日期", - "BEAN_TAB_ROAST_INFORMATION": "烘焙信息", - "BEAN_TAB_GENERAL_INFORMATION": "常规", - "BEAN_TAB_SORT_INFORMATION": "品种信息", - "PAGE_SETTINGS_MANAGE_ARCHIVE": "管理归档", - "LAST_USE": "上一次使用在", - "SEARCH": "搜索", - "OVERVIEW": "概览", - "BEAN_HEADER_ADDITIONALE_INFORMATION": "附加信息", - "THREE_DEE_TOUCH_ACTION_BREW": "冲泡", - "THREE_DEE_TOUCH_ACTION_BEAN": "咖啡豆", - "THREE_DEE_TOUCH_ACTION_PREPARATION": "冲泡器具", - "THREE_DEE_TOUCH_ACTION_MILL": "研磨机", - "PAGE_CREDITS_NOT_EXISTING": "无内容", - "TIMER_HOUR": "小时", - "TIMER_MINUTES": "分钟", - "TIMER_SECONDS": "秒", - "EXCEL": { - "BEAN": { - "CREATION_DATE": "创建日期", - "ID": "咖啡豆编号" - }, - "PREPARATION": { - "CREATION_DATE": "创建日期", - "ID": "器具编号" - }, - "GRINDER": { - "CREATION_DATE": "创建日期", - "ID": "工厂编号" - } - }, - "EXCEL_EXPORT": "导出为Excel", - "HEALTH_KIT_QUESTION_TITLE": "节省咖啡因消耗", - "HEALTH_KIT_QUESTION_MESSAGE": "通过启用,每次冲泡中占用的咖啡因将自动保存在 Apple Health 中", - "NAV_ROASTING_SECTION": "烘焙", - "ROASTING_SECTION": { - "NAV_GREEN_BEANS": "生豆", - "NAV_ROASTING_MACHINE": "烘焙机", + "PAGE_SETTINGS_MANAGE_SECTIONS": "更多选项卡", + "PAGE_SETTINGS_SHOW_ROASTING_SECTION": "启用烘焙选项卡", + "PAGE_SETTINGS_SHOW_WATER_SECTION": "启用水质选项卡", + "PAGE_SETTINGS_SHOW_CUPPING_SECTION": "启用杯测选项", + "BEAN_DATA_BUY_DATE": "购买日期", + "BEAN_SORT_CREATION_DATE": "创建日期", + "BEAN_SORT_PURCHASE_DATE": "购买日期", + "BEAN_ROAST_COUNT": "烘焙度", + "TRANSFER_ROAST": "烘焙", + "BEAN_TAB_LINKED_ROASTS": "烘焙", + "BEAN_DATA_WEIGHT_AFTER_ROASTING": "烘焙后的重量", + "TOAST_GREEN_BEAN_ADDED_SUCCESSFULLY": "生豆已添加成功", + "TOAST_GREEN_BEAN_EDITED_SUCCESSFULLY": "生豆已编辑成功", + "TOAST_GREEN_BEAN_ARCHIVED_SUCCESSFULLY": "生豆已归档成功", + "TOAST_ROASTING_MACHINE_ADDED_SUCCESSFULLY": "烘焙机已添加成功", + "TOAST_ROASTING_MACHINE_EDITED_SUCCESSFULLY": "烘焙机已编辑成功", + "TOAST_ROASTING_MACHINE_ARCHIVED_SUCCESSFULLY": "烘焙机已归档成功", + "DELETE_ROASTING_MACHINE_QUESTION": "删除烘焙机?所有相关已经烘焙后的咖啡豆都将更新,不会被删除", + "TOAST_ROASTING_MACHINE_DELETED_SUCCESSFULLY": "烘焙机已删除成功", + "EDIT_ROASTING_MACHINE": "编辑", + "DETAIL_ROASTING_MACHINE": "烘焙详情", + "DELETE_WATER_QUESTION": "删除水质?所有相关已经烘焙后的咖啡豆都将更新,不会被删除", "ROASTING_MACHINE": { - "TOTAL_ROAST_QUANTITY": "烘焙出的咖啡豆", - "TOTAL_ROAST_COUNT": "烘焙次数" + "PLACE_HOLDER": { + "NAME": "添加名称", + "NOTES": "为烘焙机添加注释" + } }, - "GREEN_BEAN": { - "ADD": "添加", - "EDIT": "编辑", - "DETAIL": "生豆详情", - "ROASTABLE": "待烘焙", - "NO_ROASTS_YET": "目前还没有烘焙" + "NAV_ROASTING_MACHINE": "烘焙机", + "PAGE_ROASTING_MACHINE_LIST_NO_MACHINES_EXISTING": "您没有添加任何烘焙机", + "PAGE_ROASTING_MACHINE_LIST_NO_ARCHIVED_MACHINES_EXISTING": "您没有归档任何烘焙机", + "CHOOSE_ROASTING_MACHINES": "选择烘焙机", + "CHOOSE_ROASTING_MACHINE": "选择烘焙机", + "POPOVER_BREWS_OPTION_TOGGLE_FAVOURITE": "喜爱", + "TOAST_BREW_FAVOURITE_ADDED": "已添加为喜爱", + "TOAST_BREW_FAVOURITE_REMOVED": "已从喜爱中删除", + "BREW_FILTER_JUST_FAVOURITE": "喜爱", + "STATISTICS_PREPARATION_USAGES": "器具用途", + "STATISTICS_PREPARATION_TIMELINE_USAGES": "器具的使用历史", + "STATISTICS_GRINDER_TIMELINE_USAGES": "研磨机的使用历史", + "ACCEPT": "接受", + "STATISTIC_TAB_GENERAL": "常规", + "STATISTIC_TAB_BREWS": "冲泡", + "STATISTIC_TAB_BEANS": "咖啡豆", + "STATISTIC_TAB_PREPARATIONS": "冲泡器具", + "STATISTIC_TAB_GRINDERS": "研磨机", + "PAGE_STATISTICS_BREW_PER_DAYPROCESSES": "每天冲泡", + "PAGE_STATISTICS_BREW_TIME": "冲泡时间", + "PAGE_STATISTICS_PHOTOS_TAKEN": "拍摄的照片", + "PAGE_SETTINGS_IMAGE_QUALITY": "图像质量", + "PAGE_SETTINGS_IMAGE_QUALITY_TOOLTIP": "定义图像加载质量,这可以降低您的数据使用量。", + "PAGE_SETTINGS_BREW_RATING": "冲泡评分", + "PAGE_SETTINGS_BREW_RATING_TOOLTIP": "对冲泡进行-1到5分的评分太少了吗?你最高可以设置到100的评分区间", + "UPDATE_ENTRY_OF": "Update entry {{index}} of {{count}}", + "WEBSITE": "网站", + "SHARE": "分享", + "ANDROID_FILE_ACCESS_NEEDED_TITLE": "需要授权文件访问权限", + "ANDROID_FILE_ACCESS_NEEDED_DESCRIPTION": "为了让应用程序充分发挥作用,我们需要您授权文件访问。 否则应用程序内会有部分功能受限。 这是自动备份功能所需要的权限。", + "COULD_NOT_ACCESS_FILE": "我们无法访问所选文件", + "WRONG_FILE_FORMAT": "您选择了不受支持的文件格式", + "SCAN_BEAN": "扫描包", + "CLEAR": "清除", + "BEAN_LOOKS_LIKE_CONSUMED": "这包咖啡豆看起来已经完全消耗了,要将它归档吗?", + "CUPPING_1": "水果(Fruit)", + "CUPPING_2": "柑橘类(Citrus)", + "CUPPING_3": "柠檬和柠檬水(Lemo)", + "CUPPING_4": "酸橙(Lime)", + "CUPPING_5": "西柚(Grapefruit)", + "CUPPING_6": "小柑橘(Clementine)", + "CUPPING_7": "柑橘(Tangerine)", + "CUPPING_8": "砂糖橘(Mandarin orange)", + "CUPPING_9": "橙子(Orange)", + "CUPPING_10": "苹果\/梨(Apple\/pear)", + "CUPPING_11": "绿苹果(Green apple)", + "CUPPING_12": "红苹果(Red apple)", + "CUPPING_13": "瓜(Melon)", + "CUPPING_14": "西瓜(Watermelon)", + "CUPPING_15": "甜瓜(Honeydew)", + "CUPPING_16": "哈密瓜(Cantaloupe)", + "CUPPING_17": "葡萄(Grape)", + "CUPPING_18": "白葡萄(White grape)", + "CUPPING_19": "绿葡萄(Green grape)", + "CUPPING_20": "红葡萄(Red grape)", + "CUPPING_21": "康科德葡萄(Concord grape)", + "CUPPING_22": "热带水果(Tropical fruit)", + "CUPPING_23": "荔枝(Lychee)", + "CUPPING_24": "杨桃(Star fruit)", + "CUPPING_25": "酸角(Tamarind)", + "CUPPING_26": "百香果(Passion fruit)", + "CUPPING_27": "菠萝(Pineapple)", + "CUPPING_28": "芒果(Mango)", + "CUPPING_29": "木瓜(Papaya)", + "CUPPING_30": "猕猴桃(Kiwi)", + "CUPPING_31": "香蕉(Banana)", + "CUPPING_32": "椰子(Coconut)", + "CUPPING_33": "核果(Stone fruit)", + "CUPPING_34": "桃子(Peach)", + "CUPPING_35": "油桃(Nectarine)", + "CUPPING_36": "杏(Apricot)", + "CUPPING_37": "李子(Plum)", + "CUPPING_38": "樱桃(Cherry)", + "CUPPING_39": "黑樱桃(Black cherry)", + "CUPPING_40": "浆果类(Berry)", + "CUPPING_41": "蔓越莓(Cranberry)", + "CUPPING_42": "覆盆子(Raspberry)", + "CUPPING_43": "草莓(Strawberry)", + "CUPPING_44": "蓝莓(Blueberry)", + "CUPPING_45": "红加仑(Red currant)", + "CUPPING_46": "黑加仑(Black currant)", + "CUPPING_47": "干果类(Dried fruit)", + "CUPPING_48": "红葡萄干(Golden raisin)", + "CUPPING_49": "葡萄干(Raisin)", + "CUPPING_50": "无花果干(Dried fig)", + "CUPPING_51": "枣干(ried dates)", + "CUPPING_52": "梅干(Prune)", + "CUPPING_53": "甜味和烘培(Sweet & Roasting Notes)", + "CUPPING_54": "巧克力(Chocolate)", + "CUPPING_55": "可可碎(Cacao nibs)", + "CUPPING_56": "黑巧(Dark chocolate)", + "CUPPING_57": "贝克巧克力(Bakers chocolate)", + "CUPPING_58": "苦甜巧克力(Bittersweet chocolate)", + "CUPPING_59": "可可粉(Cocoa powder)", + "CUPPING_60": "牛奶巧克力(Milk chocolate)", + "CUPPING_61": "坚果类(Nut)", + "CUPPING_62": "核桃(Walnut)", + "CUPPING_63": "花生(Peanut)", + "CUPPING_64": "腰果(Cashew)", + "CUPPING_65": "山核桃(Pecan)", + "CUPPING_66": "榛子(Hazelnut)", + "CUPPING_67": "杏仁(Almond)", + "CUPPING_68": "谷物(Grain & Cereal)", + "CUPPING_69": "Sweet bread pastry", + "CUPPING_70": "格兰诺拉麦片(Granola)", + "CUPPING_71": "全麦饼干(Graham cracker)", + "CUPPING_72": "黑麦(Rye)", + "CUPPING_73": "小麦(Wheat)", + "CUPPING_74": "大麦(Barley)", + "CUPPING_75": "新鲜面包(Fresh bread)", + "CUPPING_76": "甜味和糖类(Sweet & Sugary)", + "CUPPING_77": "香草(Vanila)", + "CUPPING_78": "牛轧糖(Nougat)", + "CUPPING_79": "蜂蜜(Honey)", + "CUPPING_80": "黄油(Butter)", + "CUPPING_81": "奶油(Cream)", + "CUPPING_82": "棉花糖(Marshmallow)", + "CUPPING_83": "甘蔗(Sugarcane)", + "CUPPING_84": "红糖(Brown sugar)", + "CUPPING_85": "焦糖(Caramel)", + "CUPPING_86": "枫糖浆(Maple syrup)", + "CUPPING_87": "糖浆(Molasses)", + "CUPPING_88": "可乐(Cola)", + "CUPPING_89": "烘焙(Roast)", + "CUPPING_90": "吐司(Toast)", + "CUPPING_91": "焦糖(Burnt sugar)", + "CUPPING_92": "烟熏(Smokey)", + "CUPPING_93": "木炭(Carbon)", + "CUPPING_94": "植物、咸味食物和香料(Vegetal, Savory & Spices)", + "CUPPING_95": "香料(Spice)", + "CUPPING_96": "黑胡椒(Black pepper)", + "CUPPING_97": "白胡椒(White pepper)", + "CUPPING_98": "肉桂(Cinnamon)", + "CUPPING_99": "芫荽、香菜(Coriander)", + "CUPPING_100": "生姜(Ginger)", + "CUPPING_101": "肉豆蔻(Nutmeg)", + "CUPPING_102": "咖喱(Curry)", + "CUPPING_103": "甘草-茴香Licorice-anise", + "CUPPING_104": "丁香(Clove)", + "CUPPING_105": "咸味食物(Savory)", + "CUPPING_106": "皮革味(Leathery)", + "CUPPING_107": "肉味(Meat-like)", + "CUPPING_108": "酱油(Soy sauce)", + "CUPPING_109": "番茄干(Sundried tomato)", + "CUPPING_110": "番茄(Tomato)", + "CUPPING_111": "植物泥土草药(Vegetal Earthy Herb)", + "CUPPING_112": "土壤(Soil)", + "CUPPING_113": "新鲜木材(Fresh wood)", + "CUPPING_114": "雪松(Cedar)", + "CUPPING_115": "烟草(Tobacco)", + "CUPPING_116": "干草\/稻草(Hay \/ straw)", + "CUPPING_117": "绿叶蔬菜(Leafy greens)", + "CUPPING_118": "橄榄(Olive)", + "CUPPING_119": "青椒(Green pepper)", + "CUPPING_120": "南瓜(Squash)", + "CUPPING_121": "蘑菇(Mushroom)", + "CUPPING_122": "甜豌豆(Sweet pea)", + "CUPPING_123": "荷兰豆(Snow pea)", + "CUPPING_124": "草(Grassy)", + "CUPPING_125": "茴香(Dill)", + "CUPPING_126": "鼠尾草(Sage)", + "CUPPING_127": "薄荷(Mint)", + "CUPPING_128": "绿茶(Green tea)", + "CUPPING_129": "红茶(Black tea)", + "CUPPING_130": "啤酒花(Hops)", + "CUPPING_131": "佛手柑(Bergamot)", + "CUPPING_132": "花类(Flowery)", + "CUPPING_133": "花(Floral)", + "CUPPING_134": "木槿花(Hibiscus)", + "CUPPING_135": "蔷薇果(Rose hips)", + "CUPPING_136": "薰衣草(Lavender)", + "CUPPING_137": "木兰花(Magnolia)", + "CUPPING_138": "茉莉、金银花(Jasmine honeysuckle)", + "CUPPING_139": "橙花(Orange blossom)", + "CUPPING_140": "香茅(Lemongrass)", + "WATER_SECTION": { + "NAV_WATER": "水质", + "YOU_GOT_NO_ARCHIVED_WATER": "你还没有归档任何水质", + "YOU_GOT_NO_WATER": "你还没有添加任何水质", + "CATEGORY_INFORMATION": "水质信息", + "CATEGORY_GENERAL": "常规", + "WATER_BOTTLE_EXPLANATION": "水质通常以 ppm = mg\/L 为单位表示浓度", + "USED_TIMES": "使用次数", + "AMOUNT": "使用量", + "WATER": { + "GENERAL_HARDNESS": "一般硬度 (GH)", + "TOTAL_ALKALINITY": "总碱度 (KH)", + "CALCIUM": "钙 (Ca)", + "MAGNESIUM": "镁 (Mg)", + "SODIUM": "钠 (Na)", + "TDS": "总溶解固体 (TDS)", + "UNITS": "单位", + "PLACE_HOLDER": { + "GENERAL_HARDNESS": "一般硬度", + "TOTAL_ALKALINITY": "总碱度", + "CALCIUM": "钙 (Ca)", + "MAGNESIUM": "镁 (Mg)", + "SODIUM": "钠 (Na)", + "TDS": "总溶解固体 (TDS)", + "NAME": "添加水的名称", + "NOTES": "为水质添加注释", + "POTASSIUM": "钾 (K)" + }, + "WATER_UNIT": { + "UNKNOWN": "不清楚", + "PPM": "以CaCO3计量ppm", + "MG_L": "mg\/L", + "MMOL_L": "mmol\/L", + "DH": "°dH" + }, + "POTASSIUM": "钾 (K)" + } }, - "BEAN": { - "DROP_TEMPERATURE": "烘焙的最终温度", - "ROAST_LENGTH": "烘焙时长", - "ROASTER_MACHINE": "烘焙机", - "GREEN_BEAN_WEIGHT": "生豆重量", - "OUTSIDE_TEMPERATURE": "气温", - "HUMIDITY": "湿度", - "FIRST_CRACK_MINUTE": "一爆分钟", - "FIRST_CRACK_TEMPERATURE": "一爆温度", - "SECOND_CRACK_MINUTE": "二爆分钟", - "SECOND_CRACK_TEMPERATURE": "二爆温度", - "PLACE_HOLDER": { - "DROP_TEMPERATURE": "烘焙的最终温度", - "ROAST_LENGTH": "烘焙时长", - "ROASTER_MACHINE": "烘焙机", - "GREEN_BEAN_WEIGHT": "生豆重量", - "OUTSIDE_TEMPERATURE": "气温", - "HUMIDITY": "湿度", - "FIRST_CRACK_MINUTE": "一爆分钟", - "FIRST_CRACK_TEMPERATURE": "一爆温度", - "SECOND_CRACK_TEMPERATURE": "二爆温度", - "SECOND_CRACK_MINUTE": "二爆分钟" - } - } - }, - "PAGE_SETTINGS_MANAGE_SECTIONS": "更多选项卡", - "PAGE_SETTINGS_SHOW_ROASTING_SECTION": "启用烘焙选项卡", - "PAGE_SETTINGS_SHOW_WATER_SECTION": "启用水质选项卡", - "PAGE_SETTINGS_SHOW_CUPPING_SECTION": "启用杯测选项", - "BEAN_DATA_BUY_DATE": "购买日期", - "BEAN_SORT_CREATION_DATE": "创建日期", - "BEAN_SORT_PURCHASE_DATE": "购买日期", - "BEAN_ROAST_COUNT": "烘焙度", - "TRANSFER_ROAST": "烘焙", - "BEAN_TAB_LINKED_ROASTS": "烘焙", - "BEAN_DATA_WEIGHT_AFTER_ROASTING": "烘焙后的重量", - "TOAST_GREEN_BEAN_ADDED_SUCCESSFULLY": "生豆已添加成功", - "TOAST_GREEN_BEAN_EDITED_SUCCESSFULLY": "生豆已编辑成功", - "TOAST_GREEN_BEAN_ARCHIVED_SUCCESSFULLY": "生豆已归档成功", - "TOAST_ROASTING_MACHINE_ADDED_SUCCESSFULLY": "烘焙机已添加成功", - "TOAST_ROASTING_MACHINE_EDITED_SUCCESSFULLY": "烘焙机已编辑成功", - "TOAST_ROASTING_MACHINE_ARCHIVED_SUCCESSFULLY": "烘焙机已归档成功", - "DELETE_ROASTING_MACHINE_QUESTION": "删除烘焙机?所有相关已经烘焙后的咖啡豆都将更新,不会被删除", - "TOAST_ROASTING_MACHINE_DELETED_SUCCESSFULLY": "烘焙机已删除成功", - "EDIT_ROASTING_MACHINE": "编辑", - "DETAIL_ROASTING_MACHINE": "烘焙详情", - "DELETE_WATER_QUESTION": "删除水质?所有相关已经烘焙后的咖啡豆都将更新,不会被删除", - "ROASTING_MACHINE": { - "PLACE_HOLDER": { - "NAME": "添加名称", - "NOTES": "为烘焙机添加注释" - } - }, - "NAV_ROASTING_MACHINE": "烘焙机", - "PAGE_ROASTING_MACHINE_LIST_NO_MACHINES_EXISTING": "您没有添加任何烘焙机", - "PAGE_ROASTING_MACHINE_LIST_NO_ARCHIVED_MACHINES_EXISTING": "您没有归档任何烘焙机", - "CHOOSE_ROASTING_MACHINES": "选择烘焙机", - "CHOOSE_ROASTING_MACHINE": "选择烘焙机", - "POPOVER_BREWS_OPTION_TOGGLE_FAVOURITE": "喜爱", - "TOAST_BREW_FAVOURITE_ADDED": "已添加为喜爱", - "TOAST_BREW_FAVOURITE_REMOVED": "已从喜爱中删除", - "BREW_FILTER_JUST_FAVOURITE": "喜爱", - "STATISTICS_PREPARATION_USAGES": "器具用途", - "STATISTICS_PREPARATION_TIMELINE_USAGES": "器具的使用历史", - "STATISTICS_GRINDER_TIMELINE_USAGES": "研磨机的使用历史", - "ACCEPT": "接受", - "STATISTIC_TAB_GENERAL": "常规", - "STATISTIC_TAB_BREWS": "冲泡", - "STATISTIC_TAB_BEANS": "咖啡豆", - "STATISTIC_TAB_PREPARATIONS": "冲泡器具", - "STATISTIC_TAB_GRINDERS": "研磨机", - "PAGE_STATISTICS_BREW_PER_DAYPROCESSES": "每天冲泡", - "PAGE_STATISTICS_BREW_TIME": "冲泡时间", - "PAGE_STATISTICS_PHOTOS_TAKEN": "拍摄的照片", - "PAGE_SETTINGS_IMAGE_QUALITY": "图像质量", - "PAGE_SETTINGS_IMAGE_QUALITY_TOOLTIP": "定义图像加载质量,这可以降低您的数据使用量。", - "PAGE_SETTINGS_BREW_RATING": "冲泡评分", - "PAGE_SETTINGS_BREW_RATING_TOOLTIP": "对冲泡进行-1到5分的评分太少了吗?你最高可以设置到100的评分区间", - "UPDATE_ENTRY_OF": "Update entry {{index}} of {{count}}", - "WEBSITE": "网站", - "SHARE": "分享", - "ANDROID_FILE_ACCESS_NEEDED_TITLE": "需要授权文件访问权限", - "ANDROID_FILE_ACCESS_NEEDED_DESCRIPTION": "为了让应用程序充分发挥作用,我们需要您授权文件访问。 否则应用程序内会有部分功能受限。 这是自动备份功能所需要的权限。", - "COULD_NOT_ACCESS_FILE": "我们无法访问所选文件", - "WRONG_FILE_FORMAT": "您选择了不受支持的文件格式", - "SCAN_BEAN": "扫描包", - "CLEAR": "清除", - "BEAN_LOOKS_LIKE_CONSUMED": "这包咖啡豆看起来已经完全消耗了,要将它归档吗?", - "CUPPING_1": "水果(Fruit)", - "CUPPING_2": "柑橘类(Citrus)", - "CUPPING_3": "柠檬和柠檬水(Lemo)", - "CUPPING_4": "酸橙(Lime)", - "CUPPING_5": "西柚(Grapefruit)", - "CUPPING_6": "小柑橘(Clementine)", - "CUPPING_7": "柑橘(Tangerine)", - "CUPPING_8": "砂糖橘(Mandarin orange)", - "CUPPING_9": "橙子(Orange)", - "CUPPING_10": "苹果\/梨(Apple\/pear)", - "CUPPING_11": "绿苹果(Green apple)", - "CUPPING_12": "红苹果(Red apple)", - "CUPPING_13": "瓜(Melon)", - "CUPPING_14": "西瓜(Watermelon)", - "CUPPING_15": "甜瓜(Honeydew)", - "CUPPING_16": "哈密瓜(Cantaloupe)", - "CUPPING_17": "葡萄(Grape)", - "CUPPING_18": "白葡萄(White grape)", - "CUPPING_19": "绿葡萄(Green grape)", - "CUPPING_20": "红葡萄(Red grape)", - "CUPPING_21": "康科德葡萄(Concord grape)", - "CUPPING_22": "热带水果(Tropical fruit)", - "CUPPING_23": "荔枝(Lychee)", - "CUPPING_24": "杨桃(Star fruit)", - "CUPPING_25": "酸角(Tamarind)", - "CUPPING_26": "百香果(Passion fruit)", - "CUPPING_27": "菠萝(Pineapple)", - "CUPPING_28": "芒果(Mango)", - "CUPPING_29": "木瓜(Papaya)", - "CUPPING_30": "猕猴桃(Kiwi)", - "CUPPING_31": "香蕉(Banana)", - "CUPPING_32": "椰子(Coconut)", - "CUPPING_33": "核果(Stone fruit)", - "CUPPING_34": "桃子(Peach)", - "CUPPING_35": "油桃(Nectarine)", - "CUPPING_36": "杏(Apricot)", - "CUPPING_37": "李子(Plum)", - "CUPPING_38": "樱桃(Cherry)", - "CUPPING_39": "黑樱桃(Black cherry)", - "CUPPING_40": "浆果类(Berry)", - "CUPPING_41": "蔓越莓(Cranberry)", - "CUPPING_42": "覆盆子(Raspberry)", - "CUPPING_43": "草莓(Strawberry)", - "CUPPING_44": "蓝莓(Blueberry)", - "CUPPING_45": "红加仑(Red currant)", - "CUPPING_46": "黑加仑(Black currant)", - "CUPPING_47": "干果类(Dried fruit)", - "CUPPING_48": "红葡萄干(Golden raisin)", - "CUPPING_49": "葡萄干(Raisin)", - "CUPPING_50": "无花果干(Dried fig)", - "CUPPING_51": "枣干(ried dates)", - "CUPPING_52": "梅干(Prune)", - "CUPPING_53": "甜味和烘培(Sweet & Roasting Notes)", - "CUPPING_54": "巧克力(Chocolate)", - "CUPPING_55": "可可碎(Cacao nibs)", - "CUPPING_56": "黑巧(Dark chocolate)", - "CUPPING_57": "贝克巧克力(Bakers chocolate)", - "CUPPING_58": "苦甜巧克力(Bittersweet chocolate)", - "CUPPING_59": "可可粉(Cocoa powder)", - "CUPPING_60": "牛奶巧克力(Milk chocolate)", - "CUPPING_61": "坚果类(Nut)", - "CUPPING_62": "核桃(Walnut)", - "CUPPING_63": "花生(Peanut)", - "CUPPING_64": "腰果(Cashew)", - "CUPPING_65": "山核桃(Pecan)", - "CUPPING_66": "榛子(Hazelnut)", - "CUPPING_67": "杏仁(Almond)", - "CUPPING_68": "谷物(Grain & Cereal)", - "CUPPING_69": "Sweet bread pastry", - "CUPPING_70": "格兰诺拉麦片(Granola)", - "CUPPING_71": "全麦饼干(Graham cracker)", - "CUPPING_72": "黑麦(Rye)", - "CUPPING_73": "小麦(Wheat)", - "CUPPING_74": "大麦(Barley)", - "CUPPING_75": "新鲜面包(Fresh bread)", - "CUPPING_76": "甜味和糖类(Sweet & Sugary)", - "CUPPING_77": "香草(Vanila)", - "CUPPING_78": "牛轧糖(Nougat)", - "CUPPING_79": "蜂蜜(Honey)", - "CUPPING_80": "黄油(Butter)", - "CUPPING_81": "奶油(Cream)", - "CUPPING_82": "棉花糖(Marshmallow)", - "CUPPING_83": "甘蔗(Sugarcane)", - "CUPPING_84": "红糖(Brown sugar)", - "CUPPING_85": "焦糖(Caramel)", - "CUPPING_86": "枫糖浆(Maple syrup)", - "CUPPING_87": "糖浆(Molasses)", - "CUPPING_88": "可乐(Cola)", - "CUPPING_89": "烘焙(Roast)", - "CUPPING_90": "吐司(Toast)", - "CUPPING_91": "焦糖(Burnt sugar)", - "CUPPING_92": "烟熏(Smokey)", - "CUPPING_93": "木炭(Carbon)", - "CUPPING_94": "植物、咸味食物和香料(Vegetal, Savory & Spices)", - "CUPPING_95": "香料(Spice)", - "CUPPING_96": "黑胡椒(Black pepper)", - "CUPPING_97": "白胡椒(White pepper)", - "CUPPING_98": "肉桂(Cinnamon)", - "CUPPING_99": "芫荽、香菜(Coriander)", - "CUPPING_100": "生姜(Ginger)", - "CUPPING_101": "肉豆蔻(Nutmeg)", - "CUPPING_102": "咖喱(Curry)", - "CUPPING_103": "甘草-茴香Licorice-anise", - "CUPPING_104": "丁香(Clove)", - "CUPPING_105": "咸味食物(Savory)", - "CUPPING_106": "皮革味(Leathery)", - "CUPPING_107": "肉味(Meat-like)", - "CUPPING_108": "酱油(Soy sauce)", - "CUPPING_109": "番茄干(Sundried tomato)", - "CUPPING_110": "番茄(Tomato)", - "CUPPING_111": "植物泥土草药(Vegetal Earthy Herb)", - "CUPPING_112": "土壤(Soil)", - "CUPPING_113": "新鲜木材(Fresh wood)", - "CUPPING_114": "雪松(Cedar)", - "CUPPING_115": "烟草(Tobacco)", - "CUPPING_116": "干草\/稻草(Hay \/ straw)", - "CUPPING_117": "绿叶蔬菜(Leafy greens)", - "CUPPING_118": "橄榄(Olive)", - "CUPPING_119": "青椒(Green pepper)", - "CUPPING_120": "南瓜(Squash)", - "CUPPING_121": "蘑菇(Mushroom)", - "CUPPING_122": "甜豌豆(Sweet pea)", - "CUPPING_123": "荷兰豆(Snow pea)", - "CUPPING_124": "草(Grassy)", - "CUPPING_125": "茴香(Dill)", - "CUPPING_126": "鼠尾草(Sage)", - "CUPPING_127": "薄荷(Mint)", - "CUPPING_128": "绿茶(Green tea)", - "CUPPING_129": "红茶(Black tea)", - "CUPPING_130": "啤酒花(Hops)", - "CUPPING_131": "佛手柑(Bergamot)", - "CUPPING_132": "花类(Flowery)", - "CUPPING_133": "花(Floral)", - "CUPPING_134": "木槿花(Hibiscus)", - "CUPPING_135": "蔷薇果(Rose hips)", - "CUPPING_136": "薰衣草(Lavender)", - "CUPPING_137": "木兰花(Magnolia)", - "CUPPING_138": "茉莉、金银花(Jasmine honeysuckle)", - "CUPPING_139": "橙花(Orange blossom)", - "CUPPING_140": "香茅(Lemongrass)", - "WATER_SECTION": { - "NAV_WATER": "水质", - "YOU_GOT_NO_ARCHIVED_WATER": "你还没有归档任何水质", - "YOU_GOT_NO_WATER": "你还没有添加任何水质", - "CATEGORY_INFORMATION": "水质信息", - "CATEGORY_GENERAL": "常规", - "WATER_BOTTLE_EXPLANATION": "水质通常以 ppm = mg\/L 为单位表示浓度", - "USED_TIMES": "使用次数", - "AMOUNT": "使用量", - "WATER": { - "GENERAL_HARDNESS": "一般硬度 (GH)", - "TOTAL_ALKALINITY": "总碱度 (KH)", - "CALCIUM": "钙 (Ca)", - "MAGNESIUM": "镁 (Mg)", - "SODIUM": "钠 (Na)", - "TDS": "总溶解固体 (TDS)", - "UNITS": "单位", - "PLACE_HOLDER": { - "GENERAL_HARDNESS": "一般硬度", - "TOTAL_ALKALINITY": "总碱度", - "CALCIUM": "钙 (Ca)", - "MAGNESIUM": "镁 (Mg)", - "SODIUM": "钠 (Na)", - "TDS": "总溶解固体 (TDS)", - "NAME": "添加水的名称", - "NOTES": "为水质添加注释", - "POTASSIUM": "钾 (K)" - }, - "WATER_UNIT": { - "UNKNOWN": "不清楚", - "PPM": "以CaCO3计量ppm", - "MG_L": "mg\/L", - "MMOL_L": "mmol\/L", - "DH": "°dH" - }, - "POTASSIUM": "钾 (K)" - } - }, - "BREW_BRIX_CALCULATION": "白利糖度", - "SET_TDS": "设置 tds", - "TOTAL_WEIGHT": "总重量", - "CALCULATED_WEIGHT": "计算重量", - "SET_WEIGHT": "设置重量", - "ADD_FLAVORS_AROMAS_TITLE": "香气\/风味", - "CUSTOM_FLAVORS_AROMAS": "自定义香气", - "CUSTOM_FLAVORS_AROMAS_PLACEHOLDER": "以自己的语言描述它的香气", - "PREDEFINED_FLAVORS_AROMAS": "常见的香气", - "ADD_AROMA_FLAVOR": "添加香气\/风味", - "BEAN_WEIGHT_IN_PLACEHOLDER": "从咖啡包装中取出的咖啡豆", - "VESSEL_PLACEHOLDER": "容器名和净重", - "GRIND_WEIGHT_PLACEHOLDER": "用于冲泡的咖啡粉的重量", - "PRESET_BREW_TITLE": "使用最后一次冲泡作为预设", - "CUPPING_BREW_TAB_AROMA": "香气", - "CUPPING_BREW_TAB_TASTING": "评分", - "WATER_PLACEHOLDER": "如需完整功能,请在设置菜单中激活水质部分", - "PAGE_SETTINGS_SCALES": "电子秤", - "CONNECT": "连接", - "DISCONNECT": "断开连接", - "SCALE": { - "BLUETOOTH_SCAN_RUNNING": "正在搜索附件的电子秤, 请稍等60秒", - "BLUETOOTH_NOT_ENABLED": "未开启蓝牙,请开启蓝牙以进行搜索", - "CONNECTION_NOT_ESTABLISHED": "附近找不到电子秤或是无法建立连接", - "CONNECTED_SUCCESSFULLY": "电子秤已连接", - "DISCONNECTED_SUCCESSFULLY": "电子秤已断开连接", - "DISCONNECTED_UNPLANNED": "电子秤意外断开", - "REQUEST_PERMISSION": { - "LOCATION": "软件需要位置权限来搜索电子秤", - "BLUETOOTH": "软件需要蓝牙权限来搜索电子秤" + "BREW_BRIX_CALCULATION": "白利糖度", + "SET_TDS": "设置 tds", + "TOTAL_WEIGHT": "总重量", + "CALCULATED_WEIGHT": "计算重量", + "SET_WEIGHT": "设置重量", + "ADD_FLAVORS_AROMAS_TITLE": "香气\/风味", + "CUSTOM_FLAVORS_AROMAS": "自定义香气", + "CUSTOM_FLAVORS_AROMAS_PLACEHOLDER": "以自己的语言描述它的香气", + "PREDEFINED_FLAVORS_AROMAS": "常见的香气", + "ADD_AROMA_FLAVOR": "添加香气\/风味", + "BEAN_WEIGHT_IN_PLACEHOLDER": "从咖啡包装中取出的咖啡豆", + "VESSEL_PLACEHOLDER": "容器名和净重", + "GRIND_WEIGHT_PLACEHOLDER": "用于冲泡的咖啡粉的重量", + "PRESET_BREW_TITLE": "使用最后一次冲泡作为预设", + "CUPPING_BREW_TAB_AROMA": "香气", + "CUPPING_BREW_TAB_TASTING": "评分", + "WATER_PLACEHOLDER": "如需完整功能,请在设置菜单中激活水质部分", + "PAGE_SETTINGS_SCALES": "电子秤", + "CONNECT": "连接", + "DISCONNECT": "断开连接", + "SCALE": { + "BLUETOOTH_SCAN_RUNNING": "正在搜索附件的电子秤, 请稍等60秒", + "BLUETOOTH_NOT_ENABLED": "未开启蓝牙,请开启蓝牙以进行搜索", + "CONNECTION_NOT_ESTABLISHED": "附近找不到电子秤或是无法建立连接", + "CONNECTED_SUCCESSFULLY": "电子秤已连接", + "DISCONNECTED_SUCCESSFULLY": "电子秤已断开连接", + "DISCONNECTED_UNPLANNED": "电子秤意外断开", + "REQUEST_PERMISSION": { + "LOCATION": "软件需要位置权限来搜索电子秤", + "BLUETOOTH": "软件需要蓝牙权限来搜索电子秤" + }, + "INFORMATION_DESCRIPTION": "支持的电子秤: Decent 电子秤, Acaia 电子秤, Felicita 电子秤以及 Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti, Smartchef Scale (V1), Blackcoffee.io, Bookoo Mini Scale and Eureka Precisa. Care: If the Eureka Precisa recieves a negative value, the timer stops" }, - "INFORMATION_DESCRIPTION": "支持的电子秤: Decent 电子秤, Acaia 电子秤, Felicita 电子秤以及 Hiroia Jimmy, Skale 2, DiFluid Microbalance, DiFluid Microbalance Ti, Smartchef Scale (V1), Blackcoffee.io and Eureka Precisa. Care: If the Eureka Precisa recieves a negative value, the timer stops" - }, - "QR": { - "WRONG_QRCODE_DESCRIPTION": "错误的二维码或错误的内容", - "WRONG_QRCODE_TITLE": "错误", - "WRONG_LINK_DESCRIPTION": "错误的应用链接", - "WRONG_LINK_TITLE": "错误", - "SERVER": { - "ERROR_OCCURED": "出现错误,无法读取二维码,请重试。", - "BEAN_NOT_APPROVED": "Bean has not been approved yet, please try later again" + "QR": { + "WRONG_QRCODE_DESCRIPTION": "错误的二维码或错误的内容", + "WRONG_QRCODE_TITLE": "错误", + "WRONG_LINK_DESCRIPTION": "错误的应用链接", + "WRONG_LINK_TITLE": "错误", + "SERVER": { + "ERROR_OCCURED": "出现错误,无法读取二维码,请重试。", + "BEAN_NOT_APPROVED": "Bean has not been approved yet, please try later again" + }, + "BEAN_SUCCESSFULLY_SCANNED": "咖啡豆扫描成功", + "BEAN_SUCCESSFULLY_REFRESHED": "Bean successfully refreshed", + "IMAGES_GETTING_DOWNLOADED": "正在下载的图像" }, - "BEAN_SUCCESSFULLY_SCANNED": "咖啡豆扫描成功", - "BEAN_SUCCESSFULLY_REFRESHED": "Bean successfully refreshed", - "IMAGES_GETTING_DOWNLOADED": "正在下载的图像" - }, - "RETRY_CONNECT": "重试连接", - "SMART_SCALE_STAY_CONNECTED_ON_APP_MINIMIZE": "即使应用程序被最小化\/非活动状态,也让电子秤连接", - "BREW_FLOW_WEIGHT": "重量", - "BREW_FLOW_WEIGHT_PER_SECOND": "流速", - "ROAST_TYPE_UNKNOWN": "不清楚", - "ROAST_TYPE_CINNAMON_ROAST": "浅烘焙(Cimon Roast)", - "ROAST_TYPE_AMERICAN_ROAST": "美式烘焙(American Roast)", - "ROAST_TYPE_NEW_ENGLAND_ROAST": "新英格兰烘焙(New England Roast)", - "ROAST_TYPE_HALF_CITY_ROAST": "半城市烘焙(Half City Roast)", - "ROAST_TYPE_MODERATE_LIGHT_ROAST": "Moderate-Light Roast", - "ROAST_TYPE_CITY_ROAST": "中深度烘焙(City Roast)", - "ROAST_TYPE_CITY_PLUS_ROAST": "City+ Roast", - "ROAST_TYPE_FULL_CITY_ROAST": "微深度烘焙(Full City Roast)", - "ROAST_TYPE_FULL_CITY_PLUS_ROAST": "深度烘焙(Full City + Roast)", - "ROAST_TYPE_ITALIAN_ROAST": "极深度烘焙(Italian Roast)", - "ROAST_TYPE_VIEANNA_ROAST": "维也纳烘焙(Vienna Roast)", - "ROAST_TYPE_FRENCH_ROAST": "法式烘焙(French Roast)", - "ROAST_TYPE_CUSTOM_ROAST": "自定义", - "BEAN_MIX_UNKNOWN": "不清楚", - "BEAN_MIX_SINGLE_ORIGIN": "单一产地", - "BEAN_MIX_BLEND": "拼配", - "BEAN_ROASTING_TYPE_FILTER": "滴滤式\/Filter", - "BEAN_ROASTING_TYPE_ESPRESSO": "意式浓缩\/Espresso", - "BEAN_ROASTING_TYPE_OMNI": "均可\/Omni", - "BEAN_ROASTING_TYPE_UNKNOWN": "不清楚", - "SMART_SCALE_LOG": "为智能电子秤激活日志文件(仅用于发送日志进行调试)", - "TOAST_PREPARATION_TOOL_EDITED_SUCCESSFULLY": "杯测工具编辑", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE": "蓝牙电子秤", - "PAGE_SETTINGS_TAB_GENERAL": "常规", - "SMART_SCALE_TARE_ON_BREW": "在开始新的冲泡时去皮", - "SMART_SCALE_TARE_ON_START_TIMER": "当定时器启动时去皮", - "PAGE_SETTINGS_BREW_RATING_STEPS": "评级步骤", - "BREW_AVG_FLOW_WEIGHT_PER_SECOND": "Ø 流速", - "CUSTOM_LIST_VIEW_PARAMETERS": "列表视图参数", - "NAV_LIST_VIEW_CUSTOM_PARAMETERS": "列表视图参数", - "PAGE_LIST_VIEW_CUSTOM_PARAMETERS_DESCRIPTION": "决定你的咖啡冲泡的哪个参数,应该显示在列表视图上", - "BREW_DATA_VESSEL_NAME_WEIGHT": "容器 名称\/重量", - "IGNORE_NEGATIVE_VALUES": "忽略负重量值", - "IGNORE_ANOMALY_VALUES": "忽略异常值", - "IGNORE_ANOMALY_VALUES_TOOLTIP": "例如:在秤上旋转杯子", - "TOAST_BEAN_FAVOURITE_ADDED": "喜爱已添加", - "TOAST_BEAN_FAVOURITE_REMOVED": "喜爱已移除", - "QR_CODE_SCANNER_INFORMATION_TITLE": "二维码", - "QR_CODE_SCANNER_INFORMATION_DESCRIPTION": "所有扫描的咖啡豆信息都直接来自烘焙店。 如果您发现错误或误导性信息,请通过电子邮件通知我: info@beanconqueror.com.", - "DONT_SHOW_AGAIN": "不再显示", - "ARCHIVED_TOOLS": "归档工具", - "UNARCHIVE": "取消归档", - "PAGE_SETTINGS_HIDE_ARCHIVED_BREWS_DASHBOARD": "在仪表盘上显示已归档的冲泡", - "PAGE_SETTINGS_HIDE_ARCHIVED_BREWS_DASHBOARD_DESCRIPTION": "已归档的冲泡应该显示在主页上吗?", - "COPY": "复制", - "TOAST_PREPARATION_METHOD_REPEATED_SUCCESSFULLY": "杯测方法复制成功", - "PREPARATION_TYPE_CAFEC_FLOWER": "Cafec 花辦滤杯(Cafec Flower)", - "PREPARATION_TYPE_DECEMBER_DRIPPER": "December 可调咖啡滤杯(December Dripper)", - "PREPARATION_TYPE_DECENT_ESPRESSO": "Decent Espresso", - "PREPARATION_TYPE_HARIO_SWITCH": "Hario Switch 聪明杯", - "PREPARATION_TYPE_HARIO_WOODNECK": "Hario Woodneck 滤布", - "PREPARATION_TYPE_RATIO_SIX_COFFEE_BREWER": "Ratio Six Coffee Brewer", - "PREPARATION_TYPE_ROK": "ROK 手压咖啡机", - "PREPARATION_TYPE_TORNADO_DUO": "Tornado Duo", - "PREPARATION_TYPE_TRICOLATE": "Tricolate 聪明杯", - "QR_CODE_REFRESH_DATA_MESSAGE": "咖啡豆的所有信息将会被修改,现在开始?", - "POPOVER_QR_CODE_REFRESH": "重载数据", - "BREW_FLOW_WEIGHT_REALTIME": "Flow (真实时间)", - "SMART_SCALE_STOP_TIMER_ON_BREW": "在新的冲泡时停止电子秤计时", - "SMART_SCALE_RESET_TIMER_ON_BREW": "在新的冲泡时重置电子秤计时", - "BREW_PRESSURE_FLOW": "压强设备", - "BREW_TEMPERATURE_REALTIME": "温度", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_SHOW_GRAPHS_FILTER": "展示手冲图表", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_SHOW_GRAPHS_ESPRESSO": "展示意式浓缩图表", - "PAGE_SETTINGS_TAB_BLUETOOTH_PRESSURE": "压强设备", - "PAGE_SETTINGS_TAB_BLUETOOTH_TEMPERATURE": "温度设备", - "PRESSURE_LOG": "启用压强设备日志", - "PRESSURE_THRESHOLD_ACTIVE": "在预定义压强开始计时", - "PRESSURE_THRESHOLD_BAR": "压强阈值", - "TIMER_MILLISECONDS": "毫秒", - "PAGE_SETTINGS_BREW_ENABLE_MILLISECONDS": "毫秒?", - "PAGE_SETTINGS_BREW_ENABLE_MILLISECONDS_DESCRIPTION": "使用毫秒更精准的分析每次冲泡", - "PAGE_SETTINGS_BEAN_RATING": "咖啡豆评分", - "PAGE_SETTINGS_BEAN_RATING_TOOLTIP": "五分制不适合你的话可以使用百分制", - "PAGE_SETTINGS_BEAN_RATING_STEPS": "咖啡豆评分间隔", - "COFFEE_GRAMS_BREWED": "冲泡克数", - "SMART_SCALE_MAXIMIZE_ON_START_TIMER": "开始计时图表中的最大真实时间", - "PRESSURE": { - "CONNECTION_NOT_ESTABLISHED": "没找到压强设备或者没有建立连接", - "CONNECTED_SUCCESSFULLY": "压强设备已连接", - "DISCONNECTED_SUCCESSFULLY": "压强设备未连接", - "DISCONNECTED_UNPLANNED": "压强设备意外断开连接", - "STAY_CONNECTED_ON_APP_MINIMIZE": "即使应用在后台也保持压强设备的连接", - "INFORMATION_DESCRIPTION": "支持设备: Popsicle, Pressensor, Smart Espresso Profiler", - "BLUETOOTH_SCAN_RUNNING": "压强设备搜索将会花费60秒, 稍等", - "BLUETOOTH_NOT_ENABLED": "蓝牙未开启,请开启以正常工作", - "REQUEST_PERMISSION": { - "LOCATION": "应用需要位置权限以搜索压强设备", - "BLUETOOTH": "应用需要蓝牙权限以搜索压强设备" - } - }, - "POPOVER_BLUETOOTH_ACTION_RECONNECT_SCALE": "重连电子秤", - "POPOVER_BLUETOOTH_ACTION_RECONNECT_PRESSURE_DEVICE": "重连压强设备", - "POPOVER_SHOW_BREWS": "显示冲泡", - "LAST_USED_GRIND_SIZE_SETTING": "上次研磨设置", - "LAST_USED_BEAN": "上次的咖啡豆", - "PAGE_SETTINGS_BREW_MILLISECONDS_DECIMAL_PLACES_DESCRIPTION": "显示多少位小数?", - "SMART_SCALE_COMMAND_DELAY": "命令延迟", - "SMART_SCALE_COMMAND_DELAY_TOOLTIP": "相邻蓝牙命令之间应间隔多少时间?", - "SUPPORT_ME": "捐助", - "PAGE_SETTINGS_BREW_DISPLAY_BEAN_IMAGE": "显示咖啡豆图片吗?", - "PAGE_SETTINGS_BREW_DISPLAY_BEAN_IMAGE_DESCRIPTION": "如果存在咖啡豆图像将使用该图像,而不是预置图像", - "DOWNLOAD_XLSX": "下载 excel", - "DOWNLOAD_JSON": "下载 JSON", - "NAV_BEAN_PARAMS": "咖啡豆参数", - "BEAN_DATA_ROAST_NAME_TYPE": "烘焙类型", - "ENABLE_BEAN_SORT_INFORMATION": "启用品种信息", - "BEAN_SORT_MIX": "咖啡豆混合", - "PAGE_MANAGE_BEAN_PARAMETERS_DESCRIPTION": "编辑咖啡豆信息时要显示的参数。", - "PAGE_BEAN_LIST_VIEW_CUSTOM_PARAMETERS_DESCRIPTION": "决定在列表上显示哪些咖啡豆参数。", - "BEAN_DATA_NAME_TOOLTIP": "咖啡豆包装上的名称", - "BEAN_DATA_ROASTER_TOOLTIP": "谁烘焙了这些咖啡豆", - "BEAN_DATA_BUY_DATE_TOOLTIP": "购买咖啡豆的日期", - "BEAN_DATA_ROASTING_DATE_TOOLTIP": "咖啡豆的烘焙日期", - "BEAN_DATA_ROASTING_TYPE_TOOLTIP": "此咖啡豆烘焙用于哪种冲泡方式,例如滤泡", - "BEAN_DATA_ROAST_NAME_TOOLTIP": "咖啡豆的烘焙程度是多少", - "BEAN_DATA_ROAST_NAME_TYPE_TOOLTIP": "烘焙类型是什么?(肉桂,新英格兰等)", - "BREW_DATA_RATING_TOOLTIP": "您的评分", - "BEAN_SORT_MIX_TOOLTIP": "这是否为混合咖啡豆?", - "BEAN_DATA_WEIGHT_TOOLTIP": "咖啡豆的重量", - "BEAN_DATA_COST_TOOLTIP": "咖啡豆的价格", - "BEAN_DATA_AROMATICS_TOOLTIP": "这种咖啡豆有哪些香气\/口味", - "BEAN_DATA_CUPPING_POINTS_TOOLTIP": "这种咖啡豆的杯测分数", - "BEAN_DATA_DECAFFEINATED_TOOLTIP": "这款咖啡豆是否已去咖啡因?", - "BEAN_DATA_URL_TOOLTIP": "购物网站的 URL, 例如", - "BEAN_DATA_EAN_TOOLTIP": "The ean\/article number", - "NOTES_TOOLTIP": "需要记录的注释", - "BREW_DATA_ATTACHMENTS_TOOLTIP": "附加照片?", - "ENABLE_BEAN_SORT_INFORMATION_TOOLTIP": "更深入的咖啡豆信息,包括它们来自哪里、何时收获等。", - "BEAN_DATA_COUNTRY_TOOLTIP": "这些咖啡豆来自哪个国家", - "BEAN_DATA_REGION_TOOLTIP": "这些咖啡豆来自哪个地区", - "BEAN_DATA_FARM_TOOLTIP": "这些咖啡豆来自哪个农场", - "BEAN_DATA_FARMER_TOOLTIP": "这些咖啡豆来自哪个农场主", - "BEAN_DATA_ELEVATION_TOOLTIP": "这些咖啡豆生长的海拔", - "BEAN_DATA_PROCESSING_TOOLTIP": "这些咖啡豆是如何加工的(自然处理,水洗等)", - "BEAN_DATA_VARIETY_TOOLTIP": "咖啡品种(例如 SL28) ", - "BEAN_DATA_HARVEST_TIME_TOOLTIP": "这些咖啡豆是在什么年月收获的", - "BEAN_DATA_PERCENTAGE_TOOLTIP": "这些咖啡豆占咖啡袋的百分比", - "BEAN_DATA_CERTIFICATION_TOOLTIP": "这些咖啡豆有哪些认证(例如 fairtrade) ", - "BEAN_DATA_PURCHASING_PRICE_TOOLTIP": "这种咖啡豆的采购价格", - "BEAN_DATA_FOB_PRICE_TOOLTIP": "在咖啡烘焙商购买时的离岸价", - "BEAN_PARAMETER_CUSTOMIZE_TITLE": "自定义您要使用的咖啡豆信息", - "BEAN_PARAMETER_CUSTOMIZE_DESCRIPTION": "可以输入或使用更多的咖啡豆信息。选择您要填写和要显示的参数", - "BREW_CANT_START_BECAUSE_TIMER_NOT_RESETTED_TITLE": "重置计时器!", - "BREW_CANT_START_BECAUSE_TIMER_NOT_RESETTED_DESCRIPTION": "因为您连接了蓝牙设备,您需要在启动之前先重置计时器。", - "BREW_FILTER_JUST_CHART_DATA": "仅图表数据", - "SCALE_RESET_TRIGGERED_DESCRIPTION": "蓝牙秤想要重置应用程序计时器以及冲泡图表,您是否确定要继续?", - "SCALE_RESET_TRIGGERED_TITLE": "重置?", - "NAV_REPEAT_PARAMETERS": "定义重复参数", - "PAGE_REPEAT_PARAMETERS_DESCRIPTION": "标记当您重复特定酿造时应预设哪些参数。", - "CUSTOM_REPEAT_PARAMETERS": "重复", - "CUSTOM_REPEAT_PARAMETERS_DESCRIPTION": "启用自定义重复?", - "PAGE_SETTINGS_USE_NUERMIC_KEYBOARD_FOR_GRIND_SIZE": "研磨设置使用数字键盘?", - "PAGE_SETTINGS_USE_NUERMIC_KEYBOARD_FOR_GRIND_SIZE_DESCRIPTION": "您想为研磨设置使用数字键盘,而不是使用整个键盘吗?", - "PREPARATION_DEVICE": { - "TYPE": { - "NONE": "None", - "XENIA": "Xenia", - "METICULOUS": "Meticulous" + "RETRY_CONNECT": "重试连接", + "SMART_SCALE_STAY_CONNECTED_ON_APP_MINIMIZE": "即使应用程序被最小化\/非活动状态,也让电子秤连接", + "BREW_FLOW_WEIGHT": "重量", + "BREW_FLOW_WEIGHT_PER_SECOND": "流速", + "ROAST_TYPE_UNKNOWN": "不清楚", + "ROAST_TYPE_CINNAMON_ROAST": "浅烘焙(Cimon Roast)", + "ROAST_TYPE_AMERICAN_ROAST": "美式烘焙(American Roast)", + "ROAST_TYPE_NEW_ENGLAND_ROAST": "新英格兰烘焙(New England Roast)", + "ROAST_TYPE_HALF_CITY_ROAST": "半城市烘焙(Half City Roast)", + "ROAST_TYPE_MODERATE_LIGHT_ROAST": "Moderate-Light Roast", + "ROAST_TYPE_CITY_ROAST": "中深度烘焙(City Roast)", + "ROAST_TYPE_CITY_PLUS_ROAST": "City+ Roast", + "ROAST_TYPE_FULL_CITY_ROAST": "微深度烘焙(Full City Roast)", + "ROAST_TYPE_FULL_CITY_PLUS_ROAST": "深度烘焙(Full City + Roast)", + "ROAST_TYPE_ITALIAN_ROAST": "极深度烘焙(Italian Roast)", + "ROAST_TYPE_VIEANNA_ROAST": "维也纳烘焙(Vienna Roast)", + "ROAST_TYPE_FRENCH_ROAST": "法式烘焙(French Roast)", + "ROAST_TYPE_CUSTOM_ROAST": "自定义", + "BEAN_MIX_UNKNOWN": "不清楚", + "BEAN_MIX_SINGLE_ORIGIN": "单一产地", + "BEAN_MIX_BLEND": "拼配", + "BEAN_ROASTING_TYPE_FILTER": "滴滤式\/Filter", + "BEAN_ROASTING_TYPE_ESPRESSO": "意式浓缩\/Espresso", + "BEAN_ROASTING_TYPE_OMNI": "均可\/Omni", + "BEAN_ROASTING_TYPE_UNKNOWN": "不清楚", + "SMART_SCALE_LOG": "为智能电子秤激活日志文件(仅用于发送日志进行调试)", + "TOAST_PREPARATION_TOOL_EDITED_SUCCESSFULLY": "杯测工具编辑", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE": "蓝牙电子秤", + "PAGE_SETTINGS_TAB_GENERAL": "常规", + "SMART_SCALE_TARE_ON_BREW": "在开始新的冲泡时去皮", + "SMART_SCALE_TARE_ON_START_TIMER": "当定时器启动时去皮", + "PAGE_SETTINGS_BREW_RATING_STEPS": "评级步骤", + "BREW_AVG_FLOW_WEIGHT_PER_SECOND": "Ø 流速", + "CUSTOM_LIST_VIEW_PARAMETERS": "列表视图参数", + "NAV_LIST_VIEW_CUSTOM_PARAMETERS": "列表视图参数", + "PAGE_LIST_VIEW_CUSTOM_PARAMETERS_DESCRIPTION": "决定你的咖啡冲泡的哪个参数,应该显示在列表视图上", + "BREW_DATA_VESSEL_NAME_WEIGHT": "容器 名称\/重量", + "IGNORE_NEGATIVE_VALUES": "忽略负重量值", + "IGNORE_ANOMALY_VALUES": "忽略异常值", + "IGNORE_ANOMALY_VALUES_TOOLTIP": "例如:在秤上旋转杯子", + "TOAST_BEAN_FAVOURITE_ADDED": "喜爱已添加", + "TOAST_BEAN_FAVOURITE_REMOVED": "喜爱已移除", + "QR_CODE_SCANNER_INFORMATION_TITLE": "二维码", + "QR_CODE_SCANNER_INFORMATION_DESCRIPTION": "所有扫描的咖啡豆信息都直接来自烘焙店。 如果您发现错误或误导性信息,请通过电子邮件通知我: info@beanconqueror.com.", + "DONT_SHOW_AGAIN": "不再显示", + "ARCHIVED_TOOLS": "归档工具", + "UNARCHIVE": "取消归档", + "PAGE_SETTINGS_HIDE_ARCHIVED_BREWS_DASHBOARD": "在仪表盘上显示已归档的冲泡", + "PAGE_SETTINGS_HIDE_ARCHIVED_BREWS_DASHBOARD_DESCRIPTION": "已归档的冲泡应该显示在主页上吗?", + "COPY": "复制", + "TOAST_PREPARATION_METHOD_REPEATED_SUCCESSFULLY": "杯测方法复制成功", + "PREPARATION_TYPE_CAFEC_FLOWER": "Cafec 花辦滤杯(Cafec Flower)", + "PREPARATION_TYPE_DECEMBER_DRIPPER": "December 可调咖啡滤杯(December Dripper)", + "PREPARATION_TYPE_DECENT_ESPRESSO": "Decent Espresso", + "PREPARATION_TYPE_HARIO_SWITCH": "Hario Switch 聪明杯", + "PREPARATION_TYPE_HARIO_WOODNECK": "Hario Woodneck 滤布", + "PREPARATION_TYPE_RATIO_SIX_COFFEE_BREWER": "Ratio Six Coffee Brewer", + "PREPARATION_TYPE_ROK": "ROK 手压咖啡机", + "PREPARATION_TYPE_TORNADO_DUO": "Tornado Duo", + "PREPARATION_TYPE_TRICOLATE": "Tricolate 聪明杯", + "QR_CODE_REFRESH_DATA_MESSAGE": "咖啡豆的所有信息将会被修改,现在开始?", + "POPOVER_QR_CODE_REFRESH": "重载数据", + "BREW_FLOW_WEIGHT_REALTIME": "Flow (真实时间)", + "SMART_SCALE_STOP_TIMER_ON_BREW": "在新的冲泡时停止电子秤计时", + "SMART_SCALE_RESET_TIMER_ON_BREW": "在新的冲泡时重置电子秤计时", + "BREW_PRESSURE_FLOW": "压强设备", + "BREW_TEMPERATURE_REALTIME": "温度", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_SHOW_GRAPHS_FILTER": "展示手冲图表", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_SHOW_GRAPHS_ESPRESSO": "展示意式浓缩图表", + "PAGE_SETTINGS_TAB_BLUETOOTH_PRESSURE": "压强设备", + "PAGE_SETTINGS_TAB_BLUETOOTH_TEMPERATURE": "温度设备", + "PRESSURE_LOG": "启用压强设备日志", + "PRESSURE_THRESHOLD_ACTIVE": "在预定义压强开始计时", + "PRESSURE_THRESHOLD_BAR": "压强阈值", + "TIMER_MILLISECONDS": "毫秒", + "PAGE_SETTINGS_BREW_ENABLE_MILLISECONDS": "毫秒?", + "PAGE_SETTINGS_BREW_ENABLE_MILLISECONDS_DESCRIPTION": "使用毫秒更精准的分析每次冲泡", + "PAGE_SETTINGS_BEAN_RATING": "咖啡豆评分", + "PAGE_SETTINGS_BEAN_RATING_TOOLTIP": "五分制不适合你的话可以使用百分制", + "PAGE_SETTINGS_BEAN_RATING_STEPS": "咖啡豆评分间隔", + "COFFEE_GRAMS_BREWED": "冲泡克数", + "SMART_SCALE_MAXIMIZE_ON_START_TIMER": "开始计时图表中的最大真实时间", + "PRESSURE": { + "CONNECTION_NOT_ESTABLISHED": "没找到压强设备或者没有建立连接", + "CONNECTED_SUCCESSFULLY": "压强设备已连接", + "DISCONNECTED_SUCCESSFULLY": "压强设备未连接", + "DISCONNECTED_UNPLANNED": "压强设备意外断开连接", + "STAY_CONNECTED_ON_APP_MINIMIZE": "即使应用在后台也保持压强设备的连接", + "INFORMATION_DESCRIPTION": "支持设备: Popsicle, Pressensor, Smart Espresso Profiler, Bookoo Espresso Monitor", + "BLUETOOTH_SCAN_RUNNING": "压强设备搜索将会花费60秒, 稍等", + "BLUETOOTH_NOT_ENABLED": "蓝牙未开启,请开启以正常工作", + "REQUEST_PERMISSION": { + "LOCATION": "应用需要位置权限以搜索压强设备", + "BLUETOOTH": "应用需要蓝牙权限以搜索压强设备" + } }, - "URL": "Url", - "CHOOSE_DEVICE": "选择设备", - "CONNECTION": { - "UNSUCCESFULLY": "无法连接到设备", - "SUCCESFULLY": "已成功连接到设备" + "POPOVER_BLUETOOTH_ACTION_RECONNECT_SCALE": "重连电子秤", + "POPOVER_BLUETOOTH_ACTION_RECONNECT_PRESSURE_DEVICE": "重连压强设备", + "POPOVER_SHOW_BREWS": "显示冲泡", + "LAST_USED_GRIND_SIZE_SETTING": "上次研磨设置", + "LAST_USED_BEAN": "上次的咖啡豆", + "PAGE_SETTINGS_BREW_MILLISECONDS_DECIMAL_PLACES_DESCRIPTION": "显示多少位小数?", + "SMART_SCALE_COMMAND_DELAY": "命令延迟", + "SMART_SCALE_COMMAND_DELAY_TOOLTIP": "相邻蓝牙命令之间应间隔多少时间?", + "SUPPORT_ME": "捐助", + "PAGE_SETTINGS_BREW_DISPLAY_BEAN_IMAGE": "显示咖啡豆图片吗?", + "PAGE_SETTINGS_BREW_DISPLAY_BEAN_IMAGE_DESCRIPTION": "如果存在咖啡豆图像将使用该图像,而不是预置图像", + "DOWNLOAD_XLSX": "下载 excel", + "DOWNLOAD_JSON": "下载 JSON", + "NAV_BEAN_PARAMS": "咖啡豆参数", + "BEAN_DATA_ROAST_NAME_TYPE": "烘焙类型", + "ENABLE_BEAN_SORT_INFORMATION": "启用品种信息", + "BEAN_SORT_MIX": "咖啡豆混合", + "PAGE_MANAGE_BEAN_PARAMETERS_DESCRIPTION": "编辑咖啡豆信息时要显示的参数。", + "PAGE_BEAN_LIST_VIEW_CUSTOM_PARAMETERS_DESCRIPTION": "决定在列表上显示哪些咖啡豆参数。", + "BEAN_DATA_NAME_TOOLTIP": "咖啡豆包装上的名称", + "BEAN_DATA_ROASTER_TOOLTIP": "谁烘焙了这些咖啡豆", + "BEAN_DATA_BUY_DATE_TOOLTIP": "购买咖啡豆的日期", + "BEAN_DATA_ROASTING_DATE_TOOLTIP": "咖啡豆的烘焙日期", + "BEAN_DATA_ROASTING_TYPE_TOOLTIP": "此咖啡豆烘焙用于哪种冲泡方式,例如滤泡", + "BEAN_DATA_ROAST_NAME_TOOLTIP": "咖啡豆的烘焙程度是多少", + "BEAN_DATA_ROAST_NAME_TYPE_TOOLTIP": "烘焙类型是什么?(肉桂,新英格兰等)", + "BREW_DATA_RATING_TOOLTIP": "您的评分", + "BEAN_SORT_MIX_TOOLTIP": "这是否为混合咖啡豆?", + "BEAN_DATA_WEIGHT_TOOLTIP": "咖啡豆的重量", + "BEAN_DATA_COST_TOOLTIP": "咖啡豆的价格", + "BEAN_DATA_AROMATICS_TOOLTIP": "这种咖啡豆有哪些香气\/口味", + "BEAN_DATA_CUPPING_POINTS_TOOLTIP": "这种咖啡豆的杯测分数", + "BEAN_DATA_DECAFFEINATED_TOOLTIP": "这款咖啡豆是否已去咖啡因?", + "BEAN_DATA_URL_TOOLTIP": "购物网站的 URL, 例如", + "BEAN_DATA_EAN_TOOLTIP": "The ean\/article number", + "NOTES_TOOLTIP": "需要记录的注释", + "BREW_DATA_ATTACHMENTS_TOOLTIP": "附加照片?", + "ENABLE_BEAN_SORT_INFORMATION_TOOLTIP": "更深入的咖啡豆信息,包括它们来自哪里、何时收获等。", + "BEAN_DATA_COUNTRY_TOOLTIP": "这些咖啡豆来自哪个国家", + "BEAN_DATA_REGION_TOOLTIP": "这些咖啡豆来自哪个地区", + "BEAN_DATA_FARM_TOOLTIP": "这些咖啡豆来自哪个农场", + "BEAN_DATA_FARMER_TOOLTIP": "这些咖啡豆来自哪个农场主", + "BEAN_DATA_ELEVATION_TOOLTIP": "这些咖啡豆生长的海拔", + "BEAN_DATA_PROCESSING_TOOLTIP": "这些咖啡豆是如何加工的(自然处理,水洗等)", + "BEAN_DATA_VARIETY_TOOLTIP": "咖啡品种(例如 SL28) ", + "BEAN_DATA_HARVEST_TIME_TOOLTIP": "这些咖啡豆是在什么年月收获的", + "BEAN_DATA_PERCENTAGE_TOOLTIP": "这些咖啡豆占咖啡袋的百分比", + "BEAN_DATA_CERTIFICATION_TOOLTIP": "这些咖啡豆有哪些认证(例如 fairtrade) ", + "BEAN_DATA_PURCHASING_PRICE_TOOLTIP": "这种咖啡豆的采购价格", + "BEAN_DATA_FOB_PRICE_TOOLTIP": "在咖啡烘焙商购买时的离岸价", + "BEAN_PARAMETER_CUSTOMIZE_TITLE": "自定义您要使用的咖啡豆信息", + "BEAN_PARAMETER_CUSTOMIZE_DESCRIPTION": "可以输入或使用更多的咖啡豆信息。选择您要填写和要显示的参数", + "BREW_CANT_START_BECAUSE_TIMER_NOT_RESETTED_TITLE": "重置计时器!", + "BREW_CANT_START_BECAUSE_TIMER_NOT_RESETTED_DESCRIPTION": "因为您连接了蓝牙设备,您需要在启动之前先重置计时器。", + "BREW_FILTER_JUST_CHART_DATA": "仅图表数据", + "SCALE_RESET_TRIGGERED_DESCRIPTION": "蓝牙秤想要重置应用程序计时器以及冲泡图表,您是否确定要继续?", + "SCALE_RESET_TRIGGERED_TITLE": "重置?", + "NAV_REPEAT_PARAMETERS": "定义重复参数", + "PAGE_REPEAT_PARAMETERS_DESCRIPTION": "标记当您重复特定酿造时应预设哪些参数。", + "CUSTOM_REPEAT_PARAMETERS": "重复", + "CUSTOM_REPEAT_PARAMETERS_DESCRIPTION": "启用自定义重复?", + "PAGE_SETTINGS_USE_NUERMIC_KEYBOARD_FOR_GRIND_SIZE": "研磨设置使用数字键盘?", + "PAGE_SETTINGS_USE_NUERMIC_KEYBOARD_FOR_GRIND_SIZE_DESCRIPTION": "您想为研磨设置使用数字键盘,而不是使用整个键盘吗?", + "PREPARATION_DEVICE": { + "TYPE": { + "NONE": "None", + "XENIA": "Xenia", + "METICULOUS": "Meticulous" + }, + "URL": "Url", + "CHOOSE_DEVICE": "选择设备", + "CONNECTION": { + "UNSUCCESFULLY": "无法连接到设备", + "SUCCESFULLY": "已成功连接到设备" + }, + "TYPE_XENIA": { + "TITLE": "Xenia Machine", + "PRESS_START_SCRIPT": "设备启动时执行脚本", + "FIRST_DRIP_SCRIPT": "首滴时执行脚本", + "SCRIPT_AT_WEIGHT": "在指定重量执行脚本", + "SCRIPT_LIST_GENERAL_0": "无", + "SCRIPT_LIST_GENERAL_1": "浓缩咖啡 (Espresso), 25 秒", + "SCRIPT_LIST_GENERAL_2": "浓缩咖啡 (Espresso), 无限时间", + "SCRIPT_LIST_GENERAL_STOP": "停止", + "CHOOSE_SCRIPT_AT_WEIGHT": "选择达到重量后的脚本", + "ERROR_NOT_ALL_SCRIPTS_FOUND": "无法找到脚本,它们已被重置", + "ERROR_CONNECTION_COULD_NOT_BE_ESTABLISHED": "无法建立与 Xenia 的连接。请确保您在正确的网络 (WLAN) 中, 如果您排除了网络问题, 请检查其他问题。", + "CHECKING_CONNECTION_TO_PORTAFILTER": "正在检查与 Xenia 的连接", + "GRABING_SCRIPTS": "已从 Xenia 加载脚本", + "BREW_BY_WEIGHT_ACTIVE": "按重量启动冲泡" + }, + "API_VERSION": "Api 版本", + "RESIDUAL_LAG_TIME": "残留延迟时间", + "RESIDUAL_LAG_TIME_DESCRIPTION": "设置时间以匹配剩余的水量。使用无底手柄时,你需要设定一个较短的时间;使用有底手柄时,则需要设定一个较长的时间。如果秤的重量数据传输的越慢,你需要调整的时间就越多", + "TYPE_METICULOUS": { + "TITLE": "Meticulous 咖啡机", + "NO_PROFILE": "无配置文件", + "CHOOSE_PROFILE": "选择配置文件", + "SHOT_STARTED": "萃取开始", + "SHOT_ENDED": "萃取结束" + } }, - "TYPE_XENIA": { - "TITLE": "Xenia Machine", - "PRESS_START_SCRIPT": "设备启动时执行脚本", - "FIRST_DRIP_SCRIPT": "首滴时执行脚本", - "SCRIPT_AT_WEIGHT": "在指定重量执行脚本", - "SCRIPT_LIST_GENERAL_0": "无", - "SCRIPT_LIST_GENERAL_1": "浓缩咖啡 (Espresso), 25 秒", - "SCRIPT_LIST_GENERAL_2": "浓缩咖啡 (Espresso), 无限时间", - "SCRIPT_LIST_GENERAL_STOP": "停止", - "CHOOSE_SCRIPT_AT_WEIGHT": "选择达到重量后的脚本", - "ERROR_NOT_ALL_SCRIPTS_FOUND": "无法找到脚本,它们已被重置", - "ERROR_CONNECTION_COULD_NOT_BE_ESTABLISHED": "无法建立与 Xenia 的连接。请确保您在正确的网络 (WLAN) 中, 如果您排除了网络问题, 请检查其他问题。", - "CHECKING_CONNECTION_TO_PORTAFILTER": "正在检查与 Xenia 的连接", - "GRABING_SCRIPTS": "已从 Xenia 加载脚本", - "BREW_BY_WEIGHT_ACTIVE": "按重量启动冲泡" + "DEVICE_CONNECTION": "设备连接", + "PREPARATION_DEVICE_CONNECTION": "冲泡设备已连接", + "MANUAL_EXPORT_TO_VISUALIZER": "导出到可视化工具", + "ONLY_FAVOURITES": "仅收藏", + "TEMPERATURE": { + "CONNECTION_NOT_ESTABLISHED": "温度设备未找到或无法建立连接", + "CONNECTED_SUCCESSFULLY": "温度设备已连接", + "DISCONNECTED_SUCCESSFULLY": "温度设备已断开连接", + "DISCONNECTED_UNPLANNED": "温度设备意外断开连接", + "STAY_CONNECTED_ON_APP_MINIMIZE": "即使应用程序在后台,也保持温度计连接", + "INFORMATION_DESCRIPTION": "支持的设备有: ETI Ltd 温度计 (ThermaQ Blue, BlueTherm 等)", + "BLUETOOTH_SCAN_RUNNING": "将搜索温度设备60秒, 请稍等", + "BLUETOOTH_NOT_ENABLED": "蓝牙未启动,请启动以使其正常工作", + "REQUEST_PERMISSION": { + "LOCATION": "为了查找温度设备,应用程序需要访问位置信息。", + "BLUETOOTH": "为了查找温度设备,应用程序需要访问蓝牙。" + }, + "LOG": "为温度设备激活日志文件", + "THRESHOLD_ACTIVE": "使用预定义的温度启动计时器", + "THRESHOLD_TEMP": "温度阈值" }, - "API_VERSION": "Api 版本", - "RESIDUAL_LAG_TIME": "残留延迟时间", - "RESIDUAL_LAG_TIME_DESCRIPTION": "设置时间以匹配剩余的水量。使用无底手柄时,你需要设定一个较短的时间;使用有底手柄时,则需要设定一个较长的时间。如果秤的重量数据传输的越慢,你需要调整的时间就越多", - "TYPE_METICULOUS": { - "TITLE": "Meticulous 咖啡机", - "NO_PROFILE": "无配置文件", - "CHOOSE_PROFILE": "选择配置文件", - "SHOT_STARTED": "萃取开始", - "SHOT_ENDED": "萃取结束" - } - }, - "DEVICE_CONNECTION": "设备连接", - "PREPARATION_DEVICE_CONNECTION": "冲泡设备已连接", - "MANUAL_EXPORT_TO_VISUALIZER": "导出到可视化工具", - "ONLY_FAVOURITES": "仅收藏", - "TEMPERATURE": { - "CONNECTION_NOT_ESTABLISHED": "温度设备未找到或无法建立连接", - "CONNECTED_SUCCESSFULLY": "温度设备已连接", - "DISCONNECTED_SUCCESSFULLY": "温度设备已断开连接", - "DISCONNECTED_UNPLANNED": "温度设备意外断开连接", - "STAY_CONNECTED_ON_APP_MINIMIZE": "即使应用程序在后台,也保持温度计连接", - "INFORMATION_DESCRIPTION": "支持的设备有: ETI Ltd 温度计 (ThermaQ Blue, BlueTherm 等)", - "BLUETOOTH_SCAN_RUNNING": "将搜索温度设备60秒, 请稍等", - "BLUETOOTH_NOT_ENABLED": "蓝牙未启动,请启动以使其正常工作", - "REQUEST_PERMISSION": { - "LOCATION": "为了查找温度设备,应用程序需要访问位置信息。", - "BLUETOOTH": "为了查找温度设备,应用程序需要访问蓝牙。" + "POPOVER_BLUETOOTH_ACTION_RECONNECT_TEMPERATURE_DEVICE": "重新连接温度设备", + "PRESSURE_DEVICE_JUST_VISIBLE_ON_ESPRESSO": "压力设备仅在 'espresso' 模式中可用", + "PRESSURE_MESSAGE_AFTER_CONNECTION": "已知行为 (在分析中): 请注意, 如果您重启手机或长时间未使用应用程序, 则连接可能需要更长时间 (30 秒至 1 分钟) ", + "SMART_SCALE_ACAIA_HEARTBEAT_TIMER": "Heartbeat 计时器 - 仅适用于Acaia电子秤", + "SMART_SCALE_ACAIA_HEARTBEAT_TIMER_TOOLTIP": "仅适用于Acaia电子秤!较旧的Acaia电子秤需要一次 heartbeat,如果遇到问题,请尝试将 Heartbeat 频率设置得更快。", + "SHARE_BEAN_URL": "以URL方式分享", + "SHARE_BEAN_IMAGE": "以图像方式分享", + "SMART_SCALE_ESPRESSO_STOP_ON_NO_WEIGHT_CHANGE": "浓缩咖啡 - 自动停止冲泡", + "SMART_SCALE_ESPRESSO_STOP_ON_NO_WEIGHT_CHANGE_DESCRIPTION": "此设置仅适用于'浓缩咖啡'类型的冲泡方式。当不再检测到流量变化时,冲泡将自动停止。", + "BREW_DATA_BREW_QUANTITY_TOOLTIP_BREW_RATIO": "该值将用于计算所有冲泡方式的冲泡比例,但不适用于'浓缩咖啡'类型。", + "BREW_DATA_BREW_BEVERAGE_QUANTITY_TOOLTIP_BREW_RATIO": "该值仅用于计算'浓缩咖啡'类型的冲泡方式的冲泡比例。", + "SMART_SCALE_DID_NOT_SEND_ANY_WEIGHT_DESCRIPTION": "看起来你的蓝牙秤没有正确连接到 Beanconqueror。这在大多数情况下发生在使用带有Acaia电子秤的iOS设备上,请重新连接秤,并确保重量数据已更新。", + "SMART_SCALE_DID_NOT_SEND_ANY_WEIGHT_TITLE": "没有重量数值?", + "SMART_SCALE_ESPRESSO_STOP_ON_NO_WEIGHT_CHANGE_MIN_FLOW_DESCRIPTION": "停止冲泡所需的最小流量?冲泡将仅在达到至少5秒和5克或研磨重量的1:1冲泡比例时停止。之后,将检查设置的最小流量。", + "ONLY_BEST_BREWS": "只显示最佳冲泡", + "POPOVER_BEST_BREW": "最佳冲泡", + "PAGE_SETTINGS_BEST_BREW": "启用最佳冲泡", + "PAGE_SETTINGS_BEST_BREW_DESCRIPTION": "为特定的咖啡豆标记您的最佳冲泡。每种咖啡豆只能有一个最佳冲泡。", + "PAGE_SETTINGS_TAB_BLUETOOTH_REFRACTOMETER": "浓度仪设备", + "REFRACTOMETER": { + "CONNECTION_NOT_ESTABLISHED": "未找到浓度仪,或无法建立连接", + "CONNECTED_SUCCESSFULLY": "浓度仪设备已连接", + "DISCONNECTED_SUCCESSFULLY": "浓度仪已断开连接", + "DISCONNECTED_UNPLANNED": "浓度仪意外断开连接", + "STAY_CONNECTED_ON_APP_MINIMIZE": "即使应用程序在后台运行,也能保持折光仪连接", + "INFORMATION_DESCRIPTION": "支持的设备: DiFluid R2", + "BLUETOOTH_SCAN_RUNNING": "搜索浓度仪设备, 最长时间为60秒", + "BLUETOOTH_NOT_ENABLED": "未激活蓝牙,请激活以正常工作", + "REQUEST_PERMISSION": { + "LOCATION": "为了找到浓度仪,应用需要访问位置信息。", + "BLUETOOTH": "为了找到浓度仪,应用需要访问蓝牙" + }, + "LOG": "为浓度仪启用日志文件", + "READ_END": "测试完成 - 收到结果" }, - "LOG": "为温度设备激活日志文件", - "THRESHOLD_ACTIVE": "使用预定义的温度启动计时器", - "THRESHOLD_TEMP": "温度阈值" - }, - "POPOVER_BLUETOOTH_ACTION_RECONNECT_TEMPERATURE_DEVICE": "重新连接温度设备", - "PRESSURE_DEVICE_JUST_VISIBLE_ON_ESPRESSO": "压力设备仅在 'espresso' 模式中可用", - "PRESSURE_MESSAGE_AFTER_CONNECTION": "已知行为 (在分析中): 请注意, 如果您重启手机或长时间未使用应用程序, 则连接可能需要更长时间 (30 秒至 1 分钟) ", - "SMART_SCALE_ACAIA_HEARTBEAT_TIMER": "Heartbeat 计时器 - 仅适用于Acaia电子秤", - "SMART_SCALE_ACAIA_HEARTBEAT_TIMER_TOOLTIP": "仅适用于Acaia电子秤!较旧的Acaia电子秤需要一次 heartbeat,如果遇到问题,请尝试将 Heartbeat 频率设置得更快。", - "SHARE_BEAN_URL": "以URL方式分享", - "SHARE_BEAN_IMAGE": "以图像方式分享", - "SMART_SCALE_ESPRESSO_STOP_ON_NO_WEIGHT_CHANGE": "浓缩咖啡 - 自动停止冲泡", - "SMART_SCALE_ESPRESSO_STOP_ON_NO_WEIGHT_CHANGE_DESCRIPTION": "此设置仅适用于'浓缩咖啡'类型的冲泡方式。当不再检测到流量变化时,冲泡将自动停止。", - "BREW_DATA_BREW_QUANTITY_TOOLTIP_BREW_RATIO": "该值将用于计算所有冲泡方式的冲泡比例,但不适用于'浓缩咖啡'类型。", - "BREW_DATA_BREW_BEVERAGE_QUANTITY_TOOLTIP_BREW_RATIO": "该值仅用于计算'浓缩咖啡'类型的冲泡方式的冲泡比例。", - "SMART_SCALE_DID_NOT_SEND_ANY_WEIGHT_DESCRIPTION": "看起来你的蓝牙秤没有正确连接到 Beanconqueror。这在大多数情况下发生在使用带有Acaia电子秤的iOS设备上,请重新连接秤,并确保重量数据已更新。", - "SMART_SCALE_DID_NOT_SEND_ANY_WEIGHT_TITLE": "没有重量数值?", - "SMART_SCALE_ESPRESSO_STOP_ON_NO_WEIGHT_CHANGE_MIN_FLOW_DESCRIPTION": "停止冲泡所需的最小流量?冲泡将仅在达到至少5秒和5克或研磨重量的1:1冲泡比例时停止。之后,将检查设置的最小流量。", - "ONLY_BEST_BREWS": "只显示最佳冲泡", - "POPOVER_BEST_BREW": "最佳冲泡", - "PAGE_SETTINGS_BEST_BREW": "启用最佳冲泡", - "PAGE_SETTINGS_BEST_BREW_DESCRIPTION": "为特定的咖啡豆标记您的最佳冲泡。每种咖啡豆只能有一个最佳冲泡。", - "PAGE_SETTINGS_TAB_BLUETOOTH_REFRACTOMETER": "浓度仪设备", - "REFRACTOMETER": { - "CONNECTION_NOT_ESTABLISHED": "未找到浓度仪,或无法建立连接", - "CONNECTED_SUCCESSFULLY": "浓度仪设备已连接", - "DISCONNECTED_SUCCESSFULLY": "浓度仪已断开连接", - "DISCONNECTED_UNPLANNED": "浓度仪意外断开连接", - "STAY_CONNECTED_ON_APP_MINIMIZE": "即使应用程序在后台运行,也能保持折光仪连接", - "INFORMATION_DESCRIPTION": "支持的设备: DiFluid R2", - "BLUETOOTH_SCAN_RUNNING": "搜索浓度仪设备, 最长时间为60秒", - "BLUETOOTH_NOT_ENABLED": "未激活蓝牙,请激活以正常工作", - "REQUEST_PERMISSION": { - "LOCATION": "为了找到浓度仪,应用需要访问位置信息。", - "BLUETOOTH": "为了找到浓度仪,应用需要访问蓝牙" + "COPIED_TO_CLIPBOARD_SUCCESSFULLY": "已复制到剪贴板", + "COPIED_TO_CLIPBOARD_UNSUCCESSFULLY": "无法复制到剪贴板", + "PAGE_SETTINGS_LANGUAGE_FRENCH": "法语", + "ANDROID_EXTERNAL_FILE_ACCESS_NOT_POSSIBLE_TITLE": "由于Android限制,无法保存数据", + "ANDROID_EXTERNAL_FILE_ACCESS_NEEDED_DESCRIPTION": "您的Android手机不支持外部文件系统,因此您需要下载不带媒体文件的ZIP文件。更多信息,请访问https:\/\/beanconqueror.com\/faq。", + "PAGE_SETTINGS_SECURITY_CHECK_WHEN_GOING_BACK": "退出前进行安全检查?", + "PAGE_SETTINGS_SECURITY_CHECK_WHEN_GOING_BACK_DESCRIPTION": "在冲泡\/添加\/编辑咖啡豆时检查数据是否已更改;如果是,则在返回时显示安全警告。", + "PAGE_BEANS_DISCARD_CONFIRM": "咖啡豆信息已更改。确定要在不保存的情况下离开页面吗?", + "PAGE_BREW_DISCARD_CONFIRM": "冲泡信息已修改。确定要在不保存的情况下离开页面吗?", + "NO_ENTRIES_FOUND": "未找到条目", + "POPOVER_BEANS_OPTION_REPEAT": "重复上次冲泡", + "REPEAT_LAST_BREW": "重复上次冲泡", + "REPEAT_BEST_BREW": "重复最佳冲泡", + "PAGE_SETTINGS_VISUALIZER_SECTION": "可视化器", + "VISUALIZER": { + "ACTIVATE": "激活可视化器", + "CHOOSE_SERVER": "选择服务器", + "CONNECTION": { + "UNSUCCESSFULLY": "无法建立连接。", + "SUCCESSFULLY": "连接成功建立。" + }, + "SERVER": { + "VISUALIZER": "可视化器服务器", + "CUSTOM": "自定义服务器" + }, + "SHOT": { + "UPLOAD_SUCCESSFULLY": "冲泡已上传到可视化器。", + "UPLOAD_UNSUCCESSFULLY": "无法将冲泡上传到可视化器。" + }, + "URL": "服务器URL", + "USERNAME": "用户名", + "PASSWORD": "密码", + "UPLOAD_AUTOMATIC": "自动上传每次冲泡?", + "UPLOAD_AUTOMATIC_TOOLTIP": "保存冲泡时,请确保您有活动的互联网连接。", + "UPLOAD_ALL": "上传所有冲泡", + "NOT_ALL_SHOTS_UPLOADED": "无法上传所有冲泡", + "ALL_SHOTS_UPLOADED": "所有冲泡已上传" }, - "LOG": "为浓度仪启用日志文件", - "READ_END": "测试完成 - 收到结果" - }, - "COPIED_TO_CLIPBOARD_SUCCESSFULLY": "已复制到剪贴板", - "COPIED_TO_CLIPBOARD_UNSUCCESSFULLY": "无法复制到剪贴板", - "PAGE_SETTINGS_LANGUAGE_FRENCH": "法语", - "ANDROID_EXTERNAL_FILE_ACCESS_NOT_POSSIBLE_TITLE": "由于Android限制,无法保存数据", - "ANDROID_EXTERNAL_FILE_ACCESS_NEEDED_DESCRIPTION": "您的Android手机不支持外部文件系统,因此您需要下载不带媒体文件的ZIP文件。更多信息,请访问https:\/\/beanconqueror.com\/faq。", - "PAGE_SETTINGS_SECURITY_CHECK_WHEN_GOING_BACK": "退出前进行安全检查?", - "PAGE_SETTINGS_SECURITY_CHECK_WHEN_GOING_BACK_DESCRIPTION": "在冲泡\/添加\/编辑咖啡豆时检查数据是否已更改;如果是,则在返回时显示安全警告。", - "PAGE_BEANS_DISCARD_CONFIRM": "咖啡豆信息已更改。确定要在不保存的情况下离开页面吗?", - "PAGE_BREW_DISCARD_CONFIRM": "冲泡信息已修改。确定要在不保存的情况下离开页面吗?", - "NO_ENTRIES_FOUND": "未找到条目", - "POPOVER_BEANS_OPTION_REPEAT": "重复上次冲泡", - "REPEAT_LAST_BREW": "重复上次冲泡", - "REPEAT_BEST_BREW": "重复最佳冲泡", - "PAGE_SETTINGS_VISUALIZER_SECTION": "可视化器", - "VISUALIZER": { - "ACTIVATE": "激活可视化器", - "CHOOSE_SERVER": "选择服务器", - "CONNECTION": { - "UNSUCCESSFULLY": "无法建立连接。", - "SUCCESSFULLY": "连接成功建立。" + "SMART_SCALE_AUTO_START_LISTENING": "自动启动计时器?", + "SMART_SCALE_AUTO_START_LISTENING_DESCRIPTION": "当达到以下重量值时自动启动计时器", + "CHOOSE_REFERENCE_GRAPH": "选择参考图", + "RESET": "重置", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_AXIS": "定义图的起始轴", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_AXIS_DESCRIPTION": "为过滤和浓缩设置轴的起始尺寸。", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_FILTER_WEIGHT": "过滤 - 重量", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_FILTER_FLOW": "过滤 - 流速", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_ESPRESSO_WEIGHT": "浓缩 - 重量", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_ESPRESSO_FLOW": "浓缩 - 流速", + "SMART_SCALE_IGNORE_INCOMING_WEIGHT": "忽略当前传输的重量。", + "SMART_SCALE_IGNORE_INCOMING_WEIGHT_TOOLTIP": "在冲泡部分会出现一个新按钮,它将忽略来自蓝牙秤的新重量值。", + "BREWS_ACTIVE": "激活的冲泡", + "BREWS_ARCHIVED": "已归档的冲泡", + "GRAPHS": "图形", + "GRAPH_SECTION": { + "NAV_GRAPH": "图形", + "NO_ARCHIVED_ENTRIES": "没有已归档的条目", + "NO_ENTRIES": "没有条目", + "SECTION_HAS_BEEN_ACTIVATED": "图形部分已激活" }, - "SERVER": { - "VISUALIZER": "可视化器服务器", - "CUSTOM": "自定义服务器" + "TOAST_GRAPH_ARCHIVED_SUCCESSFULLY": "图表已归档", + "TOAST_GRAPH_DELETED_SUCCESSFULLY": "图表已删除", + "TOAST_GRAPH_EDITED_SUCCESSFULLY": "图表已编辑", + "TOAST_GRAPH_ADD_SUCCESSFULLY": "图表已添加", + "NAV_GRAPH_SECTION": "图表", + "DELETE_GRAPH_QUESTION": "您要删除此图表吗?", + "PAGE_SETTINGS_SHOW_ARCHIVED_GRAPHS": "显示已归档的图表", + "PAGE_SETTINGS_SHOW_GRAPH_SECTION": "激活图表部分", + "EDIT_GRAPH": "编辑图表", + "ADD_GRAPH": "添加图表", + "GRAPH": { + "PLACE_HOLDER": { + "NAME": "图表名称", + "NOTES": "注释" + }, + "UPLOAD": "上传图表", + "DELETE": "删除图表", + "UPLOAD_DESCRIPTION": "导入一个.JSON文件,您可以在冲泡详细视图中下载。或者,您还可以导入社区共享的.JSON类型的图形。" }, - "SHOT": { - "UPLOAD_SUCCESSFULLY": "冲泡已上传到可视化器。", - "UPLOAD_UNSUCCESSFULLY": "无法将冲泡上传到可视化器。" + "SHOW_VISUALIZER": "显示可视化器", + "NO_BREWS_FOUND": "未找到冲泡", + "NO_GRAPHS_FOUND": "未找到图表", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_AXIS": "定义图表的最大时间轴", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_DESCRIPTION": "设置过滤器和浓缩咖啡时间轴的最大秒数。", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_FILTER_AXIS_NORMAL_SCREEN": "过滤器 - 普通屏幕", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_FILTER_AXIS_FULL_SCREEN_SCREEN": "过滤器 - 全屏", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_ESPRESSO_AXIS_NORMAL_SCREEN": "浓缩咖啡 - 正常屏幕", + "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_ESPRESSO_AXIS_FULL_SCREEN_SCREEN": "浓缩咖啡 - 全屏", + "PAGE_SETTINGS_DATE_FORMAT": "日期格式", + "PAGE_SETTINGS_LANGUAGE_FRANCE": "法语", + "PAGE_SETTINGS_LANGUAGE_INDONESIA": "印度尼西亚语", + "EXTRACTION_CHART_TITLE": "Extraction Chart", + "PAGE_SETTINGS_SHOW_BACKUP_ISSUES": "显示备份问题", + "PAGE_SETTINGS_SHOW_BACKUP_ISSUES_DESCRIPTION": "如果无法将备份写入文件系统,则会出现弹窗", + "AUTOMATIC_BACKUP_DID_FAIL": "自动备份未成功,请确保备份有效!可在设置中关闭此信息", + "INTERNAL_BACKUP_DID_FAIL": "内部备份未成功,请确保备份有效!可在设置中关闭此信息", + "ZIP_BACKUP_FILE_COULD_NOT_BE_BUILD": "无法保存 ZIP 文件!可在设置中关闭此信息", + "SEND_LOGS": "发送日志", + "POPOVER_BLUETOOTH_ACTION_RECONNECT_REFRACTOMETER": "重新连接折射仪设备", + "PAGE_SETTINGS_LANGUAGE_ITALIAN": "Italiano", + "PAGE_SETTINGS_LANGUAGE_POLISH": "波兰语", + "BREW_CANT_START_BECAUSE_TIMER_NOT_RESETTED_GENERAL_DESCRIPTION": "在开始之前,您需要先重置计时器", + "SMART_SCALE_FIRST_DRIP_THRESHOLD": "滴液开始的阈值", + "SMART_SCALE_FIRST_DRIP_THRESHOLD_TOOLTIP": "秤显示达到多少克时,才开始识别滴液开始?默认值:大于等于0.1克", + "PAGE_SETTINGS_BREW_TIMER_START_DELAY_ACTIVE": "开始冲泡延迟", + "PAGE_SETTINGS_BREW_TIMER_START_DELAY_ACTIVE_DESCRIPTION": "设置一个延迟时间,在开始冲泡前将显示一个加载图标", + "STARTING_IN": "从 {{time}} 开始", + "IOS_DATABASE_ISSUE_TITLE": "注意 !!!!! - 数据库连接丢失", + "IOS_DATABASE_ISSUE_DESCRIPTION": "我们很遗憾地通知您,我们遇到了无法连接数据库的问题。这个问题是由于苹果系统中一个未解决的漏洞导致的,超出了Beanconqueror的控制范围。为了防止可能的数据丢失,我们恳请您立即强制关闭Beanconqueror应用程序,然后再重新打开它。", + "RELOAD_APP": "加载应用程序中", + "WATER_TYPE_ADD_CUSTOM": "定制水", + "WATER_TYPE_THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE": "Third Wave Water - Classic Light Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE": "Third Wave Water - Medium Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_DARK_ROAST_PROFILE": "Third Wave Water - Dark Roast Profile", + "WATER_TYPE_THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE": "Third Wave Water - Espresso Machine Profile", + "WATER_TYPE_THIRD_WAVE_WATER_COLD_BREW_PROFILE": "Third Wave Water -Cold Brew Profile", + "WATER_TYPE_THIRD_WAVE_WATER_LOW_ACID_PROFILE": "Third Wave Water - Low Acid Profile", + "ADD_WATER": "添加水", + "EXTRACTION_CHART_LABEL_STRONG_UNDEREXTRACTED": "强
萃取不足", + "EXTRACTION_CHART_LABEL_STRONG": "强
", + "EXTRACTION_CHART_LABEL_STRONG_HARSH": "強
苦涩", + "EXTRACTION_CHART_LABEL_UNDEREXTRACTED": "萃取不足", + "EXTRACTION_CHART_LABEL_IDEAL": "理想", + "EXTRACTION_CHART_LABEL_HARSH": "苦涩", + "EXTRACTION_CHART_LABEL_WEAK_UNDEREXTRACTED": "弱
萃取不足", + "EXTRACTION_CHART_LABEL_WEAK": "弱
", + "EXTRACTION_CHART_LABEL_WEAK_HARSH": "弱
苦涩", + "PAGE_SETTINGS_TEXT_TO_SPEECH_SECTION": "文字转语音", + "TEXT_TO_SPEECH": { + "ACTIVATE": "激活文本转语音", + "BREW_STARTED": "冲泡开始", + "BREW_ENDED": "冲泡结束", + "TIME": "时间", + "SPEAK_EVERY_MS": "每隔选定的毫秒讲话一次", + "FOLLOWING_NUMBERS_WILL_BE_TEST_SPOKEN": "以下数字将进行语音测试", + "TEST_SPEAK": "开始测试讲话", + "PITCH": "声调", + "RATE": "速度" }, - "URL": "服务器URL", - "USERNAME": "用户名", - "PASSWORD": "密码", - "UPLOAD_AUTOMATIC": "自动上传每次冲泡?", - "UPLOAD_AUTOMATIC_TOOLTIP": "保存冲泡时,请确保您有活动的互联网连接。", - "UPLOAD_ALL": "上传所有冲泡", - "NOT_ALL_SHOTS_UPLOADED": "无法上传所有冲泡", - "ALL_SHOTS_UPLOADED": "所有冲泡已上传" - }, - "SMART_SCALE_AUTO_START_LISTENING": "自动启动计时器?", - "SMART_SCALE_AUTO_START_LISTENING_DESCRIPTION": "当达到以下重量值时自动启动计时器", - "CHOOSE_REFERENCE_GRAPH": "选择参考图", - "RESET": "重置", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_AXIS": "定义图的起始轴", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_AXIS_DESCRIPTION": "为过滤和浓缩设置轴的起始尺寸。", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_FILTER_WEIGHT": "过滤 - 重量", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_FILTER_FLOW": "过滤 - 流速", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_ESPRESSO_WEIGHT": "浓缩 - 重量", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_ESPRESSO_FLOW": "浓缩 - 流速", - "SMART_SCALE_IGNORE_INCOMING_WEIGHT": "忽略当前传输的重量。", - "SMART_SCALE_IGNORE_INCOMING_WEIGHT_TOOLTIP": "在冲泡部分会出现一个新按钮,它将忽略来自蓝牙秤的新重量值。", - "BREWS_ACTIVE": "激活的冲泡", - "BREWS_ARCHIVED": "已归档的冲泡", - "GRAPHS": "图形", - "GRAPH_SECTION": { - "NAV_GRAPH": "图形", - "NO_ARCHIVED_ENTRIES": "没有已归档的条目", - "NO_ENTRIES": "没有条目", - "SECTION_HAS_BEEN_ACTIVATED": "图形部分已激活" - }, - "TOAST_GRAPH_ARCHIVED_SUCCESSFULLY": "图表已归档", - "TOAST_GRAPH_DELETED_SUCCESSFULLY": "图表已删除", - "TOAST_GRAPH_EDITED_SUCCESSFULLY": "图表已编辑", - "TOAST_GRAPH_ADD_SUCCESSFULLY": "图表已添加", - "NAV_GRAPH_SECTION": "图表", - "DELETE_GRAPH_QUESTION": "您要删除此图表吗?", - "PAGE_SETTINGS_SHOW_ARCHIVED_GRAPHS": "显示已归档的图表", - "PAGE_SETTINGS_SHOW_GRAPH_SECTION": "激活图表部分", - "EDIT_GRAPH": "编辑图表", - "ADD_GRAPH": "添加图表", - "GRAPH": { - "PLACE_HOLDER": { - "NAME": "图表名称", - "NOTES": "注释" + "PAGE_SETTINGS_HAPTIC_FEEDBACK_SECTION": "触觉反馈", + "HAPTIC_FEEDBACK": { + "ACTIVATE": "激活触觉反馈", + "BREW_STARTED": "冲泡开始时振动", + "BREW_STOPPED": "冲泡停止时振动", + "TARE": "秤重时振动" }, - "UPLOAD": "上传图表", - "DELETE": "删除图表", - "UPLOAD_DESCRIPTION": "导入一个.JSON文件,您可以在冲泡详细视图中下载。或者,您还可以导入社区共享的.JSON类型的图形。" - }, - "SHOW_VISUALIZER": "显示可视化器", - "NO_BREWS_FOUND": "未找到冲泡", - "NO_GRAPHS_FOUND": "未找到图表", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_AXIS": "定义图表的最大时间轴", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_DESCRIPTION": "设置过滤器和浓缩咖啡时间轴的最大秒数。", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_FILTER_AXIS_NORMAL_SCREEN": "过滤器 - 普通屏幕", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_FILTER_AXIS_FULL_SCREEN_SCREEN": "过滤器 - 全屏", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_ESPRESSO_AXIS_NORMAL_SCREEN": "浓缩咖啡 - 正常屏幕", - "PAGE_SETTINGS_TAB_BLUETOOTH_SCALE_GRAPHS_TIME_ESPRESSO_AXIS_FULL_SCREEN_SCREEN": "浓缩咖啡 - 全屏", - "PAGE_SETTINGS_DATE_FORMAT": "日期格式", - "PAGE_SETTINGS_LANGUAGE_FRANCE": "法语", - "PAGE_SETTINGS_LANGUAGE_INDONESIA": "印度尼西亚语", - "EXTRACTION_CHART_TITLE": "Extraction Chart", - "PAGE_SETTINGS_SHOW_BACKUP_ISSUES": "显示备份问题", - "PAGE_SETTINGS_SHOW_BACKUP_ISSUES_DESCRIPTION": "如果无法将备份写入文件系统,则会出现弹窗", - "AUTOMATIC_BACKUP_DID_FAIL": "自动备份未成功,请确保备份有效!可在设置中关闭此信息", - "INTERNAL_BACKUP_DID_FAIL": "内部备份未成功,请确保备份有效!可在设置中关闭此信息", - "ZIP_BACKUP_FILE_COULD_NOT_BE_BUILD": "无法保存 ZIP 文件!可在设置中关闭此信息", - "SEND_LOGS": "发送日志", - "POPOVER_BLUETOOTH_ACTION_RECONNECT_REFRACTOMETER": "重新连接折射仪设备", - "PAGE_SETTINGS_LANGUAGE_ITALIAN": "Italiano", - "PAGE_SETTINGS_LANGUAGE_POLISH": "波兰语", - "BREW_CANT_START_BECAUSE_TIMER_NOT_RESETTED_GENERAL_DESCRIPTION": "在开始之前,您需要先重置计时器", - "SMART_SCALE_FIRST_DRIP_THRESHOLD": "滴液开始的阈值", - "SMART_SCALE_FIRST_DRIP_THRESHOLD_TOOLTIP": "秤显示达到多少克时,才开始识别滴液开始?默认值:大于等于0.1克", - "PAGE_SETTINGS_BREW_TIMER_START_DELAY_ACTIVE": "开始冲泡延迟", - "PAGE_SETTINGS_BREW_TIMER_START_DELAY_ACTIVE_DESCRIPTION": "设置一个延迟时间,在开始冲泡前将显示一个加载图标", - "STARTING_IN": "从 {{time}} 开始", - "IOS_DATABASE_ISSUE_TITLE": "注意 !!!!! - 数据库连接丢失", - "IOS_DATABASE_ISSUE_DESCRIPTION": "我们很遗憾地通知您,我们遇到了无法连接数据库的问题。这个问题是由于苹果系统中一个未解决的漏洞导致的,超出了Beanconqueror的控制范围。为了防止可能的数据丢失,我们恳请您立即强制关闭Beanconqueror应用程序,然后再重新打开它。", - "RELOAD_APP": "加载应用程序中" -} + "CONNECTED": "已连接", + "DISCONNECTED": "已断开连接", + "EXPERIMENTAL_FEATURE_DISCLAIMER": "这是一个实验性功能", + "SHOW_HOURS": "显示小时", + "SHOW_MINUTES": "显示分钟", + "BEANS_UNARCHIVE": "取消归档", + "TOAST_BEAN_UNARCHIVED_SUCCESSFULLY": "咖啡豆已经取消归档", + "UPDATE_TEXT_TITLE_TITLE": { + "7.3.0": { + "TITLE": "版本 7.3.0:新增内容", + "DESCRIPTION": [ + "水质 - 添加了 Third Wave Water<\/b>", + "在水质列表中找到 Third Wave Water 的资料", + "", + "蓝牙秤<\/b>", + "支持 Bookoo-Scale - 感谢 Yannick!", + "", + "压强设备<\/b>", + "支持 Bookoo 压强传感器 - 感谢 Yannick!", + "请注意,目前不支持实际阈值自动启动。", + "", + "触觉引擎<\/b>", + "开始冲泡咖啡时让手机振动 - 实验性功能 - 在设置中启用", + "", + "[IOS] 文本转语音<\/b>", + "[IOS]启用文本转语音功能,并读出所有秤重值以及冲泡计时器 - 实验性功能 - 在设置中启用", + "", + "可视化器<\/b>", + "将萃取率发送至可视化器", + "", + "图片<\/b>", + "现在可以向左或向右排序", + "", + "冲泡<\/b>", + "打开计时器时,可以直接修改秒数", + "在计时器中隐藏小时或分钟", + "在工具栏中显示冲煮把手 Xenia 或 Meticulous 是否已连接或断开的图标", + "修复了在编辑模式下,当冲泡部分不可见时无法保存冲泡的问题", + "", + "咖啡<\/b>", + "在操作列表中取消归档咖啡", + "", + "其他<\/b>", + "代码中的一些技术变更", + "小调整" + ] + } + } +} \ No newline at end of file diff --git a/src/assets/js/plotly.min.js b/src/assets/js/plotly.min.js index 2cdbd5f81..d682b1e2f 100644 --- a/src/assets/js/plotly.min.js +++ b/src/assets/js/plotly.min.js @@ -1001,10 +1001,12 @@ } function Y(r) { return ( - r.call(c.font, q).attr({ - 'text-anchor': - { left: 'start', right: 'end' }[e.align] || 'middle', - }), + r + .call(c.font, q) + .attr({ + 'text-anchor': + { left: 'start', right: 'end' }[e.align] || 'middle', + }), h.convertToTspans(r, t, X), r ); @@ -8614,13 +8616,16 @@ t.append('rect').call(d.fill, d.addOpacity(c, 0.8)), t.append('text').classed('name', !0), t.append('path').style('stroke-width', '1px'), - t.append('text').classed('nums', !0).call(p.font, { - weight: A, - style: M, - variant: L, - family: T, - size: k, - }); + t + .append('text') + .classed('nums', !0) + .call(p.font, { + weight: A, + style: M, + variant: L, + family: T, + size: k, + }); }), At.exit().remove(), At.each(function (t) { @@ -10700,12 +10705,14 @@ y: _ / 2, }), u.setTranslate(q, 0, 0), - j.select('rect').attr({ - width: h._width - 2 * _, - height: z - 2 * _, - x: _, - y: _, - }), + j + .select('rect') + .attr({ + width: h._width - 2 * _, + height: z - 2 * _, + x: _, + y: _, + }), u.setClipUrl(q, r, t), u.setRect(G, 0, 0, 0, 0), delete h._scrollY; @@ -10731,16 +10738,18 @@ x: _ / 2, y: _ / 2, }), - j.select('rect').attr({ - width: - h._width - - 2 * _ + - p.scrollBarWidth + - p.scrollBarMargin, - height: h._effHeight - 2 * _, - x: _, - y: _ + Z, - }), + j + .select('rect') + .attr({ + width: + h._width - + 2 * _ + + p.scrollBarWidth + + p.scrollBarMargin, + height: h._effHeight - 2 * _, + x: _, + y: _ + Z, + }), u.setClipUrl(q, r, t), $(Z, B, X), N.on('wheel', function () { @@ -16761,11 +16770,13 @@ .append('g') .attr('data-index', s) .attr('drag-helper', !0); - i.append('path').attr('d', e.attr('d')).style({ - cursor: 'move', - 'stroke-width': n, - 'stroke-opacity': '0', - }); + i.append('path') + .attr('d', e.attr('d')) + .style({ + cursor: 'move', + 'stroke-width': n, + 'stroke-opacity': '0', + }); var a = { 'fill-opacity': '0' }, o = Math.max(n / 2, t); return ( @@ -39818,15 +39829,17 @@ ) { var i = e._plots[r[n]]._scene2d, a = i.toImage('png'); - e._glimages.append('svg:image').attr({ - xmlns: o.svg, - 'xlink:href': a, - x: 0, - y: 0, - width: '100%', - height: '100%', - preserveAspectRatio: 'none', - }), + e._glimages + .append('svg:image') + .attr({ + xmlns: o.svg, + 'xlink:href': a, + x: 0, + y: 0, + width: '100%', + height: '100%', + preserveAspectRatio: 'none', + }), i.destroy(); } }), @@ -40420,15 +40433,17 @@ o = a.domain, s = a._scene, c = s.toImage('png'); - e._glimages.append('svg:image').attr({ - xmlns: l.svg, - 'xlink:href': c, - x: n.l + n.w * o.x[0], - y: n.t + n.h * (1 - o.y[1]), - width: n.w * (o.x[1] - o.x[0]), - height: n.h * (o.y[1] - o.y[0]), - preserveAspectRatio: 'none', - }), + e._glimages + .append('svg:image') + .attr({ + xmlns: l.svg, + 'xlink:href': c, + x: n.l + n.w * o.x[0], + y: n.t + n.h * (1 - o.y[1]), + width: n.w * (o.x[1] - o.x[0]), + height: n.h * (o.y[1] - o.y[0]), + preserveAspectRatio: 'none', + }), s.destroy(); } }), @@ -42456,15 +42471,17 @@ var s = e[r[i]], h = s.domain, v = s._subplot.toImage('png'); - e._glimages.append('svg:image').attr({ - xmlns: l.svg, - 'xlink:href': v, - x: n.l + n.w * h.x[0], - y: n.t + n.h * (1 - h.y[1]), - width: n.w * (h.x[1] - h.x[0]), - height: n.h * (h.y[1] - h.y[0]), - preserveAspectRatio: 'none', - }); + e._glimages + .append('svg:image') + .attr({ + xmlns: l.svg, + 'xlink:href': v, + x: n.l + n.w * h.x[0], + y: n.t + n.h * (1 - h.y[1]), + width: n.w * (h.x[1] - h.x[0]), + height: n.h * (h.y[1] - h.y[0]), + preserveAspectRatio: 'none', + }); var g = u.select(s._subplot.div); if ( null !== g.select('.mapboxgl-ctrl-logo').node().offsetParent @@ -42474,11 +42491,14 @@ 'transform', a(n.l + n.w * h.x[0] + 10, n.t + n.h * (1 - h.y[0]) - 31) ), - y.append('path').attr('d', d.mapboxLogo.path0).style({ - opacity: 0.9, - fill: '#ffffff', - 'enable-background': 'new', - }), + y + .append('path') + .attr('d', d.mapboxLogo.path0) + .style({ + opacity: 0.9, + fill: '#ffffff', + 'enable-background': 'new', + }), y .append('path') .attr('d', d.mapboxLogo.path1) @@ -42504,13 +42524,15 @@ .replace('Improve this map', ''), x = e._glimages.append('g'), b = x.append('text'); - b.text(m).classed('static-attribution', !0).attr({ - 'font-size': 12, - 'font-family': 'Arial', - color: 'rgba(0, 0, 0, 0.75)', - 'text-anchor': 'end', - 'data-unformatted': m, - }); + b.text(m) + .classed('static-attribution', !0) + .attr({ + 'font-size': 12, + 'font-family': 'Arial', + color: 'rgba(0, 0, 0, 0.75)', + 'text-anchor': 'end', + 'data-unformatted': m, + }); var _ = c.bBox(b.node()), w = n.w * (h.x[1] - h.x[0]); if (_.width > w / 2) { @@ -42522,13 +42544,15 @@ (_ = c.bBox(b.node())); } b.attr('transform', a(-3, 8 - _.height)), - x.insert('rect', '.static-attribution').attr({ - x: -_.width - 6, - y: -_.height - 3, - width: _.width + 6, - height: _.height + 3, - fill: 'rgba(255, 255, 255, 0.75)', - }); + x + .insert('rect', '.static-attribution') + .attr({ + x: -_.width - 6, + y: -_.height - 3, + width: _.width + 6, + height: _.height + 3, + fill: 'rgba(255, 255, 255, 0.75)', + }); var k = 1; _.width + 6 > w && (k = w / (_.width + 6)); var A = [n.l + n.w * h.x[1], n.t + n.h * (1 - h.y[0])]; @@ -43632,11 +43656,13 @@ .append('div') .attr('id', 'hiddenform') .style('display', 'none'), - i = r.append('form').attr({ - action: e + '/external', - method: 'post', - target: '_blank', - }); + i = r + .append('form') + .attr({ + action: e + '/external', + method: 'post', + target: '_blank', + }); return ( (i .append('input') @@ -69952,13 +69978,15 @@ A = o.rangefont, M = i.extendDeepNoArrays({}, u, { color: l.map( - n.scale.linear().domain( - k({ - values: l, - range: [f.min, f.max], - _length: o._length, - }) - ) + n.scale + .linear() + .domain( + k({ + values: l, + range: [f.min, f.max], + _length: o._length, + }) + ) ), blockLineCount: x.blockLineCount, canvasOverdrag: x.overdrag * x.canvasPixelRatio, @@ -128490,17 +128518,20 @@ if (At < 0) { var i = c(t); if (i.scrollX || i.scrollY) { - var o = (r = a.select('body').append('svg').style( - { - position: 'absolute', - top: 0, - left: 0, - margin: 0, - padding: 0, - border: 'none', - }, - 'important' - ))[0][0].getScreenCTM(); + var o = (r = a + .select('body') + .append('svg') + .style( + { + position: 'absolute', + top: 0, + left: 0, + margin: 0, + padding: 0, + border: 'none', + }, + 'important' + ))[0][0].getScreenCTM(); (At = !(o.f || o.e)), r.remove(); } } diff --git a/src/classes/devices/bluetoothDevice.ts b/src/classes/devices/bluetoothDevice.ts index f2e97dc4b..f35ac58fa 100644 --- a/src/classes/devices/bluetoothDevice.ts +++ b/src/classes/devices/bluetoothDevice.ts @@ -70,6 +70,11 @@ export class BluetoothScale { return 0; } + public resetSmoothedValue() { + this.weight.smoothed = 0; + this.weight.oldSmoothed = 0; + } + public getSmoothedWeight(): number { return 0; } diff --git a/src/classes/devices/bokooScale.ts b/src/classes/devices/bokooScale.ts new file mode 100644 index 000000000..e226786cf --- /dev/null +++ b/src/classes/devices/bokooScale.ts @@ -0,0 +1,132 @@ +import { PeripheralData } from './ble.types'; +import { BluetoothScale, SCALE_TIMER_COMMAND, Weight } from './bluetoothDevice'; +import { Logger } from './common/logger'; +import { ScaleType } from './index'; + +declare var ble: any; +export class BookooScale extends BluetoothScale { + public static DEVICE_NAME = 'bookoo_sc'; + public static SERVICE_UUID = '0FFE'; + public static CHAR_UUID = 'FF11'; + public static CMD_UUID = 'FF12'; + + protected override weight: Weight = { + actual: 0, + old: 0, + smoothed: 0, + oldSmoothed: 0, + }; + + private logger: Logger; + + constructor(data: PeripheralData, type: ScaleType) { + super(data, type); + this.logger = new Logger('Bookoo Scale'); + this.connect(); + } + + public static test(device: any): boolean { + return ( + device && + device.name && + device.name.toLowerCase().includes(this.DEVICE_NAME) + ); + } + + public override async connect() { + this.logger.log('connecting...'); + await this.attachNotification(); + } + + public override async tare() { + this.weight.smoothed = 0; + this.weight.actual = 0; + this.weight.oldSmoothed = 0; + this.weight.old = 0; + this.setWeight(0); + + await this.write(new Uint8Array([0x03, 0x0a, 0x01, 0x00, 0x00, 0x08])); + } + + public override disconnectTriggered(): void { + this.logger.log('Disconnecting...'); + this.deattachNotification(); + } + + public override async setTimer(_timer: SCALE_TIMER_COMMAND) { + this.logger.log('Setting Timer command ' + _timer + '...'); + + if (_timer === SCALE_TIMER_COMMAND.START) { + await this.write(new Uint8Array([0x03, 0x0a, 0x04, 0x00, 0x00, 0x0a])); + } else if (_timer === SCALE_TIMER_COMMAND.STOP) { + await this.write(new Uint8Array([0x03, 0x0a, 0x05, 0x00, 0x00, 0x0d])); + } else if (_timer === SCALE_TIMER_COMMAND.RESET) { + await this.write(new Uint8Array([0x03, 0x0a, 0x06, 0x00, 0x00, 0x0d])); + } + } + + public override getWeight() { + return this.weight.actual; + } + + public override getSmoothedWeight() { + return this.weight.smoothed; + } + + public override getOldSmoothedWeight() { + return this.weight.old; + } + + private write(_bytes: Uint8Array) { + return new Promise((resolve, reject) => { + ble.write( + this.device_id, + BookooScale.SERVICE_UUID, + BookooScale.CMD_UUID, + _bytes.buffer, + (e: any) => { + resolve(true); + }, + (e: any) => { + resolve(false); + } + ); + }); + } + + private async attachNotification() { + ble.startNotification( + this.device_id, + BookooScale.SERVICE_UUID, + BookooScale.CHAR_UUID, + async (_data: any) => { + this.parseStatusUpdate(new Uint8Array(_data)); + }, + (_data: any) => {} + ); + } + + private async parseStatusUpdate(bookooRawStatus: Uint8Array) { + if (bookooRawStatus.length === 20) { + this.batteryLevel = bookooRawStatus[13]; + let weight = + (bookooRawStatus[7] << 16) + + (bookooRawStatus[8] << 8) + + bookooRawStatus[9]; + if (bookooRawStatus[6] == 45) { + weight = weight * -1; + } + this.setWeight(weight / 100); + } + } + + private async deattachNotification() { + ble.stopNotification( + this.device_id, + BookooScale.SERVICE_UUID, + BookooScale.CHAR_UUID, + (e: any) => {}, + (e: any) => {} + ); + } +} diff --git a/src/classes/devices/bookooPressure.ts b/src/classes/devices/bookooPressure.ts new file mode 100644 index 000000000..33e5ecfcf --- /dev/null +++ b/src/classes/devices/bookooPressure.ts @@ -0,0 +1,115 @@ +import { PeripheralData } from './ble.types'; + +import { Pressure, PressureDevice, psiToBar } from './pressureBluetoothDevice'; + +declare var ble: any; +export class BookooPressure extends PressureDevice { + public static DEVICE_NAME = 'bookoo_em'; + public static PRESSURE_SERVICE_UUID = '0FFF'; + public static PRESSURE_CMD_UUID = 'FF01'; + public static PRESSURE_PRESSURE_UUID = 'FF02'; + public static PRESSURE_POWER_UUID = 'FF03'; + + constructor(data: PeripheralData) { + super(data); + this.connect(); + } + + public static test(device: any): boolean { + return ( + device && + device.name && + device.name.toLowerCase().includes(BookooPressure.DEVICE_NAME) + ); + } + + public connect() { + this.attachNotification(); + } + + public updateZero(): Promise { + return new Promise((resolve, reject) => { + // not available + }); + } + + public enableValueTransmission(): Promise { + const data = new Uint8Array([0x02, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x0f]); + + return new Promise((resolve, reject) => { + ble.write( + this.device_id, + BookooPressure.PRESSURE_SERVICE_UUID, + BookooPressure.PRESSURE_CMD_UUID, + data.buffer, + () => { + resolve(); + }, + () => { + reject(); + } + ); + }); + } + + public disableValueTransmission(): Promise { + const data = new Uint8Array([0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0e]); + + return new Promise((resolve, reject) => { + ble.write( + this.device_id, + BookooPressure.PRESSURE_SERVICE_UUID, + BookooPressure.PRESSURE_CMD_UUID, + data.buffer, + () => { + resolve(); + }, + () => { + reject(); + } + ); + }); + } + + public disconnect() { + this.disableValueTransmission().catch(() => {}); + this.deattachNotification(); + } + + private toFixedIfNecessary(value: any, dp: number) { + const parsedFloat = parseFloat(value); + if (isNaN(parsedFloat)) { + return 0; + } + return +parsedFloat.toFixed(dp); + } + + private attachNotification() { + ble.startNotification( + this.device_id, + BookooPressure.PRESSURE_SERVICE_UUID, + BookooPressure.PRESSURE_PRESSURE_UUID, + async (_data: any) => { + if (_data.byteLength === 10) { + const pressureData = new Uint8Array(_data); + const val = (pressureData[4] << 8) + pressureData[5]; + let actualPressure: any = 0; + actualPressure = this.toFixedIfNecessary(val, 1); + this.setPressure(actualPressure / 100, _data, val); + } + }, + (_data: any) => {} + ); + } + + private deattachNotification() { + // stop pressure reading + ble.stopNotification( + this.device_id, + BookooPressure.PRESSURE_SERVICE_UUID, + BookooPressure.PRESSURE_PRESSURE_UUID, + (e: any) => {}, + (e: any) => {} + ); + } +} diff --git a/src/classes/devices/index.ts b/src/classes/devices/index.ts index ea98ccf24..0253526d9 100644 --- a/src/classes/devices/index.ts +++ b/src/classes/devices/index.ts @@ -20,6 +20,8 @@ import { BlackcoffeeScale } from './blackcoffeeScale'; import { DifluidMicrobalanceTi } from './difluidMicrobalanceTi'; import { DiyPythonCoffeeScale } from './diyPythonCoffeeScale'; import { DiyRustCoffeeScale } from './diyRustCoffeeScale'; +import { BookooPressure } from './bookooPressure'; +import { BookooScale } from './bokooScale'; export { BluetoothScale, SCALE_TIMER_COMMAND } from './bluetoothDevice'; export * from './common'; @@ -37,12 +39,14 @@ export enum ScaleType { BLACKCOFFEE = 'BLACKCOFFEE', DIYPYTHONCOFFEESCALE = 'DIYPYTHONCOFFEESCALE', DIYRUSTCOFFEESCALE = 'DIYRUSTCOFFEESCALE', + BOKOOSCALE = 'BOOKOOSCALE', } export enum PressureType { POPSICLE = 'POPSICLE', DIRECT = 'DIRECT', PRS = 'PRS', + BOKOOPRESSURE = 'BOKOOPRESSURE', } export enum TemperatureType { @@ -82,6 +86,8 @@ export function makeDevice( return new DiyPythonCoffeeScale(data, type); case ScaleType.DIYRUSTCOFFEESCALE: return new DiyRustCoffeeScale(data, type); + case ScaleType.BOKOOSCALE: + return new BookooScale(data, type); default: return null; } @@ -98,6 +104,8 @@ export function makePressureDevice( return new TransducerDirectPressure(data); case PressureType.PRS: return new PrsPressure(data); + case PressureType.BOKOOPRESSURE: + return new BookooPressure(data); default: return null; } diff --git a/src/classes/devices/popsiclePressure.ts b/src/classes/devices/popsiclePressure.ts index d938ebb7f..44633481f 100644 --- a/src/classes/devices/popsiclePressure.ts +++ b/src/classes/devices/popsiclePressure.ts @@ -77,4 +77,11 @@ export class PopsiclePressure extends PressureDevice { (e: any) => {} ); } + + public enableValueTransmission(): void { + // not needed for this device + } + public disableValueTransmission(): void { + // not needed for this device + } } diff --git a/src/classes/devices/pressureBluetoothDevice.ts b/src/classes/devices/pressureBluetoothDevice.ts index ffb529e65..e4a228237 100644 --- a/src/classes/devices/pressureBluetoothDevice.ts +++ b/src/classes/devices/pressureBluetoothDevice.ts @@ -44,6 +44,8 @@ export abstract class PressureDevice { public abstract connect(): void; public abstract disconnect(): void; public abstract updateZero(): Promise; + public abstract enableValueTransmission(): void; + public abstract disableValueTransmission(): void; public getPressure() { return this.pressure.actual; diff --git a/src/classes/devices/prsPressure.ts b/src/classes/devices/prsPressure.ts index 317d7b40d..f776056cf 100644 --- a/src/classes/devices/prsPressure.ts +++ b/src/classes/devices/prsPressure.ts @@ -98,4 +98,11 @@ export class PrsPressure extends PressureDevice { (e: any) => {} ); } + + public enableValueTransmission(): void { + // not needed for this device + } + public disableValueTransmission(): void { + // not needed for this device + } } diff --git a/src/classes/devices/transducerDirectPressure.ts b/src/classes/devices/transducerDirectPressure.ts index 9934019ce..3a9c3560e 100644 --- a/src/classes/devices/transducerDirectPressure.ts +++ b/src/classes/devices/transducerDirectPressure.ts @@ -79,6 +79,12 @@ export class TransducerDirectPressure extends PressureDevice { (e: any) => {} ); } + public enableValueTransmission(): void { + // not needed for this device + } + public disableValueTransmission(): void { + // not needed for this device + } } function swap16(val: any) { diff --git a/src/classes/preparation/preparation.ts b/src/classes/preparation/preparation.ts index 22edd63b0..ea7783a25 100755 --- a/src/classes/preparation/preparation.ts +++ b/src/classes/preparation/preparation.ts @@ -12,7 +12,6 @@ import { UIHelper } from '../../services/uiHelper'; import { ListViewBrewParameter } from '../parameter/listViewBrewParameter'; import { RepeatBrewParameter } from '../parameter/repeatBrewParameter'; import { ConnectedPreparationDevice } from '../preparationDevice/connectedPreparationDevice'; -import { setParseTemplateAsSourceFileForTest } from '@angular/compiler-cli/src/ngtsc/typecheck/diagnostics'; export class Preparation implements IPreparation { public name: string; diff --git a/src/classes/preparationDevice/meticulous/meticulousDevice.ts b/src/classes/preparationDevice/meticulous/meticulousDevice.ts index 345effa2f..ee5022dec 100644 --- a/src/classes/preparationDevice/meticulous/meticulousDevice.ts +++ b/src/classes/preparationDevice/meticulous/meticulousDevice.ts @@ -168,6 +168,7 @@ export class MeticulousDevice extends PreparationDevice { flowSensor_flow: data.sensors.f, loadcell_weight: data.sensors.w, display_temp: data.sensors.t, + extracting: data.extracting, }; if (this.meticulousShotData === undefined) { @@ -178,6 +179,7 @@ export class MeticulousDevice extends PreparationDevice { currentShotData.pressure = data.sensors.p; currentShotData.shotTime = data.time; currentShotData.temperature = data.sensors.t; + currentShotData.extracting = data.extracting; this.meticulousShotData = currentShotData; } else { @@ -187,6 +189,7 @@ export class MeticulousDevice extends PreparationDevice { this.meticulousShotData.pressure = data.sensors.p; this.meticulousShotData.shotTime = data.time; this.meticulousShotData.temperature = data.sensors.t; + this.meticulousShotData.extracting = data.extracting; } }); }); diff --git a/src/classes/preparationDevice/meticulous/meticulousShotData.ts b/src/classes/preparationDevice/meticulous/meticulousShotData.ts index 1654cfd7b..08637582f 100644 --- a/src/classes/preparationDevice/meticulous/meticulousShotData.ts +++ b/src/classes/preparationDevice/meticulous/meticulousShotData.ts @@ -11,6 +11,8 @@ export class MeticulousShotData implements IMeticulousShotData { public oldWeight: number; public smoothedWeight: number; public oldSmoothedWeight: number; + + public extracting: boolean; constructor() { this.status = ''; this.shotTime = 0; @@ -21,6 +23,7 @@ export class MeticulousShotData implements IMeticulousShotData { this.oldWeight = 0; this.smoothedWeight = 0; this.oldSmoothedWeight = 0; + this.extracting = false; } protected calculateSmoothedWeight( diff --git a/src/classes/settings/settings.ts b/src/classes/settings/settings.ts index 9f0dbcb84..2e2e9a236 100755 --- a/src/classes/settings/settings.ts +++ b/src/classes/settings/settings.ts @@ -189,6 +189,18 @@ export class Settings implements ISettings { public show_backup_issues: boolean; + public text_to_speech_active: boolean; + public text_to_speech_rate: number; + public text_to_speech_pitch: number; + public text_to_speech_interval_rate: number; + + public haptic_feedback_active: boolean; + public haptic_feedback_brew_started: boolean; + public haptic_feedback_brew_stopped: boolean; + public haptic_feedback_tare: boolean; + + public brew_timer_show_hours: boolean; + public brew_timer_show_minutes: boolean; public GET_BEAN_FILTER(): IBeanPageFilter { const upperRating: number = this.bean_rating; return { @@ -428,6 +440,19 @@ export class Settings implements ISettings { this.visualizer_upload_automatic = false; this.show_backup_issues = true; + + this.text_to_speech_active = false; + this.text_to_speech_rate = 1; + this.text_to_speech_pitch = 3; + this.text_to_speech_interval_rate = 500; + + this.haptic_feedback_active = false; + this.haptic_feedback_brew_started = false; + this.haptic_feedback_brew_stopped = false; + this.haptic_feedback_tare = false; + + this.brew_timer_show_hours = true; + this.brew_timer_show_minutes = true; } public initializeByObject(settingsObj: ISettings): void { diff --git a/src/classes/version/iVersion.ts b/src/classes/version/iVersion.ts index 1dbff4d34..d021c7d4e 100755 --- a/src/classes/version/iVersion.ts +++ b/src/classes/version/iVersion.ts @@ -60,29 +60,7 @@ export class Version implements IVersion { * We dont set this to a variable, else it would be stored in DB and wrongly overwritten */ private getUpdatedVersions() { - return [ - '5.0.0', - '5.1.0', - '5.2.0', - '5.3.1', - '5.4.0', - '6.0.0', - '6.1.0', - '6.1.5', - '6.2.0', - '6.3.0', - '6.4.0', - '6.4.10', - '6.4.20', - '6.5.0', - '6.5.1', - '6.6.0', - '6.6.1', - '6.6.2', - '7.0.0', - '7.1.0', - '7.2.0', - ]; + return ['7.3.0']; } private versionCompare(_actualAppVersion, _updateVersion) { diff --git a/src/classes/visualizer/brewVisualizer.ts b/src/classes/visualizer/brewVisualizer.ts index d949e2676..f3aa2e2fa 100755 --- a/src/classes/visualizer/brewVisualizer.ts +++ b/src/classes/visualizer/brewVisualizer.ts @@ -55,6 +55,7 @@ export class BrewVisualizer implements IBrewVisualizer { public brew_beverage_quantity_type: BREW_QUANTITY_TYPES_ENUM; + public ey: number; constructor() { this.grind_size = ''; this.grind_weight = 0; @@ -86,5 +87,6 @@ export class BrewVisualizer implements IBrewVisualizer { this.vessel_name = ''; this.vessel_weight = 0; this.config = new Config(); + this.ey = 0; } } diff --git a/src/classes/visualizer/visualizer.ts b/src/classes/visualizer/visualizer.ts index baef0227e..8fe1d7cd4 100755 --- a/src/classes/visualizer/visualizer.ts +++ b/src/classes/visualizer/visualizer.ts @@ -35,7 +35,12 @@ export class Visualizer implements IVisualizer { public mapBrew(brew: Brew) { Object.keys(this.brew).map((_key) => { - this.brew[_key] = brew[_key]; + if (brew.hasOwnProperty(_key)) { + // We added this, because we have one key - the "EY" field, which is not existing on the normal brew one. + this.brew[_key] = brew[_key]; + } else { + // This should be the EY key ;) + } }); } public mapBean(bean: Bean) { diff --git a/src/classes/water/water.ts b/src/classes/water/water.ts index a71355e25..78622e1ae 100755 --- a/src/classes/water/water.ts +++ b/src/classes/water/water.ts @@ -8,6 +8,8 @@ import { IWater } from '../../interfaces/water/iWater'; import { WATER_UNIT } from '../../enums/water/waterUnit'; import { WATER_UNIT_TDS } from '../../enums/water/waterUnitTds'; +import { WATER_TYPES } from '../../enums/water/waterTypes'; + export class Water implements IWater { public name: string; @@ -34,6 +36,7 @@ export class Water implements IWater { public tds: number; public tds_type: WATER_UNIT_TDS; + public type: WATER_TYPES; constructor() { this.name = ''; @@ -57,6 +60,8 @@ export class Water implements IWater { this.sodium_type = 'UNKNOWN' as WATER_UNIT; this.potassium_type = 'UNKNOWN' as WATER_UNIT; this.tds_type = 'PPM' as WATER_UNIT_TDS; + + this.type = 'CUSTOM_WATER' as WATER_TYPES; } public initializeByObject(_obj: IWater): void { @@ -66,4 +71,28 @@ export class Water implements IWater { public hasPhotos() { return this.attachments && this.attachments.length > 0; } + + public getIcon(_key?: WATER_TYPES): string { + if (_key === undefined) { + _key = this.type; + } + switch (_key) { + case WATER_TYPES.CUSTOM_WATER: + return 'water-outline'; + case WATER_TYPES.THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE: + return 'beanconqueror-third-wave-water-classic-light-roast-profile'; + case WATER_TYPES.THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE: + return 'beanconqueror-third-wave-water-medium-roast-profile'; + case WATER_TYPES.THIRD_WAVE_WATER_DARK_ROAST_PROFILE: + return 'beanconqueror-third-wave-water-dark-roast-profile'; + case WATER_TYPES.THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE: + return 'beanconqueror-third-wave-water-espresso-machine-profile'; + case WATER_TYPES.THIRD_WAVE_WATER_COLD_BREW_PROFILE: + return 'beanconqueror-third-wave-water-cold-brew-profile'; + case WATER_TYPES.THIRD_WAVE_WATER_LOW_ACID_PROFILE: + return 'beanconqueror-third-wave-water-low-acid-profile'; + default: + return 'water-outline'; + } + } } diff --git a/src/components/bean-information/bean-information.component.html b/src/components/bean-information/bean-information.component.html index e514d8a26..75aa220ed 100644 --- a/src/components/bean-information/bean-information.component.html +++ b/src/components/bean-information/bean-information.component.html @@ -119,10 +119,6 @@ {{'BEAN_DATA_COST' | translate}}
{{bean?.cost}} - - {{'BEAN_DATA_AROMATICS' | translate}}
- {{bean?.aromatics}} -
{{'BEAN_DATA_CUPPING_POINTS' | translate}}
{{bean?.cupping_points}} @@ -139,7 +135,11 @@ {{'BEAN_DATA_EAN' | translate}}
{{bean?.ean_article_number}}
- + + {{'BEAN_DATA_AROMATICS' | translate}}
+ {{bean?.aromatics}} +
+ {{'NOTES' | translate}}
{{bean?.note}}
diff --git a/src/components/bean-information/bean-information.component.spec.ts b/src/components/bean-information/bean-information.component.spec.ts index ee1ee58cd..292c77d0c 100644 --- a/src/components/bean-information/bean-information.component.spec.ts +++ b/src/components/bean-information/bean-information.component.spec.ts @@ -15,7 +15,7 @@ describe('BeanInformationComponent', () => { let component: BeanInformationComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [BeanInformationComponent], imports: [ @@ -33,7 +33,9 @@ describe('BeanInformationComponent', () => { { provide: SocialSharing }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(BeanInformationComponent); component = fixture.componentInstance; component.bean = new Bean(); diff --git a/src/components/bean-information/bean-information.component.ts b/src/components/bean-information/bean-information.component.ts index ca2d6c2d5..a4de7e820 100644 --- a/src/components/bean-information/bean-information.component.ts +++ b/src/components/bean-information/bean-information.component.ts @@ -225,6 +225,9 @@ export class BeanInformationComponent implements OnInit { case BEAN_ACTION.REPEAT_LAST_OR_BEST_BREW: await this.repeatLastOrBestBrew(); break; + case BEAN_ACTION.UNARCHIVE: + await this.unarchiveBean(); + break; default: break; } @@ -245,7 +248,6 @@ export class BeanInformationComponent implements OnInit { } public async beansConsumed() { await this.uiBeanHelper.archiveBeanWithRatingQuestion(this.bean); - await this.resetSettings(); /* this.uiAnalytics.trackEvent(BEAN_TRACKING.TITLE, BEAN_TRACKING.ACTIONS.ARCHIVE); @@ -255,6 +257,17 @@ export class BeanInformationComponent implements OnInit { */ } + public async unarchiveBean() { + this.uiAnalytics.trackEvent( + BEAN_TRACKING.TITLE, + BEAN_TRACKING.ACTIONS.UNARCHIVE + ); + this.bean.finished = false; + await this.uiBeanStorage.update(this.bean); + this.uiToast.showInfoToast('TOAST_BEAN_UNARCHIVED_SUCCESSFULLY'); + await this.resetSettings(); + } + public async toggleFavourite() { if (!this.bean.favourite) { this.uiAnalytics.trackEvent( diff --git a/src/components/beans/bean-general-information/bean-general-information.component.html b/src/components/beans/bean-general-information/bean-general-information.component.html index 9d037628b..e6546185f 100644 --- a/src/components/beans/bean-general-information/bean-general-information.component.html +++ b/src/components/beans/bean-general-information/bean-general-information.component.html @@ -68,7 +68,7 @@ - +
diff --git a/src/components/beans/bean-general-information/bean-general-information.component.spec.ts b/src/components/beans/bean-general-information/bean-general-information.component.spec.ts index 94fdfd448..3dd74c0ad 100644 --- a/src/components/beans/bean-general-information/bean-general-information.component.spec.ts +++ b/src/components/beans/bean-general-information/bean-general-information.component.spec.ts @@ -15,7 +15,7 @@ describe('BeanGeneralInformationComponent', () => { let component: BeanGeneralInformationComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [BeanGeneralInformationComponent, KeysPipe], imports: [IonicModule.forRoot(), TranslateModule.forRoot(), FormsModule], @@ -24,7 +24,9 @@ describe('BeanGeneralInformationComponent', () => { { provide: UIHelper, useClass: UIHelperMock }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(BeanGeneralInformationComponent); component = fixture.componentInstance; component.data = { diff --git a/src/components/beans/bean-general-information/bean-general-information.component.ts b/src/components/beans/bean-general-information/bean-general-information.component.ts index 7d3cdcc91..b5c0b96a3 100644 --- a/src/components/beans/bean-general-information/bean-general-information.component.ts +++ b/src/components/beans/bean-general-information/bean-general-information.component.ts @@ -64,6 +64,15 @@ export class BeanGeneralInformationComponent implements OnInit { this.settings = this.uiSettingsStorage.getSettings(); } + public pinFormatter(value: any) { + const parsedFloat = parseFloat(value); + if (isNaN(parsedFloat)) { + return `${0}`; + } + const newValue = +parsedFloat.toFixed(2); + return `${newValue}`; + } + public ngOnInit() { this.maxBeanRating = this.settings.bean_rating; this.initialBeanData = this.uiHelper.cloneData(this.data); diff --git a/src/components/beans/bean-roast-information/bean-roast-information.component.spec.ts b/src/components/beans/bean-roast-information/bean-roast-information.component.spec.ts index 2a3d2846e..f0861f5e0 100644 --- a/src/components/beans/bean-roast-information/bean-roast-information.component.spec.ts +++ b/src/components/beans/bean-roast-information/bean-roast-information.component.spec.ts @@ -13,7 +13,7 @@ describe('BeanRoastInformationComponent', () => { let component: BeanRoastInformationComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [BeanRoastInformationComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot(), FormsModule], @@ -22,7 +22,9 @@ describe('BeanRoastInformationComponent', () => { { provide: UIHelper, useClass: UIHelperMock }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(BeanRoastInformationComponent); component = fixture.componentInstance; component.data = { diff --git a/src/components/beans/bean-roast-information/bean-roast-information.component.ts b/src/components/beans/bean-roast-information/bean-roast-information.component.ts index 05afc6fc8..82bff2231 100644 --- a/src/components/beans/bean-roast-information/bean-roast-information.component.ts +++ b/src/components/beans/bean-roast-information/bean-roast-information.component.ts @@ -55,7 +55,7 @@ export class BeanRoastInformationComponent implements OnInit { cssClass: 'popover-actions', animated: true, breakpoints: [0, 0.5, 0.75, 1], - initialBreakpoint: 0.5, + initialBreakpoint: 0.75, componentProps: { displayingTime: this.displayingTime }, }); await modal.present(); diff --git a/src/components/beans/bean-sort-information/bean-sort-information.component.spec.ts b/src/components/beans/bean-sort-information/bean-sort-information.component.spec.ts index 708a31e99..40079e3e8 100644 --- a/src/components/beans/bean-sort-information/bean-sort-information.component.spec.ts +++ b/src/components/beans/bean-sort-information/bean-sort-information.component.spec.ts @@ -12,7 +12,7 @@ describe('BeanSortInformationComponent', () => { let component: BeanSortInformationComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [BeanSortInformationComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], @@ -21,7 +21,9 @@ describe('BeanSortInformationComponent', () => { { provide: UIHelper, useClass: UIHelperMock }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(BeanSortInformationComponent); component = fixture.componentInstance; component.data = { diff --git a/src/components/beans/detail/bean-detail-sort-information/bean-detail-sort-information.component.spec.ts b/src/components/beans/detail/bean-detail-sort-information/bean-detail-sort-information.component.spec.ts index 7367caa38..86814fa16 100644 --- a/src/components/beans/detail/bean-detail-sort-information/bean-detail-sort-information.component.spec.ts +++ b/src/components/beans/detail/bean-detail-sort-information/bean-detail-sort-information.component.spec.ts @@ -12,7 +12,7 @@ describe('BeanDetailSortInformationComponent', () => { let component: BeanDetailSortInformationComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [BeanDetailSortInformationComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], @@ -21,7 +21,9 @@ describe('BeanDetailSortInformationComponent', () => { { provide: UIHelper, useClass: UIHelperMock }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(BeanDetailSortInformationComponent); component = fixture.componentInstance; component.data = new Bean(); diff --git a/src/components/beans/green-bean-general-information/green-bean-general-information.component.spec.ts b/src/components/beans/green-bean-general-information/green-bean-general-information.component.spec.ts index 039a3f39f..04520a923 100644 --- a/src/components/beans/green-bean-general-information/green-bean-general-information.component.spec.ts +++ b/src/components/beans/green-bean-general-information/green-bean-general-information.component.spec.ts @@ -13,7 +13,7 @@ describe('GreenBeanGeneralInformationComponent', () => { let component: GreenBeanGeneralInformationComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [GreenBeanGeneralInformationComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot(), FormsModule], @@ -22,7 +22,9 @@ describe('GreenBeanGeneralInformationComponent', () => { { provide: UIHelper, useClass: UIHelperMock }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(GreenBeanGeneralInformationComponent); component = fixture.componentInstance; component.data = { diff --git a/src/components/brew-graph-reference-card/brew-graph-reference-card.component.spec.ts b/src/components/brew-graph-reference-card/brew-graph-reference-card.component.spec.ts index 74f5fdfc3..0c859cc16 100644 --- a/src/components/brew-graph-reference-card/brew-graph-reference-card.component.spec.ts +++ b/src/components/brew-graph-reference-card/brew-graph-reference-card.component.spec.ts @@ -17,7 +17,7 @@ describe('BrewGraphReferenceCardComponent', () => { let component: BrewGraphReferenceCardComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [BrewGraphReferenceCardComponent, FormatDatePipe], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], @@ -26,7 +26,9 @@ describe('BrewGraphReferenceCardComponent', () => { { provide: UIHelper, useClass: UIHelperMock }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(BrewGraphReferenceCardComponent); component = fixture.componentInstance; component.brew = { diff --git a/src/components/brew-timer/brew-timer.component.ts b/src/components/brew-timer/brew-timer.component.ts index 4e9ea67fd..1a604c845 100644 --- a/src/components/brew-timer/brew-timer.component.ts +++ b/src/components/brew-timer/brew-timer.component.ts @@ -418,7 +418,7 @@ export class BrewTimerComponent implements OnInit, OnDestroy { cssClass: 'popover-actions', animated: true, breakpoints: [0, 0.5, 0.75, 1], - initialBreakpoint: 0.5, + initialBreakpoint: 0.75, componentProps: { displayingTime: this.displayingTime }, }); await modal.present(); diff --git a/src/components/brews/brew-brewing-graph/brew-brewing-graph.component.spec.ts b/src/components/brews/brew-brewing-graph/brew-brewing-graph.component.spec.ts index 622c2cbe4..ada850f7f 100644 --- a/src/components/brews/brew-brewing-graph/brew-brewing-graph.component.spec.ts +++ b/src/components/brews/brew-brewing-graph/brew-brewing-graph.component.spec.ts @@ -1,57 +1,57 @@ -// import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -// import { IonicModule } from '@ionic/angular'; -// -// import { BrewBrewingGraphComponent } from './brew-brewing-graph.component'; -// import { Storage } from '@ionic/storage'; -// import { TranslateModule } from '@ngx-translate/core'; -// import { UIHelper } from '../../../services/uiHelper'; -// import { UIHelperMock } from '../../../classes/mock'; -// import { HttpClientTestingModule } from '@angular/common/http/testing'; -// import { File } from '@awesome-cordova-plugins/file/ngx'; -// import { SocialSharing } from '@awesome-cordova-plugins/social-sharing/ngx'; -// import { FileTransfer } from '@awesome-cordova-plugins/file-transfer/ngx'; -// import { Brew } from '../../../classes/brew/brew'; -// import { Preparation } from '../../../classes/preparation/preparation'; -// -// describe('BrewBrewingGraphComponent', () => { -// let component: BrewBrewingGraphComponent; -// let fixture: ComponentFixture; -// -// beforeEach(waitForAsync(() => { -// TestBed.configureTestingModule({ -// declarations: [BrewBrewingGraphComponent], -// imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule], -// providers: [{ -// provide: Storage -// }, -// { -// provide: UIHelper, -// useClass: UIHelperMock -// }, -// { -// provide: File -// }, -// { -// provide: SocialSharing -// }, -// { -// provide: FileTransfer -// }] -// }).compileComponents(); -// -// fixture = TestBed.createComponent(BrewBrewingGraphComponent); -// component = fixture.componentInstance; -// component.data = { -// getPreparation(): Preparation { -// return new Preparation(); -// } -// } as Brew; -// -// fixture.detectChanges(); -// })); -// -// it('should create', () => { -// expect(component).toBeTruthy(); -// }); -// }); -// FIXME Untestable because the variables get reassigned mutliple times in methods and cant be mocked +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { BrewBrewingGraphComponent } from './brew-brewing-graph.component'; +import { Storage } from '@ionic/storage'; +import { TranslateModule } from '@ngx-translate/core'; +import { UIHelper } from '../../../services/uiHelper'; +import { UIHelperMock } from '../../../classes/mock'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { File } from '@awesome-cordova-plugins/file/ngx'; +import { SocialSharing } from '@awesome-cordova-plugins/social-sharing/ngx'; +import { FileTransfer } from '@awesome-cordova-plugins/file-transfer/ngx'; +import { Brew } from '../../../classes/brew/brew'; +import { Preparation } from '../../../classes/preparation/preparation'; + +describe('BrewBrewingGraphComponent', () => { + let component: BrewBrewingGraphComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [BrewBrewingGraphComponent], + imports: [ + IonicModule.forRoot(), + TranslateModule.forRoot(), + HttpClientTestingModule, + ], + providers: [ + { provide: Storage }, + { provide: UIHelper, useClass: UIHelperMock }, + { provide: File }, + { provide: SocialSharing }, + { provide: FileTransfer }, + ], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BrewBrewingGraphComponent); + component = fixture.componentInstance; + + component.data = new MockBrew(); + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); + +class MockBrew extends Brew { + public _preparation: Preparation = new Preparation(); + + public getPreparation(): Preparation { + return this._preparation; + } +} diff --git a/src/components/brews/brew-brewing-graph/brew-brewing-graph.component.ts b/src/components/brews/brew-brewing-graph/brew-brewing-graph.component.ts index 2bef13f30..02d6600bd 100644 --- a/src/components/brews/brew-brewing-graph/brew-brewing-graph.component.ts +++ b/src/components/brews/brew-brewing-graph/brew-brewing-graph.component.ts @@ -61,6 +61,7 @@ import { MeticulousShotData } from '../../../classes/preparationDevice/meticulou import { Graph } from '../../../classes/graph/graph'; import { UIGraphStorage } from '../../../services/uiGraphStorage.service'; import regression from 'regression'; +import { TextToSpeechService } from '../../../services/textToSpeech/text-to-speech.service'; declare var Plotly; @@ -149,6 +150,9 @@ export class BrewBrewingGraphComponent implements OnInit { public profileDiv: ElementRef; public chartData = []; + + public textToSpeechWeightInterval: any = undefined; + public textToSpeechTimerInterval: any = undefined; constructor( private readonly platform: Platform, private readonly bleManager: CoffeeBluetoothDevicesService, @@ -166,11 +170,15 @@ export class BrewBrewingGraphComponent implements OnInit { private readonly modalController: ModalController, private readonly uiLog: UILog, public readonly uiBrewHelper: UIBrewHelper, - private readonly uiGraphStorage: UIGraphStorage + private readonly uiGraphStorage: UIGraphStorage, + private readonly textToSpeech: TextToSpeechService ) {} public ngOnInit() { this.settings = this.uiSettingsStorage.getSettings(); + if (this.settings.text_to_speech_active) { + this.textToSpeech.readAndSetTTLSettings(); + } } public async instance() { @@ -229,6 +237,7 @@ export class BrewBrewingGraphComponent implements OnInit { } else if (_type === CoffeeBluetoothServiceEvent.DISCONNECTED_SCALE) { this.deattachToWeightChange(); this.deattachToFlowChange(); + this.deattachToTextToSpeedChange(); this.deattachToScaleEvents(); disconnectTriggered = true; } else if (_type === CoffeeBluetoothServiceEvent.CONNECTED_PRESSURE) { @@ -375,7 +384,7 @@ export class BrewBrewingGraphComponent implements OnInit { } public getPreparation(): Preparation { - return this.uiPreparationStorage.getByUUID(this.data.method_of_preparation); + return this.data.getPreparation(); } public resetPressure() { @@ -1633,11 +1642,14 @@ export class BrewBrewingGraphComponent implements OnInit { this.deattachToWeightChange(); this.deattachToFlowChange(); + this.deattachToTextToSpeedChange(); // 551 - Always attach to flow change, even when reset is triggerd this.attachToFlowChange(); } if (pressureDevice) { + pressureDevice.disableValueTransmission(); + this.deattachToPressureChange(); if (this.settings.pressure_threshold_active === true) { // After attaching attach again @@ -1717,6 +1729,13 @@ export class BrewBrewingGraphComponent implements OnInit { scale.setTimer(SCALE_TIMER_COMMAND.STOP); this.deattachToWeightChange(); this.deattachToFlowChange(); + this.deattachToTextToSpeedChange(); + if (this.settings.text_to_speech_active) { + this.textToSpeech.speak( + this.translate.instant('TEXT_TO_SPEECH.BREW_ENDED'), + true + ); + } } if (pressureDevice) { this.deattachToPressureChange(); @@ -1824,25 +1843,29 @@ export class BrewBrewingGraphComponent implements OnInit { const shotData: MeticulousShotData = prepDeviceCall.getActualShotData(); - if (shotData.shotTime >= 0 && hasShotStarted === false) { + if (shotData.extracting === true && hasShotStarted === false) { this.uiAlert.hideLoadingSpinner(); this.uiToast.showInfoToast( 'PREPARATION_DEVICE.TYPE_METICULOUS.SHOT_STARTED' ); hasShotStarted = true; this.startingFlowTime = Date.now(); - const startingDay = moment(new Date()).startOf('day'); // IF brewtime has some seconds, we add this to the delay directly. this.data.brew_time = 0; + this.data.brew_time_milliseconds = 0; + + this.data.coffee_first_drip_time = 0; + this.data.coffee_first_drip_time_milliseconds = 0; + this.data.coffee_blooming_time = 0; + this.data.coffee_blooming_time_milliseconds = 0; + this.brewComponent.timer.initTimer(false); this.brewComponent.timer.startTimer(false, false); this.lastChartRenderingInstance = -1; this.updateChart(); } else if ( - shotData.shotTime === -1 && - hasShotStarted === true && - lastState === 'retracting' && - shotData.status !== 'retracting' + shotData.extracting === false && + hasShotStarted === true ) { hasShotStarted = false; @@ -1875,6 +1898,9 @@ export class BrewBrewingGraphComponent implements OnInit { //this.__setMachineWaterFlow({ actual: shotData.flow, old: shotData.flow }); this.setActualSmartInformation(shotData.weight); + + // We have found a written weight which is above 5 grams at least + this.__setScaleWeight(shotData.weight, false, false); } lastState = shotData.status; }, 100); @@ -2043,6 +2069,9 @@ export class BrewBrewingGraphComponent implements OnInit { temperature = Math.floor( (crypto.getRandomValues(new Uint8Array(1))[0] / Math.pow(2, 8)) * 90 ); + if (this.settings.text_to_speech_active) { + this.textToSpeech.speak(weight.toString()); + } this.__setPressureFlow({ actual: pressure, old: pressure }); @@ -2081,10 +2110,12 @@ export class BrewBrewingGraphComponent implements OnInit { } } - /** We don't need any delay here anymore, because all taring action was already done before, so just trigger the start - * This will also reduce the issue that the DiFluid reports the Start and we don't attach anymore to changes. - * **/ - scale.setTimer(SCALE_TIMER_COMMAND.START); + if (scale) { + /** We don't need any delay here anymore, because all taring action was already done before, so just trigger the start + * This will also reduce the issue that the DiFluid reports the Start and we don't attach anymore to changes. + * **/ + scale.setTimer(SCALE_TIMER_COMMAND.START); + } if ( pressureDevice && @@ -2094,6 +2125,9 @@ export class BrewBrewingGraphComponent implements OnInit { // Just update to zero if there is no threshold active pressureDevice.updateZero(); } + if (pressureDevice) { + pressureDevice.enableValueTransmission(); + } this.startingFlowTime = Date.now(); @@ -2102,6 +2136,13 @@ export class BrewBrewingGraphComponent implements OnInit { if (scale) { this.attachToScaleWeightChange(); this.attachToFlowChange(); + this.attachToTextToSpeechChange(); + + if (this.settings.text_to_speech_active) { + this.textToSpeech.speak( + this.translate.instant('TEXT_TO_SPEECH.BREW_STARTED') + ); + } } if ( pressureDevice && @@ -2136,6 +2177,39 @@ export class BrewBrewingGraphComponent implements OnInit { false ); }); + + setTimeout(() => { + prepDeviceCall.getOverview().then( + (_jsonResp: any) => { + this.uiLog.log( + 'Check of xenia answer if script started MA_STATUS: ' + + _jsonResp.MA_Status + ); + if (_jsonResp.MA_STATUS === 3) { + //Great we started. + } else { + //Oh no... lets try it again + this.uiToast.showInfoToast( + 'We tried to start the xenia script again' + ); + prepDeviceCall + .startScript( + this.data.preparationDeviceBrew.params.scriptStartId + ) + .catch((_msg) => { + this.uiLog.log('We could not start script: ' + _msg); + this.uiToast.showInfoToast( + 'We could not start script - second try: ' + _msg, + false + ); + }); + } + }, + () => { + //Error... ignore + } + ); + }, 2000); this.writeExecutionTimeToNotes( 'Start script', this.data.preparationDeviceBrew.params.scriptStartId, @@ -2290,6 +2364,17 @@ export class BrewBrewingGraphComponent implements OnInit { } } + public deattachToTextToSpeedChange() { + if (this.textToSpeechWeightInterval) { + clearInterval(this.textToSpeechWeightInterval); + this.textToSpeechWeightInterval = undefined; + } + if (this.textToSpeechTimerInterval) { + clearInterval(this.textToSpeechTimerInterval); + this.textToSpeechTimerInterval = undefined; + } + } + public deattachToPressureChange() { if (this.pressureDeviceSubscription) { this.pressureDeviceSubscription.unsubscribe(); @@ -2330,6 +2415,48 @@ export class BrewBrewingGraphComponent implements OnInit { } } + public attachToTextToSpeechChange() { + this.deattachToTextToSpeedChange(); + if (this.settings.text_to_speech_active === true) { + const isEspressoBrew: boolean = + this.data.getPreparation().style_type === + PREPARATION_STYLE_TYPE.ESPRESSO; + this.textToSpeechWeightInterval = setInterval(() => { + this.ngZone.runOutsideAngular(() => { + if (this.flowProfileTempAll.length > 0) { + const actualScaleWeight = + this.flowProfileTempAll.slice(-1)[0].weight; + if (actualScaleWeight !== null && actualScaleWeight !== undefined) { + if (isEspressoBrew) { + this.textToSpeech.speak( + this.uiHelper + .toFixedIfNecessary(actualScaleWeight, 1) + .toString() + ); + } else { + this.textToSpeech.speak( + this.uiHelper + .toFixedIfNecessary(actualScaleWeight, 0) + .toString() + ); + } + } + } + }); + }, this.settings.text_to_speech_interval_rate); + + this.textToSpeechTimerInterval = setInterval(() => { + this.ngZone.runOutsideAngular(() => { + this.textToSpeech.speak( + this.translate.instant('TEXT_TO_SPEECH.TIME') + + ' ' + + this.data.brew_time + ); + }); + }, 5000); + } + } + public attachToPressureChange() { const pressureDevice: PressureDevice = this.bleManager.getPressureDevice(); if (pressureDevice) { @@ -2342,6 +2469,7 @@ export class BrewBrewingGraphComponent implements OnInit { if (!isEspressoBrew) { return; } + this.pressureDeviceSubscription = pressureDevice.pressureChange.subscribe( (_val) => { const actual: number = _val.actual; @@ -2358,7 +2486,22 @@ export class BrewBrewingGraphComponent implements OnInit { _val.actual >= this.settings.pressure_threshold_bar ) { this.pressureThresholdWasHit = true; - this.ngZone.run(() => { + this.ngZone.run(async () => { + if ( + this.settings.bluetooth_scale_tare_on_start_timer === true + ) { + try { + const scale: BluetoothScale = this.bleManager.getScale(); + if (scale) { + await new Promise((resolve) => { + scale.tare(); + setTimeout(async () => { + resolve(undefined); + }, this.settings.bluetooth_command_delay); + }); + } + } catch (ex) {} + } this.brewComponent.timerStartPressed('AUTO_START_PRESSURE'); //User can press both, so deattach to scale listening, because pressure will hit before then first drops normaly. @@ -2395,7 +2538,22 @@ export class BrewBrewingGraphComponent implements OnInit { _val.actual >= this.settings.temperature_threshold_temp ) { this.temperatureThresholdWasHit = true; - this.ngZone.run(() => { + this.ngZone.run(async () => { + if ( + this.settings.bluetooth_scale_tare_on_start_timer === true + ) { + try { + const scale: BluetoothScale = this.bleManager.getScale(); + if (scale) { + await new Promise((resolve) => { + scale.tare(); + setTimeout(async () => { + resolve(undefined); + }, this.settings.bluetooth_command_delay); + }); + } + } catch (ex) {} + } this.brewComponent.timerStartPressed('AUTO_START_TEMPERATURE'); setTimeout(() => { @@ -2423,6 +2581,11 @@ export class BrewBrewingGraphComponent implements OnInit { if (scale) { this.deattachToWeightChange(); + //Sometimes the smoothed value is not zero, we try to fix this with this. + if (scale.getWeight() <= 0) { + scale.resetSmoothedValue(); + } + this.machineStopScriptWasTriggered = false; this.scaleFlowSubscription = scale.flowChange.subscribe((_val) => { if ( @@ -2634,6 +2797,7 @@ export class BrewBrewingGraphComponent implements OnInit { this.deattachToWeightChange(); this.deattachToFlowChange(); + this.deattachToTextToSpeedChange(); this.deattachToPressureChange(); this.deattachToScaleEvents(); this.deattachToTemperatureChange(); @@ -2642,6 +2806,10 @@ export class BrewBrewingGraphComponent implements OnInit { this.deattachToScaleStartTareListening(); this.stopFetchingAndSettingDataFromXenia(); this.stopFetchingDataFromMeticulous(); + + if (this.settings.text_to_speech_active) { + this.textToSpeech.end(); + } } public ngOnDestroy() { diff --git a/src/components/brews/brew-brewing-preparation-device/brew-brewing-preparation-device.component.spec.ts b/src/components/brews/brew-brewing-preparation-device/brew-brewing-preparation-device.component.spec.ts index ffe6d81b0..27740fdf5 100644 --- a/src/components/brews/brew-brewing-preparation-device/brew-brewing-preparation-device.component.spec.ts +++ b/src/components/brews/brew-brewing-preparation-device/brew-brewing-preparation-device.component.spec.ts @@ -12,7 +12,7 @@ describe('BrewBrewingPreparationDeviceComponent', () => { let component: BrewBrewingPreparationDeviceComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [BrewBrewingPreparationDeviceComponent], imports: [ @@ -25,7 +25,9 @@ describe('BrewBrewingPreparationDeviceComponent', () => { { provide: UIHelper, useClass: UIHelperMock }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(BrewBrewingPreparationDeviceComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/src/components/brews/brew-brewing-preparation-device/brew-brewing-preparation-device.component.ts b/src/components/brews/brew-brewing-preparation-device/brew-brewing-preparation-device.component.ts index 84ad0e9bb..34998a4d2 100644 --- a/src/components/brews/brew-brewing-preparation-device/brew-brewing-preparation-device.component.ts +++ b/src/components/brews/brew-brewing-preparation-device/brew-brewing-preparation-device.component.ts @@ -41,6 +41,7 @@ export class BrewBrewingPreparationDeviceComponent implements OnInit { @Input() public brewComponent: BrewBrewingComponent; public preparationDevice: XeniaDevice | MeticulousDevice = undefined; + public preparation: Preparation = undefined; public settings: Settings = undefined; public PREPARATION_DEVICE_TYPE_ENUM = PreparationDeviceType; public PREPARATION_STYLE_TYPE = PREPARATION_STYLE_TYPE; @@ -74,9 +75,21 @@ export class BrewBrewingPreparationDeviceComponent implements OnInit { } } + public hasAPreparationDeviceSet() { + return ( + this.preparation?.connectedPreparationDevice.type !== + PreparationDeviceType.NONE + ); + } + + public getDataPreparationDeviceType() { + return this.preparation?.connectedPreparationDevice.type; + } + public async instancePreparationDevice(_brew: Brew = null) { + this.preparation = this.data.getPreparation(); const connectedDevice: PreparationDevice = - this.uiPreparationHelper.getConnectedDevice(this.data.getPreparation()); + this.uiPreparationHelper.getConnectedDevice(this.preparation); if (connectedDevice) { if (connectedDevice instanceof XeniaDevice) { await this.instanceXeniaPreparationDevice(connectedDevice, _brew); diff --git a/src/components/brews/brew-brewing/brew-brewing.component.html b/src/components/brews/brew-brewing/brew-brewing.component.html index 1ca72a333..874b807b9 100644 --- a/src/components/brews/brew-brewing/brew-brewing.component.html +++ b/src/components/brews/brew-brewing/brew-brewing.component.html @@ -192,7 +192,6 @@ {{"BREW_HEADER_WHILE_BREW" | translate }} - @@ -209,6 +208,8 @@ + + 0"> + + + + + + diff --git a/src/components/photo-add/photo-add.component.ts b/src/components/photo-add/photo-add.component.ts index a73b5a83f..273ebc951 100644 --- a/src/components/photo-add/photo-add.component.ts +++ b/src/components/photo-add/photo-add.component.ts @@ -112,4 +112,24 @@ export class PhotoAddComponent implements OnInit { } } } + + public async sortLeft(_index: number) { + this.swap(_index - 1, _index); + } + + public async sortRight(_index: number) { + this.swap(_index + 1, _index); + } + + public swap(index1: number, index2: number) { + // Check if the indices are within the valid range + + // Perform the swap using a temporary variable + const temp = this.data.attachments[index1]; + this.data.attachments[index1] = this.data.attachments[index2]; + this.data.attachments[index2] = temp; + this.emitChanges(); + + this.photoSlides.nativeElement.swiper.slideTo(index1, 200, false); + } } diff --git a/src/components/preparation-information-card/preparation-information-card.component.spec.ts b/src/components/preparation-information-card/preparation-information-card.component.spec.ts index 091274a02..3fd3c48d0 100644 --- a/src/components/preparation-information-card/preparation-information-card.component.spec.ts +++ b/src/components/preparation-information-card/preparation-information-card.component.spec.ts @@ -1,4 +1,4 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { PreparationInformationCardComponent } from './preparation-information-card.component'; @@ -14,7 +14,7 @@ describe('PreparationInformationCardComponent', () => { let component: PreparationInformationCardComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [PreparationInformationCardComponent], imports: [ @@ -31,7 +31,9 @@ describe('PreparationInformationCardComponent', () => { }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(PreparationInformationCardComponent); component = fixture.componentInstance; component.preparation = new Preparation(); diff --git a/src/components/roasting-machine-information-card/roasting-machine-information-card.component.spec.ts b/src/components/roasting-machine-information-card/roasting-machine-information-card.component.spec.ts index 88fd0388d..6e9e4b28c 100644 --- a/src/components/roasting-machine-information-card/roasting-machine-information-card.component.spec.ts +++ b/src/components/roasting-machine-information-card/roasting-machine-information-card.component.spec.ts @@ -14,7 +14,7 @@ describe('RoastingMachineInformationCardComponent', () => { let component: RoastingMachineInformationCardComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [RoastingMachineInformationCardComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], @@ -35,7 +35,9 @@ describe('RoastingMachineInformationCardComponent', () => { }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(RoastingMachineInformationCardComponent); component = fixture.componentInstance; component.roastingMachine = { diff --git a/src/components/timer/timer.component.ts b/src/components/timer/timer.component.ts index a4cc5a1b8..28fb6ac18 100644 --- a/src/components/timer/timer.component.ts +++ b/src/components/timer/timer.component.ts @@ -260,7 +260,7 @@ export class TimerComponent implements OnInit, OnDestroy { id: 'datetime-popover', cssClass: 'popover-actions', breakpoints: [0, 0.5, 0.75, 1], - initialBreakpoint: 0.5, + initialBreakpoint: 0.75, componentProps: { displayingTime: this.displayingTime }, }); await modal.present(); diff --git a/src/components/water-information-card/water-information-card.component.html b/src/components/water-information-card/water-information-card.component.html index 294fffabf..d74612137 100644 --- a/src/components/water-information-card/water-information-card.component.html +++ b/src/components/water-information-card/water-information-card.component.html @@ -19,15 +19,15 @@ - + - + {{"WATER_SECTION.USED_TIMES" | translate}}
{{getUsedTimes()}}
- + {{"WATER_SECTION.AMOUNT" | translate}}
{{getAmount() | number : '.0-2'}} @@ -35,6 +35,9 @@
+ + +
diff --git a/src/components/water-information-card/water-information-card.component.scss b/src/components/water-information-card/water-information-card.component.scss index ffbbfbef0..053b79089 100644 --- a/src/components/water-information-card/water-information-card.component.scss +++ b/src/components/water-information-card/water-information-card.component.scss @@ -6,6 +6,11 @@ padding-top: var(--padding-top); } } + .full-sized-icon { + width: 100%; + height: 100%; + max-height:120px!important; + } // Overwrite .button-top-absolute { diff --git a/src/components/water-information-card/water-information-card.component.spec.ts b/src/components/water-information-card/water-information-card.component.spec.ts index b7c70e14c..8bf18b67b 100644 --- a/src/components/water-information-card/water-information-card.component.spec.ts +++ b/src/components/water-information-card/water-information-card.component.spec.ts @@ -1,4 +1,4 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { WaterInformationCardComponent } from './water-information-card.component'; @@ -8,12 +8,13 @@ import { UIHelper } from '../../services/uiHelper'; import { UIHelperMock } from '../../classes/mock'; import { UIImage } from '../../services/uiImage'; import { Water } from '../../classes/water/water'; +import { WATER_TYPES } from 'src/enums/water/waterTypes'; describe('WaterInformationCardComponent', () => { let component: WaterInformationCardComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [WaterInformationCardComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], @@ -28,11 +29,14 @@ describe('WaterInformationCardComponent', () => { }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(WaterInformationCardComponent); component = fixture.componentInstance; component.water = { name: '', + type: WATER_TYPES.CUSTOM_WATER, // For getIcon() to return } as Water; fixture.detectChanges(); }); diff --git a/src/components/water-information-card/water-information-card.component.ts b/src/components/water-information-card/water-information-card.component.ts index e7c200cb1..3072225b5 100644 --- a/src/components/water-information-card/water-information-card.component.ts +++ b/src/components/water-information-card/water-information-card.component.ts @@ -1,17 +1,18 @@ -import {Water} from '../../classes/water/water'; -import {UIAlert} from '../../services/uiAlert'; -import {UIToast} from '../../services/uiToast'; -import {UIWaterStorage} from '../../services/uiWaterStorage'; -import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; -import {WATER_ACTION} from '../../enums/water/waterActions'; -import {ModalController} from '@ionic/angular'; -import {WaterPopoverActionsComponent} from '../../app/water-section/water/water-popover-actions/water-popover-actions.component'; -import {UIAnalytics} from '../../services/uiAnalytics'; -import {UIImage} from '../../services/uiImage'; +import { Water } from '../../classes/water/water'; +import { UIAlert } from '../../services/uiAlert'; +import { UIToast } from '../../services/uiToast'; +import { UIWaterStorage } from '../../services/uiWaterStorage'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { WATER_ACTION } from '../../enums/water/waterActions'; +import { ModalController } from '@ionic/angular'; +import { WaterPopoverActionsComponent } from '../../app/water-section/water/water-popover-actions/water-popover-actions.component'; +import { UIAnalytics } from '../../services/uiAnalytics'; +import { UIImage } from '../../services/uiImage'; import WATER_TRACKING from '../../data/tracking/waterTracking'; -import {UIBrewStorage} from '../../services/uiBrewStorage'; -import {Brew} from '../../classes/brew/brew'; -import {UIWaterHelper} from '../../services/uiWaterHelper'; +import { UIBrewStorage } from '../../services/uiBrewStorage'; +import { Brew } from '../../classes/brew/brew'; +import { UIWaterHelper } from '../../services/uiWaterHelper'; +import { WATER_TYPES } from '../../enums/water/waterTypes'; @Component({ selector: 'water-information-card', @@ -19,25 +20,22 @@ import {UIWaterHelper} from '../../services/uiWaterHelper'; styleUrls: ['./water-information-card.component.scss'], }) export class WaterInformationCardComponent implements OnInit { - @Input() public water: Water; @Output() public waterAction: EventEmitter = new EventEmitter(); - - constructor(private readonly modalController: ModalController, - private readonly uiWaterStorage: UIWaterStorage, - private readonly uiToast: UIToast, - private readonly uiAnalytics: UIAnalytics, - private readonly uiAlert: UIAlert, - private readonly uiImage: UIImage, - private readonly modalCtrl: ModalController, - private readonly uiBrewStorage: UIBrewStorage, - private readonly uiWaterHelper: UIWaterHelper) { - } - - public ngOnInit() { - - } - + public readonly WATER_TYPES = WATER_TYPES; + constructor( + private readonly modalController: ModalController, + private readonly uiWaterStorage: UIWaterStorage, + private readonly uiToast: UIToast, + private readonly uiAnalytics: UIAnalytics, + private readonly uiAlert: UIAlert, + private readonly uiImage: UIImage, + private readonly modalCtrl: ModalController, + private readonly uiBrewStorage: UIBrewStorage, + private readonly uiWaterHelper: UIWaterHelper + ) {} + + public ngOnInit() {} public async show() { await this.detail(); @@ -46,13 +44,16 @@ export class WaterInformationCardComponent implements OnInit { public async showActions(event): Promise { event.stopPropagation(); event.stopImmediatePropagation(); - this.uiAnalytics.trackEvent(WATER_TRACKING.TITLE, WATER_TRACKING.ACTIONS.POPOVER_ACTIONS); + this.uiAnalytics.trackEvent( + WATER_TRACKING.TITLE, + WATER_TRACKING.ACTIONS.POPOVER_ACTIONS + ); const popover = await this.modalController.create({ component: WaterPopoverActionsComponent, - componentProps: {water: this.water}, + componentProps: { water: this.water }, id: WaterPopoverActionsComponent.COMPONENT_ID, cssClass: 'popover-actions', - breakpoints: [0, 0.75, 1], + breakpoints: [0, 0.75, 1], initialBreakpoint: 0.75, }); await popover.present(); @@ -63,7 +64,6 @@ export class WaterInformationCardComponent implements OnInit { } } - private async internalAction(action: WATER_ACTION) { switch (action) { case WATER_ACTION.DETAIL: @@ -73,10 +73,9 @@ export class WaterInformationCardComponent implements OnInit { await this.edit(); break; case WATER_ACTION.DELETE: - try { await this.delete(); - }catch (ex) {} + } catch (ex) {} await this.uiAlert.hideLoadingSpinner(); break; case WATER_ACTION.PHOTO_GALLERY: @@ -90,7 +89,10 @@ export class WaterInformationCardComponent implements OnInit { } } public async archive() { - this.uiAnalytics.trackEvent(WATER_TRACKING.TITLE, WATER_TRACKING.ACTIONS.ARCHIVE); + this.uiAnalytics.trackEvent( + WATER_TRACKING.TITLE, + WATER_TRACKING.ACTIONS.ARCHIVE + ); this.water.finished = true; await this.uiWaterStorage.update(this.water); this.uiToast.showInfoToast('TOAST_WATER_ARCHIVED_SUCCESSFULLY'); @@ -107,10 +109,8 @@ export class WaterInformationCardComponent implements OnInit { await this.uiWaterHelper.editWater(this.water); } - public async detail() { await this.uiWaterHelper.detailWater(this.water); - } public async showPhoto(event) { @@ -119,18 +119,25 @@ export class WaterInformationCardComponent implements OnInit { await this.viewPhotos(); } public async viewPhotos() { - - this.uiAnalytics.trackEvent(WATER_TRACKING.TITLE, WATER_TRACKING.ACTIONS.PHOTO_VIEW); + this.uiAnalytics.trackEvent( + WATER_TRACKING.TITLE, + WATER_TRACKING.ACTIONS.PHOTO_VIEW + ); await this.uiImage.viewPhotos(this.water); } public async delete(): Promise { - - return new Promise(async (resolve,reject) => { - this.uiAlert.showConfirm('DELETE_WATER_QUESTION', 'SURE_QUESTION', true).then(async () => { + return new Promise(async (resolve, reject) => { + this.uiAlert + .showConfirm('DELETE_WATER_QUESTION', 'SURE_QUESTION', true) + .then( + async () => { await this.uiAlert.showLoadingSpinner(); // Yes - this.uiAnalytics.trackEvent(WATER_TRACKING.TITLE, WATER_TRACKING.ACTIONS.DELETE); + this.uiAnalytics.trackEvent( + WATER_TRACKING.TITLE, + WATER_TRACKING.ACTIONS.DELETE + ); await this.__delete(); this.uiToast.showInfoToast('TOAST_WATER_DELETED_SUCCESSFULLY'); resolve(undefined); @@ -138,27 +145,25 @@ export class WaterInformationCardComponent implements OnInit { () => { // No reject(); - }); - } - ); + } + ); + }); } - private getAllRelatedBrews(): Array { // Remove all references in brews - const brews: Array = this.uiBrewStorage.getAllEntries().filter((e)=>e.water === this.water.config.uuid); + const brews: Array = this.uiBrewStorage + .getAllEntries() + .filter((e) => e.water === this.water.config.uuid); if (brews && brews.length > 0) { - return brews; + return brews; } return []; } private async __delete() { - - // Remove all references in brews - const brews: Array = this.getAllRelatedBrews(); + const brews: Array = this.getAllRelatedBrews(); if (brews && brews.length > 0) { - for (const brew of brews) { brew.water = ''; await this.uiBrewStorage.update(brew); @@ -167,17 +172,14 @@ export class WaterInformationCardComponent implements OnInit { await this.uiWaterStorage.removeByObject(this.water); } - - public getUsedTimes() { - const brews: Array = this.getAllRelatedBrews(); + const brews: Array = this.getAllRelatedBrews(); return brews.length; } public getAmount() { - const brews: Array = this.getAllRelatedBrews(); + const brews: Array = this.getAllRelatedBrews(); let amount: number = 0; if (brews && brews.length > 0) { - for (const brew of brews) { if (brew.brew_beverage_quantity) { amount += brew.brew_beverage_quantity; @@ -190,6 +192,6 @@ export class WaterInformationCardComponent implements OnInit { } public hasPhotos() { - return (this.water.attachments && this.water.attachments.length > 0); + return this.water.attachments && this.water.attachments.length > 0; } } diff --git a/src/data/tracking/beanTracking.ts b/src/data/tracking/beanTracking.ts index 0234f763b..3401edddd 100644 --- a/src/data/tracking/beanTracking.ts +++ b/src/data/tracking/beanTracking.ts @@ -17,5 +17,6 @@ export default { SHARE_IMAGE: 'SHARE_IMAGE', SHOW_BREWS: 'SHOW_BREWS', CUPPING: 'CUPPING', + UNARCHIVE: 'UNARCHIVE', }, }; diff --git a/src/enums/beans/beanAction.ts b/src/enums/beans/beanAction.ts index 4ca0213b1..23d941a8d 100755 --- a/src/enums/beans/beanAction.ts +++ b/src/enums/beans/beanAction.ts @@ -14,4 +14,5 @@ export enum BEAN_ACTION { REPEAT_LAST_OR_BEST_BREW = 'REPEAT_LAST_OR_BEST_BREW', REPEAT_LAST_BREW = 'REPEAT_LAST_BREW', REPEAT_BEST_BREW = 'REPEAT_BEST_BREW', + UNARCHIVE = 'UNARCHIVE', } diff --git a/src/enums/water/waterTypes.ts b/src/enums/water/waterTypes.ts new file mode 100755 index 000000000..5919f1129 --- /dev/null +++ b/src/enums/water/waterTypes.ts @@ -0,0 +1,9 @@ +export enum WATER_TYPES { + CUSTOM_WATER = 'CUSTOM_WATER', + THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE = 'THIRD_WAVE_WATER_CLASSIC_LIGHT_ROAST_PROFILE', + THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE = 'THIRD_WAVE_WATER_MEDIUM_ROAST_PROFILE', + THIRD_WAVE_WATER_DARK_ROAST_PROFILE = 'THIRD_WAVE_WATER_DARK_ROAST_PROFILE', + THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE = 'THIRD_WAVE_WATER_ESPRESSO_MACHINE_PROFILE', + THIRD_WAVE_WATER_COLD_BREW_PROFILE = 'THIRD_WAVE_WATER_COLD_BREW_PROFILE', + THIRD_WAVE_WATER_LOW_ACID_PROFILE = 'THIRD_WAVE_WATER_LOW_ACID_PROFILE', +} diff --git a/src/interfaces/settings/iSettings.ts b/src/interfaces/settings/iSettings.ts index 3e354af15..9bab10995 100755 --- a/src/interfaces/settings/iSettings.ts +++ b/src/interfaces/settings/iSettings.ts @@ -181,4 +181,16 @@ export interface ISettings { visualizer_upload_automatic: boolean; show_backup_issues: boolean; + + text_to_speech_active: boolean; + text_to_speech_rate: number; + text_to_speech_pitch: number; + + haptic_feedback_active: boolean; + haptic_feedback_brew_started: boolean; + haptic_feedback_brew_stopped: boolean; + haptic_feedback_tare: boolean; + + brew_timer_show_hours: boolean; + brew_timer_show_minutes: boolean; } diff --git a/src/interfaces/visualizer/iBrewVisualizer.ts b/src/interfaces/visualizer/iBrewVisualizer.ts index 3c5992dbf..ee4ac2981 100755 --- a/src/interfaces/visualizer/iBrewVisualizer.ts +++ b/src/interfaces/visualizer/iBrewVisualizer.ts @@ -111,4 +111,7 @@ export interface IBrewVisualizer { vessel_name: string; config: IConfig; + + /*** this is calculcated **/ + ey: number; } diff --git a/src/popover/analytics-popover/analytics-popover.component.spec.ts b/src/popover/analytics-popover/analytics-popover.component.spec.ts index 6021ba7e5..fa2f12e42 100644 --- a/src/popover/analytics-popover/analytics-popover.component.spec.ts +++ b/src/popover/analytics-popover/analytics-popover.component.spec.ts @@ -15,7 +15,7 @@ describe('AnalyticsPopoverComponent', () => { let component: AnalyticsPopoverComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [AnalyticsPopoverComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], @@ -29,7 +29,9 @@ describe('AnalyticsPopoverComponent', () => { }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(AnalyticsPopoverComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/src/popover/datetime-popover/datetime-popover.component.html b/src/popover/datetime-popover/datetime-popover.component.html index 3bfaf6aaa..86c00cfa4 100644 --- a/src/popover/datetime-popover/datetime-popover.component.html +++ b/src/popover/datetime-popover/datetime-popover.component.html @@ -1,18 +1,42 @@ - + - {{"TIMER_HOUR" | translate}} - {{"TIMER_MINUTES" | translate}} - {{"TIMER_SECONDS" | translate}} - {{"TIMER_MILLISECONDS" | translate}} + + + +
+

{{"SHOW_HOURS" | translate}}

+
+
+
+
+ + + +
+

{{"SHOW_MINUTES" | translate}}

+
+
+
+
+
+
+ + + + + {{"TIMER_HOUR" | translate}} + {{"TIMER_MINUTES" | translate}} + {{"TIMER_SECONDS" | translate}} + {{"TIMER_MILLISECONDS" | translate}} - - - - + + + + diff --git a/src/popover/datetime-popover/datetime-popover.component.spec.ts b/src/popover/datetime-popover/datetime-popover.component.spec.ts index 76dc18c02..0d4541ea7 100644 --- a/src/popover/datetime-popover/datetime-popover.component.spec.ts +++ b/src/popover/datetime-popover/datetime-popover.component.spec.ts @@ -11,7 +11,7 @@ describe('DatetimePopoverComponent', () => { let component: DatetimePopoverComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [DatetimePopoverComponent], providers: [ @@ -20,7 +20,9 @@ describe('DatetimePopoverComponent', () => { ], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(DatetimePopoverComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/src/popover/datetime-popover/datetime-popover.component.ts b/src/popover/datetime-popover/datetime-popover.component.ts index c69ffdd96..70a740731 100644 --- a/src/popover/datetime-popover/datetime-popover.component.ts +++ b/src/popover/datetime-popover/datetime-popover.component.ts @@ -1,5 +1,5 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { ModalController } from '@ionic/angular'; +import { Component, Input, OnInit, ViewChild } from '@angular/core'; +import { IonInput, ModalController } from '@ionic/angular'; import moment from 'moment'; import { UISettingsStorage } from '../../services/uiSettingsStorage'; import { Settings } from '../../classes/settings/settings'; @@ -17,6 +17,8 @@ export class DatetimePopoverComponent implements OnInit { MILLISECONDS: 0, }; + @ViewChild('secondInput', { static: false }) public secondInput: IonInput; + @Input() public displayingTime: string; public settings: Settings; constructor( @@ -33,6 +35,45 @@ export class DatetimePopoverComponent implements OnInit { this.timer.SECONDS = passedDisplayingTime.seconds(); this.timer.MILLISECONDS = passedDisplayingTime.milliseconds(); } + public ionViewDidEnter(): void { + setTimeout(() => { + //Give it a short time + this.secondInput.setFocus(); + }, 250); + } + + public saveSettings() { + this.uiSettingsStorage.saveSettings(this.settings); + } + + public getColSize() { + const showMilliSeconds = this.settings?.brew_milliseconds; + const showHours: boolean = this.settings.brew_timer_show_hours; + const showMinutes: boolean = this.settings.brew_timer_show_minutes; + + let sizeCounter = 0; + if (showMilliSeconds) { + sizeCounter = sizeCounter + 1; + } + if (showHours) { + sizeCounter = sizeCounter + 1; + } + if (showMinutes) { + sizeCounter = sizeCounter + 1; + } + if (sizeCounter === 0) { + //Just seconds are shown + return 12; + } else if (sizeCounter === 1) { + //Just seconds +1 is shown + return 6; + } else if (sizeCounter === 2) { + //seconds +2 are shown + return 4; + } else { + return 3; + } + } public reset() { this.timer.HOURS = 0; diff --git a/src/popover/loading-popover/loading-popover.component.spec.ts b/src/popover/loading-popover/loading-popover.component.spec.ts index 6670bb3de..51f1e6a6e 100644 --- a/src/popover/loading-popover/loading-popover.component.spec.ts +++ b/src/popover/loading-popover/loading-popover.component.spec.ts @@ -12,7 +12,7 @@ describe('LoadingPopoverComponent', () => { let component: LoadingPopoverComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [LoadingPopoverComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], @@ -22,7 +22,9 @@ describe('LoadingPopoverComponent', () => { { provide: Storage }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(LoadingPopoverComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/src/popover/qr-code-scanner-popover/qr-code-scanner-popover.component.spec.ts b/src/popover/qr-code-scanner-popover/qr-code-scanner-popover.component.spec.ts index 7babf2c1f..cd3aa8477 100644 --- a/src/popover/qr-code-scanner-popover/qr-code-scanner-popover.component.spec.ts +++ b/src/popover/qr-code-scanner-popover/qr-code-scanner-popover.component.spec.ts @@ -1,4 +1,4 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { QrCodeScannerPopoverComponent } from './qr-code-scanner-popover.component'; @@ -11,7 +11,7 @@ describe('QrCodeScannerPopoverComponent', () => { let component: QrCodeScannerPopoverComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [QrCodeScannerPopoverComponent], imports: [IonicModule.forRoot(), TranslateModule.forRoot()], @@ -20,7 +20,9 @@ describe('QrCodeScannerPopoverComponent', () => { { provide: Storage }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(QrCodeScannerPopoverComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/src/popover/welcome-popover/welcome-popover.component.spec.ts b/src/popover/welcome-popover/welcome-popover.component.spec.ts index fb719f119..5da048a89 100644 --- a/src/popover/welcome-popover/welcome-popover.component.spec.ts +++ b/src/popover/welcome-popover/welcome-popover.component.spec.ts @@ -12,7 +12,7 @@ describe('WelcomePopoverComponent', () => { let component: WelcomePopoverComponent; let fixture: ComponentFixture; - beforeEach(() => { + beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [WelcomePopoverComponent], imports: [ @@ -25,7 +25,9 @@ describe('WelcomePopoverComponent', () => { { provide: Storage }, ], }).compileComponents(); + })); + beforeEach(() => { fixture = TestBed.createComponent(WelcomePopoverComponent); component = fixture.componentInstance; fixture.detectChanges(); diff --git a/src/services/coffeeBluetoothDevices/coffee-bluetooth-devices.service.ts b/src/services/coffeeBluetoothDevices/coffee-bluetooth-devices.service.ts index 10881bc76..6a84d6c83 100644 --- a/src/services/coffeeBluetoothDevices/coffee-bluetooth-devices.service.ts +++ b/src/services/coffeeBluetoothDevices/coffee-bluetooth-devices.service.ts @@ -36,6 +36,8 @@ import { BlackcoffeeScale } from 'src/classes/devices/blackcoffeeScale'; import { DifluidMicrobalanceTi } from '../../classes/devices/difluidMicrobalanceTi'; import { DiyPythonCoffeeScale } from '../../classes/devices/diyPythonCoffeeScale'; import { DiyRustCoffeeScale } from '../../classes/devices/diyRustCoffeeScale'; +import { BookooScale } from 'src/classes/devices/bokooScale'; +import { BookooPressure } from 'src/classes/devices/bookooPressure'; declare var device: any; declare var ble: any; @@ -257,7 +259,8 @@ export class CoffeeBluetoothDevicesService { DifluidMicrobalanceTi.test(scanDevice) || BlackcoffeeScale.test(scanDevice) || DiyPythonCoffeeScale.test(scanDevice) || - DiyRustCoffeeScale.test(scanDevice) + DiyRustCoffeeScale.test(scanDevice) || + BookooScale.test(scanDevice) ) { // We found all needed devices. promiseResolved = true; @@ -288,7 +291,8 @@ export class CoffeeBluetoothDevicesService { if ( PrsPressure.test(scanDevice) || PopsiclePressure.test(scanDevice) || - TransducerDirectPressure.test(scanDevice) + TransducerDirectPressure.test(scanDevice) || + BookooPressure.test(scanDevice) ) { // We found all needed devices. promiseResolved = true; @@ -784,6 +788,14 @@ export class CoffeeBluetoothDevicesService { }); return; } + if (BookooScale.test(deviceScale)) { + this.logger.log('BleManager - We found a Bokoo scale'); + resolve({ + id: deviceScale.id, + type: ScaleType.BOKOOSCALE, + }); + return; + } } resolve(undefined); } @@ -881,6 +893,13 @@ export class CoffeeBluetoothDevicesService { type: ScaleType.DIYRUSTCOFFEESCALE, }); } + if (BookooScale.test(deviceScale)) { + this.logger.log('BleManager - We found a Bookoo scale'); + supportedDevices.push({ + id: deviceScale.id, + type: ScaleType.BOKOOSCALE, + }); + } } resolve(supportedDevices); } @@ -921,6 +940,15 @@ export class CoffeeBluetoothDevicesService { id: devicePressure.id, type: PressureType.DIRECT, }); + } else if (BookooPressure.test(devicePressure)) { + this.logger.log( + 'BleManager - We found a Bookoo pressure device ' + + JSON.stringify(devicePressure) + ); + supportedDevices.push({ + id: devicePressure.id, + type: PressureType.BOKOOPRESSURE, + }); } } resolve(supportedDevices); @@ -946,15 +974,19 @@ export class CoffeeBluetoothDevicesService { ); resolve({ id: devicePressure.id, type: PressureType.DIRECT }); return; - } else { - } - - if (PrsPressure.test(devicePressure)) { + } else if (PrsPressure.test(devicePressure)) { this.logger.log( 'BleManager - We found a PRS Direct pressure device ' ); resolve({ id: devicePressure.id, type: PressureType.PRS }); return; + } else if (BookooPressure.test(devicePressure)) { + this.logger.log('BleManager - We found a Bokoo pressure device '); + resolve({ + id: devicePressure.id, + type: PressureType.BOKOOPRESSURE, + }); + return; } } resolve(undefined); diff --git a/src/services/hapticService/haptic.service.spec.ts b/src/services/hapticService/haptic.service.spec.ts new file mode 100644 index 000000000..42a7d4039 --- /dev/null +++ b/src/services/hapticService/haptic.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { HapticService } from './haptic.service'; + +describe('HapticService', () => { + let service: HapticService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(HapticService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/services/hapticService/haptic.service.ts b/src/services/hapticService/haptic.service.ts new file mode 100644 index 000000000..9c7481ffe --- /dev/null +++ b/src/services/hapticService/haptic.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; + +declare var navigator; +@Injectable({ + providedIn: 'root', +}) +export class HapticService { + constructor() {} + + public vibrate() { + try { + navigator.vibrate(1000); + } catch (ex) {} + } +} diff --git a/src/services/textToSpeech/text-to-speech.service.spec.ts b/src/services/textToSpeech/text-to-speech.service.spec.ts new file mode 100644 index 000000000..1f7bd70a2 --- /dev/null +++ b/src/services/textToSpeech/text-to-speech.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { TextToSpeechService } from './text-to-speech.service'; + +describe('TextToSpeechService', () => { + let service: TextToSpeechService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(TextToSpeechService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/services/textToSpeech/text-to-speech.service.ts b/src/services/textToSpeech/text-to-speech.service.ts new file mode 100644 index 000000000..9ea8a10b7 --- /dev/null +++ b/src/services/textToSpeech/text-to-speech.service.ts @@ -0,0 +1,57 @@ +import { Injectable } from '@angular/core'; +import { UISettingsStorage } from '../uiSettingsStorage'; +import { Settings } from '../../classes/settings/settings'; +import { Platform } from '@ionic/angular'; + +declare var TTS; +declare var window; +@Injectable({ + providedIn: 'root', +}) +export class TextToSpeechService { + private settings: Settings; + + private rate: number = 1; + private pitch: number = 1; + private textToSpeechInstance: SpeechSynthesis; + private selectedVoice; + + private ttsEnabled = false; + + constructor(private readonly platform: Platform) { + this.settings = UISettingsStorage.getInstance().getSettings(); + if (this.platform.is('ios')) { + this.ttsEnabled = true; + this.textToSpeechInstance = window.speechSynthesis; + this.selectedVoice = new SpeechSynthesisUtterance(); + } + } + + public readAndSetTTLSettings() { + if (this.ttsEnabled === false) { + return; + } + this.selectedVoice.rate = this.settings.text_to_speech_rate; + this.selectedVoice.pitch = this.settings.text_to_speech_pitch; + this.selectedVoice.volume = 1; + } + + public speak(_text: string, _end: boolean = false) { + if (this.ttsEnabled === false) { + return; + } + try { + this.selectedVoice.text = _text; + if (_end) { + this.end(); + } + this.textToSpeechInstance.speak(this.selectedVoice); + } catch (ex) {} + } + public end() { + if (this.ttsEnabled === false) { + return; + } + this.textToSpeechInstance.cancel(); + } +} diff --git a/src/services/uiExcel.ts b/src/services/uiExcel.ts index 65676271a..58a006852 100755 --- a/src/services/uiExcel.ts +++ b/src/services/uiExcel.ts @@ -18,10 +18,11 @@ import { UIAlert } from './uiAlert'; import { SocialSharing } from '@awesome-cordova-plugins/social-sharing/ngx'; import { UIFileHelper } from './uiFileHelper'; import { UIMillStorage } from './uiMillStorage'; -import { BrewFlow } from '../classes/brew/brewFlow'; +import { BrewFlow, IBrewWaterFlow } from '../classes/brew/brewFlow'; import moment from 'moment'; import { UISettingsStorage } from './uiSettingsStorage'; import { Settings } from '../classes/settings/settings'; +import { Brew } from '../classes/brew/brew'; @Injectable({ providedIn: 'root', @@ -544,6 +545,138 @@ export class UIExcel { await this.uiAlert.hideLoadingSpinner(); } + public async exportBrewByWeights( + _entry: Array<{ BREW: Brew; FLOW: BrewFlow }> + ) { + await this.uiAlert.showLoadingSpinner(); + + let counter: number = 0; + + const wb: XLSX.WorkBook = XLSX.utils.book_new(); + for (const exportEntry of _entry) { + const grindWeight = exportEntry.BREW.grind_weight; + const brewBeverageQuantity = exportEntry.BREW.brew_beverage_quantity; + const avgFlow: number = this.getAvgFlow(exportEntry.FLOW); + if (exportEntry.FLOW.hasOwnProperty('brewbyweight')) { + const header_final_weight: Array = []; + header_final_weight.push('target_weight'); + header_final_weight.push('lag_time'); + header_final_weight.push('brew_time'); + header_final_weight.push('timestamp'); + header_final_weight.push('last_flow_value'); + header_final_weight.push('actual_scale_weight'); + header_final_weight.push('calc_lag_time'); + header_final_weight.push('calc_exceeds_weight'); + header_final_weight.push('avg_flow_lag_residual_time'); + header_final_weight.push('residual_lag_time'); + header_final_weight.push('average_flow_rate'); + header_final_weight.push('scaleType'); + header_final_weight.push('grindWeight'); + header_final_weight.push('brewBeverageQuantity'); + header_final_weight.push('avgFlow'); + header_final_weight.push('offsetWeight'); + header_final_weight.push('offsetWeightPercentage'); + + const wsDatafinalWeightFlow: any[][] = [header_final_weight]; + for (const entry of exportEntry.FLOW.brewbyweight) { + let percentageOffset = + (Number(brewBeverageQuantity) * 100) / Number(entry.target_weight); + if (percentageOffset >= 100) { + percentageOffset = percentageOffset - 100; + } else { + percentageOffset = (percentageOffset - 100) * -1; + } + const wbEntry: Array = [ + entry.target_weight, + entry.lag_time, + entry.brew_time, + entry.timestamp, + entry.last_flow_value, + entry.actual_scale_weight, + entry.calc_lag_time, + entry.calc_exceeds_weight, + entry.avg_flow_lag_residual_time, + entry.residual_lag_time, + entry.average_flow_rate, + entry.scaleType, + grindWeight, + brewBeverageQuantity, + avgFlow, + Number(entry.target_weight) - Number(brewBeverageQuantity), + Number(percentageOffset), + ]; + wsDatafinalWeightFlow.push(wbEntry); + } + const wsFinalWeight: XLSX.WorkSheet = XLSX.utils.aoa_to_sheet( + wsDatafinalWeightFlow + ); + XLSX.utils.book_append_sheet(wb, wsFinalWeight, 'S-' + counter); + counter = counter + 1; + } + } + + const filename: string = + 'Beanconqueror_All_Brew_ByWeights_' + + moment().format('HH_mm_ss_DD_MM_YYYY').toString() + + '.xlsx'; + try { + /* generate Blob */ + const wbout: ArrayBuffer = XLSX.write(wb, { + bookType: 'xlsx', + type: 'array', + }); + const blob: Blob = new Blob([wbout], { + type: 'application/octet-stream', + }); + try { + const downloadFile: FileEntry = await this.uiFileHelper.downloadFile( + filename, + blob, + true + ); + await this.uiAlert.hideLoadingSpinner(); + // We share directly, so we don'T download into download folders. + /**if (this.platform.is('android')) { + const alert = await this.alertCtrl.create({ + header: this.translate.instant('DOWNLOADED'), + subHeader: this.translate.instant('FILE_DOWNLOADED_SUCCESSFULLY', { + fileName: filename, + }), + buttons: ['OK'], + }); + await alert.present(); + }**/ + } catch (ex) {} + } catch (e) { + if (e.message.match(/It was determined/)) { + /* in the browser, use writeFile */ + XLSX.writeFile(wb, filename); + } else { + this.uiAlert.showMessage(e.message); + this.uiLog.log(`Excel export - Error occured: ${e.message}`); + } + } + await this.uiAlert.hideLoadingSpinner(); + } + private getAvgFlow(_flow: BrewFlow): number { + if (_flow.waterFlow && _flow.waterFlow.length > 0) { + const waterFlows: Array = _flow.waterFlow; + let calculatedFlow: number = 0; + let foundEntries: number = 0; + for (const water of waterFlows) { + if (water.value > 0) { + calculatedFlow += water.value; + foundEntries += 1; + } + } + if (calculatedFlow > 0) { + return calculatedFlow / foundEntries; + } + + return 0; + } + } + public async importBeansByExcel(_arrayBuffer) { try { /* data is an ArrayBuffer */ diff --git a/src/services/uiImage.ts b/src/services/uiImage.ts index d8d71af5d..98c223af7 100755 --- a/src/services/uiImage.ts +++ b/src/services/uiImage.ts @@ -105,6 +105,7 @@ export class UIImage { } } catch (ex) {} } + public async choosePhoto(): Promise { const promise = new Promise(async (resolve, reject) => { this.__checkPermission( @@ -126,31 +127,22 @@ export class UIImage { .then( async (results) => { await this.uiAlert.showLoadingSpinner(); - for (const result of results) { - if ( - result && - result.length > 0 && - result !== 0 && - result !== '' && - result !== 'OK' && - result.length > 5 - ) { + for await (const result of results) { + if (result && result.path) { try { - const imageStr: string = `data:image/jpeg;base64,${result}`; - await this.uiFileHelper - .saveBase64File( + const imageStr: string = `data:image/jpeg;base64,${result.path}`; + const newURL = + await this.uiFileHelper.saveBase64File( 'beanconqueror_image', '.jpg', imageStr - ) - .then( - (_newURL) => { - fileurls.push(_newURL); - }, - () => {} ); - } catch (ex) {} + fileurls.push(newURL); + } catch (ex) { + //nothing + } } else { + //Nothing } } setTimeout(() => { @@ -185,15 +177,15 @@ export class UIImage { async (_files) => { await this.uiAlert.showLoadingSpinner(); - for (const file of _files) { - let newFileName = file; + for await (const file of _files) { + let newFileName = file.path; try { // We cant copy the file if it doesn't start with file:///, - if (file.indexOf('file:') <= -1) { - if (file.indexOf('/') === 0) { - newFileName = 'file://' + file; + if (file.path.indexOf('file:') <= -1) { + if (file.path.indexOf('/') === 0) { + newFileName = 'file://' + file.path; } else { - newFileName = 'file:///' + file; + newFileName = 'file:///' + file.path; } } @@ -209,27 +201,14 @@ export class UIImage { imageStr = `data:image/jpeg;base64,${result}`; } - await this.uiFileHelper - .saveBase64File( + try { + const newUrl = await this.uiFileHelper.saveBase64File( 'beanconqueror_image', '.jpg', imageStr - ) - .then( - (_newURL) => { - fileurls.push(_newURL); - }, - () => {} ); - - /**await this.uiFileHelper - .copyFileWithSpecificName(newFileName) - .then( - async (_fullPath) => { - fileurls.push(_fullPath); - }, - () => {} - );**/ + fileurls.push(newUrl); + } catch (ex) {} } catch (ex) { setTimeout(() => { this.uiAlert.hideLoadingSpinner(); diff --git a/src/services/uiUpdate.ts b/src/services/uiUpdate.ts index 51699ed5d..e915751c0 100755 --- a/src/services/uiUpdate.ts +++ b/src/services/uiUpdate.ts @@ -604,7 +604,7 @@ export class UIUpdate { versionCode = await this.appVersion.getVersionNumber(); } else { // Hardcored for testing - versionCode = '7.2.0'; + versionCode = '7.3.0'; } const version: Version = this.uiVersionStorage.getVersion(); const displayingVersions = diff --git a/src/services/uiWaterHelper.ts b/src/services/uiWaterHelper.ts index 509db8143..55e858636 100644 --- a/src/services/uiWaterHelper.ts +++ b/src/services/uiWaterHelper.ts @@ -25,9 +25,6 @@ export class UIWaterHelper { const modal = await this.modalController.create({ component: WaterAddComponent, id: WaterAddComponent.COMPONENT_ID, - cssClass: 'popover-actions', - breakpoints: [0, 0.35, 0.5, 0.75], - initialBreakpoint: 0.35, }); await modal.present(); await modal.onWillDismiss(); diff --git a/src/services/visualizerService/visualizer-service.service.ts b/src/services/visualizerService/visualizer-service.service.ts index f64c11a5c..b5347173a 100644 --- a/src/services/visualizerService/visualizer-service.service.ts +++ b/src/services/visualizerService/visualizer-service.service.ts @@ -50,6 +50,12 @@ export class VisualizerService { const vS: Visualizer = new Visualizer(); try { vS.mapBrew(_brew); + try { + if (_brew.tds > 0) { + vS.brew.ey = Number(_brew.getExtractionYield()); + } + } catch (ex) {} + vS.mapBean(_brew.getBean()); vS.mapWater(_brew.getWater()); vS.mapPreparation(_brew.getPreparation());