diff --git a/.eslintrc.js b/.eslintrc.js
index 6133755e..13f85238 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,3 +1,5 @@
+/* eslint-disable indent */
+// eslint-disable-next-line no-undef
module.exports = {
env: {
browser: true,
@@ -5,14 +7,15 @@ module.exports = {
},
extends: [
'plugin:vue/essential',
- "eslint:recommended"
+ "eslint:recommended",
],
parserOptions: {
ecmaVersion: 12,
sourceType: 'module'
},
plugins: [
- 'vue'
+ 'vue',
+ '@typescript-eslint',
],
globals: {
// from vendor.js:
@@ -28,5 +31,30 @@ module.exports = {
"indent": ["error", "tab"],
"brace-style": ["error", "allman", { "allowSingleLine": true }],
"semi": ["error", "always", { "omitLastInOneLineBlock": true }],
- }
-}
+ },
+ overrides: [
+ {
+ files: ["*.ts", "*.tsx"],
+ parser: '@typescript-eslint/parser',
+ extends: [
+ 'plugin:vue/essential',
+ "eslint:recommended",
+ 'plugin:@typescript-eslint/recommended',
+ ],
+ parserOptions: {
+ project: "./tsconfig.json",
+ }
+ },
+ {
+ files: ["*.vue"],
+ parser: "vue-eslint-parser",
+ parserOptions: {
+ parser: '@typescript-eslint/parser',
+ vueFeatures: {
+ filter: false,
+ interpolationAsNonHTML: true
+ }
+ }
+ }
+ ]
+};
diff --git a/.gitignore b/.gitignore
index 841d2a31..dfc3f380 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,5 @@ embedded.txt
!.yarn/sdks
!.yarn/versions
.pnp.*
+
+.DS_Store
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 73cca8d5..d45276a7 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,3 +1,6 @@
{
- "recommendations": []
+ "recommendations": [
+ "octref.vetur",
+ "dbaeumer.vscode-eslint"
+ ]
}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 6eb0adfc..64ab714e 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -10,4 +10,12 @@
"php-cs-fixer.formatHtml": true,
"php-cs-fixer.autoFixBySemicolon": true,
"php-cs-fixer.onsave": true,
+ "eslint.validate": [
+ "javascript",
+ "typescript",
+ "vue"
+ ],
+ "eslint.options": {
+ "useEslintrc": true,
+ }
}
\ No newline at end of file
diff --git a/Makefile b/Makefile
index cd6adaa1..226f4e5d 100644
--- a/Makefile
+++ b/Makefile
@@ -43,6 +43,8 @@ YARN=yarn
PHP=php
COMPOSER=composer
POSTCSS=npx postcss
+I18NEXTRACT=yarn run vue-i18n-extract
+LOCALEMAKE=php buildfiles/make-locales.php
# Configure some default flags for the tooling. Set include paths.
SASSFLAGS=-I node_modules/ --color --quiet-deps
@@ -57,8 +59,12 @@ SASS_INPUT=scss/grocy.scss
SASS_OUTPUT=public/dist/grocy.css
UGLIFY_INPUT=public/dist/grocy.js
UGLIFY_OUTPUT=public/dist/grocy.min.js
-OBJDIRS := public/dist public/js public/css public/js/locales
+OBJDIRS := public/dist public/js public/css public/js/locales public/locale
TMPSASS=public/dist/grocy.tmp.css
+ARTSOURCES := $(wildcard artwork/*.svg)
+ARTOBJS := $(addprefix public/img/, $(notdir $(ARTSOURCES)))
+LANGS := $(wildcard locale/*.json)
+LANGOBJS := $(addprefix public/locale/, $(notdir $(LANGS)))
.DEFAULT_GOAL := build
# disable default suffixes
@@ -78,7 +84,7 @@ help:
# Install all dependencies, then build the public/ folder.
.PHONY=build
-build: vendor js css public/js/locales/grocy/en.json resources
+build: vendor js css $(LANGOBJS) public/js/locales/grocy/en.json resources
.PHONY=minify
minify: build
@@ -123,7 +129,8 @@ watch:
touch ${TMPSASS}
${SASS} ${SASSFLAGS} --watch ${SASS_INPUT} ${TMPSASS} & \
${POSTCSS} ${TMPSASS} --config . -o ${SASS_OUTPUT} --watch & \
- ${ROLLUP} --watch --no-watch.clearScreen --config ${RFLAGS} & \
+ ${ROLLUP} --watch --no-watch.clearScreen --config rollup.config.js ${RFLAGS} & \
+ ${ROLLUP} --watch --no-watch.clearScreen --config rollup.vue.js ${RFLAGS} & \
${PHP} ${RUNFLAGS} & \
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT & \
wait
@@ -137,10 +144,27 @@ js: yarn.lock | $(OBJDIRS)
# build and bundle SASS files.
.PHONY=css
-css: yarn.lock | $(OBJDIRS)
+css: scss/sigma/_day.scss scss/sigma/_night.scss yarn.lock | $(OBJDIRS)
${SASS} ${SASSFLAGS} ${SASS_INPUT} ${SASS_OUTPUT}
${POSTCSS} --config . ${SASS_OUTPUT} -r
+# Both themes need to be wrapped for now (makes changing easier...)
+# CSS is perfectly fine SCSS with a different file ending.
+# So copy files, and .gitignore them, so that scoped @use works.
+scss/sigma/_day.scss: node_modules/primevue/resources/themes/saga-green/theme.css
+ cp node_modules/primevue/resources/themes/saga-green/theme.css scss/sigma/_day.scss
+
+scss/sigma/_night.scss: node_modules/primevue/resources/themes/arya-green/theme.css
+ cp node_modules/primevue/resources/themes/arya-green/theme.css scss/sigma/_night.scss
+
+node_modules/primevue/resources/themes/saga-green/theme.css: yarn.lock
+
+node_modules/primevue/resources/themes/arya-green/theme.css: yarn.lock
+
+.PHONY=frontend
+frontend:
+ ${ROLLUP} --config rollup.vue.js ${RFLAGS}
+
# To bundle all resources, there are a few prerequisites:
# First, the public output folders need to be created.
@@ -149,8 +173,9 @@ css: yarn.lock | $(OBJDIRS)
#
# The resources target depends on all i18n copy targets
# defined below, which do the actual magic.
+# TODO: better dependency expression.
.PHONY=resources
-resources: public/webfonts public/dist/font public/js/locales/summernote public/js/locales/bootstrap-select public/js/locales/fullcalendar public/js/locales/fullcalendar-core public/js/swagger-ui.js
+resources: public/webfonts public/dist/font public/dist/fonts public/js/locales/summernote public/js/locales/bootstrap-select public/js/locales/fullcalendar public/js/locales/fullcalendar-core public/js/swagger-ui.js $(ARTOBJS) $(LANGOBJS)
public/dist:
mkdir -p public/dist
@@ -160,6 +185,8 @@ public/css:
mkdir -p public/css
public/js/locales:
mkdir -p public/js/locales
+public/locale:
+ mkdir -p public/locale
public/webfonts: | yarn.lock $(OBJDIRS)
cp -r node_modules/@fortawesome/fontawesome-free/webfonts public/webfonts
@@ -167,6 +194,9 @@ public/webfonts: | yarn.lock $(OBJDIRS)
public/dist/font: | yarn.lock $(OBJDIRS)
cp -r node_modules/summernote/dist/font public/dist/font
+public/dist/fonts: | yarn.lock $(OBJDIRS)
+ cp -r node_modules/primeicons/fonts public/dist/fonts
+
public/js/locales/summernote: | yarn.lock $(OBJDIRS)
cp -r node_modules/summernote/dist/lang public/js/locales/summernote
@@ -183,6 +213,12 @@ public/js/swagger-ui.js: node_modules/swagger-ui-dist/swagger-ui.js | yarn.lock
cp -r node_modules/swagger-ui-dist/*.js node_modules/swagger-ui-dist/*.js.map public/js
cp -r node_modules/swagger-ui-dist/*.css node_modules/swagger-ui-dist/*.css.map public/css
+public/img/%.svg: artwork/%.svg
+ cp $< $@
+
+public/locale/%.json: locale/%.json | $(OBJDIRS)
+ $(LOCALEMAKE) $< $@
+
node_modules/swagger-ui-dist/swagger-ui.js: yarn.lock
# This doesn't just generate en.json, but all locale files.
@@ -193,6 +229,10 @@ node_modules/swagger-ui-dist/swagger-ui.js: yarn.lock
public/js/locales/grocy/en.json: vendor localization/strings.pot | $(OBJDIRS)
${PHP} buildfiles/generate-locales.php
+.PHONY=extract
+extract:
+ ${I18NEXTRACT} report -v './js/**/*.?(js|vue|ts)' --languageFiles './locale/*.json' -a
+
.PHONY=run
run: build
${PHP} ${RUNFLAGS}
@@ -240,6 +280,7 @@ clean:
-rm -rf public/js
-rm -rf public/css
-rm -rf public/js/locales
+ -rm -rf public/locale
-rm -rf release/
-rm -rf vendor/
-rm -rf node_modules
diff --git a/artwork/not-grocy-user-white.afdesign b/artwork/not-grocy-user-white.afdesign
new file mode 100644
index 00000000..5aaae784
Binary files /dev/null and b/artwork/not-grocy-user-white.afdesign differ
diff --git a/artwork/not-grocy-user-white.svg b/artwork/not-grocy-user-white.svg
new file mode 100644
index 00000000..7ada3f07
--- /dev/null
+++ b/artwork/not-grocy-user-white.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/artwork/not-grocy-white-stencil.afdesign b/artwork/not-grocy-white-stencil.afdesign
new file mode 100644
index 00000000..e4ef18bb
Binary files /dev/null and b/artwork/not-grocy-white-stencil.afdesign differ
diff --git a/artwork/not-grocy-white-stencil.png b/artwork/not-grocy-white-stencil.png
new file mode 100644
index 00000000..5832752a
Binary files /dev/null and b/artwork/not-grocy-white-stencil.png differ
diff --git a/artwork/not-grocy-white-stencil.svg b/artwork/not-grocy-white-stencil.svg
new file mode 100644
index 00000000..5b7fee51
--- /dev/null
+++ b/artwork/not-grocy-white-stencil.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/buildfiles/convert-locales.php b/buildfiles/convert-locales.php
new file mode 100644
index 00000000..5c18f206
--- /dev/null
+++ b/buildfiles/convert-locales.php
@@ -0,0 +1,69 @@
+LoadLocalizations(false);
+
+ $lf = fopen(REPO_BASE . "/locale/" . $culture . ".json", "w");
+
+ fwrite($lf, "{\n");
+
+ $isFirst = true;
+ foreach($ls->Po as $translation) {
+ $hasPlural = $translation->hasPlural();
+ if(!$isFirst) {
+ fwrite($lf, ",\n");
+ }
+ $isFirst = false;
+ $orig = clean($translation->getOriginal(), $hasPlural);
+ if($hasPlural) {
+ $orig .= ' | ' . clean($translation->getPlural(), $hasPlural);
+ }
+
+ $trans = clean($translation->getTranslation(), $hasPlural);
+ if($hasPlural) {
+ $plTrans = $translation->getPluralTranslations();
+ foreach($plTrans as $pTrans) {
+ $trans .= ' | ' . clean($pTrans, $hasPlural);
+ }
+ }
+
+ fwrite($lf, ' "'.$orig.'" : "'.$trans.'"');
+ }
+ fwrite($lf, "\n}\n");
+}
diff --git a/buildfiles/make-locales.php b/buildfiles/make-locales.php
new file mode 100644
index 00000000..74b3b6d7
--- /dev/null
+++ b/buildfiles/make-locales.php
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/api/BaseApi.ts b/js/api/BaseApi.ts
new file mode 100644
index 00000000..4a78f722
--- /dev/null
+++ b/js/api/BaseApi.ts
@@ -0,0 +1,36 @@
+class BaseApi
+{
+ baseUrl: string;
+
+
+ constructor(baseUrl: string)
+ {
+ this.baseUrl = baseUrl;
+ }
+
+ SetBase(newBase: string) : void
+ {
+ this.baseUrl = newBase;
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ async execute(endpoint: string, options: RequestInit) : Promise
+ {
+ const resp = await fetch(endpoint, options);
+
+ if (!resp.ok)
+ {
+ // throw!
+ throw new Error('Not OK status code received from ' + endpoint);
+ }
+
+ // API mostly returns 204 No Content
+ // when a Call was successful.
+ if (resp.status == 204)
+ return new Promise((resolve) => { resolve({}) });
+
+ return resp.json();
+ }
+}
+
+export default BaseApi;
\ No newline at end of file
diff --git a/js/api/RecipesApi.ts b/js/api/RecipesApi.ts
new file mode 100644
index 00000000..7e36fa00
--- /dev/null
+++ b/js/api/RecipesApi.ts
@@ -0,0 +1,65 @@
+import BaseApi from "./BaseApi";
+
+class RecipesApi extends BaseApi
+{
+ fetchOptions: RequestInit;
+
+ constructor(baseUrl: string)
+ {
+ super(baseUrl);
+ this.fetchOptions = {
+ cache: 'no-cache',
+ credentials: 'same-origin',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json'
+ },
+ redirect: 'follow',
+ referrerPolicy: 'no-referrer'
+ };
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ async GetAll(): Promise
+ {
+ // I'm sure there is a way, I just don't know it.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "GET";
+
+ const endpoint = this.baseUrl + '/recipes';
+
+ return this.execute(endpoint, options);
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ async Get(id: number): Promise
+ {
+ // I'm sure there is a way, I just don't know it.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "GET";
+
+ const endpoint = this.baseUrl + `/recipes/${id}/get`;
+
+ return this.execute(endpoint, options);
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ async UpdateRecipe(id: number, fields: unknown): Promise
+ {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "PUT";
+ options.body = JSON.stringify(fields);
+
+ const endpoint = this.baseUrl + `/recipes/${id}/edit`;
+
+ return this.execute(endpoint, options);
+ }
+}
+
+export default RecipesApi;
\ No newline at end of file
diff --git a/js/api/SettingsApi.ts b/js/api/SettingsApi.ts
new file mode 100644
index 00000000..507191d0
--- /dev/null
+++ b/js/api/SettingsApi.ts
@@ -0,0 +1,38 @@
+import BaseApi from "./BaseApi";
+
+class SettingsApi extends BaseApi
+{
+ fetchOptions: RequestInit;
+
+ constructor(baseUrl: string)
+ {
+ super(baseUrl);
+ this.fetchOptions = {
+ cache: 'no-cache',
+ credentials: 'same-origin',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json'
+ },
+ redirect: 'follow',
+ referrerPolicy: 'no-referrer'
+ };
+ }
+
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types,@typescript-eslint/no-explicit-any
+ async SaveUserSetting(key: string, value: any): Promise
+ {
+ // I'm sure there is a way, I just don't know it.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "PUT";
+ options.body = JSON.stringify({ "value": value });
+
+ const endpoint = this.baseUrl + '/user/settings/' + key;
+
+ return this.execute(endpoint, options);
+ }
+}
+
+export default SettingsApi;
\ No newline at end of file
diff --git a/js/api/StockApi.ts b/js/api/StockApi.ts
new file mode 100644
index 00000000..07f0e2e0
--- /dev/null
+++ b/js/api/StockApi.ts
@@ -0,0 +1,77 @@
+import BaseApi from "./BaseApi";
+
+class StockApi extends BaseApi
+{
+ fetchOptions: RequestInit;
+
+ constructor(baseUrl: string)
+ {
+ super(baseUrl);
+ this.fetchOptions = {
+ cache: 'no-cache',
+ credentials: 'same-origin',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json'
+ },
+ redirect: 'follow',
+ referrerPolicy: 'no-referrer'
+ };
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ async GetAll(): Promise
+ {
+ // I'm sure there is a way, I just don't know it.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "GET";
+
+ const endpoint = this.baseUrl + '/stock';
+
+ return this.execute(endpoint, options);
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ async Overview(): Promise
+ {
+ // I'm sure there is a way, I just don't know it.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "GET";
+
+ const endpoint = this.baseUrl + '/stock/overview';
+
+ return this.execute(endpoint, options);
+ }
+
+ async GetQuantityUnits(): Promise
+ {
+ // I'm sure there is a way, I just don't know it.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "GET";
+
+ const endpoint = this.baseUrl + '/objects/quantity_units';
+
+ return this.execute(endpoint, options);
+ }
+
+ async GetProducts(): Promise
+ {
+ // I'm sure there is a way, I just don't know it.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "GET";
+
+ const endpoint = this.baseUrl + '/stock/products';
+
+ return this.execute(endpoint, options);
+ }
+}
+
+export default StockApi;
\ No newline at end of file
diff --git a/js/api/SystemApi.ts b/js/api/SystemApi.ts
new file mode 100644
index 00000000..7808ff5d
--- /dev/null
+++ b/js/api/SystemApi.ts
@@ -0,0 +1,37 @@
+import BaseApi from "./BaseApi";
+
+class SystemApi extends BaseApi
+{
+ fetchOptions: RequestInit;
+
+ constructor(baseUrl: string)
+ {
+ super(baseUrl);
+ this.fetchOptions = {
+ cache: 'no-cache',
+ credentials: 'same-origin',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json'
+ },
+ redirect: 'follow',
+ referrerPolicy: 'no-referrer'
+ };
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ async GetConfig(): Promise
+ {
+ // I'm sure there is a way, I just don't know it.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const options = {};
+ Object.assign(options, this.fetchOptions);
+ options.method = "GET";
+
+ const endpoint = this.baseUrl + '/system/config/grocy';
+
+ return this.execute(endpoint, options);
+ }
+}
+
+export default SystemApi;
\ No newline at end of file
diff --git a/js/api/index.ts b/js/api/index.ts
new file mode 100644
index 00000000..ad701b0f
--- /dev/null
+++ b/js/api/index.ts
@@ -0,0 +1,48 @@
+import BaseApi from './BaseApi';
+import SettingsApi from './SettingsApi';
+import SystemApi from './SystemApi';
+import StockApi from './StockApi';
+import RecipesApi from './RecipesApi';
+
+class GrocyApi extends BaseApi
+{
+ fetchOptions: RequestInit;
+ Settings: SettingsApi;
+ System: SystemApi;
+ Stock: StockApi;
+ Recipes: RecipesApi;
+
+ constructor(baseUrl: string)
+ {
+ super(baseUrl);
+ this.fetchOptions = {
+ cache: 'no-cache',
+ credentials: 'same-origin',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Accept': 'application/json'
+ },
+ redirect: 'follow',
+ referrerPolicy: 'no-referrer'
+ };
+
+ this.Settings = new SettingsApi(baseUrl);
+ this.System = new SystemApi(baseUrl);
+ this.Stock = new StockApi(baseUrl);
+ this.Recipes = new RecipesApi(baseUrl);
+ }
+
+ SetBase(newBase: string) : void
+ {
+ super.SetBase(newBase);
+ this.Settings.SetBase(newBase);
+ this.System.SetBase(newBase);
+ this.Stock.SetBase(newBase);
+ this.Recipes.SetBase(newBase);
+ }
+}
+
+const api = new GrocyApi('/api');
+
+export default api;
+export { GrocyApi, SettingsApi, SystemApi };
\ No newline at end of file
diff --git a/js/components/App/Config.vue b/js/components/App/Config.vue
new file mode 100644
index 00000000..955c1e42
--- /dev/null
+++ b/js/components/App/Config.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
Menu Type
+
+
+
Menu Color
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/App/Footer.vue b/js/components/App/Footer.vue
new file mode 100644
index 00000000..2beb7ff3
--- /dev/null
+++ b/js/components/App/Footer.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/App/HeaderClock.vue b/js/components/App/HeaderClock.vue
new file mode 100644
index 00000000..e25fcf61
--- /dev/null
+++ b/js/components/App/HeaderClock.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/App/Menu.vue b/js/components/App/Menu.vue
new file mode 100644
index 00000000..6de9622e
--- /dev/null
+++ b/js/components/App/Menu.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/App/Profile.vue b/js/components/App/Profile.vue
new file mode 100644
index 00000000..87c159fc
--- /dev/null
+++ b/js/components/App/Profile.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+ {{ userName }}
+
+
+
+
+
+ {{ $t('Change password') }}
+ {{ $t('Logout') }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/App/QuickUserSettings.vue b/js/components/App/QuickUserSettings.vue
new file mode 100644
index 00000000..71f300da
--- /dev/null
+++ b/js/components/App/QuickUserSettings.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
{{ $t('Automatically reload data') }}
+
+
+
+
{{ $t('Show clock in header') }}
+
+
+
+
+
+
+
{{ $t('Night mode') }}
+
+
+
+
+
+
+
+
+
+
{{ $t('Automatic night mode range') }}
+
+
+
+
+
+
+
+ {{ nightModeStart }}
+ {{ nightModeEnd }}
+
+
+ {{ nightModeStart }}
+ {{ nightModeEnd }}
+
+
+
+
+
+
+
+
+
{{ $t('Keep screen on') }}
+
+
+
+
{{ $t('Keep screen on while displaying fullscreen content') }}
+
+
+
+
+
diff --git a/js/components/App/Submenu.vue b/js/components/App/Submenu.vue
new file mode 100644
index 00000000..c5983e40
--- /dev/null
+++ b/js/components/App/Submenu.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/App/TopBar.vue b/js/components/App/TopBar.vue
new file mode 100644
index 00000000..24f65a8e
--- /dev/null
+++ b/js/components/App/TopBar.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+ User Settings
+
+
+
+ Settings
+
+
+
+
+
+
+
+
+
diff --git a/js/components/App/UserSettingsMenu.vue b/js/components/App/UserSettingsMenu.vue
new file mode 100644
index 00000000..e4a2f773
--- /dev/null
+++ b/js/components/App/UserSettingsMenu.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/Recipes/IngredientEdit.vue b/js/components/Recipes/IngredientEdit.vue
new file mode 100644
index 00000000..cbae5aaf
--- /dev/null
+++ b/js/components/Recipes/IngredientEdit.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+ {{ $t('Only check if any amount is in stock') }}
+
+
+
+
+ {{ $t('Save') }}
+ {{ $t('Cancel') }}
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/Recipes/RecipeDisplayBody.vue b/js/components/Recipes/RecipeDisplayBody.vue
new file mode 100644
index 00000000..224c97a3
--- /dev/null
+++ b/js/components/Recipes/RecipeDisplayBody.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
{{ $t('Energy (kcal)') }}
+
{{ $n(fetchedRecipe.calories, 'avoid-decimal') }}
+
+
+
{{ $t('Costs') }}
+
{{ $n(fetchedRecipe.costs, 'currency') }}
+
+
+
{{ $t('Desired servings') }}
+
+
+
+
+
+
+
+ {{ group }}
+
+
+
+
{{ $n(ingredient.recipe_amount, 'avoid-decimal') }} {{ getQuantityUnit(ingredient.qu_id).name }} {{ ingredient.product.name }}
+
+ {{ $n(ingredient.costs, 'currency') }}
+ {{ $n(ingredient.product.calories, 'avoid-decimal') }} {{ $t('Calories') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/Recipes/StockFulfillmentStatus.vue b/js/components/Recipes/StockFulfillmentStatus.vue
new file mode 100644
index 00000000..6b4bd628
--- /dev/null
+++ b/js/components/Recipes/StockFulfillmentStatus.vue
@@ -0,0 +1,58 @@
+
+
+
+ {{ $t('Enough in stock') }}
+
+
+ {{ getOnShippinglist }}
+
+
+ {{ getMissingString }}
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/Stock/Productamountpicker.vue b/js/components/Stock/Productamountpicker.vue
new file mode 100644
index 00000000..df024917
--- /dev/null
+++ b/js/components/Stock/Productamountpicker.vue
@@ -0,0 +1,60 @@
+
+
+
+ {{ $t('Amount') }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/components/Stock/Productpicker.vue b/js/components/Stock/Productpicker.vue
new file mode 100644
index 00000000..ee3479cc
--- /dev/null
+++ b/js/components/Stock/Productpicker.vue
@@ -0,0 +1,154 @@
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+ {{ $t("\"{string0}\" could not be resolved to a product, how do you want to proceed?", { string0: selectedProduct }) }}
+
+
+ P {{ $t('Add as new Product') }}
+ B {{ $t('Add as barcode to existing product') }}
+ A {{ $t('Add as new Product and prefill barcode') }}
+ C
+
+
+
+
+
+
+
diff --git a/js/components/Stock/WebcamBarcodeScanner.vue b/js/components/Stock/WebcamBarcodeScanner.vue
new file mode 100644
index 00000000..b5107f12
--- /dev/null
+++ b/js/components/Stock/WebcamBarcodeScanner.vue
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+ {{ $t('Select a camera') }}
+
+
+
+
+
+ {{ $t('Cancel') }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/customTypes.d.ts b/js/customTypes.d.ts
new file mode 100644
index 00000000..8a45ac8d
--- /dev/null
+++ b/js/customTypes.d.ts
@@ -0,0 +1,6 @@
+/*declare module '@vue/runtime-core' {
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
+ export interface ComponentCustomProperties {
+
+ }
+}*/
\ No newline at end of file
diff --git a/js/grocy.js b/js/grocy.js
index a2b4b97c..935bdbbe 100644
--- a/js/grocy.js
+++ b/js/grocy.js
@@ -1,26 +1,27 @@
+/* eslint-disable @typescript-eslint/no-this-alias */
// todo: axe some stuff from here for better tree-shaking. also brr, side effects.
-import './vendor';
-import { GrocyApi } from './lib/api';
-import { RefreshContextualTimeago } from './configs/timeago';
-import { setDatatableDefaults } from './configs/datatable';
-import { GrocyFrontendHelpers } from './helpers/frontend';
-import { setInitialGlobalState } from './configs/globalstate';
-import { WakeLock } from './lib/WakeLock';
-import { UISound } from './lib/UISound';
-import { Nightmode } from './lib/nightmode';
-import { HeaderClock } from './helpers/clock';
-import { BoolVal } from './helpers/extensions';
+import './legacy/vendor';
+import { GrocyApi } from './legacy/lib/api';
+import { RefreshContextualTimeago } from './legacy/configs/timeago';
+import { setDatatableDefaults } from './legacy/configs/datatable';
+import { GrocyFrontendHelpers } from './legacy/helpers/frontend';
+import { setInitialGlobalState } from './legacy/configs/globalstate';
+import { WakeLock } from './legacy/lib/WakeLock';
+import { UISound } from './legacy/lib/UISound';
+import { Nightmode } from './legacy/lib/nightmode';
+import { HeaderClock } from './legacy/helpers/clock';
+import { BoolVal } from './legacy/helpers/extensions';
import Translator from 'gettext-translator';
import { register as timeagoRegisterLang } from 'timeago.js';
import * as timeagoLangs from 'timeago.js/lib/lang';
-import { WindowMessageBag } from './helpers/messagebag';
-import * as components from './components';
+import { WindowMessageBag } from './legacy/helpers/messagebag';
+import * as components from './legacy/components';
import * as uuid from 'uuid';
-import * as views from './viewjs';
-import { GrocyProxy } from './lib/proxy'; //import { $ } from 'jquery';
+import * as views from './legacy/viewjs';
+import { GrocyProxy } from './legacy/lib/proxy'; //import { $ } from 'jquery';
import moment from 'moment';
-import './helpers/string';
+import './legacy/helpers/string';
class GrocyClass
{
diff --git a/js/components/BasePicker.js b/js/legacy/components/BasePicker.js
similarity index 100%
rename from js/components/BasePicker.js
rename to js/legacy/components/BasePicker.js
diff --git a/js/components/barcodescanner.js b/js/legacy/components/barcodescanner.js
similarity index 100%
rename from js/components/barcodescanner.js
rename to js/legacy/components/barcodescanner.js
diff --git a/js/components/batterycard.js b/js/legacy/components/batterycard.js
similarity index 100%
rename from js/components/batterycard.js
rename to js/legacy/components/batterycard.js
diff --git a/js/components/calendarcard.js b/js/legacy/components/calendarcard.js
similarity index 100%
rename from js/components/calendarcard.js
rename to js/legacy/components/calendarcard.js
diff --git a/js/components/chorecard.js b/js/legacy/components/chorecard.js
similarity index 100%
rename from js/components/chorecard.js
rename to js/legacy/components/chorecard.js
diff --git a/js/components/datetimepicker.js b/js/legacy/components/datetimepicker.js
similarity index 100%
rename from js/components/datetimepicker.js
rename to js/legacy/components/datetimepicker.js
diff --git a/js/components/datetimepicker2.js b/js/legacy/components/datetimepicker2.js
similarity index 100%
rename from js/components/datetimepicker2.js
rename to js/legacy/components/datetimepicker2.js
diff --git a/js/components/index.js b/js/legacy/components/index.js
similarity index 100%
rename from js/components/index.js
rename to js/legacy/components/index.js
diff --git a/js/components/locationpicker.js b/js/legacy/components/locationpicker.js
similarity index 100%
rename from js/components/locationpicker.js
rename to js/legacy/components/locationpicker.js
diff --git a/js/components/numberpicker.js b/js/legacy/components/numberpicker.js
similarity index 100%
rename from js/components/numberpicker.js
rename to js/legacy/components/numberpicker.js
diff --git a/js/components/productamountpicker.js b/js/legacy/components/productamountpicker.js
similarity index 100%
rename from js/components/productamountpicker.js
rename to js/legacy/components/productamountpicker.js
diff --git a/js/components/productcard.js b/js/legacy/components/productcard.js
similarity index 100%
rename from js/components/productcard.js
rename to js/legacy/components/productcard.js
diff --git a/js/components/productpicker.js b/js/legacy/components/productpicker.js
similarity index 100%
rename from js/components/productpicker.js
rename to js/legacy/components/productpicker.js
diff --git a/js/components/recipepicker.js b/js/legacy/components/recipepicker.js
similarity index 100%
rename from js/components/recipepicker.js
rename to js/legacy/components/recipepicker.js
diff --git a/js/components/shoppinglocationpicker.js b/js/legacy/components/shoppinglocationpicker.js
similarity index 100%
rename from js/components/shoppinglocationpicker.js
rename to js/legacy/components/shoppinglocationpicker.js
diff --git a/js/components/userfieldsform.js b/js/legacy/components/userfieldsform.js
similarity index 100%
rename from js/components/userfieldsform.js
rename to js/legacy/components/userfieldsform.js
diff --git a/js/components/userpicker.js b/js/legacy/components/userpicker.js
similarity index 100%
rename from js/components/userpicker.js
rename to js/legacy/components/userpicker.js
diff --git a/js/configs/datatable.js b/js/legacy/configs/datatable.js
similarity index 100%
rename from js/configs/datatable.js
rename to js/legacy/configs/datatable.js
diff --git a/js/configs/globalstate.js b/js/legacy/configs/globalstate.js
similarity index 100%
rename from js/configs/globalstate.js
rename to js/legacy/configs/globalstate.js
diff --git a/js/configs/lazy.js b/js/legacy/configs/lazy.js
similarity index 100%
rename from js/configs/lazy.js
rename to js/legacy/configs/lazy.js
diff --git a/js/configs/permissions.js b/js/legacy/configs/permissions.js
similarity index 100%
rename from js/configs/permissions.js
rename to js/legacy/configs/permissions.js
diff --git a/js/configs/timeago.js b/js/legacy/configs/timeago.js
similarity index 100%
rename from js/configs/timeago.js
rename to js/legacy/configs/timeago.js
diff --git a/js/helpers/clock.js b/js/legacy/helpers/clock.js
similarity index 100%
rename from js/helpers/clock.js
rename to js/legacy/helpers/clock.js
diff --git a/js/helpers/dropdown.js b/js/legacy/helpers/dropdown.js
similarity index 100%
rename from js/helpers/dropdown.js
rename to js/legacy/helpers/dropdown.js
diff --git a/js/helpers/embeds.js b/js/legacy/helpers/embeds.js
similarity index 100%
rename from js/helpers/embeds.js
rename to js/legacy/helpers/embeds.js
diff --git a/js/helpers/extensions.js b/js/legacy/helpers/extensions.js
similarity index 100%
rename from js/helpers/extensions.js
rename to js/legacy/helpers/extensions.js
diff --git a/js/helpers/frontend.js b/js/legacy/helpers/frontend.js
similarity index 100%
rename from js/helpers/frontend.js
rename to js/legacy/helpers/frontend.js
diff --git a/js/helpers/global.js b/js/legacy/helpers/global.js
similarity index 100%
rename from js/helpers/global.js
rename to js/legacy/helpers/global.js
diff --git a/js/helpers/input.js b/js/legacy/helpers/input.js
similarity index 100%
rename from js/helpers/input.js
rename to js/legacy/helpers/input.js
diff --git a/js/helpers/messagebag.js b/js/legacy/helpers/messagebag.js
similarity index 100%
rename from js/helpers/messagebag.js
rename to js/legacy/helpers/messagebag.js
diff --git a/js/helpers/numberdisplay.js b/js/legacy/helpers/numberdisplay.js
similarity index 100%
rename from js/helpers/numberdisplay.js
rename to js/legacy/helpers/numberdisplay.js
diff --git a/js/helpers/qrcode.js b/js/legacy/helpers/qrcode.js
similarity index 85%
rename from js/helpers/qrcode.js
rename to js/legacy/helpers/qrcode.js
index b6168f21..aa884a34 100644
--- a/js/helpers/qrcode.js
+++ b/js/legacy/helpers/qrcode.js
@@ -1,5 +1,5 @@
// bwipjs is broken, needs to be explicitly imported.
-import bwipJs from '../../node_modules/bwip-js/dist/bwip-js.mjs';
+import bwipJs from '../../../node_modules/bwip-js/dist/bwip-js.mjs';
function QrCodeImgHtml(text)
{
diff --git a/js/helpers/string.js b/js/legacy/helpers/string.js
similarity index 100%
rename from js/helpers/string.js
rename to js/legacy/helpers/string.js
diff --git a/js/lib/UISound.js b/js/legacy/lib/UISound.js
similarity index 100%
rename from js/lib/UISound.js
rename to js/legacy/lib/UISound.js
diff --git a/js/lib/WakeLock.js b/js/legacy/lib/WakeLock.js
similarity index 100%
rename from js/lib/WakeLock.js
rename to js/legacy/lib/WakeLock.js
diff --git a/js/lib/api.js b/js/legacy/lib/api.js
similarity index 100%
rename from js/lib/api.js
rename to js/legacy/lib/api.js
diff --git a/js/lib/legacy.js b/js/legacy/lib/legacy.js
similarity index 100%
rename from js/lib/legacy.js
rename to js/legacy/lib/legacy.js
diff --git a/js/lib/nightmode.js b/js/legacy/lib/nightmode.js
similarity index 100%
rename from js/lib/nightmode.js
rename to js/legacy/lib/nightmode.js
diff --git a/js/lib/proxy.js b/js/legacy/lib/proxy.js
similarity index 100%
rename from js/lib/proxy.js
rename to js/legacy/lib/proxy.js
diff --git a/js/vendor.js b/js/legacy/vendor.js
similarity index 100%
rename from js/vendor.js
rename to js/legacy/vendor.js
diff --git a/js/viewjs/about.js b/js/legacy/viewjs/about.js
similarity index 100%
rename from js/viewjs/about.js
rename to js/legacy/viewjs/about.js
diff --git a/js/viewjs/barcodescannertesting.js b/js/legacy/viewjs/barcodescannertesting.js
similarity index 100%
rename from js/viewjs/barcodescannertesting.js
rename to js/legacy/viewjs/barcodescannertesting.js
diff --git a/js/viewjs/batteries.js b/js/legacy/viewjs/batteries.js
similarity index 100%
rename from js/viewjs/batteries.js
rename to js/legacy/viewjs/batteries.js
diff --git a/js/viewjs/batteriesjournal.js b/js/legacy/viewjs/batteriesjournal.js
similarity index 100%
rename from js/viewjs/batteriesjournal.js
rename to js/legacy/viewjs/batteriesjournal.js
diff --git a/js/viewjs/batteriesoverview.js b/js/legacy/viewjs/batteriesoverview.js
similarity index 100%
rename from js/viewjs/batteriesoverview.js
rename to js/legacy/viewjs/batteriesoverview.js
diff --git a/js/viewjs/batteriessettings.js b/js/legacy/viewjs/batteriessettings.js
similarity index 100%
rename from js/viewjs/batteriessettings.js
rename to js/legacy/viewjs/batteriessettings.js
diff --git a/js/viewjs/batteryform.js b/js/legacy/viewjs/batteryform.js
similarity index 100%
rename from js/viewjs/batteryform.js
rename to js/legacy/viewjs/batteryform.js
diff --git a/js/viewjs/batterytracking.js b/js/legacy/viewjs/batterytracking.js
similarity index 100%
rename from js/viewjs/batterytracking.js
rename to js/legacy/viewjs/batterytracking.js
diff --git a/js/viewjs/calendar.js b/js/legacy/viewjs/calendar.js
similarity index 100%
rename from js/viewjs/calendar.js
rename to js/legacy/viewjs/calendar.js
diff --git a/js/viewjs/choreform.js b/js/legacy/viewjs/choreform.js
similarity index 100%
rename from js/viewjs/choreform.js
rename to js/legacy/viewjs/choreform.js
diff --git a/js/viewjs/chores.js b/js/legacy/viewjs/chores.js
similarity index 100%
rename from js/viewjs/chores.js
rename to js/legacy/viewjs/chores.js
diff --git a/js/viewjs/choresjournal.js b/js/legacy/viewjs/choresjournal.js
similarity index 100%
rename from js/viewjs/choresjournal.js
rename to js/legacy/viewjs/choresjournal.js
diff --git a/js/viewjs/choresoverview.js b/js/legacy/viewjs/choresoverview.js
similarity index 100%
rename from js/viewjs/choresoverview.js
rename to js/legacy/viewjs/choresoverview.js
diff --git a/js/viewjs/choressettings.js b/js/legacy/viewjs/choressettings.js
similarity index 100%
rename from js/viewjs/choressettings.js
rename to js/legacy/viewjs/choressettings.js
diff --git a/js/viewjs/choretracking.js b/js/legacy/viewjs/choretracking.js
similarity index 100%
rename from js/viewjs/choretracking.js
rename to js/legacy/viewjs/choretracking.js
diff --git a/js/viewjs/consume.js b/js/legacy/viewjs/consume.js
similarity index 100%
rename from js/viewjs/consume.js
rename to js/legacy/viewjs/consume.js
diff --git a/js/viewjs/equipment.js b/js/legacy/viewjs/equipment.js
similarity index 100%
rename from js/viewjs/equipment.js
rename to js/legacy/viewjs/equipment.js
diff --git a/js/viewjs/equipmentform.js b/js/legacy/viewjs/equipmentform.js
similarity index 100%
rename from js/viewjs/equipmentform.js
rename to js/legacy/viewjs/equipmentform.js
diff --git a/js/viewjs/index.js b/js/legacy/viewjs/index.js
similarity index 100%
rename from js/viewjs/index.js
rename to js/legacy/viewjs/index.js
diff --git a/js/viewjs/inventory.js b/js/legacy/viewjs/inventory.js
similarity index 100%
rename from js/viewjs/inventory.js
rename to js/legacy/viewjs/inventory.js
diff --git a/js/viewjs/locationcontentsheet.js b/js/legacy/viewjs/locationcontentsheet.js
similarity index 100%
rename from js/viewjs/locationcontentsheet.js
rename to js/legacy/viewjs/locationcontentsheet.js
diff --git a/js/viewjs/locationform.js b/js/legacy/viewjs/locationform.js
similarity index 100%
rename from js/viewjs/locationform.js
rename to js/legacy/viewjs/locationform.js
diff --git a/js/viewjs/locations.js b/js/legacy/viewjs/locations.js
similarity index 100%
rename from js/viewjs/locations.js
rename to js/legacy/viewjs/locations.js
diff --git a/js/viewjs/login.js b/js/legacy/viewjs/login.js
similarity index 100%
rename from js/viewjs/login.js
rename to js/legacy/viewjs/login.js
diff --git a/js/viewjs/manageapikeys.js b/js/legacy/viewjs/manageapikeys.js
similarity index 100%
rename from js/viewjs/manageapikeys.js
rename to js/legacy/viewjs/manageapikeys.js
diff --git a/js/viewjs/mealplan.js b/js/legacy/viewjs/mealplan.js
similarity index 100%
rename from js/viewjs/mealplan.js
rename to js/legacy/viewjs/mealplan.js
diff --git a/js/viewjs/openapiui.js b/js/legacy/viewjs/openapiui.js
similarity index 100%
rename from js/viewjs/openapiui.js
rename to js/legacy/viewjs/openapiui.js
diff --git a/js/viewjs/productbarcodeform.js b/js/legacy/viewjs/productbarcodeform.js
similarity index 100%
rename from js/viewjs/productbarcodeform.js
rename to js/legacy/viewjs/productbarcodeform.js
diff --git a/js/viewjs/productform.js b/js/legacy/viewjs/productform.js
similarity index 100%
rename from js/viewjs/productform.js
rename to js/legacy/viewjs/productform.js
diff --git a/js/viewjs/productgroupform.js b/js/legacy/viewjs/productgroupform.js
similarity index 100%
rename from js/viewjs/productgroupform.js
rename to js/legacy/viewjs/productgroupform.js
diff --git a/js/viewjs/productgroups.js b/js/legacy/viewjs/productgroups.js
similarity index 100%
rename from js/viewjs/productgroups.js
rename to js/legacy/viewjs/productgroups.js
diff --git a/js/viewjs/products.js b/js/legacy/viewjs/products.js
similarity index 100%
rename from js/viewjs/products.js
rename to js/legacy/viewjs/products.js
diff --git a/js/viewjs/purchase.js b/js/legacy/viewjs/purchase.js
similarity index 100%
rename from js/viewjs/purchase.js
rename to js/legacy/viewjs/purchase.js
diff --git a/js/viewjs/quantityunitconversionform.js b/js/legacy/viewjs/quantityunitconversionform.js
similarity index 100%
rename from js/viewjs/quantityunitconversionform.js
rename to js/legacy/viewjs/quantityunitconversionform.js
diff --git a/js/viewjs/quantityunitform.js b/js/legacy/viewjs/quantityunitform.js
similarity index 100%
rename from js/viewjs/quantityunitform.js
rename to js/legacy/viewjs/quantityunitform.js
diff --git a/js/viewjs/quantityunitpluraltesting.js b/js/legacy/viewjs/quantityunitpluraltesting.js
similarity index 100%
rename from js/viewjs/quantityunitpluraltesting.js
rename to js/legacy/viewjs/quantityunitpluraltesting.js
diff --git a/js/viewjs/quantityunits.js b/js/legacy/viewjs/quantityunits.js
similarity index 100%
rename from js/viewjs/quantityunits.js
rename to js/legacy/viewjs/quantityunits.js
diff --git a/js/viewjs/recipeform.js b/js/legacy/viewjs/recipeform.js
similarity index 100%
rename from js/viewjs/recipeform.js
rename to js/legacy/viewjs/recipeform.js
diff --git a/js/viewjs/recipeposform.js b/js/legacy/viewjs/recipeposform.js
similarity index 100%
rename from js/viewjs/recipeposform.js
rename to js/legacy/viewjs/recipeposform.js
diff --git a/js/viewjs/recipes.js b/js/legacy/viewjs/recipes.js
similarity index 100%
rename from js/viewjs/recipes.js
rename to js/legacy/viewjs/recipes.js
diff --git a/js/viewjs/recipessettings.js b/js/legacy/viewjs/recipessettings.js
similarity index 100%
rename from js/viewjs/recipessettings.js
rename to js/legacy/viewjs/recipessettings.js
diff --git a/js/viewjs/shoppinglist.js b/js/legacy/viewjs/shoppinglist.js
similarity index 99%
rename from js/viewjs/shoppinglist.js
rename to js/legacy/viewjs/shoppinglist.js
index e14fb8ef..fe09552a 100644
--- a/js/viewjs/shoppinglist.js
+++ b/js/legacy/viewjs/shoppinglist.js
@@ -2,7 +2,7 @@ import { animateCSS } from '../helpers/extensions';
import { __t, U } from '../lib/legacy'; //import { $ } from 'jquery'; // this needs to be explicitly imported for some reason,
// otherwise rollup complains.
-import bwipjs from '../../node_modules/bwip-js/dist/bwip-js.mjs';
+import bwipjs from '../../../node_modules/bwip-js/dist/bwip-js.mjs';
import { WindowMessageBag } from '../helpers/messagebag';
function shoppinglistView(Grocy, scope = null)
diff --git a/js/viewjs/shoppinglistform.js b/js/legacy/viewjs/shoppinglistform.js
similarity index 100%
rename from js/viewjs/shoppinglistform.js
rename to js/legacy/viewjs/shoppinglistform.js
diff --git a/js/viewjs/shoppinglistitemform.js b/js/legacy/viewjs/shoppinglistitemform.js
similarity index 100%
rename from js/viewjs/shoppinglistitemform.js
rename to js/legacy/viewjs/shoppinglistitemform.js
diff --git a/js/viewjs/shoppinglistsettings.js b/js/legacy/viewjs/shoppinglistsettings.js
similarity index 100%
rename from js/viewjs/shoppinglistsettings.js
rename to js/legacy/viewjs/shoppinglistsettings.js
diff --git a/js/viewjs/shoppinglocationform.js b/js/legacy/viewjs/shoppinglocationform.js
similarity index 100%
rename from js/viewjs/shoppinglocationform.js
rename to js/legacy/viewjs/shoppinglocationform.js
diff --git a/js/viewjs/shoppinglocations.js b/js/legacy/viewjs/shoppinglocations.js
similarity index 100%
rename from js/viewjs/shoppinglocations.js
rename to js/legacy/viewjs/shoppinglocations.js
diff --git a/js/viewjs/stockentries.js b/js/legacy/viewjs/stockentries.js
similarity index 100%
rename from js/viewjs/stockentries.js
rename to js/legacy/viewjs/stockentries.js
diff --git a/js/viewjs/stockentryform.js b/js/legacy/viewjs/stockentryform.js
similarity index 100%
rename from js/viewjs/stockentryform.js
rename to js/legacy/viewjs/stockentryform.js
diff --git a/js/viewjs/stockjournal.js b/js/legacy/viewjs/stockjournal.js
similarity index 100%
rename from js/viewjs/stockjournal.js
rename to js/legacy/viewjs/stockjournal.js
diff --git a/js/viewjs/stockjournalsummary.js b/js/legacy/viewjs/stockjournalsummary.js
similarity index 100%
rename from js/viewjs/stockjournalsummary.js
rename to js/legacy/viewjs/stockjournalsummary.js
diff --git a/js/viewjs/stockoverview.js b/js/legacy/viewjs/stockoverview.js
similarity index 100%
rename from js/viewjs/stockoverview.js
rename to js/legacy/viewjs/stockoverview.js
diff --git a/js/viewjs/stocksettings.js b/js/legacy/viewjs/stocksettings.js
similarity index 100%
rename from js/viewjs/stocksettings.js
rename to js/legacy/viewjs/stocksettings.js
diff --git a/js/viewjs/taskcategories.js b/js/legacy/viewjs/taskcategories.js
similarity index 100%
rename from js/viewjs/taskcategories.js
rename to js/legacy/viewjs/taskcategories.js
diff --git a/js/viewjs/taskcategoryform.js b/js/legacy/viewjs/taskcategoryform.js
similarity index 100%
rename from js/viewjs/taskcategoryform.js
rename to js/legacy/viewjs/taskcategoryform.js
diff --git a/js/viewjs/taskform.js b/js/legacy/viewjs/taskform.js
similarity index 100%
rename from js/viewjs/taskform.js
rename to js/legacy/viewjs/taskform.js
diff --git a/js/viewjs/tasks.js b/js/legacy/viewjs/tasks.js
similarity index 100%
rename from js/viewjs/tasks.js
rename to js/legacy/viewjs/tasks.js
diff --git a/js/viewjs/taskssettings.js b/js/legacy/viewjs/taskssettings.js
similarity index 100%
rename from js/viewjs/taskssettings.js
rename to js/legacy/viewjs/taskssettings.js
diff --git a/js/viewjs/transfer.js b/js/legacy/viewjs/transfer.js
similarity index 100%
rename from js/viewjs/transfer.js
rename to js/legacy/viewjs/transfer.js
diff --git a/js/viewjs/userentities.js b/js/legacy/viewjs/userentities.js
similarity index 100%
rename from js/viewjs/userentities.js
rename to js/legacy/viewjs/userentities.js
diff --git a/js/viewjs/userentityform.js b/js/legacy/viewjs/userentityform.js
similarity index 100%
rename from js/viewjs/userentityform.js
rename to js/legacy/viewjs/userentityform.js
diff --git a/js/viewjs/userfieldform.js b/js/legacy/viewjs/userfieldform.js
similarity index 100%
rename from js/viewjs/userfieldform.js
rename to js/legacy/viewjs/userfieldform.js
diff --git a/js/viewjs/userfields.js b/js/legacy/viewjs/userfields.js
similarity index 100%
rename from js/viewjs/userfields.js
rename to js/legacy/viewjs/userfields.js
diff --git a/js/viewjs/userform.js b/js/legacy/viewjs/userform.js
similarity index 100%
rename from js/viewjs/userform.js
rename to js/legacy/viewjs/userform.js
diff --git a/js/viewjs/userobjectform.js b/js/legacy/viewjs/userobjectform.js
similarity index 100%
rename from js/viewjs/userobjectform.js
rename to js/legacy/viewjs/userobjectform.js
diff --git a/js/viewjs/userobjects.js b/js/legacy/viewjs/userobjects.js
similarity index 100%
rename from js/viewjs/userobjects.js
rename to js/legacy/viewjs/userobjects.js
diff --git a/js/viewjs/userpermissions.js b/js/legacy/viewjs/userpermissions.js
similarity index 100%
rename from js/viewjs/userpermissions.js
rename to js/legacy/viewjs/userpermissions.js
diff --git a/js/viewjs/users.js b/js/legacy/viewjs/users.js
similarity index 100%
rename from js/viewjs/users.js
rename to js/legacy/viewjs/users.js
diff --git a/js/viewjs/usersettings.js b/js/legacy/viewjs/usersettings.js
similarity index 100%
rename from js/viewjs/usersettings.js
rename to js/legacy/viewjs/usersettings.js
diff --git a/js/lib/breakpoints.ts b/js/lib/breakpoints.ts
new file mode 100644
index 00000000..1e1f16fb
--- /dev/null
+++ b/js/lib/breakpoints.ts
@@ -0,0 +1,35 @@
+import { computed, onMounted, onUnmounted, ref, ComputedRef } from "vue";
+
+interface ViewportSize { width: ComputedRef, height: ComputedRef, breakpoint: ComputedRef<"xs" | "sm" | "md" | "lg" | "xl"> }
+
+export default function () : ViewportSize
+{
+ const windowWidth = ref(window.innerWidth);
+ const windowHeight = ref(window.innerHeight);
+
+ const sizeChanged = () =>
+ {
+ windowWidth.value = window.innerWidth;
+ windowHeight.value = window.innerHeight;
+ };
+
+ onMounted(() => window.addEventListener('resize', sizeChanged));
+ onUnmounted(() => window.removeEventListener('resize', sizeChanged));
+
+ // TODO: check breakpoints
+ const breakpoint = computed(() =>
+ {
+ if (windowWidth.value > 576 && windowWidth.value <= 768) return 'sm';
+ if (windowWidth.value > 768 && windowWidth.value <= 992) return 'md';
+ if (windowWidth.value > 992 && windowWidth.value <= 1200) return 'lg';
+ if (windowWidth.value > 1200) return 'xl';
+ return 'xs';
+ });
+
+ const width = computed(() => windowWidth.value);
+ const height = computed(() => windowHeight.value);
+
+ return { width, height, breakpoint };
+}
+
+export { ViewportSize };
\ No newline at end of file
diff --git a/js/lib/filters.ts b/js/lib/filters.ts
new file mode 100644
index 00000000..64d6c6e1
--- /dev/null
+++ b/js/lib/filters.ts
@@ -0,0 +1,76 @@
+import { DateTime as LuxonDateTime } from 'luxon';
+
+
+export const LUXON_DATE_BEFORE = 'LUXON_DATE_BEFORE';
+export const LUXON_DATE_BEFORE_OR_EQUAL = 'LUXON_DATE_BEFORE_OR_EQUAL';
+export const LUXON_DATE_AFTER = 'LUXON_DATE_AFTER';
+export const LUXON_DATE_AFTER_OR_EQUAL = 'LUXON_DATE_AFTER_OR_EQUAL';
+export const LUXON_DATE_EQUAL = 'LUXON_DATE_EQUAL';
+export const LUXON_DATE_NOT_EQUAL = 'LUXON_DATE_NOT_EQUAL';
+export const LUXON_DATE_EQUAL_DAY = 'LUXON_DATE_EQUAL_DAY';
+export const LUXON_DATE_NOT_EQUAL_DAY = 'LUXON_DATE_NOT_EQUAL_DAY';
+
+function getValues(value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null)
+{
+
+ let realValue = 0;
+ if (typeof value === "string")
+ realValue = LuxonDateTime.fromISO(value).toMillis();
+ else if (value instanceof Date)
+ realValue = LuxonDateTime.fromISO(value.toDateString()).toMillis();
+ else if (value instanceof LuxonDateTime)
+ realValue = value.toMillis();
+
+ let realFilter = 0;
+
+ if (typeof filter === "string")
+ realFilter = LuxonDateTime.fromISO(filter).toMillis();
+ else if (filter instanceof Date)
+ realFilter = LuxonDateTime.fromISO(filter.toISOString()).toMillis();
+ else if (typeof filter == "number")
+ realFilter = LuxonDateTime.fromMillis(filter).toMillis();
+ else if (filter instanceof LuxonDateTime)
+ realFilter = filter.toMillis();
+
+ return { realValue, realFilter };
+}
+
+function doFilter(value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null, func: (a0: number, a1: number) => boolean): boolean
+{
+ if (value === undefined || value === null) return false;
+ if (filter === undefined || filter === null) return true;
+
+ if (typeof filter === "string" && filter.trim() == "") return false;
+
+ const { realFilter, realValue } = getValues(value, filter);
+
+ return func(realFilter, realValue);
+}
+
+export const luxonDateBeforeFilter =
+ (value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null): boolean =>
+ doFilter(value, filter, (a, b) => a > b);
+export const luxonDateBeforeOrEqualFilter =
+ (value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null): boolean =>
+ doFilter(value, filter, (a, b) => a >= b);
+
+export const luxonDateAfterFilter =
+ (value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null): boolean =>
+ doFilter(value, filter, (a, b) => a < b);
+export const luxonDateAfterOrEqualFilter =
+ (value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null): boolean =>
+ doFilter(value, filter, (a, b) => a <= b);
+
+export const luxonDateEqualFilter =
+ (value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null): boolean =>
+ doFilter(value, filter, (a, b) => a == b);
+export const luxonDateNotEqualFilter =
+ (value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null): boolean =>
+ doFilter(value, filter, (a, b) => a != b);
+
+export const luxonDateEqualDayFilter =
+ (value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null): boolean =>
+ doFilter(value, filter, (a, b) => LuxonDateTime.fromMillis(a).startOf('day').toMillis() == LuxonDateTime.fromMillis(b).startOf('day').toMillis());
+export const luxonDateNotEqualDayFilter =
+ (value: LuxonDateTime | Date | string | undefined | null, filter: LuxonDateTime | Date | number | string | undefined | null): boolean =>
+ doFilter(value, filter, (a, b) => LuxonDateTime.fromMillis(a).startOf('day').toMillis() != LuxonDateTime.fromMillis(b).startOf('day').toMillis());
\ No newline at end of file
diff --git a/js/lib/grocycode.ts b/js/lib/grocycode.ts
new file mode 100644
index 00000000..6aff0bf7
--- /dev/null
+++ b/js/lib/grocycode.ts
@@ -0,0 +1,16 @@
+export const GROCYCODE_PRODUCT = 'p';
+export const GROCYCODE_CHORE = 'c';
+export const GROCYCODE_BATTERY = 'b';
+
+export const allGrocycodes = [GROCYCODE_PRODUCT, GROCYCODE_CHORE, GROCYCODE_BATTERY];
+
+export function decodeGrocycode(code: string) : { valid: boolean, type?: string, id?: number, extraData?: Array }
+{
+ const parts = code.split(':');
+
+ if (parts[0] != "grcy") return { valid: false };
+ if (!allGrocycodes.includes(parts[1])) return { valid: false };
+ if (!parts[2].match(/\d+/i)) return { valid: false };
+
+ return { valid: true, type: parts[1], id: parseInt(parts[2]), extraData: parts.slice(3) };
+}
\ No newline at end of file
diff --git a/js/lib/localstorage.ts b/js/lib/localstorage.ts
new file mode 100644
index 00000000..ff388f41
--- /dev/null
+++ b/js/lib/localstorage.ts
@@ -0,0 +1,2 @@
+export const STOCKOVERVIEW_DATATABLE_STATE = 'dt-state-stockoverview';
+export const STOCKOVERVIEW_COLUMN_STATE = 'column-state-stockoverview';
\ No newline at end of file
diff --git a/js/locale.ts b/js/locale.ts
new file mode 100644
index 00000000..b0e0aea5
--- /dev/null
+++ b/js/locale.ts
@@ -0,0 +1,73 @@
+import { nextTick } from 'vue';
+import { createI18n, I18n } from 'vue-i18n';
+import { Store } from 'vuex';
+import { RootState } from './store/interfaces';
+
+export const ALL_LANGS = ['cs', 'da', 'de', 'el_GR', 'en', 'en_GB', 'es', 'fi', 'fr', 'he_IL', 'hu', 'it', 'ja', 'ko_KR', 'nl', 'no', 'pl', 'pt_BR', 'pt_PT', 'ru', 'sk_SK', 'sv_SE', 'ta', 'tr', 'zh_CN', 'zh_TW'];
+
+// Reason: the type just isn't really there. It's any in the repo.
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export function setupI18n(options: any = { locale: 'en' }): I18n
+{
+ // force "format fallback messages"
+ options.fallbackFormat = true;
+ options.legacy = false;
+ options.globalInjection = true;
+ options.fallbackLocale = ['en', "root"];
+ options.fallbackWarn = false;
+ options.missing = (locale :string, key :string) =>
+ {
+ // en is integrated into code.
+ if (locale == "en" || locale == "root") return;
+
+ console.warn(`i18n: (${locale}) Missing key '${key}'.`);
+ };
+
+ const i18n = createI18n(options);
+ return i18n;
+}
+
+export function setI18nLanguage(i18n: I18n, locale: string) : void
+{
+ i18n.global.locale.value = locale;
+ /**
+ * NOTE:
+ * If you need to specify the language setting for headers, such as the `fetch` API, set it here.
+ * The following is an example for axios.
+ *
+ * axios.defaults.headers.common['Accept-Language'] = locale
+ */
+ document.querySelector('html')?.setAttribute('lang', locale);
+}
+
+export async function loadLocaleMessages(i18n : I18n, locale: string, store: Store) : Promise
+{
+ // load locale messages with dynamic import
+ // this gets 1:1 translated into a network call, so....
+ const messages = await (await fetch(`/locale/${locale}.json`)).json();
+
+ if (messages.numberFormats !== undefined)
+ {
+ if (messages.numberFormats.currency !== undefined)
+ {
+ messages.numberFormats.currency.currency = store.state.Settings?.Currency;
+ messages.numberFormats.currency.maximumFractionDigits = store.state.Settings?.User?.DecimalPlacesPrices || 2;
+ messages.numberFormats.currency.manimumFractionDigits = store.state.Settings?.User?.DecimalPlacesPrices || 2;
+ }
+ if (messages.numberFormats["avoid-decimal"] !== undefined)
+ {
+ messages.numberFormats["avoid-decimal"].maximumFractionDigits = store.state.Settings?.User?.DecimalPlacesAmount || 4;
+ }
+ if (messages.numberFormats["decimal"] !== undefined)
+ {
+ messages.numberFormats["decimal"].maximumFractionDigits = store.state.Settings?.User?.DecimalPlacesAmount || 4;
+ messages.numberFormats["decimal"].minimumFractionDigits = store.state.Settings?.User?.DecimalPlacesAmount || 4;
+ }
+ }
+
+ // set locale and locale message
+ i18n.global.setLocaleMessage(locale, messages);
+ i18n.global.setNumberFormat(locale, messages.numberFormats);
+
+ return nextTick();
+}
\ No newline at end of file
diff --git a/js/main.ts b/js/main.ts
new file mode 100644
index 00000000..e1e3698f
--- /dev/null
+++ b/js/main.ts
@@ -0,0 +1,100 @@
+import { createApp } from 'vue';
+import { loadLocaleMessages, setI18nLanguage, setupI18n } from './locale';
+import router from './router';
+import { store, key } from './store';
+import { LOAD_CONFIG, LOAD_QUANTITY_UNITS } from './store/mutations';
+import App from './App.vue';
+import api from './api';
+import * as Filters from './lib/filters';
+
+// PrimeVue components
+import PrimeVue from 'primevue/config';
+import { FilterService } from 'primevue/api';
+
+import ToastService from 'primevue/toastservice';
+
+// some globally registered components
+import InputText from 'primevue/inputtext';
+import RadioButton from 'primevue/radiobutton';
+import ToggleButton from 'primevue/togglebutton';
+import InputSwitch from 'primevue/inputswitch';
+import CheckBox from 'primevue/checkbox';
+import Card from 'primevue/card';
+import Button from 'primevue/button';
+import DataTable from 'primevue/datatable';
+import Column from 'primevue/column';
+import ContextMenu from 'primevue/contextmenu';
+import InputNumber from 'primevue/inputnumber';
+import Calendar from 'primevue/calendar';
+import MultiSelect from 'primevue/multiselect';
+import Tooltip from 'primevue/tooltip';
+import Toast from 'primevue/toast';
+import ProgressSpinner from 'primevue/progressspinner';
+import Dropdown from 'primevue/dropdown';
+import Dialog from 'primevue/dialog';
+import { ENSURE_PRODUCTS_LOADED } from './store/actions';
+
+const app = createApp(App);
+const i18n = setupI18n();
+
+app.use(PrimeVue);
+app.use(ToastService);
+app.use(router);
+app.use(i18n);
+app.use(store, key);
+
+app.component('InputText', InputText);
+app.component('RadioButton', RadioButton);
+app.component('ToggleButton', ToggleButton);
+app.component('InputSwitch', InputSwitch);
+app.component('CheckBox', CheckBox);
+app.component('Card', Card);
+app.component('Button', Button);
+app.component('DataTable', DataTable);
+app.component('Column', Column);
+app.component('ContextMenu', ContextMenu);
+app.component('InputNumber', InputNumber);
+app.component('Calendar', Calendar);
+app.component('MultiSelect', MultiSelect);
+app.component('Toast', Toast);
+app.component('ProgressSpinner', ProgressSpinner);
+app.component('Dropdown', Dropdown);
+app.component('Dialog', Dialog);
+
+app.directive('tooltip', Tooltip);
+
+if (FilterService.register !== undefined)
+{
+ FilterService.register(Filters.LUXON_DATE_BEFORE, Filters.luxonDateBeforeFilter);
+ FilterService.register(Filters.LUXON_DATE_BEFORE_OR_EQUAL, Filters.luxonDateBeforeOrEqualFilter);
+ FilterService.register(Filters.LUXON_DATE_AFTER, Filters.luxonDateAfterFilter);
+ FilterService.register(Filters.LUXON_DATE_AFTER_OR_EQUAL, Filters.luxonDateAfterOrEqualFilter);
+ FilterService.register(Filters.LUXON_DATE_EQUAL, Filters.luxonDateEqualFilter);
+ FilterService.register(Filters.LUXON_DATE_NOT_EQUAL, Filters.luxonDateNotEqualFilter);
+ FilterService.register(Filters.LUXON_DATE_EQUAL_DAY, Filters.luxonDateEqualDayFilter);
+ FilterService.register(Filters.LUXON_DATE_NOT_EQUAL_DAY, Filters.luxonDateNotEqualDayFilter);
+}
+
+// load configs
+api.System.GetConfig().then((config) =>
+{
+ store.commit(LOAD_CONFIG, config);
+ store.dispatch(ENSURE_PRODUCTS_LOADED);
+ const promises = [loadLocaleMessages(i18n, "en", store)];
+ let setLanguage = "en";
+ if (store.state.Settings !== undefined && store.state.Settings.Locale != "en")
+ {
+ promises.push(loadLocaleMessages(i18n, store.state.Settings.Locale, store));
+ setLanguage = store.state.Settings.Locale;
+ }
+ promises.push(api.Stock.GetQuantityUnits().then(data =>
+ {
+ store.commit(LOAD_QUANTITY_UNITS, data);
+ }));
+
+ Promise.all(promises).then(() =>
+ {
+ setI18nLanguage(i18n, setLanguage);
+ app.mount("#app");
+ });
+});
\ No newline at end of file
diff --git a/js/pages/Recipes/Edit.vue b/js/pages/Recipes/Edit.vue
new file mode 100644
index 00000000..3c3c549e
--- /dev/null
+++ b/js/pages/Recipes/Edit.vue
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+ {{ $t('Edit recipe') }}
+
+
+
+
+ {{ $t('Name') }}
+
+
+
+ {{ $t('Servings') }}
+
+
+
+
+ {{ $t('Do not check against the shopping list when adding missing items to it') }}
+
+
+
+ {{ $t('Preperation') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Ingredients list') }}
+
+
+
+
+
+
+ {{ $t('No ingredients in this recipe.') }}
+
+
+ {{ slotProps.data.ingredient_group }}
+
+
+
+
+
+ {{ data.recipe_amount }} {{ getQuantityUnitName(data.qu_id, data.recipe_amount) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Note') }}: {{ data.note }}
+ {{ $t('No Note') }}
+
+
+
+
+
+
+
+ {{ $t('Included recipes') }}
+
+
+
+
+
+
+ {{ $t('No recipes included in this recipe.') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Picture') }}
+
+
+
+ {{ $t('Drag and drop an image to here to upload.') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/pages/Recipes/Recipes.vue b/js/pages/Recipes/Recipes.vue
new file mode 100644
index 00000000..8ca7b402
--- /dev/null
+++ b/js/pages/Recipes/Recipes.vue
@@ -0,0 +1,409 @@
+
+
+
+
+
+
+
+ {{ $t('Recipes') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{slotProps.data.name}}
+
+
+
+
+
+
{{ $t('{count} serving | {count} servings', slotProps.data.desired_servings) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{slotProps.data.name}}
+
+
+
+
+
+
+
+
+
{{ $t('{count} serving | {count} servings', slotProps.data.desired_servings) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Choose a recipe to start.') }}
+
+
{{ selectedRecipe.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Choose a recipe to start.') }}
+
+
{{ selectedRecipe.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/pages/Stock/Overview.vue b/js/pages/Stock/Overview.vue
new file mode 100644
index 00000000..bfb59238
--- /dev/null
+++ b/js/pages/Stock/Overview.vue
@@ -0,0 +1,596 @@
+
+
+
+
+
+
+ {{ $t('Stock overview' )}}
+ {{ $t('{count} Product | {count} Products', stock.length ) }}, {{ $t('{string0} total value', { string0: aggregateValue.toLocaleString(undefined, { style: 'currency', currency: currency }) }) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('{count} product expires | {count} products expiring', this.aggregateExpireSoon) }}
+ {{ $t('within the next day | within the next {count} days', this.dueSoonDays) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Loading
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Product') }}
+
+
+
+ {{ data.product_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Product group') }}
+
+
+
+ {{ data.product_group_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Amount') }}
+
+
+
+ {{ $n(data.amount, 'avoid-decimal') }} {{ data.amount > 1 ? data.qu_unit_name_plural : data.qu_unit_name }}
+
+ {{ data.amount_opened }}
+
+
+ Σ {{ $n(data.amount_aggregated, 'avoid-decimal') }} {{ data.amount_aggregated > 1 ? data.qu_unit_name_plural : data.qu_unit_name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Value') }}
+
+
+
+ {{ $n(data.value, 'currency') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Next due date') }}
+
+
+
+ {{ data.best_before_date || "" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Calories') }} ({{ $t('Per stock quantity unit') }})
+
+
+
+ {{ $n(data.product_calories, 'avoid-decimal') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Calories') }}
+
+
+
+ {{ $n(data.calories, 'avoid-decimal') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Last purchased') }}
+
+
+
+ {{ data.last_purchased }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Last price') }}
+
+
+
+ {{ data.last_price ? $n(parseFloat(data.last_price), 'currency') : "" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Min. stock amount') }}
+
+
+
+ {{ $n(data.min_stock_amount, 'avoid-decimal') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/js/router.ts b/js/router.ts
new file mode 100644
index 00000000..2e77630a
--- /dev/null
+++ b/js/router.ts
@@ -0,0 +1,30 @@
+import { createRouter, createWebHashHistory } from 'vue-router';
+import StockOverview from './pages/Stock/Overview.vue';
+import RecipesOverview from './pages/Recipes/Recipes.vue';
+import RecipesEdit from './pages/Recipes/Edit.vue';
+
+const routes = [
+ {
+ path: '/',
+ name: 'Home',
+ component: StockOverview
+ },
+ {
+ path: '/recipes/:recipeId(\\d+)*',
+ name: 'Recipes',
+ component: RecipesOverview,
+ props: true,
+ },
+ {
+ path: '/recipes/:recipeId(\\d+)/edit',
+ name: 'RecipesEdit',
+ component: RecipesEdit,
+ props: true,
+ }
+
+];
+const router = createRouter({
+ history: createWebHashHistory(),
+ routes
+});
+export default router;
\ No newline at end of file
diff --git a/js/shims-vue.d.ts b/js/shims-vue.d.ts
new file mode 100644
index 00000000..a7468037
--- /dev/null
+++ b/js/shims-vue.d.ts
@@ -0,0 +1,12 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+/* eslint-disable @typescript-eslint/ban-types */
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue';
+ const component: DefineComponent<{}, {}, any>;
+ export default component;
+}
+
+declare module 'primevue/toastservice/toastservice.esm' {
+ import { Plugin } from 'vue';
+ export const install: Plugin;
+}
\ No newline at end of file
diff --git a/js/store/actions.ts b/js/store/actions.ts
new file mode 100644
index 00000000..e70bef71
--- /dev/null
+++ b/js/store/actions.ts
@@ -0,0 +1,11 @@
+
+export const SAVE_USER_SETTING_NIGHTMODE = 'SAVE_USER_SETTING_NIGHTMODE';
+export const SAVE_USER_SETTING_AUTORELOAD = 'SAVE_USER_SETTING_AUTORELOAD';
+export const SAVE_USER_SETTING_FULLSCREENLOCK = 'SAVE_USER_SETTING_FULLSCREENLOCK';
+export const SAVE_USER_SETTING_SCREENLOCK = 'SAVE_USER_SETTING_SCREENLOCK';
+export const SAVE_USER_SETTING_HEADERCLOCK = 'SAVE_USER_SETTING_HEADERCLOCK';
+export const SAVE_USER_SETTING_AUTONIGHTMODE = 'SAVE_USER_SETTING_AUTONIGHTMODE';
+export const SAVE_USER_SETTING_AUTONIGHTMODE_RANGE = 'SAVE_USER_SETTING_AUTONIGHTMODE_RANGE';
+export const SAVE_USER_SETTING_AUTONIGHTMODE_INVERT = 'SAVE_USER_SETTING_AUTONIGHTMODE_INVERT';
+
+export const ENSURE_PRODUCTS_LOADED = 'ENSURE_PRODUCTS_LOADED';
\ No newline at end of file
diff --git a/js/store/index.ts b/js/store/index.ts
new file mode 100644
index 00000000..9277afc8
--- /dev/null
+++ b/js/store/index.ts
@@ -0,0 +1,62 @@
+import { InjectionKey } from 'vue';
+import { createStore, useStore as baseUseStore, Store } from 'vuex';
+import { Settings, User } from './modules';
+import { RootState } from './interfaces';
+import { LOAD_QUANTITY_UNITS, LOAD_PRODUCTS } from './mutations';
+import { ENSURE_PRODUCTS_LOADED } from './actions';
+import { QuantityUnit, Product } from '../types/Stock';
+import api from '../api';
+import { datetimepicker } from '../legacy/components';
+
+// define injection key
+export const key: InjectionKey> = Symbol();
+
+export const store = createStore({
+ state()
+ {
+ return {
+ QuantityUnits: Array(0),
+ Products: Array(0)
+ };
+ },
+ mutations: {
+ [LOAD_QUANTITY_UNITS](state, data: Array) : void
+ {
+ state.QuantityUnits = data;
+ },
+ [LOAD_PRODUCTS](state, data: Array) : void
+ {
+ state.Products = data;
+ }
+ },
+ actions: {
+ [ENSURE_PRODUCTS_LOADED](state)
+ {
+ // TODO: do changed handling correctly. At the moment, this sometimes
+ // unneccessarily reloads products.
+ api.Stock.GetProducts().then(data =>
+ {
+ state.commit(LOAD_PRODUCTS, data);
+ });
+ }
+ },
+ getters: {
+ getQuantityUnit: (state) => (id: number) =>
+ {
+ return state.QuantityUnits.find(x => x.id == id);
+ },
+ getProduct: (state) => (id: number) =>
+ {
+ return state.Products.find(x => x.id == id);
+ }
+ },
+ modules: {
+ Settings: Settings,
+ User: User,
+ },
+});
+
+export function useStore() : Store
+{
+ return baseUseStore(key);
+}
\ No newline at end of file
diff --git a/js/store/interfaces.ts b/js/store/interfaces.ts
new file mode 100644
index 00000000..45fc5cd0
--- /dev/null
+++ b/js/store/interfaces.ts
@@ -0,0 +1,11 @@
+import { SettingsState } from './modules/settings';
+import { UserState } from './modules/user';
+import { QuantityUnit, Product } from '../types/Stock';
+
+// define your typings for the store state
+export interface RootState {
+ Settings?: SettingsState,
+ User?: UserState,
+ QuantityUnits: Array,
+ Products: Array
+}
\ No newline at end of file
diff --git a/js/store/modules/index.ts b/js/store/modules/index.ts
new file mode 100644
index 00000000..a86ccbff
--- /dev/null
+++ b/js/store/modules/index.ts
@@ -0,0 +1,3 @@
+export * from './settings';
+export * from './usersettings';
+export * from './user';
\ No newline at end of file
diff --git a/js/store/modules/settings.ts b/js/store/modules/settings.ts
new file mode 100644
index 00000000..bf429339
--- /dev/null
+++ b/js/store/modules/settings.ts
@@ -0,0 +1,52 @@
+import { Module } from "vuex";
+import { RootState } from '../interfaces';
+import { UserSettings, UserSettingsState } from "./usersettings";
+import { LOAD_CONFIG } from "../mutations";
+
+// removed:
+// UserSettings
+// FeatureFlags
+// QuantityUnits
+// QuantityUnitConversions
+
+export interface SettingsState {
+ CalendarShowWeekNumbers: boolean;
+ CalendarFirstDayOfWeek: string;
+ MealPlanFirstDayOfWeek: string;
+ Currency: string;
+ Locale: string;
+ Version: string;
+ User?: UserSettingsState; // ???
+}
+
+const Settings: Module = {
+ state()
+ {
+ return {
+ CalendarShowWeekNumbers: true,
+ CalendarFirstDayOfWeek: "",
+ Currency: "",
+ MealPlanFirstDayOfWeek: "",
+ Locale: "",
+ Version: ""
+ };
+ },
+ mutations: {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ [LOAD_CONFIG](state, newConfig: any)
+ {
+ state.CalendarFirstDayOfWeek = newConfig.CalendarFirstDayOfWeek;
+ state.CalendarShowWeekNumbers = newConfig.CalendarShowWeekNumbers;
+ state.MealPlanFirstDayOfWeek = newConfig.MealPlanFirstDayOfWeek;
+ state.Currency = newConfig.Currency;
+ state.Locale = newConfig.Locale;
+ state.Version = newConfig.Version;
+ }
+ },
+ modules: {
+ User: UserSettings
+ }
+
+};
+
+export { Settings };
\ No newline at end of file
diff --git a/js/store/modules/user.ts b/js/store/modules/user.ts
new file mode 100644
index 00000000..aef90a9e
--- /dev/null
+++ b/js/store/modules/user.ts
@@ -0,0 +1,34 @@
+import { Module } from "vuex";
+import { RootState } from '../interfaces';
+import { LOAD_CONFIG } from "../mutations";
+
+// omitted for now:
+// Permissions
+
+export interface UserState {
+ Id: number;
+ Username: string;
+ PictureFileName: string | null;
+}
+
+const User: Module = {
+ state()
+ {
+ return {
+ Id: -1,
+ Username: "",
+ PictureFileName: null
+ };
+ },
+ mutations: {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ [LOAD_CONFIG](state, newConfig: any)
+ {
+ state.Id = newConfig.User.Id;
+ state.Username = newConfig.User.Username;
+ state.PictureFileName = newConfig.User.PictureFileName;
+ }
+ }
+};
+
+export { User };
\ No newline at end of file
diff --git a/js/store/modules/usersettings.ts b/js/store/modules/usersettings.ts
new file mode 100644
index 00000000..8a6968e7
--- /dev/null
+++ b/js/store/modules/usersettings.ts
@@ -0,0 +1,351 @@
+import { Module } from "vuex";
+import { RootState } from '../interfaces';
+import { LOAD_CONFIG, UPDATE_USER_SETTING_NIGHTMODE, UPDATE_USER_SETTING_AUTORELOAD, UPDATE_USER_SETTING_FULLSCREENLOCK, UPDATE_USER_SETTING_SCREENLOCK, UPDATE_USER_SETTING_HEADERCLOCK, UPDATE_USER_SETTING_AUTONIGHTMODE, UPDATE_USER_SETTING_AUTONIGHTMODE_RANGE, UPDATE_USER_SETTING_AUTONIGHTMODE_INVERT, UPDATE_USER_SETTING_UNSAVED_AUTONIGHTMODE_RANGE, UPDATE_USER_SETTING_PREFERRED_BARCODE_CAMERA, DELETE_USER_SETTING_PREFERRED_BARCODE_CAMERA } from "../mutations";
+import { SAVE_USER_SETTING_NIGHTMODE, SAVE_USER_SETTING_AUTORELOAD, SAVE_USER_SETTING_FULLSCREENLOCK, SAVE_USER_SETTING_SCREENLOCK, SAVE_USER_SETTING_HEADERCLOCK, SAVE_USER_SETTING_AUTONIGHTMODE, SAVE_USER_SETTING_AUTONIGHTMODE_RANGE, SAVE_USER_SETTING_AUTONIGHTMODE_INVERT} from "../actions";
+import api from '../../api';
+
+// removed:
+// datatables_* foo.
+
+export interface UserSettingsState {
+ NightMode: boolean,
+ AutoNightMode: boolean,
+ AutoNightModeRange: Array,
+ AutoNightModeInvert: boolean,
+ KeepScreenOn: boolean,
+ KeepScreenOnWhenFullscreen: boolean,
+ PresetProductLocation: number,
+ PresetProductGroup: number,
+ PresetProductQuId: number,
+ DecimalPlacesAmount: number,
+ DecimalPlacesPrices: number,
+ DueSoonDays: number,
+ DefaultPurchaseAmount: number,
+ DefaultConsumeAmount: number,
+ DefaultConsumeAmountUsesQuickConsumeAmount: boolean,
+ ScanModeConsume: boolean,
+ ScanModePurchase: boolean,
+ ShowIconWhenProductOnShoppinglist: boolean,
+ ShowPurchasedDateOnPurchase: boolean,
+ ShowWarningOnPurchaseWhenDueDateIsEarlierThanNext: boolean,
+ ShoppingListToStockWorkflowAutoSubmit: boolean,
+ ShoppingListShowCalendar: boolean,
+ RecipeIngredientsGroupByProductGroup: boolean,
+ ChoresDueSoonDays: number,
+ BatteriesDueSoonDays: number,
+ TasksDueSoonDays: number,
+ AutoReload: boolean,
+ HeaderClock: boolean,
+ QuaggaWorkers: number,
+ QuaggaHalfsample: boolean,
+ QuaggaPatchsize: string,
+ QuaggaFrequency: number,
+ QuaggaDebug: boolean,
+ AutoLightTorch: boolean,
+ PreferredBarcodeCamera: string | null,
+
+ // For throtteling
+ UnsavedAutoNightModeRange: Array
+}
+const STORAGE_PREFERRED_CAMERA = 'cameraId';
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+function ensureBool(whatever: any, fallback = false): boolean
+{
+ if (typeof whatever === "string")
+ {
+ return whatever === "1";
+ }
+ if (typeof whatever === "boolean")
+ {
+ return whatever;
+ }
+ if (typeof whatever === "number")
+ {
+ return whatever > 0;
+ }
+
+ return fallback;
+}
+
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+function ensureInt(whatever: any, fallback = 0): number
+{
+ if (typeof whatever === "string")
+ {
+ return parseInt(whatever);
+ }
+ if (typeof whatever === "number")
+ {
+ return whatever;
+ }
+
+ return fallback;
+}
+
+const UserSettings: Module = {
+ state(): UserSettingsState
+ {
+ return {
+ NightMode: false,
+ AutoNightMode: true,
+ AutoNightModeRange: [8.0, 20.0],
+ UnsavedAutoNightModeRange: [8.0, 20.0],
+ AutoNightModeInvert: true,
+ KeepScreenOn: false,
+ KeepScreenOnWhenFullscreen: true,
+ PresetProductLocation: -1,
+ PresetProductGroup: -1,
+ PresetProductQuId: -1,
+ DecimalPlacesAmount: 4,
+ DecimalPlacesPrices: 2,
+ DueSoonDays: 5,
+ DefaultPurchaseAmount: 0,
+ DefaultConsumeAmount: 1,
+ DefaultConsumeAmountUsesQuickConsumeAmount: true,
+ ScanModeConsume: false,
+ ScanModePurchase: false,
+ ShowIconWhenProductOnShoppinglist: true,
+ ShowPurchasedDateOnPurchase: false,
+ ShowWarningOnPurchaseWhenDueDateIsEarlierThanNext: true,
+ ShoppingListToStockWorkflowAutoSubmit: false,
+ ShoppingListShowCalendar: false,
+ RecipeIngredientsGroupByProductGroup: false,
+ ChoresDueSoonDays: 5,
+ BatteriesDueSoonDays: 5,
+ TasksDueSoonDays: 5,
+ AutoReload: true,
+ HeaderClock: false,
+ QuaggaWorkers: 4,
+ QuaggaHalfsample: false,
+ QuaggaPatchsize: "medium",
+ QuaggaFrequency: 10,
+ QuaggaDebug: true,
+ AutoLightTorch: false,
+ PreferredBarcodeCamera: null,
+ };
+ },
+ mutations: {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ [LOAD_CONFIG](state, newConfig: any)
+ {
+ state.NightMode = ensureBool(newConfig.User.Settings.night_mode_enabled);
+ state.AutoNightMode = ensureBool(newConfig.User.Settings.auto_night_mode_enabled);
+
+ const from: Array = newConfig.User.Settings.auto_night_mode_time_range_from.split(":");
+ const to: Array = newConfig.User.Settings.auto_night_mode_time_range_to.split(":");
+ let start: number, end: number;
+ start = parseFloat(from[0]) + parseFloat(from[1]) / 60;
+ end = parseFloat(to[0]) + parseFloat(to[1]) / 60;
+ if (end < start)
+ {
+ const tmp = start;
+ start = end;
+ end = tmp;
+ }
+
+ state.AutoNightModeRange = [start, end];
+ state.UnsavedAutoNightModeRange = [start, end];
+ state.AutoNightModeInvert = ensureBool(newConfig.User.Settings.auto_night_mode_time_range_goes_over_midnight);
+ state.KeepScreenOn = newConfig.User.Settings.keep_screen_on;
+ state.KeepScreenOnWhenFullscreen = newConfig.User.Settings.keep_screen_on_when_fullscreen_card;
+ state.PresetProductLocation = newConfig.User.Settings.product_presets_location_id;
+ state.PresetProductGroup = newConfig.User.Settings.product_presets_product_group_id;
+ state.PresetProductQuId = newConfig.User.Settings.product_presets_qu_id;
+ state.DecimalPlacesAmount = newConfig.User.Settings.stock_decimal_places_amounts;
+ state.DecimalPlacesPrices = newConfig.User.Settings.stock_decimal_places_prices;
+ state.DueSoonDays = newConfig.User.Settings.stock_due_soon_days;
+ state.DefaultPurchaseAmount = newConfig.User.Settings.stock_default_purchase_amount;
+ state.DefaultConsumeAmount = ensureInt(newConfig.User.Settings.stock_default_consume_amount);
+ state.DefaultConsumeAmountUsesQuickConsumeAmount = ensureBool(newConfig.User.Settings.stock_default_consume_amount_use_quick_consume_amount);
+ state.ScanModeConsume = ensureBool(newConfig.User.Settings.scan_mode_consume_enabled);
+ state.ScanModePurchase = ensureBool(newConfig.User.Settings.scan_mode_purchase_enabled);
+ state.ShowIconWhenProductOnShoppinglist = newConfig.User.Settings.show_icon_on_stock_overview_page_when_product_is_on_shopping_list;
+ state.ShowPurchasedDateOnPurchase = newConfig.User.Settings.show_purchased_date_on_purchase;
+ state.ShowWarningOnPurchaseWhenDueDateIsEarlierThanNext = newConfig.User.Settings.show_warning_on_purchase_when_due_date_is_earlier_than_next;
+ state.ShoppingListToStockWorkflowAutoSubmit = newConfig.User.Settings.shopping_list_to_stock_workflow_auto_submit_when_prefilled;
+ state.ShoppingListShowCalendar = newConfig.User.Settings.shopping_list_show_calendar;
+ state.RecipeIngredientsGroupByProductGroup = newConfig.User.Settings.recipe_ingredients_group_by_product_group;
+ state.ChoresDueSoonDays = newConfig.User.Settings.chores_due_soon_days;
+ state.BatteriesDueSoonDays = newConfig.User.Settings.batteries_due_soon_days;
+ state.TasksDueSoonDays = newConfig.User.Settings.tasks_due_soon_days;
+ state.AutoReload = newConfig.User.Settings.auto_reload_on_db_change;
+ state.HeaderClock = ensureBool(newConfig.User.Settings.show_clock_in_header);
+ state.QuaggaWorkers = newConfig.User.Settings.quagga2_numofworkers;
+ state.QuaggaHalfsample = newConfig.User.Settings.quagga2_halfsample;
+ state.QuaggaPatchsize = newConfig.User.Settings.quagga2_patchsize;
+ state.QuaggaFrequency = newConfig.User.Settings.quagga2_frequency;
+ state.QuaggaDebug = newConfig.User.Settings.quagga2_debug;
+
+ if (window !== undefined)
+ {
+ const storage = window.localStorage;
+ state.PreferredBarcodeCamera = storage.getItem(STORAGE_PREFERRED_CAMERA);
+ }
+ },
+ [UPDATE_USER_SETTING_PREFERRED_BARCODE_CAMERA](state, newValue: string)
+ {
+ state.PreferredBarcodeCamera = newValue;
+
+ if (window !== undefined)
+ {
+ const storage = window.localStorage;
+ storage.setItem(STORAGE_PREFERRED_CAMERA, newValue);
+ }
+ },
+ [DELETE_USER_SETTING_PREFERRED_BARCODE_CAMERA](state)
+ {
+ state.PreferredBarcodeCamera = null;
+
+ if (window !== undefined)
+ {
+ const storage = window.localStorage;
+ storage.removeItem(STORAGE_PREFERRED_CAMERA);
+ }
+ },
+ [UPDATE_USER_SETTING_NIGHTMODE](state, newValue: boolean)
+ {
+ state.NightMode = newValue;
+ },
+ [UPDATE_USER_SETTING_AUTORELOAD](state, newValue: boolean)
+ {
+ state.AutoReload = newValue;
+ },
+ [UPDATE_USER_SETTING_FULLSCREENLOCK](state, newValue: boolean)
+ {
+ state.KeepScreenOnWhenFullscreen = newValue;
+ },
+ [UPDATE_USER_SETTING_AUTONIGHTMODE_RANGE](state, newValue: Array)
+ {
+ state.AutoNightModeRange[0] = newValue[0];
+ state.AutoNightModeRange[1] = newValue[1];
+ },
+ [UPDATE_USER_SETTING_AUTONIGHTMODE_INVERT](state, newValue: boolean)
+ {
+ state.AutoNightModeInvert = newValue;
+ },
+ [UPDATE_USER_SETTING_AUTONIGHTMODE](state, newValue: boolean)
+ {
+ state.AutoNightMode = newValue;
+ },
+ [UPDATE_USER_SETTING_FULLSCREENLOCK](state, newValue: boolean)
+ {
+ state.KeepScreenOnWhenFullscreen = newValue;
+ },
+ [UPDATE_USER_SETTING_SCREENLOCK](state, newValue: boolean)
+ {
+ state.KeepScreenOn = newValue;
+ },
+ [UPDATE_USER_SETTING_HEADERCLOCK](state, newValue: boolean)
+ {
+ state.HeaderClock = newValue;
+ },
+ [UPDATE_USER_SETTING_UNSAVED_AUTONIGHTMODE_RANGE](state, newValue: Array)
+ {
+ state.UnsavedAutoNightModeRange[0] = newValue[0];
+ state.UnsavedAutoNightModeRange[1] = newValue[1];
+ }
+ },
+ actions: {
+ [SAVE_USER_SETTING_NIGHTMODE](state, newValue: boolean)
+ {
+ const oldValue = state.state.NightMode;
+ state.commit(UPDATE_USER_SETTING_NIGHTMODE, newValue);
+
+ return api.Settings.SaveUserSetting('night_mode_enabled', newValue).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_NIGHTMODE, oldValue);
+ });
+ },
+ [SAVE_USER_SETTING_AUTONIGHTMODE](state, newValue: boolean)
+ {
+ const oldValue = state.state.AutoNightMode;
+ state.commit(UPDATE_USER_SETTING_AUTONIGHTMODE, newValue);
+ return api.Settings.SaveUserSetting('auto_night_mode_enabled', newValue).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_AUTONIGHTMODE, oldValue);
+ });
+ },
+ [SAVE_USER_SETTING_AUTONIGHTMODE_RANGE](state, newValue: Array | null)
+ {
+ let target: Array;
+
+ if (newValue != null)
+ target = newValue;
+ else
+ target = state.state.UnsavedAutoNightModeRange;
+
+ const oldValue = state.state.AutoNightModeRange;
+ state.commit(UPDATE_USER_SETTING_AUTONIGHTMODE_RANGE, target);
+
+ // some processing is required for the API.
+ const fromHours = Math.floor(target[0]);
+ const fromMinutes = Math.floor((target[0] - fromHours) * 60);
+ const toHours = Math.floor(target[1]);
+ const toMinutes = Math.floor((target[1] - toHours) * 60);
+ const fromString = `${fromHours}:${fromMinutes}`;
+ const toStr = `${toHours}:${toMinutes}`;
+
+ // requires two calls. if either of them fail, restore old state.
+ const afrom = api.Settings.SaveUserSetting('auto_night_mode_time_range_from', fromString).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_AUTONIGHTMODE_RANGE, oldValue);
+ });
+ const ato = api.Settings.SaveUserSetting('auto_night_mode_time_range_to', toStr).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_AUTONIGHTMODE_RANGE, oldValue);
+ });
+
+ return Promise.all([afrom, ato]);
+ },
+ [SAVE_USER_SETTING_AUTONIGHTMODE_INVERT](state, newValue: boolean)
+ {
+ const oldValue = state.state.AutoNightModeInvert;
+ state.commit(UPDATE_USER_SETTING_AUTONIGHTMODE_INVERT, newValue);
+ return api.Settings.SaveUserSetting('auto_night_mode_time_range_goes_over_midnight', newValue).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_AUTONIGHTMODE_INVERT, oldValue);
+ });
+ },
+ [SAVE_USER_SETTING_AUTORELOAD](state, newValue: boolean)
+ {
+ const oldValue = state.state.AutoReload;
+ state.commit(UPDATE_USER_SETTING_AUTORELOAD, newValue);
+ api.Settings.SaveUserSetting('auto_reload_on_db_change', newValue).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_AUTORELOAD, oldValue);
+ });
+ },
+ [SAVE_USER_SETTING_FULLSCREENLOCK](state, newValue: boolean)
+ {
+ const oldValue = state.state.KeepScreenOnWhenFullscreen;
+ state.commit(UPDATE_USER_SETTING_FULLSCREENLOCK, newValue);
+ api.Settings.SaveUserSetting('keep_screen_on_when_fullscreen_card', newValue).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_FULLSCREENLOCK, oldValue);
+ });
+ },
+ [SAVE_USER_SETTING_SCREENLOCK](state, newValue: boolean)
+ {
+ const oldValue = state.state.AutoReload;
+ state.commit(UPDATE_USER_SETTING_SCREENLOCK, newValue);
+ api.Settings.SaveUserSetting('keep_screen_on', newValue).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_SCREENLOCK, oldValue);
+ });
+ },
+ [SAVE_USER_SETTING_HEADERCLOCK](state, newValue: boolean)
+ {
+ const oldValue = state.state.KeepScreenOn;
+ state.commit(UPDATE_USER_SETTING_HEADERCLOCK, newValue);
+ return api.Settings.SaveUserSetting('show_clock_in_header', newValue).catch(() =>
+ {
+ state.commit(UPDATE_USER_SETTING_HEADERCLOCK, oldValue);
+ });
+ },
+
+ }
+
+};
+
+export { UserSettings };
\ No newline at end of file
diff --git a/js/store/mutations.ts b/js/store/mutations.ts
new file mode 100644
index 00000000..50d98b23
--- /dev/null
+++ b/js/store/mutations.ts
@@ -0,0 +1,16 @@
+// State mutations
+
+export const LOAD_CONFIG = 'LOAD_CONFIG';
+export const LOAD_QUANTITY_UNITS = 'LOAD_QUANTITY_UNITS';
+export const LOAD_PRODUCTS = 'LOAD_PRODUCTS';
+export const UPDATE_USER_SETTING_NIGHTMODE = 'UPDATE_USER_SETTING_NIGHTMODE';
+export const UPDATE_USER_SETTING_AUTORELOAD = 'UPDATE_USER_SETTING_AUTORELOAD';
+export const UPDATE_USER_SETTING_FULLSCREENLOCK = 'UPDATE_USER_SETTING_FULLSCREENLOCK';
+export const UPDATE_USER_SETTING_SCREENLOCK = 'UPDATE_USER_SETTING_SCREENLOCK';
+export const UPDATE_USER_SETTING_HEADERCLOCK = 'UPDATE_USER_SETTING_HEADERCLOCK';
+export const UPDATE_USER_SETTING_AUTONIGHTMODE = 'UPDATE_USER_SETTING_AUTONIGHTMODE';
+export const UPDATE_USER_SETTING_AUTONIGHTMODE_RANGE = 'UPDATE_USER_SETTING_AUTONIGHTMODE_RANGE';
+export const UPDATE_USER_SETTING_AUTONIGHTMODE_INVERT = 'UPDATE_USER_SETTING_AUTONIGHTMODE_INVERT';
+export const UPDATE_USER_SETTING_UNSAVED_AUTONIGHTMODE_RANGE = 'UPDATE_USER_SETTING_UNSAVED_AUTONIGHTMODE_RANGE';
+export const UPDATE_USER_SETTING_PREFERRED_BARCODE_CAMERA = 'UPDATE_USER_SETTING_PREFERRED_BARCODE_CAMERA';
+export const DELETE_USER_SETTING_PREFERRED_BARCODE_CAMERA = 'DELETE_USER_SETTING_PREFERRED_BARCODE_CAMERA';
\ No newline at end of file
diff --git a/js/types/Frontend.ts b/js/types/Frontend.ts
new file mode 100644
index 00000000..17b98502
--- /dev/null
+++ b/js/types/Frontend.ts
@@ -0,0 +1 @@
+export const ERROR_TOAST_LIFETIME = 5000;
\ No newline at end of file
diff --git a/js/types/Menu.ts b/js/types/Menu.ts
new file mode 100644
index 00000000..2573e0b4
--- /dev/null
+++ b/js/types/Menu.ts
@@ -0,0 +1,11 @@
+export interface MenuItemClickEvent { originalEvent: Event, item: MenuItem }
+export interface MenuItem {
+ label: string,
+ icon?: string,
+ to?: string,
+ items?: Array,
+ visible?: (boolean | (() => boolean)),
+ disabled?: boolean,
+ url?: string,
+ command?: ((arg0: MenuItemClickEvent) => null),
+}
\ No newline at end of file
diff --git a/js/types/Recipe.ts b/js/types/Recipe.ts
new file mode 100644
index 00000000..f5936e91
--- /dev/null
+++ b/js/types/Recipe.ts
@@ -0,0 +1,48 @@
+import { Product } from './Stock';
+
+export interface Recipe {
+ id: number,
+ name: string,
+ description: string,
+ row_created_timestamp: string, // ouch
+ picture_file_name: string | null,
+ base_servings: number,
+ desired_servings: number,
+ servings?: number,
+ not_check_shoppinglist: boolean,
+ type: string,
+ product_id: number | null,
+ need_fulfilled: true,
+ need_fulfilled_with_shoppinglist: true,
+ missing_products_count: 0,
+ costs: number,
+ calories: number,
+ ingredients: { [key: string]: Array },
+ subRecipes: Array
+}
+
+export interface Ingredient {
+ id: number,
+ recipe_id: number,
+ recipe_pos_id: number,
+ product_id: number,
+ recipe_amount: number,
+ stock_amount: number,
+ need_fulfilled: boolean,
+ missing_amount: number,
+ amount_on_shoppinglist: number,
+ need_fulfilled_with_shoppinglist: true,
+ qu_id: number,
+ costs: number,
+ is_nested_recipe_pos: number,
+ ingredient_group: string | null,
+ product_group: string | null,
+ recipe_type: string,
+ child_recipe_id: number | null,
+ note: string | null,
+ recipe_variable_amount: any, // ?? what is this
+ only_check_single_unit_in_stock: boolean,
+ calories: number,
+ product_active: boolean,
+ product: Product,
+}
\ No newline at end of file
diff --git a/js/types/Stock.ts b/js/types/Stock.ts
new file mode 100644
index 00000000..6bd46a75
--- /dev/null
+++ b/js/types/Stock.ts
@@ -0,0 +1,66 @@
+export interface Product {
+ id: number,
+ name: string,
+ description: string | null,
+ product_group_id: number,
+ active: boolean,
+ location_id: number,
+ shopping_location_id: number | null,
+ qu_id_purchase: number,
+ qu_id_stock: number,
+ qu_factor_purchase_to_stock: number,
+ min_stock_amount: number,
+ default_best_before_days: number,
+ default_best_before_days_after_open: number,
+ default_best_before_days_after_freezing: number,
+ default_best_before_days_after_thawing: number,
+ picture_file_name: string | null,
+ enable_tare_weight_handling: boolean,
+ tare_weight: number,
+ not_check_stock_fulfillment_for_recipes: boolean,
+ parent_product_id: number | null,
+ calories: number,
+ cumulate_min_stock_amount_of_sub_products: boolean,
+ due_type: number,
+ quick_consume_amount: number,
+ hide_on_stock_overview: boolean,
+ row_created_timestamp: string, // sigh...
+ default_print_stock_label: boolean,
+ allow_label_per_unit: boolean
+ barcodes?: Array
+ // userfields.
+}
+
+export interface Barcode {
+ id: number,
+ product_id: number | null,
+ barcode: string,
+ qu_id: number | null,
+ amount: number | null,
+ shopping_location_id: number | null,
+ last_price: number | null,
+ row_created_timestamp: string,
+ note: string | null,
+ // userfields.
+}
+
+export interface QuantityUnit {
+ id: number;
+ name: string;
+ description: string | null;
+ name_plural: string | null,
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ plural_forms: any; // wat?
+ // TODO: type userfields better.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ userfields: any;
+}
+
+export interface QuantityUnitConversion {
+ id: number;
+ from_qu_id: number;
+ to_qu_id: number;
+ factor: number;
+ product_id: number;
+ row_created_timestamp: string;
+}
\ No newline at end of file
diff --git a/locale/cs.json b/locale/cs.json
new file mode 100644
index 00000000..5d28037c
--- /dev/null
+++ b/locale/cs.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Přehled zásob",
+ "{count} product expires | {count} products expiring": "{count} produkt se zkazí | {count} produkty se zkazí | {count} produktů se zkazí | {count} produktů se zkazí",
+ "within the next day | within the next {count} days": "během následujícího dne | během následujících {count} dní | během následujících {count} dní | během následujících {count} dní",
+ "{count} product is already expired | {count} products are already expired": "{count} produkt má prošlou záruku | {count} produkty jsou po záruce | {count} produktů je po záruce | {count} produktů je po záruce",
+ "{count} product is overdue | {count} products are overdue": "{count} produkt je po době spotřeby | {count} produkty jsou po době spotřeby | {count} produktů je po době spotřeby | {count} produktů je po době spotřeby",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} produkt nemá dostatečnou minimální zásobu | {count} produkty nemají dostatečnou minimální zásobu | {count} produktů nemá dostatečnou minimální zásobu | {count} produktů nemá dostatečnou minimální zásobu",
+ "Product": "Produkt",
+ "{count} Product | {count} Products": "{count} produkt | {count} produktů | {count} produktů | {count} produktů",
+ "Amount": "Množství",
+ "Logout": "Odhlásit se",
+ "Chores overview": "Přehled povinností",
+ "Batteries overview": "Přehled baterií",
+ "Purchase": "Nakoupit",
+ "Consume": "Spotřebovat",
+ "Inventory": "Inventura zásob",
+ "Shopping list": "Nákupní seznam",
+ "Chore tracking": "Sledování povinností",
+ "Battery tracking": "Sledování baterií",
+ "Locations": "Umístění",
+ "Stores": "Obchody",
+ "Quantity units": "Měrné jednotky",
+ "Chores": "Povinnosti",
+ "Batteries": "Baterie",
+ "Chore": "Povinnost",
+ "Next estimated tracking": "Předpokládaný čas provedení",
+ "Last tracked": "Naposledy provedeno",
+ "Battery": "Baterie",
+ "Last charged": "Naposledy nabito",
+ "Next planned charge cycle": "Příští plánovaná výměna baterie",
+ "Best before": "Spotřebovat do",
+ "OK": "OK",
+ "Product overview": "Přehled produktů",
+ "Stock quantity unit": "Jednotka množství zásoby",
+ "Stock amount": "Množství zásoby",
+ "Last purchased": "Naposledy nakoupeno",
+ "Last used": "Naposledy použito",
+ "Spoiled": "Zkažený",
+ "Barcode lookup is disabled": "Vyhledávání podle čárových kódu zakázáno",
+ "will be added to the list of barcodes for the selected product on submit": "bude přidáno do seznamu čárových kódů pro vybraný produkt při potvrzení",
+ "New amount": "Nové množství",
+ "Note": "Poznámka",
+ "Tracked time": "Čas vykonání",
+ "Chore overview": "Přehled povinností",
+ "Tracked count": "Zaznamenaný počet",
+ "Battery overview": "Přehled baterií",
+ "Charge cycles count": "Počet cyklů nabíjení",
+ "Create shopping list item": "Vytvořit položku nákupního seznamu",
+ "Edit shopping list item": "Upravit položku nákupního seznamu",
+ "Save": "Uložit",
+ "Add": "Přidat",
+ "Name": "Název",
+ "Location": "Umístění",
+ "Min. stock amount": "Min. množství zásoby",
+ "Description": "Popis",
+ "Create product": "Vytvořit produkt",
+ "Barcode(s)": "Čárový kód(y)",
+ "Minimum stock amount": "Minimální zásoba",
+ "Default best before days": "Výchozí datum spotřeby",
+ "Default quantity unit purchase": "Výchozí počet pro nákup",
+ "Quantity unit stock": "Měrná jednotka zásoby",
+ "Factor purchase to stock quantity unit": "Převodní koeficient (násobek) měrné jednotky nákupu produktu do měřící jednotky zásob ",
+ "Create location": "Vytvořit umístění",
+ "Create store": "Vytvořit obchod",
+ "Create quantity unit": "Vytvořit měrnou jednotku",
+ "Period type": "Typ opakování",
+ "Period days": "Dny opakování",
+ "Create chore": "Vytvořit povinnost",
+ "Used in": "Použito v",
+ "Create battery": "Vytvořit baterii",
+ "Edit battery": "Upravit baterii",
+ "Edit chore": "Upravit povinnost",
+ "Edit quantity unit": "Upravit měrnou jednotku",
+ "Edit product": "Upravit produkt",
+ "Edit location": "Upravit umístění",
+ "Edit store": "Editovat obchod",
+ "Record data": "Zaznamenat data",
+ "Manage master data": "Spravovat základní data",
+ "This will apply to added products": "Bude použito u přidaných produktů",
+ "never": "nikdy",
+ "Add products that are below defined min. stock amount": "Přidat produkty, které mají stav pod minimální zásobou",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Koupě 1 {string1} bude převedena na zásobu {string2} {string3}",
+ "Login": "Přihlásit se",
+ "Username": "Uživatelské jméno",
+ "Password": "Heslo",
+ "Invalid credentials, please try again": "Neplatné přihlašovací údaje, zkuste prosím znova",
+ "Are you sure to delete battery \"{string0}\"?": "Opravdu chcete smazat baterii \"{string0}\"?",
+ "Yes": "Ano",
+ "No": "Ne",
+ "Are you sure to delete chore \"{string0}\"?": "Opravdu chcete smazat povinnost \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "K \"{string0}\" nebyl rozpoznán žádný produkt, jak chcete pokračovat?",
+ "Create or assign product": "Vytvořit nebo přiřadit produkt",
+ "Cancel": "Zrušit",
+ "Add as new product": "Přidat jako nový produkt",
+ "Add as barcode to existing product": "Přidat jako čárový kód k existujícímu produktu",
+ "Add as new product and prefill barcode": "Přidat jako nový produkt a předvyplnit čárový kód",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Opravdu chcete smazat měrnou jednotku \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Opravdu chcete smazat produkt \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Opravdu chcete smazat umístění \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Opravdu chcete smazat obchod \"{string0}\"?",
+ "Manage API keys": "Spravovat API klíče",
+ "REST API & data model documentation": "REST API & dokumentace datových modelů",
+ "API keys": "API klíče",
+ "Create new API key": "Vytvořit nový API klíč",
+ "API key": "API klíč",
+ "Expires": "Vyprší",
+ "Created": "Vytvořen",
+ "This product is not in stock": "Produkt není skladem",
+ "This means {string0} will be added to stock": "To znamená, že {string0} bude přidáno do zásob",
+ "This means {string0} will be removed from stock": "To znamená, že {string0} bude odebráno ze zásob",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "To znamená, že příští provedení této povinnosti je naplánováno na {string0} dní po jejím posledním vykonání",
+ "Removed {string1} of {string2} from stock": "Odebráno {string1} z {string2} ze zásob",
+ "About grocy": "O grocy",
+ "Close": "Zavřít",
+ "Released on": "Vydané",
+ "Added {string1} of {string2} to stock": "Přidat {string1} z {string2} do skladu",
+ "Stock amount of {string1} is now {string2}": "Skladová zásoba {string1} je nyní {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Zaznamenáno splnění rutinního úkolu {string1} v {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Zaznamenáno nabíjení baterie {string1} v {string2}",
+ "Consume all {string0} which are currently in stock": "Spotřebovat všechny {string0}, které jsou v zásobě",
+ "All": "Vše",
+ "Search": "Hledat",
+ "Not logged in": "Nepřihlášen",
+ "You have to select a product": "Musí být vybrán produkt",
+ "You have to select a chore": "Musí být vybrána povinnost",
+ "You have to select a battery": "Musí být vybrána baterie",
+ "A name is required": "Je vyžadováno jméno",
+ "A location is required": "Je vyžadováno umístění",
+ "A quantity unit is required": "Je vyžadována měrná jednotka",
+ "A period type is required": "Je vyžadován typ opakování",
+ "A best before date is required": "Je vyžadováno datum spotřeby",
+ "Settings": "Nastavení",
+ "This can only be before now": "Toto může být pouze v minulosti",
+ "Calendar": "Kalendář",
+ "Recipes": "Recepty",
+ "Edit recipe": "Upravit recept",
+ "Ingredients list": "Seznam ingrediencí",
+ "Add recipe ingredient": "Přidat ingredienci",
+ "Edit recipe ingredient": "Upravit ingredienci",
+ "Are you sure to delete recipe \"{string0}\"?": "Opravdu chcete smazat recept \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Opravdu chcete smazat ingredienci \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Opravdu chcete vyprázdnit nákupní seznam \"{string0}\"?",
+ "Clear list": "Vymazat seznam",
+ "Requirements fulfilled": "Splnění požadavků",
+ "Put missing products on shopping list": "Vložit chybějící produkty do nákupního seznamu",
+ "Enough in stock": "Dostatečná zásoba",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Nedostatečná zásoba, chybí {count} surovina, které je ale již na nákupním seznamu | Nedostatečná zásoba, chybí {count} suroviny, které jsou ale již na nákupním seznamu | Nedostatečná zásoba, chybí {count} surovin, které jsou ale již na nákupním seznamu | Nedostatečná zásoba, chybí {count} surovin, které jsou ale již na nákupním seznamu",
+ "Expand to fullscreen": "Rozšířit na celou obrazovku",
+ "Ingredients": "Suroviny",
+ "Preparation": "Příprava",
+ "Recipe": "Recept",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Nedostatečná zásoba, z {string1} potřebných je {string2}na nákupním seznamu",
+ "Show notes": "Ukázat poznámky",
+ "Put missing amount on shopping list": "Přidat chybějící množství do nákupního seznamu",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Opravdu chcete přidat všechny chybějící suroviny z receptu \"{string0}\" do nákupního seznamu?",
+ "Added for recipe {string0}": "Přidáno pro recept \"{string0}\"",
+ "Manage users": "Spravovat uživatele",
+ "User": "Uživatel",
+ "Users": "Uživatelé",
+ "Are you sure to delete user \"{string0}\"?": "Opravdu chcete smazat uživatele \"{string0}\"?",
+ "Create user": "Vytvořit uživatele",
+ "Edit user": "Upravit uživatele",
+ "First name": "Křestní jméno",
+ "Last name": "Příjmení",
+ "A username is required": "Je vyžadováno přihlašovací jméno",
+ "Confirm password": "Potvrdit heslo",
+ "Passwords do not match": "Hesla se neshodují",
+ "Change password": "Změnit heslo",
+ "Done by": "Provedl(a)",
+ "Last done by": "Naposledy provedl(a)",
+ "Unknown": "Neznámý",
+ "Chores journal": "Deník povinností",
+ "0 means suggestions for the next charge cycle are disabled": "Pro vypnutí návrhu příští výměny baterie zadejte 0",
+ "Charge cycle interval (days)": "Interval výměny baterie (ve dnech)",
+ "Last price": "Poslední cena",
+ "Price history": "Historie cen",
+ "No price history available": "K dispozici není žádná historie cen",
+ "Price": "Cena",
+ "Unit": "Jednotka",
+ "{count} Unit | {count} Units": "{count} jednotka | {count} jednotek | {count} jednotek | {count} jednotek",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} povinnost by měla být splněna | {count} povinnosti by měly být splněny | {count} povinností by mělo být splněno | {count} povinností by měly být splněny",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} povinnost už měla být splněna | {count} povinnosti již mělo být splněno | {count} povinností již mělo být splněno | {count} povinností již mělo být splněno",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} baterie je potřeba vyměnit | {count} baterií je potřeba vyměnit | {count} baterií je potřeba vyměnit | {count} baterií je potřeba vyměnit",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} baterie již měla být vyměněna | {count} baterií již mělo být vyměněno | {count} baterií již mělo být vyměněno | {count} baterií již mělo být vyměněno",
+ "in singular form": "v jednotném čísle",
+ "Quantity unit": "Měrná jednotka",
+ "Only check if any amount is in stock": "Zkontrolovat pouze zda je v zásobě jakékoliv množství",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Odebrány všechny suroviny z receptu \"{string0}\" ze zásob",
+ "Consume all ingredients needed by this recipe": "Spotřebovat všechny suroviny použité v tomto receptu",
+ "Click to show technical details": "Klikněte pro zobrazení technických podrobností",
+ "Error while saving, probably this item already exists": "Chyba během ukládání, položka již pravděpodobně existuje",
+ "Error details": "Detaily chyby",
+ "Tasks": "Úkoly",
+ "Show done tasks": "Zobrazit dokončené úkoly",
+ "Task": "Úkol",
+ "Due": "Termín splnění",
+ "Assigned to": "Přiřazeno",
+ "Mark task \"{string0}\" as completed": "Označit úkol \"{string0}\" jako splněný",
+ "Uncategorized": "Bez kategorie",
+ "Task categories": "Kategorie úkolů",
+ "Create task": "Vytvořit úkol",
+ "A due date is required": "Termín splnění je povinný",
+ "Category": "Kategorie",
+ "Edit task": "Upravit úkol",
+ "Are you sure to delete task \"{string0}\"?": "Opravdu chcete smazat úkol \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} úkol má být splněný | {count} úkolů má být splněno | {count} úkolů má být splněno | {count} úkolů má být splněno",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} úkol již měl být splněn | {count} úkoly již měly být splněny | {count} úkolů již mělo být splněno | {count} úkolů již mělo být splněno",
+ "Edit task category": "Upravit kategorii úkolu",
+ "Create task category": "Vytvořit kategorii úkolů",
+ "Product groups": "Skupiny produktů",
+ "Ungrouped": "Bez skupiny",
+ "Create product group": "Vytvořit skupinu produktů",
+ "Edit product group": "Upravit skupinu produktů",
+ "Product group": "Skupina produktů",
+ "Are you sure to delete product group \"{string0}\"?": "Opravdu chcete smazat skupinu produktů \"{string0}\"?",
+ "Stay logged in permanently": "Zůstat přihlášen",
+ "When not set, you will get logged out at latest after 30 days": "Pokud nebude zaškrtnuto, budete odhlášeni nejpozději za 30 dní",
+ "Status": "Stav",
+ "Below min. stock amount": "Pod min. množstvím zásoby",
+ "Expiring soon": "Brzy vyprší datum spotřeby",
+ "Already expired": "Prošlé zboží",
+ "Due soon": "Blízký termín splnění",
+ "Overdue": "Již mělo být splněno",
+ "View settings": "Zobrazit nastavení",
+ "Auto reload on external changes": "Automaticky obnovit při změně dat jiným uživatelem",
+ "Enable night mode": "Zapnout tmavý režim",
+ "Auto enable in time range": "Automaticky zapnout ve stanovený čas",
+ "From": "Od",
+ "in format": "ve formátu",
+ "To": "Do",
+ "Time range goes over midnight": "Časový rozsah přesahuje přes půlnoc",
+ "Product picture": "Obrázek produktu",
+ "No file selected": "Není vybraný soubor",
+ "Delete": "Smazat",
+ "Select file": "Vybrat soubor",
+ "Image of product {string0}": "Obrázek produktu \"{string0}\"",
+ "Deletion not possible": "Smazání není možné",
+ "Equipment": "Vybavení",
+ "Instruction manual": "Návod k použití",
+ "The selected equipment has no instruction manual": "Zvolené vybavení nemá návod k použití",
+ "Notes": "Poznámky",
+ "Edit equipment": "Upravit vybavení",
+ "Create equipment": "Vytvořit vybavení",
+ "The current file will be deleted on save": "Aktuální soubor bude smazán při uložení",
+ "No picture available": "Obrázek není k dispozici",
+ "Presets for new products": "Výchozí hodnoty pro nové produkty",
+ "Included recipes": "Dílčí recepty",
+ "A recipe is required": "Je vyžadován recept",
+ "Add included recipe": "Přidat dílčí recept",
+ "Edit included recipe": "Upravit dílčí recept",
+ "Group": "Skupina",
+ "This will be used as a headline to group ingredients together": "Toto bude použito jako nadpis pro skupinu surovin",
+ "Journal": "Deník",
+ "Stock journal": "Deník zásob",
+ "Undone on": "Vrácení zpět zapnuto",
+ "Batteries journal": "Deník baterií",
+ "Undo charge cycle": "Vrátit zpět výměnu baterie",
+ "Undo chore execution": "Zrušit provedení povinnosti",
+ "Chore execution successfully undone": "Provedení povinnosti odstraněno",
+ "Undo": "Zrušit",
+ "Booking successfully undone": "Rezervace úspěšně zrušena",
+ "Charge cycle successfully undone": "Výměna baterie zrušena",
+ "Disable stock fulfillment checking for this ingredient": "Vypnout kontrolu stavu zásob pro tuto ingredienci",
+ "Add all list items to stock": "Přidat všechny položky seznamu do zásob",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Přidána položka nákupního seznamu {string1} z {string2}",
+ "Use a specific stock item": "Použít požadovanou položku zásob",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Označit {string1} z {string2} jako otevřené",
+ "Marked {string1} of {string2} as opened": "Označeny {string1} z {string2} jako otevřené",
+ "Mark as opened": "Označit jako otevřené",
+ "Not opened": "Neotevřené",
+ "Opened": "Otevřené",
+ "{string0} opened": "{string0} otevřen",
+ "Product due": "",
+ "Task due": "Úkol do",
+ "Chore due": "Povinnost do",
+ "Battery charge cycle due": "Nabíjecí cyklus baterií do",
+ "Show clock in header": "Zobrazit hodiny v záhlaví",
+ "Stock settings": "Nastavení zásob",
+ "Shopping list to stock workflow": "Nákupní seznam do výběru zásob",
+ "Skip": "Přeskočit",
+ "Servings": "Porce",
+ "Costs": "Náklady",
+ "Based on the prices of the last purchase per product": "Založeno na cenách produktů při jejich posledním nákupu",
+ "The ingredients listed here result in this amount of servings": "Zobrazené suroviny odpovídají tomuto počtu porcí",
+ "Do not check against the shopping list when adding missing items to it": "Nekontrolovat nákupní seznam při přidávání chybějících věcí",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "",
+ "Picture": "Obrázek",
+ "Uncheck ingredients to not put them on the shopping list": "Odznač suroviny pro nevložení do nákupního seznamu",
+ "This is for statistical purposes only": "Určeno pouze pro statistické účely",
+ "You have to select a recipe": "Musí být vybrán recept",
+ "Key type": "Typ klíče",
+ "Share/Integrate calendar (iCal)": "Sdílet kalendář (formát iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Použijte tuto (veřejnou) URL adresu ke sdílení kalendáře jako iCal kalendář",
+ "Allow partial units in stock": "Povolit neúplné jednotky v zásobě",
+ "Enable tare weight handling": "Aktivovat používání táry",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Hodí se například pro produkty ve speciálních nádobách, jako je mouka, které se zváží včetně nádoby, jejíž váha je automaticky odečtena dle níže definované táry",
+ "Tare weight": "Tára",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Je aktivní tára, prosím zvažte včetně nádoby, její váha bude automaticky odečtena",
+ "You have to select a location": "Musí být vybráno umístění",
+ "You have to select a store": "Musíte vybrat obchod",
+ "List": "Seznam",
+ "Gallery": "Galerie",
+ "The current picture will be deleted on save": "Aktuální obrázek bude smazán při uložení",
+ "Journal for this battery": "Deník k této baterii",
+ "System info": "Systémové informace",
+ "Changelog": "Seznam změn",
+ "will be multiplied by a factor of {string1} to get {string2}": "bude vynásobena faktorem {string1} pro získání {string2}",
+ "The given date is earlier than today, are you sure?": "Zadaná datum je v minulosti, jste si jistí?",
+ "Product count": "Množství produktu",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Toto bude použito jako výchozí nastavení v případě přidání tohoto produktu jakožto suroviny do receptu.",
+ "Add item": "Přidat položku",
+ "Selected shopping list": "Vybrat nákupní seznam",
+ "New shopping list": "Nový nákupní seznam",
+ "Delete shopping list": "Smazat nákupní seznam",
+ "Chores settings": "Nastavení povinností",
+ "Batteries settings": "Nastavení baterií",
+ "Tasks settings": "Nastavení úkolů",
+ "Create shopping list": "Vytvořit nákupní seznam",
+ "Are you sure to delete shopping list \"{string0}\"?": "Opravdu chcete smazat nákupní seznam \"{string0}\"?",
+ "Average shelf life": "Průměrná doba uskladnění",
+ "Spoil rate": "Kazivost",
+ "Show more": "Zobrazit více",
+ "Show less": "Zobrazit méně",
+ "The amount must be between {string1} and {string2}": "Množství musí být mezi {string1} a {string2}",
+ "Day of month": "Den v měsíci",
+ "Monday": "Pondělí",
+ "Tuesday": "Úterý",
+ "Wednesday": "Středa",
+ "Thursday": "Čtvrtek",
+ "Friday": "Pátek",
+ "Saturday": "Sobota",
+ "Sunday": "Neděle",
+ "Configure userfields": "Nastavit uživatelská pole",
+ "Userfields": "Uživatelská pole",
+ "Entity": "Entita",
+ "Caption": "Nadpis",
+ "Type": "Typ",
+ "Create userfield": "Vytvoř uživatelské pole",
+ "A entity is required": "Entita je vyžadována",
+ "A caption is required": "Popisek je vyžadován",
+ "A type is required": "Typ je vyžadován",
+ "Show as column in tables": "Zobrazit jako řádek v tabulkách",
+ "This is required and can only contain letters and numbers": "Toto je povinné pole a může obsahovat pouze písmena a číslice",
+ "Edit userfield": "Editovat uživatelská pole",
+ "Plural forms": "Množné čislo",
+ "One plural form per line, the current language requires": "Jedno množné číslo na řádku, tento jazyk požaduje",
+ "Plural count": "Počet možností množných čísel: ",
+ "Plural rule": "Pravidlo množného čísla",
+ "in plural form": "v množném čísle",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Nedostatečná zásoba, chybí {count} surovina | Nedostatečná zásoba, chybí {count} suroviny | Nedostatečná zásoba, chybí {count} surovin | Nedostatečná zásoba, chybí {count} surovin",
+ "Not enough in stock, but already on the shopping list": "Nedostatečná zásoba, ale již na nákupním seznamu",
+ "Not enough in stock": "Nedostatečná zásoba",
+ "Expiring soon days": "Trvanlivost brzy skončí",
+ "Default location": "Výchozí umístění",
+ "Default amount for purchase": "Výchozí množství k nákupu",
+ "Default amount for consume": "Výchozí množství ke spotřebě",
+ "Variable amount": "Proměnný počet",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "",
+ "Track date only": "Zaznamenávat pouze datum",
+ "When enabled only the day of an execution is tracked, not the time": "Když je zapnuté, bude se zaznamenávat pouze datum vykonání bez časového razítka",
+ "Consume {string1} of {string2}": "Spotřebovat {string1} z {string2}",
+ "Meal plan": "Jídelníček",
+ "Add recipe on {string0}": "Přidat recept do {string0}",
+ "{count} serving | {count} servings": "{count} porce | {count} porcí | {count} porcí | {count} porcí",
+ "Week costs": "Týdenní útrata",
+ "Configuration": "Nastavení",
+ "A predefined list of values, one per line": "Předdefinovaný seznam hodnot, jedna na řádek",
+ "Products": "Produkty",
+ "Marked task {string0} as completed on {string0}": "Úkol {string0} označen jako hotový v {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "",
+ "per serving": "na porci",
+ "Never": "Nikdy",
+ "Today": "Dnes",
+ "Consume {string1} of {string2} as spoiled": "Spotřebovat {string1} z {string2} jako zkažené",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Nejsou všechny suroviny z receptu \"{string0}\" v zásobě, nic nebude odebráno",
+ "Undo task": "Vrátit úkol",
+ "Due date rollover": "Posunutí termínu",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Když je povoleno, splnění povinnosti nikdy nebude zpožděno, ale datum splnění se posune každý den",
+ "Location Content Sheet": "Tabulka umístění zásob ",
+ "Print": "Vytisknout",
+ "all locations": "všechna umístění",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "toto umístění",
+ "Consumed amount": "Spotřebované množství",
+ "Time of printing": "Čas tisku",
+ "Are you sure to delete equipment \"{string0}\"?": "Opravdu chcete smazat vybavení \"{string0}\"?",
+ "Parent product": "Nadřazený produkt",
+ "Not possible because this product is already used as a parent product in another product": "Není možné, protože tento produkt je již použitý jako nadřazený produkt u jiného produktu",
+ "Default conversions": "Výchozí převody",
+ "Factor": "Faktor",
+ "1 {string0} is the same as...": "1 {string0} je stejný jako…",
+ "Create QU conversion": "Vytvořit převod měrné jednotky",
+ "Default for QU": "Výchozí pro Měrné Jednotky",
+ "Quantity unit from": "Měrná jednotka z",
+ "Quantity unit to": "Měrná jednotka do",
+ "This cannot be equal to {string0}": "Hodnota se nemůže rovnat {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "To znamená, že 1 {string1} odpovídá {string2} {string3}",
+ "QU conversions": "Převod měrných jednotek",
+ "Product overrides": "Speciální nastavení pro produkt",
+ "Override for product": "Použít speciální nastavení pro produkt",
+ "This equals {string1} {string2}": "To odpovídá {string1} {string2} ",
+ "Edit QU conversion": "Upravit převod měrné jednotky",
+ "An assignment type is required": "Typ přiřazení je vyžadován",
+ "Assignment type": "Typ přiřazení",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "To znamená, že další splnění povinnosti je naplánováno každý 1 den po posledním splnění",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "To znamená, že další splnění povinnosti je naplánováno 1 den po posledním splnění, ale pouze všední dny vybrané níže",
+ "This means the next execution of this chore is not scheduled": "To znamená, že další splnění povinnosti není naplánováno",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "To znamená, že další splnění povinnosti je naplánováno na níže zadaný den každého měsíce",
+ "This means the next execution of this chore will not be assigned to anyone": "To znamená, že další splnění povinnosti nebude nikomu zadáno",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "To znamená, že další splnění povinnosti bude zadáno tomu, kdo splnil tuto povinnost jako poslední",
+ "This means the next execution of this chore will be assigned randomly": "To znamená, že další splnění povinnosti bude zadáno náhodně.",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "To znamená, že další splnění povinnosti bude zadáno dalšímu uživateli, řazeno dle abecedy",
+ "Assign to": "Přiřadit k",
+ "This assignment type requires that at least one is assigned": "Typ přiřazení vyžaduje nejméně jednoho přiřazeného",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count}povinost je zadána mi | {count} povinností je zadáno mi | {count}povinností je zadáno mi | {count} povinnosti jsou zadány mi",
+ "Assigned to me": "Přiřazeno mě",
+ "assigned to {string0}": "přiřazeno k {string0}",
+ "Assignment": "Přidělení",
+ "Consume product on chore execution": "Spotřebovat produkt při provedení povinnosti",
+ "Are you sure to delete user field \"{string0}\"?": "Opravdu si přejete smazat uživatelské pole \"{string0}\"?",
+ "Userentities": "Uživatelské záznamy",
+ "Create userentity": "Vytvořit uživatelský záznam",
+ "Show in sidebar menu": "Zobrazit v postranní nabídce",
+ "Edit userentity": "Upravit uživatelské záznamy",
+ "Edit {string0}": "Upravit {string0}",
+ "Create {string0}": "Vytvořit {string0}",
+ "Are you sure to delete this userobject?": "Opravdu si přejete smazat objekt definovaný uživatelem?",
+ "Icon CSS class": "CSS třída ikony",
+ "For example": "Například",
+ "Configure fields": "Nastavit pole",
+ "Quantity unit plural form testing": "Testování tvarů množných čísel měrných jednotek",
+ "Result": "Výsledek",
+ "Test plural forms": "Otestovat množná čísla",
+ "Scan a barcode": "Naskenovat čárový kód",
+ "Error while initializing the barcode scanning library": "Chyba při inicializaci knihovny pro skenování čárových kódů",
+ "The resulting price of this ingredient will be multiplied by this factor": "Konečná cena této suroviny bude vynásobena tímto faktorem",
+ "Price factor": "Cenový faktor",
+ "Do you find grocy useful?": "Líbí se vám grocy?",
+ "Say thanks": "Poděkujte za aplikaci",
+ "Search for recipes containing this product": "Vyhledat recepty obsahující tento produkt",
+ "Add to shopping list": "Přidat do nákupního seznamu",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Přidáno {string1} z {string2} do nákupního košíku \"{string3}\"",
+ "Output": "Výstup",
+ "Energy (kcal)": "Energie (kcal)",
+ "Per stock quantity unit": "Na jednotku množství zásob",
+ "Barcode scanner testing": "Testování skeneru čárových kódů",
+ "Expected barcode": "Očekávaný čárový kód",
+ "Scan field": "Skenovací pole",
+ "Scanned barcodes": "Naskenované čárové kódy",
+ "Hit": "Správně",
+ "Miss": "Špatně",
+ "Display recipe": "Zobrazit recept",
+ "Accumulate sub products min. stock amount": "Sčítat minimální počet skladových zásob podřízených produktů",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Pokud je povoleno, minimální množství zásob podřízených produktů bude akumulováno do tohoto produktu. To znamená že podřízené produkty nikdy nebudou chybět, ale pouze tento produkt.",
+ "Are you sure to remove this conversion?": "Opravdu chcete odstranit tento převod?",
+ "Unit price": "Cena za jednotku",
+ "Total price": "Celková cena",
+ "in {string0} and based on the purchase quantity unit": "v {string0} a založené na měrných jednotkách nákupu",
+ "Unlimited": "Neomezeně",
+ "Clear": "Vymazat",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Opravdu chcete odstranit dílčí recept \"{string0}\"?",
+ "Period interval": "Interval opakování",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "To znamená, že další splnění povinnosti by mělo plánováno pouze každých {string0} dní",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "To znamená, že další splnění povinnosti by mělo být plánováno každých {string0} týdnů",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "To znamená, že další splnění povinnosti by mělo být plánováno pouze každý {string0} měsíc",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "To znamená, že další splnění povinnosti je naplánováno 1 rok po posledním splnění",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "To znamená, že další splnění povinnosti by mělo být plánováno pouze každých {string0} let",
+ "Transfer": "Přesun",
+ "From location": "Z umístění",
+ "To location": "Do umístění",
+ "There are no units available at this location": "Nejsou žádné dostupné kusy v této lokaci",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "Množství: {string1}; Spotřebovat do:{string2}; Koupeno: {string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Přesunuto {string1} z {string2} z umístění {string3} do {string4}",
+ "Stock entries": "Seznam zásob",
+ "Best before date": "Spotřebovat do",
+ "Purchased date": "Datum nákupu",
+ "Consume all {string0} for this stock entry": "Spotřebovat všechny {string0} pro tuto zásobu",
+ "The amount cannot be lower than {string1}": "Množství nemůže být menší než {string1}",
+ "Stock entry successfully updated": "Položka zásob úspěšně aktualizována",
+ "Edit stock entry": "Upravit zásobu",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Přístup ke kameře je možný pouze když je podporována a povolena prohlížečem a když server Grocy komunikuje přes zabezpečené připojení (https://)",
+ "Keep screen on": "Nechat obrazovku rozsvícenou",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Nevypínat obrazovku když se zobrazuje \"karta celé obrazovky\"",
+ "A purchased date is required": "Datum nákupu je povinné",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Produkuje produkt",
+ "This booking cannot be undone": "Tato rezervace nemůže být zrušena",
+ "Booking does not exist or was already undone": "Rezervace již neexistuje, nebo byla zrušena",
+ "Are you sure to delete API key \"{string0}\"?": "Opravdu chcete smazat API klíč \"{string0}\"?",
+ "Add note": "Přidat poznámku",
+ "Add note on {string0}": "Přidat poznámku k {string0}",
+ "per day": "za den",
+ "Only undone items": "Jenom nedokončené položky",
+ "Add product": "Přidat produkt",
+ "Add product on {string0}": "Přidat produkt do {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Zkonzumovat všechny suroviny potřebné pro recepty nebo produkty tohoto týdne",
+ "Meal plan recipe": "Recept jídelníčku",
+ "Meal plan note": "Poznámka jídelníčku",
+ "Meal plan product": "Produkt jídelníčku",
+ "Scan mode": "Mód skenování",
+ "on": "zapnuto",
+ "off": "vypnuto",
+ "Scan mode is on but not all required fields could be populated automatically": "Skenovací mód je zapnutý, ale ne všechna vyžadovaná pole mohou být vyplněna automaticky",
+ "Is freezer": "Je zmraženo",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Při přesunutí produktu z/do umístění mrazničky, bude nastavené datum doby spotřeby automaticky upraveno na základě nastavení produktu",
+ "This cannot be the same as the \"From\" location": "Nemůže být stejná jako umístění \"Z\"",
+ "Thawed": "Rozmraženo",
+ "Frozen": "Zmraženo",
+ "Are you sure to delete userentity \"{string0}\"?": "Opravdu chcete smazat uživatelský záznam \"{string0}\"?",
+ "Shopping list settings": "Nastavení nákupního seznamu",
+ "Show a month-view calendar": "Zobrazit měsíční kalendář",
+ "Edit note on {string0}": "Editovat poznámku k {string0}",
+ "Edit product on {string0}": "Editace produktu k datu {string0}",
+ "Edit recipe on {string0}": "Editace receptu k datu {string0}",
+ "Desired servings": "Počet porcí",
+ "Base: {string0}": "Základ: {string0}",
+ "Recipes settings": "Nastavení receptu",
+ "Recipe card": "Karta receptu",
+ "Group ingredients by their product group": "Seskupit suroviny podle skupiny produktů",
+ "Unknown store": "Neznámý obchod",
+ "Store": "Obchod",
+ "Transaction successfully undone": "Transakce úspěšně vrácena zpět",
+ "Default store": "Výchozí obchod",
+ "Consume this stock entry": "Spotřebovat tuto zásobu",
+ "Mark this stock entry as open": "Označit tuto zásobu jako otevřenou",
+ "Mark this item as done": "Označit tuto položku jako hotovou",
+ "Edit this item": "Editovat tuto položku",
+ "Delete this item": "Smazat tuto položku",
+ "Show an icon if the product is already on the shopping list": "Zobrazit ikonku, pokud je produkt již na nákupním seznamu",
+ "Calories": "Kalorie",
+ "means {string1} per {string2}": "znamená {string1} za {string2}",
+ "Create inverse QU conversion": "Vytvořit obrácenou MJ konverzi",
+ "Create recipe": "Vytvořit recept",
+ "Save & continue to add ingredients and included recipes": "Uložit a pokračovat pro přidání ingrediencí a zařazení do receptů",
+ "Save & continue": "Ulož a pokračuj",
+ "Save & return to recipes": "Uložit a vrátit se do receptů",
+ "Stock value": "Hodnota zásob",
+ "Average price": "Průměrná cena",
+ "Active": "Aktivní",
+ "Barcodes": "Čárové kódy",
+ "Barcode": "Čárový kód",
+ "Create Barcode": "Vyvořit čárový kód",
+ "Barcode for product": "Čárový kód pro produkt",
+ "Edit Barcode": "Upravit čárový kód",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Nedostatečná zásoba (nezahrnuto v nákupech), {string0} ingrediencí chybí",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Nedostatečná zásoba (nezahrnuto v nákupech), {string1} chybí, {string2} již v nákupním seznamu",
+ "Quantity unit stock cannot be changed after first purchase": "Měrná jednotka zásob nemůže být změněna po prvním nákupu",
+ "Clear filter": "Smazat filtr",
+ "Permissions for user {string0}": "Práva pro uživatele {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "Opravdu chcete odstranit všechna svoje oprávnění?",
+ "Permissions saved": "Práva uložena",
+ "You are not allowed to view this page": "Nemáte oprávnění zobrazit tuto stránku",
+ "Page not found": "Stránka nenalezena",
+ "Unauthorized": "Bez oprávnění",
+ "Error source": "Chybný zdroj",
+ "Error message": "Chybová zpráva",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "Tato stránka neexistuje",
+ "You will be redirected to the default page in {string0} seconds": "Budete přesměrováni na výchozí stránku za {string0} sekund",
+ "Server error": "Chyba serveru",
+ "A server error occured while processing your request": "Na serveru se vyskytla chyba při vyřizování vašeho požadavku",
+ "If you think this is a bug, please report it": "Pokud myslíte že je to chyba, prosím nahlašte to",
+ "Language": "Jazyk",
+ "User settings": "Uživatelské nastavení",
+ "Default": "Výchozí",
+ "Stock journal summary": "Shrnutí deníku zásob",
+ "Journal summary": "Shrnutí deníku",
+ "Journal summary for this product": "Přehled deníků pro tento produkt",
+ "Consume exact amount": "Spotřebovat přesné množství",
+ "Value": "Hodnota",
+ "{string0} total value": "{string0} celková hodnota",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "Zobrazit datum nákupu na stránce nákupu a inventarizace (jinak bude vychozi den nákupu dneska)",
+ "Common": "Obvyklý",
+ "Decimal places allowed for amounts": "Desetinná čísla povolena pro množství",
+ "Decimal places allowed for prices": "Desetinná čísla povolena pro ceny",
+ "Stock entries for this product": "Položky zásob pro tento produkt",
+ "Edit shopping list": "Upravit nákupní seznam",
+ "Save & continue to add quantity unit conversions & barcodes": "Uložit a pokračovat do přidání měrných jednotek a čárových kódů",
+ "Save & return to products": "Uložit a pokračovat v editaci",
+ "Save & continue to add conversions": "Uložit a pokračovat do přidání konverzí",
+ "Save & return to quantity units": "Uložit a vrátit se do měrných jednotek",
+ "price": "cena",
+ "New stock amount": "Nový počet zásob",
+ "Price per stock unit": "Cena za jednotku zásob",
+ "Table options": "Nastavení tabulky",
+ "This product is currently on a shopping list": "Tento produkt je již v nákupním seznamu",
+ "Undo transaction": "Vrátit transakci",
+ "Transaction type": "Typ transakce",
+ "Transaction time": "Čas transakce",
+ "Chore journal": "Deník povinností",
+ "Track chore execution": "Zaznamenávat vykonávání povinností",
+ "Mark task as completed": "Označit úkol jako hotový",
+ "Track charge cycle": "Zaznamenávat nabíjecí cyklus",
+ "Battery journal": "Deník baterií",
+ "This product has a picture": "Tento produkt má obrázek",
+ "Consume this stock entry as spoiled": "Označit tuto zásobu jako zkaženou",
+ "Configure user permissions": "Nastavit uživatelská oprávnění",
+ "Show a QR-Code for this API key": "Zobrazit QR kód pro tento API klíč",
+ "This is the default quantity unit used when adding this product to the shopping list": "Toto je výchozí množství produktu při jeho přidání do nákupního seznamu",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "Množství \"rychle spotřebovat\"",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "Tento počet je použit pro \"tlačítko rychle spotřebovat/otevřít\" na stránce přehledu zásob (vztaženo k početní jednotce zásoby)",
+ "Copy": "Kopírovat",
+ "Are you sure to remove this barcode?": "Opravdu chcete smazat tento čárový kód?",
+ "Due date type": "Výchozí typ expirace/spotřeby",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "To znamená, že produkt možná lze konzumovat i po vypršení doby spotřeby",
+ "Expiration date": "Datum expirace",
+ "Means that the product is not safe to be consumed after its due date is reached": "To znamená, že produkt není bezpečno konzumovat po vypršení doby spotřeby",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "-1 znamená že produkt má neomezenou trvanlivost",
+ "Default due days": "Výchozí počet dní spotřeby",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "Výchozí počet dní spotřeby po otevření",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "Výchozí počet dní spotřeby po zamražení",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "Při přesunutí produktu z mrazničky (produkt rozmražen), bude nastavené datum doby spotřeby dnes + tento počet dní",
+ "Default due days after thawing": "Výchozí počet dní spotřeby po rozmrznutí",
+ "Next due date": "Další datum spotřeby",
+ "{count} product is due | {count} products are due": "{count}produkt po době spotřeby | {count} produtky po době spotřeby | {count} produktů po době spotřeby | {count} produktů po době spotřeby",
+ "Due date": "Datum spotřeby",
+ "Never overdue": "Žádné datum spotřeby",
+ "{count} product is expired | {count} products are expired": "{count} produkt expiroval | {count} produkty expirovaly | {count} produktů expirovalo | {count} produktů expirovalo",
+ "Expired": "Expirováno",
+ "Due soon days": "",
+ "Add overdue/expired products": "Přidat trvanlivost/expiraci produktu",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "Stáhnout soubor",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "Vyřazeno",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "Zobrazit vyřazené",
+ "Never show on stock overview": "Nikdy nezobrazovat přehled zásob",
+ "None": "Žádný",
+ "Group by": "Seskupit podle",
+ "Ingredient group": "Skupina ingrediencí",
+ "Reset": "Resetovat",
+ "Are you sure to reset the table options?": "Opravdu chcete resetovat nastavení tabulky?",
+ "Hide/view columns": "Zobrazit/skrýt sloupce",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "Poslední cena (jednotka)",
+ "Last price (Total)": "Poslední cena (celkem)",
+ "Show header": "Zobrazit hlavičku",
+ "Group by product group": "Seskupit pomocí skupiny produktů",
+ "Table": "Tabulka",
+ "Layout type": "",
+ "Merge this product with another one": "Sloučit tento produkt s jiným",
+ "Merge products": "Sloučit produkty",
+ "Product to keep": "Zachovat produkt",
+ "Product to remove": "Produkt k odstranění",
+ "Error while merging products": "Chyba při slučování produktů",
+ "After merging, this product will be kept": "Po sloučení bude tento produkt zachován",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "Sloučit",
+ "Title": "Nadpis",
+ "Link": "Odkaz",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "Stránka přehledu zásob zobrazuje všechny produkty, které jsou na skladě nebo pod jejich minimální zadanou zásobou - povolením skryjete produkt",
+ "Print options": "Nastavení tisku",
+ "A product or a note is required": "Je vyžadován produkt nebo poznámka",
+ "no-assignment": "bez-přiřazení",
+ "who-least-did-first": "poslední-je-první",
+ "random": "náhodně",
+ "in-alphabetical-order": "řazení-podle-abecedy",
+ "timeago_locale": "cs",
+ "timeago_nan": "před NaN lety",
+ "moment_locale": "cs",
+ "datatables_localization": "{\"sEmptyTable\":\"Tabulka neobsahuje žádná data\",\"sInfo\":\"Zobrazuji _START_ až _END_ z celkem _TOTAL_ záznamů\",\"sInfoEmpty\":\"Zobrazuji 0 až 0 z 0 záznamů\",\"sInfoFiltered\":\"(filtrováno z celkem _MAX_ záznamů)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\" \",\"sLengthMenu\":\"Zobraz záznamů _MENU_\",\"sLoadingRecords\":\"Načítám...\",\"sProcessing\":\"Provádím...\",\"sSearch\":\"Hledat:\",\"sZeroRecords\":\"Žádné záznamy nebyly nalezeny\",\"oPaginate\":{\"sFirst\":\"První\",\"sLast\":\"Poslední\",\"sNext\":\"Další\",\"sPrevious\":\"Předchozí\"},\"oAria\":{\"sSortAscending\":\": aktivujte pro řazení sloupce vzestupně\",\"sSortDescending\":\": aktivujte pro řazení sloupce sestupně\"}}",
+ "summernote_locale": "cs-CZ",
+ "fullcalendar_locale": "cs",
+ "bootstrap-select_locale": "cs_CZ",
+ "purchase": "Nákup",
+ "transfer_from": "Převod z",
+ "transfer_to": "Převod do",
+ "consume": "Spotřeba",
+ "inventory-correction": "Úprava zásoby",
+ "product-opened": "Otevření balení",
+ "stock-edit-old": "zasoba-editace-stary",
+ "stock-edit-new": "zasoba-editace-novy",
+ "self-production": "vlastni-produkce",
+ "manually": "Manuální",
+ "dynamic-regular": "Dynamický",
+ "daily": "Denní",
+ "weekly": "Týdně",
+ "monthly": "Měsíčně",
+ "yearly": "Ročně",
+ "text-single-line": "Text (jeden řádek)",
+ "text-multi-line": "Text (více řádků)",
+ "number-integral": "Celé číslo",
+ "number-decimal": "Číslo s desetinami",
+ "date": "Datum",
+ "datetime": "Datum a čas",
+ "checkbox": "Zaškrtávací políčko",
+ "preset-list": "Seznam",
+ "preset-checklist": "Zaškrtávací seznam",
+ "link": "Odkaz",
+ "link-with-title": "",
+ "file": "soubor",
+ "image": "obrazek",
+ "ADMIN": "ADMINISTRATOR",
+ "USERS_CREATE": "UZIVATELE_VYTVORIT",
+ "USERS_EDIT": "UZIVATELE_EDITACE",
+ "USERS_READ": "UZIVATEL_CTENI",
+ "USERS_EDIT_SELF": "UZIVATELE_EDITOVAT_SEBE",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "BATERIE_VRACENI_NABIJECI_CYKLUS",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "",
+ "CHORE_TRACK_EXECUTION": "",
+ "CHORE_UNDO_EXECUTION": "POVINNOST_VYKONANI_VRACENI",
+ "MASTER_DATA_EDIT": "ZAKLADNI_DATA_EDIT",
+ "TASKS_UNDO_EXECUTION": "UKOL_VYKONANI_VRACENI",
+ "TASKS_MARK_COMPLETED": "UKOLY_OZNACIT_HOTOVO",
+ "STOCK_EDIT": "ZASOBY_EDITACE",
+ "STOCK_TRANSFER": "PREVOD_ZASOB",
+ "STOCK_INVENTORY": "ZASOBA_INVENTAR",
+ "STOCK_CONSUME": "ZASOBY_SPOTREBOVAT",
+ "STOCK_OPEN": "ZASOBY_OTEVRIT",
+ "STOCK_PURCHASE": "ZASOBA_NAKUP",
+ "SHOPPINGLIST_ITEMS_ADD": "NAKUPNISEZNAM_POLOZKA_PRIDANO",
+ "SHOPPINGLIST_ITEMS_DELETE": "NAKUPNISEZNAM_POLOZKA_SMAZANO",
+ "USERS": "UZIVATEL",
+ "STOCK": "ZASOBA",
+ "SHOPPINGLIST": "NAKUPNISEZNAM",
+ "CHORES": "POVINOSTI",
+ "BATTERIES": "BATERIE",
+ "TASKS": "UKOL",
+ "RECIPES": "RECEPTY",
+ "EQUIPMENT": "VYBAVENI",
+ "CALENDAR": "KALENDAR",
+ "RECIPES_MEALPLAN": "RECEPTY_STRAVOVACIPLANY",
+ "cs": "Čeština",
+ "da": "Dánština",
+ "de": "Němčina",
+ "el_GR": "Řečtina",
+ "en": "Angličtina",
+ "en_GB": "Angličtina (Britská)",
+ "es": "Španělština",
+ "fr": "Francouzština",
+ "hu": "Maďarština",
+ "it": "Italština",
+ "ja": "Japonština",
+ "ko_KR": "Korejština",
+ "nl": "Nizozemština",
+ "no": "Norština",
+ "pl": "Polština",
+ "pt_BR": "Portugalština (Brazílie)",
+ "pt_PT": "Portugalština (Portugalsko)",
+ "ru": "Ruština",
+ "sk_SK": "Slovenština",
+ "sv_SE": "Švédština",
+ "tr": "Turečtina",
+ "zh_TW": "Čínština (Tradiční)",
+ "zh_CN": "",
+ "he_IL": "",
+ "ta": "",
+ "fi": "",
+ "Cookies": "Sušenky",
+ "Chocolate": "Čokoláda",
+ "Pantry": "Spíž",
+ "Candy cupboard": "Skříňka s cukrovím",
+ "Tinned food cupboard": "Skříňka s konzervami",
+ "Fridge": "Lednička",
+ "Piece | Pieces": "Kus | Kusů | Kusů | Kusů",
+ "Pack | Packs": "Balení | Balení | Balení | Balení",
+ "Glass | Glasses": "Sklenice | Sklenic | Sklenic | Sklenic",
+ "Tin | Tins": "Plechovka | Plechovek | Plechovek | Plechovek",
+ "Can | Cans": "Konzerva | Konzerv | Konzerv | Konzerv",
+ "Bunch | Bunches": "Svazek | Svazky | Svazků | Svazků",
+ "Gummy bears": "Gumoví medvídci",
+ "Crisps": "Brambůrky",
+ "Eggs": "Vajíčka",
+ "Noodles": "Nudle",
+ "Pickles": "Kyselé okurky",
+ "Gulash soup": "Gulášová polévka",
+ "Yogurt": "Jogurt",
+ "Cheese": "Sýr",
+ "Cold cuts": "Uzeniny",
+ "Paprika": "Paprika",
+ "Cucumber": "Okurka",
+ "Radish": "Ředkev",
+ "Tomato": "Rajče",
+ "Changed towels in the bathroom": "Vyměněny ručníky v koupeně",
+ "Cleaned the kitchen floor": "Vytřena podlaha v kuchyni",
+ "Warranty ends": "Záruka končí",
+ "TV remote control": "Dálkový ovladač k TV",
+ "Alarm clock": "Budík",
+ "Heat remote control": "Dálkové ovládání k topení",
+ "Lawn mowed in the garden": "Posekán trávník na zahradě",
+ "Some good snacks": "Nějaké dobroty",
+ "Pizza dough": "Těsto na pizzu",
+ "Sieved tomatoes": "Drcená rajčata",
+ "Salami": "Salám",
+ "Toast": "Toust",
+ "Minced meat": "Mleté maso",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Boloňské špagety",
+ "Sandwiches": "Sendviče",
+ "English": "Angličtina",
+ "German": "Němčina",
+ "Italian": "Italština",
+ "This is the note content of the recipe ingredient": "Toto je poznámka u suroviny receptu",
+ "Demo User": "Demo uživatel",
+ "Gram | Grams": "Gram | Gramů | Gramů | Gramů",
+ "Flour": "Mouka",
+ "Pancakes": "Palačinky",
+ "Sugar": "Cukr",
+ "Home": "Domov",
+ "Life": "Život",
+ "Projects": "Projekty",
+ "Repair the garage door": "Opravit garážová vrata",
+ "Fork and improve grocy": "Forknout a vylepšit grocy",
+ "Find a solution for what to do when I forget the door keys": "Najít řešení situace, když si zapomenu klíče od domova",
+ "Sweets": "Sladkosti",
+ "Bakery products": "Pečivo",
+ "Tinned food": "Konzervované potraviny",
+ "Butchery products": "Maso a uzeniny",
+ "Vegetables/Fruits": "Ovoce a zelenina",
+ "Refrigerated products": "Chlazené potraviny",
+ "Coffee machine": "Kávovar",
+ "Dishwasher": "Myčka nádobí",
+ "Liter": "Litr",
+ "Liters": "Litry",
+ "Bottle": "Láhev",
+ "Bottles": "Láhve",
+ "Milk": "Mléko",
+ "Chocolate sauce": "Čokoládová poleva",
+ "Milliliters": "Mililitry",
+ "Milliliter": "Mililitr",
+ "Bottom": "Dno",
+ "Topping": "Poleva",
+ "French": "Francouzština",
+ "Turkish": "Turečtina",
+ "Spanish": "Španělština",
+ "Russian": "Ruština",
+ "The thing which happens on the 5th of every month": "Událost opakující se 5. den každý měsíc",
+ "The thing which happens daily": "Událost opakující se každý den",
+ "The thing which happens on Mondays and Wednesdays": "Událost opakující se každé pondělí a středu",
+ "Swedish": "Švédština",
+ "Polish": "Polština",
+ "Milk Chocolate": "Mléčná čokoláda",
+ "Dark Chocolate": "Hořká čokoláda",
+ "Slice | Slices": "Plátek | Plátky | Plátky | Plátky",
+ "Example userentity": "Příklad uživatelské entity",
+ "This is an example user entity...": "Toto je ukázková položka uživatelské entity",
+ "Custom field": "Vlastní pole",
+ "Example field value...": "Příklad hodnoty pole...",
+ "Waffle rolls": "Oplatky",
+ "Danish": "Dánština",
+ "Dutch": "Holandština",
+ "Norwegian": "Norština",
+ "Demo": "Demo",
+ "Stable version": "Stabilní verze",
+ "Preview version": "Preview verze",
+ "current release": "aktuální vydání",
+ "not yet released": "zatím nevydáno",
+ "Portuguese (Brazil)": "Portugalština (Brazílie)",
+ "This is a note": "Toto je poznámka",
+ "Freezer": "Mrazák",
+ "Hungarian": "Maďarština",
+ "Slovak": "Slovenština",
+ "Czech": "Čeština",
+ "Portuguese (Portugal)": "Portugalština (Portugalsko)",
+ "DemoSupermarket1": "UkazkovyObchod1",
+ "DemoSupermarket2": "UkazkovyObchod2",
+ "Japanese": "Japonština",
+ "Chinese (Taiwan)": "Čínština (Tchaj-wan)",
+ "Greek": "Řečtina",
+ "Korean": "Korejština",
+ "Chinese (China)": "Čínština (Čína)",
+ "Hebrew (Israel)": "Hebrejsky (Izraeil)",
+ "Tamil": "",
+ "Finnish": "Finsky",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/da.json b/locale/da.json
new file mode 100644
index 00000000..c033fe90
--- /dev/null
+++ b/locale/da.json
@@ -0,0 +1,869 @@
+{
+ "Stock overview": "Lageroversigt",
+ "{count} product expires | {count} products expiring": "{count} produkt udløber | {count} varer udløber",
+ "within the next day | within the next {count} days": "indenfor den næstkommende dag | indenfor de næste {count} dage",
+ "{count} product is already expired | {count} products are already expired": "{count} vare er allerede udløbet | {count} varer er allerede udløbet",
+ "{count} product is overdue | {count} products are overdue": "{count} vare er allerede udløbet | {count} varer er allerede udløbet",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} vare er under den definerede minimumsbeholdning | {count} varer er under den definerede minimumsbeholdning",
+ "Product": "Vare",
+ "{count} Product | {count} Products": "{count} Vare | {count} Varer",
+ "Amount": "Mængde",
+ "Logout": "Log ud",
+ "Chores overview": "Pligtoversigt",
+ "Batteries overview": "Batterioversigt",
+ "Purchase": "Køb",
+ "Consume": "Forbrug",
+ "Inventory": "Statusoptælling",
+ "Shopping list": "Indkøbsliste",
+ "Chore tracking": "Registering af pligter",
+ "Battery tracking": "Batteriregistrering",
+ "Locations": "Steder",
+ "Stores": "Forretninger",
+ "Quantity units": "Mængdeenheder",
+ "Chores": "Pligter",
+ "Batteries": "Batterier",
+ "Chore": "Pligt",
+ "Next estimated tracking": "Næste forventede registrering",
+ "Last tracked": "Sidst registreret",
+ "Battery": "Batteri",
+ "Last charged": "Sidst opladt",
+ "Next planned charge cycle": "Næste planlagte opladning",
+ "Best before": "Bedst før",
+ "OK": "OK",
+ "Product overview": "Vareoversigt",
+ "Stock quantity unit": "Lagermængdeenhed",
+ "Stock amount": "Lagerbeholdning",
+ "Last purchased": "Sidst købt",
+ "Last used": "Sidst brugt",
+ "Spoiled": "Udløbet",
+ "Barcode lookup is disabled": "Stregkodeopslag er deaktiveret",
+ "will be added to the list of barcodes for the selected product on submit": "bliver tilføjet til stregkodelisten for den valgte vare når du gemmer",
+ "New amount": "Ny mængde",
+ "Note": "Note",
+ "Tracked time": "Tid registreret",
+ "Chore overview": "Pligtoversigt",
+ "Tracked count": "Antal registrerede",
+ "Battery overview": "Batterioversigt",
+ "Charge cycles count": "Antal opladninger",
+ "Create shopping list item": "Opret punkt på indkøbslisten",
+ "Edit shopping list item": "Rediger punkt på indkøbslisten",
+ "Save": "Gem",
+ "Add": "Tilføj",
+ "Name": "Navn",
+ "Location": "Placering",
+ "Min. stock amount": "Min. beholdning",
+ "Description": "Beskrivelse",
+ "Create product": "Opret vare",
+ "Barcode(s)": "Stegkode(r)",
+ "Minimum stock amount": "Minimumsbeholdning",
+ "Default best before days": "Standard bedst før dage",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "Beholdningstype",
+ "Factor purchase to stock quantity unit": "Konverteringfaktor ved køb til beholdningstypen",
+ "Create location": "Opret placering",
+ "Create store": "Opret butik",
+ "Create quantity unit": "Opret mængdeenhed",
+ "Period type": "Periode type",
+ "Period days": "Periode dage",
+ "Create chore": "Opret pligt",
+ "Used in": "Brugt i",
+ "Create battery": "Opret batteri",
+ "Edit battery": "Rediger batteri",
+ "Edit chore": "Rediger pligt",
+ "Edit quantity unit": "Rediger mængdeenhed",
+ "Edit product": "Rediger vare",
+ "Edit location": "Rediger placering",
+ "Edit store": "Rediger butik",
+ "Record data": "Optag data",
+ "Manage master data": "Administrer stamdata",
+ "This will apply to added products": "Dette vil gælde for tilføjede varer",
+ "never": "aldrig",
+ "Add products that are below defined min. stock amount": "Tilføj varer der er under minimumsbeholdningen",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Dette betyder 1 {string1} købt bliver konverteret til {string2} {string3} på lageret",
+ "Login": "Log ind",
+ "Username": "Brugernavn",
+ "Password": "Adgangskode",
+ "Invalid credentials, please try again": "Ugyldig brugernavn og/eller adgangskode, prøv igen",
+ "Are you sure to delete battery \"{string0}\"?": "Er du sikker på du vil slette batteriet \"{string0}\"?",
+ "Yes": "Ja",
+ "No": "Nej",
+ "Are you sure to delete chore \"{string0}\"?": "Er du sikker på du vil slette pligten \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" kunne ikke findes som vare. Hvordan vil du fortsætte?",
+ "Create or assign product": "Opret eller tilknyt vare",
+ "Cancel": "Annuller",
+ "Add as new product": "Tilføj som ny vare",
+ "Add as barcode to existing product": "Tilføj som stregkode til en eksisterende vare",
+ "Add as new product and prefill barcode": "Tilføj som ny vare og udfyld stregkoden på forhånd",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Er du sikker på du vil slette mængdeenheden \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Er du sikker på du vil slette varen \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Er du sikker på du vil slette placeringen \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Er du sikker på du vil slette butikken \"{string0}\"?",
+ "Manage API keys": "Administrer API nøgler",
+ "REST API & data model documentation": "REST API & datamodel-dokumentation",
+ "API keys": "API nøgler",
+ "Create new API key": "Opret ny API nøgle",
+ "API key": "API nøgle",
+ "Expires": "Udløber",
+ "Created": "Oprettet",
+ "This product is not in stock": "Denne vare er ikke på lager",
+ "This means {string0} will be added to stock": "Dette betyder {string0} bliver tilføjet til beholdningen",
+ "This means {string0} will be removed from stock": "Dette betyder at {string0} bliver fjernet fra beholdningen",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Det betyder at næste udførelse af denne pligt er planlagt {string0}dage efter sidste udførelse.",
+ "Removed {string1} of {string2} from stock": "Fjerede {string1} af {string2} fra beholdningen",
+ "About grocy": "Om grocy",
+ "Close": "Luk",
+ "Released on": "Udgivet den",
+ "Added {string1} of {string2} to stock": "Tilføjet {string1} af {string2} til beholdningen",
+ "Stock amount of {string1} is now {string2}": "Beholdning af {string1} er nu {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Registreret udførelse af pligt {string1} på {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Registreret ladecyklus af batteri {string1} på {string2}",
+ "Consume all {string0} which are currently in stock": "Forbrug alle {string0} i beholdningen",
+ "All": "Alle",
+ "Search": "Søg",
+ "Not logged in": "Ikke logget ind",
+ "You have to select a product": "Du skal vælge en vare",
+ "You have to select a chore": "Du skal vælge en pligt",
+ "You have to select a battery": "Du skal vælge et batteri",
+ "A name is required": "Et navn er påkrævet",
+ "A location is required": "En placering er påkrævet",
+ "A quantity unit is required": "Enhed for mængden er påkrævet",
+ "A period type is required": "Periodetype er påkrævet",
+ "A best before date is required": "Bedst før dato er påkrævet",
+ "Settings": "Indstillinger",
+ "This can only be before now": "Dette skal være før nu",
+ "Calendar": "Kalender",
+ "Recipes": "Opskrifter",
+ "Edit recipe": "Rediger opskrift",
+ "Ingredients list": "Ingrediensliste",
+ "Add recipe ingredient": "Tilføj ingrediens til opskrift",
+ "Edit recipe ingredient": "Rediger ingrediens til opskrift",
+ "Are you sure to delete recipe \"{string0}\"?": "Er du sikker på du vil slette opskriften \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Er du sikker på du vil slette ingrediensen \"{string0}\" fra opskriften?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Er du sikker på at du vil tømme indkøbslisten \"{string0}\"?",
+ "Clear list": "Ryd indkøbslisten",
+ "Requirements fulfilled": "Skal udfyldes",
+ "Put missing products on shopping list": "Sæt manglende varer på en indkøbsliste",
+ "Enough in stock": "Der er nok i beholdningen",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Ikke nok i beholdningen, {count} ingrediens mangler men er allerede på indkøbslisten | Ikke nok i beholdningen, {count} ingredienser mangler men er allerede på indkøbslisten",
+ "Expand to fullscreen": "Udvid til fuldskærm",
+ "Ingredients": "Ingredienser",
+ "Preparation": "Tilberedning",
+ "Recipe": "Opskrift",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Ikke nok i beholdningen, {string1} mangler, {string2} allerede på indkøbslisten",
+ "Show notes": "Vis noter",
+ "Put missing amount on shopping list": "Put manglende mængde på indkøbsliste",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Er du sikker på du vil sætte alle manglende ingredienser til \"{string0}\" på indkøbslisten?",
+ "Added for recipe {string0}": "Tilføjet til opskriften {string0}",
+ "Manage users": "Administrer brugere",
+ "User": "Bruger",
+ "Users": "Brugere",
+ "Are you sure to delete user \"{string0}\"?": "Er du sikker på du vil slette brugeren \"{string0}\"?",
+ "Create user": "Opret bruger",
+ "Edit user": "Rediger bruger",
+ "First name": "Fornavn",
+ "Last name": "Efternavn",
+ "A username is required": "Brugernavnet er påkrævet",
+ "Confirm password": "Gentag adgangskoden",
+ "Passwords do not match": "Adgangskoderne matcher ikke",
+ "Change password": "Skift adgangskode",
+ "Done by": "Udført af",
+ "Last done by": "Sidst udført af",
+ "Unknown": "Ukendt",
+ "Chores journal": "Pligt-logbog",
+ "0 means suggestions for the next charge cycle are disabled": "0 betyder forslag til næste ladecyklus er deaktiveret",
+ "Charge cycle interval (days)": "Ladecyklus interval (dage)",
+ "Last price": "Sidste pris",
+ "Price history": "Prishistorik",
+ "No price history available": "Ingen prishistorik tilgængelig",
+ "Price": "Pris",
+ "Unit": "Enhed",
+ "{count} Unit | {count} Units": "{count} Enhed | {count} Enheder ",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} pligt forfalder nu | {count} pligter forfalder nu",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} pligt er forfalden | {count} pligter er forfaldne",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} batteri skal oplades nu | {count} batterier skal oplades",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} batteri skulle have været opladet | {count} batterier skulle have være opladet",
+ "in singular form": "i ental",
+ "Quantity unit": "Mængdeenhed",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Fjernede alle ingredienser til opskrift \"{string0}\" fra beholdningen",
+ "Consume all ingredients needed by this recipe": "Forbrug alle nødvendige ingredienser til denne opskrift",
+ "Click to show technical details": "Klik for at vise tekniske detaljer",
+ "Error while saving, probably this item already exists": "Fejl ved lagring, måske eksisterer varen allerede",
+ "Error details": "Detaljer for fejl",
+ "Tasks": "Opgaver",
+ "Show done tasks": "Vis udførte opgaver",
+ "Task": "Opgave",
+ "Due": "Forfald",
+ "Assigned to": "Tildelt",
+ "Mark task \"{string0}\" as completed": "Marker opgaven \"{string0}\" som udført",
+ "Uncategorized": "Ikke kategoriseret",
+ "Task categories": "Opgavekategorier",
+ "Create task": "Opret opgave",
+ "A due date is required": "En forfaldsdato er påkrævet",
+ "Category": "Kategori",
+ "Edit task": "Rediger opgave",
+ "Are you sure to delete task \"{string0}\"?": "Er du sikker på at du vil slette opgaven \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} opgaven forfalder nu | {count} opgaver forfalder nu",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} opgaver er forfaldne | {count} opgaver er forfaldne",
+ "Edit task category": "Rediger opgavekategori",
+ "Create task category": "Opret opgavekategori",
+ "Product groups": "Varegrupper",
+ "Ungrouped": "Ikke grupperet",
+ "Create product group": "Opret varegruppe",
+ "Edit product group": "Rediger varegruppe",
+ "Product group": "Varegruppe",
+ "Are you sure to delete product group \"{string0}\"?": "Er du sikker på at du vil slette varegruppen \"{string0}\"?",
+ "Stay logged in permanently": "Forbliv logget ind",
+ "When not set, you will get logged out at latest after 30 days": "Hvis ikke markeret, vil du blive logget ud senest efter 30 dage",
+ "Status": "Status",
+ "Below min. stock amount": "Under min. beholdningsantal",
+ "Expiring soon": "Udløber snart",
+ "Already expired": "Allerede udløbet",
+ "Due soon": "Forfalder snart",
+ "Overdue": "Forfalden",
+ "View settings": "Vis indstillinger",
+ "Auto reload on external changes": "Auto genindlæs ved eksterne ændringer",
+ "Enable night mode": "Aktiver nat-tilstand",
+ "Auto enable in time range": "Auto aktivering i tidsintervallet",
+ "From": "Fra",
+ "in format": "i format",
+ "To": "Til",
+ "Time range goes over midnight": "Tidsintervallet går over midnat",
+ "Product picture": "Produktbillede",
+ "No file selected": "Ingen fil valgt",
+ "Delete": "Slet",
+ "Select file": "Vælg fil",
+ "Image of product {string0}": "Billede af varen {string0}",
+ "Deletion not possible": "",
+ "Equipment": "Udstyr",
+ "Instruction manual": "Instruktionsmanual",
+ "The selected equipment has no instruction manual": "Det valgte udstyr har ingen instruktionsmanual",
+ "Notes": "Noter",
+ "Edit equipment": "Rediger udstyr",
+ "Create equipment": "Opret udstyr",
+ "The current file will be deleted on save": "",
+ "No picture available": "Intet billede tilgængeligt",
+ "Presets for new products": "Forudindstillinger for nye varer",
+ "Included recipes": "Inkluderede opskrifter",
+ "A recipe is required": "En opskrift er påkrævet",
+ "Add included recipe": "Opret inkluderet opskrift",
+ "Edit included recipe": "Rediger inkluderet opskrift",
+ "Group": "Gruppe",
+ "This will be used as a headline to group ingredients together": "Dette vil blive brugt som overskrift til at gruppere ingredienser",
+ "Journal": "Logbog",
+ "Stock journal": "Lager-logbog",
+ "Undone on": "Fortrudt den",
+ "Batteries journal": "Batteri-logbog",
+ "Undo charge cycle": "Fortryd ladecyklus",
+ "Undo chore execution": "Fortryd udførsel af pligt",
+ "Chore execution successfully undone": "Pligtudførsel blev fortrudt",
+ "Undo": "Fortryd",
+ "Booking successfully undone": "Logning blev fortrudt",
+ "Charge cycle successfully undone": "Ladecyklus blev fortrudt",
+ "Disable stock fulfillment checking for this ingredient": "Deaktiver opfyldningstjek i beholdningen for denne ingrediens",
+ "Add all list items to stock": "Tilføj alle viste varer til lagerbeholdningen",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Tilføjer indkøbsliste-punkt {string1} af {string2}",
+ "Use a specific stock item": "Brug en bestemt lagervare",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Marker {string1} {string2} som åben",
+ "Marked {string1} of {string2} as opened": "Markerede {string1} {string2} som åbnet",
+ "Mark as opened": "Marker som åbnet",
+ "Not opened": "Ikke åbnet",
+ "Opened": "Åbnet",
+ "{string0} opened": "{string0} åbnet",
+ "Product due": "",
+ "Task due": "Opgave forfalder",
+ "Chore due": "Pligt forfalder",
+ "Battery charge cycle due": "Batteri ladecyklus forfalder",
+ "Show clock in header": "Vis ur i headeren",
+ "Stock settings": "Beholdningsindstillinger",
+ "Shopping list to stock workflow": "Indkøbsliste til lagerworkflow",
+ "Skip": "Skip",
+ "Servings": "Portioner",
+ "Costs": "Omkostninger",
+ "Based on the prices of the last purchase per product": "Baseret på prisen af sidste køb per produkt",
+ "The ingredients listed here result in this amount of servings": "Ingredienslisten vist her resulterer i følgende antal portioner",
+ "Do not check against the shopping list when adding missing items to it": "Tjek ikke op imod indkøbslisten når der tilføjes manglende produkter til den",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Som standard er antallet der bliver tilføjet indkøbslisten \"nødvendigt antal - lagerbeholdning - indkøbslisteantal\" - når dette er aktiveret bliver det kun tjekket op imod lagerbeholdningen, ikke op imod hvad der allerede er på indkøbslisten",
+ "Picture": "Billede",
+ "Uncheck ingredients to not put them on the shopping list": "Fjern markeringen fra ingredienser der ikke skal på indkøbslisten",
+ "This is for statistical purposes only": "Dette er kun til brug for statistiske udregninger",
+ "You have to select a recipe": "Du skal vælge en opskrift",
+ "Key type": "Nøgletype",
+ "Share/Integrate calendar (iCal)": "Del/Integrer kalender (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Brug følgende (offentlige) URL til at dele eller integrere kalenderen i iCal-format",
+ "Allow partial units in stock": "Tillad kun delvise enheder i beholdningen",
+ "Enable tare weight handling": "Aktiver emballagevægthåndtering",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Dette er brugbart for f.eks. mel i glas - ved køb/forbrug/statusoptælling kan du altid veje hele glasset. Mængden der bliver vist, bliver automatisk udregnet ud fra hvad der er på lager og hvad emballagens vægt, der er defineret nedenfor, er",
+ "Tare weight": "Emballagevægt",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Emballagevægthåndtering aktiveret - venligst vej hele beholderen/emballagen, mængden der bliver vist vil automatisk blive udregnet",
+ "You have to select a location": "Du skal vælge en placering",
+ "You have to select a store": "Du skal vælge en butik",
+ "List": "Liste",
+ "Gallery": "Galleri",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Logbog for dette batteri",
+ "System info": "Systeminformation",
+ "Changelog": "Ændringslog",
+ "will be multiplied by a factor of {string1} to get {string2}": "vil blive ganget med en faktor af {string1} for at få {string2}",
+ "The given date is earlier than today, are you sure?": "Den angivne dato er før i dag, er du sikker?",
+ "Product count": "Antal varer",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Dette vil blive brugt som standardindstillinger når dette produkt tilføjes som ingredient til en opskrift",
+ "Add item": "Tilføj produkt",
+ "Selected shopping list": "Valgte indkøbsliste",
+ "New shopping list": "Ny indkøbsliste",
+ "Delete shopping list": "Slet indkøbsliste",
+ "Chores settings": "Pligt-indstillinger",
+ "Batteries settings": "Batteri-indstillinger",
+ "Tasks settings": "Opgave-indstillinger",
+ "Create shopping list": "Opret indkøbsliste",
+ "Are you sure to delete shopping list \"{string0}\"?": "Er du sikker på at du vil slette indkøbslisten \"{string0}\"?",
+ "Average shelf life": "Gennemsnitlig holdbarhed",
+ "Spoil rate": "Fordærvelseshastighed",
+ "Show more": "Vis mere",
+ "Show less": "Vis mindre",
+ "The amount must be between {string1} and {string2}": "Antallet skal være imellem {string1} og {string2}",
+ "Day of month": "Dag i måneden",
+ "Monday": "Mandag",
+ "Tuesday": "Tirsdag",
+ "Wednesday": "Onsdag",
+ "Thursday": "Torsdag",
+ "Friday": "Fredag",
+ "Saturday": "Lørdag",
+ "Sunday": "Søndag",
+ "Configure userfields": "Konfigurer brugerfelter",
+ "Userfields": "Brugerfelter",
+ "Entity": "Enhed",
+ "Caption": "Billedetekst",
+ "Type": "Type",
+ "Create userfield": "Opret brugerfelt",
+ "A entity is required": "Der kræves en enhed",
+ "A caption is required": "En billedetekst er påkrævet",
+ "A type is required": "En type er påkrævet",
+ "Show as column in tables": "Vist som kolonne i tabeller",
+ "This is required and can only contain letters and numbers": "Dette er påkrævet og kan kun indeholde bogstaver og numre",
+ "Edit userfield": "Rediger brugerfelt",
+ "Plural forms": "Flertalsformer",
+ "One plural form per line, the current language requires": "En flertalsform per linje, det nuværende sprog er påkrævet",
+ "Plural count": "Flertalsantal",
+ "Plural rule": "Flertalsregel",
+ "in plural form": "i flertal",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Ikke nok i beholdningen, {count} ingrediens mangler | Ikke nok i beholdningen, {count} ingredienser mangler",
+ "Not enough in stock, but already on the shopping list": "Ikke nok på lager, men allerede på indkøbslisten",
+ "Not enough in stock": "Ikke nok på lager",
+ "Expiring soon days": "Udløber snart - antal dage",
+ "Default location": "Standardplacering",
+ "Default amount for purchase": "Standardantal for køb",
+ "Default amount for consume": "Standardantal for forbrug",
+ "Variable amount": "Variabelt antal",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Når denne ikke er tom, vil den blive vist istedet for antallet skrevet ovenfor, dog vil antallet dér stadig blive brugt til opfyldningstjek af beholdning",
+ "Track date only": "Registrer kun dato",
+ "When enabled only the day of an execution is tracked, not the time": "Når aktiveret vil kun dagen for udførsel blive registreret, ikke tidspunktet",
+ "Consume {string1} of {string2}": "Forbrug {string1} af {string2}",
+ "Meal plan": "Måltidsplan",
+ "Add recipe on {string0}": "Tilføj opskrift på {string0}",
+ "{count} serving | {count} servings": "{count} portion | {count} portioner",
+ "Week costs": "Ugentlige omkostninger",
+ "Configuration": "Konfiguration",
+ "A predefined list of values, one per line": "En prædefineret liste af værdier, en per linje",
+ "Products": "Varer",
+ "Marked task {string0} as completed on {string0}": "Markeret opgave {string0} som udført på {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Logningen har senere afhængige logninger. Fortryd er ikke muligt",
+ "per serving": "per portion",
+ "Never": "Aldrig",
+ "Today": "Idag",
+ "Consume {string1} of {string2} as spoiled": "Forbrug {string1} af {string2} som har overskredet holdbarhedsdatoen",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Ikke alle ingredienser til opskrift \"{string0}\" er i beholdningen, intet fjernet",
+ "Undo task": "",
+ "Due date rollover": "Forfaldsdato for omlægning",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Når aktiveret kan pligten aldrig være efter forfaldsdatoen, forfaldsdatoen rykkes frem hver dag pligten forfalder og ikke udføres",
+ "Location Content Sheet": "Placeringsindholdsark",
+ "Print": "Udskriv",
+ "all locations": "Alle placeringer",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "denne placering",
+ "Consumed amount": "Forbrugt mængde",
+ "Time of printing": "Tidspunkt for udskrift",
+ "Are you sure to delete equipment \"{string0}\"?": "Er du sikker på du vil slette udstyret \"{string0}\"?",
+ "Parent product": "Overordnet vare",
+ "Not possible because this product is already used as a parent product in another product": "Ikke muligt fordi denne vare allerede er brugt som overordnet vare for en anden vare",
+ "Default conversions": "Standardkonverteringer",
+ "Factor": "Faktor",
+ "1 {string0} is the same as...": "{string0} er det samme som...",
+ "Create QU conversion": "Opret mængdeenhedskonvertering",
+ "Default for QU": "Standard for mængdeenhed",
+ "Quantity unit from": "Mængdeenhed fra",
+ "Quantity unit to": "Mængdeenhed til",
+ "This cannot be equal to {string0}": "Dette kan ikke være lig med {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Dette betyder at 1 {string1} er det samme som {string2} {string3}",
+ "QU conversions": "Mængdeenhedskonverteringer",
+ "Product overrides": "Vareoverstyringer",
+ "Override for product": "Overstyring for vare",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Rediger mængdeenhedskonvertering",
+ "An assignment type is required": "En opgavetype er påkrævet",
+ "Assignment type": "Opgavetype",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Det betyder at den næste udførelse af denne pligt er planlagt 1 dag efter sidste udførelse",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Det betyder at den næste udførelse af denne pligt er planlagt 1 dag efter sidste udførelse, men kun på de dage der er valgt herunder",
+ "This means the next execution of this chore is not scheduled": "Det betyder at næste udførelse af denne pligt ikke er planlagt",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Det betyder at næste udførelse af denne pligt er planlagt på den nedenfor valgte dag i hver måned",
+ "This means the next execution of this chore will not be assigned to anyone": "Det betyder at den næste udførelse af denne pligt ikke vil blive tildelt til nogen",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Det betyder at næste udførelse af denne pligt vil blive tildelt til den som har udført den mindst",
+ "This means the next execution of this chore will be assigned randomly": "Det betyder at den næste udførelse af denne pligt vil blive tildelt tilfældigt",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Det betyder at den næste udførelse af denne pligt vil blive tildelt til den næste i alfabetisk rækkefølge",
+ "Assign to": "Tildel til",
+ "This assignment type requires that at least one is assigned": "Denne opgavetype kræver, at der tildeles mindst en",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count}pligt er tildelt til mig | {count}pligter er tildelt til mig",
+ "Assigned to me": "Tildelt til mig",
+ "assigned to {string0}": "tildelt til {string0}",
+ "Assignment": "Opgave",
+ "Consume product on chore execution": "Forbrug vare ved udførsel af pligt",
+ "Are you sure to delete user field \"{string0}\"?": "Er du sikker på at du vil slette brugerfeltet \"{string0}\"?",
+ "Userentities": "Brugerenheder",
+ "Create userentity": "Opret brugerenhed",
+ "Show in sidebar menu": "Vis i side-menu",
+ "Edit userentity": "Rediger brugerenhed",
+ "Edit {string0}": "Rediger {string0}",
+ "Create {string0}": "Opret {string0}",
+ "Are you sure to delete this userobject?": "Er du sikker på at du vil slette denne brugerenhed?",
+ "Icon CSS class": "Ikon CSS-klasse",
+ "For example": "For eksempel",
+ "Configure fields": "Konfigurer felter",
+ "Quantity unit plural form testing": "Mængdeenhed flertalsform test",
+ "Result": "Resultat",
+ "Test plural forms": "Test flertalsform",
+ "Scan a barcode": "Skan en stregkode",
+ "Error while initializing the barcode scanning library": "Fejl ved initialisering af stregkodeskannerbibliotek",
+ "The resulting price of this ingredient will be multiplied by this factor": "Prisen for denne ingrediens vil blive ganget med denne faktor",
+ "Price factor": "Prisfaktor",
+ "Do you find grocy useful?": "Er grocy brugbart?",
+ "Say thanks": "Sig tak",
+ "Search for recipes containing this product": "Søg efter opskrifter som indeholder denne vare",
+ "Add to shopping list": "Tilføj til indkøbsliste",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Tilføjet {string1} af {string2} til indkøbslisten \"{string3}\"",
+ "Output": "Output",
+ "Energy (kcal)": "Energi (kcal)",
+ "Per stock quantity unit": "Per lager-mængdeenhed",
+ "Barcode scanner testing": "Stregkodeskannertest",
+ "Expected barcode": "Forventet stregkode",
+ "Scan field": "Skannerfelt",
+ "Scanned barcodes": "Skannede stregkoder",
+ "Hit": "Hit",
+ "Miss": "Miss",
+ "Display recipe": "Vis opskrift",
+ "Accumulate sub products min. stock amount": "Akkumuler underordnede varers minimumbeholdning",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Hvis aktiveret bliver minimumsbeholdning for underordnede varer akkumuleret ind i denne vare så det kun er denne vare der \"mangler\" og ikke de underordnede",
+ "Are you sure to remove this conversion?": "Er du sikker på at du vil fjerne denne konvertering",
+ "Unit price": "Enhedspris",
+ "Total price": "Totalpris",
+ "in {string0} and based on the purchase quantity unit": "i {string0} og baseret på købets mængdeenhed",
+ "Unlimited": "Ubegrænset",
+ "Clear": "Ryd",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Er du sikker på du vil fjerne den inkluderede opskrift \"{string0}\"?",
+ "Period interval": "Periodeinterval",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Det betyder at den næste udførelse af denne pligt kun bør planlægges hver {string0} dage",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Det betyder at den næste udførelse af denne pligt kun bør planlægges hver {string0} uger",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Det betyder at den næste udførsel af denne pligt kun bør planlægges hver {string0} måneder",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Det betyder at næste udførsel af denne pligt er planlagt 1 år efter sidste udførsel",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Det betyder at næste udførsel af denne pligt kun bør planlægges hver {string0} år",
+ "Transfer": "Flyt",
+ "From location": "Fra placering",
+ "To location": "Til placering",
+ "There are no units available at this location": "Der er ingen enheder tilgængelig på denne placering",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Flyttede {string1} af {string2} fra {string3} til {string4}",
+ "Stock entries": "Lagerposteringer",
+ "Best before date": "Bedst før dato",
+ "Purchased date": "Købsdato",
+ "Consume all {string0} for this stock entry": "Forbrug alle {string0} i denne lagerpostering",
+ "The amount cannot be lower than {string1}": "Mængden kan ikke være lavere end {string1}",
+ "Stock entry successfully updated": "Lagerpostering opdateret",
+ "Edit stock entry": "Rediger lagerpostering",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Kamera adgang er kun muligt når det er supporteret og tilladt af din browser og når grocy tilgås beskyttet med (https://) forbindelse",
+ "Keep screen on": "Hold skærmen tændt",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Hold skærmen tændt mens der vises et fuldskærms-kort",
+ "A purchased date is required": "En købsdato er påkrævet",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Produceret vare",
+ "This booking cannot be undone": "Denne booking kan ikke fortrydes",
+ "Booking does not exist or was already undone": "Booking findes ikke eller blev allerede fortrudt",
+ "Are you sure to delete API key \"{string0}\"?": "Er du sikker på at du vil slette API nøglen \"{string0}\"?",
+ "Add note": "Tilføj note",
+ "Add note on {string0}": "Tilføj note for {string0}",
+ "per day": "per dag",
+ "Only undone items": "Fortryd kun varer",
+ "Add product": "Tilføj vare",
+ "Add product on {string0}": "Tilføj vare på {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "",
+ "Meal plan recipe": "",
+ "Meal plan note": "",
+ "Meal plan product": "",
+ "Scan mode": "",
+ "on": "til",
+ "off": "fra",
+ "Scan mode is on but not all required fields could be populated automatically": "",
+ "Is freezer": "",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "",
+ "This cannot be the same as the \"From\" location": "",
+ "Thawed": "",
+ "Frozen": "",
+ "Are you sure to delete userentity \"{string0}\"?": "",
+ "Shopping list settings": "",
+ "Show a month-view calendar": "",
+ "Edit note on {string0}": "",
+ "Edit product on {string0}": "",
+ "Edit recipe on {string0}": "",
+ "Desired servings": "",
+ "Base: {string0}": "",
+ "Recipes settings": "",
+ "Recipe card": "",
+ "Group ingredients by their product group": "",
+ "Unknown store": "",
+ "Store": "Butik",
+ "Transaction successfully undone": "",
+ "Default store": "",
+ "Consume this stock entry": "",
+ "Mark this stock entry as open": "",
+ "Mark this item as done": "",
+ "Edit this item": "Rediger denne emne",
+ "Delete this item": "",
+ "Show an icon if the product is already on the shopping list": "",
+ "Calories": "",
+ "means {string1} per {string2}": "",
+ "Create inverse QU conversion": "",
+ "Create recipe": "",
+ "Save & continue to add ingredients and included recipes": "",
+ "Save & continue": "",
+ "Save & return to recipes": "",
+ "Stock value": "",
+ "Average price": "",
+ "Active": "Aktiv",
+ "Barcodes": "Stregkoder",
+ "Barcode": "Stregkode",
+ "Create Barcode": "Opret stregkode",
+ "Barcode for product": "Stregkode for vare",
+ "Edit Barcode": "Rediger stregkode",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "Ryd filter",
+ "Permissions for user {string0}": "",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "",
+ "You are not allowed to view this page": "",
+ "Page not found": "Siden findes ikke",
+ "Unauthorized": "",
+ "Error source": "",
+ "Error message": "",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "Server fejl",
+ "A server error occured while processing your request": "",
+ "If you think this is a bug, please report it": "",
+ "Language": "Sprog",
+ "User settings": "Bruger indstillinger",
+ "Default": "",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | ",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": " | ",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "ingen-tildeling",
+ "who-least-did-first": "hvem-mindst-gjorde-først",
+ "random": "tilfældig",
+ "in-alphabetical-order": "i-alfabetisk-rækkefølge",
+ "timeago_locale": "da",
+ "timeago_nan": "for NaN år",
+ "moment_locale": "da",
+ "datatables_localization": "{\"sProcessing\": \"Henter...\",\"sLengthMenu\": \"Vis _MENU_ linjer\",\"sZeroRecords\": \"Ingen linjer matcher søgningen\",\"sInfo\": \"Viser _START_ til _END_ af _TOTAL_ linjer\",\"sInfoEmpty\": \"Viser 0 til 0 af 0 linjer\",\"sInfoFiltered\": \"(filtreret fra _MAX_ linjer)\",\"sInfoPostFix\": \"\",\"sSearch\": \"Søg:\",\"sUrl\": \"\",\"oPaginate\": {\"sFirst\": \"Første\",\"sPrevious\": \"Forrige\",\"sNext\": \"Næste\",\"sLast\": \"Sidste\"}}",
+ "summernote_locale": "da-DK",
+ "fullcalendar_locale": "da",
+ "bootstrap-select_locale": "da_DK",
+ "purchase": "køb",
+ "transfer_from": "flyt_fra",
+ "transfer_to": "flyt_til",
+ "consume": "forbrug",
+ "inventory-correction": "beholdningsrettelse",
+ "product-opened": "produkt-åbnet",
+ "stock-edit-old": "lager-redigering-gammel",
+ "stock-edit-new": "lager-redigering-ny",
+ "self-production": "selvproduktion",
+ "manually": "manuelt",
+ "dynamic-regular": "dynamisk-regelmæssig",
+ "daily": "daglig",
+ "weekly": "ugentlig",
+ "monthly": "månedlig",
+ "yearly": "årlig",
+ "text-single-line": "tekst-enkelt-linje",
+ "text-multi-line": "tekst-flere-linjer",
+ "number-integral": "tal-heltal",
+ "number-decimal": "tal-decimal",
+ "date": "dato",
+ "datetime": "datotid",
+ "checkbox": "afkrydsningsfelt",
+ "preset-list": "forudindstillet-liste",
+ "preset-checklist": "forudindstillet-tjekliste",
+ "link": "link",
+ "link-with-title": "",
+ "file": "fil",
+ "image": "billede",
+ "Cookies": "Småkager",
+ "Chocolate": "Chokolade",
+ "Pantry": "Spisekammer",
+ "Candy cupboard": "Slikskuffe",
+ "Tinned food cupboard": "Dåsemadsskab",
+ "Fridge": "Køleskab",
+ "Piece | Pieces": "stk | stk",
+ "Pack | Packs": "Pakke | Pakker",
+ "Glass | Glasses": "Glas | Glas",
+ "Tin | Tins": "Dåse | Dåser",
+ "Can | Cans": "Dåse | Dåser",
+ "Bunch | Bunches": "Klase | Klaser",
+ "Gummy bears": "Vingummibamser",
+ "Crisps": "Chips",
+ "Eggs": "Æg",
+ "Noodles": "Nudler",
+ "Pickles": "Syltede agurker",
+ "Gulash soup": "Gullashsuppe",
+ "Yogurt": "Yoghurt",
+ "Cheese": "Ost",
+ "Cold cuts": "Pålæg",
+ "Paprika": "Paprika",
+ "Cucumber": "Agurk",
+ "Radish": "Radisse",
+ "Tomato": "Tomat",
+ "Changed towels in the bathroom": "Skiftede håndklæder i badeværelset",
+ "Cleaned the kitchen floor": "Gjorde køkkengulvet rent",
+ "Warranty ends": "Reklamationsret udløber",
+ "TV remote control": "Fjernbetjening til TV'et",
+ "Alarm clock": "Væggeur",
+ "Heat remote control": "Fjernbetjening til varme",
+ "Lawn mowed in the garden": "Græsset blev slået i haven",
+ "Some good snacks": "Nogle gode snacks",
+ "Pizza dough": "Pizzadej",
+ "Sieved tomatoes": "Sigtede tomater",
+ "Salami": "Salami",
+ "Toast": "Toast",
+ "Minced meat": "Hakkekød",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti bolognese",
+ "Sandwiches": "Sandwich",
+ "English": "Engelsk",
+ "German": "Tysk",
+ "Italian": "Italiensk",
+ "This is the note content of the recipe ingredient": "Dette er indholdet af opskrift-ingrediensens notefeltet",
+ "Demo User": "Demo bruger",
+ "Gram | Grams": "Gram | Gram",
+ "Flour": "Mel",
+ "Pancakes": "Pandekager",
+ "Sugar": "Sukker",
+ "Home": "Hjem",
+ "Life": "Livet",
+ "Projects": "Projekter",
+ "Repair the garage door": "Reparer garagedøren",
+ "Fork and improve grocy": "Fork og forbedre grocy",
+ "Find a solution for what to do when I forget the door keys": "Find en løsning på hvad jeg gør, når jeg glemmer nøglen til huset",
+ "Sweets": "Slik",
+ "Bakery products": "Bagværk",
+ "Tinned food": "Dåsemad",
+ "Butchery products": "Slagteriprodukter",
+ "Vegetables/Fruits": "Frugt og grønt",
+ "Refrigerated products": "Køleskabsvarer",
+ "Coffee machine": "Kaffemaskine",
+ "Dishwasher": "Opvaskemaskine",
+ "Liter": "Liter",
+ "Liters": "Liter",
+ "Bottle": "Flaske",
+ "Bottles": "Flasker",
+ "Milk": "Mælk",
+ "Chocolate sauce": "Chokoladesauce",
+ "Milliliters": "Milliliter",
+ "Milliliter": "Milliliter",
+ "Bottom": "Bund",
+ "Topping": "Topping",
+ "French": "Fransk",
+ "Turkish": "Tyrkisk",
+ "Spanish": "Spansk",
+ "Russian": "Russisk",
+ "The thing which happens on the 5th of every month": "Det der sker hver den 5. i måneden",
+ "The thing which happens daily": "Det der sker dagligt",
+ "The thing which happens on Mondays and Wednesdays": "Det der sker på mandage og onsdage",
+ "Swedish": "Svensk",
+ "Polish": "Polsk",
+ "Milk Chocolate": "Mælkechokolade",
+ "Dark Chocolate": "Mørk chokolade",
+ "Slice | Slices": "Skive | Skiver",
+ "Example userentity": "Eksempel-brugerenhed",
+ "This is an example user entity...": "Dette er en eksempel-brugerenhed...",
+ "Custom field": "Brugerdefineret felt",
+ "Example field value...": "Eksempel-feltværdi...",
+ "Waffle rolls": "Vaffelruller",
+ "Danish": "Dansk",
+ "Dutch": "Hollandsk",
+ "Norwegian": "Norsk",
+ "Demo": "Demo",
+ "Stable version": "Stabil version",
+ "Preview version": "Forhåndsvisningsversion",
+ "current release": "aktuel udgivelse",
+ "not yet released": "Ikke frigivet endnu",
+ "Portuguese (Brazil)": "Portugisisk (Brasilien)",
+ "This is a note": "Denne er en note",
+ "Freezer": "Fryser",
+ "Hungarian": "Ungarsk",
+ "Slovak": "Slovakisk",
+ "Czech": "Tjekkisk",
+ "Portuguese (Portugal)": "Portugisisk (Portugal)",
+ "DemoSupermarket1": "Netto",
+ "DemoSupermarket2": "Fakta",
+ "Japanese": "Japansk",
+ "Chinese (Taiwan)": "Kinesisk (Taiwan)",
+ "Greek": "Græsk",
+ "Korean": "Koreansk",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/de.json b/locale/de.json
new file mode 100644
index 00000000..87a81090
--- /dev/null
+++ b/locale/de.json
@@ -0,0 +1,1032 @@
+{
+ "Stock overview": "Bestand",
+ "{count} product expires | {count} products expiring": "{count} läuft ab | {count} Produkte laufen ab",
+ "within the next day | within the next {count} days": "innerhalb des nächsten Tages | innerhalb der nächsten {count} Tage",
+ "{count} product is already expired | {count} products are already expired": "{count} Produkt ist bereits abgelaufen | {count} Produkte sind bereits abgelaufen",
+ "{count} product is overdue | {count} products are overdue": "{count} Produkt ist überfällig | {count} Produkte sind überfällig",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} Produkt ist unter Mindestbestand | {count} Produkte sind unter Mindestbestand",
+ "Product": "Produkt",
+ "{count} Product | {count} Products": "{count} Produkt | {count} Produkte",
+ "Amount": "Menge",
+ "Logout": "Abmelden",
+ "Chores overview": "Hausarbeiten",
+ "Batteries overview": "Batterien",
+ "Purchase": "Einkauf",
+ "Consume": "Verbrauch",
+ "Inventory": "Inventur",
+ "Shopping list": "Einkaufszettel",
+ "Chore tracking": "Hausarbeit-Ausführung",
+ "Battery tracking": "Batterie-Ladezyklus",
+ "Locations": "Standorte",
+ "Stores": "Geschäfte",
+ "Quantity units": "Mengeneinheiten",
+ "Chores": "Hausarbeiten",
+ "Batteries": "Batterien",
+ "Chore": "Hausarbeit",
+ "Next estimated tracking": "Nächste geplante Ausführung",
+ "Last tracked": "Zuletzt ausgeführt",
+ "Battery": "Batterie",
+ "Last charged": "Zuletzt geladen",
+ "Next planned charge cycle": "Nächster geplanter Ladezyklus",
+ "Best before": "MHD",
+ "OK": "OK",
+ "Product overview": "Produktübersicht",
+ "Stock quantity unit": "Mengeneinheit Bestand",
+ "Stock amount": "Bestand",
+ "Last purchased": "Zuletzt gekauft",
+ "Last used": "Zuletzt verbraucht",
+ "Spoiled": "Verdorben",
+ "Barcode lookup is disabled": "Barcode-Suche ist deaktiviert",
+ "will be added to the list of barcodes for the selected product on submit": "wird der Liste der Barcodes für das ausgewählte Produkt beim Speichern hinzugefügt",
+ "New amount": "Neue Menge",
+ "Note": "Notiz",
+ "Tracked time": "Ausführungszeit",
+ "Chore overview": "Hausarbeit Übersicht",
+ "Tracked count": "Ausführungsanzahl",
+ "Battery overview": "Batterie Übersicht",
+ "Charge cycles count": "Ladezyklen",
+ "Create shopping list item": "Einkaufszettel Eintrag erstellen",
+ "Edit shopping list item": "Einkaufszettel Eintrag bearbeiten",
+ "Save": "Speichern",
+ "Add": "Hinzufügen",
+ "Name": "Name",
+ "Location": "Standort",
+ "Min. stock amount": "Mindestbestand",
+ "Description": "Beschreibung",
+ "Create product": "Produkt erstellen",
+ "Barcode(s)": "Barcode(s)",
+ "Minimum stock amount": "Mindestbestand",
+ "Default best before days": "Standard-Haltbarkeit in Tagen",
+ "Default quantity unit purchase": "Standard Mengeneinheit Einkauf",
+ "Quantity unit stock": "Mengeneinheit Bestand",
+ "Factor purchase to stock quantity unit": "Faktor Mengeneinheit Einkauf zu Mengeneinheit Bestand",
+ "Create location": "Standort erstellen",
+ "Create store": "Geschäft erstellen",
+ "Create quantity unit": "Mengeneinheit erstellen",
+ "Period type": "Periodentyp",
+ "Period days": "Tage/Periode",
+ "Create chore": "Hausarbeit erstellen",
+ "Used in": "Benutzt in",
+ "Create battery": "Batterie erstellen",
+ "Edit battery": "Batterie bearbeiten",
+ "Edit chore": "Hausarbeit bearbeiten",
+ "Edit quantity unit": "Mengeneinheit bearbeiten",
+ "Edit product": "Produkt bearbeiten",
+ "Edit location": "Standort bearbeiten",
+ "Edit store": "Geschäft bearbeiten",
+ "Record data": "Daten erfassen",
+ "Manage master data": "Stammdaten verwalten",
+ "This will apply to added products": "Dies gilt für hinzugefügte Produkte",
+ "never": "nie",
+ "Add products that are below defined min. stock amount": "Produkte unter Mindestbestand hinzufügen",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Das bedeutet 1 {string1} im Einkauf entsprechen {string2} {string3} im Bestand",
+ "Login": "Anmelden",
+ "Username": "Benutzername",
+ "Password": "Passwort",
+ "Invalid credentials, please try again": "Ungültige Zugangsdaten, bitte versuche es erneut",
+ "Are you sure to delete battery \"{string0}\"?": "Battery \"{string0}\" wirklich löschen?",
+ "Yes": "Ja",
+ "No": "Nein",
+ "Are you sure to delete chore \"{string0}\"?": "Hausarbeit \"{string0}\" wirklich löschen?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" konnte nicht zu einem Produkt aufgelöst werden, wie möchtest du weiter machen?",
+ "Create or assign product": "Produkt erstellen oder verknüpfen",
+ "Cancel": "Abbrechen",
+ "Add as new product": "Als neues Produkt hinzufügen",
+ "Add as barcode to existing product": "Barcode vorhandenem Produkt zuweisen",
+ "Add as new product and prefill barcode": "Neues Produkt erstellen und Barcode vorbelegen",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Mengeneinheit \"{string0}\" wirklich löschen?",
+ "Are you sure to delete product \"{string0}\"?": "Produkt \"{string0}\" wirklich löschen?",
+ "Are you sure to delete location \"{string0}\"?": "Standort \"{string0}\" wirklich löschen?",
+ "Are you sure to delete store \"{string0}\"?": "Geschäft \"{string0}\" wirklich löschen?",
+ "Manage API keys": "API-Schlüssel verwalten",
+ "REST API & data model documentation": "REST-API & Datenmodell Dokumentation",
+ "API keys": "API-Schlüssel",
+ "Create new API key": "Neuen API-Schlüssel erstellen",
+ "API key": "API-Schlüssel",
+ "Expires": "Läuft ab",
+ "Created": "Erstellt",
+ "This product is not in stock": "Dieses Produkt ist nicht vorrätig",
+ "This means {string0} will be added to stock": "Das bedeutet {string0} wird dem Bestand hinzugefügt",
+ "This means {string0} will be removed from stock": "Das bedeutet {string0} wird aus dem Bestand entfernt",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit {string0} Tage nach der letzten Ausführung geplant wird",
+ "Removed {string1} of {string2} from stock": "{string1} {string2} aus dem Bestand entfernt",
+ "About grocy": "Über grocy",
+ "Close": "Schließen",
+ "Released on": "Veröffentlicht am",
+ "Added {string1} of {string2} to stock": "{string1} {string2} dem Bestand hinzugefügt",
+ "Stock amount of {string1} is now {string2}": "Es sind nun {string1} {string2} im Bestand",
+ "Tracked execution of chore {string1} on {string2}": "Ausführung von {string1} am {string2} erfasst",
+ "Tracked charge cycle of battery {string1} on {string2}": "Ladezyklus für Batterie {string1} am {string2} erfasst",
+ "Consume all {string0} which are currently in stock": "Verbrauche den kompletten Bestand von {string0}",
+ "All": "Alle",
+ "Search": "Suche",
+ "Not logged in": "Nicht angemeldet",
+ "You have to select a product": "Ein Produkt muss ausgewählt werden",
+ "You have to select a chore": "Eine Hausarbeit muss ausgewählt werden",
+ "You have to select a battery": "Eine Batterie muss ausgewählt werden",
+ "A name is required": "Ein Name ist erforderlich",
+ "A location is required": "Ein Standort ist erforderlich",
+ "A quantity unit is required": "Eine Mengeneinheit muss ausgewählt werden",
+ "A period type is required": "Eine Periodentyp muss ausgewählt werden",
+ "A best before date is required": "Ein Mindesthaltbarkeitsdatum ist erforderlich",
+ "Settings": "Einstellungen",
+ "This can only be before now": "Dies kann nur vor jetzt sein",
+ "Calendar": "Kalender",
+ "Recipes": "Rezepte",
+ "Edit recipe": "Rezept bearbeiten",
+ "Ingredients list": "Zutatenliste",
+ "Add recipe ingredient": "Rezeptzutat hinzufügen",
+ "Edit recipe ingredient": "Rezeptzutat bearbeiten",
+ "Are you sure to delete recipe \"{string0}\"?": "Rezept \"{string0}\" wirklich löschen?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Rezeptzutat \"{string0}\" wirklich löschen?",
+ "Are you sure to empty shopping list \"{string0}\"?": " Einkaufszettel \"{string0}\" wirklich leeren? ",
+ "Clear list": "Liste leeren",
+ "Requirements fulfilled": "Bedarf im Bestand",
+ "Put missing products on shopping list": "Fehlende Produkte auf den Einkaufszettel setzen",
+ "Enough in stock": "Bestand reicht aus",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Bestand nicht ausreichend, {count} Zutat fehlt, steht aber bereits auf dem Einkaufszettel | Bestand nicht ausreichend, {count} Zutaten fehlen, stehen aber bereits auf dem Einkaufszettel",
+ "Expand to fullscreen": "Auf ganzen Bildschirm vergrößern",
+ "Ingredients": "Zutaten",
+ "Preparation": "Zubereitung",
+ "Recipe": "Rezept",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Nicht ausreichend im Bestand, {string1} fehlen, {string2} stehen bereits auf dem Einkaufszettel",
+ "Show notes": "Notizen anzeigen",
+ "Put missing amount on shopping list": "Fehlende Menge auf den Einkaufszettel setzen",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Sicher alle fehlenden Zutaten für Rezept \"{string0}\" auf die Einkaufsliste zu setzen?",
+ "Added for recipe {string0}": "Hinzugefügt für Rezept {string0}",
+ "Manage users": "Benutzer verwalten",
+ "User": "Benutzer",
+ "Users": "Benutzer",
+ "Are you sure to delete user \"{string0}\"?": "Benutzer \"{string0}\" wirklich löschen?",
+ "Create user": "Benutzer erstellen",
+ "Edit user": "Benutzer bearbeiten",
+ "First name": "Vorname",
+ "Last name": "Nachname",
+ "A username is required": "Ein Benutzername ist erforderlich",
+ "Confirm password": "Passwort bestätigen",
+ "Passwords do not match": "Passwörter stimmen nicht überein",
+ "Change password": "Passwort ändern",
+ "Done by": "Ausgeführt von",
+ "Last done by": "Zuletzt ausgeführt von",
+ "Unknown": "Unbekannt",
+ "Chores journal": "Hausarbeitenjournal",
+ "0 means suggestions for the next charge cycle are disabled": "0 bedeutet dass Vorschläge für den nächsten Ladezyklus deaktiviert sind",
+ "Charge cycle interval (days)": "Ladezyklusintervall (Tage)",
+ "Last price": "Letzter Preis",
+ "Price history": "Preisentwicklung",
+ "No price history available": "Keine Preisdaten verfügbar",
+ "Price": "Preis",
+ "Unit": "Einheit",
+ "{count} Unit | {count} Units": "{count} Einheit | {count} Einheiten",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} Hausarbeit steht an | {count} Hausarbeiten stehen an",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} Hausarbeit ist überfällig | {count} Hausarbeiten sind überfällig",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} Batterie muss geladen werden | {count} Batterien müssen geladen werden",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} Batterie ist überfällig | {count} Batterien sind überfällig",
+ "in singular form": "in der Einzahl",
+ "Quantity unit": "Mengeneinheit",
+ "Only check if any amount is in stock": "Nur prüfen, ob eine beliebige Menge im Bestand verfügbar ist",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "Sicher, dass alle Zutaten die vom Rezept \"{string0}\" benötigt werden aus dem Bestand entfernt werden sollen (Zutaten markiert mit \"Nur prüfen, ob eine beliebige Menge im Bestand verfügbar ist\" werden ignoriert)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Alle Zutaten, die vom Rezept \"{string0}\" benötigt werden, wurden aus dem Bestand entfernt",
+ "Consume all ingredients needed by this recipe": "Alle Zutaten, die von diesem Rezept benötigt werden, aus dem Bestand entfernen",
+ "Click to show technical details": "Klick um technische Details anzuzeigen",
+ "Error while saving, probably this item already exists": "Fehler beim Speichern, möglicherweise existiert das Element bereits",
+ "Error details": "Fehlerdetails",
+ "Tasks": "Aufgaben",
+ "Show done tasks": "Erledigte Aufgaben anzeigen",
+ "Task": "Aufgabe",
+ "Due": "Fällig",
+ "Assigned to": "Zugewiesen an",
+ "Mark task \"{string0}\" as completed": "Aufgabe \"{string0}\" als erledigt markieren",
+ "Uncategorized": "Nicht kategorisiert",
+ "Task categories": "Aufgabenkategorien",
+ "Create task": "Aufgabe erstellen",
+ "A due date is required": "Ein Fälligkeitsdatum ist erforderlich",
+ "Category": "Kategorie",
+ "Edit task": "Aufgabe bearbeiten",
+ "Are you sure to delete task \"{string0}\"?": "Aufgabe \"{string0}\" wirklich löschen?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} Aufgabe steht an | {count} Aufgaben stehen an",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} Aufgabe ist überfällig | {count} Aufgaben sind überfällig",
+ "Edit task category": "Aufgabenkategorie bearbeiten",
+ "Create task category": "Aufgabenkategorie erstellen",
+ "Product groups": "Produktgruppen",
+ "Ungrouped": "Ungruppiert",
+ "Create product group": "Produktgruppe erstellen",
+ "Edit product group": "Produktgruppe bearbeiten",
+ "Product group": "Produktgruppe",
+ "Are you sure to delete product group \"{string0}\"?": "Produktgruppe \"{string0}\" wirklich löschen?",
+ "Stay logged in permanently": "Dauerhaft angemeldet bleiben",
+ "When not set, you will get logged out at latest after 30 days": "Wenn nicht gesetzt, wirst du spätestens nach 30 Tagen automatisch abgemeldet",
+ "Status": "Status",
+ "Below min. stock amount": "Unter Mindestbestand",
+ "Expiring soon": "Bald ablaufend",
+ "Already expired": "Bereits abgelaufen",
+ "Due soon": "Bald fällig",
+ "Overdue": "Überfällig",
+ "View settings": "Ansichtseinstellungen",
+ "Auto reload on external changes": "Autom. akt. bei externen Änderungen",
+ "Enable night mode": "Nachtmodus aktivieren",
+ "Auto enable in time range": "Autom. akt. in diesem Zeitraum",
+ "From": "Von",
+ "in format": "im Format",
+ "To": "Bis",
+ "Time range goes over midnight": "Zeitraum geht über Mitternacht",
+ "Product picture": "Produktbild",
+ "No file selected": "Keine Datei ausgewählt",
+ "Delete": "Löschen",
+ "Select file": "Datei auswählen",
+ "Image of product {string0}": "Bild des Produkts {string0}",
+ "Deletion not possible": "Löschen nicht möglich",
+ "Equipment": "Ausstattung",
+ "Instruction manual": "Bedienungsanleitung",
+ "The selected equipment has no instruction manual": "Die ausgewählte Ausstattung hat keine Bedienungsanleitung",
+ "Notes": "Notizen",
+ "Edit equipment": "Ausstattung bearbeiten",
+ "Create equipment": "Ausstattung erstellen",
+ "The current file will be deleted on save": "Die aktuelle Datei wird beim Speichern gelöscht ",
+ "No picture available": "Kein Bild vorhanden",
+ "Presets for new products": "Vorgaben für neue Produkte",
+ "Included recipes": "Enthaltene Rezepte",
+ "A recipe is required": "Ein Rezept ist erforderlich",
+ "Add included recipe": "Enthaltenes Rezept hinzufügen",
+ "Edit included recipe": "Enthaltenes Rezept bearbeiten",
+ "Group": "Gruppe",
+ "This will be used as a headline to group ingredients together": "Dies wird als Überschrift verwendet, um Zutaten zusammenzufassen",
+ "Journal": "Journal",
+ "Stock journal": "Bestandsjournal",
+ "Undone on": "Rückgängig gemacht am",
+ "Batteries journal": "Batteriejournal",
+ "Undo charge cycle": "Ladezyklus rückgängig machen",
+ "Undo chore execution": "Ausführung rückgängig machen",
+ "Chore execution successfully undone": "Ausführung erfolgreich rückgängig gemacht",
+ "Undo": "Rückgängig machen",
+ "Booking successfully undone": "Buchung erfolgreich rückgängig gemacht",
+ "Charge cycle successfully undone": "Ladezyklus erfolgreich rückgängig gemacht",
+ "Disable stock fulfillment checking for this ingredient": "Bestandsprüfung für diese Zutat deaktivieren",
+ "Add all list items to stock": "Alle Einträge zum Bestand hinzufügen",
+ "Add this item to stock": "Diesen Eintrag zum Bestand hinzufügen",
+ "Adding shopping list item {string1} of {string2}": "Bearbeite Einkausfzettel-Eintrag {string1} von {string2}",
+ "Use a specific stock item": "Einen bestimmten Bestandseintrag verwenden",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "Der erste Eintrag in dieser Liste würde von der Standardregel \"Geöffnete zuerst, dann zuerst fällige, dann First In - First Out\" ausgewählt werden",
+ "Mark {string1} of {string2} as open": "{string1} {string2} als geöffnet markieren",
+ "Marked {string1} of {string2} as opened": "{string1} {string2} als geöffnet markiert",
+ "Mark as opened": "Als geöffnet markieren",
+ "Not opened": "Nicht geöffnet",
+ "Opened": "Geöffnet",
+ "{string0} opened": "{string0} geöffnet",
+ "Product due": "Produkt fällig",
+ "Task due": "Aufgabe fällig",
+ "Chore due": "Hausarbeit fällig",
+ "Battery charge cycle due": "Battery-Ladezyklus fällig",
+ "Show clock in header": "Uhr in der Kopfzeile anzeigen",
+ "Stock settings": "Bestand-Einstellungen",
+ "Shopping list to stock workflow": "Einkaufsliste -> Bestand Workflow",
+ "Skip": "Überspringen",
+ "Servings": "Portionen",
+ "Costs": "Kosten",
+ "Based on the prices of the last purchase per product": "Basierend auf den Preisen des letzten Kaufs pro Produkt",
+ "The ingredients listed here result in this amount of servings": "Die hier aufgeführten Zutaten ergeben diese Menge an Portionen",
+ "Do not check against the shopping list when adding missing items to it": "Nicht gegen die bereits auf der Einkaufsliste vorhandene Menge prüfen, wenn fehlende Zutaten auf die Einkaufsliste gesetzt werden",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Standardmäßig ist die Menge, die der Einkaufsliste hinzugefügt werden soll, \"benötigte Menge - Lagerbestand - Menge bereits auf der Einkaufsliste\" - wenn dies aktiviert ist, wird nur gegen den Lagerbestand geprüft, nicht gegen das, was bereits auf der Einkaufsliste steht",
+ "Picture": "Bild",
+ "Uncheck ingredients to not put them on the shopping list": "Entferne den Haken einer Zutat, um diese nicht auf die Einkaufsliste zu übernehmen",
+ "This is for statistical purposes only": "Dies wird nur für Auswertezwecke benötigt",
+ "You have to select a recipe": "Ein Rezept muss ausgewählt werden",
+ "Key type": "Schlusseltyp",
+ "Share/Integrate calendar (iCal)": "Kalender teilen/integrieren (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Verwende die folgende (öffentliche) URL, um den Kalender im iCal-Format zu teilen oder zu integrieren",
+ "Allow partial units in stock": "Teilmengen im Bestand zulassen",
+ "Enable tare weight handling": "Taragewichtbehandlung aktivieren",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Dies ist z.B. für Mehl im Glas nützlich - beim Buchen eines Kaufs/Verbrauchs oder bei der Inventur musst du dann immer das gesamte Glas wiegen, die zu buchende Menge wird dann automatisch basierend auf dem Bestand und dem unten definierten Eigengewicht berechnet",
+ "Tare weight": "Taragewicht",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Taragewichtbehandlung aktiviert - bitte den gesamten Behälter wiegen, die zu buchende Menge wird automatisch berechnet",
+ "You have to select a location": "Ein Standort muss ausgewählt werden",
+ "You have to select a store": "Ein Geschäft muss ausgewählt werden",
+ "List": "Liste",
+ "Gallery": "Galerie",
+ "The current picture will be deleted on save": "Das aktuelle Bild wird beim Speichern gelöscht ",
+ "Journal for this battery": "Journal für diese Batterie",
+ "System info": "Systeminformationen",
+ "Changelog": "Änderungsprotokoll",
+ "will be multiplied by a factor of {string1} to get {string2}": "wird mit dem Faktor {string1} multipliziert um {string2} zu erhalten",
+ "The given date is earlier than today, are you sure?": "Das angegebene Datum ist früher als heute, bist du sicher?",
+ "Product count": "Produktanzahl",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "Gib einen neuen Produktnamen oder Barcode ein und drücke TAB oder ENTER um einen Workflow zu starten",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Dies wird als Standardeinstellung verwendet wenn dieses Produkt als Rezeptzutat hinzugefügt wird",
+ "Add item": "Eintrag hinzufügen",
+ "Selected shopping list": "Ausgewählter Einkaufszettel",
+ "New shopping list": "Neuer Einkaufszettel",
+ "Delete shopping list": "Einkaufszettel löschen",
+ "Chores settings": "Hausarbeiten-Einstellungen",
+ "Batteries settings": "Batterie-Einstellungen",
+ "Tasks settings": "Aufgaben-Einstellungen",
+ "Create shopping list": "Einkaufszettel erstellen",
+ "Are you sure to delete shopping list \"{string0}\"?": " Einkaufszettel \"{string0}\" wirklich löschen? ",
+ "Average shelf life": "Durchschnittliche Haltbarkeit",
+ "Spoil rate": "Verderblichkeitsrate",
+ "Show more": "Mehr anzeigen",
+ "Show less": "Weniger anzeigen",
+ "The amount must be between {string1} and {string2}": "Die Menge muss zwischen {string1} und {string2} liegen",
+ "Day of month": "Tag des Monats",
+ "Monday": "Montag",
+ "Tuesday": "Dienstag",
+ "Wednesday": "Mittwoch",
+ "Thursday": "Donnerstag",
+ "Friday": "Freitag",
+ "Saturday": "Samstag",
+ "Sunday": "Sonntag",
+ "Configure userfields": "Benutzerfelder konfigurieren",
+ "Userfields": "Benutzerfelder",
+ "Entity": "Entität",
+ "Caption": "Titel",
+ "Type": "Typ",
+ "Create userfield": "Benutzerfeld erstellen",
+ "A entity is required": "Eine Entität muss ausgewählt werden",
+ "A caption is required": "Ein Titel ist erforderlich",
+ "A type is required": "Ein Typ muss ausgewählt werden",
+ "Show as column in tables": "Als Spalte in Tabellen anzeigen",
+ "This is required and can only contain letters and numbers": "Dies ist erforderlich und darf nur Buchstaben und Zahlen enthalten",
+ "Edit userfield": "Benutzerfeld bearbeiten",
+ "Plural forms": "Pluralformen",
+ "One plural form per line, the current language requires": "Ein Pluralform pro Zeile, die aktuelle Sprache erfordert",
+ "Plural count": "Plural Anzahl",
+ "Plural rule": "Plural Regel",
+ "in plural form": "in der Mehrzahl",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Nicht ausreichend im Bestand, {count} Zutat fehlt | Nicht ausreichend im Bestand, {count} Zutaten fehlen",
+ "Not enough in stock, but already on the shopping list": "Bestand nicht ausreichend, steht aber bereits auf dem Einkaufszettel",
+ "Not enough in stock": "Nicht ausreichend im Bestand",
+ "Expiring soon days": "\"Bald ablaufend\"-Tage",
+ "Default location": "Standard-Standort",
+ "Default amount for purchase": "Standardmenge für Einkauf",
+ "Default amount for consume": "Standardmenge für Verbrauch",
+ "Variable amount": "Variable Menge",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Wenn dies nicht leer ist, wird dies anstelle der Menge oben angezeigt, für die Bestandsprüfung wird trotzdem diese Menge verwendet",
+ "Track date only": "Nur Datum der Ausführung speichern",
+ "When enabled only the day of an execution is tracked, not the time": "Wenn gewählt, wird nur der Tag einer Ausführung aufgezeichnet, nicht die Zeit",
+ "Consume {string1} of {string2}": "Verbrauche {string1} {string2}",
+ "Meal plan": "Speiseplan",
+ "Add recipe on {string0}": "Rezept am {string0} hinzufügen",
+ "{count} serving | {count} servings": "{count} Portion | {count} Portionen",
+ "Week costs": "Wochenkosten",
+ "Configuration": "Konfiguration",
+ "A predefined list of values, one per line": "Eine vordefinierte Liste von Werten (einer pro Zeile)",
+ "Products": "Produkte",
+ "Marked task {string0} as completed on {string0}": "Aufgabe {string0} als erledigt markiert am {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Die Buchung hat nachfolgende abhängige Buchungen, rückgängig machen nicht möglich",
+ "per serving": "pro Portion",
+ "Never": "Nie",
+ "Today": "Heute",
+ "Consume {string1} of {string2} as spoiled": "Verbrauche {string1} {string2} als verdorben",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Nicht alle Zutaten, die vom Rezept \"{string0}\" benötigt werden, sind vorrätig, es wurde nichts aus dem Bestand entfernt",
+ "Undo task": "Aufgabe rückgängig machen",
+ "Due date rollover": "Fälligkeit hinausschieben",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Wenn gewählt, kann die Hausarbeit nie überfällig werden - das Fälligkeitsdatum wird jeden Tag ab Fälligkeit einen Tag vorgeschoben",
+ "Location Content Sheet": "Standort-Inhaltsblatt",
+ "Print": "Drucken",
+ "all locations": "alle Standorte",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "Hier kannst du eine Seite pro Standort mit dem aktuellen Bestand drucken, gedacht um diese am entsprechenden Platz aufzuhängen, damit die verbauchten Dinge darauf vermerkt werden können",
+ "this location": "diesen Standort",
+ "Consumed amount": "Verbrauchte Menge",
+ "Time of printing": "Druckzeitpunkt",
+ "Are you sure to delete equipment \"{string0}\"?": "Ausstattung \"{string0}\" wirklich löschen?",
+ "Parent product": "Übergeordnetes Produkt",
+ "Not possible because this product is already used as a parent product in another product": "Nicht möglich, da dieses Produkt bereits als übergeordnetes Produkt eines anderen Produkts verwendet wird",
+ "Default conversions": "Standardumrechnungen",
+ "Factor": "Faktor",
+ "1 {string0} is the same as...": "1 {string0} entspricht...",
+ "Create QU conversion": "ME-Umrechnung erstellen",
+ "Default for QU": "Standard für ME",
+ "Quantity unit from": "ME von",
+ "Quantity unit to": "ME nach",
+ "This cannot be equal to {string0}": "Dies darf nicht gleich sein wie {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Das bedeutet 1 {string1} entspricht {string2} {string3}",
+ "QU conversions": "ME-Umrechnungen",
+ "Product overrides": "Produktübersteuerung",
+ "Override for product": "Übersteuerung für Produkt",
+ "This equals {string1} {string2}": "Dies entspricht {string1} {string2}",
+ "Edit QU conversion": "ME-Umrechnung bearbeiten",
+ "An assignment type is required": "Ein Zuweisungstyp ist erforderlich",
+ "Assignment type": "Zuweisungstyp",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit 1 Tage nach der letzten Ausführung geplant wird",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit 1 Tage nach der letzten Ausführung geplant wird, aber nur für unten ausgewählten Wochentage",
+ "This means the next execution of this chore is not scheduled": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit nicht geplant wird",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit jeden Monat an dem unten ausgewählt Tag geplant wird",
+ "This means the next execution of this chore will not be assigned to anyone": "Das bedeutet, dass die nächste Ausführung der Hausarbeit niemandem zugewiesen wird",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Das bedeutet, dass die nächste Ausführung der Hausarbeit demjenigen zugewiesen wird, der diese am wenigsten häufig ausgeführt hat",
+ "This means the next execution of this chore will be assigned randomly": "Das bedeutet, dass die nächste Ausführung der Hausarbeit zufällig jemanden zugewiesen wird",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Das bedeutet, dass die nächste Ausführung der Hausarbeit dem nächsten in alphabetischer Reihenfolge zugewiesen wird",
+ "Assign to": "Zuweisen an",
+ "This assignment type requires that at least one is assigned": "Diese Zuordnungsart setzt voraus, dass mindestens eine Person zugeordnet ist",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} ist mir zugewiesen | {count} Hausarbeiten sind mir zugewiesen",
+ "Assigned to me": "Mir zugewiesen",
+ "assigned to {string0}": "zugewiesen an {string0}",
+ "Assignment": "Zuweisung",
+ "Consume product on chore execution": "Ein Produkt bei Hausarbeit-Ausführung verbrauchen",
+ "Are you sure to delete user field \"{string0}\"?": "Benutzerfeld \"{string0}\" wirklich löschen?",
+ "Userentities": "Benutzerentitäten",
+ "Create userentity": "Benutzerentität erstellen",
+ "Show in sidebar menu": "Im Seitenleisten-Menü anzeigen",
+ "Edit userentity": "Benutzerentität bearbeiten",
+ "Edit {string0}": "{string0} bearbeiten",
+ "Create {string0}": "{string0} erstellen",
+ "Are you sure to delete this userobject?": "Dieses Benutzerobject wirklich löschen?",
+ "Icon CSS class": "Icon CSS-Klasse",
+ "For example": "Zum Beispiel",
+ "Configure fields": "Felder konfigurieren",
+ "Quantity unit plural form testing": "ME Pluralformen testen",
+ "Result": "Ergebnis",
+ "Test plural forms": "Pluralformen testen",
+ "Scan a barcode": "Scanne einen Barcode",
+ "Error while initializing the barcode scanning library": "Fehler beim Initialisieren der Barcode-Scan-Komponenten",
+ "The resulting price of this ingredient will be multiplied by this factor": "Der resultierende Preis dieser Zutat wird mit diesem Faktor multipliziert",
+ "Price factor": "Preisfaktor",
+ "Do you find grocy useful?": "Findest du grocy nützlich?",
+ "Say thanks": "Sag Danke",
+ "Search for recipes containing this product": "Suche nach Rezepten, die dieses Produkt enthalten",
+ "Add to shopping list": "Zum Einkaufszettel hinzufügen",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "{string1} {string2} dem Einkauszettel \"{string3}\" hinzugefügt",
+ "Output": "Ausgabe",
+ "Energy (kcal)": "Energie (kcal)",
+ "Per stock quantity unit": "Pro Bestandsmengeneinheit",
+ "Barcode scanner testing": "Barcodescanner testen",
+ "Expected barcode": "Erwarteter Barcode",
+ "Scan field": "Scanfeld",
+ "Scanned barcodes": "Gescannte Barcodes",
+ "Hit": "Erfolgreich",
+ "Miss": "Fehler",
+ "Display recipe": "Rezept anzeigen",
+ "Accumulate sub products min. stock amount": "Mindestbestände von untergeordneten Produkten aufsummieren",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Wenn aktiviert, werden die Mindestbestände von untergeordneten Produkten aufsummiert, heißt das untergeordnete Produkt wird nie \"fehlen\", nur dieses",
+ "Are you sure to remove this conversion?": "Diese Umrechnung wirklich löschen?",
+ "Unit price": "Einzelpreis",
+ "Total price": "Gesamtpreis",
+ "in {string0} and based on the purchase quantity unit": "In {string0} und bezogen auf die Einkaufsmengeneinheit",
+ "Unlimited": "Unbegrenzt",
+ "Clear": "Löschen",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Das enthaltene Rezept \"{string0}\" wirklich löschen?",
+ "Period interval": "Periodenintervall",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit nur alle {string0} Tage geplant wird",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit nur alle {string0} Wochen geplant wird",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit nur alle {string0} Monate geplant wird",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit 1 Jahr nach der letzten Ausführung geplant wird",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Das bedeutet, dass eine erneute Ausführung der Hausarbeit nur alle {string0} Jahre geplant wird",
+ "Transfer": "Umlagern",
+ "From location": "Von Standort",
+ "To location": "Nach Standort",
+ "There are no units available at this location": "Keine Einheiten an diesem Standort verfügbar",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "Menge: {string1}; Fällig am {string2}; Gekauft am {string3} ",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "{string1} {string2} von {string3} nach {string4} verschoben",
+ "Stock entries": "Bestandseinträge",
+ "Best before date": "MHD",
+ "Purchased date": "Einkaufsdatum",
+ "Consume all {string0} for this stock entry": "Verbrauche alle {string0} dieses Bestandseintrags",
+ "The amount cannot be lower than {string1}": "Die Menge darf nicht kleiner als {string1} sein",
+ "Stock entry successfully updated": "Bestandseintrag wurde erfolgreich aktualisiert",
+ "Edit stock entry": "Bestandseintrag bearbeiten",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Der Kamerazugriff ist nur möglich, wenn dein Browser dies unterstützt und zulässt und wenn auf grocy über eine sichere Verbindung (https://) zugegriffen wird",
+ "Keep screen on": "Bildschirm eingeschaltet lassen",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Bildschirm eingeschaltet lassen während eine \"fullscreen-card\" angezeigt wird",
+ "A purchased date is required": "Ein Einkaufsdatum ist erforderlich",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "Wenn ein Produkt ausgewählt ist, wird beim Verbrauch dieses Rezeptes eine Einheit (pro Portion in Bestandsmengeneinheit) dem Bestand hinzugefügt",
+ "Produces product": "Produziertes Produkt",
+ "This booking cannot be undone": "Die Buchung kann nicht rückgängig gemacht werden",
+ "Booking does not exist or was already undone": "Buchung existiert nicht oder wurde bereits rückgängig gemacht",
+ "Are you sure to delete API key \"{string0}\"?": "API-Schlüssel \"{string0}\" wirklich löschen?",
+ "Add note": "Notiz hinzufügen",
+ "Add note on {string0}": "Notiz am {string0} hinzufügen",
+ "per day": "pro Tag",
+ "Only undone items": "Nur unerledigte Einträge",
+ "Add product": "Produkt hinzufügen",
+ "Add product on {string0}": "Produkt am {string0} hinzufügen",
+ "Consume all ingredients needed by this weeks recipes or products": "Alle Zutaten, die diese Woche von Rezepten oder Produkten benötigt werden, aus dem Bestand entfernen",
+ "Meal plan recipe": "Speiseplan Rezept",
+ "Meal plan note": "Speiseplan Notiz",
+ "Meal plan product": "Speiseplan Produkt",
+ "Scan mode": "Scan-Modus",
+ "on": "an",
+ "off": "aus",
+ "Scan mode is on but not all required fields could be populated automatically": "Scan-Modus ist eingeschaltet, aber nicht alle erforderlichen Felder konnten automatisch ausgefüllt werden",
+ "Is freezer": "Ist ein Gefrier-Standort (also z. B. ein Gefrierschrank)",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Beim Umlagen von Produkten von/zu einem Gefrier-Standort wird das Mindesthaltbarkeitsdatum der Produkte automatisch entsprechend den Produkteinstellungen angepasst",
+ "This cannot be the same as the \"From\" location": "Dies kann nicht derselbe Standort wie \"Von Standort\" sein",
+ "Thawed": "Aufgetaut",
+ "Frozen": "Eingefroren",
+ "Are you sure to delete userentity \"{string0}\"?": "Benutzerentität \"{string0}\" wirklich löschen?",
+ "Shopping list settings": "Einkaufszettel-Einstellungen",
+ "Show a month-view calendar": "Einen Kalender (Monatsansicht) anzeigen",
+ "Edit note on {string0}": "Notiz am {string0} bearbeiten",
+ "Edit product on {string0}": "Produkt am {string0} bearbeiten",
+ "Edit recipe on {string0}": "Rezept am {string0} bearbeiten",
+ "Desired servings": "Gewünschte Portionen",
+ "Base: {string0}": "Basis: {string0}",
+ "Recipes settings": "Rezept-Einstellungen",
+ "Recipe card": "Rezept-Karte",
+ "Group ingredients by their product group": "Zutaten nach Produktgruppen gruppieren",
+ "Unknown store": "Unbekanntes Geschäft",
+ "Store": "Geschäft",
+ "Transaction successfully undone": "Transaktion erfolgreich rückgängig gemacht",
+ "Default store": "Standardgeschäft",
+ "Consume this stock entry": "Verbrauche diesen Bestandseintrag",
+ "Mark this stock entry as open": "Diesen Bestandseintrag als geöffnet markieren",
+ "Mark this item as done": "Diesen Eintrag als erledigt markieren",
+ "Edit this item": "Diesen Eintrag bearbeiten",
+ "Delete this item": "Diesen Eintrag löschen",
+ "Show an icon if the product is already on the shopping list": "Ein Symbol anzeigen, wenn das Produkt bereits auf dem Einkaufszettel steht",
+ "Calories": "Kalorien",
+ "means {string1} per {string2}": "bedeutet {string1} pro {string2}",
+ "Create inverse QU conversion": "Inverse ME-Umrechnung erstellen",
+ "Create recipe": "Rezept erstellen",
+ "Save & continue to add ingredients and included recipes": "Speichern & fortfahren um Zutaten und enthaltene Rezepte hinzuzufügen",
+ "Save & continue": "Speichern & fortfahren",
+ "Save & return to recipes": "Speichern & zurück zu Rezepte",
+ "Stock value": "Bestandswert",
+ "Average price": "Durchschnittlicher Preis",
+ "Active": "Aktiv",
+ "Barcodes": "Barcodes",
+ "Barcode": "Barcode",
+ "Create Barcode": "Barcode erstellen",
+ "Barcode for product": "Barcode für Produkt",
+ "Edit Barcode": "Barcode bearbeiten",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Nicht ausreichend im Bestand (nicht in den Kosten enthalten), {string0} Zutaten fehlen",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "Basierend auf den Preisen der Standard-Verbrauchsregel \"Geöffnete zuerst, dann zuerst fällige, dann First In - First Out\"",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Nicht ausreichend im Bestand (nicht in den Kosten enthalten), {string1} fehlen, {string2} stehen bereits auf dem Einkaufszettel",
+ "Quantity unit stock cannot be changed after first purchase": "Die Mengeneinheit Bestand kann nach dem ersten Einkauf nicht mehr geändert werden",
+ "Clear filter": "Filter zurücksetzen",
+ "Permissions for user {string0}": "Berechtigungen für Benutzer {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "Bist du sicher, dass du die vollen Berechtigungen für dich selbst entfernen willst?",
+ "Permissions saved": "Berechtigungen gespeichert",
+ "You are not allowed to view this page": "Du hast keine Berechtigung für diese Seite",
+ "Page not found": "Seite nicht gefunden",
+ "Unauthorized": "Nicht autorisiert",
+ "Error source": "Fehlerquelle",
+ "Error message": "Fehlermeldung",
+ "Stack trace": "Stacktrace",
+ "Easy error info copy & paste (for reporting)": "Easy Fehler-Info copy & paste (für Fehler-Reporting)",
+ "This page does not exist": "Diese Seite existiert nicht",
+ "You will be redirected to the default page in {string0} seconds": "Dur wirst in {string0} Sekunden zur Startseite weitergeleitet",
+ "Server error": "Serverfehler",
+ "A server error occured while processing your request": "Bei der Verarbeitung deiner Anfrage ist ein Serverfehler aufgetreten",
+ "If you think this is a bug, please report it": "Wenn du denkst, dass dies ein Fehler ist, melde ihn bitte",
+ "Language": "Sprache",
+ "User settings": "Benutzereinstellungen",
+ "Default": "Standard",
+ "Stock journal summary": "Bestandsjournal-Zusammenfassung",
+ "Journal summary": "Journal-Zusammenfassung",
+ "Journal summary for this product": "Journal-Zusammenfassung für dieses Produkt",
+ "Consume exact amount": "Exakte Menge verbrauchen",
+ "Value": "Wert",
+ "{string0} total value": "{string0} Gesamtwert",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "Einkaufsdattum auf der Einkauf- und Inventur-Seite anzeigen (ansonsten wird heute als Einkaufsdatum verwendet)",
+ "Common": "Allgemein",
+ "Decimal places allowed for amounts": "Erlaubte Dezimalstellen für Mengen",
+ "Decimal places allowed for prices": "Erlaubte Dezimalstellen für Preise",
+ "Stock entries for this product": "Bestandseinträge für dieses Produkt",
+ "Edit shopping list": "Einkaufszettel bearbeiten",
+ "Save & continue to add quantity unit conversions & barcodes": "Speichern & fortfahren um ME-Umrechnungen & Barcodes hinzuzufügen",
+ "Save & return to products": "Speichern & zurück zu Produkte",
+ "Save & continue to add conversions": "Speichern & fortfahren um ME-Umrechnungen hinzuzufügen",
+ "Save & return to quantity units": "Speichern & zurück zu Mengeneinheiten",
+ "price": "Preis",
+ "New stock amount": "Neuer Bestand",
+ "Price per stock unit": "Preis pro Bestandsmengeneinheit",
+ "Table options": "Tabellenoptionen",
+ "This product is currently on a shopping list": "Dieses Produkt ist derzeit auf einem Einkaufszettel",
+ "Undo transaction": "Transaktion rückgängig machen",
+ "Transaction type": "Transaktionstyp",
+ "Transaction time": "Transaktionszeit",
+ "Chore journal": "Hausarbeit-Journal",
+ "Track chore execution": "Ausführung erfassen",
+ "Mark task as completed": "Aufgabe als erledigt markieren",
+ "Track charge cycle": "Ladezyklus erfassen",
+ "Battery journal": "Batterie-Journal",
+ "This product has a picture": "Dieses Produkt hat ein Bild",
+ "Consume this stock entry as spoiled": "Verbrauche diesen Bestandseintrag als verdorben",
+ "Configure user permissions": "Benutzerberechtigungen konfigurieren",
+ "Show a QR-Code for this API key": "Einen QR-Code für diesen API-Schlüssel anzeigen",
+ "This is the default quantity unit used when adding this product to the shopping list": "Dies ist die Standardmengeneinheit, die beim Hinzufügen dieses Produkts zum Einkaufszettel verwendet wird",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "Eine Warnung anzeigen, wenn das Fälligkeitsdatum des eingekauften Produkts früher ist als im Bestand",
+ "This is due earlier than already in-stock items": "Dies ist früher fällig als bereits vorhandene Bestandseinträge",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "Wenn eingeschaltet, wird nach der Auswahl bzw. dem Scannen eines Produkts und wenn auch alle anderen Felder automatisch vorbelegt werden konnten (durch Produkt- und/oder Barcodestandards), die Transaktion automatisch gespeichert",
+ "Quick consume amount": "Schnell-Verbrauchs-Menge",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "Diese Menge wird für die \"Schnell-Verbrauch/Öffnen-Buttons\" auf der Bestandsübersicht benutzt (bezieht sich auf die Bestandsmengeneinheit)",
+ "Copy": "Kopieren",
+ "Are you sure to remove this barcode?": "Diesen Barcode wirklich löschen?",
+ "Due date type": "Fälligkeitsdatum-Typ",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "Je nach ausgewähltem Typ wird die Hervorhebung auf der Bestandsübersicht unterschiedlich sein",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "Bedeutet, dass das Produkt nach dem Fälligkeitsdatum möglicherweise immer noch verzehrt werden kann",
+ "Expiration date": "Verbrauchsdatum",
+ "Means that the product is not safe to be consumed after its due date is reached": "Bedeutet, dass das Produkt nach dem Fälligkeitsdatum nicht mehr verzehrt werden kann",
+ "For purchases this amount of days will be added to today for the due date suggestion": "Bei Einkäufen wird hierauf basierend das Fälligkeitsdatum vorausgefüllt",
+ "-1 means that this product will be never overdue": "-1 bedeutet, dass dieses Produkt niemals überfällig ist",
+ "Default due days": "Standard-Fälligkeitstage",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "Wenn dieses Produkt als geöffnet markiert wurde, wird das Fälligkeitsdatum durch heute + diese Anzahl von Tagen ersetzt (ein Wert von 0 deaktiviert dies) ",
+ "Default due days after opened": "Standard-Fälligkeitstage nach dem Öffnen",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "Wenn dieses Produkt zu einem Gefrier-Standort umgelagert (sprich eingefroren) wird, wird das Fälligkeitsdatum durch heute + diese Anzahl von Tagen ersetzt",
+ "Default due days after freezing": "Standard-Fälligkeitstage nach dem Einfrieren",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "Wenn dieses Produkt von einem Gefrier-Standort umgelagert (sprich aufgetaut) wird, wird das Fälligkeitsdatum durch heute + diese Anzahl von Tagen ersetzt",
+ "Default due days after thawing": "Standard-Fälligkeitstage nach dem Auftauen",
+ "Next due date": "Nächstes Fälligkeitsdatum",
+ "{count} product is due | {count} products are due": "{count} Produkte ist fällig | {count} Produkte sind fällig",
+ "Due date": "Fälligkeitsdatum",
+ "Never overdue": "Nie überfällig",
+ "{count} product is expired | {count} products are expired": "{count} Produkt ist abgelaufen | {count} Produkte sind abgelaufen",
+ "Expired": "Abgelaufen",
+ "Due soon days": "\"Bald fällig\" Tage",
+ "Add overdue/expired products": "Überfällige/Abgelaufene Produkte hinzufügen",
+ "Products with tare weight enabled are currently not supported for transfer": "Produkte mit aktivierter Taragewichtbehandlung können aktuell nicht umgelagert werden",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "Dies darf nicht niedriger als {string1} oder gleich {string2} sein und muss eine gültige Zahl mit max. {string3} Nachkommastellen sein",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "Dies muss zwischen {string1} und {string2} liegen, kann nicht gleich {string3} sein und muss eine gültige Zahl mit max. {string4} Nachkommastellen sein",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "Dies darf nicht niedriger als {string1} sein und muss eine gültige Zahl mit max. {string2} Nachkommastellen sein",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "Dies muss zwischen {string1} und {string2} liegen und muss eine gültige Zahl mit max. {string3} Nachkommastellen sein",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "Buchung automatisch ausführen, wenn das Produkt \"Standard-Fälligkeitstage\" hinterlegt hat (als Preis wird der letzte Preis verwendet)",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "Beim Umlagen von Produkten von/zu einem Gefrier-Standort wird das Fälligkeitsdatum der Produkte automatisch entsprechend den Produkteinstellungen angepasst",
+ "This is the internal field name, e. g. for the API": "Dies ist der interne Feldname, z. B. für die API",
+ "This is used to display the field on the frontend": "Dies wird verwendet wenn das Feld auf der Oberfläche angezeigt wird",
+ "Multiple Userfields will be ordered by that number on the input form": "Mehrere Benutzerfelder werden nach dieser Nummer auf dem Eingabeformular sortiert",
+ "Sort number": "Sortiernummer",
+ "Download file": "Datei herunterladen",
+ "Use the products \"Quick consume amount\"": "Die Schnell-Verbrauchs-Menge des Produkts verwenden",
+ "Disabled": "Deaktiviert",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "Dadruch wird auch der Bestand, das Journal und alle anderen Referenzen dieses Produkts entfernt - ziehe stattdessen in Betracht, dieses Produkt zu deaktivieren, wenn du dies behalten und nur das Produkt ausblenden willst.",
+ "Show disabled": "Deaktivierte anzeigen",
+ "Never show on stock overview": "Nie auf der Bestand-Seite anzeigen",
+ "None": "Keine",
+ "Group by": "Gruppieren nach",
+ "Ingredient group": "Zutatengruppe",
+ "Reset": "Zurücksetzen",
+ "Are you sure to reset the table options?": "Tabellenoptionen wirklich zurücksetzen?",
+ "Hide/view columns": "Spalten anzeigen/ausblenden",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "Eine andere Menge/Einheit kann dann unten verwendet werden, wobei es für die Bestandsprüfung ausreichend ist, wenn eine beliebige Menge des Produkts verfügbar ist",
+ "Last price (Unit)": "Letzter Preis (Einheit)",
+ "Last price (Total)": "Letzter Preis (Gesamt)",
+ "Show header": "Kopfzeile anzeigen",
+ "Group by product group": "Nach Produktgruppe gruppieren",
+ "Table": "Tabelle",
+ "Layout type": "Layout",
+ "Merge this product with another one": "Dieses Produkt mit einem anderen zusammenführen",
+ "Merge products": "Produkte zusammenführen",
+ "Product to keep": "Produkt, das behalten werden soll",
+ "Product to remove": "Produkt, das entfernt werden soll",
+ "Error while merging products": "Fehler beim Zusammenführen der Produkte",
+ "After merging, this product will be kept": "Nach der Zusammenführung wird dieses Produkt erhalten bleiben",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "Nach dem Zusammenführen werden alle Referenzen auf dieses Produkt durch das zu behaltende Produkt ersetzt (d. h. dieses Produkt existiert dann nicht mehr)",
+ "Merge": "Zusammenführen",
+ "Title": "Titel",
+ "Link": "Link",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "Die Bestand-Seite listet alle Produkte auf, die derzeit im Bestand oder unter ihrem Mindestbestand sind - aktiviere dies, um dieses Produkt dort nie anzuzeigen",
+ "Print options": "Druckoptionen",
+ "A product or a note is required": "Ein Produkt oder eine Notiz ist erforderlich",
+ "no-assignment": "Niemandem zuweisen",
+ "who-least-did-first": "Wer es am seltensten gemacht hat zuerst",
+ "random": "Zufällig",
+ "in-alphabetical-order": "In alphabetischer Reihenfolge",
+ "timeago_locale": "de",
+ "timeago_nan": "vor NaN Jahren",
+ "moment_locale": "de",
+ "datatables_localization": "{\"sEmptyTable\":\"Keine Daten in der Tabelle vorhanden\",\"sInfo\":\"_START_ bis _END_ von _TOTAL_ Einträgen\",\"sInfoEmpty\":\"Keine Daten vorhanden\",\"sInfoFiltered\":\"(gefiltert von _MAX_ Einträgen)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\".\",\"sLengthMenu\":\"_MENU_ Einträge anzeigen\",\"sLoadingRecords\":\"Wird geladen ..\",\"sProcessing\":\"Bitte warten ..\",\"sSearch\":\"Suchen\",\"sZeroRecords\":\"Keine Einträge vorhanden\",\"oPaginate\":{\"sFirst\":\"Erste\",\"sPrevious\":\"Zurück\",\"sNext\":\"Nächste\",\"sLast\":\"Letzte\"},\"oAria\":{\"sSortAscending\":\": aktivieren, um Spalte aufsteigend zu sortieren\",\"sSortDescending\":\": aktivieren, um Spalte absteigend zu sortieren\"},\"select\":{\"rows\":{\"0\":\"Zum Auswählen auf eine Zeile klicken\",\"1\":\"1 Zeile ausgewählt\",\"_\":\"{string0} Zeilen ausgewählt\"}},\"buttons\":{\"print\":\"Drucken\",\"colvis\":\"Spalten\",\"copy\":\"Kopieren\",\"copyTitle\":\"In Zwischenablage kopieren\",\"copyKeys\":\"Taste ctrl oder ⌘ + C um Tabelle in Zwischenspeicher zu kopieren. Um abzubrechen die Nachricht anklicken oder Escape drücken.\",\"copySuccess\":{\"1\":\"1 Spalte kopiert\",\"_\":\"{string0} Spalten kopiert\"}}}",
+ "summernote_locale": "de-DE",
+ "fullcalendar_locale": "de",
+ "bootstrap-select_locale": "de_DE",
+ "purchase": "Einkauf",
+ "transfer_from": "Umlagerung von",
+ "transfer_to": "Umlagerung nach",
+ "consume": "Verbrauch",
+ "inventory-correction": "Inventur-Korrektur",
+ "product-opened": "Produkt geöffnet",
+ "stock-edit-old": "Bestandseintrag bearbeitet (alte Werte)",
+ "stock-edit-new": "Bestandseintrag bearbeitet (neue Werte)",
+ "self-production": "Eigenproduktion",
+ "manually": "Manuell",
+ "dynamic-regular": "Dynamisch regelmäßig",
+ "daily": "Täglich",
+ "weekly": "Wöchentlich",
+ "monthly": "Monatlich",
+ "yearly": "Jährlich",
+ "text-single-line": "Text (einzeilig)",
+ "text-multi-line": "Text (mehrzeilig)",
+ "number-integral": "Zahl (Ganzzahl)",
+ "number-decimal": "Zahl (mit Dezimalstellen)",
+ "date": "Datum (ohne Zeitanteil)",
+ "datetime": "Datum & Zeit",
+ "checkbox": "Kontrollkästchen",
+ "preset-list": "Auswahlliste (feste Werte, einzelner Wert kann ausgewählt werden)",
+ "preset-checklist": "Auswahlliste (feste Werte, mehrere Werte können ausgewählt werden)",
+ "link": "Link",
+ "link-with-title": "Link (mit Titel)",
+ "file": "Datei",
+ "image": "Bild",
+ "ADMIN": "Alle Berechtigungen",
+ "USERS_CREATE": "Benutzer erstellen",
+ "USERS_EDIT": "Benutzer bearbeiten (inklusive Passwörter)",
+ "USERS_READ": "Benutzer anzeigen",
+ "USERS_EDIT_SELF": "Eigene Benutzerdaten bearbeiten / eigenes Passwort ändern",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "Ladezyklus rückgängig machen",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "Ladezyklus erfassen",
+ "CHORE_TRACK_EXECUTION": "Ausführung erfassen",
+ "CHORE_UNDO_EXECUTION": "Ausführung rückgängig machen",
+ "MASTER_DATA_EDIT": "Stammdaten bearbeiten",
+ "TASKS_UNDO_EXECUTION": "Ausführung rückgängig machen",
+ "TASKS_MARK_COMPLETED": "Als erledigt markieren",
+ "STOCK_EDIT": "Bestandseinträge bearbeiten",
+ "STOCK_TRANSFER": "Umlagern",
+ "STOCK_INVENTORY": "Inventur",
+ "STOCK_CONSUME": "Verbrauch",
+ "STOCK_OPEN": "Produkt als geöffnet markieren",
+ "STOCK_PURCHASE": "Einkauf",
+ "SHOPPINGLIST_ITEMS_ADD": "Eintrag hinzufügen",
+ "SHOPPINGLIST_ITEMS_DELETE": "Eintrag entfernen",
+ "USERS": "Benutzerverwaltung",
+ "STOCK": "Bestand",
+ "SHOPPINGLIST": "Einkaufszettel",
+ "CHORES": "Hausarbeiten",
+ "BATTERIES": "Batterien",
+ "TASKS": "Aufgaben",
+ "RECIPES": "Rezepte",
+ "EQUIPMENT": "Ausstattung",
+ "CALENDAR": "Kalender",
+ "RECIPES_MEALPLAN": "Speiseplan",
+ "cs": "Tschechisch",
+ "da": "Dänisch",
+ "de": "de",
+ "el_GR": "Griechisch",
+ "en": "de",
+ "en_GB": "Englisch (Großbritannien)",
+ "es": "Spanisch",
+ "fr": "Französisch",
+ "hu": "Ungarisch ",
+ "it": "Italienisch",
+ "ja": "Japanisch",
+ "ko_KR": "Koreanisch",
+ "nl": "Niederländisch",
+ "no": "Norwegisch",
+ "pl": "Polnisch",
+ "pt_BR": "Portugiesisch (Brasilien)",
+ "pt_PT": "Portugiesisch (Portugal)",
+ "ru": "Russisch",
+ "sk_SK": "Slowakisch",
+ "sv_SE": "Schwedisch",
+ "tr": "Türkisch",
+ "zh_TW": "Chinesisch (Taiwan)",
+ "zh_CN": "Chinesisch (China)",
+ "he_IL": "Hebräisch (Israel)",
+ "ta": "Tamil",
+ "fi": "Finnisch",
+ "Cookies": "Cookies",
+ "Chocolate": "Schokolade",
+ "Pantry": "Vorratskammer",
+ "Candy cupboard": "Süßigkeitenschrank",
+ "Tinned food cupboard": "Konservenschrank",
+ "Fridge": "Kühlschrank",
+ "Piece | Pieces": "Stück | Stücke",
+ "Pack | Packs": "Packung | Packungen",
+ "Glass | Glasses": "Glas | Gläser",
+ "Tin | Tins": "Dose | Dosen",
+ "Can | Cans": "Becher | Becher",
+ "Bunch | Bunches": "Bund | Bunde",
+ "Gummy bears": "Gummibärchen",
+ "Crisps": "Chips",
+ "Eggs": "Eier",
+ "Noodles": "Nudeln",
+ "Pickles": "Essiggurken",
+ "Gulash soup": "Gulaschsuppe",
+ "Yogurt": "Joghurt",
+ "Cheese": "Käse",
+ "Cold cuts": "Aufschnitt",
+ "Paprika": "Paprika",
+ "Cucumber": "Gurke",
+ "Radish": "Radieschen",
+ "Tomato": "Tomaten",
+ "Changed towels in the bathroom": "Handtücher im Bad gewechselt",
+ "Cleaned the kitchen floor": "Küchenboden gewischt",
+ "Warranty ends": "Garantie endet",
+ "TV remote control": "TV Fernbedienung",
+ "Alarm clock": "Wecker",
+ "Heat remote control": "Fernbedienung Heizung",
+ "Lawn mowed in the garden": "Rasen im Garten gemäht",
+ "Some good snacks": "Paar gute Snacks",
+ "Pizza dough": "Pizzateig",
+ "Sieved tomatoes": "Passierte Tomaten",
+ "Salami": "Salami",
+ "Toast": "Toast",
+ "Minced meat": "Hackfleisch",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti Bolognese",
+ "Sandwiches": "Belegte Toasts",
+ "English": "Englisch",
+ "German": "Deutsch",
+ "Italian": "Italienisch",
+ "This is the note content of the recipe ingredient": "Dies ist der Inhalt der Notiz der Zutat",
+ "Demo User": "Demo Benutzer",
+ "Gram | Grams": "Gramm | Gramm",
+ "Flour": "Mehl",
+ "Pancakes": "Pfannkuchen",
+ "Sugar": "Zucker",
+ "Home": "Zuhause",
+ "Life": "Leben",
+ "Projects": "Projekte",
+ "Repair the garage door": "Garagentor reparieren",
+ "Fork and improve grocy": "grocy forken und verbessern",
+ "Find a solution for what to do when I forget the door keys": "Eine Lösung für \"Haustürschlüssel vergessen\" finden",
+ "Sweets": "Süßigkeiten",
+ "Bakery products": "Bäckerei Produkte",
+ "Tinned food": "Konservern",
+ "Butchery products": "Metzgerei",
+ "Vegetables/Fruits": "Obst/Gemüse",
+ "Refrigerated products": "Kühlregal",
+ "Coffee machine": "Kaffeemaschine",
+ "Dishwasher": "Spülmaschine",
+ "Liter": "Liter",
+ "Liters": "Liter",
+ "Bottle": "Flasche",
+ "Bottles": "Flaschen",
+ "Milk": "Milch",
+ "Chocolate sauce": "Schokoladensoße",
+ "Milliliters": "Milliliter",
+ "Milliliter": "Milliliter",
+ "Bottom": "Boden",
+ "Topping": "Belag",
+ "French": "Französisch",
+ "Turkish": "Türkisch",
+ "Spanish": "Spanisch",
+ "Russian": "Russisch",
+ "The thing which happens on the 5th of every month": "Das, was am 5. jedes Monats zu tun ist",
+ "The thing which happens daily": "Das, was täglich zu tun ist",
+ "The thing which happens on Mondays and Wednesdays": "Das, was Montags und Mittwochs zu tun ist",
+ "Swedish": "Schwedisch",
+ "Polish": "Polnisch",
+ "Milk Chocolate": "Milchschokolade",
+ "Dark Chocolate": "Zartbitterschokolade",
+ "Slice | Slices": "Scheibe | Scheiben",
+ "Example userentity": "Beispiel Benutzerentität",
+ "This is an example user entity...": "Dies ist eine Beispiel-Benutzerentität",
+ "Custom field": "Benutzerdefiniertes Feld",
+ "Example field value...": "Beispiel Feldwert...",
+ "Waffle rolls": "Waffelröllchen",
+ "Danish": "Dänisch",
+ "Dutch": "Niederländisch",
+ "Norwegian": "Norwegisch",
+ "Demo": "Demo",
+ "Stable version": "Stabile Version",
+ "Preview version": "Vorschauversion",
+ "current release": "aktuelles Release",
+ "not yet released": "noch nicht freigegeben",
+ "Portuguese (Brazil)": "Portugiesisch (Brasilien)",
+ "This is a note": "Dies ist eine Notiz",
+ "Freezer": "Gefrierschrank",
+ "Hungarian": "Ungarisch",
+ "Slovak": "Slowakisch",
+ "Czech": "Tschechisch",
+ "Portuguese (Portugal)": "Portugiesisch (Portugal)",
+ "DemoSupermarket1": "Aldi",
+ "DemoSupermarket2": "Rewe",
+ "Japanese": "Japanisch",
+ "Chinese (Taiwan)": "Chinesisch (Taiwan)",
+ "Greek": "Griechisch",
+ "Korean": "Koreanisch",
+ "Chinese (China)": "Chinesisch (China)",
+ "Hebrew (Israel)": "Hebräisch (Israel)",
+ "Tamil": "Tamil",
+ "Finnish": "Finnisch",
+ "Automatically reload data": "Automatisch aktualisieren",
+ "Night mode": "Nachtmodus",
+ "Auto": "Auto",
+ "Automatic night mode range": "Zeitraum für automatischen Nachtmodus",
+ "Invert": "Umkehren",
+ "This activates night mode between {start} and {end} the next day.": "Der Nachtmodus ist zwischen {start} und {end} am nächsten Tag aktiv.",
+ "This activates night mode between {start} and {end} the same day.": "Der Nachtmodus ist zwischen {start} und {end} am selben Tag aktiv.",
+ "Keep screen on while displaying fullscreen content": "Bildschirm nicht abschalten, solange Vollbild-Inhalte angezeigt werden",
+ "many awesome people.": "vielen großartigen Menschen gebaut.",
+ "{project_link} made with ❤️ and ☕ by {contributors}": "{project_link} wird mit ❤️ and ☕ von {contributors}",
+ "numberFormats": {
+ "currency": {
+ "style": "currency",
+ "notation": "standard",
+ "decimalSepSymbol": ","
+ },
+ "decimal": {
+ "style": "decimal",
+ "minimumFractionDigits": 2,
+ "maximumFractionDigits": 2,
+ "decimalSepSymbol": ","
+ },
+ "avoid-decimal": {
+ "style": "decimal",
+ "minimumFractionDigits": 0,
+ "maximumFractionDigits": 2,
+ "decimalSepSymbol": ","
+ },
+ "percent": {
+ "style": "percent",
+ "useGrouping": false,
+ "decimalSepSymbol": ","
+ }
+ },
+ "Starts With": "Beginnt mit",
+ "Ends With": "Endet mit",
+ "Equals": "Gleich",
+ "Not Equals": "Ungleich",
+ "Contains": "Enthält",
+ "Not Contains": "Enthält nicht",
+ "Less Than": "Weniger als",
+ "Less Than Or Equal": "Weniger als oder gleich",
+ "Greater Than Or Equal": "Größer als oder gleich",
+ "Greater Than": "Größer als",
+ "Before": "Vor",
+ "Before Or On": "Vor oder an",
+ "On Day": "An Tag",
+ "Not On Day": "Nicht an Tag",
+ "After Or On": "Nach oder an",
+ "After": "Nach",
+ "primevue": {
+ "startsWith": "Beginnt mit",
+ "contains": "Enthält",
+ "notContains": "Enthält nicht",
+ "endsWith": "Endet mit",
+ "equals": "Gleich",
+ "notEquals": "Ungleich",
+ "noFilter": "Kein Filter",
+ "lt": "Weniger als",
+ "lte": "Weniger als oder gleich",
+ "gt": "Größer als",
+ "gte": "Größer als oder gleich",
+ "dateIs": "Datum ist",
+ "dateIsNot": "Datum ist nicht",
+ "dateBefore": "Datum ist vor",
+ "dateAfter": "Datum ist nach",
+ "clear": "Leeren",
+ "apply": "Anwenden",
+ "matchAll": "Bedinge alle",
+ "matchAny": "Bedinge eines",
+ "addRule": "Regel hinzufügen",
+ "removeRule": "Regel löschen",
+ "accept": "Ja",
+ "reject": "Nein",
+ "choose": "Wähle",
+ "upload": "Hochladen",
+ "cancel": "Abbrechen",
+ "dayNames": [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag"
+ ],
+ "dayNamesShort": [
+ "So",
+ "Mo",
+ "Di",
+ "Mi",
+ "Do",
+ "Fr",
+ "Sa"
+ ],
+ "dayNamesMin": [
+ "So",
+ "Mo",
+ "Di",
+ "Mi",
+ "Do",
+ "Fr",
+ "Sa"
+ ],
+ "monthNames": [
+ "Jänner",
+ "Februar",
+ "März",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember"
+ ],
+ "monthNamesShort": [
+ "Jän",
+ "Feb",
+ "Mär",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez"
+ ],
+ "today": "Heute",
+ "weekHeader": "KW",
+ "firstDayOfWeek": 1,
+ "dateFormat": "yy-mm-dd",
+ "weak": "Schwach",
+ "medium": "Mittel",
+ "strong": "Stark",
+ "passwordPrompt": "Passwort eingeben",
+ "emptyFilterMessage": "Nichts gefunden",
+ "emptyMessage": "Keine Optionen verfügbar"
+ }
+}
\ No newline at end of file
diff --git a/locale/el_GR.json b/locale/el_GR.json
new file mode 100644
index 00000000..5464b664
--- /dev/null
+++ b/locale/el_GR.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Επισκόπηση αποθεμάτων",
+ "{count} product expires | {count} products expiring": "{count} προϊόν λήγει | {count} προϊόντα λήγουν",
+ "within the next day | within the next {count} days": "μέσα στην επόμενη ημέρα | μέσα στις επόμενες {count} ημέρες",
+ "{count} product is already expired | {count} products are already expired": "{count} προϊόν έχει ήδη λήξει | {count} προϊόντα έχουν ήδη λήξει",
+ "{count} product is overdue | {count} products are overdue": " | ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} προϊόν είναι κάτω από το ορισμένο ελάχιστο απόθεμα | {count} προϊόντα είναι κάτω από το ορισμένο ελάχιστο απόθεμα",
+ "Product": "Προϊόν",
+ "{count} Product | {count} Products": "{count} Προϊόν | {count} Προϊόντα",
+ "Amount": "Ποσό",
+ "Logout": "Αποσύνδεση",
+ "Chores overview": "Επισκόπηση μικροδουλειών",
+ "Batteries overview": "Επισκόπηση μπαταριών",
+ "Purchase": "Αγορά",
+ "Consume": "Καταναλώνω",
+ "Inventory": "Καταγραφή εμπορευμάτων",
+ "Shopping list": "Λίστα με τα ψώνια",
+ "Chore tracking": "Παρακολούθηση μικροδουλειών",
+ "Battery tracking": "Παρακολούθηση μπαταρίας",
+ "Locations": "Τοποθεσίες",
+ "Stores": "Προμήθεια",
+ "Quantity units": "Μονάδες ποσότητας",
+ "Chores": "Μικροδουλειές",
+ "Batteries": "Μπαταρίες",
+ "Chore": "Αγγαρεία",
+ "Next estimated tracking": "Επόμενη εκτιμώμενη παρακολούθηση",
+ "Last tracked": "Τελευταία παρακολούθηση",
+ "Battery": "Μπαταρία",
+ "Last charged": "Τελευταία χρέωση",
+ "Next planned charge cycle": "Επόμενος προγραμματισμένος κύκλος φόρτισης",
+ "Best before": "Ανάλωση κατά προτίμηση πριν",
+ "OK": "Εντάξει",
+ "Product overview": "Επισκόπηση προϊόντος",
+ "Stock quantity unit": "Μονάδα ποσότητας αποθεμάτων",
+ "Stock amount": "Ποσό αποθέματος",
+ "Last purchased": "Τελευταία αγορά",
+ "Last used": "Τελευταία χρήση",
+ "Spoiled": "Κακομαθημένος",
+ "Barcode lookup is disabled": "Η αναζήτηση γραμμωτού κώδικα είναι απενεργοποιημένη",
+ "will be added to the list of barcodes for the selected product on submit": "Επισκόπηση αποθεμάτωνθα προστεθεί στη λίστα των γραμμικών κωδικών για το επιλεγμένο προϊόν κατά την υποβολή",
+ "New amount": "Νέο ποσό",
+ "Note": "Σημείωση",
+ "Tracked time": "Παρακολούθηση χρόνου",
+ "Chore overview": "Επισκόπηση μικροδουλειάς",
+ "Tracked count": "Παρακολούθηση",
+ "Battery overview": "Επισκόπηση μπαταρίας",
+ "Charge cycles count": "Πλήθος κύκλων φόρτισης",
+ "Create shopping list item": "Δημιουργία στοιχείου λίστας αγορών",
+ "Edit shopping list item": "Επεξεργασία στοιχείου λίστας αγορών",
+ "Save": "Αποθηκεύσετε",
+ "Add": "Προσθήκη",
+ "Name": "Ονομα",
+ "Location": "Τοποθεσία",
+ "Min. stock amount": "Ελάχ. ποσό αποθέματος",
+ "Description": "Περιγραφή",
+ "Create product": "Δημιουργία προϊόντος",
+ "Barcode(s)": "Γραμμικός κώδικας",
+ "Minimum stock amount": "Ελάχιστο ποσό αποθέματος",
+ "Default best before days": "Προεπιλογή καλύτερη πριν από ημέρες",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "Απόθεμα μονάδας ποσότητας",
+ "Factor purchase to stock quantity unit": "Αγορά παράγοντα σε μονάδα ποσότητας αποθεμάτων",
+ "Create location": "Δημιουργία τοποθεσίας",
+ "Create store": "Δημιουργία καταστήματος",
+ "Create quantity unit": "Δημιουργία μονάδας ποσότητας",
+ "Period type": "Τύπος περιόδου",
+ "Period days": "Περίοδος ημερών",
+ "Create chore": "Δημιουργήστε μικροδουλειές",
+ "Used in": "Χρησιμοποιείται σε",
+ "Create battery": "Δημιουργήστε μπαταρία",
+ "Edit battery": "Επεξεργασία μπαταρίας",
+ "Edit chore": "Επεξεργασία μικροδουλειάς",
+ "Edit quantity unit": "Επεξεργασία μονάδας ποσότητας",
+ "Edit product": "Επεξεργασία προϊόντος",
+ "Edit location": "Επεξεργασία τοποθεσίας",
+ "Edit store": "Επεξεργασία καταστήματος",
+ "Record data": "Εγγραφή δεδομένων",
+ "Manage master data": "Διαχείριση βασικών δεδομένων",
+ "This will apply to added products": "Αυτό θα ισχύει για προστιθέμενα προϊόντα",
+ "never": "ποτέ",
+ "Add products that are below defined min. stock amount": "Το προϊόν% s λήγειΠροσθέστε προϊόντα που είναι κάτω από τα καθορισμένα ελάχιστα. ποσό αποθέματος",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Το προϊόν% s έχει ήδη λήξειΑυτό σημαίνει ότι 1% 1 $ s που αγοράζεται θα μετατραπεί σε% 2 $ s% 3 $ s σε απόθεμα",
+ "Login": "Σύνδεση",
+ "Username": "Όνομα χρήστη",
+ "Password": "Κωδικός πρόσβασης",
+ "Invalid credentials, please try again": "Μη έγκυρα διαπιστευτήρια, δοκιμάστε ξανά",
+ "Are you sure to delete battery \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε την μπαταρία \"% s\";",
+ "Yes": "Ναί",
+ "No": "Οχι",
+ "Are you sure to delete chore \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε τη δουλειά \"% s\";",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "Το προϊόν% s είναι κάτω από το καθορισμένο ελάχιστο. ποσό αποθέματοςΔεν ήταν δυνατή η επίλυση του \"% s\" σε ένα προϊόν, πώς θέλετε να προχωρήσετε;",
+ "Create or assign product": "Δημιουργία ή εκχώρηση προϊόντος",
+ "Cancel": "Ματαίωση",
+ "Add as new product": "Προσθήκη ως νέο προϊόν",
+ "Add as barcode to existing product": "Προσθέστε ως γραμμωτό κώδικα στο υπάρχον προϊόν",
+ "Add as new product and prefill barcode": "Προσθέστε ως νέο προϊόν και γραμμωτού κώδικα προσυμπλήρωσης",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε τη μονάδα ποσότητας \"% s\";",
+ "Are you sure to delete product \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε το προϊόν \"% s\";",
+ "Are you sure to delete location \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε την τοποθεσία \"% s\";",
+ "Are you sure to delete store \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε το κατάστημα \"% s\";",
+ "Manage API keys": "Διαχείριση κλειδιών API",
+ "REST API & data model documentation": "REST API & τεκμηρίωση μοντέλου δεδομένων",
+ "API keys": "Κλειδιά API",
+ "Create new API key": "Δημιουργία νέου κλειδιού API",
+ "API key": "Κλειδί API",
+ "Expires": "Λήγει",
+ "Created": "Δημιουργήθηκε",
+ "This product is not in stock": "Αυτό το προϊόν δεν είναι διαθέσιμο",
+ "This means {string0} will be added to stock": "Αυτό σημαίνει ότι το% s θα προστεθεί στο απόθεμα",
+ "This means {string0} will be removed from stock": "Αυτό σημαίνει ότι το% s θα αφαιρεθεί από το απόθεμα",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "ΠροϊόνΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς έχει προγραμματιστεί% s ημέρες μετά την τελευταία εκτέλεση",
+ "Removed {string1} of {string2} from stock": "Καταργήθηκε% 1 $ s από% 2 $ s από το απόθεμα",
+ "About grocy": "Σχετικά με το grocy",
+ "Close": "Κλείσε",
+ "Released on": "Κυκλοφόρησε στις",
+ "Added {string1} of {string2} to stock": "Προστέθηκε% 1 $ s από% 2 $ s στο απόθεμα",
+ "Stock amount of {string1} is now {string2}": "Το χρηματικό ποσό των% 1 $ s είναι τώρα% 2 $ s",
+ "Tracked execution of chore {string1} on {string2}": "Παρακολούθηση εκτέλεσης της δουλειάς% 1 $ s στο% 2 $ s",
+ "Tracked charge cycle of battery {string1} on {string2}": "Παρακολούθηση κύκλου φόρτισης μπαταρίας% 1 $ s στο% 2 $ s",
+ "Consume all {string0} which are currently in stock": "Καταναλώστε όλα τα% s που βρίσκονται σε απόθεμα",
+ "All": "Ολα",
+ "Search": "Αναζήτηση",
+ "Not logged in": "Δεν έχετε συνδεθεί",
+ "You have to select a product": "Πρέπει να επιλέξετε ένα προϊόν",
+ "You have to select a chore": "Πρέπει να επιλέξετε μια δουλειά",
+ "You have to select a battery": "Πρέπει να επιλέξετε μια μπαταρία",
+ "A name is required": "Απαιτείται όνομα",
+ "A location is required": "Απαιτείται τοποθεσία",
+ "A quantity unit is required": "Απαιτείται μονάδα ποσότητας",
+ "A period type is required": "Απαιτείται τύπος περιόδου",
+ "A best before date is required": "Απαιτείται καλύτερη ημερομηνία πριν",
+ "Settings": "Ρυθμίσεις",
+ "This can only be before now": "Αυτό μπορεί να είναι μόνο πριν από τώρα",
+ "Calendar": "Ημερολόγιο",
+ "Recipes": "Συνταγές",
+ "Edit recipe": "Επεξεργασία συνταγής",
+ "Ingredients list": "Λίστα συστατικών",
+ "Add recipe ingredient": "Προσθέστε συστατικό συνταγής",
+ "Edit recipe ingredient": "Επεξεργασία συστατικού συνταγής",
+ "Are you sure to delete recipe \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε τη συνταγή \"% s\";",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε το συστατικό συνταγής \"% s\";",
+ "Are you sure to empty shopping list \"{string0}\"?": "Είστε βέβαιοι ότι αδειάζετε τη λίστα αγορών \"% s\";",
+ "Clear list": "Σαφή κατάλογο",
+ "Requirements fulfilled": "Οι απαιτήσεις πληρούνται",
+ "Put missing products on shopping list": "Βάλτε τα προϊόντα που λείπουν στη λίστα αγορών",
+ "Enough in stock": "Αρκετά σε απόθεμα",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Not enough in stock, {count} ingredient missing but already on the shopping list | Δεν υπάρχει αρκετό απόθεμα, λείπουν τα συστατικά του {count} αλλά ήδη βρίσκονται στη λίστα αγορών",
+ "Expand to fullscreen": "Ανάπτυξη σε πλήρη οθόνη",
+ "Ingredients": "Συστατικά",
+ "Preparation": "Παρασκευή",
+ "Recipe": "Συνταγή",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "% s ΠροϊόνΔεν υπάρχει αρκετό απόθεμα,% 1 $ s λείπει,% 2 $ s ήδη στη λίστα αγορών",
+ "Show notes": "Εμφάνιση σημειώσεων",
+ "Put missing amount on shopping list": "Τοποθετήστε το ποσό που λείπει στη λίστα αγορών",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "ΠοσόΕίστε βέβαιοι ότι θα βάλετε όλα τα συστατικά που λείπουν για τη συνταγή \"% s\" στη λίστα αγορών;",
+ "Added for recipe {string0}": "Προστέθηκε για τη συνταγή% s",
+ "Manage users": "Διαχείριση χρηστών",
+ "User": "Χρήστης",
+ "Users": "Χρήστες",
+ "Are you sure to delete user \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε τον χρήστη \"% s\";",
+ "Create user": "Δημιουργία χρήστη",
+ "Edit user": "Επεξεργασία χρήστη",
+ "First name": "Ονομα",
+ "Last name": "Επίθετο",
+ "A username is required": "Απαιτείται όνομα χρήστη",
+ "Confirm password": "Επιβεβαίωση Κωδικού",
+ "Passwords do not match": "Οι κωδικοί πρόσβασης δεν ταιριάζουν",
+ "Change password": "Αλλαξε κωδικό",
+ "Done by": "Γίνεται από",
+ "Last done by": "Τελευταία από",
+ "Unknown": "Αγνωστος",
+ "Chores journal": "Περιοδικό Chores",
+ "0 means suggestions for the next charge cycle are disabled": "Επόμενο καλύτερο πριν από την ημερομηνία0 σημαίνει ότι οι προτάσεις για τον επόμενο κύκλο φόρτισης είναι απενεργοποιημένες",
+ "Charge cycle interval (days)": "Διάστημα κύκλου φόρτισης (ημέρες)",
+ "Last price": "Τελική τιμή",
+ "Price history": "Ιστορικό τιμών",
+ "No price history available": "Δεν υπάρχει διαθέσιμο ιστορικό τιμών",
+ "Price": "Τιμή",
+ "Unit": "Μονάδα",
+ "{count} Unit | {count} Units": "{count}Μονάδα | {count}Μονάδες",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} δουλειά πρόκειται να γίνει | {count} δουλειές πρόκειται να γίνουν",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} δουλειά έχει καθυστερήσει να γίνει | {count} δουλειές έχουν καθυστερήσει να γίνουν",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} μπαταρία πρέπει να φορτιστεί | {count} μπαταρίες πρέπει να φορτιστούν",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} μπαταρία έχει καθυστερήσει να φορτιστεί | {count} μπαταρίες έχουν καθυστερήσει να φορτιστούν",
+ "in singular form": "σε μοναδική μορφή",
+ "Quantity unit": "Μονάδα ποσότητας",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Καταργήθηκαν όλα τα συστατικά της συνταγής \"% s\" από το απόθεμα",
+ "Consume all ingredients needed by this recipe": "Καταναλώστε όλα τα συστατικά που απαιτούνται από αυτήν τη συνταγή",
+ "Click to show technical details": "Κάντε κλικ για να εμφανίσετε τεχνικές λεπτομέρειες",
+ "Error while saving, probably this item already exists": "Σφάλμα κατά την αποθήκευση, πιθανώς αυτό το στοιχείο υπάρχει ήδη",
+ "Error details": "Λεπτομέρειες σφάλματος",
+ "Tasks": "Καθήκοντα",
+ "Show done tasks": "Εμφάνιση ολοκληρωμένων εργασιών",
+ "Task": "Εργο",
+ "Due": "Λόγω",
+ "Assigned to": "Ανατεθεί",
+ "Mark task \"{string0}\" as completed": "Επισημάνετε την εργασία \"% s\" ως ολοκληρωμένη",
+ "Uncategorized": "Χωρίς κατηγορία",
+ "Task categories": "Κατηγορίες εργασιών",
+ "Create task": "Δημιουργήστε εργασία",
+ "A due date is required": "Απαιτείται προθεσμία",
+ "Category": "Κατηγορία",
+ "Edit task": "Επεξεργασία εργασίας",
+ "Are you sure to delete task \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε την εργασία \"% s\";",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} εργασία πρέπει να γίνει | {count} εργασίες πρέπει να γίνουν",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} καθήκον που πρέπει να γίνει | {count} καθήκοντα έχουν καθυστερήσει να γίνουν",
+ "Edit task category": "Επεξεργασία κατηγορίας εργασιών",
+ "Create task category": "Δημιουργία κατηγορίας εργασιών",
+ "Product groups": "Ομάδες προϊόντων",
+ "Ungrouped": "Χωρίς ομάδα",
+ "Create product group": "Δημιουργία ομάδας προϊόντων",
+ "Edit product group": "Επεξεργασία ομάδας προϊόντων",
+ "Product group": "Ομάδα προϊόντων",
+ "Are you sure to delete product group \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε την ομάδα προϊόντων \"% s\";",
+ "Stay logged in permanently": "Μείνετε μόνιμα συνδεδεμένοι",
+ "When not set, you will get logged out at latest after 30 days": "Όταν δεν ρυθμιστεί, θα αποσυνδεθείτε το αργότερο μετά από 30 ημέρες",
+ "Status": "Κατάσταση",
+ "Below min. stock amount": "Κάτω από ελάχ. ποσό αποθέματος",
+ "Expiring soon": "Λήγει σύντομα",
+ "Already expired": "Έχει ήδη λήξει",
+ "Due soon": "Λήγει σύντομα",
+ "Overdue": "Εκπρόθεσμος",
+ "View settings": "Προβολή ρυθμίσεων",
+ "Auto reload on external changes": "Αυτόματη φόρτωση σε εξωτερικές αλλαγές",
+ "Enable night mode": "Ενεργοποίηση νυχτερινής λειτουργίας",
+ "Auto enable in time range": "Αυτόματη ενεργοποίηση στο χρονικό εύρος",
+ "From": "Από",
+ "in format": "σε μορφή",
+ "To": "Το",
+ "Time range goes over midnight": "Το χρονικό εύρος ξεπερνά τα μεσάνυχτα",
+ "Product picture": "Εικόνα προϊόντος",
+ "No file selected": "Κανένα επιλεγμένο αρχείο",
+ "Delete": "Διαγράφω",
+ "Select file": "Επιλέξτε αρχείο",
+ "Image of product {string0}": "Εικόνα του προϊόντος% s",
+ "Deletion not possible": "",
+ "Equipment": "Εξοπλισμός",
+ "Instruction manual": "Εγχειρίδιο οδηγιών",
+ "The selected equipment has no instruction manual": "Ο επιλεγμένος εξοπλισμός δεν έχει εγχειρίδιο οδηγιών",
+ "Notes": "Σημειώσεις",
+ "Edit equipment": "Επεξεργασία εξοπλισμού",
+ "Create equipment": "Δημιουργήστε εξοπλισμό",
+ "The current file will be deleted on save": "",
+ "No picture available": "Δεν υπάρχει διαθέσιμη εικόνα",
+ "Presets for new products": "Προεπιλογές για νέα προϊόντα",
+ "Included recipes": "Συμπεριλαμβάνονται συνταγές",
+ "A recipe is required": "Απαιτείται συνταγή",
+ "Add included recipe": "Προσθέστε συμπεριλαμβανόμενη συνταγή",
+ "Edit included recipe": "Επεξεργασία συμπεριλαμβανόμενης συνταγής",
+ "Group": "Ομάδα",
+ "This will be used as a headline to group ingredients together": "Αυτό θα χρησιμοποιηθεί ως τίτλος για την ομαδοποίηση συστατικών",
+ "Journal": "Εφημερίδα",
+ "Stock journal": "Περιοδικό αποθεμάτων",
+ "Undone on": "Αναίρεση στις",
+ "Batteries journal": "Περιοδικό μπαταριών",
+ "Undo charge cycle": "Αναίρεση κύκλου φόρτισης",
+ "Undo chore execution": "Αναίρεση εκτέλεσης μικροδουλειάς",
+ "Chore execution successfully undone": "Η εκτέλεση της δουλειάς αναιρέθηκε με επιτυχία",
+ "Undo": "Ξεκάνω",
+ "Booking successfully undone": "Η κράτηση ακυρώθηκε με επιτυχία",
+ "Charge cycle successfully undone": "Ο κύκλος φόρτισης αναιρέθηκε με επιτυχία",
+ "Disable stock fulfillment checking for this ingredient": "Λίστα με τα ψώνιαΑπενεργοποιήστε τον έλεγχο εκπλήρωσης αποθεμάτων για αυτό το συστατικό",
+ "Add all list items to stock": "Προσθήκη όλων των στοιχείων λίστας στο απόθεμα",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Προσθήκη στοιχείου λίστας αγορών% 1 $ s από% 2 $ s",
+ "Use a specific stock item": "Χρησιμοποιήστε ένα συγκεκριμένο είδος αποθέματος",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Επισήμανση% 1 $ s από% 2 $ s ως ανοιχτό",
+ "Marked {string1} of {string2} as opened": "Επισημάνθηκε% 1 $ s από% 2 $ s ως άνοιγμα",
+ "Mark as opened": "Επισήμανση ως άνοιξε",
+ "Not opened": "Δεν άνοιξε",
+ "Opened": "Άνοιξε",
+ "{string0} opened": "Το% s άνοιξε",
+ "Product due": "",
+ "Task due": "Η εργασία οφείλεται",
+ "Chore due": "Η δουλειά οφείλεται",
+ "Battery charge cycle due": "Ο κύκλος φόρτισης της μπαταρίας οφείλεται",
+ "Show clock in header": "Εμφάνιση ρολογιού στην κεφαλίδα",
+ "Stock settings": "Ρυθμίσεις αποθεμάτων",
+ "Shopping list to stock workflow": "Λίστα αγορών σε απόθεμα ροής εργασίας",
+ "Skip": "Παραλείπω",
+ "Servings": "Μερίδες",
+ "Costs": "Δικαστικά έξοδα",
+ "Based on the prices of the last purchase per product": "Με βάση τις τιμές της τελευταίας αγοράς ανά προϊόν",
+ "The ingredients listed here result in this amount of servings": "Τα συστατικά που αναφέρονται εδώ οδηγούν σε αυτό το ποσό μερίδων",
+ "Do not check against the shopping list when adding missing items to it": "ΠρομήθειαΜην ελέγχετε τη λίστα αγορών κατά την προσθήκη λείπουν αντικειμένων σε αυτήν",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Μονάδες ποσότηταςΑπό προεπιλογή, το ποσό που πρέπει να προστεθεί στη λίστα αγορών είναι \"απαιτούμενο ποσό - ποσό μετοχής - ποσό λίστας αγορών\" - όταν είναι ενεργοποιημένο, ελέγχεται μόνο με το ποσό της μετοχής και όχι με αυτό που υπάρχει ήδη στη λίστα αγορών",
+ "Picture": "Εικόνα",
+ "Uncheck ingredients to not put them on the shopping list": "ΜικροδουλειέςΚαταργήστε την επιλογή των συστατικών για να μην τα βάλετε στη λίστα αγορών",
+ "This is for statistical purposes only": "Αυτό είναι μόνο για στατιστικούς σκοπούς",
+ "You have to select a recipe": "Πρέπει να επιλέξετε μια συνταγή",
+ "Key type": "Τύπος κλειδιού",
+ "Share/Integrate calendar (iCal)": "Κοινή χρήση / ενοποίηση ημερολογίου (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "ΜπαταρίεςΧρησιμοποιήστε την ακόλουθη (δημόσια) διεύθυνση URL για κοινή χρήση ή ενοποίηση του ημερολογίου σε μορφή iCal",
+ "Allow partial units in stock": "Επιτρέψτε μερικές μονάδες σε απόθεμα",
+ "Enable tare weight handling": "Ενεργοποίηση χειρισμού απόβαρου βάρους",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "ΑγγαρείαΑυτό είναι χρήσιμο π.χ. για αλεύρι σε βάζα - κατά την αγορά / κατανάλωση / απόθεμα ζυγίζετε πάντα ολόκληρο το βάζο, το ποσό που θα δημοσιευτεί υπολογίζεται αυτόματα αυτόματα με βάση το απόθεμα και το απόβαρο που ορίζεται παρακάτω",
+ "Tare weight": "απόβαρο",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Επόμενη εκτιμώμενη παρακολούθησηΟ χειρισμός απόβαρου βάρους ενεργοποιήθηκε - ζυγίστε ολόκληρο το δοχείο, το ποσό που θα δημοσιευτεί θα υπολογιστεί αυτόματα",
+ "You have to select a location": "Πρέπει να επιλέξετε μια τοποθεσία",
+ "You have to select a store": "Πρέπει να επιλέξετε ένα κατάστημα",
+ "List": "Λίστα",
+ "Gallery": "Εκθεσιακός χώρος",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Εφημερίδα για αυτήν την μπαταρία",
+ "System info": "Πληροφορίες συστήματος",
+ "Changelog": "Τσανγκολόγκ",
+ "will be multiplied by a factor of {string1} to get {string2}": "θα πολλαπλασιαστεί με συντελεστή% 1 $ s για να πάρει% 2 $ s",
+ "The given date is earlier than today, are you sure?": "Η δεδομένη ημερομηνία είναι νωρίτερη από σήμερα, είστε βέβαιοι;",
+ "Product count": "Αριθμός προϊόντων",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "ΜπαταρίαΑυτό θα χρησιμοποιηθεί ως η προεπιλεγμένη ρύθμιση κατά την προσθήκη αυτού του προϊόντος ως συστατικού συνταγής",
+ "Add item": "Πρόσθεσε είδος",
+ "Selected shopping list": "Επιλεγμένη λίστα αγορών",
+ "New shopping list": "Νέα λίστα αγορών",
+ "Delete shopping list": "Διαγραφή λίστας αγορών",
+ "Chores settings": "Ρυθμίσεις μικροδουλειών",
+ "Batteries settings": "Ρυθμίσεις μπαταριών",
+ "Tasks settings": "Ρυθμίσεις εργασιών",
+ "Create shopping list": "Δημιουργία λίστας αγορών",
+ "Are you sure to delete shopping list \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε τη λίστα αγορών \"% s\";",
+ "Average shelf life": "Μέση διάρκεια ζωής",
+ "Spoil rate": "Ποσοστό χαλάρωσης",
+ "Show more": "Δείτε περισσότερα",
+ "Show less": "Δείξε λιγότερο",
+ "The amount must be between {string1} and {string2}": "Το ποσό πρέπει να κυμαίνεται μεταξύ% 1 $ s και% 2 $ s",
+ "Day of month": "Ημέρα του μήνα",
+ "Monday": "Δευτέρα",
+ "Tuesday": "Τρίτη",
+ "Wednesday": "Τετάρτη",
+ "Thursday": "Πέμπτη",
+ "Friday": "Παρασκευή",
+ "Saturday": "Σάββατο",
+ "Sunday": "Κυριακή",
+ "Configure userfields": "Διαμόρφωση πεδίων χρήστη",
+ "Userfields": "Πεδία χρηστών",
+ "Entity": "Οντότητα",
+ "Caption": "Λεζάντα",
+ "Type": "Τύπος",
+ "Create userfield": "Δημιουργία πεδίου χρήστη",
+ "A entity is required": "Απαιτείται οντότητα",
+ "A caption is required": "Απαιτείται λεζάντα",
+ "A type is required": "Απαιτείται τύπος",
+ "Show as column in tables": "Εμφάνιση ως στήλη σε πίνακες",
+ "This is required and can only contain letters and numbers": "Αυτό απαιτείται και μπορεί να περιέχει μόνο γράμματα και αριθμούς",
+ "Edit userfield": "Επεξεργασία πεδίου χρήστη",
+ "Plural forms": "Πληθυντικές μορφές",
+ "One plural form per line, the current language requires": "Μία πληθυντική μορφή ανά γραμμή, απαιτεί η τρέχουσα γλώσσα",
+ "Plural count": "Πληθυντικός αριθμός",
+ "Plural rule": "Πληθυντικός κανόνας",
+ "in plural form": "σε πληθυντικό σχήμα",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Δεν υπάρχει αρκετό απόθεμα, λείπει {count} συστατικό | Δεν υπάρχει αρκετό απόθεμα, λείπουν {count} συστατικά",
+ "Not enough in stock, but already on the shopping list": "Δεν υπάρχει αρκετό απόθεμα, αλλά ήδη στη λίστα αγορών",
+ "Not enough in stock": "Δεν υπάρχει αρκετό απόθεμα",
+ "Expiring soon days": "Λήγει σύντομα ημέρες",
+ "Default location": "Προεπιλεγμένη τοποθεσία",
+ "Default amount for purchase": "Προεπιλεγμένο ποσό για αγορά",
+ "Default amount for consume": "Προεπιλεγμένο ποσό για κατανάλωση",
+ "Variable amount": "Μεταβλητό ποσό",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Τελευταία χρέωσηΌταν αυτό δεν είναι κενό, θα εμφανίζεται αντί για το ποσό που έχει εισαχθεί παραπάνω, ενώ το ποσό εκεί θα εξακολουθεί να χρησιμοποιείται για τον έλεγχο της εκπλήρωσης αποθεμάτων",
+ "Track date only": "Μόνο ημερομηνία παρακολούθησης",
+ "When enabled only the day of an execution is tracked, not the time": "Επόμενος προγραμματισμένος κύκλος φόρτισηςΌταν ενεργοποιείται, παρακολουθείται μόνο η ημέρα εκτέλεσης και όχι η ώρα",
+ "Consume {string1} of {string2}": "Καταναλώστε% 1 $ s από% 2 $ s",
+ "Meal plan": "Προτίμηση γεύματος",
+ "Add recipe on {string0}": "Προσθέστε συνταγή στο% s",
+ "{count} serving | {count} servings": "Μερίδα {count} | {count} Μερίδες",
+ "Week costs": "Κόστος εβδομάδας",
+ "Configuration": "Διαμόρφωση",
+ "A predefined list of values, one per line": "Μια προκαθορισμένη λίστα τιμών, μία ανά γραμμή",
+ "Products": "Προϊόντα",
+ "Marked task {string0} as completed on {string0}": "Επισημάνθηκε η εργασία% s ως ολοκληρωμένη στο% s",
+ "Booking has subsequent dependent bookings, undo not possible": "Ανάλωση κατά προτίμηση πρινΗ κράτηση έχει επακόλουθες εξαρτημένες κρατήσεις, δεν είναι δυνατή η αναίρεση",
+ "per serving": "ανά μερίδα",
+ "Never": "Ποτέ",
+ "Today": "Σήμερα",
+ "Consume {string1} of {string2} as spoiled": "Καταναλώστε% 1 $ s από% 2 $ s ως χαλασμένο",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Δεν υπάρχουν όλα τα συστατικά της συνταγής \"% s\", τίποτα δεν αφαιρείται",
+ "Undo task": "",
+ "Due date rollover": "Ανατροπή ημερομηνίας λήξης",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "ΕντάξειΌταν είναι ενεργοποιημένη, η δουλειά δεν μπορεί ποτέ να είναι καθυστερημένη, η ημερομηνία λήξης θα αλλάζει προς τα εμπρός κάθε μέρα, όταν πρέπει",
+ "Location Content Sheet": "Φύλλο περιεχομένου τοποθεσίας",
+ "Print": "Τυπώνω",
+ "all locations": "όλες οι τοποθεσίες",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "αυτήν την τοποθεσία",
+ "Consumed amount": "Καταναλωμένο ποσό",
+ "Time of printing": "Ώρα εκτύπωσης",
+ "Are you sure to delete equipment \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε τον εξοπλισμό \"% s\";",
+ "Parent product": "Γονικό προϊόν",
+ "Not possible because this product is already used as a parent product in another product": "Μονάδα ποσότητας αποθεμάτωνΔεν είναι δυνατό επειδή αυτό το προϊόν χρησιμοποιείται ήδη ως μητρικό προϊόν σε άλλο προϊόν",
+ "Default conversions": "Προεπιλεγμένες μετατροπές",
+ "Factor": "Παράγοντας",
+ "1 {string0} is the same as...": "Το 1% s είναι το ίδιο με ...",
+ "Create QU conversion": "Δημιουργία μετατροπής QU",
+ "Default for QU": "Προεπιλογή για QU",
+ "Quantity unit from": "Μονάδα ποσότητας από",
+ "Quantity unit to": "Μονάδα ποσότητας έως",
+ "This cannot be equal to {string0}": "Αυτό δεν μπορεί να είναι ίσο με% s",
+ "This means 1 {string1} is the same as {string2} {string3}": "Αυτό σημαίνει ότι το 1% 1 $ s είναι το ίδιο με το% 2 $ s% 3 $ s",
+ "QU conversions": "QU μετατροπές",
+ "Product overrides": "Παράκαμψη προϊόντος",
+ "Override for product": "Παράκαμψη προϊόντος",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Επεξεργασία μετατροπής QU",
+ "An assignment type is required": "Απαιτείται τύπος ανάθεσης",
+ "Assignment type": "Τύπος εργασίας",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Τελευταία αγοράΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς έχει προγραμματιστεί 1 ημέρα μετά την τελευταία εκτέλεση",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Τελευταία χρήσηΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς έχει προγραμματιστεί 1 ημέρα μετά την τελευταία εκτέλεση, αλλά μόνο για τις καθημερινές που επιλέγονται παρακάτω",
+ "This means the next execution of this chore is not scheduled": "ΚακομαθημένοςΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς δεν είναι προγραμματισμένη",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Η αναζήτηση γραμμωτού κώδικα είναι απενεργοποιημένηΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς έχει προγραμματιστεί την παρακάτω επιλεγμένη ημέρα κάθε μήνα",
+ "This means the next execution of this chore will not be assigned to anyone": "θα προστεθεί στη λίστα των γραμμικών κωδικών για το επιλεγμένο προϊόν κατά την υποβολήΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς δεν θα ανατεθεί σε κανέναν",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Νέο ποσόΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς θα ανατεθεί σε αυτόν που την εκτέλεσε λιγότερο",
+ "This means the next execution of this chore will be assigned randomly": "ΣημείωσηΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς θα ανατεθεί τυχαία",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Παρακολούθηση χρόνουΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς θα ανατεθεί στην επόμενη με αλφαβητική σειρά",
+ "Assign to": "Ανάθεση σε",
+ "This assignment type requires that at least one is assigned": "Αυτός ο τύπος ανάθεσης απαιτεί να αντιστοιχιστεί τουλάχιστον ένας",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} δουλειά μου έχει ανατεθεί | {count} δουλειές μου έχουν ανατεθεί",
+ "Assigned to me": "Ανατέθηκε σε μένα",
+ "assigned to {string0}": "εκχωρήθηκε στο% s",
+ "Assignment": "ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ",
+ "Consume product on chore execution": "Καταναλώστε το προϊόν κατά την εκτέλεση της δουλειάς",
+ "Are you sure to delete user field \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε το πεδίο χρήστη \"% s\";",
+ "Userentities": "Χρήστες",
+ "Create userentity": "Δημιουργία χρήστη",
+ "Show in sidebar menu": "Εμφάνιση στο μενού πλευρικής γραμμής",
+ "Edit userentity": "Επεξεργασία χρήστη",
+ "Edit {string0}": "Επεξεργασία% s",
+ "Create {string0}": "Δημιουργία% s",
+ "Are you sure to delete this userobject?": "Είστε βέβαιοι ότι διαγράψατε αυτό το αντικείμενο χρήστη;",
+ "Icon CSS class": "Εικονίδιο CSS τάξη",
+ "For example": "Για παράδειγμα",
+ "Configure fields": "Διαμόρφωση πεδίων",
+ "Quantity unit plural form testing": "Έλεγχος πολλαπλών μορφών μονάδας ποσότητας",
+ "Result": "Αποτέλεσμα",
+ "Test plural forms": "Δοκιμή πολλαπλών μορφών",
+ "Scan a barcode": "Σάρωση γραμμωτού κώδικα",
+ "Error while initializing the barcode scanning library": "Σφάλμα κατά την προετοιμασία της βιβλιοθήκης σάρωσης γραμμωτού κώδικα",
+ "The resulting price of this ingredient will be multiplied by this factor": "Επισκόπηση μικροδουλειάςΗ προκύπτουσα τιμή αυτού του συστατικού πολλαπλασιάζεται με αυτόν τον παράγοντα",
+ "Price factor": "Συντελεστής τιμής",
+ "Do you find grocy useful?": "Βρίσκετε το grocy χρήσιμο;",
+ "Say thanks": "Πες ευχαριστώ",
+ "Search for recipes containing this product": "Αναζητήστε συνταγές που περιέχουν αυτό το προϊόν",
+ "Add to shopping list": "Προσθήκη στη λίστα αγορών",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Προστέθηκε% 1 $ s από% 2 $ s στη λίστα αγορών \"% 3 $ s\"",
+ "Output": "Παραγωγή",
+ "Energy (kcal)": "Ενέργεια (kcal)",
+ "Per stock quantity unit": "Ανά μονάδα ποσότητας αποθεμάτων",
+ "Barcode scanner testing": "Δοκιμή σαρωτή γραμμωτού κώδικα",
+ "Expected barcode": "Αναμενόμενος γραμμικός κώδικας",
+ "Scan field": "Πεδίο σάρωσης",
+ "Scanned barcodes": "Σαρωμένοι γραμμωτοί κώδικες",
+ "Hit": "Κτύπημα",
+ "Miss": "Δεσποινίδα",
+ "Display recipe": "Εμφάνιση συνταγής",
+ "Accumulate sub products min. stock amount": "Συσσώρευση υποπροϊόντων ελάχ. ποσό αποθέματος",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "ΠαρακολούθησηΕάν είναι ενεργοποιημένο, το ελάχιστο το απόθεμα των υπο-προϊόντων θα συσσωρευτεί σε αυτό το προϊόν, σημαίνει ότι το υπο-προϊόν δεν θα \"λείπει\" ποτέ, μόνο αυτό το προϊόν",
+ "Are you sure to remove this conversion?": "Είστε βέβαιοι ότι θα καταργήσετε αυτήν τη μετατροπή;",
+ "Unit price": "Τιμή μονάδας",
+ "Total price": "Συνολικό ποσό",
+ "in {string0} and based on the purchase quantity unit": "σε% s και βασίζεται στη μονάδα ποσότητας αγοράς",
+ "Unlimited": "Απεριόριστος",
+ "Clear": "Σαφή",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Είστε βέβαιοι ότι έχετε καταργήσει τη συνταγή \"% s\";",
+ "Period interval": "Διάστημα περιόδου",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Επισκόπηση μπαταρίαςΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς θα πρέπει να προγραμματίζεται μόνο κάθε% s ημέρες",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Πλήθος κύκλων φόρτισηςΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς θα πρέπει να προγραμματίζεται μόνο κάθε% s εβδομάδες",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Δημιουργία στοιχείου λίστας αγορώνΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς θα πρέπει να προγραμματίζεται μόνο κάθε% s μήνες",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Επεξεργασία στοιχείου λίστας αγορώνΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς έχει προγραμματιστεί 1 έτος μετά την τελευταία εκτέλεση",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "ΑποθηκεύσετεΑυτό σημαίνει ότι η επόμενη εκτέλεση αυτής της δουλειάς θα πρέπει να προγραμματίζεται μόνο κάθε% s χρόνια",
+ "Transfer": "ΜΕΤΑΦΟΡΑ",
+ "From location": "Από την τοποθεσία",
+ "To location": "Στην τοποθεσία",
+ "There are no units available at this location": "Δεν υπάρχουν διαθέσιμες μονάδες σε αυτήν την τοποθεσία",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Μεταφέρθηκε% 1 $ s από% 2's από% 3 $ s σε% 4 $ s",
+ "Stock entries": "Καταχωρήσεις αποθεμάτων",
+ "Best before date": "Καλύτερο πριν από την ημερομηνία",
+ "Purchased date": "Ημερομηνία αγοράς",
+ "Consume all {string0} for this stock entry": "Καταναλώστε όλα τα% s για αυτήν την καταχώριση μετοχών",
+ "The amount cannot be lower than {string1}": "Το ποσό δεν μπορεί να είναι χαμηλότερο από% 1 $ s",
+ "Stock entry successfully updated": "Η καταχώριση μετοχής ενημερώθηκε με επιτυχία",
+ "Edit stock entry": "Επεξεργασία καταχώρησης μετοχών",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "ΠροσθήκηΗ πρόσβαση στην κάμερα είναι δυνατή μόνο όταν υποστηρίζεται και επιτρέπεται από το πρόγραμμα περιήγησής σας και όταν το grocy σερβίρεται μέσω ασφαλούς σύνδεσης (https: //)",
+ "Keep screen on": "Συνεχίστε την οθόνη",
+ "Keep screen on while displaying a \"fullscreen-card\"": "ΟνομαΚρατήστε την οθόνη ενεργοποιημένη ενώ εμφανίζετε μια \"κάρτα πλήρους οθόνης\"",
+ "A purchased date is required": "Απαιτείται ημερομηνία αγοράς",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Παράγει προϊόν",
+ "This booking cannot be undone": "Δεν είναι δυνατή η αναίρεση αυτής της κράτησης",
+ "Booking does not exist or was already undone": "Η κράτηση δεν υπάρχει ή έχει ήδη αναιρεθεί",
+ "Are you sure to delete API key \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε το κλειδί API \"% s\";",
+ "Add note": "Προσθήκη σημείωσης",
+ "Add note on {string0}": "Προσθήκη σημείωσης στο% s",
+ "per day": "ανά μέρα",
+ "Only undone items": "Αναίρεση μόνο αντικειμένων",
+ "Add product": "Προσθήκη προϊόντος",
+ "Add product on {string0}": "Προσθήκη προϊόντος στο% s",
+ "Consume all ingredients needed by this weeks recipes or products": "Ελάχ. ποσό αποθέματοςΚαταναλώστε όλα τα συστατικά που χρειάζονται αυτές τις εβδομάδες συνταγές ή προϊόντα",
+ "Meal plan recipe": "Συνταγή γεύματος",
+ "Meal plan note": "Σημείωση για το γεύμα",
+ "Meal plan product": "Προϊόν γεύματος",
+ "Scan mode": "Λειτουργία σάρωσης",
+ "on": "επί",
+ "off": "μακριά από",
+ "Scan mode is on but not all required fields could be populated automatically": "Αγορά QUΗ λειτουργία σάρωσης είναι ενεργοποιημένη αλλά δεν μπορούν να συμπληρωθούν αυτόματα όλα τα απαιτούμενα πεδία",
+ "Is freezer": "Είναι καταψύκτης",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "QU απόθεμαΌταν μετακινείτε προϊόντα από / προς μια θέση κατάψυξης, τα καλύτερα προϊόντα πριν από την ημερομηνία προσαρμόζονται αυτόματα σύμφωνα με τις ρυθμίσεις του προϊόντος",
+ "This cannot be the same as the \"From\" location": "Αυτό δεν μπορεί να είναι το ίδιο με την τοποθεσία \"Από\"",
+ "Thawed": "Αποψυχθεί",
+ "Frozen": "Παγωμένος",
+ "Are you sure to delete userentity \"{string0}\"?": "Είστε βέβαιοι ότι θα διαγράψετε το userentity \"% s\";",
+ "Shopping list settings": "Ρυθμίσεις λίστας αγορών",
+ "Show a month-view calendar": "Εμφάνιση ημερολογίου μηνιαίας προβολής",
+ "Edit note on {string0}": "Επεξεργασία σημείωσης στο% s",
+ "Edit product on {string0}": "Επεξεργασία προϊόντος στο% s",
+ "Edit recipe on {string0}": "Επεξεργασία συνταγής στο% s",
+ "Desired servings": "Επιθυμητές μερίδες",
+ "Base: {string0}": "Βάση:% s",
+ "Recipes settings": "Ρυθμίσεις συνταγών",
+ "Recipe card": "Κάρτα συνταγής",
+ "Group ingredients by their product group": "Ομαδοποιήστε τα συστατικά ανά ομάδα προϊόντων",
+ "Unknown store": "Άγνωστο κατάστημα",
+ "Store": "Κατάστημα",
+ "Transaction successfully undone": "Η συναλλαγή αναιρέθηκε με επιτυχία",
+ "Default store": "Προεπιλεγμένο κατάστημα",
+ "Consume this stock entry": "Καταναλώστε αυτήν την καταχώριση μετοχών",
+ "Mark this stock entry as open": "Επισημάνετε αυτήν την καταχώρηση ως ανοιχτή",
+ "Mark this item as done": "Επισημάνετε αυτό το στοιχείο ως ολοκληρωμένο",
+ "Edit this item": "Επεξεργαστείτε αυτό το αντικείμενο",
+ "Delete this item": "Διαγραφή αυτού του αντικειμένου",
+ "Show an icon if the product is already on the shopping list": "Εμφάνιση ενός εικονιδίου εάν το προϊόν βρίσκεται ήδη στη λίστα αγορών",
+ "Calories": "Θερμίδες",
+ "means {string1} per {string2}": "σημαίνει% 1 $ s ανά% 2 $ s",
+ "Create inverse QU conversion": "Δημιουργία αντίστροφης μετατροπής QU",
+ "Create recipe": "Δημιουργήστε συνταγή",
+ "Save & continue to add ingredients and included recipes": "Αποθηκεύστε & συνεχίστε να προσθέτετε συστατικά και συνταγές",
+ "Save & continue": "Αποθήκευση & συνέχεια",
+ "Save & return to recipes": "Αποθήκευση και επιστροφή στις συνταγές",
+ "Stock value": "Αξία αποθέματος ",
+ "Average price": "Μέση τιμή",
+ "Active": "Ενεργός",
+ "Barcodes": "Barcodes",
+ "Barcode": "Barcode",
+ "Create Barcode": "Δημιουργία Barcode",
+ "Barcode for product": "Barcode για ",
+ "Edit Barcode": "Επεξεργασία Barcode",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Γραμμικός κώδικαςΔεν υπάρχει αρκετό απόθεμα (δεν περιλαμβάνεται στο κόστος), {string0} λείπει συστατικό",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Προεπιλογή καλύτερη πριν από ημέρες",
+ "Quantity unit stock cannot be changed after first purchase": "Αγορά μονάδας ποσότητας",
+ "Clear filter": "Απόθεμα μονάδας ποσότητας",
+ "Permissions for user {string0}": "Αγορά παράγοντα σε μονάδα ποσότητας αποθεμάτων",
+ "Are you sure you want to remove full permissions for yourself?": "Δημιουργία τοποθεσίας",
+ "Permissions saved": "Δημιουργία καταστήματος",
+ "You are not allowed to view this page": "Δημιουργία μονάδας ποσότητας",
+ "Page not found": "Τύπος περιόδου",
+ "Unauthorized": "Περίοδος ημερών",
+ "Error source": "Δημιουργήστε μικροδουλειές",
+ "Error message": "Χρησιμοποιείται σε",
+ "Stack trace": "Δημιουργήστε μπαταρία",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "Επεξεργασία μπαταρίας",
+ "You will be redirected to the default page in {string0} seconds": "Επεξεργασία μικροδουλειάς",
+ "Server error": "Επεξεργασία μονάδας ποσότητας",
+ "A server error occured while processing your request": "Επεξεργασία προϊόντος",
+ "If you think this is a bug, please report it": "Επεξεργασία τοποθεσίας",
+ "Language": "",
+ "User settings": "",
+ "Default": "",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | ",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": " | ",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "χωρίς ανάθεση",
+ "who-least-did-first": "όποιος το έκανε πρώτα",
+ "random": "τυχαία",
+ "in-alphabetical-order": "με αλφαβητική σειρά",
+ "timeago_locale": "el",
+ "timeago_nan": "πριν NaN χρόνια",
+ "moment_locale": "el",
+ "datatables_localization": "{\"sDecimal\":\",\",\"sEmptyTable\":\"Δεν υπάρχουν δεδομένα στον πίνακα\",\"sInfo\":\"Εμφανίζονται _START_ έως _END_ από _TOTAL_ εγγραφές\",\"sInfoEmpty\":\"Εμφανίζονται 0 έως 0 από 0 εγγραφές\",\"sInfoFiltered\":\"(φιλτραρισμένες από _MAX_ συνολικά εγγραφές)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\".\",\"sLengthMenu\":\"Δείξε _MENU_ εγγραφές\",\"sLoadingRecords\":\"Φόρτωση...\",\"sProcessing\":\"Επεξεργασία...\",\"sSearch\":\"Αναζήτηση:\",\"sSearchPlaceholder\":\"Αναζήτηση\",\"sThousands\":\".\",\"sUrl\":\"\",\"sZeroRecords\":\"Δεν βρέθηκαν εγγραφές που να ταιριάζουν\",\"oPaginate\":{\"sFirst\":\"Πρώτη\",\"sPrevious\":\"Προηγούμενη\",\"sNext\":\"Επόμενη\",\"sLast\":\"Τελευταία\"},\"oAria\":{\"sSortAscending\":\": ενεργοποιήστε για αύξουσα ταξινόμηση της στήλης\",\"sSortDescending\":\": ενεργοποιήστε για φθίνουσα ταξινόμηση της στήλης\"}}",
+ "summernote_locale": "el-GR",
+ "fullcalendar_locale": "el",
+ "bootstrap-select_locale": "en_US",
+ "purchase": "Αγορά",
+ "transfer_from": "μεταφορά απο",
+ "transfer_to": "μεταφορά στο",
+ "consume": "καταναλώνω",
+ "inventory-correction": "διόρθωση αποθέματος",
+ "product-opened": "το προϊόν είναι ανοιχτό",
+ "stock-edit-old": "απόθεμα-επεξεργασία-παλιά",
+ "stock-edit-new": "απόθεμα-επεξεργασία-νέο",
+ "self-production": "αυτοπαραγωγή",
+ "manually": "χρειροκίνητα",
+ "dynamic-regular": "δυναμικό-κανονικό",
+ "daily": "ημερήσιο",
+ "weekly": "εβδομαδιαίο",
+ "monthly": "μηνιαίο",
+ "yearly": "ετήσιο",
+ "text-single-line": "κείμενο-μονή γραμμή",
+ "text-multi-line": "κείμενο-πολλαπλών γραμμών",
+ "number-integral": "αριθμός-ακέραιο",
+ "number-decimal": "αριθμός-δεκαδικός",
+ "date": "ημερομηνία",
+ "datetime": "ημερομηνία ώρα",
+ "checkbox": "πλαίσιο ελέγχου",
+ "preset-list": "προκαθορισμένη λίστα",
+ "preset-checklist": "προκαθορισμένη λίστα ελέγχου",
+ "link": "σύνδεσμος",
+ "link-with-title": "",
+ "file": "",
+ "image": "",
+ "ADMIN": "ΔΙΑΧΕΙΡΙΣΤΗΣ",
+ "USERS_CREATE": "ΔΗΜΙΟΥΡΓΙΑ_ΧΡΗΣΤΩΝ",
+ "USERS_EDIT": "ΕΠΕΞΕΡΓΑΣΙΑ_ΧΡΗΣΤΩΝ",
+ "USERS_READ": "ΠΡΟΒΟΛΗ_ΧΡΗΣΤΩΝ",
+ "USERS_EDIT_SELF": "ΕΠΕΞΕΡΓΑΣΙΑ_ΙΔΙΟΥ_ΧΡΗΣΤΗ",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "ΔΙΑΧΕΙΡΙΣΤΗΣ",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "USERS_CREATE",
+ "CHORE_TRACK_EXECUTION": "ΧΡΗΣΤΕΣ_EDIT",
+ "CHORE_UNDO_EXECUTION": "USERS_READ",
+ "MASTER_DATA_EDIT": "USERS_EDIT_SELF",
+ "TASKS_UNDO_EXECUTION": "ΜΠΑΤΑΡΙΕΣ_UNDO_CHARGE_CYCLE",
+ "TASKS_MARK_COMPLETED": "ΜΠΑΤΑΡΙΑ_TRACK_CHARGE_CYCLE",
+ "STOCK_EDIT": "CHORE_TRACK_EXECUTION",
+ "STOCK_TRANSFER": "CHORE_UNDO_EXECUTION",
+ "STOCK_INVENTORY": "MASTER_DATA_EDIT",
+ "STOCK_CONSUME": "ΚΑΘΗΚΟΝΤΑ_UNDO_EXECUTION",
+ "STOCK_OPEN": "ΚΑΘΗΚΟΝΤΑ_MARK_COMPLETED",
+ "STOCK_PURCHASE": "STOCK_EDIT",
+ "SHOPPINGLIST_ITEMS_ADD": "STOCK_TRANSFER",
+ "SHOPPINGLIST_ITEMS_DELETE": "STOCK_INVENTORY",
+ "USERS": "STOCK_CONSUME",
+ "STOCK": "STOCK_OPEN",
+ "SHOPPINGLIST": "STOCK_PURCHASE",
+ "CHORES": "ΑΓΟΡΑ ΛΙΣΤΑ_ITEMS_ADD",
+ "BATTERIES": "ΑΓΟΡΑ ΛΙΣΤΑ_ITEMS_DELETE",
+ "TASKS": "ΧΡΗΣΤΕΣ",
+ "RECIPES": "ΣΤΟΚ",
+ "EQUIPMENT": "ΛΙΣΤΑ ΜΕ ΤΑ ΨΩΝΙΑ",
+ "CALENDAR": "ΜΙΚΡΟΔΟΥΛΕΙΕΣ",
+ "RECIPES_MEALPLAN": "ΜΠΑΤΑΡΙΕΣ",
+ "cs": "cs",
+ "da": "da",
+ "de": "de",
+ "el_GR": "el_GR",
+ "en": "en",
+ "en_GB": "en_GB",
+ "es": "es",
+ "fr": "fr",
+ "hu": "hu",
+ "it": "it",
+ "ja": "ja",
+ "ko_KR": "ko_KR",
+ "nl": "nl",
+ "no": "no",
+ "pl": "pl",
+ "pt_BR": "pt_BR",
+ "pt_PT": "pt_PT",
+ "ru": "ru",
+ "sk_SK": "sk_SK",
+ "sv_SE": "sv_SE",
+ "tr": "tr",
+ "zh_TW": "zh_TW",
+ "zh_CN": "",
+ "he_IL": "",
+ "ta": "",
+ "fi": "",
+ "Cookies": "Μπισκότα",
+ "Chocolate": "Σοκολάτα",
+ "Pantry": "Τροφοθήκη",
+ "Candy cupboard": "Ντουλάπι γλυκών",
+ "Tinned food cupboard": "Ντουλάπι κονσερβών",
+ "Fridge": "Ψυγείο",
+ "Piece | Pieces": "Τεμάχιο | Τεμάχια",
+ "Pack | Packs": "Πακέτο | Πακέτα",
+ "Glass | Glasses": "Ποτήρι | Ποτήρια",
+ "Tin | Tins": "Κουτάκι | Κουτάκια",
+ "Can | Cans": "Κουτάκι | Κουτάκια",
+ "Bunch | Bunches": "Ματσάκι | Ματσάκια",
+ "Gummy bears": "Gummy bears",
+ "Crisps": "Πατατάκια",
+ "Eggs": "Αυγά",
+ "Noodles": "Νούντλς",
+ "Pickles": "Πίκλες",
+ "Gulash soup": "Σούπα Γκούλας",
+ "Yogurt": "Γιαούρτι",
+ "Cheese": "Τυρί",
+ "Cold cuts": "Αλλαντικά",
+ "Paprika": "Πάπρικα",
+ "Cucumber": "Αγγούρι",
+ "Radish": "Ραδίκι",
+ "Tomato": "Τομάτα",
+ "Changed towels in the bathroom": "Άλλαγμα πετσετών στο μπάνιο",
+ "Cleaned the kitchen floor": "Καθάρισμα πατώματος κουζίνας",
+ "Warranty ends": "Λήξη εγγύησης",
+ "TV remote control": "Τηλεκοντρόλ τηλεόρασης",
+ "Alarm clock": "Ξυπνητήρι",
+ "Heat remote control": "Τηλεκοντρόλ θέρμανσης",
+ "Lawn mowed in the garden": "Κούρεμα γρασιδιού στον κήπο",
+ "Some good snacks": "Μερικά καλά σνακ",
+ "Pizza dough": "Ζυμάρι πίτσας",
+ "Sieved tomatoes": "Πασάτα",
+ "Salami": "Σαλάμι",
+ "Toast": "Τοστ",
+ "Minced meat": "Κιμάς",
+ "Pizza": "Πίτσα",
+ "Spaghetti bolognese": "Μακαρόνια Μπολονέζ",
+ "Sandwiches": "Σάντουιτς",
+ "English": "Αγγλικά",
+ "German": "Γερμανικά",
+ "Italian": "Ιταλικά",
+ "This is the note content of the recipe ingredient": "Αυτό είναι το περιεχόμενο της σημείωσης του υλικού της συνταγής",
+ "Demo User": "Δοκιμαστικός Χρήστης",
+ "Gram | Grams": "Γραμμάριο | Γραμμάρια",
+ "Flour": "Αλεύρι",
+ "Pancakes": "Τηγανήτες",
+ "Sugar": "Ζάχαρη",
+ "Home": "Σπίτι",
+ "Life": "Ζωή",
+ "Projects": "Σχέδιο",
+ "Repair the garage door": "Επισκευάστε την πόρτα του γκαράζ",
+ "Fork and improve grocy": "Fork και Βελτιώστε το grocy",
+ "Find a solution for what to do when I forget the door keys": "Βρείτε μια λύση για το τι πρέπει να κάνω όταν ξεχάσω τα κλειδιά της πόρτας",
+ "Sweets": "Γλυκά",
+ "Bakery products": "Προϊόντα αρτοποιίας",
+ "Tinned food": "Κονσερβοποιημένα τρόφιμα",
+ "Butchery products": "Προϊόντα κρεοπωλείου",
+ "Vegetables/Fruits": "Λαχανικά / Φρούτα",
+ "Refrigerated products": "Προϊόντα Ψυγείου ",
+ "Coffee machine": "Μηχανή καφέ",
+ "Dishwasher": "Πλυντήριο πιάτων",
+ "Liter": "Λίτρο",
+ "Liters": "Λίτρα",
+ "Bottle": "Μπουκάλι",
+ "Bottles": "Μπουκάλια",
+ "Milk": "Γάλα",
+ "Chocolate sauce": "Σάλτσα σοκολάτας",
+ "Milliliters": "Χιλιοστόλιτρα",
+ "Milliliter": "Χιλιοστόλιτρο",
+ "Bottom": "Κάτω μέρος",
+ "Topping": "Επικάλυψη",
+ "French": "Γαλλικά",
+ "Turkish": "Turkish",
+ "Spanish": "Ισπανικά",
+ "Russian": "Ρώσικα",
+ "The thing which happens on the 5th of every month": "Το πράγμα που συμβαίνει στις 5 κάθε μήνα",
+ "The thing which happens daily": "Το πράγμα που συμβαίνει καθημερινά",
+ "The thing which happens on Mondays and Wednesdays": "Αυτό που συμβαίνει Δευτέρα και Τετάρτη",
+ "Swedish": "Σουηδικά",
+ "Polish": "Πολωνικά",
+ "Milk Chocolate": "Σοκολάτα γάλακτος",
+ "Dark Chocolate": "Μαύρη σοκολάτα",
+ "Slice | Slices": "Φέτα | Φέτες",
+ "Example userentity": "Παράδειγμα χρήστη",
+ "This is an example user entity...": "Αυτό είναι ένα παράδειγμα οντότητας χρήστη ...",
+ "Custom field": "Προσαρμοσμένο πεδίο",
+ "Example field value...": "Παράδειγμα τιμής πεδίου ...",
+ "Waffle rolls": "Βάφλες",
+ "Danish": "Δανέζικα",
+ "Dutch": "Ολλανδικά",
+ "Norwegian": "Νορβηγικά",
+ "Demo": "Δοκιμή ",
+ "Stable version": "Σταθερή έκδοση",
+ "Preview version": "Έκδοση προεπισκόπησης",
+ "current release": "τρέχουσα κυκλοφορία",
+ "not yet released": "δεν έχει κυκλοφορήσει ακόμη",
+ "Portuguese (Brazil)": "Πορτογαλικά (Βραζιλία)",
+ "This is a note": "Αυτή είναι μια σημείωση",
+ "Freezer": "Καταψύκτης",
+ "Hungarian": "Ουγγρικά",
+ "Slovak": "Σλοβάκος",
+ "Czech": "Τσέχικα",
+ "Portuguese (Portugal)": "Πορτογαλικά (Πορτογαλία)",
+ "DemoSupermarket1": "Επίδειξη σούπερ μάρκετ1",
+ "DemoSupermarket2": "Επίδειξη σούπερ μάρκετ2",
+ "Japanese": "Ιαπωνικά",
+ "Chinese (Taiwan)": "Κινέζικα (Ταϊβάν)",
+ "Greek": "Ελληνικά",
+ "Korean": "Κορεάτικα",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/en.json b/locale/en.json
new file mode 100644
index 00000000..ce80174e
--- /dev/null
+++ b/locale/en.json
@@ -0,0 +1,701 @@
+{
+ "Stock overview": "Stock overview",
+ "{string0} products expiring within the next {string0} days": "{string0} products expiring within the next {string0} days",
+ "{string0} products are already expired": "{string0} products are already expired",
+ "{string0} products are below defined min. stock amount": "{string0} products are below defined min. stock amount",
+ "Product": "Product",
+ "Amount": "Amount",
+ "Next best before date": "Next best before date",
+ "Logout": "Logout",
+ "Chores overview": "Chores overview",
+ "Batteries overview": "Batteries overview",
+ "Purchase": "Purchase",
+ "Consume": "Consume",
+ "Inventory": "Inventory",
+ "Shopping list": "Shopping list",
+ "Chore tracking": "Chore tracking",
+ "Battery tracking": "Battery tracking",
+ "Products": "Products",
+ "Locations": "Locations",
+ "Shopping locations": "Shopping locations",
+ "Quantity units": "Quantity units",
+ "Chores": "Chores",
+ "Batteries": "Batteries",
+ "Chore": "Chore",
+ "Next estimated tracking": "Next estimated tracking",
+ "Last tracked": "Last tracked",
+ "Battery": "Battery",
+ "Last charged": "Last charged",
+ "Next planned charge cycle": "Next planned charge cycle",
+ "Best before": "Best before",
+ "OK": "OK",
+ "Product overview": "Product overview",
+ "Stock quantity unit": "Stock quantity unit",
+ "Stock amount": "Stock amount",
+ "Last purchased": "Last purchased",
+ "Last used": "Last used",
+ "Spoiled": "Spoiled",
+ "Barcode lookup is disabled": "Barcode lookup is disabled",
+ "will be added to the list of barcodes for the selected product on submit": "will be added to the list of barcodes for the selected product on submit",
+ "New amount": "New amount",
+ "Note": "Note",
+ "Tracked time": "Tracked time",
+ "Chore overview": "Chore overview",
+ "Tracked count": "Tracked count",
+ "Battery overview": "Battery overview",
+ "Charge cycles count": "Charge cycles count",
+ "Create shopping list item": "Create shopping list item",
+ "Edit shopping list item": "Edit shopping list item",
+ "Save": "Save",
+ "Add": "Add",
+ "Name": "Name",
+ "Location": "Location",
+ "Shopping location": "Shopping location",
+ "Min. stock amount": "Min. stock amount",
+ "QU purchase": "QU purchase",
+ "QU stock": "QU stock",
+ "QU factor": "QU factor",
+ "Description": "Description",
+ "Create product": "Create product",
+ "Barcode(s)": "Barcode(s)",
+ "Minimum stock amount": "Minimum stock amount",
+ "Default best before days": "Default best before days",
+ "Quantity unit purchase": "Quantity unit purchase",
+ "Quantity unit stock": "Quantity unit stock",
+ "Factor purchase to stock quantity unit": "Factor purchase to stock quantity unit",
+ "Create location": "Create location",
+ "Create shopping location": "Create shopping location",
+ "Create quantity unit": "Create quantity unit",
+ "Period type": "Period type",
+ "Period days": "Period days",
+ "Create chore": "Create chore",
+ "Used in": "Used in",
+ "Create battery": "Create battery",
+ "Edit battery": "Edit battery",
+ "Edit chore": "Edit chore",
+ "Edit quantity unit": "Edit quantity unit",
+ "Edit product": "Edit product",
+ "Edit location": "Edit location",
+ "Edit shopping location": "Edit shopping location",
+ "Record data": "Record data",
+ "Manage master data": "Manage master data",
+ "This will apply to added products": "This will apply to added products",
+ "never": "never",
+ "Add products that are below defined min. stock amount": "Add products that are below defined min. stock amount",
+ "For purchases this amount of days will be added to today for the best before date suggestion": "For purchases this amount of days will be added to today for the best before date suggestion",
+ "This means 1 {string0} purchased will be converted into {string0} {string0} in stock": "This means 1 {string0} purchased will be converted into {string0} {string0} in stock",
+ "Login": "Login",
+ "Username": "Username",
+ "Password": "Password",
+ "Invalid credentials, please try again": "Invalid credentials, please try again",
+ "Are you sure to delete battery \"{string0}\"?": "Are you sure to delete battery \"{string0}\"?",
+ "Yes": "Yes",
+ "No": "No",
+ "Are you sure to delete chore \"{string0}\"?": "Are you sure to delete chore \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" could not be resolved to a product, how do you want to proceed?",
+ "Create or assign product": "Create or assign product",
+ "Cancel": "Cancel",
+ "Add as new product": "Add as new product",
+ "Add as barcode to existing product": "Add as barcode to existing product",
+ "Add as new product and prefill barcode": "Add as new product and prefill barcode",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Are you sure to delete quantity unit \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Are you sure to delete product \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Are you sure to delete location \"{string0}\"?",
+ "Are you sure to delete shopping location \"{string0}\"?": "Are you sure to delete shopping location \"{string0}\"?",
+ "Manage API keys": "Manage API keys",
+ "REST API & data model documentation": "REST API & data model documentation",
+ "API keys": "API keys",
+ "Create new API key": "Create new API key",
+ "API key": "API key",
+ "Expires": "Expires",
+ "Created": "Created",
+ "This product is not in stock": "This product is not in stock",
+ "This means {string0} will be added to stock": "This means {string0} will be added to stock",
+ "This means {string0} will be removed from stock": "This means {string0} will be removed from stock",
+ "This means it is estimated that a new execution of this chore is tracked {string0} days after the last was tracked": "This means it is estimated that a new execution of this chore is tracked {string0} days after the last was tracked",
+ "Removed {string0} {string0} of {string0} from stock": "Removed {string0} {string0} of {string0} from stock",
+ "About grocy": "About grocy",
+ "Close": "Close",
+ "{string0} batteries are due to be charged within the next {string0} days": "{string0} batteries are due to be charged within the next {string0} days",
+ "{string0} batteries are overdue to be charged": "{string0} batteries are overdue to be charged",
+ "{string0} chores are due to be done within the next {string0} days": "{string0} chores are due to be done within the next {string0} days",
+ "{string0} chores are overdue to be done": "{string0} chores are overdue to be done",
+ "Released on": "Released on",
+ "Consume {string0} {string0} of {string0}": "Consume {string0} {string0} of {string0}",
+ "Added {string0} {string0} of {string0} to stock": "Added {string0} {string0} of {string0} to stock",
+ "Stock amount of {string0} is now {string0} {string0}": "Stock amount of {string0} is now {string0} {string0}",
+ "Tracked execution of chore {string0} on {string0}": "Tracked execution of chore {string0} on {string0}",
+ "Tracked charge cycle of battery {string0} on {string0}": "Tracked charge cycle of battery {string0} on {string0}",
+ "Consume all {string0} which are currently in stock": "Consume all {string0} which are currently in stock",
+ "All": "All",
+ "Track charge cycle of battery {string0}": "Track charge cycle of battery {string0}",
+ "Track execution of chore {string0}": "Track execution of chore {string0}",
+ "Filter by location": "Filter by location",
+ "Search": "Search",
+ "Not logged in": "Not logged in",
+ "You have to select a product": "You have to select a product",
+ "You have to select a chore": "You have to select a chore",
+ "You have to select a battery": "You have to select a battery",
+ "A name is required": "A name is required",
+ "A location is required": "A location is required",
+ "The amount cannot be lower than {string0}": "The amount cannot be lower than {string0}",
+ "This cannot be negative": "This cannot be negative",
+ "A quantity unit is required": "A quantity unit is required",
+ "A period type is required": "A period type is required",
+ "A best before date is required": "A best before date is required",
+ "Settings": "Settings",
+ "This can only be before now": "This can only be before now",
+ "Calendar": "Calendar",
+ "Recipes": "Recipes",
+ "Edit recipe": "Edit recipe",
+ "New recipe": "New recipe",
+ "Ingredients list": "Ingredients list",
+ "Add recipe ingredient": "Add recipe ingredient",
+ "Edit recipe ingredient": "Edit recipe ingredient",
+ "Are you sure to delete recipe \"{string0}\"?": "Are you sure to delete recipe \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Are you sure to delete recipe ingredient \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Are you sure to empty shopping list \"{string0}\"?",
+ "Clear list": "Clear list",
+ "Requirements fulfilled": "Requirements fulfilled",
+ "Put missing products on shopping list": "Put missing products on shopping list",
+ "Not enough in stock, {string0} ingredients missing": "Not enough in stock, {string0} ingredients missing",
+ "Enough in stock": "Enough in stock",
+ "Not enough in stock, {string0} ingredients missing but already on the shopping list": "Not enough in stock, {string0} ingredients missing but already on the shopping list",
+ "Expand to fullscreen": "Expand to fullscreen",
+ "Ingredients": "Ingredients",
+ "Preparation": "Preparation",
+ "Recipe": "Recipe",
+ "Not enough in stock, {string0} missing, {string0} already on shopping list": "Not enough in stock, {string0} missing, {string0} already on shopping list",
+ "Show notes": "Show notes",
+ "Put missing amount on shopping list": "Put missing amount on shopping list",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?",
+ "Added for recipe {string0}": "Added for recipe {string0}",
+ "Manage users": "Manage users",
+ "User": "User",
+ "Users": "Users",
+ "Are you sure to delete user \"{string0}\"?": "Are you sure to delete user \"{string0}\"?",
+ "Create user": "Create user",
+ "Edit user": "Edit user",
+ "First name": "First name",
+ "Last name": "Last name",
+ "A username is required": "A username is required",
+ "Confirm password": "Confirm password",
+ "Passwords do not match": "Passwords do not match",
+ "Change password": "Change password",
+ "Done by": "Done by",
+ "Last done by": "Last done by",
+ "Unknown": "Unknown",
+ "Filter by chore": "Filter by chore",
+ "Chores journal": "Chores journal",
+ "0 means suggestions for the next charge cycle are disabled": "0 means suggestions for the next charge cycle are disabled",
+ "Charge cycle interval (days)": "Charge cycle interval (days)",
+ "Last price": "Last price",
+ "Price history": "Price history",
+ "No price history available": "No price history available",
+ "Price": "Price",
+ "in {string0} per purchase quantity unit": "in {string0} per purchase quantity unit",
+ "The price cannot be lower than {string0}": "The price cannot be lower than {string0}",
+ "{string0} product expires within the next {string0} days": "{string0} product expires within the next {string0} days",
+ "{string0} product is already expired": "{string0} product is already expired",
+ "{string0} product is below defined min. stock amount": "{string0} product is below defined min. stock amount",
+ "Unit": "Unit",
+ "Units": "Units",
+ "{string0} chore is due to be done within the next {string0} days": "{string0} chore is due to be done within the next {string0} days",
+ "{string0} chore is overdue to be done": "{string0} chore is overdue to be done",
+ "{string0} battery is due to be charged within the next {string0} days": "{string0} battery is due to be charged within the next {string0} days",
+ "{string0} battery is overdue to be charged": "{string0} battery is overdue to be charged",
+ "{string0} unit was automatically added and will apply in addition to the amount entered here": "{string0} unit was automatically added and will apply in addition to the amount entered here",
+ "in singular form": "in singular form",
+ "in plural form": "in plural form",
+ "Never expires": "Never expires",
+ "This cannot be lower than {string0}": "This cannot be lower than {string0}",
+ "-1 means that this product never expires": "-1 means that this product never expires",
+ "Quantity unit": "Quantity unit",
+ "Only check if a single unit is in stock (a different quantity can then be used above)": "Only check if a single unit is in stock (a different quantity can then be used above)",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?": "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Removed all ingredients of recipe \"{string0}\" from stock",
+ "Consume all ingredients needed by this recipe": "Consume all ingredients needed by this recipe",
+ "Click to show technical details": "Click to show technical details",
+ "Error while saving, probably this item already exists": "Error while saving, probably this item already exists",
+ "Error details": "Error details",
+ "Tasks": "Tasks",
+ "Show done tasks": "Show done tasks",
+ "Task": "Task",
+ "Due": "Due",
+ "Assigned to": "Assigned to",
+ "Mark task \"{string0}\" as completed": "Mark task \"{string0}\" as completed",
+ "Uncategorized": "Uncategorized",
+ "Task categories": "Task categories",
+ "Create task": "Create task",
+ "A due date is required": "A due date is required",
+ "Category": "Category",
+ "Edit task": "Edit task",
+ "Are you sure to delete task \"{string0}\"?": "Are you sure to delete task \"{string0}\"?",
+ "{string0} task is due to be done within the next {string0} days": "{string0} task is due to be done within the next {string0} days",
+ "{string0} tasks are due to be done within the next {string0} days": "{string0} tasks are due to be done within the next {string0} days",
+ "{string0} task is overdue to be done": "{string0} task is overdue to be done",
+ "{string0} tasks are overdue to be done": "{string0} tasks are overdue to be done",
+ "Edit task category": "Edit task category",
+ "Create task category": "Create task category",
+ "Product groups": "Product groups",
+ "Ungrouped": "Ungrouped",
+ "Create product group": "Create product group",
+ "Edit product group": "Edit product group",
+ "Product group": "Product group",
+ "Are you sure to delete product group \"{string0}\"?": "Are you sure to delete product group \"{string0}\"?",
+ "Stay logged in permanently": "Stay logged in permanently",
+ "When not set, you will get logged out at latest after 30 days": "When not set, you will get logged out at latest after 30 days",
+ "Filter by status": "Filter by status",
+ "Below min. stock amount": "Below min. stock amount",
+ "Expiring soon": "Expiring soon",
+ "Already expired": "Already expired",
+ "Due soon": "Due soon",
+ "Overdue": "Overdue",
+ "View settings": "View settings",
+ "Auto reload on external changes": "Auto reload on external changes",
+ "Enable night mode": "Enable night mode",
+ "Auto enable in time range": "Auto enable in time range",
+ "From": "From",
+ "in format": "in format",
+ "To": "To",
+ "Time range goes over midnight": "Time range goes over midnight",
+ "Product picture": "Product picture",
+ "No file selected": "No file selected",
+ "If you don't select a file, the current picture will not be altered": "If you don't select a file, the current picture will not be altered",
+ "Delete": "Delete",
+ "The current picture will be deleted when you save the product": "The current picture will be deleted when you save the product",
+ "Select file": "Select file",
+ "Image of product {string0}": "Image of product {string0}",
+ "This product cannot be deleted because it is in stock, please remove the stock amount first.": "This product cannot be deleted because it is in stock, please remove the stock amount first.",
+ "Delete not possible": "Delete not possible",
+ "Equipment": "Equipment",
+ "Instruction manual": "Instruction manual",
+ "The selected equipment has no instruction manual": "The selected equipment has no instruction manual",
+ "Notes": "Notes",
+ "Edit equipment": "Edit equipment",
+ "Create equipment": "Create equipment",
+ "If you don't select a file, the current instruction manual will not be altered": "If you don't select a file, the current instruction manual will not be altered",
+ "No instruction manual available": "No instruction manual available",
+ "The current instruction manual will be deleted when you save the equipment": "The current instruction manual will be deleted when you save the equipment",
+ "No picture available": "No picture available",
+ "Filter by product group": "Filter by product group",
+ "Presets for new products": "Presets for new products",
+ "Included recipes": "Included recipes",
+ "A recipe is required": "A recipe is required",
+ "Add included recipe": "Add included recipe",
+ "Edit included recipe": "Edit included recipe",
+ "Group": "Group",
+ "This will be used as a headline to group ingredients together": "This will be used as a headline to group ingredients together",
+ "Journal": "Journal",
+ "Stock journal": "Stock journal",
+ "Filter by product": "Filter by product",
+ "Booking time": "Booking time",
+ "Booking type": "Booking type",
+ "Undo booking": "Undo booking",
+ "Undone on": "Undone on",
+ "Batteries journal": "Batteries journal",
+ "Filter by battery": "Filter by battery",
+ "Undo charge cycle": "Undo charge cycle",
+ "Undo chore execution": "Undo chore execution",
+ "Chore execution successfully undone": "Chore execution successfully undone",
+ "Undo": "Undo",
+ "Booking successfully undone": "Booking successfully undone",
+ "Charge cycle successfully undone": "Charge cycle successfully undone",
+ "This cannot be negative and must be an integral number": "This cannot be negative and must be an integral number",
+ "Disable stock fulfillment checking for this ingredient": "Disable stock fulfillment checking for this ingredient",
+ "Add all list items to stock": "Add all list items to stock",
+ "Add {string0} {string0} of {string0} to stock": "Add {string0} {string0} of {string0} to stock",
+ "Adding shopping list item {string0} of {string0}": "Adding shopping list item {string0} of {string0}",
+ "Use a specific stock item": "Use a specific stock item",
+ "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\"": "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\"",
+ "Mark {string0} {string0} of {string0} as open": "Mark {string0} {string0} of {string0} as open",
+ "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)": "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)",
+ "Default best before days after opened": "Default best before days after opened",
+ "Marked {string0} {string0} of {string0} as opened": "Marked {string0} {string0} of {string0} as opened",
+ "Mark as opened": "Mark as opened",
+ "Expires on {string0}; Bought on {string0}": "Expires on {string0}; Bought on {string0}",
+ "Not opened": "Not opened",
+ "Opened": "Opened",
+ "{string0} opened": "{string0} opened",
+ "Product expires": "Product expires",
+ "Task due": "Task due",
+ "Chore due": "Chore due",
+ "Battery charge cycle due": "Battery charge cycle due",
+ "Show clock in header": "Show clock in header",
+ "Stock settings": "Stock settings",
+ "Shopping list to stock workflow": "Shopping list to stock workflow",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set": "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set",
+ "Skip": "Skip",
+ "Servings": "Servings",
+ "Costs": "Costs",
+ "Based on the prices of the last purchase per product": "Based on the prices of the last purchase per product",
+ "The ingredients listed here result in this amount of servings": "The ingredients listed here result in this amount of servings",
+ "Do not check against the shopping list when adding missing items to it": "Do not check against the shopping list when adding missing items to it",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list",
+ "Picture": "Picture",
+ "Uncheck ingredients to not put them on the shopping list": "Uncheck ingredients to not put them on the shopping list",
+ "This is for statistical purposes only": "This is for statistical purposes only",
+ "You have to select a recipe": "You have to select a recipe",
+ "Key type": "Key type",
+ "Share/Integrate calendar (iCal)": "Share/Integrate calendar (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Use the following (public) URL to share or integrate the calendar in iCal format",
+ "Allow partial units in stock": "Allow partial units in stock",
+ "Enable tare weight handling": "Enable tare weight handling",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below",
+ "Tare weight": "Tare weight",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated",
+ "You have to select a location": "You have to select a location",
+ "You have to select a shopping location": "You have to select a shopping location",
+ "List": "List",
+ "Gallery": "Gallery",
+ "The current picture will be deleted when you save the recipe": "The current picture will be deleted when you save the recipe",
+ "Show product details": "Show product details",
+ "Stock journal for this product": "Stock journal for this product",
+ "Show chore details": "Show chore details",
+ "Journal for this chore": "Journal for this chore",
+ "Show battery details": "Show battery details",
+ "Journal for this battery": "Journal for this battery",
+ "System info": "System info",
+ "Changelog": "Changelog",
+ "will be multiplied a factor of {string0} to get {string0}": "will be multiplied a factor of {string0} to get {string0}",
+ "The given date is earlier than today, are you sure?": "The given date is earlier than today, are you sure?",
+ "Product count": "Product count",
+ "Type a new product name or barcode and hit TAB to start a workflow": "Type a new product name or barcode and hit TAB to start a workflow",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "This will be used as the default setting when adding this product as a recipe ingredient",
+ "Add item": "Add item",
+ "Selected shopping list": "Selected shopping list",
+ "New shopping list": "New shopping list",
+ "Delete shopping list": "Delete shopping list",
+ "Chores settings": "Chores settings",
+ "Batteries settings": "Batteries settings",
+ "Tasks settings": "Tasks settings",
+ "Create shopping list": "Create shopping list",
+ "Are you sure to delete shopping list \"{string0}\"?": "Are you sure to delete shopping list \"{string0}\"?",
+ "Average shelf life": "Average shelf life",
+ "Spoil rate": "Spoil rate",
+ "Show more": "Show more",
+ "Show less": "Show less",
+ "The amount must be between {string0} and {string0}": "The amount must be between {string0} and {string0}",
+ "Day of month": "Day of month",
+ "Monday": "Monday",
+ "Tuesday": "Tuesday",
+ "Wednesday": "Wednesday",
+ "Thursday": "Thursday",
+ "Friday": "Friday",
+ "Saturday": "Saturday",
+ "Sunday": "Sunday",
+ "Configure userfields": "Configure userfields",
+ "Userfields": "Userfields",
+ "Filter by entity": "Filter by entity",
+ "Entity": "Entity",
+ "Caption": "Caption",
+ "Type": "Type",
+ "Create userfield": "Create userfield",
+ "A entity is required": "A entity is required",
+ "A caption is required": "A caption is required",
+ "A type is required": "A type is required",
+ "Show as column in tables": "Show as column in tables",
+ "This is required and can only contain letters and numbers": "This is required and can only contain letters and numbers",
+ "Edit userfield": "Edit userfield",
+ "no-assignment": "No assignment",
+ "who-least-did-first": "Who least did first",
+ "random": "Random",
+ "in-alphabetical-order": "In alphabetical order",
+ "timeago_locale": "en",
+ "timeago_nan": "NaN years ago",
+ "moment_locale": "x",
+ "datatables_localization": "{\"sEmptyTable\":\"No data available in table\",\"sInfo\":\"Showing _START_ to _END_ of _TOTAL_ entries\",\"sInfoEmpty\":\"Showing 0 to 0 of 0 entries\",\"sInfoFiltered\":\"(filtered from _MAX_ total entries)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Show _MENU_ entries\",\"sLoadingRecords\":\"Loading...\",\"sProcessing\":\"Processing...\",\"sSearch\":\"Search:\",\"sZeroRecords\":\"No matching records found\",\"oPaginate\":{\"sFirst\":\"First\",\"sLast\":\"Last\",\"sNext\":\"Next\",\"sPrevious\":\"Previous\"},\"oAria\":{\"sSortAscending\":\": activate to sort column ascending\",\"sSortDescending\":\": activate to sort column descending\"}}",
+ "summernote_locale": "x",
+ "fullcalendar_locale": "x",
+ "bootstrap-select_locale": "x",
+ "purchase": "Purchase",
+ "transfer_to": "Transfer To",
+ "transfer_from": "Transfer From",
+ "consume": "Consume",
+ "inventory-correction": "Inventory correction",
+ "product-opened": "Product opened",
+ "stock-edit-old": "Stock entry edited (old values)",
+ "stock-edit-new": "Stock entry edited (new values)",
+ "self-production": "Self-production",
+ "manually": "Manually",
+ "dynamic-regular": "Dynamic regular",
+ "daily": "Daily",
+ "weekly": "Weekly",
+ "monthly": "Monthly",
+ "yearly": "Yearly",
+ "text-single-line": "Text (single line)",
+ "text-multi-line": "Text (multi line)",
+ "number-integral": "Number (integral)",
+ "number-decimal": "Number (decimal)",
+ "date": "Date (without time)",
+ "datetime": "Date & time",
+ "checkbox": "Checkbox",
+ "preset-list": "Select list (a single item can be selected)",
+ "preset-checklist": "Select list (multiple items can be selected)",
+ "link": "Link",
+ "link-with-title": "Link (with title)",
+ "file": "File",
+ "image": "Image",
+ "ADMIN": "All permissions",
+ "USERS_CREATE": "Create users",
+ "USERS_EDIT": "Edit users (including passwords)",
+ "USERS_READ": "Show users",
+ "USERS_EDIT_SELF": "Edit own user data / change own password",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "Undo charge cycle",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "Track charge cycle",
+ "CHORE_TRACK_EXECUTION": "Track execution",
+ "CHORE_UNDO_EXECUTION": "Undo execution",
+ "MASTER_DATA_EDIT": "Edit master data",
+ "TASKS_UNDO_EXECUTION": "Undo execution",
+ "TASKS_MARK_COMPLETED": "Mark completed",
+ "STOCK_EDIT": "Edit stock entries",
+ "STOCK_TRANSFER": "Transfer",
+ "STOCK_INVENTORY": "Inventory",
+ "STOCK_CONSUME": "Consume",
+ "STOCK_OPEN": "Open products",
+ "STOCK_PURCHASE": "Purchase",
+ "SHOPPINGLIST_ITEMS_ADD": "Add items",
+ "SHOPPINGLIST_ITEMS_DELETE": "Remove items",
+ "USERS": "User management",
+ "STOCK": "Stock",
+ "SHOPPINGLIST": "Shopping list",
+ "CHORES": "Chores",
+ "BATTERIES": "Batteries",
+ "TASKS": "Tasks",
+ "RECIPES": "Recipes",
+ "EQUIPMENT": "Equipment",
+ "CALENDAR": "Calendar",
+ "RECIPES_MEALPLAN": "Meal plan",
+ "cs": "Czech",
+ "da": "Danish",
+ "de": "German",
+ "el_GR": "Greek",
+ "en": "English",
+ "en_GB": "English (Great Britain)",
+ "es": "Spanish",
+ "fr": "French",
+ "hu": "Hungarian",
+ "it": "Italian",
+ "ja": "Japanese",
+ "ko_KR": "Korean",
+ "nl": "Dutch",
+ "no": "Norwegian",
+ "pl": "Polish",
+ "pt_BR": "Portuguese (Brazil)",
+ "pt_PT": "Portuguese (Portugal)",
+ "ru": "Russian",
+ "sk_SK": "Slovak",
+ "sv_SE": "Swedish",
+ "tr": "Turkish",
+ "zh_TW": "Chinese (Taiwan)",
+ "zh_CN": "Chinese (China)",
+ "he_IL": "Hebrew (Israel)",
+ "ta": "Tamil",
+ "fi": "Finnish",
+ "Cookies": "Cookies",
+ "Chocolate": "Chocolate",
+ "Pantry": "Pantry",
+ "Candy cupboard": "Candy cupboard",
+ "Tinned food cupboard": "Tinned food cupboard",
+ "Fridge": "Fridge",
+ "Piece": "Piece",
+ "Pieces": "Pieces",
+ "Pack": "Pack",
+ "Packs": "Packs",
+ "Glass": "Glass",
+ "Glasses": "Glasses",
+ "Tin": "Tin",
+ "Tins": "Tins",
+ "Can": "Can",
+ "Cans": "Cans",
+ "Bunch": "Bunch",
+ "Bunches": "Bunches",
+ "Gummy bears": "Gummy bears",
+ "Crisps": "Crisps",
+ "Eggs": "Eggs",
+ "Noodles": "Noodles",
+ "Pickles": "Pickles",
+ "Gulash soup": "Gulash soup",
+ "Yogurt": "Yogurt",
+ "Cheese": "Cheese",
+ "Cold cuts": "Cold cuts",
+ "Paprika": "Paprika",
+ "Cucumber": "Cucumber",
+ "Radish": "Radish",
+ "Tomato": "Tomato",
+ "Changed towels in the bathroom": "Changed towels in the bathroom",
+ "Cleaned the kitchen floor": "Cleaned the kitchen floor",
+ "Warranty ends": "Warranty ends",
+ "TV remote control": "TV remote control",
+ "Alarm clock": "Alarm clock",
+ "Heat remote control": "Heat remote control",
+ "Lawn mowed in the garden": "Lawn mowed in the garden",
+ "Some good snacks": "Some good snacks",
+ "Pizza dough": "Pizza dough",
+ "Sieved tomatoes": "Sieved tomatoes",
+ "Salami": "Salami",
+ "Toast": "Toast",
+ "Minced meat": "Minced meat",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti bolognese",
+ "Sandwiches": "Sandwiches",
+ "English": "English",
+ "German": "German",
+ "Italian": "Italian",
+ "Demo in different language": "Demo in different language",
+ "This is the note content of the recipe ingredient": "This is the note content of the recipe ingredient",
+ "Demo User": "Demo User",
+ "Gram": "Gram",
+ "Grams": "Grams",
+ "Flour": "Flour",
+ "Pancakes": "Pancakes",
+ "Sugar": "Sugar",
+ "Home": "Home",
+ "Life": "Life",
+ "Projects": "Projects",
+ "Repair the garage door": "Repair the garage door",
+ "Fork and improve grocy": "Fork and improve grocy",
+ "Find a solution for what to do when I forget the door keys": "Find a solution for what to do when I forget the door keys",
+ "Sweets": "Sweets",
+ "Bakery products": "Bakery products",
+ "Tinned food": "Tinned food",
+ "Butchery products": "Butchery products",
+ "Vegetables/Fruits": "Vegetables/Fruits",
+ "Refrigerated products": "Refrigerated products",
+ "Coffee machine": "Coffee machine",
+ "Dishwasher": "Dishwasher",
+ "Liter": "Liter",
+ "Liters": "Liters",
+ "Bottle": "Bottle",
+ "Bottles": "Bottles",
+ "Milk": "Milk",
+ "Chocolate sauce": "Chocolate sauce",
+ "Milliliters": "Milliliters",
+ "Milliliter": "Milliliter",
+ "Bottom": "Bottom",
+ "Topping": "Topping",
+ "French": "French",
+ "Turkish": "Turkish",
+ "Spanish": "Spanish",
+ "Russian": "Russian",
+ "The thing which happens on the 5th of every month": "The thing which happens on the 5th of every month",
+ "The thing which happens daily": "The thing which happens daily",
+ "The thing which happens on Mondays and Wednesdays": "The thing which happens on Mondays and Wednesdays",
+ "Swedish": "Swedish",
+ "Polish": "Polish",
+ "DemoSupermarket1": "Walmart",
+ "DemoSupermarket2": "Kroger",
+ "numberFormats": {
+ "currency": {
+ "style": "currency",
+ "notation": "standard"
+ },
+ "decimal": {
+ "style": "decimal",
+ "minimumFractionDigits": 2,
+ "maximumFractionDigits": 2
+ },
+ "avoid-decimal": {
+ "style": "decimal",
+ "minimumFractionDigits": 0,
+ "maximumFractionDigits": 2
+ },
+ "percent": {
+ "style": "percent",
+ "useGrouping": false
+ }
+ },
+ "primevue": {
+ "startsWith": "Starts with",
+ "contains": "Contains",
+ "notContains": "Not contains",
+ "endsWith": "Ends with",
+ "equals": "Equals",
+ "notEquals": "Not equals",
+ "noFilter": "No Filter",
+ "lt": "Less than",
+ "lte": "Less than or equal to",
+ "gt": "Greater than",
+ "gte": "Greater than or equal to",
+ "dateIs": "Date is",
+ "dateIsNot": "Date is not",
+ "dateBefore": "Date is before",
+ "dateAfter": "Date is after",
+ "clear": "Clear",
+ "apply": "Apply",
+ "matchAll": "Match All",
+ "matchAny": "Match Any",
+ "addRule": "Add Rule",
+ "removeRule": "Remove Rule",
+ "accept": "Yes",
+ "reject": "No",
+ "choose": "Choose",
+ "upload": "Upload",
+ "cancel": "Cancel",
+ "dayNames": [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday"
+ ],
+ "dayNamesShort": [
+ "Sun",
+ "Mon",
+ "Tue",
+ "Wed",
+ "Thu",
+ "Fri",
+ "Sat"
+ ],
+ "dayNamesMin": [
+ "Su",
+ "Mo",
+ "Tu",
+ "We",
+ "Th",
+ "Fr",
+ "Sa"
+ ],
+ "monthNames": [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December"
+ ],
+ "monthNamesShort": [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec"
+ ],
+ "today": "Today",
+ "weekHeader": "Wk",
+ "firstDayOfWeek": 0,
+ "dateFormat": "yy-mm-dd",
+ "weak": "Weak",
+ "medium": "Medium",
+ "strong": "Strong",
+ "passwordPrompt": "Enter a password",
+ "emptyFilterMessage": "No results found",
+ "emptyMessage": "No available options"
+ }
+}
\ No newline at end of file
diff --git a/locale/en_GB.json b/locale/en_GB.json
new file mode 100644
index 00000000..02dcc3f1
--- /dev/null
+++ b/locale/en_GB.json
@@ -0,0 +1,930 @@
+{
+ "Stock overview": "Stock overview",
+ "{count} product expires | {count} products expiring": "",
+ "within the next day | within the next {count} days": "",
+ "{count} product is already expired | {count} products are already expired": "{count} product is already expired | {count} products are already expired",
+ "{count} product is overdue | {count} products are overdue": "",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount",
+ "Product": "Product",
+ "{count} Product | {count} Products": "",
+ "Amount": "Amount",
+ "Logout": "Logout",
+ "Chores overview": "Chores overview",
+ "Batteries overview": "Batteries overview",
+ "Purchase": "Purchase",
+ "Consume": "Consume",
+ "Inventory": "Inventory",
+ "Shopping list": "Shopping list",
+ "Chore tracking": "Chore tracking",
+ "Battery tracking": "Battery tracking",
+ "Locations": "Locations",
+ "Stores": "Shops",
+ "Quantity units": "Quantity units",
+ "Chores": "Chores",
+ "Batteries": "Batteries",
+ "Chore": "Chore",
+ "Next estimated tracking": "Next estimated tracking",
+ "Last tracked": "Last tracked",
+ "Battery": "Battery",
+ "Last charged": "Last charged",
+ "Next planned charge cycle": "Next planned charge cycle",
+ "Best before": "Best before",
+ "OK": "OK",
+ "Product overview": "Product overview",
+ "Stock quantity unit": "Stock quantity unit",
+ "Stock amount": "Stock amount",
+ "Last purchased": "Last purchased",
+ "Last used": "Last used",
+ "Spoiled": "Spoiled",
+ "Barcode lookup is disabled": "Barcode lookup is disabled",
+ "will be added to the list of barcodes for the selected product on submit": "will be added to the list of barcodes for the selected product on submit",
+ "New amount": "New amount",
+ "Note": "Note",
+ "Tracked time": "Tracked time",
+ "Chore overview": "Chore overview",
+ "Tracked count": "Tracked count",
+ "Battery overview": "Battery overview",
+ "Charge cycles count": "Charge cycles count",
+ "Create shopping list item": "Create shopping list item",
+ "Edit shopping list item": "Edit shopping list item",
+ "Save": "Save",
+ "Add": "Add",
+ "Name": "Name",
+ "Location": "Location",
+ "Min. stock amount": "Min. stock amount",
+ "Description": "Description",
+ "Create product": "Create product",
+ "Barcode(s)": "Barcode(s)",
+ "Minimum stock amount": "Minimum stock amount",
+ "Default best before days": "Default best before days",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "Quantity unit stock",
+ "Factor purchase to stock quantity unit": "Factor purchase to stock quantity unit",
+ "Create location": "Create location",
+ "Create store": "Create shop",
+ "Create quantity unit": "Create quantity unit",
+ "Period type": "Period type",
+ "Period days": "Period days",
+ "Create chore": "Create chore",
+ "Used in": "Used in",
+ "Create battery": "Create battery",
+ "Edit battery": "Edit battery",
+ "Edit chore": "Edit chore",
+ "Edit quantity unit": "Edit quantity unit",
+ "Edit product": "Edit product",
+ "Edit location": "Edit location",
+ "Edit store": "Edit shop",
+ "Record data": "Record data",
+ "Manage master data": "Manage master data",
+ "This will apply to added products": "This will apply to added products",
+ "never": "never",
+ "Add products that are below defined min. stock amount": "Add products that are below defined min. stock amount",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "This means 1 {string1} purchased will be converted into {string2} {string3} in stock",
+ "Login": "Login",
+ "Username": "Username",
+ "Password": "Password",
+ "Invalid credentials, please try again": "Invalid credentials, please try again",
+ "Are you sure to delete battery \"{string0}\"?": "Are you sure to delete battery \"{string0}\"?",
+ "Yes": "Yes",
+ "No": "No",
+ "Are you sure to delete chore \"{string0}\"?": "Are you sure to delete chore \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" could not be resolved to a product, how do you want to proceed?",
+ "Create or assign product": "Create or assign product",
+ "Cancel": "Cancel",
+ "Add as new product": "Add as new product",
+ "Add as barcode to existing product": "Add as barcode to existing product",
+ "Add as new product and prefill barcode": "Add as new product and prefill barcode",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Are you sure to delete quantity unit \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Are you sure to delete product \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Are you sure to delete location \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Are you sure to delete shop \"{string0}\"?",
+ "Manage API keys": "Manage API keys",
+ "REST API & data model documentation": "REST API & data model documentation",
+ "API keys": "API keys",
+ "Create new API key": "Create new API key",
+ "API key": "API key",
+ "Expires": "Expires",
+ "Created": "Created",
+ "This product is not in stock": "This product is not in stock",
+ "This means {string0} will be added to stock": "This means {string0} will be added to stock",
+ "This means {string0} will be removed from stock": "This means {string0} will be removed from stock",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "This means the next execution of this chore is scheduled {string0} days after the last execution",
+ "Removed {string1} of {string2} from stock": "Removed {string1} of {string2} from stock",
+ "About grocy": "About grocy",
+ "Close": "Close",
+ "Released on": "Released on",
+ "Added {string1} of {string2} to stock": "Added {string1} of {string2} to stock",
+ "Stock amount of {string1} is now {string2}": "Stock amount of {string1} is now {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Tracked execution of chore {string1} on {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Tracked charge cycle of battery {string1} on {string2}",
+ "Consume all {string0} which are currently in stock": "Consume all {string0} which are currently in stock",
+ "All": "All",
+ "Search": "Search",
+ "Not logged in": "Not logged in",
+ "You have to select a product": "You have to select a product",
+ "You have to select a chore": "You have to select a chore",
+ "You have to select a battery": "You have to select a battery",
+ "A name is required": "A name is required",
+ "A location is required": "A location is required",
+ "A quantity unit is required": "A quantity unit is required",
+ "A period type is required": "A period type is required",
+ "A best before date is required": "A best before date is required",
+ "Settings": "Settings",
+ "This can only be before now": "This can only be before now",
+ "Calendar": "Calendar",
+ "Recipes": "Recipes",
+ "Edit recipe": "Edit recipe",
+ "Ingredients list": "Ingredients list",
+ "Add recipe ingredient": "Add recipe ingredient",
+ "Edit recipe ingredient": "Edit recipe ingredient",
+ "Are you sure to delete recipe \"{string0}\"?": "Are you sure to delete recipe \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Are you sure to delete recipe ingredient \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Are you sure to empty shopping list \"{string0}\"?",
+ "Clear list": "Clear list",
+ "Requirements fulfilled": "Requirements fulfilled",
+ "Put missing products on shopping list": "Put missing products on shopping list",
+ "Enough in stock": "Enough in stock",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list",
+ "Expand to fullscreen": "Expand to fullscreen",
+ "Ingredients": "Ingredients",
+ "Preparation": "Preparation",
+ "Recipe": "Recipe",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Not enough in stock, {string1} missing, {string2} already on shopping list",
+ "Show notes": "Show notes",
+ "Put missing amount on shopping list": "Put missing amount on shopping list",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?",
+ "Added for recipe {string0}": "Added for recipe {string0}",
+ "Manage users": "Manage users",
+ "User": "User",
+ "Users": "Users",
+ "Are you sure to delete user \"{string0}\"?": "Are you sure to delete user \"{string0}\"?",
+ "Create user": "Create user",
+ "Edit user": "Edit user",
+ "First name": "First name",
+ "Last name": "Last name",
+ "A username is required": "A username is required",
+ "Confirm password": "Confirm password",
+ "Passwords do not match": "Passwords do not match",
+ "Change password": "Change password",
+ "Done by": "Done by",
+ "Last done by": "Last done by",
+ "Unknown": "Unknown",
+ "Chores journal": "Chores journal",
+ "0 means suggestions for the next charge cycle are disabled": "0 means suggestions for the next charge cycle are disabled",
+ "Charge cycle interval (days)": "Charge cycle interval (days)",
+ "Last price": "Last price",
+ "Price history": "Price history",
+ "No price history available": "No price history available",
+ "Price": "Price",
+ "Unit": "Unit",
+ "{count} Unit | {count} Units": "{count} Unit | {count} Units",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} chore is due to be done | {count} chores are due to be done",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} chore is overdue to be done | {count} chores are overdue to be done",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} battery is due to be charged | {count} batteries are due to be charged",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} battery is overdue to be charged | {count} batteries are overdue to be charged",
+ "in singular form": "in singular form",
+ "Quantity unit": "Quantity unit",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Removed all ingredients of recipe \"{string0}\" from stock",
+ "Consume all ingredients needed by this recipe": "Consume all ingredients needed by this recipe",
+ "Click to show technical details": "Click to show technical details",
+ "Error while saving, probably this item already exists": "Error while saving, probably this item already exists",
+ "Error details": "Error details",
+ "Tasks": "Tasks",
+ "Show done tasks": "Show done tasks",
+ "Task": "Task",
+ "Due": "Due",
+ "Assigned to": "Assigned to",
+ "Mark task \"{string0}\" as completed": "Mark task \"{string0}\" as completed",
+ "Uncategorized": "Uncategorized",
+ "Task categories": "Task categories",
+ "Create task": "Create task",
+ "A due date is required": "A due date is required",
+ "Category": "Category",
+ "Edit task": "Edit task",
+ "Are you sure to delete task \"{string0}\"?": "Are you sure to delete task \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} task is due to be done | {count} tasks are due to be done",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} task is overdue to be done | {count} tasks are overdue to be done",
+ "Edit task category": "Edit task category",
+ "Create task category": "Create task category",
+ "Product groups": "Product groups",
+ "Ungrouped": "Ungrouped",
+ "Create product group": "Create product group",
+ "Edit product group": "Edit product group",
+ "Product group": "Product group",
+ "Are you sure to delete product group \"{string0}\"?": "Are you sure to delete product group \"{string0}\"?",
+ "Stay logged in permanently": "Stay logged in permanently",
+ "When not set, you will get logged out at latest after 30 days": "When not set, you will get logged out at latest after 30 days",
+ "Status": "Status",
+ "Below min. stock amount": "Below min. stock amount",
+ "Expiring soon": "Expiring soon",
+ "Already expired": "Already expired",
+ "Due soon": "Due soon",
+ "Overdue": "Overdue",
+ "View settings": "View settings",
+ "Auto reload on external changes": "Auto reload on external changes",
+ "Enable night mode": "Enable night mode",
+ "Auto enable in time range": "Auto enable in time range",
+ "From": "From",
+ "in format": "in format",
+ "To": "To",
+ "Time range goes over midnight": "Time range goes over midnight",
+ "Product picture": "Product picture",
+ "No file selected": "No file selected",
+ "Delete": "Delete",
+ "Select file": "Select file",
+ "Image of product {string0}": "Image of product {string0}",
+ "Deletion not possible": "",
+ "Equipment": "Equipment",
+ "Instruction manual": "Instruction manual",
+ "The selected equipment has no instruction manual": "The selected equipment has no instruction manual",
+ "Notes": "Notes",
+ "Edit equipment": "Edit equipment",
+ "Create equipment": "Create equipment",
+ "The current file will be deleted on save": "",
+ "No picture available": "No picture available",
+ "Presets for new products": "Presets for new products",
+ "Included recipes": "Included recipes",
+ "A recipe is required": "A recipe is required",
+ "Add included recipe": "Add included recipe",
+ "Edit included recipe": "Edit included recipe",
+ "Group": "Group",
+ "This will be used as a headline to group ingredients together": "This will be used as a headline to group ingredients together",
+ "Journal": "Journal",
+ "Stock journal": "Stock journal",
+ "Undone on": "Undone on",
+ "Batteries journal": "Batteries journal",
+ "Undo charge cycle": "Undo charge cycle",
+ "Undo chore execution": "Undo chore execution",
+ "Chore execution successfully undone": "Chore execution successfully undone",
+ "Undo": "Undo",
+ "Booking successfully undone": "Booking successfully undone",
+ "Charge cycle successfully undone": "Charge cycle successfully undone",
+ "Disable stock fulfillment checking for this ingredient": "Disable stock fulfillment checking for this ingredient",
+ "Add all list items to stock": "Add all list items to stock",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Adding shopping list item {string1} of {string2}",
+ "Use a specific stock item": "Use a specific stock item",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Mark {string1} of {string2} as open",
+ "Marked {string1} of {string2} as opened": "Marked {string1} of {string2} as opened",
+ "Mark as opened": "Mark as opened",
+ "Not opened": "Not opened",
+ "Opened": "Opened",
+ "{string0} opened": "{string0} opened",
+ "Product due": "",
+ "Task due": "Task due",
+ "Chore due": "Chore due",
+ "Battery charge cycle due": "Battery charge cycle due",
+ "Show clock in header": "Show clock in header",
+ "Stock settings": "Stock settings",
+ "Shopping list to stock workflow": "Shopping list to stock workflow",
+ "Skip": "Skip",
+ "Servings": "Servings",
+ "Costs": "Costs",
+ "Based on the prices of the last purchase per product": "Based on the prices of the last purchase per product",
+ "The ingredients listed here result in this amount of servings": "The ingredients listed here result in this amount of servings",
+ "Do not check against the shopping list when adding missing items to it": "Do not check against the shopping list when adding missing items to it",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list",
+ "Picture": "Picture",
+ "Uncheck ingredients to not put them on the shopping list": "Uncheck ingredients to not put them on the shopping list",
+ "This is for statistical purposes only": "This is for statistical purposes only",
+ "You have to select a recipe": "You have to select a recipe",
+ "Key type": "Key type",
+ "Share/Integrate calendar (iCal)": "Share/Integrate calendar (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Use the following (public) URL to share or integrate the calendar in iCal format",
+ "Allow partial units in stock": "Allow partial units in stock",
+ "Enable tare weight handling": "Enable tare weight handling",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below",
+ "Tare weight": "Tare weight",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated",
+ "You have to select a location": "You have to select a location",
+ "You have to select a store": "You have to select a shop",
+ "List": "List",
+ "Gallery": "Gallery",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Journal for this battery",
+ "System info": "System info",
+ "Changelog": "Changelog",
+ "will be multiplied by a factor of {string1} to get {string2}": "will be multiplied by a factor of {string1} to get {string2}",
+ "The given date is earlier than today, are you sure?": "The given date is earlier than today, are you sure?",
+ "Product count": "Product count",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "This will be used as the default setting when adding this product as a recipe ingredient",
+ "Add item": "Add item",
+ "Selected shopping list": "Selected shopping list",
+ "New shopping list": "New shopping list",
+ "Delete shopping list": "Delete shopping list",
+ "Chores settings": "Chores settings",
+ "Batteries settings": "Batteries settings",
+ "Tasks settings": "Tasks settings",
+ "Create shopping list": "Create shopping list",
+ "Are you sure to delete shopping list \"{string0}\"?": "Are you sure to delete shopping list \"{string0}\"?",
+ "Average shelf life": "Average shelf life",
+ "Spoil rate": "Spoil rate",
+ "Show more": "Show more",
+ "Show less": "Show less",
+ "The amount must be between {string1} and {string2}": "The amount must be between {string1} and {string2}",
+ "Day of month": "Day of month",
+ "Monday": "Monday",
+ "Tuesday": "Tuesday",
+ "Wednesday": "Wednesday",
+ "Thursday": "Thursday",
+ "Friday": "Friday",
+ "Saturday": "Saturday",
+ "Sunday": "Sunday",
+ "Configure userfields": "Configure userfields",
+ "Userfields": "Userfields",
+ "Entity": "Entity",
+ "Caption": "Caption",
+ "Type": "Type",
+ "Create userfield": "Create userfield",
+ "A entity is required": "A entity is required",
+ "A caption is required": "A caption is required",
+ "A type is required": "A type is required",
+ "Show as column in tables": "Show as column in tables",
+ "This is required and can only contain letters and numbers": "This is required and can only contain letters and numbers",
+ "Edit userfield": "Edit userfield",
+ "Plural forms": "Plural forms",
+ "One plural form per line, the current language requires": "One plural form per line, the current language requires",
+ "Plural count": "Plural count",
+ "Plural rule": "Plural rule",
+ "in plural form": "in plural form",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing",
+ "Not enough in stock, but already on the shopping list": "Not enough in stock, but already on the shopping list",
+ "Not enough in stock": "Not enough in stock",
+ "Expiring soon days": "Expiring soon days",
+ "Default location": "Default location",
+ "Default amount for purchase": "Default amount for purchase",
+ "Default amount for consume": "Default amount for consume",
+ "Variable amount": "Variable amount",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking",
+ "Track date only": "Track date only",
+ "When enabled only the day of an execution is tracked, not the time": "When enabled only the day of an execution is tracked, not the time",
+ "Consume {string1} of {string2}": "Consume {string1} of {string2}",
+ "Meal plan": "Meal plan",
+ "Add recipe on {string0}": "Add recipe on {string0}",
+ "{count} serving | {count} servings": "{count} serving | {count} servings",
+ "Week costs": "Week costs",
+ "Configuration": "Configuration",
+ "A predefined list of values, one per line": "A predefined list of values, one per line",
+ "Products": "Products",
+ "Marked task {string0} as completed on {string0}": "Marked task {string0} as completed on {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Booking has subsequent dependent bookings, undo not possible",
+ "per serving": "per serving",
+ "Never": "Never",
+ "Today": "Today",
+ "Consume {string1} of {string2} as spoiled": "Consume {string1} of {string2} as spoiled",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed",
+ "Undo task": "",
+ "Due date rollover": "Due date rollover",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "When enabled the chore can never be overdue, the due date will shift forward each day when due",
+ "Location Content Sheet": "",
+ "Print": "Print",
+ "all locations": "all locations",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "this location",
+ "Consumed amount": "Consumend amount",
+ "Time of printing": "Time of printing",
+ "Are you sure to delete equipment \"{string0}\"?": "Are you sure to delete equipment \"{string0}\"?",
+ "Parent product": "Parent product",
+ "Not possible because this product is already used as a parent product in another product": "Not possible because this product is already used as a parent product in another product",
+ "Default conversions": "Default conversions",
+ "Factor": "Factor",
+ "1 {string0} is the same as...": "1 {string0} is the same as...",
+ "Create QU conversion": "Create QU conversion",
+ "Default for QU": "Default for QU",
+ "Quantity unit from": "Quantity unit from",
+ "Quantity unit to": "Quantity unit to",
+ "This cannot be equal to {string0}": "This cannot be equal to {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "This means 1 {string1} is the same as {string2} {string3}",
+ "QU conversions": "QU conversions",
+ "Product overrides": "Product overrides",
+ "Override for product": "Override for product",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Edit QU conversion",
+ "An assignment type is required": "An assignment type is required",
+ "Assignment type": "Assignment type",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "This means the next execution of this chore is scheduled 1 day after the last execution",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below",
+ "This means the next execution of this chore is not scheduled": "This means the next execution of this chore is not scheduled",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "This means the next execution of this chore is scheduled on the below selected day of each month",
+ "This means the next execution of this chore will not be assigned to anyone": "This means the next execution of this chore will not be assigned to anyone",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "This means the next execution of this chore will be assigned to the one who executed it least",
+ "This means the next execution of this chore will be assigned randomly": "This means the next execution of this chore will be assigned randomly",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "This means the next execution of this chore will be assigned to the next one in alphabetical order",
+ "Assign to": "Assign to",
+ "This assignment type requires that at least one is assigned": "This assignment type requires that at least one is assigned",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} chore is assigned to me | {count} chores are assigned to me",
+ "Assigned to me": "Assigned to me",
+ "assigned to {string0}": "assigned to {string0}",
+ "Assignment": "Assignment",
+ "Consume product on chore execution": "Consume product on chore execution",
+ "Are you sure to delete user field \"{string0}\"?": "Are you sure to delete user field \"{string0}\"?",
+ "Userentities": "Userentities",
+ "Create userentity": "Create userentity",
+ "Show in sidebar menu": "Show in sidebar menu",
+ "Edit userentity": "Edit userentity",
+ "Edit {string0}": "Edit {string0}",
+ "Create {string0}": "Create {string0}",
+ "Are you sure to delete this userobject?": "Are you sure to delete this userobject?",
+ "Icon CSS class": "Icon CSS class",
+ "For example": "For example",
+ "Configure fields": "Configure fields",
+ "Quantity unit plural form testing": "Quantity unit plural form testing",
+ "Result": "Result",
+ "Test plural forms": "Test plural forms",
+ "Scan a barcode": "Scan a barcode",
+ "Error while initializing the barcode scanning library": "Error while initializing the barcode scanning library",
+ "The resulting price of this ingredient will be multiplied by this factor": "The resulting price of this ingredient will be multiplied by this factor",
+ "Price factor": "Price factor",
+ "Do you find grocy useful?": "Do you find grocy useful?",
+ "Say thanks": "Say thanks",
+ "Search for recipes containing this product": "Search for recipes containing this product",
+ "Add to shopping list": "Add to shopping list",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Added {string1} of {string2} to the shopping list \"{string3}\"",
+ "Output": "Output",
+ "Energy (kcal)": "Energy (kcal)",
+ "Per stock quantity unit": "",
+ "Barcode scanner testing": "Barcode scanner testing",
+ "Expected barcode": "Expected barcode",
+ "Scan field": "Scan field",
+ "Scanned barcodes": "Scanned barcodes",
+ "Hit": "Hit",
+ "Miss": "Miss",
+ "Display recipe": "Display recipe",
+ "Accumulate sub products min. stock amount": "Accumulate sub products min. stock amount",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product",
+ "Are you sure to remove this conversion?": "Are you sure to remove this conversion?",
+ "Unit price": "Unit price",
+ "Total price": "Total price",
+ "in {string0} and based on the purchase quantity unit": "in {string0} and based on the purchase quantity unit",
+ "Unlimited": "Unlimited",
+ "Clear": "Clear",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Are you sure to remove the included recipe \"{string0}\"?",
+ "Period interval": "Period interval",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "This means the next execution of this chore should only be scheduled every {string0} days",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "This means the next execution of this chore should only be scheduled every {string0} weeks",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "This means the next execution of this chore should only be scheduled every {string0} months",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "This means the next execution of this chore is scheduled 1 year after the last execution",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "This means the next execution of this chore should only be scheduled every {string0} years",
+ "Transfer": "Transfer",
+ "From location": "From location",
+ "To location": "To location",
+ "There are no units available at this location": "There are no units available at this location",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Transfered {string1} of {string2} from {string3} to {string4}",
+ "Stock entries": "",
+ "Best before date": "Best before date",
+ "Purchased date": "Purchased date",
+ "Consume all {string0} for this stock entry": "Consume all {string0} for this stock entry",
+ "The amount cannot be lower than {string1}": "The amount cannot be lower than {string1}",
+ "Stock entry successfully updated": "Stock entry successfully updated",
+ "Edit stock entry": "Edit stock entry",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection",
+ "Keep screen on": "",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Keep screen on while displaying a \"fullscreen-card\"",
+ "A purchased date is required": "A purchased date is required",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Produces product",
+ "This booking cannot be undone": "This booking cannot be undone",
+ "Booking does not exist or was already undone": "Booking does not exist or was already undone",
+ "Are you sure to delete API key \"{string0}\"?": "Are you sure to delete API key \"{string0}\"?",
+ "Add note": "Add note",
+ "Add note on {string0}": "Add note on {string0}",
+ "per day": "per day",
+ "Only undone items": "Only undone items",
+ "Add product": "Add product",
+ "Add product on {string0}": "Add product on {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Consume all ingredients needed by this weeks recipes or products",
+ "Meal plan recipe": "Meal plan recipe",
+ "Meal plan note": "Meal plan note",
+ "Meal plan product": "Meal plan product",
+ "Scan mode": "Scan mode",
+ "on": "on",
+ "off": "off",
+ "Scan mode is on but not all required fields could be populated automatically": "Scan mode is on but not all required fields could be populated automatically",
+ "Is freezer": "Is freezer",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings",
+ "This cannot be the same as the \"From\" location": "This cannot be the same as the \"From\" location",
+ "Thawed": "Thawed",
+ "Frozen": "Frozen",
+ "Are you sure to delete userentity \"{string0}\"?": "Are you sure to delete userentity \"{string0}\"?",
+ "Shopping list settings": "Shopping list settings",
+ "Show a month-view calendar": "Show a month-view calendar",
+ "Edit note on {string0}": "Edit note on {string0}",
+ "Edit product on {string0}": "Edit product on {string0}",
+ "Edit recipe on {string0}": "Edit recipe on {string0}",
+ "Desired servings": "Desired servings",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "Recipes settings",
+ "Recipe card": "Recipe card",
+ "Group ingredients by their product group": "Group ingredients by their product group",
+ "Unknown store": "Unknown shop",
+ "Store": "Shop",
+ "Transaction successfully undone": "Transaction successfully undone",
+ "Default store": "Default shop",
+ "Consume this stock entry": "Consume this stock entry",
+ "Mark this stock entry as open": "Mark this stock entry as open",
+ "Mark this item as done": "Mark this item as done",
+ "Edit this item": "Edit this item",
+ "Delete this item": "Delete this item",
+ "Show an icon if the product is already on the shopping list": "Show an icon if the product is already on the shopping list",
+ "Calories": "",
+ "means {string1} per {string2}": "means {string1} per {string2}",
+ "Create inverse QU conversion": "Create inverse QU conversion",
+ "Create recipe": "Create recipe",
+ "Save & continue to add ingredients and included recipes": "Save & continue to add ingredients and included recipes",
+ "Save & continue": "Save & continue",
+ "Save & return to recipes": "Save & return to recipes",
+ "Stock value": "Stock amount",
+ "Average price": "Average shelf life",
+ "Active": "Active",
+ "Barcodes": "Barcodes",
+ "Barcode": "Barcode",
+ "Create Barcode": "Create Barcode",
+ "Barcode for product": "Barcode for product",
+ "Edit Barcode": "Edit Barcode",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Not enough in stock (not included in costs), {string0} ingredient missing",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list",
+ "Quantity unit stock cannot be changed after first purchase": "Quantity unit stock cannot be changed after first purchase",
+ "Clear filter": "Clear filter",
+ "Permissions for user {string0}": "",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "",
+ "You are not allowed to view this page": "",
+ "Page not found": "",
+ "Unauthorized": "",
+ "Error source": "",
+ "Error message": "",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "",
+ "A server error occured while processing your request": "",
+ "If you think this is a bug, please report it": "",
+ "Language": "",
+ "User settings": "",
+ "Default": "",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | ",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": "",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "No assignment",
+ "who-least-did-first": "Who least did first",
+ "random": "Random",
+ "in-alphabetical-order": "In alphabetical order",
+ "timeago_locale": "en",
+ "timeago_nan": "NaN years ago",
+ "moment_locale": "x",
+ "datatables_localization": "{\"sEmptyTable\":\"No data available in table\",\"sInfo\":\"Showing _START_ to _END_ of _TOTAL_ entries\",\"sInfoEmpty\":\"Showing 0 to 0 of 0 entries\",\"sInfoFiltered\":\"(filtered from _MAX_ total entries)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Show _MENU_ entries\",\"sLoadingRecords\":\"Loading...\",\"sProcessing\":\"Processing...\",\"sSearch\":\"Search:\",\"sZeroRecords\":\"No matching records found\",\"oPaginate\":{\"sFirst\":\"First\",\"sLast\":\"Last\",\"sNext\":\"Next\",\"sPrevious\":\"Previous\"},\"oAria\":{\"sSortAscending\":\": activate to sort column ascending\",\"sSortDescending\":\": activate to sort column descending\"}}",
+ "summernote_locale": "x",
+ "fullcalendar_locale": "x",
+ "bootstrap-select_locale": "x",
+ "purchase": "Purchase",
+ "transfer_to": "Transfer To",
+ "transfer_from": "Transfer From",
+ "consume": "Consume",
+ "inventory-correction": "Inventory correction",
+ "product-opened": "Product opened",
+ "stock-edit-old": "Stock entry edited (old values)",
+ "stock-edit-new": "Stock entry edited (new values)",
+ "self-production": "Self-production",
+ "manually": "Manually",
+ "dynamic-regular": "Dynamic regular",
+ "daily": "Daily",
+ "weekly": "Weekly",
+ "monthly": "Monthly",
+ "yearly": "Yearly",
+ "text-single-line": "Text (single line)",
+ "text-multi-line": "Text (multi line)",
+ "number-integral": "Number (integral)",
+ "number-decimal": "Number (decimal)",
+ "date": "Date (without time)",
+ "datetime": "Date & time",
+ "checkbox": "Checkbox",
+ "preset-list": "Select list (a single item can be selected)",
+ "preset-checklist": "Select list (multiple items can be selected)",
+ "link": "Link",
+ "link-with-title": "Link (with title)",
+ "file": "File",
+ "image": "Image",
+ "ADMIN": "All permissions",
+ "USERS_CREATE": "Create users",
+ "USERS_EDIT": "Edit users (including passwords)",
+ "USERS_READ": "Show users",
+ "USERS_EDIT_SELF": "Edit own user data / change own password",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "Undo charge cycle",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "Track charge cycle",
+ "CHORE_TRACK_EXECUTION": "Track execution",
+ "CHORE_UNDO_EXECUTION": "Undo execution",
+ "MASTER_DATA_EDIT": "Edit master data",
+ "TASKS_UNDO_EXECUTION": "Undo execution",
+ "TASKS_MARK_COMPLETED": "Mark completed",
+ "STOCK_EDIT": "Edit stock entries",
+ "STOCK_TRANSFER": "Transfer",
+ "STOCK_INVENTORY": "Inventory",
+ "STOCK_CONSUME": "Consume",
+ "STOCK_OPEN": "Open products",
+ "STOCK_PURCHASE": "Purchase",
+ "SHOPPINGLIST_ITEMS_ADD": "Add items",
+ "SHOPPINGLIST_ITEMS_DELETE": "Remove items",
+ "USERS": "User management",
+ "STOCK": "Stock",
+ "SHOPPINGLIST": "Shopping list",
+ "CHORES": "Chores",
+ "BATTERIES": "Batteries",
+ "TASKS": "Tasks",
+ "RECIPES": "Recipes",
+ "EQUIPMENT": "Equipment",
+ "CALENDAR": "Calendar",
+ "RECIPES_MEALPLAN": "Meal plan",
+ "cs": "Czech",
+ "da": "Danish",
+ "de": "German",
+ "el_GR": "Greek",
+ "en": "English",
+ "en_GB": "English (Great Britain)",
+ "es": "Spanish",
+ "fr": "French",
+ "hu": "Hungarian",
+ "it": "Italian",
+ "ja": "Japanese",
+ "ko_KR": "Korean",
+ "nl": "Dutch",
+ "no": "Norwegian",
+ "pl": "Polish",
+ "pt_BR": "Portuguese (Brazil)",
+ "pt_PT": "Portuguese (Portugal)",
+ "ru": "Russian",
+ "sk_SK": "Slovak",
+ "sv_SE": "Swedish",
+ "tr": "Turkish",
+ "zh_TW": "Chinese (Taiwan)",
+ "zh_CN": "Chinese (China)",
+ "he_IL": "Hebrew (Israel)",
+ "ta": "Tamil",
+ "fi": "Finnish",
+ "Cookies": "Cookies",
+ "Chocolate": "Chocolate",
+ "Pantry": "Pantry",
+ "Candy cupboard": "Sweets cupboard",
+ "Tinned food cupboard": "Tinned food cupboard",
+ "Fridge": "Fridge",
+ "Piece | Pieces": "Piece | Pieces",
+ "Pack | Packs": "Pack | Packs",
+ "Glass | Glasses": "Glass | Glasses",
+ "Tin | Tins": "Tin | Tins",
+ "Can | Cans": "Can | Cans",
+ "Bunch | Bunches": "Bunch | Bunches",
+ "Gummy bears": "Gummy bears",
+ "Crisps": "Crisps",
+ "Eggs": "Eggs",
+ "Noodles": "Noodles",
+ "Pickles": "Pickles",
+ "Gulash soup": "Gulash soup",
+ "Yogurt": "Yogurt",
+ "Cheese": "Cheese",
+ "Cold cuts": "Cold cuts",
+ "Paprika": "Paprika",
+ "Cucumber": "Cucumber",
+ "Radish": "Radish",
+ "Tomato": "Tomato",
+ "Changed towels in the bathroom": "Changed towels in the bathroom",
+ "Cleaned the kitchen floor": "Cleaned the kitchen floor",
+ "Warranty ends": "Warranty ends",
+ "TV remote control": "TV remote control",
+ "Alarm clock": "Alarm clock",
+ "Heat remote control": "Heat remote control",
+ "Lawn mowed in the garden": "Lawn mowed in the garden",
+ "Some good snacks": "Some good snacks",
+ "Pizza dough": "Pizza dough",
+ "Sieved tomatoes": "Sieved tomatoes",
+ "Salami": "Salami",
+ "Toast": "Toast",
+ "Minced meat": "Minced meat",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti bolognese",
+ "Sandwiches": "Sandwiches",
+ "English": "English",
+ "German": "German",
+ "Italian": "Italian",
+ "This is the note content of the recipe ingredient": "This is the note content of the recipe ingredient",
+ "Demo User": "Demo User",
+ "Gram | Grams": "Gram | Grams",
+ "Flour": "Flour",
+ "Pancakes": "Pancakes",
+ "Sugar": "Sugar",
+ "Home": "Home",
+ "Life": "Life",
+ "Projects": "Projects",
+ "Repair the garage door": "Repair the garage door",
+ "Fork and improve grocy": "Fork and improve grocy",
+ "Find a solution for what to do when I forget the door keys": "Find a solution for what to do when I forget the door keys",
+ "Sweets": "Sweets",
+ "Bakery products": "Bakery products",
+ "Tinned food": "Tinned food",
+ "Butchery products": "Butchery products",
+ "Vegetables/Fruits": "Vegetables/Fruits",
+ "Refrigerated products": "Refrigerated products",
+ "Coffee machine": "Coffee machine",
+ "Dishwasher": "Dishwasher",
+ "Liter": "Litre",
+ "Liters": "Litres",
+ "Bottle": "Bottle",
+ "Bottles": "Bottles",
+ "Milk": "Milk",
+ "Chocolate sauce": "Chocolate sauce",
+ "Milliliters": "Millilitres",
+ "Milliliter": "Millilitre",
+ "Bottom": "Bottom",
+ "Topping": "Topping",
+ "French": "French",
+ "Turkish": "Turkish",
+ "Spanish": "Spanish",
+ "Russian": "Russian",
+ "The thing which happens on the 5th of every month": "The thing which happens on the 5th of every month",
+ "The thing which happens daily": "The thing which happens daily",
+ "The thing which happens on Mondays and Wednesdays": "The thing which happens on Mondays and Wednesdays",
+ "Swedish": "Swedish",
+ "Polish": "Polish",
+ "Milk Chocolate": "Milk Chocolate",
+ "Dark Chocolate": "Dark Chocolate",
+ "Slice | Slices": "Slice | Slices",
+ "Example userentity": "Example userentity",
+ "This is an example user entity...": "This is an example user entity...",
+ "Custom field": "Custom field",
+ "Example field value...": "Example field value...",
+ "Waffle rolls": "Waffle rolls",
+ "Danish": "Danish",
+ "Dutch": "Dutch",
+ "Norwegian": "Norwegian",
+ "Demo": "Demo",
+ "Stable version": "Stable version",
+ "Preview version": "Preview version",
+ "current release": "current release",
+ "not yet released": "not yet released",
+ "Portuguese (Brazil)": "Portuguese (Brazil)",
+ "This is a note": "This is a note",
+ "Freezer": "Freezer",
+ "Hungarian": "Hungarian",
+ "Slovak": "Slovak",
+ "Czech": "Czech",
+ "Portuguese (Portugal)": "Portuguese (Portugal)",
+ "DemoSupermarket1": "DemoSupermarket1",
+ "DemoSupermarket2": "DemoSupermarket2",
+ "Japanese": "Japanese",
+ "Chinese (Taiwan)": "Chinese (Taiwan)",
+ "Greek": "Greek",
+ "Korean": "Korean",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ },
+ "{count} product is below defined min": {
+ " stock amount | {count} products are below defined min": {
+ " stock amount": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/locale/es.json b/locale/es.json
new file mode 100644
index 00000000..ae4fc26a
--- /dev/null
+++ b/locale/es.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Resumen de inventario",
+ "{count} product expires | {count} products expiring": "{count} producto caducará | {count} productos caducarán",
+ "within the next day | within the next {count} days": "mañana | en los próximos {count} días",
+ "{count} product is already expired | {count} products are already expired": "{count} producto ha caducado | {count} productos han caducado",
+ "{count} product is overdue | {count} products are overdue": "{count} producto ha superado su fecha de consumo preferente | {count} productos han superado sus fechas de consumo preferente",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} producto por debajo del mínimo de existencias definido | {count} productos por debajo del mínimo de existencias definido",
+ "Product": "Producto",
+ "{count} Product | {count} Products": "{count} Producto | {count} Productos",
+ "Amount": "Cantidad",
+ "Logout": "Cerrar sesión",
+ "Chores overview": "Resumen de tareas del hogar",
+ "Batteries overview": "Resumen de baterías",
+ "Purchase": "Comprar",
+ "Consume": "Consumir",
+ "Inventory": "Inventario",
+ "Shopping list": "Lista de la compra",
+ "Chore tracking": "Registro de tareas del hogar",
+ "Battery tracking": "Registro de baterías",
+ "Locations": "Ubicaciones",
+ "Stores": "Tiendas",
+ "Quantity units": "Unidades",
+ "Chores": "Tareas del hogar",
+ "Batteries": "Baterías",
+ "Chore": "Tarea del hogar",
+ "Next estimated tracking": "Próximo registro estimado",
+ "Last tracked": "Último registro",
+ "Battery": "Batería",
+ "Last charged": "Última carga",
+ "Next planned charge cycle": "Siguiente ciclo de carga planificado",
+ "Best before": "Fecha de consumo preferente",
+ "OK": "OK",
+ "Product overview": "Resumen de producto",
+ "Stock quantity unit": "Unidad de inventario",
+ "Stock amount": "Existencias",
+ "Last purchased": "Última compra",
+ "Last used": "Último uso",
+ "Spoiled": "Desperdiciado",
+ "Barcode lookup is disabled": "El buscador de códigos de barras está desactivado",
+ "will be added to the list of barcodes for the selected product on submit": "al enviar, será añadido a la lista de códigos de barras para el producto seleccionado",
+ "New amount": "Cantidad nueva",
+ "Note": "Nota",
+ "Tracked time": "Fecha de registro",
+ "Chore overview": "Resumen de tarea del hogar",
+ "Tracked count": "Recuento registrado",
+ "Battery overview": "Resumen de batería",
+ "Charge cycles count": "Recuento de ciclos de carga",
+ "Create shopping list item": "Crear artículo de la lista de la compra",
+ "Edit shopping list item": "Modificar artículo de la lista de la compra",
+ "Save": "Guardar",
+ "Add": "Añadir",
+ "Name": "Nombre",
+ "Location": "Ubicación",
+ "Min. stock amount": "Mínimo de existencias",
+ "Description": "Descripción",
+ "Create product": "Crear producto",
+ "Barcode(s)": "Código(s) de barras",
+ "Minimum stock amount": "Mínimo de existencias",
+ "Default best before days": "Días hasta la fecha de consumo preferente predeterminados",
+ "Default quantity unit purchase": "Unidad de compra predeterminada",
+ "Quantity unit stock": "Unidad de inventario",
+ "Factor purchase to stock quantity unit": "Factor entre unidad de compra y unidad de inventario",
+ "Create location": "Crear ubicación",
+ "Create store": "Crear tienda",
+ "Create quantity unit": "Crear unidad",
+ "Period type": "Tipo de periodo",
+ "Period days": "Días del periodo",
+ "Create chore": "Crear tarea del hogar",
+ "Used in": "Usado en",
+ "Create battery": "Crear batería",
+ "Edit battery": "Modificar batería",
+ "Edit chore": "Modificar tarea del hogar",
+ "Edit quantity unit": "Modificar unidad",
+ "Edit product": "Modificar producto",
+ "Edit location": "Modificar ubicación",
+ "Edit store": "Modificar tienda",
+ "Record data": "Registrar datos",
+ "Manage master data": "Administrar datos maestros",
+ "This will apply to added products": "Esto se aplicará a los productos añadidos",
+ "never": "nunca",
+ "Add products that are below defined min. stock amount": "Añadir productos que están por debajo del mínimo de existencias definido",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Esto quiere decir que 1 {string1} comprado se convertirá en {string2} {string3} en el inventario",
+ "Login": "Iniciar sesión",
+ "Username": "Nombre de usuario",
+ "Password": "Contraseña",
+ "Invalid credentials, please try again": "Credenciales inválidas, intente nuevamente",
+ "Are you sure to delete battery \"{string0}\"?": "¿Está seguro de querer eliminar la batería \"{string0}\"?",
+ "Yes": "Sí",
+ "No": "No",
+ "Are you sure to delete chore \"{string0}\"?": "¿Está seguro de querer eliminar la tarea del hogar \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" no se pudo asociar a ningún producto, ¿cómo quiere proceder?",
+ "Create or assign product": "Crear o asignar un producto",
+ "Cancel": "Cancelar",
+ "Add as new product": "Añadir como un nuevo producto",
+ "Add as barcode to existing product": "Añadir como código de barras de un producto existente",
+ "Add as new product and prefill barcode": "Añadir como producto nuevo y rellenar el código de barras automáticamente",
+ "Are you sure to delete quantity unit \"{string0}\"?": "¿Está seguro de querer eliminar la unidad \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "¿Está seguro de querer eliminar el producto \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "¿Está seguro de querer eliminar la ubicación \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "¿Está seguro de querer eliminar la tienda \"{string0}\"?",
+ "Manage API keys": "Administrar las claves de API",
+ "REST API & data model documentation": "Documentación de la API REST y modelo de datos",
+ "API keys": "Claves de API",
+ "Create new API key": "Crear nueva clave de API",
+ "API key": "Clave de API",
+ "Expires": "Caduca",
+ "Created": "Creada",
+ "This product is not in stock": "Este producto no está en el inventario",
+ "This means {string0} will be added to stock": "Esto quiere decir que {string0} será añadido al inventario",
+ "This means {string0} will be removed from stock": "Quiere decir que {string0} será eliminado del inventario",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Esto quiere decir que la siguiente ejecución de esta tarea está prevista para {string0} días después de la última ejecución",
+ "Removed {string1} of {string2} from stock": "Eliminado del inventario {string1} de {string2}",
+ "About grocy": "Acerca de Grocy",
+ "Close": "Cerrar",
+ "Released on": "Publicado el",
+ "Added {string1} of {string2} to stock": "Añadido {string1} de {string2} al inventario",
+ "Stock amount of {string1} is now {string2}": "La cantidad de existencias de {string1} ahora es {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Registrada ejecución de tarea del hogar {string1} en {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Registrado ciclo de carga de la batería {string1} en {string2}",
+ "Consume all {string0} which are currently in stock": "Consumir todas las existencias de {string0}",
+ "All": "Todo",
+ "Search": "Buscar",
+ "Not logged in": "Sesión no iniciada",
+ "You have to select a product": "Debe seleccionar un producto",
+ "You have to select a chore": "Debe seleccionar una tarea del hogar",
+ "You have to select a battery": "Debe seleccionar una batería",
+ "A name is required": "Es necesario un nombre",
+ "A location is required": "Es necesaria una ubicación",
+ "A quantity unit is required": "Es necesaria una unidad",
+ "A period type is required": "Es necesario un tipo de periodo",
+ "A best before date is required": "Es necesaria una fecha de consumo preferente",
+ "Settings": "Configuración",
+ "This can only be before now": "Sólo puede ser antes que ahora",
+ "Calendar": "Calendario",
+ "Recipes": "Recetas",
+ "Edit recipe": "Modificar receta",
+ "Ingredients list": "Lista de ingredientes",
+ "Add recipe ingredient": "Añadir ingrediente de la receta",
+ "Edit recipe ingredient": "Modificar ingrediente de la receta",
+ "Are you sure to delete recipe \"{string0}\"?": "¿Está seguro de querer eliminar la receta \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "¿Está seguro de querer eliminar el ingrediente \"{string0}\" de la receta?",
+ "Are you sure to empty shopping list \"{string0}\"?": "¿Está seguro de querer vaciar la lista de la compra \"{string0}\"?",
+ "Clear list": "Vaciar lista",
+ "Requirements fulfilled": "Requisitos satisfechos",
+ "Put missing products on shopping list": "Añadir productos faltantes a la lista de la compra",
+ "Enough in stock": "Existencias suficientes",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "No hay existencias suficientes: falta {count} ingrediente pero ya está en la lista de la compra | No hay existencias suficientes: faltan {count} ingredientes, pero ya están en la lista de la compra",
+ "Expand to fullscreen": "Pantalla completa",
+ "Ingredients": "Ingredientes",
+ "Preparation": "Preparación",
+ "Recipe": "Receta",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "No hay existencias suficientes: faltan {string1}, pero {string2} ya están en la lista de la compra",
+ "Show notes": "Mostrar notas",
+ "Put missing amount on shopping list": "Añadir cantidades faltantes en la lista de la compra",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "¿Está seguro de querer poner todos los ingredientes faltantes para la receta \"{string0}\" en la lista de la compra?",
+ "Added for recipe {string0}": "Añadido para la receta {string0}",
+ "Manage users": "Administrar usuarios",
+ "User": "Usuario",
+ "Users": "Usuarios",
+ "Are you sure to delete user \"{string0}\"?": "¿Está seguro de querer eliminar el usuario \"{string0}\"?",
+ "Create user": "Crear usuario",
+ "Edit user": "Modificar usuario",
+ "First name": "Nombre",
+ "Last name": "Apellidos",
+ "A username is required": "Es necesario un nombre de usuario",
+ "Confirm password": "Confirme la contraseña",
+ "Passwords do not match": "Las contraseñas no coinciden",
+ "Change password": "Cambiar contraseña",
+ "Done by": "Hecho por",
+ "Last done by": "Última vez hecho por",
+ "Unknown": "Desconocido",
+ "Chores journal": "Diario de tareas del hogar",
+ "0 means suggestions for the next charge cycle are disabled": "0 significa que las sugerencias para el siguiente ciclo de carga estarán desactivadas",
+ "Charge cycle interval (days)": "Intervalo del ciclo de carga (días)",
+ "Last price": "Último precio",
+ "Price history": "Histórico de precios",
+ "No price history available": "No hay histórico de precios disponible",
+ "Price": "Precio",
+ "Unit": "Unidad",
+ "{count} Unit | {count} Units": "{count} Unidad | {count} Unidades",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} tarea del hogar debe hacerse | {count} tareas del hogar deben hacerse",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} tarea del hogar debería haberse hecho | {count} tareas del hogar deberían haberse hecho",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} batería debe cargarse | {count} baterías deben cargarse",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} batería debería haberse cargado | {count} baterías deberían haberse cargado",
+ "in singular form": "en singular",
+ "Quantity unit": "Unidad",
+ "Only check if any amount is in stock": "Solo comprobar si hay existencias",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "¿Está seguro de querer consumir todos los ingredientes necesarios para la receta \"{string0}\"? (Los ingredientes marcados con \"solo comprobar si hay existencias\" serán ignorados)",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Todos los ingredientes de la receta eliminados del inventario \"{string0}\"",
+ "Consume all ingredients needed by this recipe": "Consumir todos los ingredientes necesarios para esta receta",
+ "Click to show technical details": "Mostrar detalles técnicos",
+ "Error while saving, probably this item already exists": "Error al guardar, probablemente este artículo ya existe",
+ "Error details": "Detalles del error",
+ "Tasks": "Tareas",
+ "Show done tasks": "Mostrar tareas completadas",
+ "Task": "Tarea",
+ "Due": "Fecha límite",
+ "Assigned to": "Asignada a",
+ "Mark task \"{string0}\" as completed": "Marcar la tarea \"{string0}\" como completada",
+ "Uncategorized": "Sin categorizar",
+ "Task categories": "Categorías de tareas",
+ "Create task": "Crear tarea",
+ "A due date is required": "Es necesaria una fecha límite",
+ "Category": "Categoría",
+ "Edit task": "Modificar tarea",
+ "Are you sure to delete task \"{string0}\"?": "¿Está seguro de querer eliminar la tarea \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} tarea debe hacerse | {count} tareas deben hacerse",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} tarea debería haberse hecho | {count} tareas deberían haberse hecho",
+ "Edit task category": "Modificar la categoría de la tarea",
+ "Create task category": "Crear categoría de tarea",
+ "Product groups": "Grupos de producto",
+ "Ungrouped": "Sin agrupar",
+ "Create product group": "Crear grupo de productos",
+ "Edit product group": "Modificar grupo del producto",
+ "Product group": "Grupo de productos",
+ "Are you sure to delete product group \"{string0}\"?": "¿Está seguro de querer eliminar el grupo de productos \"{string0}\"?",
+ "Stay logged in permanently": "Mantener la sesión iniciada",
+ "When not set, you will get logged out at latest after 30 days": "Si no está marcado, se cerrará la sesión como máximo en 30 días",
+ "Status": "Estado",
+ "Below min. stock amount": "Por debajo del mínimo de existencias",
+ "Expiring soon": "Caduca pronto",
+ "Already expired": "Ya caducado",
+ "Due soon": "Fecha límite próxima",
+ "Overdue": "Fecha límite superada",
+ "View settings": "Ver configuración",
+ "Auto reload on external changes": "Recargar automáticamente cuando haya cambios externos",
+ "Enable night mode": "Activar modo noche",
+ "Auto enable in time range": "Activar automáticamente en una franja de tiempo",
+ "From": "Desde",
+ "in format": "en formato",
+ "To": "Hasta",
+ "Time range goes over midnight": "La franja del tiempo incluye la media noche",
+ "Product picture": "Imagen del producto",
+ "No file selected": "No hay fichero seleccionado",
+ "Delete": "Eliminar",
+ "Select file": "Seleccionar fichero",
+ "Image of product {string0}": "Imagen del producto {string0}",
+ "Deletion not possible": "No se pudo eliminar",
+ "Equipment": "Equipamiento",
+ "Instruction manual": "Manual de instrucciones",
+ "The selected equipment has no instruction manual": "El equipamiento seleccionado no tiene manual de instrucciones",
+ "Notes": "Notas",
+ "Edit equipment": "Modificar equipamiento",
+ "Create equipment": "Crear equipamiento",
+ "The current file will be deleted on save": "El fichero actual será eliminado al guardar",
+ "No picture available": "No hay imagen disponible",
+ "Presets for new products": "Configuración predeterminada para productos nuevos",
+ "Included recipes": "Recetas incluidas",
+ "A recipe is required": "Es necesaria una receta",
+ "Add included recipe": "Añadir receta incluida",
+ "Edit included recipe": "Modificar receta incluida",
+ "Group": "Grupo",
+ "This will be used as a headline to group ingredients together": "Esto se usará como titular del grupo de ingredientes",
+ "Journal": "Diario",
+ "Stock journal": "Diario de inventario",
+ "Undone on": "Deshecho el",
+ "Batteries journal": "Diario de baterías",
+ "Undo charge cycle": "Deshacer el ciclo de carga",
+ "Undo chore execution": "Deshacer ejecución de tarea del hogar",
+ "Chore execution successfully undone": "Ejecución de tarea del hogar deshecha",
+ "Undo": "Deshacer",
+ "Booking successfully undone": "La entrada se deshizo con éxito",
+ "Charge cycle successfully undone": "El ciclo de carga se deshizo con éxito",
+ "Disable stock fulfillment checking for this ingredient": "Desactivar comprobación de existencias para este ingrediente",
+ "Add all list items to stock": "Añadir todos los artículos de la lista al inventario",
+ "Add this item to stock": "Añadir este artículo al inventario",
+ "Adding shopping list item {string1} of {string2}": "Añadiendo el artículo {string1} de {string2} a la lista de la compra",
+ "Use a specific stock item": "Usar un artículo específico del inventario",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "El primer artículo de esta lista será selecionado según la regla predeterminada, que es \"Abiertos primero, luego el próximo en llegar a su fecha límite y luego el que se adquirió primero\"",
+ "Mark {string1} of {string2} as open": "Marcar {string1} de {string2} como abierto",
+ "Marked {string1} of {string2} as opened": "Marcado {string1} de {string2} como abierto",
+ "Mark as opened": "Marcar como abierto",
+ "Not opened": "Sin abrir",
+ "Opened": "Abierto",
+ "{string0} opened": "{string0} abierto",
+ "Product due": "Producto fecha límite",
+ "Task due": "Tarea pendiente",
+ "Chore due": "Tarea del hogar pendiente",
+ "Battery charge cycle due": "Ciclo de carga pendiente",
+ "Show clock in header": "Mostrar reloj en el encabezado",
+ "Stock settings": "Configuración del inventario",
+ "Shopping list to stock workflow": "Lista de la compra para el proceso de inventario",
+ "Skip": "Saltar",
+ "Servings": "Raciones",
+ "Costs": "Coste",
+ "Based on the prices of the last purchase per product": "Basado en los precios por producto de la última compra",
+ "The ingredients listed here result in this amount of servings": "Los ingredientes que aparecen corresponden a esta cantidad de raciones",
+ "Do not check against the shopping list when adding missing items to it": "No tener en cuenta los artículos de la lista de la compra al añadir los artículos faltantes",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "La cantidad predeterminada a añadir en la lista de la compra es la \"cantidad necesaria - cantidad de existencias - cantidad en la lista de la compra\". Cuando está activado, sólo se comprueban las existencias, no lo que ya está en la lista de la compra",
+ "Picture": "Imagen",
+ "Uncheck ingredients to not put them on the shopping list": "Desmarca ingredientes para no añadirlos a la lista de la compra",
+ "This is for statistical purposes only": "Sólo para fines estadísticos",
+ "You have to select a recipe": "Debe de seleccionar una receta",
+ "Key type": "Tipo de clave",
+ "Share/Integrate calendar (iCal)": "Compartir/integrar calendario (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Usa la siguiente URL (pública) para compartir o integrar el calendario en formato iCal",
+ "Allow partial units in stock": "Permitir unidades parciales en el inventario",
+ "Enable tare weight handling": "Activar peso de contenedor",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Esto es útil, por ejemplo, para harina en tarros: basta con pesar el tarro al comprar, consumir o inventariar. La nueva cantidad de existencias se calcula automáticamente en base a las existencias disponibles y el peso de contenedor definido aquí",
+ "Tare weight": "Peso de contenedor",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Peso del contenedor activado. Por favor, pesa el contenedor entero, la cantidad será calculada automáticamente",
+ "You have to select a location": "Debe seleccionar una ubicación",
+ "You have to select a store": "Debe seleccionar una tienda",
+ "List": "Lista",
+ "Gallery": "Galería",
+ "The current picture will be deleted on save": "La imagen actual será eliminada al guardar",
+ "Journal for this battery": "Diario para esta batería",
+ "System info": "Información del sistema",
+ "Changelog": "Registro de cambios",
+ "will be multiplied by a factor of {string1} to get {string2}": "será multiplicado por un factor de {string1} para obtener {string2}",
+ "The given date is earlier than today, are you sure?": "La fecha introducida es anterior a hoy, ¿está seguro?",
+ "Product count": "Cuenta de producto",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "Escribe un nuevo producto o código de barras y pulsa TAB para iniciar un proceso",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Esto se usará como configuración predeterminada cuando añadas este producto como ingrediente de una receta",
+ "Add item": "Añadir artículo",
+ "Selected shopping list": "Lista de la compra seleccionada",
+ "New shopping list": "Nueva lista de la compra",
+ "Delete shopping list": "Borrar lista de la compra",
+ "Chores settings": "Configuración de las tareas del hogar",
+ "Batteries settings": "Configuración de baterías",
+ "Tasks settings": "Configuración de tareas",
+ "Create shopping list": "Crear lista de la compra",
+ "Are you sure to delete shopping list \"{string0}\"?": "¿Está seguro de querer eliminar la lista de la compra \"{string0}\"?",
+ "Average shelf life": "Promedio de tiempo de almacenamiento",
+ "Spoil rate": "Ratio de desperdicio",
+ "Show more": "Mostrar más",
+ "Show less": "Mostrar menos",
+ "The amount must be between {string1} and {string2}": "La cantidad tiene que estar entre {string1} y {string2}",
+ "Day of month": "Día del mes",
+ "Monday": "Lunes",
+ "Tuesday": "Martes",
+ "Wednesday": "Miércoles",
+ "Thursday": "Jueves",
+ "Friday": "Viernes",
+ "Saturday": "Sábado",
+ "Sunday": "Domingo",
+ "Configure userfields": "Configurar campos personalizados",
+ "Userfields": "Campos personalizados",
+ "Entity": "Entidad",
+ "Caption": "Leyenda",
+ "Type": "Tipo",
+ "Create userfield": "Crear campo personalizado",
+ "A entity is required": "Es necesaria una entidad",
+ "A caption is required": "Es necesaria una leyenda",
+ "A type is required": "Es necesario un tipo",
+ "Show as column in tables": "Mostrar como columnas en una tabla",
+ "This is required and can only contain letters and numbers": "Es necesario y sólo puede contener letras y números",
+ "Edit userfield": "Modificar campo personalizado",
+ "Plural forms": "Formas del plural",
+ "One plural form per line, the current language requires": "El idioma actual requiere una forma plural por línea",
+ "Plural count": "Cuenta del plural",
+ "Plural rule": "Regla del plural",
+ "in plural form": "en plural",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "No hay existencias suficientes: falta {count} ingrediente | No hay existencias suficientes: faltan {count} ingredientes",
+ "Not enough in stock, but already on the shopping list": "No hay existencias suficientes, pero ya están en la lista de la compra",
+ "Not enough in stock": "No hay existencias suficientes",
+ "Expiring soon days": "Expira en los próximos días",
+ "Default location": "Ubicación predeterminada",
+ "Default amount for purchase": "Cantidad de compra predeterminada",
+ "Default amount for consume": "Cantidad de consumo predeterminada",
+ "Variable amount": "Cantidad variable",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Cuando esto no esté vacío, se mostrará en lugar de la cantidad ingresada anteriormente, pero la comprobación de existencias se realizará con la cantidad ingresada",
+ "Track date only": "Solamente la fecha de registro",
+ "When enabled only the day of an execution is tracked, not the time": "Cuando está activado, solo se registra el día de la ejecución, no la hora",
+ "Consume {string1} of {string2}": "Consumir {string1} de {string2}",
+ "Meal plan": "Plan de comidas",
+ "Add recipe on {string0}": "Añadir receta en {string0}",
+ "{count} serving | {count} servings": "{count} raciones | {count} raciones",
+ "Week costs": "Coste semanal",
+ "Configuration": "Configuración",
+ "A predefined list of values, one per line": "Una lista de valores predefinidos, uno por línea",
+ "Products": "Productos",
+ "Marked task {string0} as completed on {string0}": "Tarea {string0} marcada como completada el {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "La entrada tiene entradas dependientes posteriores, no es posible deshacerla",
+ "per serving": "por ración",
+ "Never": "Nunca",
+ "Today": "Hoy",
+ "Consume {string1} of {string2} as spoiled": "Consumir {string1} de {string2} como dañado",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "No todos los ingredientes de la receta \"{string0}\" están en el inventario, nada fue eliminado",
+ "Undo task": "Deshacer tarea",
+ "Due date rollover": "Aplazar fecha límite",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Si se activa, el plazo de ejecución de la tarea del hogar nunca expira. En su lugar, la fecha límite se aplaza cuando llega el día de expiración del plazo.",
+ "Location Content Sheet": "Hoja de contenido de la ubicación",
+ "Print": "Imprimir",
+ "all locations": "todas las ubicaciones",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "Aquí puede imprimir una página para cada ubicacion con las existencias actuales. Puede colgarla en cada sitio y apuntar las cosas que se van consumiendo",
+ "this location": "esta ubicación",
+ "Consumed amount": "Cantidad consumida",
+ "Time of printing": "Fecha de impresión",
+ "Are you sure to delete equipment \"{string0}\"?": "¿Está seguro de querer eliminar el equipamiento \"{string0}\"?",
+ "Parent product": "Producto padre",
+ "Not possible because this product is already used as a parent product in another product": "No es posible porque este producto ya es producto padre de otro producto",
+ "Default conversions": "Conversiones predeterminadas",
+ "Factor": "Factor",
+ "1 {string0} is the same as...": "1 {string0} equivale a ...",
+ "Create QU conversion": "Crear una conversión de unidades",
+ "Default for QU": "Predeterminada para la unidad",
+ "Quantity unit from": "Unidad inicial",
+ "Quantity unit to": "Unidad final",
+ "This cannot be equal to {string0}": "Esto no puede ser igual a {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Esto significa que 1 {string1} equivale a {string2} {string3}",
+ "QU conversions": "Conversiones de unidades",
+ "Product overrides": "Conversiones particulares para este producto",
+ "Override for product": "Conversión particular para el producto",
+ "This equals {string1} {string2}": "Esto es igual a {string1} %2$",
+ "Edit QU conversion": "Modificar la conversión de unidades",
+ "An assignment type is required": "Se requiere un tipo de asignación",
+ "Assignment type": "Tipo de asignación",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Esto significa que la próxima ejecución de esta tarea del hogar está programada 1 día después de la última ejecución",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Esto significa que la próxima ejecución de esta tarea del hogar está programada 1 día después de la última ejecución, pero solo para los días de la semana seleccionados a continuación",
+ "This means the next execution of this chore is not scheduled": "Esto significa que la próxima ejecución de esta tarea del hogar no está programada",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Esto significa que la próxima ejecución de esta tarea del hogar está programada para el día de cada mes seleccionado a continuación",
+ "This means the next execution of this chore will not be assigned to anyone": "Esto significa que la próxima ejecución de esta tarea del hogar no se asignará a nadie",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Esto significa que la próxima ejecución de esta tarea del hogar se asignará a quien menos la haya hecho",
+ "This means the next execution of this chore will be assigned randomly": "Esto significa que la próxima ejecución de esta tarea del hogar se asignará al azar",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Esto significa que la próxima ejecución de esta tarea del hogar se asignará al siguiente en orden alfabético",
+ "Assign to": "Asignar a",
+ "This assignment type requires that at least one is assigned": "Este tipo de asignación requiere que se asigne al menos a uno",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} tarea del hogar asignada a mí | {count} tareas del hogar asignadas a mí",
+ "Assigned to me": "Asignada a mí",
+ "assigned to {string0}": "asignada a {string0}",
+ "Assignment": "Asignación",
+ "Consume product on chore execution": "Consumir productos en la ejecución de la tarea del hogar",
+ "Are you sure to delete user field \"{string0}\"?": "¿Está seguro de querer eliminar el campo personalizado \"{string0}\"?",
+ "Userentities": "Entidades personalizadas",
+ "Create userentity": "Crear entidad personalizada",
+ "Show in sidebar menu": "Mostrar en el menú lateral",
+ "Edit userentity": "Modificar entidad personalizada",
+ "Edit {string0}": "Modificar {string0}",
+ "Create {string0}": "Crear {string0}",
+ "Are you sure to delete this userobject?": "¿Está seguro de querer eliminar este objeto de personalizado?",
+ "Icon CSS class": "Clase CSS del icono",
+ "For example": "Por ejemplo",
+ "Configure fields": "Configurar campos",
+ "Quantity unit plural form testing": "Prueba de la forma plural de la unidad",
+ "Result": "Resultado",
+ "Test plural forms": "Prueba de las formas plurales",
+ "Scan a barcode": "Escanear un código de barras",
+ "Error while initializing the barcode scanning library": "Error durante la inicialización de la biblioteca de escaneo",
+ "The resulting price of this ingredient will be multiplied by this factor": "El precio resultante de este ingrediente se multiplicará por este factor",
+ "Price factor": "Factor del precio",
+ "Do you find grocy useful?": "¿Le resulta útil Grocy?",
+ "Say thanks": "Agradecer",
+ "Search for recipes containing this product": "Buscar recetas que contengan este producto",
+ "Add to shopping list": "Añadir a la lista de la compra",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Añadido {string1} de {string2} a la lista de la compra \"{string3}\"",
+ "Output": "Salida",
+ "Energy (kcal)": "Energía (kcal)",
+ "Per stock quantity unit": "Por unidad por inventario",
+ "Barcode scanner testing": "Prueba del escáner de código de barras",
+ "Expected barcode": "Código de barras esperado",
+ "Scan field": "Escanear campo",
+ "Scanned barcodes": "Códigos de barra escaneados",
+ "Hit": "Acierto",
+ "Miss": "Fallo",
+ "Display recipe": "Mostrar receta",
+ "Accumulate sub products min. stock amount": "Acumular mínimos de existencias de subproductos",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Si está activado, los mínimos de existencias de los subproductos se acumularán en este producto. Los subproductos nunca faltarán, solo este producto",
+ "Are you sure to remove this conversion?": "¿Está seguro de querer eliminar esta conversión?",
+ "Unit price": "Precio unitario",
+ "Total price": "Precio total",
+ "in {string0} and based on the purchase quantity unit": "en {string0} y basado en la cantidad de unidades de compra",
+ "Unlimited": "Ilimitado",
+ "Clear": "Borrar",
+ "Are you sure to remove the included recipe \"{string0}\"?": "¿Está seguro de querer eliminar la receta incluida \"{string0}\"?",
+ "Period interval": "Intervalo del período",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Esto significa que la próxima ejecución de esta tarea del hogar solo debe programarse cada {string0} días",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Esto significa que la próxima ejecución de esta tarea del hogar solo debe programarse cada {string0} semanas",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Esto significa que la próxima ejecución de esta tarea del hogar solo debe programarse cada {string0} meses",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Esto significa que la próxima ejecución de esta tarea del hogar está programada 1 año después de la última ejecución",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Esto significa que la próxima ejecución de esta tarea del hogar solo debe programarse cada {string0} años",
+ "Transfer": "Trasladar",
+ "From location": "Ubicación origen",
+ "To location": "Ubicación destino",
+ "There are no units available at this location": "No hay unidades disponibles en esta ubicación",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "Cantidad: {string1}; Fecha límite: {string2}; Comprada en {string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Trasladado {string1} de {string2} desde {string3} a {string4}",
+ "Stock entries": "Entradas de inventario",
+ "Best before date": "Fecha de consumo preferente",
+ "Purchased date": "Fecha de compra",
+ "Consume all {string0} for this stock entry": "Consumir todo lo que queda de {string0}",
+ "The amount cannot be lower than {string1}": "La cantidad no puede ser menor que {string1}",
+ "Stock entry successfully updated": "Entrada de inventario actualizada correctamente",
+ "Edit stock entry": "Modificar entrada de inventario",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "El acceso a la cámara solo es posible cuando su navegador lo permite y cuando se accede a grocy a través de una conexión segura (https://)",
+ "Keep screen on": "Mantener la pantalla encendida",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Mantener la pantalla encendida cuando se muestra una \"tarjeta de pantalla completa\"",
+ "A purchased date is required": "Es necesaria la fecha de compra",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "Cuando se seleccione un producto, una unidad (en unidades de inventario por ración) será añadida al inventario al consumir esta receta",
+ "Produces product": "Produce producto",
+ "This booking cannot be undone": "Esta entrada no se puede deshacer",
+ "Booking does not exist or was already undone": "La entrada no existe o ya se ha deshecho",
+ "Are you sure to delete API key \"{string0}\"?": "¿Está seguro de querer eliminar la clave de API \"{string0}\"?",
+ "Add note": "Añadir nota",
+ "Add note on {string0}": "Añadir note a {string0}",
+ "per day": "por día",
+ "Only undone items": "Solo elementos no completados",
+ "Add product": "Añadir producto",
+ "Add product on {string0}": "Añadir producto a {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Consumir todos los ingredientes necesarios para las recetas o productos de esta semana",
+ "Meal plan recipe": "Receta del plan de comidas",
+ "Meal plan note": "Nota del plan de comidas",
+ "Meal plan product": "Producto del plan de comidas",
+ "Scan mode": "Modo de escaneo",
+ "on": "activado",
+ "off": "desactivado",
+ "Scan mode is on but not all required fields could be populated automatically": "El modo de escaneo está activado, pero no se ha podido rellenar automáticamente todos los campos obligatorios",
+ "Is freezer": "Es congelador",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Al meter un producto en un congelador o al sacarlo, la fecha de consumo preferente del producto se ajusta automáticamente según la configuración del producto",
+ "This cannot be the same as the \"From\" location": "Esto no puede ser lo mismo que la ubicación origen",
+ "Thawed": "Descongelado",
+ "Frozen": "Congelado",
+ "Are you sure to delete userentity \"{string0}\"?": "¿Está seguro de querer eliminar la entidad personalizada \"{string0}\"?",
+ "Shopping list settings": "Configuración de lista de la compra",
+ "Show a month-view calendar": "Mostrar vista mensual",
+ "Edit note on {string0}": "Modificar nota en {string0}",
+ "Edit product on {string0}": "Modificar producto en {string0}",
+ "Edit recipe on {string0}": "Modificar receta en {string0}",
+ "Desired servings": "Raciones deseadas",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "Configuración de recetas",
+ "Recipe card": "Tarjeta de receta",
+ "Group ingredients by their product group": "Agrupar los ingredientes por su grupo de productos",
+ "Unknown store": "Tienda desconocida",
+ "Store": "Tienda",
+ "Transaction successfully undone": "La transacción se deshizo con éxito",
+ "Default store": "Tienda predeterminada",
+ "Consume this stock entry": "Consumir esta entrada de inventario",
+ "Mark this stock entry as open": "Marcar esta entrada de inventario como abierto",
+ "Mark this item as done": "Marcar este elemento como hecho",
+ "Edit this item": "Modificar este artículo",
+ "Delete this item": "Eliminar este artículo",
+ "Show an icon if the product is already on the shopping list": "Mostrar un icono si el producto ya está en la lista de la compra",
+ "Calories": "Calorías",
+ "means {string1} per {string2}": "significa {string1} por {string2}",
+ "Create inverse QU conversion": "Crear conversión de unidades inversa",
+ "Create recipe": "Crear receta",
+ "Save & continue to add ingredients and included recipes": "Guardar y continuar a añadir ingredientes y recetas incluidas",
+ "Save & continue": "Guardar y continuar",
+ "Save & return to recipes": "Guardar y volver a la lista de recetas",
+ "Stock value": "Valor del inventario",
+ "Average price": "Precio promedio",
+ "Active": "Activo",
+ "Barcodes": "Códigos de barra",
+ "Barcode": "Código de barra",
+ "Create Barcode": "Crear código de barras",
+ "Barcode for product": "Código de barras para el producto",
+ "Edit Barcode": "Modificar código de barras",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "No hay existencias suficientes (no incluidas en el coste): faltan {string0} ingredientes",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "Según los precios de la regla de consumo predeterminada, que es \"Abiertos primero, luego el próximo en llegar a su fecha límite y luego el que se adquirió primero\"",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "No hay existencias suficientes (no incluidas en el coste): faltan {string1} ingredientes, {string2} ya están en la lista de la compra",
+ "Quantity unit stock cannot be changed after first purchase": "La unidad de inventario no puede ser cambiada después de la primera compra",
+ "Clear filter": "Limpiar filtro",
+ "Permissions for user {string0}": "Permisos del usuario {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "¿Está seguro de querer eliminar permisos totales para usted?",
+ "Permissions saved": "Permisos guardados",
+ "You are not allowed to view this page": "No está autorizado para ver esta página",
+ "Page not found": "Página no encontrada",
+ "Unauthorized": "No autorizado",
+ "Error source": "Origen del error",
+ "Error message": "Mensaje de error",
+ "Stack trace": "Traza de ejecución",
+ "Easy error info copy & paste (for reporting)": "Copiar y pegar información del error fácilmente (para reportar)",
+ "This page does not exist": "Esta página no existe",
+ "You will be redirected to the default page in {string0} seconds": "Será redirigido a la página predeterminada en {string0} segundos",
+ "Server error": "Error en el servidor",
+ "A server error occured while processing your request": "Ocurrió un error en el servidor mientras se procesaba su petición",
+ "If you think this is a bug, please report it": "Si cree que esto es un defecto, por favor, repórtelo.",
+ "Language": "Idioma",
+ "User settings": "Configuración de usuario",
+ "Default": "Predeterminado",
+ "Stock journal summary": "Resumen del diario de inventario",
+ "Journal summary": "Resumen del diario",
+ "Journal summary for this product": "Resumen del diario para este producto",
+ "Consume exact amount": "Consumir la cantidad exacta",
+ "Value": "Valor",
+ "{string0} total value": "{string0} valor total",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "Mostrar la fecha de compra en la página de compra e inventario (si no, la fecha de compra predeterminada es hoy) ",
+ "Common": "Común",
+ "Decimal places allowed for amounts": "Cifras decimales permitidas para cantidades",
+ "Decimal places allowed for prices": "Cifras decimales permitidas para precios",
+ "Stock entries for this product": "Entradas de inventario para este producto",
+ "Edit shopping list": "Modificar lista de la compra",
+ "Save & continue to add quantity unit conversions & barcodes": "Guardar y continuar a añadir conversiones de unidades de cantidad y códigos de barras",
+ "Save & return to products": "Guardar y volver a productos",
+ "Save & continue to add conversions": "Guardar y continuar a añadir conversiones",
+ "Save & return to quantity units": "Guardar y volver a unidades de cantidad",
+ "price": "precio",
+ "New stock amount": "Nueva cantidad de existencias",
+ "Price per stock unit": "Precio por unidad de inventario",
+ "Table options": "Opciones de tabla",
+ "This product is currently on a shopping list": "Este producto está actualmente en una lista de la compra",
+ "Undo transaction": "Deshacer transacción",
+ "Transaction type": "Tipo de transacción",
+ "Transaction time": "Fecha de transacción",
+ "Chore journal": "Diario de tareas del hogar",
+ "Track chore execution": "Registrar ejecución de la tarea del hogar",
+ "Mark task as completed": "Marcar tarea como completada",
+ "Track charge cycle": "Registrar ciclo de carga",
+ "Battery journal": "DIario de baterías",
+ "This product has a picture": "Este producto tiene una imagen",
+ "Consume this stock entry as spoiled": "Consumir esta entrada como desperdiciado",
+ "Configure user permissions": "Configurar permisos de usuario",
+ "Show a QR-Code for this API key": "Mostrar un código QR para esta clave de API",
+ "This is the default quantity unit used when adding this product to the shopping list": "Esta es la unidad de cantidad predeterminada para añadir este producto a la lista de la compra",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "Mostrar un aviso cuando la fecha límite del producto comprado sea anterior a la próxima fecha límite de las existencias del inventario",
+ "This is due earlier than already in-stock items": "La fecha límite es anterior a la próxima fecha límite de las existencias del inventario",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "Cantidad de consumo rápido",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "Esta cantidad se usa para los botones de \"consumo rápido/abrir\" en la página de resumen de inventario (medido en unidades de inventario)",
+ "Copy": "Copiar",
+ "Are you sure to remove this barcode?": "¿Está seguro de querer eliminar este código de barras?",
+ "Due date type": "Tipo de fecha límite",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "Según el tipo seleccionado, lo destacado en la página de resumen de inventario será diferente",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "Significa que puede seguir siendo seguro consumir el producto después de su fecha límite",
+ "Expiration date": "Fecha de caducidad",
+ "Means that the product is not safe to be consumed after its due date is reached": "Significa que no es seguro consumir el producto después de su fecha límite",
+ "For purchases this amount of days will be added to today for the due date suggestion": "Este número de días será añadido a la fecha de hoy para la sugerencia de fecha límite de la compra",
+ "-1 means that this product will be never overdue": "-1 significa que este producto no tiene fecha límite",
+ "Default due days": "Número predeterminado de días hasta la fecha límite",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "Cuando este producto se marque como abierto, la fecha límite será reemplazada por la fecha de hoy más este número de días (un valor de 0 desactiva esto)",
+ "Default due days after opened": "Número predeterminado de días hasta la fecha límite después de abierto",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "Al mover este producto a una ubicación congelador (al congelarlo), la fecha límite será reemplazada por la fecha de hoy más este número de días",
+ "Default due days after freezing": "Número predeterminado de días hasta la fecha límite después de congelado",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "Al mover este producto desde una ubicación congelador (al descongelarlo), la fecha límite será reemplazada por la fecha de hoy más este número de días",
+ "Default due days after thawing": "Número predeterminado de días hasta la fecha límite después de descongelado",
+ "Next due date": "Próxima fecha límite",
+ "{count} product is due | {count} products are due": "{count} producto ha superado su fecha de consumo preferente | {count} productos han superado sus fechas de consumo preferente",
+ "Due date": "Fecha límite",
+ "Never overdue": "Sin fecha límite",
+ "{count} product is expired | {count} products are expired": "{count} producto está caducado | {count} productos están caducados",
+ "Expired": "Caducado",
+ "Due soon days": "Días para próximo a fecha límite",
+ "Add overdue/expired products": "Añadir productos caducados o que han superado su fecha de consumo preferente",
+ "Products with tare weight enabled are currently not supported for transfer": "No se puede trasladar productos con peso de contenedor activado en este momento",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "Esto no puede ser menor que {string1} ni igual a {string2} y tiene que ser un número válido con un máximo de {string3} cifras decimales",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "Esto tiene que estar entre {string1} y {string2}, no puede ser igual a {string3} y tiene que ser un número válido con un máximo de {string4} cifras decimales",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "Esto no puede ser menor que {string1} y tiene que ser un número válido con un máximo de {string2} cifras decimales",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "Esto tiene que estar entre {string1} y {string2}, y tiene que ser un número válido con un máximo de {string3} cifras decimales",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "Registrar automáticamente usando el último precio y la cantidad del artículo de la lista de la compra, si el producto tiene definido \"Número predeterminado de días hasta la fecha límite\"",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "Al meter un producto en un congelador o al sacarlo, la fecha límite del producto se ajusta automáticamente según la configuración del producto",
+ "This is the internal field name, e. g. for the API": "Este es el campo de nombre interno, por ejemplo para la API",
+ "This is used to display the field on the frontend": "Esto se usa para mostrar el campo en el frontal",
+ "Multiple Userfields will be ordered by that number on the input form": "Los campos de usuario en el formulario de entrada se ordenarán según ese número",
+ "Sort number": "Número de ordenación",
+ "Download file": "Descargar archivo",
+ "Use the products \"Quick consume amount\"": "Usar los productos \"Cantidad de consumo rápido\"",
+ "Disabled": "Desactivado",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "Esto también elimina todas las existencias, el diario y todas las otras referencias de este producto. Considere desactivarlo si quiere mantener esa información y sólo quiere ocultar el producto.",
+ "Show disabled": "Mostrar desactivados",
+ "Never show on stock overview": "Nunca mostrar en el resumen de inventario",
+ "None": "Ninguno",
+ "Group by": "Agrupar por",
+ "Ingredient group": "Grupo de ingredientes",
+ "Reset": "Reiniciar",
+ "Are you sure to reset the table options?": "¿Está seguro de querer reiniciar las opciones de tabla?",
+ "Hide/view columns": "Ocultar/mostrar columnas",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "Una cantidad o unidad diferente puede ser usada debajo, mientras que para comprobaciones de existencias basta con que haya cualquier cantidad de existencias en el inventario",
+ "Last price (Unit)": "Último precio (Unidad)",
+ "Last price (Total)": "Último precio (Total)",
+ "Show header": "Mostrar encabezado",
+ "Group by product group": "Agrupar por grupo de producto",
+ "Table": "Tabla",
+ "Layout type": "Tipo de distribución",
+ "Merge this product with another one": "Combinar este producto con otro",
+ "Merge products": "Combinar productos",
+ "Product to keep": "Productos a mantener",
+ "Product to remove": "Productos a eliminar",
+ "Error while merging products": "Error al combinar productos",
+ "After merging, this product will be kept": "Después de combinar, este producto se mantendrá",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "Después de combinar, todas las ocurrencias de este producto serán reemplazadas por \"Producto a mantener\" (este producto dejará de existir)",
+ "Merge": "Combinar",
+ "Title": "Título",
+ "Link": "Enlace",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "La página de resumen de inventario muestra una lista de todos los productos con existencias suficientes o por debajo de su mínimo de existencias. Active esto para ocultar este producto en el resumen de inventario siempre",
+ "Print options": "Opciones de impresión",
+ "A product or a note is required": "Hace falta un producto o una nota",
+ "no-assignment": "No asignar",
+ "who-least-did-first": "Quien menos, primero",
+ "random": "Al azar",
+ "in-alphabetical-order": "Por orden alfabético",
+ "timeago_locale": "es",
+ "timeago_nan": "Hace NaN años",
+ "moment_locale": "es",
+ "datatables_localization": "{\"sEmptyTable\":\"Sin datos en la tabla\",\"sInfo\":\"Mostrando de _START_ a _END_ de _TOTAL_ entradas\",\"sInfoEmpty\":\"Mostrando de 0 a 0 de 0 entradas\",\"sInfoFiltered\":\"(filtrando a _MAX_ entradas máximas)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Mostrar _MENU_ entradas\",\"sLoadingRecords\":\"Cargando ...\",\"sProcessing\":\"Procesando ...\",\"sSearch\":\"Buscar\",\"sZeroRecords\":\"No se han encontrado resultados coincidentes\",\"oPaginate\":{\"sFirst\":\"Primero\",\"sLast\":\"Último\",\"sNext\":\"Siguiente\",\"sPrevious\":\"Anterior\"},\"oAria\":{\"sSortAscending\":\"orden ascendente\",\"sSortDescending\":\"orden descendente\"}}",
+ "summernote_locale": "es-ES",
+ "fullcalendar_locale": "es",
+ "bootstrap-select_locale": "es_ES",
+ "purchase": "Comprar",
+ "transfer_from": "Trasladar desde",
+ "transfer_to": "Trasladar a",
+ "consume": "Consumir",
+ "inventory-correction": "Corrección de inventario",
+ "product-opened": "Abrir producto",
+ "stock-edit-old": "Modificar existencias (valores antiguos)",
+ "stock-edit-new": "Modificar existencias (valores nuevos)",
+ "self-production": "Producción propia",
+ "manually": "Manual",
+ "dynamic-regular": "Regular dinámico",
+ "daily": "Diaria",
+ "weekly": "Semanal",
+ "monthly": "Mensual",
+ "yearly": "Anual",
+ "text-single-line": "Texto (una línea)",
+ "text-multi-line": "Texto (varias líneas)",
+ "number-integral": "Número (entero)",
+ "number-decimal": "Número (decimal)",
+ "date": "Fecha",
+ "datetime": "Fecha y hora",
+ "checkbox": "Casilla de verificación",
+ "preset-list": "Seleccionar un elemento de una lista",
+ "preset-checklist": "Seleccionar uno o más elementos de una lista",
+ "link": "Enlace",
+ "link-with-title": "Enlace (con título)",
+ "file": "Archivo",
+ "image": "Imagen",
+ "ADMIN": "Todos los permisos",
+ "USERS_CREATE": "Crear usuarios",
+ "USERS_EDIT": "Editar usuarios (incluidas contraseñas)",
+ "USERS_READ": "Mostrar usuarios",
+ "USERS_EDIT_SELF": "Modificar datos del propio usuario / cambiar su propia contraseña",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "Deshacer ciclo de carga",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "Monitorizar ciclo de carga",
+ "CHORE_TRACK_EXECUTION": "Monitorizar ejecución",
+ "CHORE_UNDO_EXECUTION": "Deshacer ejecución",
+ "MASTER_DATA_EDIT": "Editar datos maestros",
+ "TASKS_UNDO_EXECUTION": "Deshacer ejecución",
+ "TASKS_MARK_COMPLETED": "Marcar completadas",
+ "STOCK_EDIT": "STOCK_EDIT",
+ "STOCK_TRANSFER": "Transferir",
+ "STOCK_INVENTORY": "Inventario",
+ "STOCK_CONSUME": "Consumir",
+ "STOCK_OPEN": "Abrir productos",
+ "STOCK_PURCHASE": "Comprar",
+ "SHOPPINGLIST_ITEMS_ADD": "Añadir artículos",
+ "SHOPPINGLIST_ITEMS_DELETE": "Quitar artículos",
+ "USERS": "Gestión de usuarios",
+ "STOCK": "Inventario",
+ "SHOPPINGLIST": "Lista de la compra",
+ "CHORES": "Tareas del hogar",
+ "BATTERIES": "Pilas",
+ "TASKS": "Tareas",
+ "RECIPES": "Recetas",
+ "EQUIPMENT": "Equipamiento",
+ "CALENDAR": "Calendario",
+ "RECIPES_MEALPLAN": "Plan de comidas",
+ "cs": "Checo",
+ "da": "Danés",
+ "de": "Alemán",
+ "el_GR": "Griego",
+ "en": "Inglés",
+ "en_GB": "Inglés (Reino Unido)",
+ "es": "Español",
+ "fr": "Francés",
+ "hu": "Húngaro",
+ "it": "Italiano",
+ "ja": "Japonés",
+ "ko_KR": "Coreano",
+ "nl": "Neerlandés",
+ "no": "Noruego",
+ "pl": "Polaco",
+ "pt_BR": "Portugués (Brasil)",
+ "pt_PT": "Portugués (Portugal)",
+ "ru": "Ruso",
+ "sk_SK": "Eslovaco",
+ "sv_SE": "Sueco",
+ "tr": "Turco",
+ "zh_TW": "Chino (Taiwan)",
+ "zh_CN": "Chino (China)",
+ "he_IL": "Hebreo",
+ "ta": "Tamil",
+ "fi": "Finés",
+ "Cookies": "Galletas",
+ "Chocolate": "Chocolate",
+ "Pantry": "Despensa",
+ "Candy cupboard": "Estante de los dulces",
+ "Tinned food cupboard": "Estante de las latas",
+ "Fridge": "Refrigerador",
+ "Piece | Pieces": "Pieza | Piezas",
+ "Pack | Packs": "Paquetes | Paquetes",
+ "Glass | Glasses": "Vaso | Vasos",
+ "Tin | Tins": "Envases | Latas",
+ "Can | Cans": "Lata | Envases",
+ "Bunch | Bunches": "Puñados | Puñados",
+ "Gummy bears": "Ositos de goma",
+ "Crisps": "Patatas fritas",
+ "Eggs": "Huevos",
+ "Noodles": "Fideos",
+ "Pickles": "Pepinillos",
+ "Gulash soup": "Sopa de Gulash",
+ "Yogurt": "Yogur",
+ "Cheese": "Queso",
+ "Cold cuts": "Fiambres",
+ "Paprika": "Pimentón",
+ "Cucumber": "Pepino",
+ "Radish": "Rábano",
+ "Tomato": "Tomate",
+ "Changed towels in the bathroom": "Cambiar las toallas del baño",
+ "Cleaned the kitchen floor": "Limpiar el suelo de la cocina",
+ "Warranty ends": "Final de la garantía",
+ "TV remote control": "Control remoto del televisor",
+ "Alarm clock": "Despertador",
+ "Heat remote control": "Control remoto de la calefacción",
+ "Lawn mowed in the garden": "Cortar el césped del jardín",
+ "Some good snacks": "Cosas de picar",
+ "Pizza dough": "Masa de pizza",
+ "Sieved tomatoes": "Tomates triturados",
+ "Salami": "Salami",
+ "Toast": "Tostada",
+ "Minced meat": "Carne picada",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti a la boloñesa",
+ "Sandwiches": "Sándwiches",
+ "English": "Inglés",
+ "German": "Alemán",
+ "Italian": "Italiano",
+ "This is the note content of the recipe ingredient": "Este es el contenido de la nota del ingrediente de la receta",
+ "Demo User": "Usuario de demostración",
+ "Gram | Grams": "Gramo | Gramos",
+ "Flour": "Harina",
+ "Pancakes": "Panqueques",
+ "Sugar": "Azúcar",
+ "Home": "Inicio",
+ "Life": "Vida",
+ "Projects": "Proyectos",
+ "Repair the garage door": "Reparar la puerta del garaje",
+ "Fork and improve grocy": "Forkear y mejorar grocy",
+ "Find a solution for what to do when I forget the door keys": "Encontrar una solución a qué hacer cuando me olvido las llaves",
+ "Sweets": "Dulces",
+ "Bakery products": "Productos de panadería",
+ "Tinned food": "Comida en lata",
+ "Butchery products": "Productos de carnicería",
+ "Vegetables/Fruits": "Verduras/Frutas",
+ "Refrigerated products": "Productos refrigerados",
+ "Coffee machine": "Máquina de café",
+ "Dishwasher": "Lavavajillas",
+ "Liter": "Litro",
+ "Liters": "Litros",
+ "Bottle": "Botella",
+ "Bottles": "Botellas",
+ "Milk": "Leche",
+ "Chocolate sauce": "Salsa de chocolate",
+ "Milliliters": "Mililitros",
+ "Milliliter": "Mililitro",
+ "Bottom": "Fondo",
+ "Topping": "Cobertura",
+ "French": "Francés",
+ "Turkish": "Turco",
+ "Spanish": "Español",
+ "Russian": "Ruso",
+ "The thing which happens on the 5th of every month": "Lo que ocurre el día 5 de cada mes",
+ "The thing which happens daily": "Lo que ocurre diariamente",
+ "The thing which happens on Mondays and Wednesdays": "Lo que ocurre los lunes y los miércoles",
+ "Swedish": "Sueco",
+ "Polish": "Polaco",
+ "Milk Chocolate": "Chocolate con leche",
+ "Dark Chocolate": "Chocolate negro",
+ "Slice | Slices": "Loncha | Lonchas",
+ "Example userentity": "Entidad personalizada de ejemplo",
+ "This is an example user entity...": "Esta es una entidad personalizada de ejemplo...",
+ "Custom field": "Campo personalizado",
+ "Example field value...": "Valor del campo de ejemplo ...",
+ "Waffle rolls": "Canutillos",
+ "Danish": "Danés",
+ "Dutch": "Holandés",
+ "Norwegian": "Noruego",
+ "Demo": "Demo",
+ "Stable version": "Versión estable",
+ "Preview version": "Versión previa",
+ "current release": "Publicación actual",
+ "not yet released": "No publicada aún",
+ "Portuguese (Brazil)": "Portugués (Brasil)",
+ "This is a note": "Esto es una nota",
+ "Freezer": "Congelador",
+ "Hungarian": "Húngaro",
+ "Slovak": "Eslovaco",
+ "Czech": "Checo",
+ "Portuguese (Portugal)": "Portugués (Portugal)",
+ "DemoSupermarket1": "DemoSupermercado1",
+ "DemoSupermarket2": "DemoSupermercado2",
+ "Japanese": "Japonés",
+ "Chinese (Taiwan)": "Chino (Taiwan)",
+ "Greek": "Griego",
+ "Korean": "Coreano",
+ "Chinese (China)": "Chino (China)",
+ "Hebrew (Israel)": "Hebreo (Israel)",
+ "Tamil": "Tamil",
+ "Finnish": "Finés",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/fi.json b/locale/fi.json
new file mode 100644
index 00000000..a5f41341
--- /dev/null
+++ b/locale/fi.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Varaston yleiskatsaus",
+ "{count} product expires | {count} products expiring": "{count}tuote vanhentuu | {count} tuotetta vanhentumassa",
+ "within the next day | within the next {count} days": "seuraavan päivän sisällä | {count}päivän sisällä",
+ "{count} product is already expired | {count} products are already expired": "{count}tuotetta on jo vanhentunut | {count}tuotetta on jo vanhentunut",
+ "{count} product is overdue | {count} products are overdue": "{count} tuote on myöhässä | {count} tuotetta on myöhässä",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count}tuote on alle varaston minimirajan | {count}tuotetta on alle minimirajan varastossa",
+ "Product": "Tuote",
+ "{count} Product | {count} Products": "{count}Tuote | {count}Tuotetta",
+ "Amount": "Määrä",
+ "Logout": "Kirjaudu ulos",
+ "Chores overview": "Kotityö yleiskatsaus",
+ "Batteries overview": "Pattereiden yleiskatsaus",
+ "Purchase": "Osta",
+ "Consume": "Käytä",
+ "Inventory": "Tavaraluettelo",
+ "Shopping list": "Ostoslista",
+ "Chore tracking": "Kotityön seuranta",
+ "Battery tracking": "Pattereiden seuranta",
+ "Locations": "Sijainnit",
+ "Stores": "Myymälät",
+ "Quantity units": "Määrän yksiköt",
+ "Chores": "Kotityöt",
+ "Batteries": "Patterit",
+ "Chore": "Kotityö",
+ "Next estimated tracking": "Seuraava arvioitu seuranta",
+ "Last tracked": "Viimeksi seurattu",
+ "Battery": "Patteri",
+ "Last charged": "Viimeksi ladattu",
+ "Next planned charge cycle": "Seuraavaksi suunniteltu lataussykli",
+ "Best before": "Parasta ennen",
+ "OK": "OK",
+ "Product overview": "Tuote yleisnäkymä",
+ "Stock quantity unit": "Varaston määrän yksikkö",
+ "Stock amount": "Varaston määrä",
+ "Last purchased": "Viimeksi ostettu",
+ "Last used": "Viimeksi käytetty",
+ "Spoiled": "Pilaantunut",
+ "Barcode lookup is disabled": "Viivakoodin tulkinta on pois käytöstä",
+ "will be added to the list of barcodes for the selected product on submit": "lisätään valitun tuotteen viivakoodien listaan lähetettäessä",
+ "New amount": "Uusi määrä",
+ "Note": "Merkintä",
+ "Tracked time": "Seurattu aika",
+ "Chore overview": "Kotitöiden yleisnäkymä",
+ "Tracked count": "Seurattujen määrä",
+ "Battery overview": "Patterien yleisnäkymä",
+ "Charge cycles count": "Lataussyklien määrä",
+ "Create shopping list item": "Luo ostoslistalle tuote",
+ "Edit shopping list item": "Muokkaa ostoslistan tuotetta",
+ "Save": "Tallenna",
+ "Add": "Lisää",
+ "Name": "Nimi",
+ "Location": "Sijainti",
+ "Min. stock amount": "Min. varastomäärä",
+ "Description": "Kuvaus",
+ "Create product": "Luo tuote",
+ "Barcode(s)": "Viivakoodi(t)",
+ "Minimum stock amount": "Minimi varastomäärä",
+ "Default best before days": "Parasta ennen -päivien oletusmäärä",
+ "Default quantity unit purchase": "Oletusyksikkö ostettaessa",
+ "Quantity unit stock": "Yksikkö varastossa",
+ "Factor purchase to stock quantity unit": "Kerroin ostoyksiköistä varastoyksiköihin",
+ "Create location": "Luo sijainti",
+ "Create store": "Luo myymälä",
+ "Create quantity unit": "Luo maaräyksikkö",
+ "Period type": "Ajanjakso tyyppi",
+ "Period days": "Ajanjakso päivää",
+ "Create chore": "Luo kotityö",
+ "Used in": "Käytössä",
+ "Create battery": "Lisää paristo",
+ "Edit battery": "Muokkaa paristoa",
+ "Edit chore": "Muokkaa kotityötä",
+ "Edit quantity unit": "Muokkaa määrän yksikköä",
+ "Edit product": "Muokkaa tuotetta",
+ "Edit location": "Muokkaa sijaintia",
+ "Edit store": "Muokkaa myymälää",
+ "Record data": "Tallenna data",
+ "Manage master data": "Hallitse perustietoja",
+ "This will apply to added products": "Tämä koskee lisättyjä tuotteita",
+ "never": "ei koskaan",
+ "Add products that are below defined min. stock amount": "Lisää tuotteet joita on varastossa alle minimin",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Tämä tarkoittaa, että 1 {string1} ostettu muutetaan {string2} {string3} varastossa",
+ "Login": "Kirjaudu",
+ "Username": "Käyttäjänimi",
+ "Password": "Salasana",
+ "Invalid credentials, please try again": "Virheelliset tunnukset. Yritä uudelleen",
+ "Are you sure to delete battery \"{string0}\"?": "Haluatko poistaa pariston \"{string0}\"?",
+ "Yes": "Kyllä",
+ "No": "Ei",
+ "Are you sure to delete chore \"{string0}\"?": "Haluatko varmasti poistaa kotityön \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" ei voitu ratkaista tuotteeksi, miten haluat jatkaa?",
+ "Create or assign product": "Luo tai aseta tuote",
+ "Cancel": "Peruuta",
+ "Add as new product": "Lisää uusi tuote",
+ "Add as barcode to existing product": "Lisää viivakoodi tuotteeseen",
+ "Add as new product and prefill barcode": "Lisää uutena tuotteena ja täytä viivakoodi",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Haluatko varmasti poistaa määräyksikön \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Haluatko varmasti poistaa tuotteen \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Haluatko varmasti poistaa sijainnin \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Haluatko varmasti poistaa myymälän \"{string0}\"?",
+ "Manage API keys": "Hallitse API tunnuksia",
+ "REST API & data model documentation": "REST API & data model dokumentaatio",
+ "API keys": "API tunnukset",
+ "Create new API key": "Luo API tunnus",
+ "API key": "API tunnus",
+ "Expires": "Vanhenee",
+ "Created": "Luotu",
+ "This product is not in stock": "Tuotetta ei ole varastossa",
+ "This means {string0} will be added to stock": "Tämä tarkoittaa, että {string0} lisätään varastoon",
+ "This means {string0} will be removed from stock": "Tämä tarkoittaa, että {string0} poistetaan varastosta",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Tämä tarkoittaa, että kotityö ajastetaan {string0}päivää edellisen suorituksen jälkeen",
+ "Removed {string1} of {string2} from stock": "Poistettiin {string1}kpl tuotetta {string2} varastosta ",
+ "About grocy": "Grocysta",
+ "Close": "Sulje",
+ "Released on": "Julkaistu",
+ "Added {string1} of {string2} to stock": "Lisättiin {string1}kpl tuotetta {string2}varastoon",
+ "Stock amount of {string1} is now {string2}": "{string1} varastomäärä on nyt {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Kotityö {string1} on suoritettu {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Paristoa {string1} ladattu {string2}",
+ "Consume all {string0} which are currently in stock": "Käytä kaikki varastossa olevat {string0} ",
+ "All": "Kaikki",
+ "Search": "Etsi",
+ "Not logged in": "Ei kirjautunut sisään",
+ "You have to select a product": "Sinun tulee valita tuote",
+ "You have to select a chore": "Sinun tulee valita kotityö",
+ "You have to select a battery": "Sinun tulee valita akku",
+ "A name is required": "Nimi vaaditaan",
+ "A location is required": "Sijainti vaaditaan",
+ "A quantity unit is required": "Yksikkö vaaditaan",
+ "A period type is required": "Jakso vaaditaan",
+ "A best before date is required": "Parasta ennen vaaditaan",
+ "Settings": "Asetukset",
+ "This can only be before now": "Pitää olla menneisyydessä",
+ "Calendar": "Kalenteri",
+ "Recipes": "Reseptit",
+ "Edit recipe": "Muokkaa reseptiä",
+ "Ingredients list": "Ainesosat",
+ "Add recipe ingredient": "Lisää ainesosa",
+ "Edit recipe ingredient": "Muokkaa ainesosaa",
+ "Are you sure to delete recipe \"{string0}\"?": "Haluatko varmasti poistaa reseptin \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Haluako varmasti poistaa reseptin ainesosan \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Haluatko varmasti tyhjentää ostoslistan \"{string0}\"?",
+ "Clear list": "Tyhjennä",
+ "Requirements fulfilled": "Vaatimukset täytetty",
+ "Put missing products on shopping list": "Lisää puuttuvat tuotteet ostoslistalle",
+ "Enough in stock": "Tarpeeksi varastossa",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Varastosta puuttuu {count} ainesosa, mutta se on jo ostoslistalla. | Varastosta puuttuu {count} ainesosia, mutta ne ovat jo ostoslistalla",
+ "Expand to fullscreen": "Käytä kokonäytön tilaa",
+ "Ingredients": "Ainesosat",
+ "Preparation": "Valmistelu",
+ "Recipe": "Resepti",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Varastosta puuttuu {string1}, {string2} ovat jo ostoslistalla",
+ "Show notes": "Näytä muistiinpanot",
+ "Put missing amount on shopping list": "Lisää puuttuva määrä ostoslistalle",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Haluatko varmasti lisätä kaikki reseptin \"{string0}\" puuttuvat ainesosat ostoslistalle?",
+ "Added for recipe {string0}": "Lisätty reseptille {string0}",
+ "Manage users": "Hallitse käyttäjiä",
+ "User": "Käyttäjä",
+ "Users": "Käyttäjät",
+ "Are you sure to delete user \"{string0}\"?": "Haluatko varmasti poistaa käyttäjän \"{string0}\"?",
+ "Create user": "Luo käyttäjä",
+ "Edit user": "Muokkaa käyttäjää",
+ "First name": "Etunimi",
+ "Last name": "Sukunimi",
+ "A username is required": "Käyttäjätunnus vaaditaan",
+ "Confirm password": "Vahvista salasana",
+ "Passwords do not match": "Salasanat eivät täsmää",
+ "Change password": "Vaihda salasana",
+ "Done by": "Tekijä",
+ "Last done by": "Viimeksi tehty",
+ "Unknown": "Tuntematon",
+ "Chores journal": "Kotityölistaus",
+ "0 means suggestions for the next charge cycle are disabled": "0 tarkoittaa, että ehdotukset seuraavalle lataukselle on pois käytöstä",
+ "Charge cycle interval (days)": "Lataussyklin aikaväli (päivää)",
+ "Last price": "Viimeinen hinta",
+ "Price history": "Hintahistoria",
+ "No price history available": "Ei hintahistoriaa saatavilla",
+ "Price": "Hinta",
+ "Unit": "Yksikkö",
+ "{count} Unit | {count} Units": "{count} kappale | {count} kappaletta",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} kotityön määräpäivä | {count} kotitöiden määräpäivä",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} myöhästynyt kotityö | {count} kotityö myöhässä",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} paristo on lataamatta | {count} paristoa lataamatta",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} pariston lataus myöhässä | {count} pariston latausta myöhässä",
+ "in singular form": "yksikössä",
+ "Quantity unit": "Määräyksikkö",
+ "Only check if any amount is in stock": "Tarkista vain onko varastossa ollenkaan",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "Haluatko varmasti kuluttaa kaikki reseptin \"{string0}\" tarvitsemat ainekset (aineksia, jotka on merkitty \"tarkista vain onko varastossa ollenkaan\" ei huomioida)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Poistettu kaikki reseptin \"{string0}\" ainesosat varastosta",
+ "Consume all ingredients needed by this recipe": "Käytä kaikki tämän reseptin ainesosat",
+ "Click to show technical details": "Klikkaa nähdäksesi yksityiskohdat",
+ "Error while saving, probably this item already exists": "Virhe tallennuksessa. Todennäköisesti tuote on jo lisätty.",
+ "Error details": "Virheen tiedot",
+ "Tasks": "Tehtävät",
+ "Show done tasks": "Näytä tehdyt tehtävät",
+ "Task": "Tehtävä",
+ "Due": "Määräpäivä",
+ "Assigned to": "Suorittaja",
+ "Mark task \"{string0}\" as completed": "Merkitse tehtävä \"{string0}\" suoritetuksi",
+ "Uncategorized": "Ei luokiteltu",
+ "Task categories": "Tehtäväluokat",
+ "Create task": "Luo tehtävä",
+ "A due date is required": "Määräpäivä tarvitaan",
+ "Category": "Kategoria",
+ "Edit task": "Muokkaa tehtävää",
+ "Are you sure to delete task \"{string0}\"?": "Haluatko varmasti poistaa tehtävän \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} tehtävän määräpäivä | {count} tehtävän määräpäivä ",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} tehtävä myöhässä | {count} tehtävää myöhässä",
+ "Edit task category": "Muuta tehtäväluokitusta",
+ "Create task category": "Luo tehtäväluokitus",
+ "Product groups": "Tuoteryhmät",
+ "Ungrouped": "Ryhmittelemättä",
+ "Create product group": "Luo tuoteryhmä",
+ "Edit product group": "Muuta tuoteryhmää",
+ "Product group": "Tuoteryhmä",
+ "Are you sure to delete product group \"{string0}\"?": "Haluatko varmasti poistaa tuoteryhmän \"{string0}\"?",
+ "Stay logged in permanently": "Pysy sisäänkirjautuneena",
+ "When not set, you will get logged out at latest after 30 days": "Kun ei ole asetettu sinut kirjataan ulos viimeistään 30 päivän kuluttua.",
+ "Status": "Tila",
+ "Below min. stock amount": "Alle vähimmäis varastomäärän.",
+ "Expiring soon": "Viimeinen käyttöpäivä lähellä",
+ "Already expired": "Vanhentunut",
+ "Due soon": "Määräpäivä pian",
+ "Overdue": "Myöhässä",
+ "View settings": "Katso asetukset",
+ "Auto reload on external changes": "Automaattinen uudelleenlataus ulkoisten muutosten johdosta",
+ "Enable night mode": "Yötila",
+ "Auto enable in time range": "Käytä automaattisesti aikavälillä",
+ "From": "Alkaen",
+ "in format": "muodossa",
+ "To": "Asti",
+ "Time range goes over midnight": "Aikaväli ylittää keskiyön",
+ "Product picture": "Tuotekuva",
+ "No file selected": "Ei valittua tiedostoa",
+ "Delete": "Poista",
+ "Select file": "Valitse tiedosto",
+ "Image of product {string0}": "Tuoteen \"{string0}\" kuva",
+ "Deletion not possible": "Poistaminen ei ole mahdollista",
+ "Equipment": "Väline",
+ "Instruction manual": "Ohjekirja",
+ "The selected equipment has no instruction manual": "Valitulla välineellä ei ole ohjekirjaa",
+ "Notes": "Muistiinpanot",
+ "Edit equipment": "Muokkaa välinettä",
+ "Create equipment": "Luo väline",
+ "The current file will be deleted on save": "Nykyinen tiedosto poistetaan talletuksen yhteydessä.",
+ "No picture available": "Ei kuvaa saatavilla",
+ "Presets for new products": "Esiasetukset uusille tuotteille",
+ "Included recipes": "Sisällytetyt reseptit",
+ "A recipe is required": "Resepti vaaditaan",
+ "Add included recipe": "Lisää sisällytetty resepti",
+ "Edit included recipe": "Muokkaa sisällytettyä reseptiä",
+ "Group": "Ryhmä",
+ "This will be used as a headline to group ingredients together": "Tätä käytetään aineosien ryhmittelyyn",
+ "Journal": "Listaus",
+ "Stock journal": "Varastolistaus",
+ "Undone on": "Kumottu",
+ "Batteries journal": "Paristolistaus",
+ "Undo charge cycle": "Kumoa lataussykli",
+ "Undo chore execution": "Kumoa kotityön suoritus",
+ "Chore execution successfully undone": "Kotityön suoritus onnistuneesti kumottu",
+ "Undo": "Kumoa",
+ "Booking successfully undone": "Kirjaus onnistuneesti kumottu",
+ "Charge cycle successfully undone": "Lataussyklit onnistuneesti kumottu",
+ "Disable stock fulfillment checking for this ingredient": "Poista varaston täyttötarkastus tälle ainesosalle",
+ "Add all list items to stock": "Lisää kaikki listalta varastoon",
+ "Add this item to stock": "Lisää tämä kohde varastoon",
+ "Adding shopping list item {string1} of {string2}": "Lisätään ostoslistalta {string1}kpl tuotetta {string2}",
+ "Use a specific stock item": "Käytä tiettyä varastotuotetta",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "Tämän listan ensimmäinen kohta valittaisiin oletussäännön mukaan, joka on \"Avattu ensin, sitten ensin vanheneva ensin, sitten ensin lisätty ensin\"",
+ "Mark {string1} of {string2} as open": "Merkitse {string1} kpl tuotetta {string2} avatuksi",
+ "Marked {string1} of {string2} as opened": "Merkitty {string1} kpl tuotetta {string2} avatuksi",
+ "Mark as opened": "Merkitse avatuksi",
+ "Not opened": "Avaamaton",
+ "Opened": "Avattu",
+ "{string0} opened": "{string0} avattu",
+ "Product due": "Tuote vanhenee",
+ "Task due": "Tehtävän määräpäivä",
+ "Chore due": "Kotityön määräpäivä",
+ "Battery charge cycle due": "Pariston lataussyklin määräaika",
+ "Show clock in header": "Näytä kello otsikossa",
+ "Stock settings": "Varastoasetukset",
+ "Shopping list to stock workflow": "Työnkulku ostoslistasta varastoon",
+ "Skip": "Ohita",
+ "Servings": "Annosta",
+ "Costs": "Kulut",
+ "Based on the prices of the last purchase per product": "Pohjautuu viimeisiin ostohintoihin per tuote",
+ "The ingredients listed here result in this amount of servings": "Nämä ainesosat tuottavat tämän määrän annoksia",
+ "Do not check against the shopping list when adding missing items to it": "Älä tarkista ostoslistaa lisätessäsi puuttuvia tuotteita",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Oletus määrä ostoslistan lisäyksille on \" tarvittava määrä - varastomäärä - kauppalistan määrä\", kun tämä on valittuna määriä verrataan vain varastomäärään, ei ostoslistaan.",
+ "Picture": "Kuva",
+ "Uncheck ingredients to not put them on the shopping list": "Poista merkintä ainesosista poistaaksesi ne ostoslistalta",
+ "This is for statistical purposes only": "Vain tilastollisiin tarkoituksiin",
+ "You have to select a recipe": "Sinun tulee valita resepti",
+ "Key type": "Avaintyyppi",
+ "Share/Integrate calendar (iCal)": "Jaa/Integroi kalenteri (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Käytä seuraavaa (julkista) URL-osoitetta jakamiseen tai integroi kalenteri iCal-muodossa",
+ "Allow partial units in stock": "Salli osittaiset yksiköt varastossa",
+ "Enable tare weight handling": "Ota taarapainon käsittely käyttöön",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Tämä on hyödyllistä esimerkiksi tölkeissä olevan jauhon osalta - ostaessasi/kuluttaessasi/varastosi punnitset aina koko purkin, lähetettävä määrä lasketaan sitten automaattisesti varastotilanteen ja jäljempänä määritellyn taarapainon perusteella",
+ "Tare weight": "Taarapaino",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Taarapainon käsittely käytössä - punnitse koko säiliö, lähetettävä määrä lasketaan automaattisesti",
+ "You have to select a location": "Sinun on valittava sijainti",
+ "You have to select a store": "Sinun on valittava myymälä",
+ "List": "Lista",
+ "Gallery": "Galleria",
+ "The current picture will be deleted on save": "Nykyinen kuva poistetaan talletuksen yhteydessä.",
+ "Journal for this battery": "Päiväkirja tälle akulle",
+ "System info": "Järjestelmän tiedot",
+ "Changelog": "Muutosloki",
+ "will be multiplied by a factor of {string1} to get {string2}": "käytetään kertoimena {string1} jotta saadaan {string2}",
+ "The given date is earlier than today, are you sure?": "Annettu päivämäärä on ennen kuluvaa päivää, oletko varma?",
+ "Product count": "Tuotemäärä",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "Kirjoita tuotteennimi tai anna viivakoodi ja paina tabulaattoria tai enteriä aloittaaksesi työnkulun",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Tätä käytetään oletusasetuksena kun tämä tuote lisätään ainesosiin",
+ "Add item": "Lisää tuote",
+ "Selected shopping list": "Valittu kauppalista",
+ "New shopping list": "Uusi kauppalista",
+ "Delete shopping list": "Poista kauppalista",
+ "Chores settings": "Kotitöiden asetukset",
+ "Batteries settings": "Paristo asetukset",
+ "Tasks settings": "Tehtävä asetukset",
+ "Create shopping list": "Luo kauppalista",
+ "Are you sure to delete shopping list \"{string0}\"?": "Oletko varma, että haluat poistaa kauppalistan \"{string0}\" ?",
+ "Average shelf life": "Keskimääräinen hyllyaika",
+ "Spoil rate": "Pilaantumisaste",
+ "Show more": "Näytä lisää",
+ "Show less": "Näytä vähemmän",
+ "The amount must be between {string1} and {string2}": "Määrän tulee olla {string1} ja {string2} välissä",
+ "Day of month": "Kuukaudenpäivä",
+ "Monday": "Maanantai",
+ "Tuesday": "Tiistai",
+ "Wednesday": "Keskiviikko",
+ "Thursday": "Torstai",
+ "Friday": "Perjantai",
+ "Saturday": "Lauantai",
+ "Sunday": "Sunnuntai",
+ "Configure userfields": "Määrittele käyttäjäkenttiä",
+ "Userfields": "Käyttäjäkentät",
+ "Entity": "Olio",
+ "Caption": "Kuvaus",
+ "Type": "Tyyppi",
+ "Create userfield": "Luo käyttäjäkenttä",
+ "A entity is required": "Olio vaaditaan",
+ "A caption is required": "Kuvaus on pakollinen",
+ "A type is required": "Tyyppi vaaditaan",
+ "Show as column in tables": "Näytä taulukon sarakkeina",
+ "This is required and can only contain letters and numbers": "Tämä vaaditaan ja voi sisältää vain kirjaimia ja numeroita",
+ "Edit userfield": "Muokkaa käyttäjäkenttää",
+ "Plural forms": "Monikkomuodot",
+ "One plural form per line, the current language requires": "Nyt valittuna oleva kieli edellyttää yhtä monikkomuotoa per rivi",
+ "Plural count": "Monikko määrä",
+ "Plural rule": "Monikkosääntö",
+ "in plural form": "monikossa",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Ei tarpeeksi varastossa, {count} ainesosa puuttuu | Ei tarpeeksi varastossa, {count} ainesosia puuttuu",
+ "Not enough in stock, but already on the shopping list": "Ei tarpeeksi varastossa, mutta lisätty jo kauppalistaan",
+ "Not enough in stock": "Ei tarpeeksi varastossa",
+ "Expiring soon days": "Viimeiset käyttöpäivät",
+ "Default location": "Oletus sijainti",
+ "Default amount for purchase": "Oletus ostomäärä",
+ "Default amount for consume": "Oletusmäärä käytettäessä",
+ "Variable amount": "Muuttuva määrä",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Jos tämä ei ole tyhjä, niin tämä näytetään ylläolevan määrän sijaan, jota silti käytetään varaston täyttötarpeen tarkistamiseen.",
+ "Track date only": "Vain päivämäärän seuranta",
+ "When enabled only the day of an execution is tracked, not the time": "Tämä valittuna vain suorittamisen päivämäärää seurataan, ei aikaa.",
+ "Consume {string1} of {string2}": "Käytä {string1} tuotteesta {string2}",
+ "Meal plan": "Ateriasuunnitelma",
+ "Add recipe on {string0}": "Lisää resepti {string0} päivälle",
+ "{count} serving | {count} servings": "{count} annos | {count} annosta",
+ "Week costs": "Viikkokustannus",
+ "Configuration": "Asetukset",
+ "A predefined list of values, one per line": "Etukäteen määritelty lista, yksi arvo per rivi",
+ "Products": "Tuotteet",
+ "Marked task {string0} as completed on {string0}": "Merkitty tehtävä {string0}suoritetuksi {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Varauksella on riippuvaisia jatkovarauksia, peruuttaminen ei ole mahdollista",
+ "per serving": "per annos",
+ "Never": "Ei koskaan",
+ "Today": "Tänään",
+ "Consume {string1} of {string2} as spoiled": "Käytä {string1} tuotteesta {string2} pilaantuneena",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Reseptin \"{string0}\" kaikkia ainesosia ei ole varastossa, ei poistettu mitään",
+ "Undo task": "Kumoa tehtävä",
+ "Due date rollover": "Määräpäivän automaattisiirto",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Kun tämä on valittuna, niin tämä kotityö ole koskaan myöhässä, vaan siirtyy päivittäin eteenpäin",
+ "Location Content Sheet": "Sijainnin sisältösivu",
+ "Print": "Tulosta",
+ "all locations": "kaikki sijainnit",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "Tästä voit tulostaa kunkin sijainnin sisällön, vaikkapa sen läheisyyteen sijoitettavaksi helpottamaan käytettyjen tuotteiden kirjaamista",
+ "this location": "tämä sijainti",
+ "Consumed amount": "Käytetty määrä",
+ "Time of printing": "Tulostusaika",
+ "Are you sure to delete equipment \"{string0}\"?": "Haluatko varmasti poistaa välineen \"{string0}\"?",
+ "Parent product": "Päätuote",
+ "Not possible because this product is already used as a parent product in another product": "Ei mahdollista, koska tämä tuote on jo määritetty toisen tuotteen päätuotteeksi",
+ "Default conversions": "Oletusmuunnokset",
+ "Factor": "Kerroin",
+ "1 {string0} is the same as...": "1 {string0} on sama kuin...",
+ "Create QU conversion": "Luo muunnos määrän yksiköille",
+ "Default for QU": "Oletusarvo määrän yksiköille",
+ "Quantity unit from": "Lähdeyksikkö",
+ "Quantity unit to": "Kohdeyksikkö",
+ "This cannot be equal to {string0}": "Tämä ei voi olla sama kuin {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Tämä tarkoittaa, että 1 {string1} on sama kuin {string2} {string3}",
+ "QU conversions": "Määrän yksiköiden muunnokset",
+ "Product overrides": "Tuotteen korvaukset",
+ "Override for product": "Tuotteen korvaus",
+ "This equals {string1} {string2}": "Tämä on sama kuin {string1} {string2}",
+ "Edit QU conversion": "Muokkaa määrän yksikön muunnosta",
+ "An assignment type is required": "Toimeksiannon tapa on pakollinen",
+ "Assignment type": "Toimeksiannon tapa",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus aikataulutetaan 1 päivän päähän edellisestä suorituksesta",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus aikataulutetaan 1 päivän päähän edellisestä suorituksesta, mutta vain alla määriteltyinä viikonpäivinä",
+ "This means the next execution of this chore is not scheduled": "Tämä tarkoittaa, että tämän kotityön seuraavaa suoritusta ei aikatauluteta",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus aikataulutetaan suoritettavaksi alla valittuna kuukauden päivänä",
+ "This means the next execution of this chore will not be assigned to anyone": "Tämä tarkoittaa, että tätä kotityötä ei anneta toimeksi kenellekään",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus annetaan toimeksi sille, joka on tehnyt tätä vähiten",
+ "This means the next execution of this chore will be assigned randomly": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus annetaan toimeksi satunnaiselle tekijälle",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus annetaan toimeksi seuraavalle aakkosjärjestyksessä",
+ "Assign to": "Toimeksiannetaan tekijälle",
+ "This assignment type requires that at least one is assigned": "Tämä toimeksiannon tapa vaatii vähintään yhden tekijän",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} kotityö toimeksiannettu minulle | {count} kotityötä toimeksiannettu minulle",
+ "Assigned to me": "Toimeksiannettu minulle",
+ "assigned to {string0}": "Annetty toimeksi tekijälle: {string0}",
+ "Assignment": "Toimeksianto",
+ "Consume product on chore execution": "Käytä tuote kotityötä tehdessä",
+ "Are you sure to delete user field \"{string0}\"?": "Haluatko varmasti poistaa oman kentän \"{string0}\"?",
+ "Userentities": "Omat oliot",
+ "Create userentity": "Luo uusi oma olio",
+ "Show in sidebar menu": "Näytä menun sivupalkissa",
+ "Edit userentity": "Muokkaa omaa oliota",
+ "Edit {string0}": "Muokkaa {string0}",
+ "Create {string0}": "Luo {string0}",
+ "Are you sure to delete this userobject?": "Haluatko varmasti poistaa tämän käyttäjäobjektin?",
+ "Icon CSS class": "Kuvakkeen CSS-luokka",
+ "For example": "Esimerkiksi",
+ "Configure fields": "Muokkaa kenttiä",
+ "Quantity unit plural form testing": "Määräyksikön monikkomuodon testaus",
+ "Result": "Tulos",
+ "Test plural forms": "Testaa monikkomuotoja",
+ "Scan a barcode": "Skannaa viivakoodi",
+ "Error while initializing the barcode scanning library": "Virhe alustettaessa viivakoodien lukemisen kirjastoa",
+ "The resulting price of this ingredient will be multiplied by this factor": "Tämän ainesosan lopullinen hinta kerrotaan tällä kertoimella ",
+ "Price factor": "Hintakerroin",
+ "Do you find grocy useful?": "Pidätkö grocyä hyödyllisenä?",
+ "Say thanks": "Kiitä",
+ "Search for recipes containing this product": "Etsi tämän tuotteen sisältäviä reseptejä",
+ "Add to shopping list": "Lisää ostoslistalle",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Lisättiin {string1} tuotetta {string2} ostoslistaan \"{string3}\"",
+ "Output": "Tuotos",
+ "Energy (kcal)": "Energia (kcal)",
+ "Per stock quantity unit": "Varaston määräyksikköä kohti",
+ "Barcode scanner testing": "Testaa viivakoodilukija",
+ "Expected barcode": "Odotettu viivakoodi",
+ "Scan field": "Skannaa kenttä",
+ "Scanned barcodes": "Skannaa viivakoodit",
+ "Hit": "Osuma",
+ "Miss": "Ohi",
+ "Display recipe": "Näytä resepti",
+ "Accumulate sub products min. stock amount": "Lisää alatuotteiden varaston minimimäärät",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Jos tämä valitaan, niin niin alatuotteiden minimivarastömäärät lisätään tähän tuotteeseen, jolloin alatuote ei koskaan ole \"lopussa\", vaan vain tämä tuote.",
+ "Are you sure to remove this conversion?": "Haluatko varmasti poistaa tämän muunnoksen?",
+ "Unit price": "Yksikköhinta",
+ "Total price": "Yhteishinta",
+ "in {string0} and based on the purchase quantity unit": "{string0} perustuen oston määräyksikköön",
+ "Unlimited": "Rajoittamaton",
+ "Clear": "Tyhjennä",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Haluatko varmasti poistaa mukaan luetun reseptin \"{string0}\"?",
+ "Period interval": "Intervalli",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus tulisi aikatauluttaa vain joka {string0}. päivälle",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus tulisi aikatauluttaa vain joka {string0}. viikolle",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus tulisi aikatauluttaa vain joka {string0}. kuukaudelle",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus on aikataulutettu 1 vuoden päähän edellisestä suorituksesta",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Tämä tarkoittaa, että tämän kotityön seuraava suoritus tulisi aikatauluttaa vain joka {string0}. vuotena",
+ "Transfer": "Siirto",
+ "From location": "Paikasta",
+ "To location": "Paikkaan",
+ "There are no units available at this location": "Tuotetta ei ole saatavilla tässä paikassa",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "Määrä: {string1}; Vanhenee: {string2}; Ostettu: {string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Siirrettiin {string1} {string2} kohteesta {string3} kohteeseen {string4}",
+ "Stock entries": "Varastomerkinnät",
+ "Best before date": "Parasta ennen päivä",
+ "Purchased date": "Hankintapäivä",
+ "Consume all {string0} for this stock entry": "Käytä kaikki {string0} tälle varastomerkinnälle",
+ "The amount cannot be lower than {string1}": "Määrä ei voi olla pienempi kuin {string1}",
+ "Stock entry successfully updated": "Varastomerkintä päivitetty onnistuneesti",
+ "Edit stock entry": "Muokkaa varastomerkintää",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Kameran käyttö on mahdollista vain, kun se on tuettuna ja sallittuna selaimessasi ja kun grocy-yhteys on turvallinen (https://)",
+ "Keep screen on": "Pidä näyttö päällä",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Pidä näyttö päällä näytettäessä \"kokonäyttökorttia\"",
+ "A purchased date is required": "Hankintapäivä vaaditaan",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "Kun tuote on valittuna, yksi yksikkö (per annos varaston määräyksiköissä) lisätään varastoon reseptin käytön yhteydessä",
+ "Produces product": "Tuottaa tuotteen",
+ "This booking cannot be undone": "Tämä merkintä ei voi kumota",
+ "Booking does not exist or was already undone": "Merkintää ei löydy tai se on jo kumottu",
+ "Are you sure to delete API key \"{string0}\"?": "Haluatko varmasti poistaa API-avaimen \"{string0}\"?",
+ "Add note": "Lisää huomautus",
+ "Add note on {string0}": "Lisää merkintä kohteelle {string0}",
+ "per day": "per päivä",
+ "Only undone items": "Vain tekemättömät nimikkeet",
+ "Add product": "Lisää tuote",
+ "Add product on {string0}": "Lisää tuotetta {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Kuluta kaikki ainekset, joita tarvitaan tämän viikon resepteihin tai tuotteisiin",
+ "Meal plan recipe": "Ateriasuunnitelman resepti",
+ "Meal plan note": "Ateriasuunnitelman merkintä",
+ "Meal plan product": "Ateriasuunnitelman tuote",
+ "Scan mode": "Skannaustila",
+ "on": "Päällä",
+ "off": "Pois päältä",
+ "Scan mode is on but not all required fields could be populated automatically": "Skannaustila on päällä, mutta kaikki vaaditut kentät eivät täyttyneet automaattisesti",
+ "Is freezer": "On pakastin",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Kun tuote menee pakastimeen tai poistuu sieltä, niin tuotteen parasta ennen -päiväys muuttuu automaattisesti tuotteen asetusten mukaisesti",
+ "This cannot be the same as the \"From\" location": "Tämä ei voi olla sama kuin lähtösijainti",
+ "Thawed": "Sulanut",
+ "Frozen": "Pakastettu",
+ "Are you sure to delete userentity \"{string0}\"?": "Haluatko varmasti poistaa oman olion \"{string0}\"?",
+ "Shopping list settings": "Ostoslistan asetukset",
+ "Show a month-view calendar": "Näytä kalenterin kuukausinäkymä",
+ "Edit note on {string0}": "{string0}: muokkaa merkintää ",
+ "Edit product on {string0}": "{string0}: muokkaa tuotetta",
+ "Edit recipe on {string0}": "{string0}: muokkaa reseptiä",
+ "Desired servings": "Toivottu annosmäärä",
+ "Base: {string0}": "Perusta: {string0}",
+ "Recipes settings": "Reseptiasetukset",
+ "Recipe card": "Resepti kortti",
+ "Group ingredients by their product group": "Ryhmittele ainekset tuoteryhmän mukaan",
+ "Unknown store": "Tuntematon kauppa",
+ "Store": "Kauppa",
+ "Transaction successfully undone": "Tapahtuman peruminen onnistui",
+ "Default store": "Oletuskauppa",
+ "Consume this stock entry": "Kuluta tämä varastomerkintä",
+ "Mark this stock entry as open": "Merkitse varastomerkintä avatuksi",
+ "Mark this item as done": "Merkitse tehdyksi",
+ "Edit this item": "Muokkaa kohdetta",
+ "Delete this item": "Tuhota kohde",
+ "Show an icon if the product is already on the shopping list": "Näytä kuvake, jos tuote on jo ostoslistalla",
+ "Calories": "Kaloria",
+ "means {string1} per {string2}": "tarkoittaa {string1} per {string2}",
+ "Create inverse QU conversion": "Luo käänteinen muunnos määrän yksikölle",
+ "Create recipe": "Luo resepti",
+ "Save & continue to add ingredients and included recipes": "Tallenna & jatka ainesosien lisäämistä resepteihin",
+ "Save & continue": "Tallenna & jatka",
+ "Save & return to recipes": "Tallenna & palaa resepteihin",
+ "Stock value": "Varastoarvo",
+ "Average price": "Keskihinta",
+ "Active": "Aktiivinen",
+ "Barcodes": "Viivakoodit",
+ "Barcode": "Viivakoodi",
+ "Create Barcode": "Luo viivakoodi",
+ "Barcode for product": "Viivakoodi tuotteelle",
+ "Edit Barcode": "Muokkaa viivakoodia",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Ei tarpeeksi varastossa (ei sisälly kustannuksiin), puuttuu {string0} ainesta",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "Perustuen hintoihin oletuksena olevasta kulutussäännöstä, joka on \"Ensin avattu ensin, sitten ensin vanheneva ensin, sitten ensin lisätty ensin\"",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Ei tarpeeksi varastossa (ei sisälly kustannuksiin), {string1} puuttuu, {string2} on jo ostoslistalla",
+ "Quantity unit stock cannot be changed after first purchase": "Määrän yksikköä varastossa ei voi muuttaa ensimmäisen oston jälkeen",
+ "Clear filter": "Tyhjennä filtterit",
+ "Permissions for user {string0}": "Oikeudet käyttäjälle {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "Haluatko todella poistaa täydet oikeudet itseltäsi?",
+ "Permissions saved": "Oikeudet tallennettu",
+ "You are not allowed to view this page": "Sinulla ei ole oikeuksia katsoa tätä sivua",
+ "Page not found": "Sivua ei löydy",
+ "Unauthorized": "Käyttö estetty",
+ "Error source": "Oletuskauppa",
+ "Error message": "Virheviesti",
+ "Stack trace": "Pinovedos",
+ "Easy error info copy & paste (for reporting)": "Helppo virheilmoituksen kopiointi (raportointia varten)",
+ "This page does not exist": "Sivua ei löydy",
+ "You will be redirected to the default page in {string0} seconds": "Ohjataan oletussivulle {string0} sekunnissa",
+ "Server error": "Palvelinvirhe",
+ "A server error occured while processing your request": "Palvelinvirhe pyyntöä käsitellessä",
+ "If you think this is a bug, please report it": "Jos epäilet ohjelmistovirhettä, voisitko ystävällisesti raportoida sen?",
+ "Language": "Kieli",
+ "User settings": "Käyttäjäasetukset",
+ "Default": "Oletus",
+ "Stock journal summary": "Varaston päiväkirjan tiivistelmä",
+ "Journal summary": "Päiväkirjan tiivistelmä",
+ "Journal summary for this product": "Päiväkirjan tiivistelmä tälle tuotteelle",
+ "Consume exact amount": "Kuluta tarkka määrä",
+ "Value": "Arvo",
+ "{string0} total value": "{string0} kokonaisarvo",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "Näytä ostopäivä osto- ja luettelosivulla (muutoin ostopäivän oletus on tänään)",
+ "Common": "Yleinen",
+ "Decimal places allowed for amounts": "Desimaalit sallittu määriin",
+ "Decimal places allowed for prices": "Desimaalit sallittu hintoihin",
+ "Stock entries for this product": "Tämän tuotteen varastomerkinnät",
+ "Edit shopping list": "Muokkaa ostoslistaa",
+ "Save & continue to add quantity unit conversions & barcodes": "Talleta ja jatka määrän yksiköiden muunnoksien ja viivakoodien lisäämistä",
+ "Save & return to products": "Tallenna & palaa tuotteisiin",
+ "Save & continue to add conversions": "Tallenna & jatka muuntamisen lisäämisiä",
+ "Save & return to quantity units": "Tallenna ja palaa yksikkömääriin",
+ "price": "hinta",
+ "New stock amount": "Uusi varastomäärä",
+ "Price per stock unit": "Hinta / varastoyksikkö",
+ "Table options": "Taulukon vaihtoehdot",
+ "This product is currently on a shopping list": "Tämä tuote on tällä hetkellä ostoslistalla",
+ "Undo transaction": "Peruuta tapahtuma",
+ "Transaction type": "Tapahtuman tyyppi",
+ "Transaction time": "Tapahtuman aika",
+ "Chore journal": "Kotitöiden päiväkirja",
+ "Track chore execution": "Seuraa kotityön suorittamista",
+ "Mark task as completed": "Merkitse tehtävä suoritetuksi",
+ "Track charge cycle": "Seuraa lataussykliä",
+ "Battery journal": "Paristojen päiväkirja",
+ "This product has a picture": "Tuotteesta löytyy kuva",
+ "Consume this stock entry as spoiled": "Kuluta tämä varastomerkintä pilaantuneena",
+ "Configure user permissions": "Määritä käyttäjäoikeudet",
+ "Show a QR-Code for this API key": "Näytä QR-koodi tälle API-avaimelle",
+ "This is the default quantity unit used when adding this product to the shopping list": "Tätä määrän yksikköä käytetään oletuksena, kun tätä tuotetta lisätään ostoslistalle",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "Näytä varoitus, kun ostetun tuotteen parasta ennen -päivä on aiemmin kuin varaston seuraava parasta ennen -päivä",
+ "This is due earlier than already in-stock items": "Tämä vanhenee ennen kuin ennestään varastossa olevat kohteet",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "Pikakulutusmäärä",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "Tätä määrää käytetään \"pikakulutus/-avaus -napeille\" varaston yleiskatsaus -sivulla (liittyy varaston määräyksikköön)",
+ "Copy": "Kopioi",
+ "Are you sure to remove this barcode?": "Haluatko varmasti poistaa tämän viivakoodin?",
+ "Due date type": "Parasta ennen -päiväyksen tyyppi",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "Korostus varaston yleiskatsaus -sivulla muuttuu perustuen valittuun tyyppiin ",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "Tarkoittaa, että tuotetta voi mahdollisesti vielä turvallisesti kuluttaa parasta ennen -päivän jälkeen ",
+ "Expiration date": "Vanhenemispäivä",
+ "Means that the product is not safe to be consumed after its due date is reached": "Tarkoittaa, että tuotetta ei voi enää turvallisesti kuluttaa parasta ennen -päivän jälkeen",
+ "For purchases this amount of days will be added to today for the due date suggestion": "Ostoissa tämä määrä päiviä lisätään tänään-päivään parasta ennen -päivän ehdotuksessa",
+ "-1 means that this product will be never overdue": "-1 tarkoittaa, että tämä tuote ei vanhene koskaan",
+ "Default due days": "Oletusmäärä vanhenemispäiviä",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "Kun tämä tuote merkitään avatuksi, niin parasta ennen -päiväksi vaihdetaan tänään + tämä määrä päiviä (arvo 0 poistaa tämän käytöstä)",
+ "Default due days after opened": "Oletusmäärä vanhenemispäiviä avauksen jälkeen",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "Siirrettäessä tämä tuote pakastin-sijaintiin (eli pakastettaessa), parasta ennen -päiväksi asetetaan tänään + tämä määrä päiviä",
+ "Default due days after freezing": "Oletusmäärä säilyvyyspäiviä pakastettuna",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "Poistettaessa tämä tuote pakastin-sijainnista (eli sulatettaessa), parasta ennen -päiväksi asetetaan tänään + tämä määrä päiviä",
+ "Default due days after thawing": "Oletusmäärä säilyvyyspäiviä sulatuksen jälkeen",
+ "Next due date": "Seuraava parasta ennen -päivä",
+ "{count} product is due | {count} products are due": "{count} tuote on vanhenemassa | {count} tuotetta on vanhenemassa",
+ "Due date": "Parasta ennen -päivä",
+ "Never overdue": "Ei vanhene koskaan",
+ "{count} product is expired | {count} products are expired": "{count} tuote on vanhentunut | {count} tuotetta on vanhentunut",
+ "Expired": "Vanhentunut",
+ "Due soon days": "Pian vanhenemassa -päiviä",
+ "Add overdue/expired products": "Lisää vanhenevat/vanhentuneet tuotteet",
+ "Products with tare weight enabled are currently not supported for transfer": "Tuotteita, joilla on taarapaino, ei nykyisellään voi siirtää",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "Tämä ei voi olla pienempi kuin {string1} tai yhtäsuuri kuin {string2} ja sen pitää olla validi luku, jossa on enintään {string3} desimaalia",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "Tämä ei voi olla pienempi kuin {string1} ja sen pitää olla validi luku, jossa on enintään {string2} desimaalia",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "Tämän pitää olla lukujen {string1} ja {string2} välillä ja sen pitää olla validi luku, jossa on enintään {string3} desimaalia",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "Tee varaus automaattisesti käyttäen viimeisintä hintaa sekä määrää ostoslistalla, jos tuotteella on \"Oletusmäärä vanhenemispäiviä\" asetettuna",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "Siirrettäessä tuotteita pakastimeen tai sieltä pois parasta ennen -päiväys asetetaan automaattisesti tuotteen asetusten mukaisesti",
+ "This is the internal field name, e. g. for the API": "Tämä on sisäinen kentän nimi esimerkiksi APIa varten",
+ "This is used to display the field on the frontend": "Tätä käytetään näytettäessä kenttää käyttöliittymässä",
+ "Multiple Userfields will be ordered by that number on the input form": "Useammat käyttäjäkentät järjestetään syötekaavakkeessa olevan numeron mukaan",
+ "Sort number": "Numero järjestämistä varten",
+ "Download file": "Lataa tiedosto",
+ "Use the products \"Quick consume amount\"": "Käytä tuotteen \"Pikakulutusmäärää\"",
+ "Disabled": "Ei käytössä",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "Tämä poistaa myös varastomäärät, päiväkirjan ja muut viittaukset tähän tuotteeseen – harkitse sen sijaan asettamista \"Ei käytössä\" -tilaan, jos haluat säilyttää nämä ja vain piilottaa tuotteen",
+ "Show disabled": "Näytä käytöstä poistetut",
+ "Never show on stock overview": "Älä koskaan näytä varaston yleiskatsauksessa",
+ "None": "Ei mitään",
+ "Group by": "Ryhmittele",
+ "Ingredient group": "Ainesosaryhmä",
+ "Reset": "Nollaa",
+ "Are you sure to reset the table options?": "Haluatko varmasti nollata taulukon valinnat?",
+ "Hide/view columns": "Piilota/näytä kolumneja",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "Eri määrää/yksikkö voidaan sitten käyttää alla, kun taas varaston täyttämisen tarkistusta varten riittää, kun mikä tahansa määrä tuotetta on varastossa",
+ "Last price (Unit)": "Viimeisin hinta (Yksikkö)",
+ "Last price (Total)": "Viimeisin hinta (Yhteensä)",
+ "Show header": "Näytä otsikko",
+ "Group by product group": "Ryhmittele tuoteryhmän mukaan",
+ "Table": "Taulukko",
+ "Layout type": "Asettelutyyppi",
+ "Merge this product with another one": "Yhdistä tämä tuote toisen kanssa",
+ "Merge products": "Yhdistä tuotteet",
+ "Product to keep": "Säilytettävä tuote",
+ "Product to remove": "Poistettava tuote",
+ "Error while merging products": "Virhe yhdistettäessä tuotteita",
+ "After merging, this product will be kept": "Yhdistämisen jälkeen tämä tuote säilytetään",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "Yhdistämisen jälkeen kaikki tämän tuotteen esiintymät korvaa \"Säilytettävä tuote\" (eli tätä tuotetta ei enää ole)",
+ "Merge": "Yhdistä",
+ "Title": "Otsikko",
+ "Link": "Linkki",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "Varaston yleiskatsaus -sivu luettelee kaikki tuotteet, jotka ovat tällä hetkellä varastossa tai niiden minimivarastomärä on alitettuna – käytä tätä piilottaaksesi tuotteen aina sieltä",
+ "Print options": "Tulostusasetukset",
+ "A product or a note is required": "Tuote tai merkintä vaaditaan",
+ "no-assignment": "ei-asetusta",
+ "who-least-did-first": "vähiten tehnyt",
+ "random": "satunnainen",
+ "in-alphabetical-order": "aakkosjärjestyksessä",
+ "timeago_locale": "fi",
+ "timeago_nan": "NaN vuotta",
+ "moment_locale": "fi",
+ "datatables_localization": "{\"sEmptyTable\":\"Ei näytettäviä tuloksia.\",\"sInfo\":\"Näytetään rivit _START_ - _END_ (yhteensä _TOTAL_ )\",\"sInfoEmpty\":\"Näytetään 0 - 0 (yhteensä 0)\",\"sInfoFiltered\":\"(suodatettu _MAX_ tuloksen joukosta)\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Näytä kerralla _MENU_ riviä\",\"sLoadingRecords\":\"Ladataan...\",\"sProcessing\":\"Hetkinen...\",\"sSearch\":\"Etsi:\",\"sZeroRecords\":\"Tietoja ei löytynyt\",\"oPaginate\":{\"sFirst\":\"Ensimmäinen\",\"sLast\":\"Viimeinen\",\"sNext\":\"Seuraava\",\"sPrevious\":\"Edellinen\"},\"oAria\":{\"sSortAscending\":\": lajittele sarake nousevasti\",\"sSortDescending\":\": lajittele sarake laskevasti\"},\"select\":{\"rows\":{\"0\":\"Klikkaa riviä valitaksesi sen\",\"1\":\"Valittuna vain yksi rivi\",\"_\":\"Valittuna {string0} riviä\"}},\"buttons\":{\"copy\":\"Kopioi\",\"copySuccess\":{\"1\":\"Yksi rivi kopioitu leikepöydälle\",\"_\":\"{string0} riviä kopioitu leikepöydälle\"},\"copyTitle\":\"Kopioi leikepöydälle\",\"copyKeys\":\"Paina ctrl tai ⌘ + C kopioidaksesi taulukon arvot leikepöydälle. Peruuttaaksesi klikkaa tähän tai Esc.\"}}",
+ "summernote_locale": "fi-FI",
+ "fullcalendar_locale": "fi",
+ "bootstrap-select_locale": "fi_FI",
+ "purchase": "osta",
+ "transfer_from": "siirrä täältä",
+ "transfer_to": "siirrä tähän",
+ "consume": "kuluta",
+ "inventory-correction": "varaston korjaus",
+ "product-opened": "Tuote avattu",
+ "stock-edit-old": "vanha varaston muutos",
+ "stock-edit-new": "uusi varaston muutos",
+ "self-production": "itse tehty",
+ "manually": "käsin",
+ "dynamic-regular": "toistuu säännöllisesti",
+ "daily": "päivittäin",
+ "weekly": "viikoittain",
+ "monthly": "kuukausittain",
+ "yearly": "vuosittain",
+ "text-single-line": "teksti-yksi-rivi",
+ "text-multi-line": "teksti-monta-riviä",
+ "number-integral": "numero-kokonaisluku",
+ "number-decimal": "numero-desimaali",
+ "date": "päivämäärä",
+ "datetime": "päivämäärä ja aika",
+ "checkbox": "valintaruutu",
+ "preset-list": "esiasetettu luettelo",
+ "preset-checklist": "esiasetettu valintalista",
+ "link": "linkki",
+ "link-with-title": "linkki otsikolla",
+ "file": "tiedosto",
+ "image": "kuva",
+ "ADMIN": "PÄÄKÄYTTÄJÄ",
+ "USERS_CREATE": "KÄYTTÄJÄT_LUOVAT",
+ "USERS_EDIT": "KÄYTTÄJÄT_MUOKKAAVAT",
+ "USERS_READ": "KÄYTTÄJÄT_LUKEVAT",
+ "USERS_EDIT_SELF": "KÄYTTÄJÄT_MUOKKAAVAT_ITSE",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "PARISTOT_PERUUTA_LATAUS_SYKLI",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "PARISTOT_SEURAA_LATAUS_SYKLI",
+ "CHORE_TRACK_EXECUTION": "TYÖ_SEURAA_VALMISTUS",
+ "CHORE_UNDO_EXECUTION": "TYÖ_PERUUTA_TOTEUTUS",
+ "MASTER_DATA_EDIT": "MASTER_DATA_MUOKKAA",
+ "TASKS_UNDO_EXECUTION": "TEHTÄVÄT_PERUUTA_TOTEUTUS",
+ "TASKS_MARK_COMPLETED": "TEHTÄVÄT_MERKITSE_SUORITETTU",
+ "STOCK_EDIT": "VARASTO_MUOKKAA",
+ "STOCK_TRANSFER": "VARASTO_SIIRRÄ",
+ "STOCK_INVENTORY": "VARASTO_LUETTELO",
+ "STOCK_CONSUME": "VARASTO_KÄYTÄ",
+ "STOCK_OPEN": "VARASTO_AVAA",
+ "STOCK_PURCHASE": "VARASTO_OSTO",
+ "SHOPPINGLIST_ITEMS_ADD": "KAUPPALISTA_TUOTTEET_LISÄÄ",
+ "SHOPPINGLIST_ITEMS_DELETE": "KAUPPALISTA_TUOTTEET_POISTA",
+ "USERS": "KÄYTTÄJÄT",
+ "STOCK": "VARASTO",
+ "SHOPPINGLIST": "KAUPPALISTA",
+ "CHORES": "TYÖ",
+ "BATTERIES": "PARISTOT",
+ "TASKS": "TEHTÄVÄT",
+ "RECIPES": "RESEPTIT",
+ "EQUIPMENT": "TARVIKKEET",
+ "CALENDAR": "KALENTERI",
+ "RECIPES_MEALPLAN": "RESEPTIT_PÄIVÄLLISSUUNNITELMA",
+ "cs": "cs",
+ "da": "da",
+ "de": "de",
+ "el_GR": "el_GR",
+ "en": "en",
+ "en_GB": "en_GB",
+ "es": "es",
+ "fr": "fr",
+ "hu": "hu",
+ "it": "it",
+ "ja": "ja",
+ "ko_KR": "ko_KR",
+ "nl": "nl",
+ "no": "no",
+ "pl": "pl",
+ "pt_BR": "pt_BR",
+ "pt_PT": "pt_PT",
+ "ru": "ru",
+ "sk_SK": "sk_SK",
+ "sv_SE": "sv_SE",
+ "tr": "tr",
+ "zh_TW": "zh_TW",
+ "zh_CN": "zh_CN",
+ "he_IL": "he_IL",
+ "ta": "ta",
+ "fi": "fi",
+ "Cookies": "Keksit",
+ "Chocolate": "Suklaa",
+ "Pantry": "Ruokakomero",
+ "Candy cupboard": "Karkkikaappi",
+ "Tinned food cupboard": "Säilykekaappi",
+ "Fridge": "Jääkaappi",
+ "Piece | Pieces": "Kappale | Kappaletta",
+ "Pack | Packs": "Paketti | Pakettia",
+ "Glass | Glasses": "Lasi | Lasia",
+ "Tin | Tins": "Purkki | Purkkia",
+ "Can | Cans": "Tölkki | Tölkkiä",
+ "Bunch | Bunches": "Nippu | Nippua",
+ "Gummy bears": "Nallekarkkeja",
+ "Crisps": "Sipsejä",
+ "Eggs": "Munia",
+ "Noodles": "Nuudeleita",
+ "Pickles": "Suolakurkkuja",
+ "Gulash soup": "Gulassikeitto",
+ "Yogurt": "Jugurtti",
+ "Cheese": "Juusto",
+ "Cold cuts": "Leikkele",
+ "Paprika": "Paprika",
+ "Cucumber": "Kurkku",
+ "Radish": "Retiisi",
+ "Tomato": "Tomaatti",
+ "Changed towels in the bathroom": "Vaihdettu käsipyyhkeet",
+ "Cleaned the kitchen floor": "Pesty keittiön lattia",
+ "Warranty ends": "Takuu päättyy",
+ "TV remote control": "TV kaukosäädin",
+ "Alarm clock": "Herätyskello",
+ "Heat remote control": "Lämpökaukosäädin",
+ "Lawn mowed in the garden": "Ruoho leikattu puutarhassa",
+ "Some good snacks": "Hyviä välipaloja",
+ "Pizza dough": "Pizzataikina",
+ "Sieved tomatoes": "Tomaattimurska",
+ "Salami": "Salami",
+ "Toast": "Paahtoleipä",
+ "Minced meat": "Jauheliha",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spagetti bolognese",
+ "Sandwiches": "Voileipiä",
+ "English": "Englanti",
+ "German": "Saksa",
+ "Italian": "Italia",
+ "This is the note content of the recipe ingredient": "Tämä on reseptin ainesosan muistiinpanojen sisältö",
+ "Demo User": "Testikäyttäjä",
+ "Gram | Grams": "Grammaa | Grammaa",
+ "Flour": "Jauhot",
+ "Pancakes": "Lettuja",
+ "Sugar": "Sokeri",
+ "Home": "Koti",
+ "Life": "Elämä",
+ "Projects": "Projektit",
+ "Repair the garage door": "Korjaa autotallin ovi",
+ "Fork and improve grocy": "Forkkaa grocy ja paranna sitä",
+ "Find a solution for what to do when I forget the door keys": "Mitä tehdä, kun avaimet jääneet kotiin",
+ "Sweets": "Makeiset",
+ "Bakery products": "Leipomotuotteet",
+ "Tinned food": "Säilykepurkit",
+ "Butchery products": "Lihatuotteet",
+ "Vegetables/Fruits": "Vihannekset/Hedelmät",
+ "Refrigerated products": "Jääkaappituotteet",
+ "Coffee machine": "Kahviautomaatti",
+ "Dishwasher": "Tiskikone",
+ "Liter": "Litra",
+ "Liters": "Litrat",
+ "Bottle": "Pullo",
+ "Bottles": "Pullot",
+ "Milk": "Maito",
+ "Chocolate sauce": "Suklaakastike",
+ "Milliliters": "Millilitrat",
+ "Milliliter": "Millilitra",
+ "Bottom": "Pohja",
+ "Topping": "Kuorrute",
+ "French": "Ranska",
+ "Turkish": "Turkki",
+ "Spanish": "Espanja",
+ "Russian": "Venäjä",
+ "The thing which happens on the 5th of every month": "Asia, joka tapahtuu joka kuukauden 5. päivänä",
+ "The thing which happens daily": "Päivittäiset askareet",
+ "The thing which happens on Mondays and Wednesdays": "Asiat/Tehtävät, jotka tehdään maanantaisin ja keskiviikkoisin",
+ "Swedish": "Ruotsi",
+ "Polish": "Puola",
+ "Milk Chocolate": "Maitokaakao",
+ "Dark Chocolate": "Tumma kaakao",
+ "Slice | Slices": "Viipale | Viipaletta",
+ "Example userentity": "Esimerkki omasta oliosta",
+ "This is an example user entity...": "Tämä on esimerkki omasta oliosta...",
+ "Custom field": "Mukautettu kenttä",
+ "Example field value...": "Esimerkkiarvo...",
+ "Waffle rolls": "Vohvelirullat",
+ "Danish": "Tanska",
+ "Dutch": "Hollanti",
+ "Norwegian": "Norja",
+ "Demo": "Demo",
+ "Stable version": "Vakaa versio",
+ "Preview version": "Esijulkaisu versio",
+ "current release": "nykyinen julkaisu",
+ "not yet released": "ei vielä julkaistu",
+ "Portuguese (Brazil)": "Portugali (Brasilia)",
+ "This is a note": "Muistiinpanot",
+ "Freezer": "Pakastin",
+ "Hungarian": "Unkari",
+ "Slovak": "Slovakia",
+ "Czech": "Tsekki",
+ "Portuguese (Portugal)": "Portugali (Portugali)",
+ "DemoSupermarket1": "Demo kauppa1",
+ "DemoSupermarket2": "Demo kauppa2",
+ "Japanese": "Japani",
+ "Chinese (Taiwan)": "Kiina (Taiwan)",
+ "Greek": "Kreikka",
+ "Korean": "Korea",
+ "Chinese (China)": "Kiina (Kiina)",
+ "Hebrew (Israel)": "Heprea (Israel)",
+ "Tamil": "Tamili",
+ "Finnish": "Suomi",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/fr.json b/locale/fr.json
new file mode 100644
index 00000000..48b8e336
--- /dev/null
+++ b/locale/fr.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Aperçu du stock",
+ "{count} product expires | {count} products expiring": "{count} produit périmé | {count} produits périmés",
+ "within the next day | within the next {count} days": "d'ici demain | d'ici {count} jours",
+ "{count} product is already expired | {count} products are already expired": "{count} produit est déjà périmé | {count} produits sont déjà périmés",
+ "{count} product is overdue | {count} products are overdue": "{count} produit arrive à échéance | {count} produits arrivent à échéance",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} produit est en quantité inférieure à la limite définie | {count} produits sont en quantité inférieure à la limite définie",
+ "Product": "Produit",
+ "{count} Product | {count} Products": "{count} Produit | {count} Produits",
+ "Amount": "Quantité",
+ "Logout": "Déconnexion",
+ "Chores overview": "Aperçu des corvées",
+ "Batteries overview": "Aperçu des piles",
+ "Purchase": "Achat",
+ "Consume": "Consommer",
+ "Inventory": "Inventaire",
+ "Shopping list": "Liste de courses",
+ "Chore tracking": "Suivi des corvées",
+ "Battery tracking": "Suivi des piles",
+ "Locations": "Emplacements",
+ "Stores": "Magasins",
+ "Quantity units": "Formats",
+ "Chores": "Corvées",
+ "Batteries": "Piles",
+ "Chore": "Corvée",
+ "Next estimated tracking": "Prochaine occurrence estimée",
+ "Last tracked": "Dernière réalisation",
+ "Battery": "Batterie",
+ "Last charged": "Dernier chargement",
+ "Next planned charge cycle": "Prochaine charge planifiée",
+ "Best before": "DLUO / DLC",
+ "OK": "Ok",
+ "Product overview": "Aperçu du produit",
+ "Stock quantity unit": "Format de stockage",
+ "Stock amount": "Quantité en stock",
+ "Last purchased": "Dernier achat",
+ "Last used": "Dernière utilisation",
+ "Spoiled": "Périmé",
+ "Barcode lookup is disabled": "La recherche par code barres est désactivée",
+ "will be added to the list of barcodes for the selected product on submit": "sera ajouté à la liste des codes-barres pour le produit sélectionné après avoir cliqué sur le bouton",
+ "New amount": "Nouvelle quantité",
+ "Note": "Remarque",
+ "Tracked time": "Réalisé le",
+ "Chore overview": "Aperçu de la corvée",
+ "Tracked count": "Nombre de réalisations",
+ "Battery overview": "Aperçu des piles",
+ "Charge cycles count": "Nombre de charges",
+ "Create shopping list item": "Créer une liste de courses",
+ "Edit shopping list item": "Modifier une liste de courses",
+ "Save": "Sauvegarder",
+ "Add": "Ajouter",
+ "Name": "Nom",
+ "Location": "Emplacement",
+ "Min. stock amount": "Quantité minimum en stock",
+ "Description": "Description",
+ "Create product": "Créer un produit",
+ "Barcode(s)": "Code(s) barres",
+ "Minimum stock amount": "Quantité minimum en stock",
+ "Default best before days": "Jours avant péremption par défaut",
+ "Default quantity unit purchase": "Quantité d'achat par défaut",
+ "Quantity unit stock": "Format au stockage",
+ "Factor purchase to stock quantity unit": "Facteur entre la quantité à l'achat et la quantité en stock",
+ "Create location": "Créer un emplacement",
+ "Create store": "Créer magasin",
+ "Create quantity unit": "Créer un format",
+ "Period type": "Type de période",
+ "Period days": "Jours dans la période",
+ "Create chore": "Créer une corvée",
+ "Used in": "Utilisé dans",
+ "Create battery": "Créer une pile",
+ "Edit battery": "Modifier une pile",
+ "Edit chore": "Modifier une corvée",
+ "Edit quantity unit": "Modifier le format",
+ "Edit product": "Modifier le produit",
+ "Edit location": "Modifier l'emplacement",
+ "Edit store": "Mettre à jour magasin",
+ "Record data": "Enregistrer les données",
+ "Manage master data": "Gérer les données",
+ "This will apply to added products": "Sera appliqué aux produits ajoutés",
+ "never": "jamais",
+ "Add products that are below defined min. stock amount": "Ajouter les produits qui sont en dessous du seuil de stock minimum",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Signifie qu'après l'achat d'1 {string1} vous aurez {string2} {string3} dans le stock",
+ "Login": "Se connecter",
+ "Username": "Identifiant",
+ "Password": "Mot de passe",
+ "Invalid credentials, please try again": "Identifiants invalides, merci de réessayer",
+ "Are you sure to delete battery \"{string0}\"?": "Êtes vous sûr de vouloir supprimer la batterie \"{string0}\" ?",
+ "Yes": "Oui",
+ "No": "Non",
+ "Are you sure to delete chore \"{string0}\"?": "Voulez-vous vraiment supprimer la corvée \"{string0}\" ?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" n'a pas été retrouvé en tant que produit, comment voulez-vous procéder ?",
+ "Create or assign product": "Créer ou assigner à un produit",
+ "Cancel": "Annuler",
+ "Add as new product": "Ajouter un nouveau produit",
+ "Add as barcode to existing product": "Ajouter en tant que code-barres à un produit existant",
+ "Add as new product and prefill barcode": "Ajouter un nouveau produit et pré-renseigner le code-barres",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Voulez-vous vraiment supprimer le format \"{string0}\" ?",
+ "Are you sure to delete product \"{string0}\"?": "Voulez-vous vraiment supprimer le produit \"{string0}\" ?",
+ "Are you sure to delete location \"{string0}\"?": "Voulez-vous vraiment supprimer l'emplacement \"{string0}\" ?",
+ "Are you sure to delete store \"{string0}\"?": "Voulez-vous vraiment supprimer le magasin \"{string0}\" ?",
+ "Manage API keys": "Gérer les clefs API",
+ "REST API & data model documentation": "Documentation sur l'API REST & le modèle des données",
+ "API keys": "Clefs API",
+ "Create new API key": "Créer une nouvelle clef API",
+ "API key": "Clef API",
+ "Expires": "Valide jusqu'à",
+ "Created": "Créée",
+ "This product is not in stock": "Ce produit n'est pas en stock",
+ "This means {string0} will be added to stock": "{string0} sera ajouté au stock",
+ "This means {string0} will be removed from stock": "{string0} sera supprimé du stock",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "La prochaine exécution de cette corvée sera programmée {string0} jours après la dernière exécution",
+ "Removed {string1} of {string2} from stock": "{string1} enlevée du stock de{string2} ",
+ "About grocy": "À propos de grocy",
+ "Close": "Fermer",
+ "Released on": "Date de sortie",
+ "Added {string1} of {string2} to stock": "Ajouté {string1} de {string2} au stock",
+ "Stock amount of {string1} is now {string2}": "La quantité en stock de {string1} est maintenant de {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Suivi de la corvée{string1} sur {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Suivi de la recharge des piles{string1} sur {string2}",
+ "Consume all {string0} which are currently in stock": "Consommer tous les {string0} actuellement en stock",
+ "All": "Tout",
+ "Search": "Recherche",
+ "Not logged in": "Non connecté",
+ "You have to select a product": "Vous devez sélectionner un produit",
+ "You have to select a chore": "Vous devez sélectionner une corvée",
+ "You have to select a battery": "Vous devez sélectionner une pile",
+ "A name is required": "Un nom est requis",
+ "A location is required": "Un emplacement est requis",
+ "A quantity unit is required": "Un format est requis",
+ "A period type is required": "Un type de période est requis",
+ "A best before date is required": "Une date \"À consommer de préférence\" est requise",
+ "Settings": "Paramètres",
+ "This can only be before now": "Ne peut être qu'antérieur à maintenant",
+ "Calendar": "Calendrier",
+ "Recipes": "Recettes",
+ "Edit recipe": "Modifier une recette",
+ "Ingredients list": "Liste des ingrédients",
+ "Add recipe ingredient": "Ajouter un ingrédient dans la recette",
+ "Edit recipe ingredient": "Modifier un ingrédient dans la recette",
+ "Are you sure to delete recipe \"{string0}\"?": "Voulez-vous vraiment supprimer la recette \"{string0}\" ?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Voulez-vous vraiment supprimer l'ingrédient \"{string0}\" de la recette ?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Voulez-vous vraiment vider la liste de courses ?",
+ "Clear list": "Vider la liste",
+ "Requirements fulfilled": "Prérequis remplis",
+ "Put missing products on shopping list": "Ajouter les produits manquants dans la liste de courses",
+ "Enough in stock": "Il y en a assez en stock",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Pas assez en stock, {count} ingrédient manquant mais déjà ajouté à la liste de courses | Pas assez en stock, {count} ingrédients manquants mais déjà ajoutés à la liste de courses",
+ "Expand to fullscreen": "Mettre en plein écran",
+ "Ingredients": "Ingrédients",
+ "Preparation": "Préparation",
+ "Recipe": "Recette",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Pas assez en stock, {string1} manque, {string2} déjà dans la liste de courses",
+ "Show notes": "Afficher les remarques",
+ "Put missing amount on shopping list": "Ajouter la quantité manquante dans la liste de courses",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Voulez-vous vraiment ajouter tous les ingrédients manquants de la recette \"{string0}\" dans la liste de courses ?",
+ "Added for recipe {string0}": "Ajoutés pour la recette {string0}",
+ "Manage users": "Gérer les utilisateurs",
+ "User": "Utilisateur",
+ "Users": "Utilisateurs",
+ "Are you sure to delete user \"{string0}\"?": "Voulez-vous vraiment supprimer l'utilisateur \"{string0}\" ?",
+ "Create user": "Créer un utilisateur",
+ "Edit user": "Modifier un utilisateur",
+ "First name": "Prénom",
+ "Last name": "Nom",
+ "A username is required": "Un nom d'utilisateur est requis",
+ "Confirm password": "Confirmation du mot de passe",
+ "Passwords do not match": "Les mots de passe ne sont pas identiques",
+ "Change password": "Changer le mot de passe",
+ "Done by": "Fait par",
+ "Last done by": "Dernière réalisation par",
+ "Unknown": "Inconnu",
+ "Chores journal": "Journal des corvées",
+ "0 means suggestions for the next charge cycle are disabled": "0 implique que les suggestions du prochain cycle de charge seront désactivées",
+ "Charge cycle interval (days)": "Intervalle du cycle de charge (jours)",
+ "Last price": "Dernier prix",
+ "Price history": "Historique des prix",
+ "No price history available": "Aucun historique disponible",
+ "Price": "Prix",
+ "Unit": "Unité",
+ "{count} Unit | {count} Units": "{count} unité | {count} unités",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} corvée reste à faire | {count} corvées restent à faire",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} corvée n'a pas été réalisée à temps | {count} corvées n'ont pas été réalisées à temps",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} pile doit être rechargée | {count} piles doivent être rechargées",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} pile aurait dû être chargée | {count} piles auraient dû être rechargées",
+ "in singular form": "Au singulier",
+ "Quantity unit": "Format",
+ "Only check if any amount is in stock": "Vérifier seulement qu'une quantité non-nulle est en stock",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "Êtes-vous sûr de vouloir consommer tous les ingrédients requis pour la recette \"{string0}\" (les ingrédient marqués \"Vérifier seulement qu'une quantité non-nulle est en stock\" seront ignorés)",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Enlever tous les ingrédients de la recette \"{string0}\" du stock",
+ "Consume all ingredients needed by this recipe": "Consommer tous les ingrédients requis par cette recette",
+ "Click to show technical details": "Cliquer pour afficher les détails techniques",
+ "Error while saving, probably this item already exists": "Erreur à l'enregistrement, ce produit existe déjà",
+ "Error details": "Détails sur l'erreur",
+ "Tasks": "Tâches",
+ "Show done tasks": "Afficher les tâches terminées",
+ "Task": "Tâche",
+ "Due": "À faire",
+ "Assigned to": "Assigné à",
+ "Mark task \"{string0}\" as completed": "Indiquer la tâche \"{string0}\" comme terminée",
+ "Uncategorized": "Sans catégorie",
+ "Task categories": "Catégories de tâche",
+ "Create task": "Créer une tâche",
+ "A due date is required": "Une date de réalisation est requise",
+ "Category": "Catégorie",
+ "Edit task": "Modifier la tâche",
+ "Are you sure to delete task \"{string0}\"?": "Voulez-vous vraiment supprimer la tâche \"{string0}\" ?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} tâche est due | {count} tâches sont dues",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} tâche en retard | {count} tâches en retard",
+ "Edit task category": "Modifier la catégorie de tâche",
+ "Create task category": "Créer une catégorie de tâche",
+ "Product groups": "Groupes de produit",
+ "Ungrouped": "Sans groupe",
+ "Create product group": "Créer un groupe de produit",
+ "Edit product group": "Modifier le groupe de produit",
+ "Product group": "Groupe de produit",
+ "Are you sure to delete product group \"{string0}\"?": "Voulez-vous vraiment supprimer le groupe de produit \"{string0}\" ?",
+ "Stay logged in permanently": "Rester connecté de manière permanente",
+ "When not set, you will get logged out at latest after 30 days": "Si non défini, vous serez déconnecté après au moins 30 jours",
+ "Status": "Status",
+ "Below min. stock amount": "En dessous du seuil de stock minimum",
+ "Expiring soon": "Expire bientôt",
+ "Already expired": "Déjà périmé",
+ "Due soon": "À réaliser bientôt",
+ "Overdue": "En retard",
+ "View settings": "Voir les paramètres",
+ "Auto reload on external changes": "MàJ automatique lors de changements externe",
+ "Enable night mode": "Activer le mode nuit",
+ "Auto enable in time range": "Activer automatiquement pendant la période",
+ "From": "De",
+ "in format": "Au format",
+ "To": "à",
+ "Time range goes over midnight": "La période inclus minuit",
+ "Product picture": "Photo du produit",
+ "No file selected": "Aucun fichier sélectionné",
+ "Delete": "Supprimer",
+ "Select file": "Sélectionner un fichier",
+ "Image of product {string0}": "Photo du produit {string0}",
+ "Deletion not possible": "Suppression impossible",
+ "Equipment": "Équipement",
+ "Instruction manual": "Manuel d'utilisation",
+ "The selected equipment has no instruction manual": "L'équipement sélectionné n'a pas de manuel d'utilisation",
+ "Notes": "Remarques",
+ "Edit equipment": "Modifier un équipement",
+ "Create equipment": "Créer un équipement",
+ "The current file will be deleted on save": "Le fichier courant sera supprimé lors de la sauvegarde",
+ "No picture available": "Aucune photo disponible",
+ "Presets for new products": "Modèle pour les nouveaux produits",
+ "Included recipes": "Recettes incluses",
+ "A recipe is required": "Une recette est requise",
+ "Add included recipe": "Ajouter une recette incluse",
+ "Edit included recipe": "Supprimer une recette incluse",
+ "Group": "Groupe",
+ "This will be used as a headline to group ingredients together": "Cela sera utilisé comme titre pour regrouper les ingrédients ensemble",
+ "Journal": "Journal",
+ "Stock journal": "Journal du stock",
+ "Undone on": "Annulé le",
+ "Batteries journal": "Journal des batteries",
+ "Undo charge cycle": "Annuler le cycle de charge",
+ "Undo chore execution": "Annuler la réalisation de la corvée",
+ "Chore execution successfully undone": "La réalisation de la corvée a bien été annulée",
+ "Undo": "Annuler",
+ "Booking successfully undone": "Réservation annulée",
+ "Charge cycle successfully undone": "Le cycle de charge a bien été annulé",
+ "Disable stock fulfillment checking for this ingredient": "Désactiver la vérification du stock pour cet ingrédient",
+ "Add all list items to stock": "Ajouter toute la liste dans le stock",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Ajout :{string1} de {string2} à la liste de courses",
+ "Use a specific stock item": "Utiliser un objet spécifique du stock",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "Le premier élément de cette liste est choisi par à la règle de consommation par défaut : \"Ouvert en premier, puis périme en premier, puis plus ancien ajouté\"",
+ "Mark {string1} of {string2} as open": "Indiquer {string1} de {string2} comme ouvert",
+ "Marked {string1} of {string2} as opened": "Indiquer {string1} de {string2} comme ouvert",
+ "Mark as opened": "Indiquer comme ouvert",
+ "Not opened": "Non ouvert",
+ "Opened": "Ouvert",
+ "{string0} opened": "{string0} ouvert",
+ "Product due": "Le produit expire",
+ "Task due": "Tâche à réaliser",
+ "Chore due": "Corvée à réaliser",
+ "Battery charge cycle due": "Rechargement à réaliser",
+ "Show clock in header": "Afficher l'horloge dans l'en-tête",
+ "Stock settings": "Paramètres du stock",
+ "Shopping list to stock workflow": "Transition de la liste de courses vers le stock",
+ "Skip": "Passer",
+ "Servings": "Parts / Portions",
+ "Costs": "Coûts",
+ "Based on the prices of the last purchase per product": "Basé sur les prix du dernier achat du produit",
+ "The ingredients listed here result in this amount of servings": "Les ingrédients mentionnés ici correspondent à ce nombre de portions",
+ "Do not check against the shopping list when adding missing items to it": "Ne pas comparer avec la liste de courses lors de l'ajout d'un produit manquant à celle-ci",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Par défaut, la quantité ajoutée à la liste d'achats est \"qté nécessaire - qté en stock - qté sur la liste de courses\", lorsque cette fonction est activée, la comparaison s'effectuera par rapport au stock et non à la quantité déjà présente sur la liste de course.",
+ "Picture": "Photo",
+ "Uncheck ingredients to not put them on the shopping list": "Décocher des ingrédients pour ne pas les ajouter à la liste de courses",
+ "This is for statistical purposes only": "À des fins statistiques uniquement",
+ "You have to select a recipe": "Vous devez sélectionner une recette",
+ "Key type": "Type d'attribut",
+ "Share/Integrate calendar (iCal)": "Partage du calendrier (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Utilisez cette URL (publique) pour partager ou intégrer le calendrier au format iCal.",
+ "Allow partial units in stock": "Unités avec décimale",
+ "Enable tare weight handling": "Activer la pesée",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Lors de l'utilisation d'un récipient hermétique, vous pouvez définir ici la \"tare\" ou \"poids à vide\". Le calcul du \"poids net\" s'effectuera automatiquement à partir du \"poids brut\" que vous aurez constaté.",
+ "Tare weight": "Tare",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Mode pesée activé, veuillez saisir le poids total sans tenir compte du récipient, appelé aussi \"poids brut\".",
+ "You have to select a location": "Vous devez sélectionner un endroit",
+ "You have to select a store": "Vous devez sélectionner un magasin",
+ "List": "Liste",
+ "Gallery": "Gallerie",
+ "The current picture will be deleted on save": "L'image courante sera supprimée lors de la sauvegarde",
+ "Journal for this battery": "Journal de cette pile",
+ "System info": "Informations système",
+ "Changelog": "Journalisation",
+ "will be multiplied by a factor of {string1} to get {string2}": "sera multiplié par un facteur {string1} pour obtenir {string2}",
+ "The given date is earlier than today, are you sure?": "La date saisie est antérieure à aujourd'hui, êtes-vous sûr?",
+ "Product count": "Nombre de produits",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "Tapez un nouveau nom de produit ou un nouveau code-barres et appuyez sur la touche de tabulation pour lancer un flux de travail.",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Ce paramétrage sera utilisé par défaut quand ce produit sera ajouté en tant qu'ingrédient dans une recette",
+ "Add item": "Ajouter un produit",
+ "Selected shopping list": "Liste de courses sélectionnée",
+ "New shopping list": "Nouvelle liste de courses",
+ "Delete shopping list": "Supprimer liste de courses",
+ "Chores settings": "Paramètres des corvées",
+ "Batteries settings": "Paramètres des batteries",
+ "Tasks settings": "Paramètres des tâches",
+ "Create shopping list": "Créer liste de courses",
+ "Are you sure to delete shopping list \"{string0}\"?": "Voulez-vous vraiment vider la liste de courses \"{string0}\" ?",
+ "Average shelf life": "Durée moyenne de conservation ",
+ "Spoil rate": "Taux de péremption",
+ "Show more": "Afficher plus",
+ "Show less": "Afficher moins",
+ "The amount must be between {string1} and {string2}": "La quantité doit se situer entre {string1} et {string2}",
+ "Day of month": "Jour du mois",
+ "Monday": "Lundi",
+ "Tuesday": "Mardi",
+ "Wednesday": "Mercredi",
+ "Thursday": "Jeudi",
+ "Friday": "Vendredi",
+ "Saturday": "Samedi",
+ "Sunday": "Dimanche",
+ "Configure userfields": "Configurer les attributs personnalisés",
+ "Userfields": "Attributs personalisés",
+ "Entity": "Élément",
+ "Caption": "Titre",
+ "Type": "Type",
+ "Create userfield": "Ajouter un attribut personalisé",
+ "A entity is required": "Vous n'avez pas défini d'élément",
+ "A caption is required": "Vous n'avez pas défini de titre",
+ "A type is required": "Vous n'avez pas défini de type",
+ "Show as column in tables": "Affichage des valeurs dans une colonne",
+ "This is required and can only contain letters and numbers": "Obligatoire, ne peut contenir que des lettres et des chiffres",
+ "Edit userfield": "Configurer l'attribut personalisé",
+ "Plural forms": "Forme plurielle",
+ "One plural form per line, the current language requires": "Une forme plurielle par ligne, la langue actuelle nécessite",
+ "Plural count": "Nombre de pluriel",
+ "Plural rule": "Règle pour la forme plurielle",
+ "in plural form": "Au pluriel",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Pas assez en stock, il vous manque {count} ingrédient | Pas assez en stock, il vous manque {count} ingrédients",
+ "Not enough in stock, but already on the shopping list": "Pas assez en stock, mais déjà sur la liste de courses.",
+ "Not enough in stock": "Pas assez en stock",
+ "Expiring soon days": "Jours avant péremption",
+ "Default location": "Emplacement par défaut",
+ "Default amount for purchase": "Quantité ajoutée par défaut lors d'un achat",
+ "Default amount for consume": "Quantité retirée par défaut lors de la consommation",
+ "Variable amount": "Quantité variable",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Lorsque ce champs n'est pas vide, la valeur sera affichée à la place de celle saisie ci-dessus mais la valeur initiale restera utilsée pour la vérification des quantité minimales du stock.",
+ "Track date only": "Suivre uniquement les dates",
+ "When enabled only the day of an execution is tracked, not the time": "Lorsque activé, seul le jour d'une exécution est suivi, pas l'heure",
+ "Consume {string1} of {string2}": "Consommer {string1} de {string2}",
+ "Meal plan": "Prévisions des menus",
+ "Add recipe on {string0}": "Ajouter une recette dans {string0}",
+ "{count} serving | {count} servings": "{count} part / portion | {count} parts / portions",
+ "Week costs": "Budget hebdo",
+ "Configuration": "Configuration",
+ "A predefined list of values, one per line": "Liste prédéfinie, une valeur par ligne",
+ "Products": "Produits",
+ "Marked task {string0} as completed on {string0}": "{string0} tâche marquée complétée sur {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "La réservation a des dépendances, impossible de revenir en arrière",
+ "per serving": "par portion",
+ "Never": "Jamais",
+ "Today": "Aujourd'hui",
+ "Consume {string1} of {string2} as spoiled": "Consommer {string1} de {string2} comme périmée",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Des ingrédients de la recette \"{string0}\" sont manquants,rien n'est retiré",
+ "Undo task": "Annuler",
+ "Due date rollover": "Report de la date d'échéance",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Si activé la corvée ne sera jamais due, la date d'échéance sera avancée quand atteinte.",
+ "Location Content Sheet": "Emplacement du stock",
+ "Print": "Imprimer",
+ "all locations": "Tous les emplacements",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "Vous pouvez ici imprimer une page par emplacement du stock actuel, vous pourrez comme ça l'accrocher et noter les consommations",
+ "this location": "Cet emplacement",
+ "Consumed amount": "Quantité consommée",
+ "Time of printing": "Temps d'impression",
+ "Are you sure to delete equipment \"{string0}\"?": "Êtes-vous certain de vouloir effacer l'équipement \"{string0}\"?",
+ "Parent product": "Produit parent",
+ "Not possible because this product is already used as a parent product in another product": "Impossible, ce produit est déjà assigné comme parent sur un autre produit",
+ "Default conversions": "Conversions par défaut",
+ "Factor": "Facteur",
+ "1 {string0} is the same as...": "1 {string0} corresponds aussi à...",
+ "Create QU conversion": "Créer une conversion d'UQ",
+ "Default for QU": "Défaut pour l'unité de quantité",
+ "Quantity unit from": "De l'unité de quantité",
+ "Quantity unit to": "À l'unité de quantité",
+ "This cannot be equal to {string0}": "Ne peut être égale à {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Signifie que 1 {string1} corresponds aussi à {string2} {string3}",
+ "QU conversions": "Conversions d'UQ",
+ "Product overrides": "Règles du produit",
+ "Override for product": "Règle pour le produit",
+ "This equals {string1} {string2}": "Ceci est égal à {string1}{string2}",
+ "Edit QU conversion": "Éditer la conversion d'UQ",
+ "An assignment type is required": "Un type de tâche est requis",
+ "Assignment type": "Type de tâche",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "La prochaine exécution de cette corvée sera programmé 1 jour après la dernière exécution",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Signifie que la prochaine exécution de cette corvée est programmé 1 jour après la dernière exécution, mais uniquement pour les jours sélectionnés ci-dessous",
+ "This means the next execution of this chore is not scheduled": "Cette corvée n'a pas d'exécution de programmée. ",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Signifie que la prochaine exécution de cette corvée sera programmé à la date sélectionnée ci-dessous chaque mois",
+ "This means the next execution of this chore will not be assigned to anyone": "Signifie que la prochaine exécution de cette corvée ne sera assigné à personne",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Signifie que la prochaine exécution de cette corvée sera assignée à celui qui l'a effectué en dernier",
+ "This means the next execution of this chore will be assigned randomly": "Signifie que la prochaine exécution de cette corvée sera assignée aléatoirement",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Signifie que la prochaine exécution de cette corvée sera assigné au prochain par ordre alphabétique",
+ "Assign to": "Assigné à",
+ "This assignment type requires that at least one is assigned": "Ce type de tâche nécessite au moins une personne assignée",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} corvée m'est assignée | {count} corvées me sont assignées",
+ "Assigned to me": "Assigné à moi",
+ "assigned to {string0}": "assigné à {string0}",
+ "Assignment": "Tâche",
+ "Consume product on chore execution": "Consommer un produit lors de l'exécution de la corvée",
+ "Are you sure to delete user field \"{string0}\"?": "Êtes-vous sûr de vouloir supprimer le champ utilisateur \"{string0}\" ?",
+ "Userentities": "Entités utilisateur",
+ "Create userentity": "Créer une entité utilisateur",
+ "Show in sidebar menu": "Afficher dans le menu latérale",
+ "Edit userentity": "Éditer l'entité utilisateur",
+ "Edit {string0}": "Éditer {string0}",
+ "Create {string0}": "Créer {string0}",
+ "Are you sure to delete this userobject?": "Êtes-vous sûr de vouloir supprimer cet objet utilisateur ?",
+ "Icon CSS class": "Classe CSS de l'icône",
+ "For example": "Par exemple",
+ "Configure fields": "Configurer les champs",
+ "Quantity unit plural form testing": "Test de la forme pluriel de l'unité de quantité",
+ "Result": "Résultat",
+ "Test plural forms": "Tester les formes pluriel",
+ "Scan a barcode": "Scanner un code barre",
+ "Error while initializing the barcode scanning library": "Erreur lors de l'initialisation de la librairie de scan de code barre",
+ "The resulting price of this ingredient will be multiplied by this factor": "Le prix final de cet ingrédient sera multiplié par ce facteur",
+ "Price factor": "Facteur de prix",
+ "Do you find grocy useful?": "Vous trouvez grocy utile ?",
+ "Say thanks": "Remercier",
+ "Search for recipes containing this product": "Chercher des recettes contenant ce produit",
+ "Add to shopping list": "Ajouter à la liste de courses",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "{string1} de {string2} ajouté à la liste de course \"{string3}\"",
+ "Output": "Sortie",
+ "Energy (kcal)": "Énergie (kcal)",
+ "Per stock quantity unit": "Unité de quantité par stock",
+ "Barcode scanner testing": "Test du scanner de code barre",
+ "Expected barcode": "Code barre attendu",
+ "Scan field": "Champ du scan",
+ "Scanned barcodes": "Codes barre scanné",
+ "Hit": "Touché",
+ "Miss": "Raté",
+ "Display recipe": "Afficher la recette",
+ "Accumulate sub products min. stock amount": "Accumuler le stock minimal des sous produits",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Si activé, la somme du stock minimal des sous produits sera accumulé sur ce produit, signifiant que le sous produit ne sera jamais \"en manque\", seulement ce produit",
+ "Are you sure to remove this conversion?": "Êtes-vous sûr de vouloir supprimer cette conversion ?",
+ "Unit price": "Prix unitaire",
+ "Total price": "Prix total",
+ "in {string0} and based on the purchase quantity unit": "dans {string0} et basé sur la quantité unitaire d'achat",
+ "Unlimited": "Illimité",
+ "Clear": "Vider",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Êtes-vous sûr de vouloir supprimer la recette incluse \"{string0}\"?",
+ "Period interval": "Intervalle de temps",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "La prochaine exécution de cette corvée ne doit être uniquement programmée que tous les {string0} jours",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "La prochaine exécution de cette corvée ne doit être uniquement programmée que toutes les {string0} semaines",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "La prochaine exécution de cette corvée ne doit être uniquement programmée que tous les {string0} mois",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "La prochaine exécution de cette corvée sera programmé 1 an après la dernière exécution",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Signifie que la prochaine exécution de cette corvée ne doit uniquement être programmé que tous les {string0} ans",
+ "Transfer": "Transfert",
+ "From location": "De",
+ "To location": "A",
+ "There are no units available at this location": "Il n'y a pas d'unité disponible à cet endroit.",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "Quantité : {string1}; Expire le {string2} ; Acheté le {string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "A transferé{string1}de {string2}venant de {string3} à {string4}",
+ "Stock entries": "Entrées du stock",
+ "Best before date": "A consommer de préférence avant le",
+ "Purchased date": "Date d'achat",
+ "Consume all {string0} for this stock entry": "Consommer tous les {string0} pour cette entrée du stock",
+ "The amount cannot be lower than {string1}": "La quantité ne peut être inférieure à {string0}",
+ "Stock entry successfully updated": "Entrée du stock mise à jour avec succès",
+ "Edit stock entry": "Modifier l'entrée du stock",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "L'accès à la caméra n'est possible que s'il est pris en charge et autorisé par votre navigateur et lorsque grocy utilise une connexion sécurisée (HTTPS)",
+ "Keep screen on": "Garder l'écran allumé",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Garder l'écran allumé lorsqu'une fiche est affichée en plein écran",
+ "A purchased date is required": "Date d'achat obligatoire",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "Lorsqu'un produit est sélectionné, une unité (par portion dans l'unité de stock) sera ajoutée au stock lors de la consommation de cette recette",
+ "Produces product": "Génère un produit",
+ "This booking cannot be undone": "Cette réservation ne peut pas être annulée",
+ "Booking does not exist or was already undone": "La réservation n'existe pas ou a déjà été annulée",
+ "Are you sure to delete API key \"{string0}\"?": "Voulez-vous vraiment supprimer la clé API \"{string0}\" ?",
+ "Add note": "Ajouter une remarque",
+ "Add note on {string0}": "Ajouter une remarque dans {string0}",
+ "per day": "par jour",
+ "Only undone items": "Uniquement les éléments annulés",
+ "Add product": "Ajouter un produit",
+ "Add product on {string0}": "Ajouter le produit à {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Consommer tous les ingrédients requis pour les recettes ou produits de cette semaine",
+ "Meal plan recipe": "Recette du menu",
+ "Meal plan note": "Remarque du menu",
+ "Meal plan product": "Produit du menu",
+ "Scan mode": "Mode scanner",
+ "on": "Allumé",
+ "off": "Éteint",
+ "Scan mode is on but not all required fields could be populated automatically": "Le mode \"scan\" est activé mais tous les champs obligatoires n'ont pas pu être automatiquement remplis",
+ "Is freezer": "Est un congélateur",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Lorsque les produits entrent/sortent du congélateur, la date de durabilité minimale est mise à jour automatiquement en fonction des paramètres des produits",
+ "This cannot be the same as the \"From\" location": "Ce ne peut pas être le même endroit d'origine",
+ "Thawed": "Décongelé",
+ "Frozen": "Congelé",
+ "Are you sure to delete userentity \"{string0}\"?": "Voulez-vous vraiment supprimer l'entité utilisateur \"{string0}\" ?",
+ "Shopping list settings": "Paramètres de la liste de courses",
+ "Show a month-view calendar": "Afficher le calendrier en vue mensuelle",
+ "Edit note on {string0}": "Modifier la remarque dans {string0}",
+ "Edit product on {string0}": "Modifier le produit dans {string0}",
+ "Edit recipe on {string0}": "Modifier la recette dans {string0}",
+ "Desired servings": "portions souhaitées",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "Paramètres des recettes",
+ "Recipe card": "Fiche de recette",
+ "Group ingredients by their product group": "Regrouper les ingrédients par groupe de produits",
+ "Unknown store": "Magasin inconnu",
+ "Store": "Magasin",
+ "Transaction successfully undone": "Transaction annulée avec succès",
+ "Default store": "Magasin par défaut",
+ "Consume this stock entry": "Consommer cette entrée du stock",
+ "Mark this stock entry as open": "Indiquer cette entrée du stock comme ouverte",
+ "Mark this item as done": "Indiqué cet élément comme fait",
+ "Edit this item": "Éditer cet élément",
+ "Delete this item": "Supprimer cet élément",
+ "Show an icon if the product is already on the shopping list": "Afficher une icône si le produit est déjà dans la liste de courses",
+ "Calories": "Calories",
+ "means {string1} per {string2}": "signifie {string1} par {string2}",
+ "Create inverse QU conversion": "Créer un ratio de conversion d'UQ inverse",
+ "Create recipe": "Créer une recette",
+ "Save & continue to add ingredients and included recipes": "Sauvegarder et continuer d'ajouter des ingrédients et recettes",
+ "Save & continue": "Sauvegarder et continuer",
+ "Save & return to recipes": "Sauvegarder et retourner aux recettes",
+ "Stock value": "Valeur du stock",
+ "Average price": "stock moyen",
+ "Active": "actif",
+ "Barcodes": "Code-barres",
+ "Barcode": "Code-barre",
+ "Create Barcode": "Créer un code-barre",
+ "Barcode for product": "Code-Barre du Produit",
+ "Edit Barcode": "Modifier le Code-barre",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Pas assez en stock, il manque {string0} ingrédients.",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "Basé sur le prix correspondant à la règle de consommation par défaut : \"Ouvert en premier, puis périme en premier, puis plus ancien ajouté\"",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Pas assez en stock (non inclus dans les coûts), manque {string1}, {string2} déjà dans la liste de courses",
+ "Quantity unit stock cannot be changed after first purchase": "Le stock d'unités de quantité ne peut être modifié après le premier achat",
+ "Clear filter": "Enlever le filtre",
+ "Permissions for user {string0}": "Permissions de l'utilisateur {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "Êtes-vous sûr de vouloir retirer toutes les permissions vous appartenant ?",
+ "Permissions saved": "Permissions sauvegardées",
+ "You are not allowed to view this page": "Vous n'êtes pas autorisés à visiter cette page",
+ "Page not found": "Page introuvable",
+ "Unauthorized": "Non authorisé",
+ "Error source": "Source d'erreur",
+ "Error message": "Message d'erreur",
+ "Stack trace": "Pile d'appel",
+ "Easy error info copy & paste (for reporting)": "Faciliter le copier/coller des messages d'erreur et d'information",
+ "This page does not exist": "Cette page n'existe pas",
+ "You will be redirected to the default page in {string0} seconds": "Vous allez être redirigé vers la page par défaut dans {string0} secondes",
+ "Server error": "Erreur interne",
+ "A server error occured while processing your request": "Une erreur interne s'est produite pendant le traitement de votre requête",
+ "If you think this is a bug, please report it": "Si vous pensez que ceci est un bug, merci de le signaler",
+ "Language": "Langue",
+ "User settings": "Paramètres utilisateur",
+ "Default": "Défaut",
+ "Stock journal summary": "Synthèse du stock",
+ "Journal summary": "Synthèse",
+ "Journal summary for this product": "Synthèse pour ce produit",
+ "Consume exact amount": "Consommez la quantité exacte",
+ "Value": "Valeur",
+ "{string0} total value": "{string0}valeur totale",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "Indiquer la date d'achat sur le formulaire d'achat (sinon, la date d'achat est fixée par défaut à aujourd'hui) ",
+ "Common": "Commun",
+ "Decimal places allowed for amounts": "Nombre de décimales pour les quantitées",
+ "Decimal places allowed for prices": "Nombre de décimales pour les prix",
+ "Stock entries for this product": "Entrées de stock pour ce produit",
+ "Edit shopping list": "Modifier liste de courses",
+ "Save & continue to add quantity unit conversions & barcodes": "Sauvegarder et continué à ajouter des conversions et des codes barres",
+ "Save & return to products": "Sauvegarder et retourner aux produits",
+ "Save & continue to add conversions": "Sauvegarder et continuer à ajouter des conversions",
+ "Save & return to quantity units": "Sauvegarder et retourner aux quantités",
+ "price": "prix",
+ "New stock amount": "Nouveau niveau de stock",
+ "Price per stock unit": "Prix par unité de stock",
+ "Table options": "Tableeau d'options",
+ "This product is currently on a shopping list": "Ce produit est actuellement sur une liste de courses",
+ "Undo transaction": "Annuler la transaction",
+ "Transaction type": "Type de transaction",
+ "Transaction time": "Heure de la transaction",
+ "Chore journal": "Journal des corvées",
+ "Track chore execution": "File d'exécution des corvées",
+ "Mark task as completed": "Marquer la tâche comme terminée",
+ "Track charge cycle": "Indiquer les cycles de charge",
+ "Battery journal": "Journal des batteries",
+ "This product has a picture": "Ce produit à une photo",
+ "Consume this stock entry as spoiled": "Consommer cette entrée de stock comme périmée",
+ "Configure user permissions": "Gérer les permissions des utilisateurs",
+ "Show a QR-Code for this API key": "Afficher un QR Code pour cette clé d'API",
+ "This is the default quantity unit used when adding this product to the shopping list": "C'est la quantité par défaut lors de l'ajout de ce produit à la liste d'achats",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "Afficher un avertissement lorsque la date de péremption du produit acheté est avant la date de péremption du produit dans le stock",
+ "This is due earlier than already in-stock items": "La date de péremption est plus courte que pour les éléments déjà en stock",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "Quantité consommée par défaut",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "Cette quantité est utilisée pour la \"consommation rapide\" et le \"marquer comme ouvert\"sur la vue d'ensemble du stock",
+ "Copy": "Copier",
+ "Are you sure to remove this barcode?": "Êtes-vous sûr de vouloir supprimer ce code barre ?",
+ "Due date type": "Type d'échéance",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "Basé sur le type sélectionné, le surlignement dans la page de vue d'ensemble du stock va être différente",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "Signifie que ce produit peut encore être consommé après la date de péremption",
+ "Expiration date": "Date de péremption",
+ "Means that the product is not safe to be consumed after its due date is reached": "Signifie que ce produit ne peut être consommé après la date de péremption",
+ "For purchases this amount of days will be added to today for the due date suggestion": "A l'achat, ce nombre de jours sera ajouté à la date de péremption suggérée",
+ "-1 means that this product will be never overdue": "-1 signifie que le produit ne sera jamais périmé",
+ "Default due days": "Date de péremption par défaut",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "Lorsque ce produit est marqué comme ouvert, la date \"À consommer de préférence avant\" sera remplacée par aujourd'hui + le nombre de jours (une valeur de 0 désactive ceci)",
+ "Default due days after opened": "Date de péremption après ouverture par défaut",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "Lorsque ce produit est placé dans le congélateur (congélation), la date de durabilité minimale sera remplacée par la date du jour + ce nombre de jours",
+ "Default due days after freezing": "Date de péremption par défaut après congélation",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "Lorsque ce produit est sorti du congélateur (décongélation), la date de durabilité minimale sera remplacée par la date du jour + ce nombre de jours",
+ "Default due days after thawing": "Date de péremption par défaut après décongélation en jours",
+ "Next due date": "Prochaine date de péremption",
+ "{count} product is due | {count} products are due": "{count}produit est périmé | {count}des produits sont exprimés",
+ "Due date": "Date de péremption",
+ "Never overdue": "Pas de date de péremption",
+ "{count} product is expired | {count} products are expired": "{count} produit est périmé | {count} produits sont périmés",
+ "Expired": "Périmé",
+ "Due soon days": "Date de péremption proche",
+ "Add overdue/expired products": "Ajouter les produits dépassés/périmés",
+ "Products with tare weight enabled are currently not supported for transfer": "Les produits avec un poids taré ne peuvent, pour l'instant, pas être transférés",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "Ce nombre ne peut être plus petit que {string1} ni égal à {string2} et peut contenir au maximum {string3} décimaux",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "Ce nombre doit être entre {string1} et {string2}, ne peut être égal à {string3} et peut contenir au maximum {string4} décimaux",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "Ce nombre ne peut être plus petit que {string1} et peut contenir au maximum {string2} décimaux",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "Ce nombre doit être entre {string1} et {string2} et peut contenir au maximum {string3} décimaux",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "Réaliser automatiquement les achats en utilisant le dernier prix connu et la quantité indiquée dans la liste, si le premier a une date de péremption par défaut renseignée",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "Lorsque les produits entrent/sortent du congélateur, la date de péremption est mise à jour automatiquement en fonction des paramètres des produits",
+ "This is the internal field name, e. g. for the API": "Ceci est le nom du champ interne (pour l'API, notamment)",
+ "This is used to display the field on the frontend": "Ceci est utilisé pour afficher les champs",
+ "Multiple Userfields will be ordered by that number on the input form": "Les champs utilisateurs multiples peuvent êtres triés par ce nombre sur le formulaire affiché",
+ "Sort number": "Nombre de tris",
+ "Download file": "Télécharger le fichier",
+ "Use the products \"Quick consume amount\"": "Utiliser les produits \"Quantité de consommation rapide\"",
+ "Disabled": "Désactivé ",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "Ceci supprime toutes les quantités de stock, le journal et toutes les préférences de ce produit - Vous pouvez le désactivez si vous voulez juste cacher le produit",
+ "Show disabled": "Montrer désactivés",
+ "Never show on stock overview": "Ne jamais afficher dans l'aperçu du stock",
+ "None": "Aucun",
+ "Group by": "Grouper par",
+ "Ingredient group": "Groupe d'ingrédients",
+ "Reset": "Réinitialiser",
+ "Are you sure to reset the table options?": "Êtes vous sûr de vouloir réinitialiser le tableau d'options ?",
+ "Hide/view columns": "Afficher/cacher les colonnes",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "Une quantité/unité différente peuvent être utilisées ci-dessous, mais pour la vérification du stock seule une quantité non-nulle en stock est requise",
+ "Last price (Unit)": "Dernier prix (Unité)",
+ "Last price (Total)": "Dernier prix (Total)",
+ "Show header": "Montrer l'en-tête",
+ "Group by product group": "Grouper par groupe de produit",
+ "Table": "Table",
+ "Layout type": "Type d'affichage",
+ "Merge this product with another one": "Fusionner ce produit avec un autre",
+ "Merge products": "Fusionner les produits",
+ "Product to keep": "Garder ce produit",
+ "Product to remove": "Retirer ce produit",
+ "Error while merging products": "Erreur lors de la fusion des produits",
+ "After merging, this product will be kept": "Après fusion, ce produit sera conservé",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "Après fusion, toutes les instances de ce produit seront remplacées par le \"Produit à conserver\" (ce produit aura disparu)",
+ "Merge": "Fusionner",
+ "Title": "Titre",
+ "Link": "Lien",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "L'aperçu du stock liste tous les produits actuellement en stock ou en-deça de leur stock mini - cette option désactive l'affichage de ce produit dans tous les cas",
+ "Print options": "Options d'impression",
+ "A product or a note is required": "",
+ "no-assignment": "pas-assigné",
+ "who-least-did-first": "celui-qui-a-fait-le-moins-d'abord",
+ "random": "aléatoire",
+ "in-alphabetical-order": "ordre-alphabétique",
+ "timeago_locale": "fr",
+ "timeago_nan": "Il y a NaN années",
+ "moment_locale": "fr",
+ "datatables_localization": "{\"sProcessing\":\"Traitement en cours...\",\"sSearch\":\"Rechercher :\",\"sLengthMenu\":\"Afficher _MENU_ éléments\",\"sInfo\":\"Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments\",\"sInfoEmpty\":\"Affichage de l'élément 0 à 0 sur 0 élément\",\"sInfoFiltered\":\"(filtré de _MAX_ éléments au total)\",\"sInfoPostFix\":\"\",\"sLoadingRecords\":\"Chargement en cours...\",\"sZeroRecords\":\"Aucun élément à afficher\",\"sEmptyTable\":\"Aucune donnée disponible dans le tableau\",\"oPaginate\":{\"sFirst\":\"Premier\",\"sPrevious\":\"Précédent\",\"sNext\":\"Suivant\",\"sLast\":\"Dernier\"},\"oAria\":{\"sSortAscending\":\": activer pour trier la colonne par ordre croissant\",\"sSortDescending\":\": activer pour trier la colonne par ordre décroissant\"}}",
+ "summernote_locale": "fr-FR",
+ "fullcalendar_locale": "fr",
+ "bootstrap-select_locale": "fr_FR",
+ "purchase": "Achat",
+ "transfer_from": "transféré depuis",
+ "transfer_to": "transféré à",
+ "consume": "Consommation",
+ "inventory-correction": "Correction d'inventaire",
+ "product-opened": "Produit ouvert",
+ "stock-edit-old": "Éditer l'ancien stock",
+ "stock-edit-new": "Éditer le nouveau stock",
+ "self-production": "Autoproduction",
+ "manually": "Manuelle",
+ "dynamic-regular": "Régulière-dynamique",
+ "daily": "Journalière",
+ "weekly": "Hebdomadaire",
+ "monthly": "Mensuelle",
+ "yearly": "Annuelle",
+ "text-single-line": "texte simple",
+ "text-multi-line": "texte multi-lignes",
+ "number-integral": "nombre entier",
+ "number-decimal": "nombre décimal",
+ "date": "date",
+ "datetime": "date et heure",
+ "checkbox": "case à cocher",
+ "preset-list": "liste prédéfinie",
+ "preset-checklist": "liste multiple prédéfinie",
+ "link": "lien",
+ "link-with-title": "lien-avec-titre",
+ "file": "Fichier",
+ "image": "image",
+ "ADMIN": "Administrateur",
+ "USERS_CREATE": "Création d'utilisateurs",
+ "USERS_EDIT": "Edition d'utilisateurs",
+ "USERS_READ": "Lecture utilisateurs",
+ "USERS_EDIT_SELF": "Auto-édition de l'utilisateur",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "Annuler le cycle de charge de la batterie",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "Suivre la charge de batterie",
+ "CHORE_TRACK_EXECUTION": "Exécuter le suivi de la corvée",
+ "CHORE_UNDO_EXECUTION": "Annuler l'exécution de la corvée",
+ "MASTER_DATA_EDIT": "Editer les données maîtres",
+ "TASKS_UNDO_EXECUTION": "Annuler l'exécution de la tâche",
+ "TASKS_MARK_COMPLETED": "Marquer la tâche comme terminée",
+ "STOCK_EDIT": "Edition de stock",
+ "STOCK_TRANSFER": "Transfert de stock",
+ "STOCK_INVENTORY": "Inventaire du stock",
+ "STOCK_CONSUME": "Consumer le stock",
+ "STOCK_OPEN": "Ouvrir le stock",
+ "STOCK_PURCHASE": "Acheter le stock",
+ "SHOPPINGLIST_ITEMS_ADD": "Ajouter un article à la liste de course",
+ "SHOPPINGLIST_ITEMS_DELETE": "Supprimer un article à la liste de course",
+ "USERS": "Utilisateurs",
+ "STOCK": "Stock",
+ "SHOPPINGLIST": "Liste de course",
+ "CHORES": "Corvées",
+ "BATTERIES": "Batteries",
+ "TASKS": "Tâches",
+ "RECIPES": "Recettes",
+ "EQUIPMENT": "Equipement",
+ "CALENDAR": "Calendrier",
+ "RECIPES_MEALPLAN": " Programme Alimentaire",
+ "cs": "tch",
+ "da": "dan",
+ "de": "all",
+ "el_GR": "gre",
+ "en": "ang",
+ "en_GB": "uk",
+ "es": "esp",
+ "fr": "fra",
+ "hu": "hon",
+ "it": "ita",
+ "ja": "jap",
+ "ko_KR": "cor",
+ "nl": "hol",
+ "no": "nor",
+ "pl": "pol",
+ "pt_BR": "bre",
+ "pt_PT": "por",
+ "ru": "rus",
+ "sk_SK": "slo",
+ "sv_SE": "sue",
+ "tr": "tur",
+ "zh_TW": "chi",
+ "zh_CN": "zh_CN",
+ "he_IL": "he_IL",
+ "ta": "ta",
+ "fi": "fi",
+ "Cookies": "Cookies",
+ "Chocolate": "Chocolat",
+ "Pantry": "Garde-manger",
+ "Candy cupboard": "Placard à bonbons",
+ "Tinned food cupboard": "Placard à conserves",
+ "Fridge": "Réfrigérateur",
+ "Piece | Pieces": "Piece | Unités",
+ "Pack | Packs": "Pack | Packs",
+ "Glass | Glasses": "Glass | Bocaux",
+ "Tin | Tins": "Tin | Conserve",
+ "Can | Cans": "Can | Canettes",
+ "Bunch | Bunches": "Bunch | Bottes",
+ "Gummy bears": "Oursons",
+ "Crisps": "Chips",
+ "Eggs": "Oeufs",
+ "Noodles": "Nouilles",
+ "Pickles": "Cornichons",
+ "Gulash soup": "Soupe de goulache",
+ "Yogurt": "Yaourt",
+ "Cheese": "Fromage",
+ "Cold cuts": "Charcuterie",
+ "Paprika": "Paprika",
+ "Cucumber": "Concombre",
+ "Radish": "Radis",
+ "Tomato": "Tomate",
+ "Changed towels in the bathroom": "Serviettes propres dans la salle de bain",
+ "Cleaned the kitchen floor": "Nettoyage du sol de la cuisine",
+ "Warranty ends": "Fin de garantie",
+ "TV remote control": "Télécommande de télévision",
+ "Alarm clock": "Réveil",
+ "Heat remote control": "Télécommande du chauffage",
+ "Lawn mowed in the garden": "Jardin tondu",
+ "Some good snacks": "Quelques bons gâteaux",
+ "Pizza dough": "Pâte à pizza",
+ "Sieved tomatoes": "Sauce tomate",
+ "Salami": "Salami",
+ "Toast": "Toast",
+ "Minced meat": "Viande hachée",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti bolognaise",
+ "Sandwiches": "Sandwiches",
+ "English": "Anglais",
+ "German": "Allemand",
+ "Italian": "Italien",
+ "This is the note content of the recipe ingredient": "Ceci est le contenu de la note concernant l'ingrédient de la recette",
+ "Demo User": "Utilisateur de démo",
+ "Gram | Grams": "Gram | Grammes",
+ "Flour": "Farine",
+ "Pancakes": "Crêpes",
+ "Sugar": "Sucre",
+ "Home": "Domicile",
+ "Life": "Vie",
+ "Projects": "Projets",
+ "Repair the garage door": "Réparer la porte du garage",
+ "Fork and improve grocy": "Forker et améliorer grocy",
+ "Find a solution for what to do when I forget the door keys": "Trouver une solution pour savoir quoi faire quand j'oublie les clefs de la porte",
+ "Sweets": "Bonbons",
+ "Bakery products": "Viennoiseries",
+ "Tinned food": "Conserves",
+ "Butchery products": "Viande",
+ "Vegetables/Fruits": "Fruits et légumes",
+ "Refrigerated products": "Produits réfrigérés ",
+ "Coffee machine": "Machine à café",
+ "Dishwasher": "Lave-vaisselle",
+ "Liter": "Litre",
+ "Liters": "Litres",
+ "Bottle": "Bouteille",
+ "Bottles": "Bouteilles",
+ "Milk": "Lait",
+ "Chocolate sauce": "Coulis de chocolat",
+ "Milliliters": "Millilitres",
+ "Milliliter": "Millilitre",
+ "Bottom": "Dessous",
+ "Topping": "Garniture",
+ "French": "Français",
+ "Turkish": "Turque",
+ "Spanish": "Espagnol",
+ "Russian": "Russe",
+ "The thing which happens on the 5th of every month": "La chose qui se répète le 5 de chaque mois",
+ "The thing which happens daily": "La chose qui se répète chaque jour",
+ "The thing which happens on Mondays and Wednesdays": "La chose qui se répète les lundis et mercredis",
+ "Swedish": "Suédois",
+ "Polish": "Polonais",
+ "Milk Chocolate": "Chocolat au lait",
+ "Dark Chocolate": "Chocolat noir",
+ "Slice | Slices": "Slice | Tranches",
+ "Example userentity": "Exemple d'entité utilisateur",
+ "This is an example user entity...": "Ceci est un exemple d'entité utilisateur",
+ "Custom field": "Champ personnalisé",
+ "Example field value...": "Exemple de valeur de champ...",
+ "Waffle rolls": "Gaufrettes roulées",
+ "Danish": "Danois",
+ "Dutch": "Néerlandais",
+ "Norwegian": "Norvégien",
+ "Demo": "Démo",
+ "Stable version": "Version stable",
+ "Preview version": "Version d'aperçu",
+ "current release": "Version actuelle",
+ "not yet released": "not yet released",
+ "Portuguese (Brazil)": "Portugais (Brésil)",
+ "This is a note": "Ceci est une note",
+ "Freezer": "Congélateur",
+ "Hungarian": "Hongrois",
+ "Slovak": "Slovaque",
+ "Czech": "Tchèque",
+ "Portuguese (Portugal)": "Portugais (Portugal)",
+ "DemoSupermarket1": "DemoSupermarket1",
+ "DemoSupermarket2": "DemoSupermarket2",
+ "Japanese": "Japonais",
+ "Chinese (Taiwan)": "Chinois (Taïwan)",
+ "Greek": "Grec",
+ "Korean": "Coréen",
+ "Chinese (China)": "Chinois (Chine)",
+ "Hebrew (Israel)": "Hébreux (Israël)",
+ "Tamil": "Tamoul",
+ "Finnish": "Finnois",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/he_IL.json b/locale/he_IL.json
new file mode 100644
index 00000000..a025486c
--- /dev/null
+++ b/locale/he_IL.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "סקירת מלאי",
+ "{count} product expires | {count} products expiring": "תוקפו של מוצר יפוג | תוקפם של {count} מוצרים יפוג | תוקפם של {count} מוצרים יפוג | תוקפם של {count} מוצרים יפוג",
+ "within the next day | within the next {count} days": "תוך יום | תוך יומיים | תוך {count} ימים | תוך {count} ימים",
+ "{count} product is already expired | {count} products are already expired": "תוקפו של מוצר אחד כבר פג | תוקפם של {count} מוצרים כבר פג | תוקפם של {count} מוצרים כבר פג | תוקפם של {count} מוצרים כבר פג",
+ "{count} product is overdue | {count} products are overdue": "התוקף של אחד המוצרים פג | התוקף של {count} מוצרים פג | התוקף של {count} מוצרים פג | התוקף של {count} מוצרים פג",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "מוצר אחד אזל מתחת לכמות המלאי המזערית | {count} מוצרים אזלו מעבר לכמות המלאי המזערית | {count} מוצרים אזלו מעבר לכמות המלאי המזערית | {count} מוצרים אזלו מעבר לכמות המלאי המזערית",
+ "Product": "מוצר",
+ "{count} Product | {count} Products": "מוצר אחד | {count} מוצרים | {count} מוצרים | {count} מוצרים",
+ "Amount": "כמות",
+ "Logout": "יציאה",
+ "Chores overview": "סקירת מטלות",
+ "Batteries overview": "סקירת סוללות",
+ "Purchase": "רכישה",
+ "Consume": "צריכה",
+ "Inventory": "מצאי",
+ "Shopping list": "רשימת קניות",
+ "Chore tracking": "מעקב מטלות",
+ "Battery tracking": "מעקב סוללות",
+ "Locations": "מיקומים",
+ "Stores": "חנויות",
+ "Quantity units": "יחידות כמות",
+ "Chores": "מטלות",
+ "Batteries": "סוללות",
+ "Chore": "מטלה",
+ "Next estimated tracking": "המעקב המוערך הבא",
+ "Last tracked": "נעקב לאחרונה",
+ "Battery": "סוללה",
+ "Last charged": "טעינה אחרונה",
+ "Next planned charge cycle": "מחזור הטעינה המתוכנן הבא",
+ "Best before": "בתוקף עד",
+ "OK": "אישור",
+ "Product overview": "סקירת מוצר",
+ "Stock quantity unit": "יחידת כמות במלאי",
+ "Stock amount": "כמות במלאי",
+ "Last purchased": "רכישה אחרונה",
+ "Last used": "שימוש אחרון",
+ "Spoiled": "מקולקל",
+ "Barcode lookup is disabled": "חיפוש ברקודים מושבת",
+ "will be added to the list of barcodes for the selected product on submit": "יתווסף לרשימת הברקודים למוצר הנבחר להגשה",
+ "New amount": "כמות חדשה",
+ "Note": "הערה",
+ "Tracked time": "זמן מעקב",
+ "Chore overview": "סקירת מטלה",
+ "Tracked count": "ספירת מעקב",
+ "Battery overview": "סקירת סוללה",
+ "Charge cycles count": "ספירת מחזורי טעינה",
+ "Create shopping list item": "יצירת פריט ברשימת קניות",
+ "Edit shopping list item": "עריכת פריט ברשימת קניות",
+ "Save": "שמירה",
+ "Add": "הוספה",
+ "Name": "שם",
+ "Location": "מיקום",
+ "Min. stock amount": "כמות מזערית במלאי",
+ "Description": "תיאור",
+ "Create product": "יצירת מוצר",
+ "Barcode(s)": "ברקודים",
+ "Minimum stock amount": "כמות מזערית במלאי",
+ "Default best before days": "ימים בתוקף עד כבררת מחדל",
+ "Default quantity unit purchase": "יחידת כמות בררת מחדל לרכישה",
+ "Quantity unit stock": "יחידת כמות למלאי",
+ "Factor purchase to stock quantity unit": "המרת יחידת הכמות ברכישה לכמות במלאי לפי מקדם",
+ "Create location": "יצירת מיקום",
+ "Create store": "יצירת חנות",
+ "Create quantity unit": "יצירת יחידת כמות",
+ "Period type": "סוג תקופה",
+ "Period days": "ימי תקופה",
+ "Create chore": "יצירת מטלה",
+ "Used in": "בתוך",
+ "Create battery": "יצירת סוללה",
+ "Edit battery": "עריכת סוללה",
+ "Edit chore": "עריכת מטלה",
+ "Edit quantity unit": "עריכת יחידת כמות",
+ "Edit product": "עריכת מוצר",
+ "Edit location": "עריכת מיקום",
+ "Edit store": "עריכת חנות",
+ "Record data": "הקלטת נתונים",
+ "Manage master data": "ניהול נתוני על",
+ "This will apply to added products": "זה יחול על מוצרים שנוספו",
+ "never": "אף פעם לא",
+ "Add products that are below defined min. stock amount": "להוסיף מוצרים שחסרים מתחת לכמות המלאי המזערית",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "משמעות הדבר היא של פריט אחד מסוג {string1} ברכישה יומר לכדי {string2} {string3} במלאי",
+ "Login": "כניסה",
+ "Username": "שם משתמש",
+ "Password": "ססמה",
+ "Invalid credentials, please try again": "פרטי הגישה שגויים, נא לנסות שוב",
+ "Are you sure to delete battery \"{string0}\"?": "למחוק את הסוללה „{string0}”?",
+ "Yes": "כן",
+ "No": "לא",
+ "Are you sure to delete chore \"{string0}\"?": "למחוק את המטלה „{string0}”?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "אין אפשרות לעבד את „{string0}” לכדי מוצר, איך להמשיך?",
+ "Create or assign product": "יצירת או הקצאת מוצר",
+ "Cancel": "ביטול",
+ "Add as new product": "הוספה כמוצר חדש",
+ "Add as barcode to existing product": "הוספה כברקוד למוצר קיים",
+ "Add as new product and prefill barcode": "הוספה כמוצר חדש ולמלא את הברקוד מראש",
+ "Are you sure to delete quantity unit \"{string0}\"?": "למחוק את יחידת הכמות „{string0}”?",
+ "Are you sure to delete product \"{string0}\"?": "למחוק את המוצר „{string0}”?",
+ "Are you sure to delete location \"{string0}\"?": "למחוק את המיקום „{string0}”?",
+ "Are you sure to delete store \"{string0}\"?": "למחוק את החנות „{string0}”?",
+ "Manage API keys": "ניהול מפתחות API",
+ "REST API & data model documentation": "תיעוד דגם נתונים ו־REST API",
+ "API keys": "מפתחות API",
+ "Create new API key": "יצירת מפתח API חדש",
+ "API key": "מפתח API",
+ "Expires": "תפוגה",
+ "Created": "יצירה",
+ "This product is not in stock": "המוצר הזה אינו במלאי",
+ "This means {string0} will be added to stock": "המשמעות היא הוספה של {string0} למלאי",
+ "This means {string0} will be removed from stock": "המשמעות היא הסרה של {string0} מהמלאי",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "משמעות הדבר היא שהוצאת המטלה הזאת לפועל תתוזמן {string0} ימים לאחר ההוצאה הקודמת לפועל",
+ "Removed {string1} of {string2} from stock": "{string1} מתוך {string2} הוסרו מהמלאי",
+ "About grocy": "על אודות grocy",
+ "Close": "סגירה",
+ "Released on": "מועד היציאה לאור",
+ "Added {string1} of {string2} to stock": "{string1} מתוך {string2} נוספו למלאי",
+ "Stock amount of {string1} is now {string2}": "כמות המלאי {string1} היא כעת {string2}",
+ "Tracked execution of chore {string1} on {string2}": "ההוצאה לפועל של מטלה {string1} ב־{string2} נעקבה",
+ "Tracked charge cycle of battery {string1} on {string2}": "מחזור טעינה של הסוללה {string1} ב־{string2} נעקב",
+ "Consume all {string0} which are currently in stock": "לצרוך את מלוא ה־{string0} שכרגע במלאי",
+ "All": "הכול",
+ "Search": "חיפוש",
+ "Not logged in": "לא נכנסת",
+ "You have to select a product": "עליך לבחור במוצר",
+ "You have to select a chore": "עליך לבחור במטלה",
+ "You have to select a battery": "עליך לבחור בסוללה",
+ "A name is required": "צריך למלא שם",
+ "A location is required": "נדרש מיקום",
+ "A quantity unit is required": "נדרשת יחידת כמות",
+ "A period type is required": "נדרש סוג פרק זמן",
+ "A best before date is required": "דרש תאריך תפוגה",
+ "Settings": "הגדרות",
+ "This can only be before now": "זה יכול להיות רק בעבר",
+ "Calendar": "לוח שנה",
+ "Recipes": "מתכונים",
+ "Edit recipe": "עריכת מתכון",
+ "Ingredients list": "רשימת מצרכים",
+ "Add recipe ingredient": "הוספת רכיב למתכון",
+ "Edit recipe ingredient": "עריכת רכיב במתכון",
+ "Are you sure to delete recipe \"{string0}\"?": "למחוק את המתכון „{string0}”?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "למחוק את רכיב המתכון „{string0}”?",
+ "Are you sure to empty shopping list \"{string0}\"?": "לרוקן את רשימת הקניות „{string0}”?",
+ "Clear list": "לרוקן את הרשימה",
+ "Requirements fulfilled": "הדרישות מולאו",
+ "Put missing products on shopping list": "הוספת מוצרים חסרים לרשימת הקניות",
+ "Enough in stock": "מספיק במלאי",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "אין מספיק במלאי, רכיב אחד חסר אבל כבר ברשימת הקניות | אין מספיק במלאי, {count} רכיבים חסרים אבל כבר ברשימת הקניות | אין מספיק במלאי, {count} רכיבים חסרים אבל כבר ברשימת הקניות | אין מספיק במלאי, {count} רכיבים חסרים אבל כבר ברשימת הקניות",
+ "Expand to fullscreen": "הרחבה למסך מלא",
+ "Ingredients": "רכיבים",
+ "Preparation": "הכנה",
+ "Recipe": "מתכון",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "אין מספיק במלאי, {string1} חסרים, {string2} כבר ברשימת הקניות",
+ "Show notes": "הצגת הערות",
+ "Put missing amount on shopping list": "להוסיף את הכמות החסרה לרשימת הקניות",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "להוסיף את כל הרכיבים החסרים למתכון „{string0}” לרשימת הקניות?",
+ "Added for recipe {string0}": "נוסף למתכון {string0}",
+ "Manage users": "ניהול משתמשים",
+ "User": "משתמש",
+ "Users": "משתמשים",
+ "Are you sure to delete user \"{string0}\"?": "למחוק את המשתמש „{string0}”?",
+ "Create user": "יצירת משתמש",
+ "Edit user": "עריכת משתמש",
+ "First name": "שם פרטי",
+ "Last name": "שם משפחה",
+ "A username is required": "נדרש שם משתמש",
+ "Confirm password": "אישור ססמה",
+ "Passwords do not match": "הססמאות אינן תואמות",
+ "Change password": "החלפת ססמה",
+ "Done by": "בוצע על ידי",
+ "Last done by": "בוצע לאחרונה על ידי",
+ "Unknown": "לא ידוע",
+ "Chores journal": "יומן מטלות",
+ "0 means suggestions for the next charge cycle are disabled": "0 אומר שההצעות למחזור הטעינה הבא מושבותת",
+ "Charge cycle interval (days)": "הפרש מחזור טעינה (ימים)",
+ "Last price": "מחיר אחרון",
+ "Price history": "היסטוריית מחירים",
+ "No price history available": "אין היסטוריים מחירים זמינה",
+ "Price": "מחיר",
+ "Unit": "יחידה",
+ "{count} Unit | {count} Units": "יחידה אחת | {count} יחידות | {count} יחידות | {count} יחידות",
+ "{count} chore is due to be done | {count} chores are due to be done": "מטלה אחת אמורה להסתיים | {count} מטלות אמורות להסתיים | {count} מטלות אמורות להסתיים | {count} מטלות אמורות להסתיים",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "מטלה אחת חרגה ממועד הסיום | {count} מטלות חרגו ממועד הסיום | {count} מטלות חרגו ממועד הסיום | {count} מטלות חרגו ממועד הסיום",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "סוללה אחת שיש לטעון בקרוב | {count} סוללות שיש לטעון בקרוב | {count} סוללות שיש לטעון בקרוב | {count} סוללות שיש לטעון בקרוב",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "סוללה אחת כבר אמורה הייתה להיטען | {count} סוללות כבר היו אמורות להיטען | {count} סוללות כבר היו אמורות להיטען | {count} סוללות כבר היו אמורות להיטען",
+ "in singular form": "בצורת יחיד",
+ "Quantity unit": "יחידת כמות",
+ "Only check if any amount is in stock": "לסמן רק אם יש כמות כלשהי במלאי",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "לצרוך את כל הרכיבים שנדרשים למתכון „{string0}” (רכיבים שמסומנים ב„לסמן רק אם קיים במלאי” לא נכללים)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "כל הרכיבים של המתכון „{string0}” הוסרו מהמלאי",
+ "Consume all ingredients needed by this recipe": "לצרוך את כל המצרכים שהמתכון הזה דורש",
+ "Click to show technical details": "לחיצה תציג את המפרט הטכני",
+ "Error while saving, probably this item already exists": "שגיאה בשמירה, כנראה שהפריט הזה כבר קיים",
+ "Error details": "פרטי השגיאה",
+ "Tasks": "משימות",
+ "Show done tasks": "הצגת משימות שבוצעו",
+ "Task": "משימה",
+ "Due": "סיום",
+ "Assigned to": "מוקצית אל",
+ "Mark task \"{string0}\" as completed": "סימון המשימה „{string0}” כהושלמה",
+ "Uncategorized": "ללא קטגוריה",
+ "Task categories": "קטגוריות משימות",
+ "Create task": "יצירת משימה",
+ "A due date is required": "נדרש מועד סיום",
+ "Category": "קטגוריה",
+ "Edit task": "עריכת משימה",
+ "Are you sure to delete task \"{string0}\"?": "למחוק את המשימה „{string0}”?",
+ "{count} task is due to be done | {count} tasks are due to be done": "משימה אחת אמורה להסתיים | {count} משימות אמורות להסתיים | {count} משימות אמורות להסתיים | {count} משימות אמורות להסתיים",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "משימה אחת חרגה ממועד הסיום | {count} משימות חרגו ממועד הסיום | {count} משימות חרגו ממועד הסיום | {count} משימות חרגו ממועד הסיום",
+ "Edit task category": "עריכת קטגוריית משימות",
+ "Create task category": "יצירת קטגוריית משימות",
+ "Product groups": "קבוצות מוצרים",
+ "Ungrouped": "ללא קבוצה",
+ "Create product group": "יצירת קבוצת מוצרים",
+ "Edit product group": "עריכת קבוצת מוצרים",
+ "Product group": "קבוצת מוצרים",
+ "Are you sure to delete product group \"{string0}\"?": "למחוק את קבוצת המוצרים „{string0}”?",
+ "Stay logged in permanently": "להישאר במערכת לצמיתות",
+ "When not set, you will get logged out at latest after 30 days": "כשהערך אינו מוגדר המערכת תוציא אותך לאחר 30 ימים",
+ "Status": "מצב",
+ "Below min. stock amount": "מתחת לכמות המלאי המזערית",
+ "Expiring soon": "תפוגה מתקרבת",
+ "Already expired": "התוקף כבר פג",
+ "Due soon": "מועד הסיום מתקרב",
+ "Overdue": "מועד הסיום חלף",
+ "View settings": "הצגת ההגדרות",
+ "Auto reload on external changes": "לרענן אוטומטית עם שינויים חיצוניים",
+ "Enable night mode": "הפעלת מצב לילה",
+ "Auto enable in time range": "להפעיל אוטומטית בטווח זמן",
+ "From": "התחלה",
+ "in format": "בתצורה",
+ "To": "סיום",
+ "Time range goes over midnight": "טווח הזמן חוצה את חצות",
+ "Product picture": "תמונת המוצר",
+ "No file selected": "לא נבחר קובץ",
+ "Delete": "מחיקה",
+ "Select file": "בחירת קובץ",
+ "Image of product {string0}": "תמונה של המוצר {string0}",
+ "Deletion not possible": "אין אפשרות למחוק",
+ "Equipment": "ציוד",
+ "Instruction manual": "הוראות הפעלה",
+ "The selected equipment has no instruction manual": "לציוד הנבחר אין הוראות הפעלה",
+ "Notes": "הערות",
+ "Edit equipment": "עריכת ציוד",
+ "Create equipment": "יצירת ציוד",
+ "The current file will be deleted on save": "הקובץ הנוכחי יימחק עם השמירה",
+ "No picture available": "אין תמונה זמינה",
+ "Presets for new products": "ערכות מוגדרות למוצרים חדשים",
+ "Included recipes": "מתכונים כלולים",
+ "A recipe is required": "נדרש מתכון",
+ "Add included recipe": "הוספת מתכון כלול",
+ "Edit included recipe": "עריכת מתכון כלול",
+ "Group": "קבוצה",
+ "This will be used as a headline to group ingredients together": "ישמש בתור כותרת לקיבוץ הרכיבים יחד",
+ "Journal": "יומן",
+ "Stock journal": "יומן מלאי",
+ "Undone on": "מועד הביטול",
+ "Batteries journal": "יומן סוללות",
+ "Undo charge cycle": "ביטול מחזור טעינה",
+ "Undo chore execution": "ביטול הוצאת מטלה לפועל",
+ "Chore execution successfully undone": "הוצאת המטלה לפועל בוטלה בהצלחה",
+ "Undo": "ביטול",
+ "Booking successfully undone": "ההזמנה בוטלה בהצלחה",
+ "Charge cycle successfully undone": "מחזור הטעינה בוטל בהצלחה",
+ "Disable stock fulfillment checking for this ingredient": "השבתת בדיקת אספקת מלאי עבור רכיב זה",
+ "Add all list items to stock": "להוסיף את כל פריטי הרשימה למלאי",
+ "Add this item to stock": "להוסיף את הפריט הזה למלאי",
+ "Adding shopping list item {string1} of {string2}": "מתווסף פריט {string1} מתוך {string2} לרשימת הקניות",
+ "Use a specific stock item": "להשתמש בפריט מלאי מסוים",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "הפריט הראשון ברשימה הזאת ייבחר לפי כלל בררת המחדל שהוא „הראשון שנפתח, לאחר מכן הראשון שתוקפו יפוג, לאחר מכן הראשון שנכנס הוא הראשון שיוצא”",
+ "Mark {string1} of {string2} as open": "לסמן {string1} מתוך {string2} כפתוחים",
+ "Marked {string1} of {string2} as opened": "{string1} מתוך {string2} סומנו כפתוחים",
+ "Mark as opened": "סימון כנפתח",
+ "Not opened": "לא נפתח",
+ "Opened": "נפתח",
+ "{string0} opened": "{string0} נפתחו",
+ "Product due": "תפוגת המוצר",
+ "Task due": "מועד סיום המשימה",
+ "Chore due": "מועד סיום המטלה",
+ "Battery charge cycle due": "מועד מחזור טעינת הסוללה",
+ "Show clock in header": "הצגת שעון בכותרת",
+ "Stock settings": "הגדרות מלאי",
+ "Shopping list to stock workflow": "רצף מרשימת קניות למלאי",
+ "Skip": "דילוג",
+ "Servings": "מנות",
+ "Costs": "עלויות",
+ "Based on the prices of the last purchase per product": "בהתבסס על מחירי הרכישה האחרונה לפי מוצר",
+ "The ingredients listed here result in this amount of servings": "הרכיבים שמופיעים כאן מספקים כמות כזאת של מנות",
+ "Do not check against the shopping list when adding missing items to it": "לא לבדוק מול רשימת הקניות בעת הוספת פריטים חסרים אליה",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "כבררת מחדל הכמות שתתווסף לרשימת הקניות היא „הכמות הנדרשת - הכמות במלאי - הכמות ברשימת הקניות” - כשאפשרות זו פעילה, הבדיקה מתבצעת מול הכמות במלאי, לא מול מה שכבר נמצא ברשימת הקניות",
+ "Picture": "צילום",
+ "Uncheck ingredients to not put them on the shopping list": "יש לבטל רכיבים כדי שלא יתווספו לרשימת הקניות",
+ "This is for statistical purposes only": "מיועד למטרות סטטיסטיות בלבד",
+ "You have to select a recipe": "עליך לבחור במתכון",
+ "Key type": "סוג מפתח",
+ "Share/Integrate calendar (iCal)": "שיתוף/שילוב לוח שנה (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "ניתן להשתמש בכתובת (הציבורית) הבאה כדי לשתף או לשלב את לוח השנה בתצורת iCal",
+ "Allow partial units in stock": "לאפשר יחידות חלקיות במלאי",
+ "Enable tare weight handling": "לאפשר טיפול במשקל טרה",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "שימושי למשל לקמחים בצנצנצות - בעת רכישה/צריכה/אחסון תמיד שוקלים את הצנצנת כולה, הכמות לפרסום מחושבת אוטומטית לפי מה שבמלאי בתוספת משקל הטרה שמוגדר להלן",
+ "Tare weight": "משקל טרה",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "טיפול במשקל טרה פעיל - נא לשקול את כלל המוצר עם האריזה, הכמות שתפורסם תחושב אוטומטית",
+ "You have to select a location": "עליך לבחור במיקום",
+ "You have to select a store": "עליך לבחור בחנות",
+ "List": "רשימה",
+ "Gallery": "גלריה",
+ "The current picture will be deleted on save": "התמונה הנוכחית תימחק עם השמירה",
+ "Journal for this battery": "יומן לסוללה הזו",
+ "System info": "פרטי המערכת",
+ "Changelog": "יומן שינויים",
+ "will be multiplied by a factor of {string1} to get {string2}": "יוכפל במקדם של {string1} כדי לקבל {string2}",
+ "The given date is earlier than today, are you sure?": "התאריך שסופק הוא בעבר, להמשיך?",
+ "Product count": "ספירת מוצרים",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "נא להקליד שם מוצר או ברקוד חדשים וללחוץ על TAB או על Enter כדי להתחיל רצף פעילות",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "תשמש כהגדרת בררת המחדל בעת הוספת המוצר הזה כרכיב במתכון",
+ "Add item": "הוספת פריט",
+ "Selected shopping list": "רשימת הקניות הנבחרת",
+ "New shopping list": "רשימת קניות חדשה",
+ "Delete shopping list": "מחיקת רשימת קניות",
+ "Chores settings": "הגדרות מטלות",
+ "Batteries settings": "הגדרות סוללות",
+ "Tasks settings": "הגדרות משימות",
+ "Create shopping list": "יצירת רשימת קניות",
+ "Are you sure to delete shopping list \"{string0}\"?": "למחוק את רשימת הקניות „{string0}”?",
+ "Average shelf life": "אורך חיי מדף ממוצע",
+ "Spoil rate": "קצב קלקול",
+ "Show more": "להציג עוד",
+ "Show less": "להסתיר בחזרה",
+ "The amount must be between {string1} and {string2}": "הכמות חייבת להיות בין {string1} לבין {string2}",
+ "Day of month": "יום בחודש",
+ "Monday": "יום שני",
+ "Tuesday": "יום שלישי",
+ "Wednesday": "יום רביעי",
+ "Thursday": "יום חמישי",
+ "Friday": "יום שישי",
+ "Saturday": "שבת",
+ "Sunday": "יום ראשון",
+ "Configure userfields": "הגדרת שדות משתמש",
+ "Userfields": "שדות משתמשים",
+ "Entity": "יישות",
+ "Caption": "כותרת",
+ "Type": "סוג",
+ "Create userfield": "יצירת שדה משתמש",
+ "A entity is required": "נדרשת יישות",
+ "A caption is required": "נדרשת כותרת",
+ "A type is required": "נדרש סוג",
+ "Show as column in tables": "הצגת עמודה כטבלה",
+ "This is required and can only contain letters and numbers": "נחוץ ויכול להכיל אותיות ומספרים בלבד",
+ "Edit userfield": "עריכת שדה משתמש",
+ "Plural forms": "צורות ריבוי",
+ "One plural form per line, the current language requires": "צורת ריבוי אחת בכל שורה, השפה הנוכחית דורשת",
+ "Plural count": "ספירת ריבוי",
+ "Plural rule": "כלל ריבוי",
+ "in plural form": "בצורת ריבוי",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "אין מספיק במלאי, רכיב אחד חסר | אין מספיק במלאי, {count} רכיבים חסרים | אין מספיק במלאי, {count} רכיבים חסרים | אין מספיק במלאי, {count} רכיבים חסרים",
+ "Not enough in stock, but already on the shopping list": "אין מספיק במלאי, אבל כבר מופיע ברשימת הקניות",
+ "Not enough in stock": "אין מספיק במלאי",
+ "Expiring soon days": "ימים לתפוגה בקרוב",
+ "Default location": "מיקום בררת מחדל",
+ "Default amount for purchase": "כמות בררת מחדל לרכישה",
+ "Default amount for consume": "כמות בררת מחדל לצריכה",
+ "Variable amount": "כמות משתנה",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "כאשר זה לא ריק, הוא יופיע במקום הכמות שמולאה להלן בזמן שהכמות שם עדיין תשמש לבדיקת צבירת מלאי",
+ "Track date only": "מעקב אחר התאריך בלבד",
+ "When enabled only the day of an execution is tracked, not the time": "כאשר האפשרות פעילה רק יום ההוצאה לפועל במעקב, לא השעה",
+ "Consume {string1} of {string2}": "צריכה של {string1} מתוך {string2}",
+ "Meal plan": "תכנית ארוחות",
+ "Add recipe on {string0}": "הוספת מתכון תחת {string0}",
+ "{count} serving | {count} servings": "מנה אחת | {count} מנות | {count} מנות | {count} מנות",
+ "Week costs": "עלויות שבועיות",
+ "Configuration": "הגדרות",
+ "A predefined list of values, one per line": "רשימה מוגדרת מראש של ערכים, אחד בשורה",
+ "Products": "מוצרים",
+ "Marked task {string0} as completed on {string0}": "המשימה {string0} סומנה שהושלמה ב־{string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "להזמנה יש הזמנות עוקבות שתלויות בה, אי אפשר לבטל",
+ "per serving": "לפי מנה",
+ "Never": "אף פעם",
+ "Today": "היום",
+ "Consume {string1} of {string2} as spoiled": "{string1} מתוך {string2} נצרכו כמקולקלים",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "לא כל הרכיבים של המתכון „{string0}” נמצאים במלאי, לא הוסר דבר",
+ "Undo task": "ביטול ביצוע משימה",
+ "Due date rollover": "מועד סיום מתגלגל",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "כשהאפשרות מופעלת המטלה לא יכולה לחרוג ממועד הסיום, מועד הסיום יועבר ליום הבא עם כל חריגה",
+ "Location Content Sheet": "גיליון תוכן מיקום",
+ "Print": "הדפסה",
+ "all locations": "כל המיקומים",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "כאן ניתן להדפיס עמוד לפי מיקום עם המלאי הנוכחי, אפשר לתלות אותו במיקום המתאים ולסמן עליו דברים שנצרכו",
+ "this location": "המיקום הזה",
+ "Consumed amount": "כמות שנצרכה",
+ "Time of printing": "מועד ההדפסה",
+ "Are you sure to delete equipment \"{string0}\"?": "למחוק את הציוד „{string0}”?",
+ "Parent product": "מוצר הורה",
+ "Not possible because this product is already used as a parent product in another product": "בלתי אפשרי כיוון שהמוצר הזה כבר משמש כמוצר הורה למוצר אחר",
+ "Default conversions": "המרות בררת מחדל",
+ "Factor": "מקדם",
+ "1 {string0} is the same as...": "{string0} אחד שקול ל…",
+ "Create QU conversion": "יצירת המרת יחידת כמות",
+ "Default for QU": "בררת מחדת ליחידת כמות",
+ "Quantity unit from": "יחידת כמות מקור",
+ "Quantity unit to": "יחידת כמות לכדי",
+ "This cannot be equal to {string0}": "ערך זה לא יכול להיות שווה ל־{string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "משמעות הדבר היא ש־{string1} אחד שקול ל־{string2} {string3}",
+ "QU conversions": "המרות יחידות כמות",
+ "Product overrides": "דריסות למוצר",
+ "Override for product": "דריסה למוצר",
+ "This equals {string1} {string2}": "שווה ערך ל־{string1} {string2}",
+ "Edit QU conversion": "עריכת המרת יחידת כמות",
+ "An assignment type is required": "נדרש סוג הקצאה",
+ "Assignment type": "סוג הקצאה",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "משמעות הדבר היא שהוצאת המטלה הזאת לפועל תתוזמן יום לאחר ההוצאה הקודמת לפועל",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "משמעות הדבר היא שההוצאה הבאה לפועל של המטלה הזאת מתוזמנת ליום לאחר ההוצאה האחרונה לפועל אך רק בימי השבוע שנבחרו להלן",
+ "This means the next execution of this chore is not scheduled": "משמעות הדבר היא שההוצאה לפועל של המטלה הזאת לא תתוזמן",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "משמעות הדבר היא שהוצאת המטלה הזאת לפועל תתוזמן בימים שנבחרו להלן במהלך כל חודש",
+ "This means the next execution of this chore will not be assigned to anyone": "משמעות הדבר היא שההוצאה לפועל של המטלה הזאת לא תוקצה לאף אחד",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "משמעות הדבר היא שההוצאה הבאה לפועל של המטלה הזאת תוקצה למי שהוציא אותה לפועל בפעם האחרונה",
+ "This means the next execution of this chore will be assigned randomly": "משמעות הדבר היא שההוצאה לפועל של המטלה הזאת תוקצה אקראית",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "משמעות הדבר היא שההוצאה הבאה לפועל של המטלה הזאת תוקצה לבא בתור בסדר האלפבית",
+ "Assign to": "הקצאה אל",
+ "This assignment type requires that at least one is assigned": "סוג הקצאה זו דורש לפחות מוקצה אחד",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "מטלה אחת מוקצית אלי | {count} מטלות מוקצות אלי | {count} מטלות מוקצות אלי | {count} מטלות מוקצות אלי",
+ "Assigned to me": "מוקצה אלי",
+ "assigned to {string0}": "מוקצה אל {string0}",
+ "Assignment": "הקצאה",
+ "Consume product on chore execution": "לצרוך מוצרים עם הוצאת מטלה לפועל",
+ "Are you sure to delete user field \"{string0}\"?": "למחוק את שדה המשתמש „{string0}”?",
+ "Userentities": "יישויות משתמש",
+ "Create userentity": "יצירת יישות משתמש",
+ "Show in sidebar menu": "הצגה בסרגל הצד",
+ "Edit userentity": "עריכת יישות משתמש",
+ "Edit {string0}": "עריכת {string0}",
+ "Create {string0}": "יצירת {string0}",
+ "Are you sure to delete this userobject?": "למחוק את פריט המשתמש הזה?",
+ "Icon CSS class": "class ה־CSS של הסמל",
+ "For example": "לדוגמה",
+ "Configure fields": "הגדרת שדות",
+ "Quantity unit plural form testing": "בדיקת צורות ריבוי של יחידת הכמות",
+ "Result": "תוצאה",
+ "Test plural forms": "בדיקת צורות ריבוי",
+ "Scan a barcode": "סריקת ברקוד",
+ "Error while initializing the barcode scanning library": "אירעה שגיאה בהפעלת ספריית סריקת הברקודים",
+ "The resulting price of this ingredient will be multiplied by this factor": "המחיר שיתקבל לרכיב זה יוכפל במקדם הזה",
+ "Price factor": "מקדם מחיר",
+ "Do you find grocy useful?": "grocy שימושי בעיניך?",
+ "Say thanks": "להגיד תודה",
+ "Search for recipes containing this product": "חיפוש מתכונים שמכילים את המוצר הזה",
+ "Add to shopping list": "הוספה לרשימת קניות",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "{string1} מתוך {string2} נוספו לרשימת הקניות „{string3}”",
+ "Output": "פלט",
+ "Energy (kcal)": "אנרגיה (קק״ל)",
+ "Per stock quantity unit": "יחידת כמות לפי מלאי",
+ "Barcode scanner testing": "בדיקת סורק הברקודים",
+ "Expected barcode": "ברקוד צפוי",
+ "Scan field": "שדה סריקה",
+ "Scanned barcodes": "ברקודים שנסרקו",
+ "Hit": "פגעו",
+ "Miss": "החטיאו",
+ "Display recipe": "הצגת מתכון",
+ "Accumulate sub products min. stock amount": "צבירת תת־מוצרים עם כמות מלאי מזערית",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "אם האפשרות פעילה, הכמות המזערית במלאי של תת־מוצרים תצטבר לכדי המוצר הזה, משמעות הדבר היא שתת־המוצר הזה אף פעם לא „יחסר”, רק המוצר הזה",
+ "Are you sure to remove this conversion?": "להסיר את ההמרה הזאת?",
+ "Unit price": "מחיר ליחידה",
+ "Total price": "מחיר כולל",
+ "in {string0} and based on the purchase quantity unit": "ב־{string0} ועל בסיס יחידת כמות הרכישה",
+ "Unlimited": "ללא הגבלה",
+ "Clear": "לרוקן",
+ "Are you sure to remove the included recipe \"{string0}\"?": "להסיר את המתכון הכלול „{string0}”?",
+ "Period interval": "תקופת הפרש",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "משמעות הדבר היא שהוצאת המטלה הזאת לפועל תתוזמן כל {string0} ימים בלבד",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "משמעות הדבר היא שהוצאת המטלה הזאת לפועל תתוזמן כל {string0} שבועות בלבד",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "משמעות הדבר היא שהוצאת המטלה הזאת לפועל תתוזמן כל {string0} חודשים בלבד",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "משמעות הדבר היא שהוצאת המטלה הזאת לפועל תתוזמן שנה לאחר ההוצאה הקודמת לפועל",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "משמעות הדבר היא שהוצאת המטלה הזאת לפועל תתוזמן כל {string0} שנים בלבד",
+ "Transfer": "העברה",
+ "From location": "ממיקום",
+ "To location": "למיקום",
+ "There are no units available at this location": "אין יחידות זמינות למיקום הזה",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "כמות: {string1}; תפוג בתאריך {string2}; נקנתה בתאריך {string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "{string1} מתוך {string2} הועברו מהמיקום {string3} אל {string4}",
+ "Stock entries": "רשומות מלאי",
+ "Best before date": "מועד בתוקף עד",
+ "Purchased date": "תאריך הרכישה",
+ "Consume all {string0} for this stock entry": "לצרוך את מלוא ה־{string0} עבור רשימת מלאי זו",
+ "The amount cannot be lower than {string1}": "הכמות לא יכולה להיות פחות מאשר {string1}",
+ "Stock entry successfully updated": "רשומת המלאי עודכנה בהצלחה",
+ "Edit stock entry": "עריכת רשומת מלאי",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "הגישה למצלמה אפשרית רק כשיש תמיכה ולדפדפן שלך יש הרשאה וכאשר grocy מוגש דרך חיבור מאובטח (https://).",
+ "Keep screen on": "להשאיר את המסך פעיל",
+ "Keep screen on while displaying a \"fullscreen-card\"": "להשאיר את המסך פעיל בעת הצגת „כרטיס מסך מלא”",
+ "A purchased date is required": "נדרש תאריך רכישה",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "כאשר נבחר מוצר, יחידה אחת (לפי הגשה ביחידת כמות במלאי) תתווסף למלאי בעת צריכת המתכון הזה",
+ "Produces product": "מייצר מוצר",
+ "This booking cannot be undone": "אי אפשר לבטל את ההזמנה הזו",
+ "Booking does not exist or was already undone": "ההזמנה אינה קיימת או שכבר בוטלה",
+ "Are you sure to delete API key \"{string0}\"?": "למחוק את מפתח ה־API „{string0}”?",
+ "Add note": "הוספת הערה",
+ "Add note on {string0}": "הוספת הערה על {string0}",
+ "per day": "ליום",
+ "Only undone items": "רק פריטים שלא הסתיימו",
+ "Add product": "הוספת מוצר",
+ "Add product on {string0}": "הוספת מוצר תחת {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "צורך את כל הרכיבים שנדרשים על ידי המתכונים או המוצרים של השבוע הזה",
+ "Meal plan recipe": "מתכון בתכנית ארוחות",
+ "Meal plan note": "הערה בתכנית ארוחות",
+ "Meal plan product": "מוצר בתכנית ארוחות",
+ "Scan mode": "מצב סריקה",
+ "on": "פעיל",
+ "off": "כבוי",
+ "Scan mode is on but not all required fields could be populated automatically": "מצב סריקה פעיל אבל אין אפשרות למלא את כל השדות אוטומטית",
+ "Is freezer": "הקפאה",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "כאשר מוצר מועבר לתוך או מחוץ למקפיא, מועד התוקף של המוצרים מכוון בהתאם להגדרות המוצר",
+ "This cannot be the same as the \"From\" location": "לא יכול להיות כמו מיקום המוצא",
+ "Thawed": "הופשר",
+ "Frozen": "הוקפא",
+ "Are you sure to delete userentity \"{string0}\"?": "למחוק את יישות המשתמש „{string0}”?",
+ "Shopping list settings": "הגדרות רשימת קניות",
+ "Show a month-view calendar": "לוח שנה בתצוגת חודש",
+ "Edit note on {string0}": "עריכת הערה על {string0}",
+ "Edit product on {string0}": "עריכת מוצר על {string0}",
+ "Edit recipe on {string0}": "עריכת מתכון על {string0}",
+ "Desired servings": "גודל מנה מבוקשת",
+ "Base: {string0}": "בסיס: {string0}",
+ "Recipes settings": "הגדרות מתכונים",
+ "Recipe card": "כרטיס מתכון",
+ "Group ingredients by their product group": "קיבוץ רכיבים לפי קבוצת המוצר שלהם",
+ "Unknown store": "חנות לא ידועה",
+ "Store": "חנות",
+ "Transaction successfully undone": "ההעברה בוטלה בהצלחה",
+ "Default store": "חנות בררת מחדל",
+ "Consume this stock entry": "צריכת רשומת מלאי זו",
+ "Mark this stock entry as open": "סימון רשומת מלאי זו כפתוחה",
+ "Mark this item as done": "סימון פריט זה כבוצע",
+ "Edit this item": "עריכת פריט זה",
+ "Delete this item": "מחיקת פריט זה",
+ "Show an icon if the product is already on the shopping list": "הצגת סמל אם המוצר כבר ברשימת הקניות",
+ "Calories": "קלוריות",
+ "means {string1} per {string2}": "כלומר {string1} לכל {string2}",
+ "Create inverse QU conversion": "יצירת המרת יחידות כמות הפוכה",
+ "Create recipe": "יצירת מתכון",
+ "Save & continue to add ingredients and included recipes": "לשמור ולהמשיך להוסיף רכיבים ומתכונים כלולים",
+ "Save & continue": "לשמור ולהמשיך",
+ "Save & return to recipes": "לשמור ולחזור למתכונים",
+ "Stock value": "ערך מלאי",
+ "Average price": "מחיר ממוצע",
+ "Active": "פעיל",
+ "Barcodes": "ברקודים",
+ "Barcode": "ברקוד",
+ "Create Barcode": "יצירת ברקוד",
+ "Barcode for product": "ברקוד למוצר",
+ "Edit Barcode": "עריכת ברקוד",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "אין מספיק במלאי (לא כלול בעלויות), רכיב אחד חסר ",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "על בסיס המחירים של כלל צריכת בררת המחדל שהוא „הראשון שנפתח, לאחר מכן הראשון שתוקפו יפוג, לאחר מכן הראשון הנכנס הוא הראשון שיוצא”",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "אין מספיק במלאי (לא כלול בעלויות), {string1} חסרים, {string2} כבר ברשימת הקניות",
+ "Quantity unit stock cannot be changed after first purchase": "לא ניתן לשנות את היחידה במלאי לאחר הרכישה הראשונה",
+ "Clear filter": "לבטל את הסינון",
+ "Permissions for user {string0}": "הרשאות למשתמש {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "להסיר את מלוא ההרשאות לעצמך?",
+ "Permissions saved": "ההרשאות נשמרו",
+ "You are not allowed to view this page": "אסור לך לצפות בעמוד הזה",
+ "Page not found": "העמוד לא נמצא",
+ "Unauthorized": "אין לך הרשאה",
+ "Error source": "מקור השגיאה",
+ "Error message": "הודעת השגיאה",
+ "Stack trace": "מהלך ביצוע",
+ "Easy error info copy & paste (for reporting)": "פרטי שגיאה שקל להעתיק ולהדביק (לטובת דיווח)",
+ "This page does not exist": "העמוד הזה אינו קיים",
+ "You will be redirected to the default page in {string0} seconds": "תבוצע הפניה לעמוד בררת המחדל תוך {string0} שניות",
+ "Server error": "שגיאת שרת",
+ "A server error occured while processing your request": "אירעה שגיאה בשרת בעת עיבוד הבקשה שלך",
+ "If you think this is a bug, please report it": "אם לדעתך מדובר בתקלה, נא לדווח עליה",
+ "Language": "שפה",
+ "User settings": "הגדרות המשתמש",
+ "Default": "בררת מחדל",
+ "Stock journal summary": "תקציר יומן מלאי",
+ "Journal summary": "תקציר יומן",
+ "Journal summary for this product": "תקציר יומן למוצר הזה",
+ "Consume exact amount": "צריכת כמות מדויקת",
+ "Value": "ערך",
+ "{string0} total value": "{string0} ערך כולל",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "הצגת תאריך הרכישה בעמודי הרכישה והמצאי (אחרת תאריך הרכישה יוגדר להיום)",
+ "Common": "משותף",
+ "Decimal places allowed for amounts": "מקומות עשרוניים מותרים לכמויות",
+ "Decimal places allowed for prices": "מקומות עשרוניים מותרים למחירים",
+ "Stock entries for this product": "רשומות מלאי למוצר הזה",
+ "Edit shopping list": "עריכת רשימת הקניות",
+ "Save & continue to add quantity unit conversions & barcodes": "לשמור ולהמשיך להוסיף המרות יחידת כמות וברקודים",
+ "Save & return to products": "לשמור ולחזור למוצרים",
+ "Save & continue to add conversions": "לשמור ולהמשיך להוספת המרה",
+ "Save & return to quantity units": "לשמור ולחזור ליחידות כמות",
+ "price": "מחיר",
+ "New stock amount": "כמות חדשה במלאי",
+ "Price per stock unit": "מחיר ליחידת מלאי",
+ "Table options": "אפשרויות טבלה",
+ "This product is currently on a shopping list": "המוצר הזה נמצא כרגע ברשימת קניות",
+ "Undo transaction": "ביטול העברה",
+ "Transaction type": "סוג העברה",
+ "Transaction time": "זמן העברה",
+ "Chore journal": "יומן מטלות",
+ "Track chore execution": "מעקב אחר ביצוע מטלה",
+ "Mark task as completed": "סימון המשימה כהושלמה",
+ "Track charge cycle": "מעקב אחר מחזור טעינה",
+ "Battery journal": "יומן סוללה",
+ "This product has a picture": "למוצר הזה יש תמונה",
+ "Consume this stock entry as spoiled": "לצרוך את רשומת המלאי הזאת כמקולקלת",
+ "Configure user permissions": "להגדיר הרשאות משתמשים",
+ "Show a QR-Code for this API key": "להציג קוד QR עבור מפתח API זה",
+ "This is the default quantity unit used when adding this product to the shopping list": "זאת יחידת הכמות כבררת מחדל בה נעשה שימוש בעת הוספת המוצר הזה לרשימת הקניות",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "להציג אזהרה כאשר התאריך בתוקף עד של המוצר הנרכש הוא מוקדם מתאריך התוקף עד הבא במלאי",
+ "This is due earlier than already in-stock items": "תום התוקף קרוב מאשר פריטים שכבר במלאי.",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "כאשר האפשרות פעילה, לאחר החלפת/סריקת פריט ואם ניתן למלא את כל השדות אוטומטית (לפי בררות המחדל למוצר ו/או לברקוד), ההעברה תוגש אוטומטית",
+ "Quick consume amount": "כמות לצריכה מהירה",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "כמות זו משמשת לטובת „כפתורי צריכה/פתיחה מהירה” על עמוד סקירת המלאי (קשור לכמות יחידה במלאי)",
+ "Copy": "העתקה",
+ "Are you sure to remove this barcode?": "להסיר את הברקוד הזה?",
+ "Due date type": "סוג תאריך בתוקף עד",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "בהתאם לסוג הנבחר, ההדגשה על עמוד סקירת המלאי תשתנה",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "המשמעות היא שהמוצר עשוי להיות בטוח לצריכה לאחר שמועד סיום התוקף שלו חלף",
+ "Expiration date": "תאריך תפוגת התוקף",
+ "Means that the product is not safe to be consumed after its due date is reached": "המשמעות היא שהמוצר לא בטוח לצריכה לאחר שמועד סיום התוקף שלו חלף",
+ "For purchases this amount of days will be added to today for the due date suggestion": "לרכישות תתווסף כמות הימים הזאת ליום הנוכחי להצעת תאריך תפוגת התוקף המיטבי",
+ "-1 means that this product will be never overdue": "-1 משמעו שתוקף המוצר הזה לא יפוג לעולם",
+ "Default due days": "ימים בתוקף עד כבררת מחדל",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "כאשר המוצר הזה סומן כפתור, מועד בתוקף עד יוחלף ביום הנוכחי + כמות כזו של ימים (0 משבית את ההתנהגות הזאת)",
+ "Default due days after opened": "ימים לתום התוקף לאחר הפתיחה כבררת מחדל",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "בהעברת מוצר להקפאה, מועד התוקף יוחלף ביום הנוכחי + כמות זו של ימים",
+ "Default due days after freezing": "ימים לתום התוקף לאחר ההקפאה כבררת מחדל",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "בהוצאת מוצר מהקפאה (הפשרה), מועד התוקף יוחלף ביום הנוכחי + כמות זו של ימים",
+ "Default due days after thawing": "ימי תוקף כבררת מחדל לאחר הפשרה",
+ "Next due date": "תאריך סיום התוקף הבא",
+ "{count} product is due | {count} products are due": "תוקפו של מוצר אחד יפוג | תוקפם של {count} מוצרים יפוג | תוקפם של {count} מוצרים יפוג | תוקפם של {count} מוצרים יפוג",
+ "Due date": "תאריך סיום התוקף",
+ "Never overdue": "אין תפוגה",
+ "{count} product is expired | {count} products are expired": "פג תוקפו של אחד המוצרים | תוקפם של {count} מוצרים פג | תוקפם של {count} מוצרים פג | תוקפם של {count} מוצרים פג",
+ "Expired": "התוקף פג",
+ "Due soon days": "ימים לתפוגת תוקף קרבה",
+ "Add overdue/expired products": "מוצרים שחרגו מהתוקף/פג תוקפם",
+ "Products with tare weight enabled are currently not supported for transfer": "מוצרים שמשקל הטרה שלהם פעיל אינם נתמכים בהעברה.",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "לא יכול להיות קטן מ־{string1} או שווה ל־{string2} ועליו להיות מספר תקין עם {string3} מקומות עשרוניים לכל היותר",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "חייב להיות בין {string1} ל־{string2}, אינו יכול להיות שווה ל־{string3} ועליו להיות מספר תקני עם {string4} מקומות עשרוניים לכל היותר",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "לא יכול להיות קטן מ־{string1} ועליו להיות מספר תקין עם {string2} מקומות עשרוניים לכל היותר",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "חייב להיות בין {string1} ו־{string2} ועליו להיות מספר תקני עם {string3} מקומות עשרוניים לכל היותר",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "לבצע את ההזמנה אוטומטית עם המחיר האחרון ועם כמות הפריט לקנייה, אם למוצר מוגדרים „ימי תוקף כבררת מחדל”",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "כאשר מוצר מועבר לתוך או מחוץ למקפיא, מועד התוקף של המוצרים מכוון בהתאם להגדרות המוצר",
+ "This is the internal field name, e. g. for the API": "זה השם הפנימי של השדה, למשל עבור ה־API",
+ "This is used to display the field on the frontend": "משמש להצגת השדה במנשק המשתמש",
+ "Multiple Userfields will be ordered by that number on the input form": "מגוון של שדות משתמש יסודרו לפי המספר הזה בטופס הקלט",
+ "Sort number": "מספר סדר",
+ "Download file": "הורדת קובץ",
+ "Use the products \"Quick consume amount\"": "להשתמש ב„כמות לצריכה מהירה” של המוצר",
+ "Disabled": "מושבת",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "זה מסיר גם את כמות המלאי, היומן ואת כל ההפניות למוצר הזה - מוטב לשקול להשבית אותו במקום, אם כל מה שמעניין אותך הוא להשאיר את המוצר אבל להסתיר אותו.",
+ "Show disabled": "הצגת מושבתים",
+ "Never show on stock overview": "לא להציג בסקירת המלאי",
+ "None": "בלי",
+ "Group by": "קיבוץ לפי",
+ "Ingredient group": "קבוצת רכיבים",
+ "Reset": "איפוס",
+ "Are you sure to reset the table options?": "לאפס את אפשרויות הטבלה?",
+ "Hide/view columns": "הסתרת/הצגת עמודות",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "ניתן להשתמש ביחידה/כמות שונים להלן בעוד שלבדיקת השלמת המלאי מספיק שיש כמות כלשהי מהמוצר במלאי.",
+ "Last price (Unit)": "מחיר אחרון (יחידה)",
+ "Last price (Total)": "מחיר אחרון (סך הכול)",
+ "Show header": "הצגת כותרת",
+ "Group by product group": "קיבוץ לפי קבוצת מוצרים",
+ "Table": "טבלה",
+ "Layout type": "סוג פריסה",
+ "Merge this product with another one": "מיזוג המוצר הזה עם אחר",
+ "Merge products": "מיזוג מוצרים",
+ "Product to keep": "מוצר להשאיר",
+ "Product to remove": "מוצר להסיר",
+ "Error while merging products": "שגיאה במיזוג מוצרים",
+ "After merging, this product will be kept": "לאחר המיזוג, המוצר הזה יישאר",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "לאחר המיזוג, כל מופעי המוצר הזה יוחלפו ב„מוצר לשימור” (כלומר שהמוצר הזה לא יהיה קיים עוד)",
+ "Merge": "מיזוג",
+ "Title": "כותרת",
+ "Link": "קישור",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "עמוד סקירת המלאי מציג את כל המוצרים שנמצאים כרגע במלאי או מתחת לכמות המזערית במלאי - יש להפעיל זאת כדי להסתיר את המוצר הזה שם תמיד",
+ "Print options": "אפשרויות הדפסה",
+ "A product or a note is required": "נדרש מוצר או הערה",
+ "no-assignment": "ללא הקצאה",
+ "who-least-did-first": "מי שעשה הכי פחות ראשון",
+ "random": "אקראי",
+ "in-alphabetical-order": "בסדר האלפבית",
+ "timeago_locale": "he",
+ "timeago_nan": "לפני NaN שנים",
+ "moment_locale": "he",
+ "datatables_localization": "{\"processing\":\"מעבד...\",\"lengthMenu\":\"הצג _MENU_ פריטים\",\"zeroRecords\":\"לא נמצאו רשומות מתאימות\",\"emptyTable\":\"לא נמצאו רשומות מתאימות\",\"info\":\"_START_ עד _END_ מתוך _TOTAL_ רשומות\",\"infoEmpty\":\"0 עד 0 מתוך 0 רשומות\",\"infoFiltered\":\"(מסונן מסך _MAX_ רשומות)\",\"search\":\"חפש:\",\"paginate\":{\"first\":\"ראשון\",\"previous\":\"קודם\",\"next\":\"הבא\",\"last\":\"אחרון\"}}",
+ "summernote_locale": "he-IL",
+ "fullcalendar_locale": "he",
+ "bootstrap-select_locale": "en_US",
+ "purchase": "רכישה",
+ "transfer_from": "העברה מתוך",
+ "transfer_to": "העברה אל",
+ "consume": "צריכה",
+ "inventory-correction": "תיקון מצאי",
+ "product-opened": "מוצר נפתח",
+ "stock-edit-old": "רשומת מלאי נערכה (ערכים ישנים)",
+ "stock-edit-new": "רשומת מלאי נערכה (ערכים חדשים)",
+ "self-production": "הפקה עצמית",
+ "manually": "ידני",
+ "dynamic-regular": "דינמי-מרווח קבוע",
+ "daily": "יומי",
+ "weekly": "שבועי",
+ "monthly": "חודשי",
+ "yearly": "שנתי",
+ "text-single-line": "טקסט בשורה אחת",
+ "text-multi-line": "טקסט מרובה שורות",
+ "number-integral": "מספר שלם",
+ "number-decimal": "מספר עשרוני",
+ "date": "תאריך (בלי שעה)",
+ "datetime": "תאריך ושעה",
+ "checkbox": "תיבת סימון",
+ "preset-list": "בחירה מרשימה (ניתן לבחור בפריט אחד)",
+ "preset-checklist": "בחירה מרשימה (ניתן לבחור במגוון פריטים)",
+ "link": "קישור",
+ "link-with-title": "קישור (עם כותרת)",
+ "file": "קובץ",
+ "image": "תמונה",
+ "ADMIN": "כל ההרשאות",
+ "USERS_CREATE": "יצירת משתמשים",
+ "USERS_EDIT": "עריכת משתמשים (לרבות ססמאות)",
+ "USERS_READ": "הצגת משתמשים",
+ "USERS_EDIT_SELF": "עריכת נתוני המשתמש עצמו / החלפת ססמה עצמית",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "ביטול מחזורי טעינה",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "מעקב אחר מחזורי טעינה",
+ "CHORE_TRACK_EXECUTION": "מעקב אחר פעילות",
+ "CHORE_UNDO_EXECUTION": "ביטול הוצאה לפועל",
+ "MASTER_DATA_EDIT": "עריכת נתוני על",
+ "TASKS_UNDO_EXECUTION": "ביטול הוצאה לפועל",
+ "TASKS_MARK_COMPLETED": "סימון כהושלם",
+ "STOCK_EDIT": "עריכת רשומות מלאי",
+ "STOCK_TRANSFER": "העברה",
+ "STOCK_INVENTORY": "מצאי",
+ "STOCK_CONSUME": "צריכה",
+ "STOCK_OPEN": "פתיחת מוצרים",
+ "STOCK_PURCHASE": "רכישה",
+ "SHOPPINGLIST_ITEMS_ADD": "הוספת פריטים",
+ "SHOPPINGLIST_ITEMS_DELETE": "הסרת פריטים",
+ "USERS": "ניהול משתמשים",
+ "STOCK": "מלאי",
+ "SHOPPINGLIST": "רשימת קניות",
+ "CHORES": "מטלות",
+ "BATTERIES": "סוללות",
+ "TASKS": "משימות",
+ "RECIPES": "מתכונים",
+ "EQUIPMENT": "ציוד",
+ "CALENDAR": "לוח שנה",
+ "RECIPES_MEALPLAN": "תכנית ארוחות",
+ "cs": "צ׳כית",
+ "da": "דנית",
+ "de": "גרמנית",
+ "el_GR": "יוונית",
+ "en": "אנגלית",
+ "en_GB": "אנגלית בריטית",
+ "es": "ספרדית",
+ "fr": "צרפתית",
+ "hu": "הונגרית",
+ "it": "איטלקית",
+ "ja": "יפנית",
+ "ko_KR": "קוריאנית",
+ "nl": "הולנדית",
+ "no": "נורווגית",
+ "pl": "פולנית",
+ "pt_BR": "פורטוגלית ברזילאית",
+ "pt_PT": "פורטוגלית של פורטוגל",
+ "ru": "רוסית",
+ "sk_SK": "סלובקית",
+ "sv_SE": "שוודית",
+ "tr": "טורקית",
+ "zh_TW": "סינית טייוואנית",
+ "zh_CN": "סינית",
+ "he_IL": "עברית",
+ "ta": "טמילית",
+ "fi": "פינית",
+ "Cookies": "עוגיות",
+ "Chocolate": "שוקולד",
+ "Pantry": "מזווה",
+ "Candy cupboard": "ארון הממתקים",
+ "Tinned food cupboard": "ארון השימורים",
+ "Fridge": "מקרר",
+ "Piece | Pieces": "חתיכה | חתיכות | חתיכות | חתיכות",
+ "Pack | Packs": "אריזה | אריזות | אריזות | אריזות",
+ "Glass | Glasses": "צנצנת | צנצנות | צנצנות | צנצנות",
+ "Tin | Tins": "קופסה | קופסאות | קופסאות | קופסאות",
+ "Can | Cans": "פחית | פחיות | פחיות | פחיות",
+ "Bunch | Bunches": "צרור | צרורות | צרורות | צרורות",
+ "Gummy bears": "דובוני גומי",
+ "Crisps": "חטיפים",
+ "Eggs": "ביצים",
+ "Noodles": "אטריות",
+ "Pickles": "חמוצים",
+ "Gulash soup": "מרק גולש",
+ "Yogurt": "יוגורט",
+ "Cheese": "גבינה",
+ "Cold cuts": "פסטרמות",
+ "Paprika": "פפריקה",
+ "Cucumber": "מלפפון",
+ "Radish": "צנון",
+ "Tomato": "עגבניה",
+ "Changed towels in the bathroom": "הוחלפו מגבות במקלחת",
+ "Cleaned the kitchen floor": "רצפת המטבח נוקתה",
+ "Warranty ends": "אחריות מסתיימת",
+ "TV remote control": "השלט של הטלוויזיה",
+ "Alarm clock": "שעון מעורר",
+ "Heat remote control": "השלט של החימום",
+ "Lawn mowed in the garden": "הדשא בגינה כוסח",
+ "Some good snacks": "חטיפים טובים",
+ "Pizza dough": "בצק פיצה",
+ "Sieved tomatoes": "עגבניות מרוסקות",
+ "Salami": "סלמי",
+ "Toast": "טוסט",
+ "Minced meat": "בשר קצוץ",
+ "Pizza": "פיצה",
+ "Spaghetti bolognese": "ספגטי בולונז",
+ "Sandwiches": "כריכים",
+ "English": "אנגלית",
+ "German": "גרמנית",
+ "Italian": "איטלקית",
+ "This is the note content of the recipe ingredient": "זה תוכן ההערה של הרכיב במתכון",
+ "Demo User": "משתמש לדוגמה",
+ "Gram | Grams": "גרם | גרמים | גרמים | גרמים",
+ "Flour": "קמח",
+ "Pancakes": "חביתיות",
+ "Sugar": "סוכר",
+ "Home": "בית",
+ "Life": "חיים",
+ "Projects": "מיזמים",
+ "Repair the garage door": "לתקן את הדלת של המחסן",
+ "Fork and improve grocy": "לעזור לפתח את grocy",
+ "Find a solution for what to do when I forget the door keys": "למצוא פתרון מה לעשות כשאני שוכח את המפתחות לדלת",
+ "Sweets": "ממתקים",
+ "Bakery products": "מוצרי מאפה",
+ "Tinned food": "מזון משומר",
+ "Butchery products": "מוצרים מהקצביה",
+ "Vegetables/Fruits": "ירקות/פירות",
+ "Refrigerated products": "מוצרים מקוררים",
+ "Coffee machine": "מכונת קפה",
+ "Dishwasher": "מדיח כלים",
+ "Liter": "ליטר",
+ "Liters": "ליטרים",
+ "Bottle": "בקבוק",
+ "Bottles": "בקבוקים",
+ "Milk": "חלב",
+ "Chocolate sauce": "רוטב שוקולד",
+ "Milliliters": "מיליליטרים",
+ "Milliliter": "מיליליטר",
+ "Bottom": "תחתית",
+ "Topping": "תוספת",
+ "French": "צרפתית",
+ "Turkish": "טורקית",
+ "Spanish": "ספרדית",
+ "Russian": "רוסית",
+ "The thing which happens on the 5th of every month": "מה שקורה ב־5 בכל חודש",
+ "The thing which happens daily": "מה שקורה כל יום",
+ "The thing which happens on Mondays and Wednesdays": "מה שקורה בימי שני ורביעי",
+ "Swedish": "שוודית",
+ "Polish": "פולנית",
+ "Milk Chocolate": "שוקולד חלב",
+ "Dark Chocolate": "שוקולד מריר",
+ "Slice | Slices": "פרוסה | פרוסות | פרוסות | פרוסות",
+ "Example userentity": "יישות משתמש לדוגמה",
+ "This is an example user entity...": "זו יישות משתמש לדוגמה…",
+ "Custom field": "שדה מותאם אישית",
+ "Example field value...": "ערך שדה לדוגמה…",
+ "Waffle rolls": "גליליות",
+ "Danish": "דנית",
+ "Dutch": "הולנדית",
+ "Norwegian": "נורווגית",
+ "Demo": "הדגמה",
+ "Stable version": "גרסה יציבה",
+ "Preview version": "גרסת תצוגה מקדימה",
+ "current release": "מהדורה נוכחית",
+ "not yet released": "טרם יצא לאור",
+ "Portuguese (Brazil)": "פורטוגלית ברזילאית",
+ "This is a note": "זאת הערה",
+ "Freezer": "מקפיא",
+ "Hungarian": "הונגרית",
+ "Slovak": "סלובקית",
+ "Czech": "צ׳כית",
+ "Portuguese (Portugal)": "פורטוגלית של פורטוגל",
+ "DemoSupermarket1": "שופרסל",
+ "DemoSupermarket2": "יוחננוף",
+ "Japanese": "יפנית",
+ "Chinese (Taiwan)": "סינית טייוואנית",
+ "Greek": "יוונית",
+ "Korean": "קוריאנית",
+ "Chinese (China)": "סינית",
+ "Hebrew (Israel)": "עברית",
+ "Tamil": "טמילית",
+ "Finnish": "פינית",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/hu.json b/locale/hu.json
new file mode 100644
index 00000000..cd25438f
--- /dev/null
+++ b/locale/hu.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Készlet áttekintése",
+ "{count} product expires | {count} products expiring": "{count} termék szavatossága le fog járni | {count} termék szavatossága le fog járni",
+ "within the next day | within the next {count} days": "a következő napon | a következő {count} napon belül",
+ "{count} product is already expired | {count} products are already expired": " {count} termék szavatossága lejárt | {count} termék szavatossága lejárt",
+ "{count} product is overdue | {count} products are overdue": " | ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} termék a meghatározott minimum mennyiség alá esett | {count} termék a meghatározott minimum mennyiség alá esett",
+ "Product": "Termék",
+ "{count} Product | {count} Products": "{count} Termék | {count} Termék",
+ "Amount": "Mennyiség",
+ "Logout": "Kijelentkezés",
+ "Chores overview": "Házimunkák áttekintése",
+ "Batteries overview": "Elemek áttekintése",
+ "Purchase": "Vásárlás",
+ "Consume": "Felhasználás",
+ "Inventory": "Leltár",
+ "Shopping list": "Bevásárlólista",
+ "Chore tracking": "Házimunka követése",
+ "Battery tracking": "Elemek követése",
+ "Locations": "Helyek",
+ "Stores": "Áruházak",
+ "Quantity units": "Mennyiségi egységek",
+ "Chores": "Házimunkák",
+ "Batteries": "Elemek",
+ "Chore": "Házimunka",
+ "Next estimated tracking": "Legközelebbi becsült követés",
+ "Last tracked": "Legutóbb követve",
+ "Battery": "Elem",
+ "Last charged": "Legutóbb feltöltve",
+ "Next planned charge cycle": "Következő tervezett töltési ciklus",
+ "Best before": "Minőségét megőrzi",
+ "OK": "OK",
+ "Product overview": "Termék áttekintése",
+ "Stock quantity unit": "Készlet mennyiségi egység",
+ "Stock amount": "Készlet mennyiség",
+ "Last purchased": "Legutóbb vásárolva",
+ "Last used": "Legutóbb felhasználva",
+ "Spoiled": "Megromlott",
+ "Barcode lookup is disabled": "Vonalkódos keresés le van tiltva",
+ "will be added to the list of barcodes for the selected product on submit": "hozzá lesz adva a vonalkódok listájához a kiválasztott termék esetén beküldéskor",
+ "New amount": "Új mennyiség",
+ "Note": "Jegyzet",
+ "Tracked time": "Követett idő",
+ "Chore overview": "Házimunkák áttekintése",
+ "Tracked count": "Nyomonkövetések száma",
+ "Battery overview": "Elemek áttekintése",
+ "Charge cycles count": "Töltési ciklusok száma",
+ "Create shopping list item": "Bevásárlólista elem létrehozása",
+ "Edit shopping list item": "Bevásárlólista elem szerkesztése",
+ "Save": "Mentés",
+ "Add": "Hozzáadás",
+ "Name": "Név",
+ "Location": "Hely",
+ "Min. stock amount": "Min. készlet mennyiség",
+ "Description": "Leírás",
+ "Create product": "Termék létrehozása",
+ "Barcode(s)": "Vonalkód(ok)",
+ "Minimum stock amount": "Minimális készlet mennyiség",
+ "Default best before days": "Alapértelmezett minőségmegőrzési idő",
+ "Default quantity unit purchase": "Alapértelmezett vásárlási mennyiségi egység",
+ "Quantity unit stock": "Mennyiségi egység készleten",
+ "Factor purchase to stock quantity unit": "Vásárlás beszámítása a készlet mennyiségi egységbe",
+ "Create location": "Hely létrehozása",
+ "Create store": "Áruház hozzáadása",
+ "Create quantity unit": "Mennyiségi egység létrehozása",
+ "Period type": "Ciklus típusa",
+ "Period days": "Ciklus napok",
+ "Create chore": "Házimunka létrehozása",
+ "Used in": "Itt használva",
+ "Create battery": "Elem létrehozása",
+ "Edit battery": "Elem szerkesztése",
+ "Edit chore": "Házimunka szerkesztése",
+ "Edit quantity unit": "Mennyiségi egység szerkesztése",
+ "Edit product": "Termék szerkesztése",
+ "Edit location": "Hely szerkesztése",
+ "Edit store": "Áruház szerkesztése",
+ "Record data": "Adat rögzítése",
+ "Manage master data": "Törzsadatkezelés",
+ "This will apply to added products": "Ez érvényesülni fog a hozzáadott termékekre",
+ "never": "soha",
+ "Add products that are below defined min. stock amount": "A megadott minimum alatti termékek hozzáadása",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Ez azt jelenti, hogy a megvásárolt 1 {string1}, {string2}és {string3}-ként fog átváltódni és megjelenni a készletben ",
+ "Login": "Bejelentkezés",
+ "Username": "Felhasználóinév",
+ "Password": "Jelszó",
+ "Invalid credentials, please try again": "Érvénytelen adatok, kérlek próbáld újra",
+ "Are you sure to delete battery \"{string0}\"?": "Biztosan törölni szeretnéd a következő elemet: \"{string0}\"?",
+ "Yes": "Igen",
+ "No": "Nem",
+ "Are you sure to delete chore \"{string0}\"?": "Biztosan törölni szeretnéd a következő házimunkát: \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "{string0} nem feleltethető meg terméknek, hogyan folytatod?",
+ "Create or assign product": "Létrehozás, vagy hozzárendelés termékhez",
+ "Cancel": "Mégse",
+ "Add as new product": "Új termék hozzáadása",
+ "Add as barcode to existing product": "Hozzáadás vonalkódként létező termékhez",
+ "Add as new product and prefill barcode": "Hozzáadás új termékként és a vonalkód kitöltése",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Biztosan törölni szeretnéd a következő mennyiségi egységet: \"{string0}\" ?",
+ "Are you sure to delete product \"{string0}\"?": "Biztosan törölni szeretnéd a következő terméket: \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Biztosan törölni szeretnéd a következő helyet: \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Biztosan törölni szeretnéd a következő áruházat: \"{string0}\"?",
+ "Manage API keys": "API kulcsok kezelése",
+ "REST API & data model documentation": "REST API & adat modell dokumentáció",
+ "API keys": "API kulcsok",
+ "Create new API key": "Új API kulcs létrehozása",
+ "API key": "API kulcs",
+ "Expires": "Lejár",
+ "Created": "Létrehozva",
+ "This product is not in stock": "Ez a termék nincs készleten",
+ "This means {string0} will be added to stock": "Ez azt jelenti, {string0} hozzá lesz adva a készlethez",
+ "This means {string0} will be removed from stock": "Ez azt jelenti, {string0} el lesz távolítva a készletből",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Ez azt jelenti, hogy a következő háztartási munka {string0} nap múlva lesz beütemezve a legutólsóhoz képest",
+ "Removed {string1} of {string2} from stock": "{string1} a {string2}-ből/ból el lett távolítva a készletből",
+ "About grocy": "Grocyról",
+ "Close": "Bezár",
+ "Released on": "Megjelent ekkor",
+ "Added {string1} of {string2} to stock": "{string1} a {string2}-ből/ból hozzá lett adva a készlethez",
+ "Stock amount of {string1} is now {string2}": "A készlet {string1}-ból/ből jelenleg {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Az elvégzett {string1} házimunka a {string2} -on naplózásra került",
+ "Tracked charge cycle of battery {string1} on {string2}": "",
+ "Consume all {string0} which are currently in stock": "Összes készleten lévő {string0} felhasználása",
+ "All": "Összes",
+ "Search": "Keresés",
+ "Not logged in": "Nincs bejelentkezve",
+ "You have to select a product": "Ki kell választanod egy terméket",
+ "You have to select a chore": "Választanod kell egy házimunkát",
+ "You have to select a battery": "Választanod kell választanod egy elemet",
+ "A name is required": "A név megadása kötelező",
+ "A location is required": "A hely megadása kötelező",
+ "A quantity unit is required": "A mennyiségi egység megadása kötelező",
+ "A period type is required": "A ciklus típusának megadása kötelező",
+ "A best before date is required": "A minőségmegőrzési dátum megadása kötelező",
+ "Settings": "Beállítások",
+ "This can only be before now": "Ez csak jelenlegi dátumnál korábbi dátum lehet csak",
+ "Calendar": "Naptár",
+ "Recipes": "Receptek",
+ "Edit recipe": "Recept szerkesztése",
+ "Ingredients list": "Hozzávalók listája",
+ "Add recipe ingredient": "Hozzávaló hozzáadása",
+ "Edit recipe ingredient": "Hozzávaló szerkesztése",
+ "Are you sure to delete recipe \"{string0}\"?": "Biztosan törölni szeretnéd a következő receptet: {string0}?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Biztos benne, hogy törli a következő recept hozzávalót: {string0}?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Biztosan kiüríted a következő bevásárló listát: {string0}?",
+ "Clear list": "Lista törlése",
+ "Requirements fulfilled": "Teljesült követelmények",
+ "Put missing products on shopping list": "Hiányzó termékek hozzáadása a bevásárlólistához",
+ "Enough in stock": "Elegendő mennyiség készleten",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Nincs elegendő készleten, {count} hozzávaló hiányzik, de már szerepel a bevásárlólistán | Nincs elegendő készleten, {count} hozzávaló hiányzik, de már szerepel a bevásárlólistán",
+ "Expand to fullscreen": "Teljes képernyős megjelenítés",
+ "Ingredients": "Hozzávalók",
+ "Preparation": "Elkészítés",
+ "Recipe": "Recept",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Nincs elegendő készleten, {string1} hiányzik, {string2} már szerepel a bevásárlólistán",
+ "Show notes": "Jegyzetek megtekintése",
+ "Put missing amount on shopping list": "Hiányzó mennyiség hozzáadása a bevásárlólistához",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Biztos benne, hogy a bevásárlólistára teszi az összes hiányzó \"{string0}\" recepthez tartózó hozzávalót?",
+ "Added for recipe {string0}": "Hozzáadva ehhez a recepthez: {string0}",
+ "Manage users": "Felhasználók kezelése",
+ "User": "Felhasználó",
+ "Users": "Felhasználó",
+ "Are you sure to delete user \"{string0}\"?": "Biztosan törölni szeretnéd a következő felhasználót: \"{string0}\"?",
+ "Create user": "Felhasználó létrehozása",
+ "Edit user": "Felhasználó szerkesztése",
+ "First name": "Keresztnév",
+ "Last name": "Vezetéknév",
+ "A username is required": "A felhasználóinév megadása kötelező",
+ "Confirm password": "Jelszó megerősítése",
+ "Passwords do not match": "Jelszavak nem egyeznek",
+ "Change password": "Jelszó módosítása",
+ "Done by": "Elvégezte",
+ "Last done by": "Legutóbb elvégezte",
+ "Unknown": "Ismeretlen",
+ "Chores journal": "Házimunka napló",
+ "0 means suggestions for the next charge cycle are disabled": "0 azt jelenti, hogy javaslatok a következő töltésiciklusra nincsenek bekapcsolva",
+ "Charge cycle interval (days)": "Töltésiciklus intervallum (napok)",
+ "Last price": "Legutóbbi ár",
+ "Price history": "Ár előzmények",
+ "No price history available": "Nincs elérhető ár előzmény",
+ "Price": "Ár",
+ "Unit": "Egység",
+ "{count} Unit | {count} Units": "{count} Egység | {count} Egység",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} házimunkát kell elvégezni | {count} házimunkát kell elvégezni",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} házimunkára lejárt a határidő | {count} házimunkára lejárt a határidő",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} elem feltöltése esedékes | {count} elem feltöltése esedékes",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": " | ",
+ "in singular form": "egyes számban",
+ "Quantity unit": "Mennyiségi egység",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Összes hozzávaló eltávolítva a készletről ehhez: \"{string0}\"",
+ "Consume all ingredients needed by this recipe": "A recept minden alapanyagának felhasználása",
+ "Click to show technical details": "Kattintson ide a technikai részletekért",
+ "Error while saving, probably this item already exists": "Hiba mentés közben, valószínűleg ez a termék már létezik",
+ "Error details": "Hiba részletei",
+ "Tasks": "Feladatok",
+ "Show done tasks": "Elvégzett feladatok megjelenítése",
+ "Task": "Feladat",
+ "Due": "Esedékes",
+ "Assigned to": "Hozzárendelve",
+ "Mark task \"{string0}\" as completed": "\"{string0}\" feladat készként jelölése",
+ "Uncategorized": "Kategorizálatlan",
+ "Task categories": "Feladat kategóriák",
+ "Create task": "Feladat létrehozása",
+ "A due date is required": "A határidő megadása kötelező",
+ "Category": "Kategória",
+ "Edit task": "Feladat szerkesztése",
+ "Are you sure to delete task \"{string0}\"?": "Biztosan törölni szeretnéd a következő feladatot: \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} feladatot kell elvégezni | {count} feladatot kell elvégezni",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} feladat elvégzése késésben van | {count} feladat elvégzése késésben van",
+ "Edit task category": "Feladat kategória szerkesztése",
+ "Create task category": "Feladat kategória létrehozása",
+ "Product groups": "Termékcsoportok",
+ "Ungrouped": "Nem csoportosított",
+ "Create product group": "Termékcsoport létrehozása",
+ "Edit product group": "Termékcsoport szerkesztése",
+ "Product group": "Termékcsoport",
+ "Are you sure to delete product group \"{string0}\"?": "Biztosan töröli szeretnéd a következő termékcsoportot: \"{string0}\"?",
+ "Stay logged in permanently": "Bejelentkezés korlátlan ideig",
+ "When not set, you will get logged out at latest after 30 days": "Amikor nincs beállítva, akkor legkorábban 30 nap után ki leszel léptetve",
+ "Status": "Állapot",
+ "Below min. stock amount": "Min. készlet mennyiség alatt",
+ "Expiring soon": "Hamarosan lejár",
+ "Already expired": "Lejárt",
+ "Due soon": "Hamarosan esedékes",
+ "Overdue": "Késik",
+ "View settings": "Beállítások megtekintése",
+ "Auto reload on external changes": "Automatikus újratöltés külső változásoknál",
+ "Enable night mode": "Éjszakai mód engedélyezése",
+ "Auto enable in time range": "Automatikus bekapcsolás az időintervallumon",
+ "From": "-tól",
+ "in format": "formátumban",
+ "To": "-ig",
+ "Time range goes over midnight": "Éjfél utáni időtartomány",
+ "Product picture": "Termék kép",
+ "No file selected": "Nincs fájl kiválasztva",
+ "Delete": "Törlés",
+ "Select file": "Válassz fájlt",
+ "Image of product {string0}": "A termék képe {string0}",
+ "Deletion not possible": "Az eltávolítás nem lehetséges",
+ "Equipment": "Eszközök",
+ "Instruction manual": "Használati útmutató",
+ "The selected equipment has no instruction manual": "A kiválasztott eszköznek nincs használati útmutatója",
+ "Notes": "Jegyzetek",
+ "Edit equipment": "Eszköz szerkesztése",
+ "Create equipment": "Eszköz létrehozása",
+ "The current file will be deleted on save": "",
+ "No picture available": "Nincs kép megadva",
+ "Presets for new products": "Új termék alapértelmezett tulajdonságok",
+ "Included recipes": "Tartalmazza a recepteket",
+ "A recipe is required": "A recept megadása kötelező",
+ "Add included recipe": "Recept hozzáadása",
+ "Edit included recipe": "Recept szerkesztése",
+ "Group": "Csoport",
+ "This will be used as a headline to group ingredients together": "",
+ "Journal": "Napló",
+ "Stock journal": "Készlet napló",
+ "Undone on": "",
+ "Batteries journal": "Elem napló",
+ "Undo charge cycle": "Töltési ciklus visszavonása",
+ "Undo chore execution": "Házimunka végrehajtás visszavonása",
+ "Chore execution successfully undone": "Házimunka végrehajtás sikeresen visszavonva",
+ "Undo": "Visszavonás",
+ "Booking successfully undone": "Foglalás sikeresen visszavonva",
+ "Charge cycle successfully undone": "Töltési ciklus sikeresen visszavonva",
+ "Disable stock fulfillment checking for this ingredient": "Készlet rendelkezésre állás ellenőrzés kikapcsolása ehhez a hozzávalóhoz",
+ "Add all list items to stock": "Összes listaelem hozzáadása készlethez",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "",
+ "Use a specific stock item": "Megadott készletelem használata",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "{string1} {string2} megjelölése felbontottként",
+ "Marked {string1} of {string2} as opened": "{string1} {string2} megjelölése felbontottként",
+ "Mark as opened": "Megjelölés felbontottként",
+ "Not opened": "Felbontatlan",
+ "Opened": "Felbontott",
+ "{string0} opened": "{string0} felbontva",
+ "Product due": "Termék esedékes",
+ "Task due": "Feladat esedékes",
+ "Chore due": "Házimunka esedékes",
+ "Battery charge cycle due": "Töltési ciklus esedékes",
+ "Show clock in header": "Óra megjelenítése a fejlécben",
+ "Stock settings": "Készlet beállítások",
+ "Shopping list to stock workflow": "Bevásárlólistából készletbe munkafolyamat",
+ "Skip": "Kihagyás",
+ "Servings": "Adagok",
+ "Costs": "Költség",
+ "Based on the prices of the last purchase per product": "",
+ "The ingredients listed here result in this amount of servings": "A megadott alapanyagokból ennyi adag jön ki",
+ "Do not check against the shopping list when adding missing items to it": "",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "",
+ "Picture": "Kép",
+ "Uncheck ingredients to not put them on the shopping list": "Vedd ki a pipát a hozzávalók mellől, amelyeket nem szeretnél a bevásárlólistához adni:",
+ "This is for statistical purposes only": "Csak statisztikai céllal",
+ "You have to select a recipe": "Ki kell választanod egy receptet",
+ "Key type": "Kulcs típus",
+ "Share/Integrate calendar (iCal)": "Naptár megosztása/integrálása (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "",
+ "Allow partial units in stock": "",
+ "Enable tare weight handling": "Tára súly kezelés engedélyezése",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "",
+ "Tare weight": "Tára súly",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "",
+ "You have to select a location": "Ki kell választanod egy helyet",
+ "You have to select a store": "Ki kell választanod egy áruházat",
+ "List": "Lista",
+ "Gallery": "Galéria",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Elemhez tartozó napló",
+ "System info": "Rendszerinformáció",
+ "Changelog": "Változásnapló",
+ "will be multiplied by a factor of {string1} to get {string2}": "",
+ "The given date is earlier than today, are you sure?": "A megadott dátum korábbi, mint a mai nap. Megtartod?",
+ "Product count": "Termék darabszám",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "Adj meg egy új terméknevet vagy vonalkódot és nyomd meg a TAB vagy az ENTER billentyűt a munkafolyamat elindításához ",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "",
+ "Add item": "Hozzáadás",
+ "Selected shopping list": "Kiválasztott bevásárló lista",
+ "New shopping list": "Új bevásárló lista",
+ "Delete shopping list": "Bevásárló lista törlése",
+ "Chores settings": "Házimunka beállítások",
+ "Batteries settings": "Elem beállítások",
+ "Tasks settings": "Feladat beállítások",
+ "Create shopping list": "Bevásárlólista létrehozása",
+ "Are you sure to delete shopping list \"{string0}\"?": "Biztosan törölni szeretnéd a következő bevásárlólistát: \"{string0}\"?",
+ "Average shelf life": "Átlagos tárolási idő",
+ "Spoil rate": "Megromlási arány",
+ "Show more": "Több mutatása",
+ "Show less": "Kevesebb mutatása",
+ "The amount must be between {string1} and {string2}": "A mennyiség {string1} és {string2} között kell lennie",
+ "Day of month": "Hónap napja",
+ "Monday": "Hétfő",
+ "Tuesday": "Kedd",
+ "Wednesday": "Szerda",
+ "Thursday": "Csütörtök",
+ "Friday": "Péntek",
+ "Saturday": "Szombat",
+ "Sunday": "Vasárnap",
+ "Configure userfields": "Egyéni mezők testreszabása",
+ "Userfields": "Egyéni mezők",
+ "Entity": "Entitás",
+ "Caption": "Felirat",
+ "Type": "Típus",
+ "Create userfield": "Egyéni mező létrehozása",
+ "A entity is required": "Az entitás megadása kötelező",
+ "A caption is required": "A felirat megadása kötelező",
+ "A type is required": "A típus megadása kötelező",
+ "Show as column in tables": "Megjelenítés oszlopként a táblázatokban",
+ "This is required and can only contain letters and numbers": "Ez kötelező és csak betűket és számokat tartalmazhat",
+ "Edit userfield": "Egyéni mező szerkesztése",
+ "Plural forms": "",
+ "One plural form per line, the current language requires": "",
+ "Plural count": "",
+ "Plural rule": "",
+ "in plural form": "többesszámban",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Nincs elegendő készleten, {count} hozzávaló hiányzik | Nincs elegendő készleten, {count} hozzávaló hiányzik",
+ "Not enough in stock, but already on the shopping list": "Nincs elegendő készleten, de már szerepel a bevásárlólistán",
+ "Not enough in stock": "Nincs elegendő készleten",
+ "Expiring soon days": "Hamarosan lejár - napok száma",
+ "Default location": "Alapértelmezett hely",
+ "Default amount for purchase": "Alapértelmezett vásárlási mennyiség",
+ "Default amount for consume": "Alapértelmezett felhasználási mennyiség",
+ "Variable amount": "Változó mennyiség",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "",
+ "Track date only": "Csak a dátum követése",
+ "When enabled only the day of an execution is tracked, not the time": "",
+ "Consume {string1} of {string2}": "{string1} {string2} felhasználása",
+ "Meal plan": "Menü terv",
+ "Add recipe on {string0}": "",
+ "{count} serving | {count} servings": "{count} tálalás | {count} adag",
+ "Week costs": "Heti költség",
+ "Configuration": "Konfiguráció",
+ "A predefined list of values, one per line": "",
+ "Products": "Termékek",
+ "Marked task {string0} as completed on {string0}": "",
+ "Booking has subsequent dependent bookings, undo not possible": "",
+ "per serving": "per adag",
+ "Never": "Soha",
+ "Today": "Ma",
+ "Consume {string1} of {string2} as spoiled": "{string1} {string2} felhasználása romlottként",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "",
+ "Undo task": "Feladat visszavonása",
+ "Due date rollover": "",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "",
+ "Location Content Sheet": "Helyek áttekintése",
+ "Print": "Nyomtatás",
+ "all locations": "összes helyek",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "ez a hely",
+ "Consumed amount": "Felhasznált mennyiség",
+ "Time of printing": "Nyomtatás időpontja",
+ "Are you sure to delete equipment \"{string0}\"?": "Biztosan törölni szeretnéd a következő eszközt: \"{string0}\"?",
+ "Parent product": "Szülő termék",
+ "Not possible because this product is already used as a parent product in another product": "Nem lehetséges, mert ez a termék egy másik termék szülő termékeként már felhasználásra került",
+ "Default conversions": "Alapértelmezett átváltások",
+ "Factor": "Szorzó",
+ "1 {string0} is the same as...": "1 {string0} ugyanaz mint...",
+ "Create QU conversion": "Mennyiségi egység átváltás létrehozása",
+ "Default for QU": "Alapértelmezett mennyiségi egység",
+ "Quantity unit from": "",
+ "Quantity unit to": "",
+ "This cannot be equal to {string0}": "",
+ "This means 1 {string1} is the same as {string2} {string3}": "",
+ "QU conversions": "Mennyiségi egység átváltások",
+ "Product overrides": "",
+ "Override for product": "",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Mennyiségi egység átváltás szerkesztése",
+ "An assignment type is required": "A hozzárendelési típus megadása kötelező",
+ "Assignment type": "Hozzárendelés típusa",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "",
+ "This means the next execution of this chore is not scheduled": "",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "",
+ "This means the next execution of this chore will not be assigned to anyone": "",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "",
+ "This means the next execution of this chore will be assigned randomly": "",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "",
+ "Assign to": "Hozzárendelve",
+ "This assignment type requires that at least one is assigned": "",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} házimunka hozzám rendelve | {count} házimunka hozzám rendelve",
+ "Assigned to me": "Hozzám rendelve",
+ "assigned to {string0}": "hozzárendelve ehhez: {string0}",
+ "Assignment": "Hozzárendelés",
+ "Consume product on chore execution": "",
+ "Are you sure to delete user field \"{string0}\"?": "Biztosan törölni szeretnéd a következő egyéni mezőt: \"{string0}\"?",
+ "Userentities": "Felhasználóentitások",
+ "Create userentity": "Felhasználóentitás létrehozása",
+ "Show in sidebar menu": "Megjelenítés oldalsávon",
+ "Edit userentity": "Felhasználóentitás szerkesztése",
+ "Edit {string0}": "{string0} szerkesztése",
+ "Create {string0}": "{string0} létrehozása",
+ "Are you sure to delete this userobject?": "",
+ "Icon CSS class": "Ikon CSS osztály",
+ "For example": "Példáúl",
+ "Configure fields": "Mezők testreszabása",
+ "Quantity unit plural form testing": "",
+ "Result": "Eredmény",
+ "Test plural forms": "",
+ "Scan a barcode": "Vonalkód beolvasása",
+ "Error while initializing the barcode scanning library": "Hiba történt a vonalkódolvasó könyvtár inicializálásakor",
+ "The resulting price of this ingredient will be multiplied by this factor": "",
+ "Price factor": "Ár szorzó",
+ "Do you find grocy useful?": "Hasznosnak találod a Grocyt?",
+ "Say thanks": "Köszönd meg",
+ "Search for recipes containing this product": "Receptek keresése, amelyek ezt a terméket tartalmazzák",
+ "Add to shopping list": "Hozzáadás bevásárlólistához",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "",
+ "Output": "Kimenet",
+ "Energy (kcal)": "Energia (kcal)",
+ "Per stock quantity unit": "",
+ "Barcode scanner testing": "Vonalkódolvasó tesztelés",
+ "Expected barcode": "Elvárt vonalkód",
+ "Scan field": "Vonalkód mező",
+ "Scanned barcodes": "Beolvasott vonalkódók",
+ "Hit": "Találat",
+ "Miss": "Téves",
+ "Display recipe": "Recept megjelenítése",
+ "Accumulate sub products min. stock amount": "",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "",
+ "Are you sure to remove this conversion?": "Biztosan törölni szeretnéd ezt az átváltást?",
+ "Unit price": "Egységár",
+ "Total price": "Teljes ár",
+ "in {string0} and based on the purchase quantity unit": "",
+ "Unlimited": "Korlátlan",
+ "Clear": "Törlés",
+ "Are you sure to remove the included recipe \"{string0}\"?": "",
+ "Period interval": "",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "",
+ "Transfer": "Áthelyezés",
+ "From location": "Forráshely",
+ "To location": "Célhely",
+ "There are no units available at this location": "Nincsenek elérhető egységek ezen a helyen",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "",
+ "Stock entries": "Készlet bejegyzések",
+ "Best before date": "Minőségmegőrzési dátum",
+ "Purchased date": "Vásárlási napja",
+ "Consume all {string0} for this stock entry": "",
+ "The amount cannot be lower than {string1}": "A mennyiség nem lehet kisebb, mint {string1}",
+ "Stock entry successfully updated": "Készlet bejegyzés sikeresen frissítve",
+ "Edit stock entry": "Készlet bejegyzés szerkesztése",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "",
+ "Keep screen on": "Kijelző ébren tartása",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Kijelző ébren tartása a \"teljesképernyős-kártya\" megjelenítésekor",
+ "A purchased date is required": "A vásárlás dátumának megadása kötelező",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Terméket állít elő",
+ "This booking cannot be undone": "Ez a foglalás nem visszavonható",
+ "Booking does not exist or was already undone": "A foglalás nem létezik, vagy már korábban visszavonásra került",
+ "Are you sure to delete API key \"{string0}\"?": "Biztosan törölni szeretnéd a következő API kulcsot: \"{string0}\"?",
+ "Add note": "Jegyzet hozzáadása",
+ "Add note on {string0}": "Megjegyzés hozzáadása {string0}-hoz/hez",
+ "per day": "per nap",
+ "Only undone items": "Nem elvégzett tételek",
+ "Add product": "Termék hozzáadása",
+ "Add product on {string0}": "",
+ "Consume all ingredients needed by this weeks recipes or products": "A hét receptjei vagy termékei számára szükséges összes hozzávaló felhasználása ",
+ "Meal plan recipe": "Menü terv recept",
+ "Meal plan note": "Menü terv jegyzet",
+ "Meal plan product": "Menü terv termék",
+ "Scan mode": "Beolvasás mód",
+ "on": "be",
+ "off": "ki",
+ "Scan mode is on but not all required fields could be populated automatically": "A beolvasási mód be van kapcsolva, de nem minden kötelező mező tölthető ki automatikusan",
+ "Is freezer": "Fagyasztószekrény",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "",
+ "This cannot be the same as the \"From\" location": "Nem lehet azonos a \"Forrás\" hellyel",
+ "Thawed": "Kiolvasztott",
+ "Frozen": "Fagyasztott",
+ "Are you sure to delete userentity \"{string0}\"?": "Biztosan törölni szeretnéd a következő felhasználóentitást: \"{string0}\"?",
+ "Shopping list settings": "Bevásárlólista beállítások",
+ "Show a month-view calendar": "Havi-nézet naptár megjelenítése",
+ "Edit note on {string0}": "",
+ "Edit product on {string0}": "",
+ "Edit recipe on {string0}": "",
+ "Desired servings": "Kívánt adagok",
+ "Base: {string0}": "Alapértelmezés: {string0}",
+ "Recipes settings": "Recept beállítások",
+ "Recipe card": "Receptkártya",
+ "Group ingredients by their product group": "",
+ "Unknown store": "Ismeretlen áruház",
+ "Store": "Áruház",
+ "Transaction successfully undone": "A művelet sikeresen visszavonva",
+ "Default store": "Alapértelmezett áruház",
+ "Consume this stock entry": "",
+ "Mark this stock entry as open": "",
+ "Mark this item as done": "Elem megjelölése elvégzettként",
+ "Edit this item": "Elem szerkesztése",
+ "Delete this item": "Elem törlése",
+ "Show an icon if the product is already on the shopping list": "",
+ "Calories": "Kalória",
+ "means {string1} per {string2}": "",
+ "Create inverse QU conversion": "",
+ "Create recipe": "Recept létrehozása",
+ "Save & continue to add ingredients and included recipes": "",
+ "Save & continue": "Mentés és folytatás",
+ "Save & return to recipes": "Mentés és visszatérés a receptekhez",
+ "Stock value": "Készlet érték",
+ "Average price": "Átlagár",
+ "Active": "Aktív",
+ "Barcodes": "Vonalkódok",
+ "Barcode": "Vonalkód",
+ "Create Barcode": "Vonalkód létrehozása",
+ "Barcode for product": "Termék vonalkód",
+ "Edit Barcode": "Vonalkód szerkesztése",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Nincs elegendő készleten (nem jelenik meg a költségben), {string0} hozzávaló hiányzik",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Nincs elegendő készleten (nem jelenik meg a költségben), {string1} hiányzik, {string2} már szerepel a bevásárlólistán",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "Szűrő törlése",
+ "Permissions for user {string0}": "{string0} jogosultságai",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "Jogosultságok mentve",
+ "You are not allowed to view this page": "",
+ "Page not found": "Az oldal nem található",
+ "Unauthorized": "Nem engedélyezett",
+ "Error source": "Hibaforrás",
+ "Error message": "Hibaüzenet",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "Ez az oldal nem létezik",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "Szerverhiba",
+ "A server error occured while processing your request": "",
+ "If you think this is a bug, please report it": "Ha úgy gondolod, hogy ez egy hiba, akkor jelentsd",
+ "Language": "Nyelv",
+ "User settings": "Felhasználói beállítások",
+ "Default": "Alapértelmezett",
+ "Stock journal summary": "Készlet napló összefoglaló",
+ "Journal summary": "Napló összefoglaló",
+ "Journal summary for this product": "Termékhez tartozó napló összefoglaló",
+ "Consume exact amount": "",
+ "Value": "Érték",
+ "{string0} total value": "{string0} összérték",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "Általános",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "Bevásárlólista szerkesztése",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "Mentés és visszatérés a termékekhez",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "ár",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "Táblázat beállításai",
+ "This product is currently on a shopping list": "Ez a termék szerepel egy bevásárlólistán",
+ "Undo transaction": "Művelet visszavonása",
+ "Transaction type": "Művelet típusa",
+ "Transaction time": "Művelet időpontja",
+ "Chore journal": "Házimunka napló",
+ "Track chore execution": "Házimunka végrehajtásának követése",
+ "Mark task as completed": "Feladat jelölése elvégzettként",
+ "Track charge cycle": "",
+ "Battery journal": "Elem napló",
+ "This product has a picture": "Ez a termék rendelkezik képpel",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "Felhasználói jogosultságok kezelése",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "Mennyiség gyors felhasználása",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "Másolás",
+ "Are you sure to remove this barcode?": "Biztosan szeretnéd eltávolítani ezt a vonalkódot?",
+ "Due date type": "Lejárati idő típusa",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "Fogyaszthatósági dátum",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "Alapértelmezett határidő",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | ",
+ "Due date": "Határidő",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": "{count} termék lejárt | {count} termék lejárt",
+ "Expired": "Lejárt",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "Fájl letöltése",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "Nincs",
+ "Group by": "Csoportosítás",
+ "Ingredient group": "",
+ "Reset": "Visszaállítás",
+ "Are you sure to reset the table options?": "Biztosan visszaállítod a táblázat beállításait?",
+ "Hide/view columns": "Oszlopok elrejtése/megjelenítése",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "Utolsó ár (Egység)",
+ "Last price (Total)": "Utolsó ár (Teljes)",
+ "Show header": "Fejléc megjelenítése",
+ "Group by product group": "Csoportosítás termékcsoport szerint",
+ "Table": "Táblázat",
+ "Layout type": "Elrendezés típusa",
+ "Merge this product with another one": "Termék összevonása egy másikkal",
+ "Merge products": "Termékek összevonása",
+ "Product to keep": "Megtartandó termék",
+ "Product to remove": "Eltávolítandó termék",
+ "Error while merging products": "Hiba a termékek összevonása során",
+ "After merging, this product will be kept": "Összevonás után, ez a termék megmarad",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "Összevonás",
+ "Title": "Cím",
+ "Link": "Hivatkozás",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "Nyomtatási beállítások",
+ "A product or a note is required": "",
+ "no-assignment": "nincs-hozzárendelés",
+ "who-least-did-first": "ki-legkevésbé-csinálta-először",
+ "random": "véletlen",
+ "in-alphabetical-order": "ABC sorrendben",
+ "timeago_locale": "hu",
+ "timeago_nan": "NaN éve",
+ "moment_locale": "hu",
+ "datatables_localization": "{\"sEmptyTable\":\"Nincs rendelkezésre álló adat\",\"sInfo\":\"Találatok: _START_ - _END_ Összesen: _TOTAL_\",\"sInfoEmpty\":\"Nulla találat\",\"sInfoFiltered\":\"(_MAX_ összes rekord közül szűrve)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\" \",\"sLengthMenu\":\"_MENU_ találat oldalanként\",\"sLoadingRecords\":\"Betöltés...\",\"sProcessing\":\"Feldolgozás...\",\"sSearch\":\"Keresés:\",\"sZeroRecords\":\"Nincs a keresésnek megfelelő találat\",\"oPaginate\":{\"sFirst\":\"Első\",\"sPrevious\":\"Előző\",\"sNext\":\"Következő\",\"sLast\":\"Utolsó\"},\"oAria\":{\"sSortAscending\":\": aktiválja a növekvő rendezéshez\",\"sSortDescending\":\": aktiválja a csökkenő rendezéshez\"},\"select\":{\"rows\":{\"0\":\"\",\"1\":\"1 sor kiválasztva\",\"_\":\"{string0} sor kiválasztva\"}},\"buttons\":{\"print\":\"Nyomtatás\",\"colvis\":\"Oszlopok\",\"copy\":\"Másolás\",\"copyTitle\":\"Vágólapra másolás\",\"copySuccess\":{\"1\":\"1 sor másolva\",\"_\":\"{string0} sor másolva\"}}}",
+ "summernote_locale": "hu-HU",
+ "fullcalendar_locale": "hu",
+ "bootstrap-select_locale": "hu_HU",
+ "purchase": "vásárlás",
+ "transfer_from": "mozgatás innen",
+ "transfer_to": "mozgatás ide",
+ "consume": "elfogyasztás",
+ "inventory-correction": "készlet-korrekció",
+ "product-opened": "felbontott-termék",
+ "stock-edit-old": "régi készlet szerkesztése",
+ "stock-edit-new": "új készlet szerkesztése",
+ "self-production": "sajátkészítés",
+ "manually": "manuálisan",
+ "dynamic-regular": "változó gyakorisággal",
+ "daily": "naponta",
+ "weekly": "hetente",
+ "monthly": "havonta",
+ "yearly": "évente",
+ "text-single-line": "egysoros szöveg",
+ "text-multi-line": "többsoros szöveg",
+ "number-integral": "egész szám",
+ "number-decimal": "decimális szám",
+ "date": "dátum",
+ "datetime": "dátumidőpont",
+ "checkbox": "jelölőnégyzet",
+ "preset-list": "előre beállított lista",
+ "preset-checklist": "előre beállított jelölőlista",
+ "link": "link",
+ "link-with-title": "hivatkozás címmel",
+ "file": "fájl",
+ "image": "kép",
+ "ADMIN": "Összes jogosultság",
+ "USERS_CREATE": "Felhasználók létrehozása",
+ "USERS_EDIT": "Felhasználók szerkesztése (jelszavakat beleértve)",
+ "USERS_READ": "Felhasználók megjelenítése",
+ "USERS_EDIT_SELF": "Saját felhasználói adatok szerkesztése / saját jelszó módosítása",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "Töltési ciklus visszavonása",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "Töltési ciklus követése",
+ "CHORE_TRACK_EXECUTION": "Követés végrehajtása",
+ "CHORE_UNDO_EXECUTION": "Végrehajtás visszavonása",
+ "MASTER_DATA_EDIT": "Törzsadatok szerkesztése",
+ "TASKS_UNDO_EXECUTION": "Végrehajtás visszavonása",
+ "TASKS_MARK_COMPLETED": "Megjelölés elvégzettként",
+ "STOCK_EDIT": "Készlet bejegyzések szerkesztése",
+ "STOCK_TRANSFER": "Áthelyezés",
+ "STOCK_INVENTORY": "Leltár",
+ "STOCK_CONSUME": "Felhasználás",
+ "STOCK_OPEN": "Termékek megnyitása",
+ "STOCK_PURCHASE": "Vásárlás",
+ "SHOPPINGLIST_ITEMS_ADD": "Elemek hozzáadása",
+ "SHOPPINGLIST_ITEMS_DELETE": "Elemek eltávolítása",
+ "USERS": "Felhasználók kezelése",
+ "STOCK": "Készlet",
+ "SHOPPINGLIST": "Bevásárlólista",
+ "CHORES": "Házimunkák",
+ "BATTERIES": "Elemek",
+ "TASKS": "Feladatok",
+ "RECIPES": "Receptek",
+ "EQUIPMENT": "Eszközök",
+ "CALENDAR": "Naptár",
+ "RECIPES_MEALPLAN": "Menü terv",
+ "cs": "Cseh",
+ "da": "Dán",
+ "de": "Német",
+ "el_GR": "Görög",
+ "en": "Angol",
+ "en_GB": "Angol (Egyesült Királyság)",
+ "es": "Spanyol",
+ "fr": "Francia",
+ "hu": "Magyar",
+ "it": "Olasz",
+ "ja": "Japán",
+ "ko_KR": "Koreai",
+ "nl": "Holland",
+ "no": "Norvég",
+ "pl": "Lengyel",
+ "pt_BR": "Portugál (Brazília)",
+ "pt_PT": "Portugál (Portugália)",
+ "ru": "Orosz",
+ "sk_SK": "Szlovák",
+ "sv_SE": "Svéd",
+ "tr": "Török",
+ "zh_TW": "Kínai (Tajvan)",
+ "zh_CN": "Kínai (Kína)",
+ "he_IL": "Héber (Izrael)",
+ "ta": "Tamil",
+ "fi": "Finn",
+ "Cookies": "Keksz",
+ "Chocolate": "Csokoládé",
+ "Pantry": "Éléskamra",
+ "Candy cupboard": "Édességszekrény",
+ "Tinned food cupboard": "Konzverves szekrény",
+ "Fridge": "Hűtő",
+ "Piece | Pieces": "Darab | Darab",
+ "Pack | Packs": "Csomag | Csomag",
+ "Glass | Glasses": "Üveg | Üveg",
+ "Tin | Tins": "Konzerv | Konzerv",
+ "Can | Cans": "Képes | Kancsó",
+ "Bunch | Bunches": "Csokor | Csokor",
+ "Gummy bears": "Gumimaci",
+ "Crisps": "Ropogtatnivaló",
+ "Eggs": "Tojás",
+ "Noodles": "Tészta",
+ "Pickles": "Savanyúság",
+ "Gulash soup": "Gulyásleves",
+ "Yogurt": "Joghurt",
+ "Cheese": "Sajt",
+ "Cold cuts": "Felvágott",
+ "Paprika": "Paprika",
+ "Cucumber": "Uborka",
+ "Radish": "Retek",
+ "Tomato": "Paradicsom",
+ "Changed towels in the bathroom": "Törölközők cseréje a fürdőszobában",
+ "Cleaned the kitchen floor": "Konyhapadló felmosása",
+ "Warranty ends": "Garancia lejár",
+ "TV remote control": "TV távirányító",
+ "Alarm clock": "Ébresztőóra",
+ "Heat remote control": "Termosztát",
+ "Lawn mowed in the garden": "Fűnyírás a kertben",
+ "Some good snacks": "Néhány jó kis nasi",
+ "Pizza dough": "Pizzatekercs",
+ "Sieved tomatoes": "Paradicsompüré",
+ "Salami": "Szalámi",
+ "Toast": "Toast kenyér",
+ "Minced meat": "Darált hús",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Bolognai spagetti",
+ "Sandwiches": "Szendvics",
+ "English": "Angol",
+ "German": "Német",
+ "Italian": "Olasz",
+ "This is the note content of the recipe ingredient": "Ez a recept hozzávalójának megjegyzés tartalma",
+ "Demo User": "Demo felhasználó",
+ "Gram | Grams": "Gramm | Gramm",
+ "Flour": "Liszt",
+ "Pancakes": "Palacsinta",
+ "Sugar": "Cukor",
+ "Home": "Otthon",
+ "Life": "Élet",
+ "Projects": "Projektek",
+ "Repair the garage door": "Garázsajtó megjavítása",
+ "Fork and improve grocy": "Forkold és fejleszd te is Grocyt",
+ "Find a solution for what to do when I forget the door keys": "Megoldást találni, mit tennék akkor, ha elhagyom a lakáskulcsot",
+ "Sweets": "Édességek",
+ "Bakery products": "Péktermékek",
+ "Tinned food": "Konzerves étel",
+ "Butchery products": "Hentes termékek",
+ "Vegetables/Fruits": "Zöldségek/Gyümölcsök",
+ "Refrigerated products": "Hűtött termékek",
+ "Coffee machine": "Kávéfőző",
+ "Dishwasher": "Mosogató",
+ "Liter": "Liter",
+ "Liters": "Liter",
+ "Bottle": "Üveg",
+ "Bottles": "Üveg",
+ "Milk": "Tej",
+ "Chocolate sauce": "Csokiszósz",
+ "Milliliters": "Milliliter",
+ "Milliliter": "Milliliter",
+ "Bottom": "Alsó",
+ "Topping": "Feltét",
+ "French": "Francia",
+ "Turkish": "Török",
+ "Spanish": "Spanyol",
+ "Russian": "Orosz",
+ "The thing which happens on the 5th of every month": "A dolog, amely minden hónap 5. napján megtörténik",
+ "The thing which happens daily": "A dolog, amely minden nap megtörténik",
+ "The thing which happens on Mondays and Wednesdays": "A dolog, amely minden hétfőn és szerdán megtörténik",
+ "Swedish": "Svéd",
+ "Polish": "Lengyel",
+ "Milk Chocolate": "Tejcsokoládé",
+ "Dark Chocolate": "Étcsokoládé",
+ "Slice | Slices": "Szelet | Szelet",
+ "Example userentity": "Példa felhasználóentitás",
+ "This is an example user entity...": "Ez egy példa felhasználóentitás",
+ "Custom field": "Egyéni mező",
+ "Example field value...": "Példa egyéni mező érték...",
+ "Waffle rolls": "Gofri tekercs",
+ "Danish": "Dán",
+ "Dutch": "Holland",
+ "Norwegian": "Norvég",
+ "Demo": "Demo",
+ "Stable version": "Stabil verzió",
+ "Preview version": "Előzetes verzió",
+ "current release": "jelenlegi kiadás",
+ "not yet released": "még nem kiadott",
+ "Portuguese (Brazil)": "Portugál (Brazil)",
+ "This is a note": "Ez egy jegyzet",
+ "Freezer": "Fagyasztószekrény",
+ "Hungarian": "Magyar",
+ "Slovak": "Szlovák",
+ "Czech": "Cseh",
+ "Portuguese (Portugal)": "Portugál",
+ "DemoSupermarket1": "Tesco",
+ "DemoSupermarket2": "Aldi",
+ "Japanese": "Japán",
+ "Chinese (Taiwan)": "Kínai (Tajvan)",
+ "Greek": "Görög",
+ "Korean": "Koreai",
+ "Chinese (China)": "Kínai (Kína)",
+ "Hebrew (Israel)": "Héber (Izrael)",
+ "Tamil": "Tamil",
+ "Finnish": "Finn",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/it.json b/locale/it.json
new file mode 100644
index 00000000..1218a6a8
--- /dev/null
+++ b/locale/it.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Riepilogo della dispensa",
+ "{count} product expires | {count} products expiring": "{count} prodotto in scadenza | {count} prodotti in scadenza",
+ "within the next day | within the next {count} days": "entro domani | entro i prossimi {count} giorni",
+ "{count} product is already expired | {count} products are already expired": "{count} prodotto è già scaduto | {count} prodotti sono già scaduti",
+ "{count} product is overdue | {count} products are overdue": "{count} prodotto è scaduto | {count} prodotti sono scaduti",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} prodotto sotto la quantità minima di dispensa definita | {count} prodotti sono al di sotto della quantità minima di dispensa definita",
+ "Product": "Prodotto",
+ "{count} Product | {count} Products": "{count} Prodotto | {count} Prodotti",
+ "Amount": "Quantità",
+ "Logout": "Disconnetti",
+ "Chores overview": "Riepilogo delle faccende",
+ "Batteries overview": "Riepilogo delle batterie",
+ "Purchase": "Acquisti",
+ "Consume": "Consumi",
+ "Inventory": "Inventario",
+ "Shopping list": "Lista della spesa",
+ "Chore tracking": "Tracciamento delle faccende domestiche",
+ "Battery tracking": "Dati batterie",
+ "Locations": "Posizioni",
+ "Stores": "Negozi",
+ "Quantity units": "Unità di misura",
+ "Chores": "Faccende",
+ "Batteries": "Batterie",
+ "Chore": "Faccenda",
+ "Next estimated tracking": "Prossima esecuzione",
+ "Last tracked": "Ultima esecuzione",
+ "Battery": "Batterie",
+ "Last charged": "Ultima ricarica",
+ "Next planned charge cycle": "Prossima ricarica",
+ "Best before": "Data di scadenza",
+ "OK": "OK",
+ "Product overview": "Riepilogo del prodotto",
+ "Stock quantity unit": "Unità di misura dispensa",
+ "Stock amount": "Quantità dispensa",
+ "Last purchased": "Ultimo acquisto",
+ "Last used": "Ultimo utilizzo",
+ "Spoiled": "Scaduto",
+ "Barcode lookup is disabled": "I codici a barre sono disabilitati",
+ "will be added to the list of barcodes for the selected product on submit": "il prodotto selezionato sarà aggiunto alla lista dei codici a barre al momento dell'invio",
+ "New amount": "Nuova quantità",
+ "Note": "Nota",
+ "Tracked time": "Ora di esecuzione",
+ "Chore overview": "Riepilogo della faccenda",
+ "Tracked count": "Numero di esecuzioni",
+ "Battery overview": "Riepilogo della batteria",
+ "Charge cycles count": "Numero di ricariche",
+ "Create shopping list item": "Aggiungi un prodotto alla lista della spesa",
+ "Edit shopping list item": "Modifica un prodotto della lista della spesa",
+ "Save": "Salva",
+ "Add": "Aggiungi",
+ "Name": "Nome",
+ "Location": "Posizione",
+ "Min. stock amount": "Quantità minima in dispensa",
+ "Description": "Descrizione",
+ "Create product": "Aggiungi prodotto",
+ "Barcode(s)": "Codice(i) a barre",
+ "Minimum stock amount": "Quantità minima in dispensa",
+ "Default best before days": "Data di scadenza predefinita in giorni",
+ "Default quantity unit purchase": "Quantità di unità di acquisto predefinita",
+ "Quantity unit stock": "Unità di dispensa",
+ "Factor purchase to stock quantity unit": "Fattore di conversione tra unità di acquisto e di dispensa",
+ "Create location": "Aggiungi posizione",
+ "Create store": "Crea negozio",
+ "Create quantity unit": "Aggiungi unità di misura",
+ "Period type": "Tipo di ripetizione",
+ "Period days": "Periodo in giorni",
+ "Create chore": "Aggiungi faccenda",
+ "Used in": "Usato in",
+ "Create battery": "Aggiungi batteria",
+ "Edit battery": "Modifica batteria",
+ "Edit chore": "Modifica faccenda",
+ "Edit quantity unit": "Modifica unità di misura",
+ "Edit product": "Modifica prodotto",
+ "Edit location": "Modifica posizione",
+ "Edit store": "Modifica negozio",
+ "Record data": "Registra dati",
+ "Manage master data": "Gestisci dati",
+ "This will apply to added products": "Verrà applicato ai prodotti aggiunti",
+ "never": "mai",
+ "Add products that are below defined min. stock amount": "Aggiungi prodotti sotto il limite minimo di dispensa definito",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Questo significa 1 {string1} acquistato sarà convertito in {string2} {string3} in dispensa",
+ "Login": "Accesso",
+ "Username": "Nome Utente",
+ "Password": "Password",
+ "Invalid credentials, please try again": "Credenziali non valide, per favore riprova",
+ "Are you sure to delete battery \"{string0}\"?": "Sei sicuro di voler eliminare la batteria \"{string0}\"?",
+ "Yes": "Si",
+ "No": "No",
+ "Are you sure to delete chore \"{string0}\"?": "Sei sicuro di voler eliminare la faccenda \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" non è stato associato a nessun prodotto, come vuoi procedere?",
+ "Create or assign product": "Aggiungi o assegna prodotto",
+ "Cancel": "Annulla",
+ "Add as new product": "Aggiungi come nuovo prodotto",
+ "Add as barcode to existing product": "Assegna il codice a barre ad un prodotto",
+ "Add as new product and prefill barcode": "Aggiungi come nuovo prodotto ed assegna il codice a barre",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Sei sicuro di voler eliminare l'unità di misura \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Sei sicuro di voler eliminare il prodotto \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Sei sicuro di voler eliminare la posizione \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Sei sicuro di voler eliminare il negozio \"{string0}\"?",
+ "Manage API keys": "Gestisci le chiavi API",
+ "REST API & data model documentation": "REST API & Documentazione del modello di dati",
+ "API keys": "Chiavi API",
+ "Create new API key": "Crea nuova chiave API",
+ "API key": "Chiave API",
+ "Expires": "Scade il",
+ "Created": "Creato",
+ "This product is not in stock": "Questo prodotto non è in dispensa",
+ "This means {string0} will be added to stock": "Questo vuol dire che{string0} sarà aggiunto alla dispensa",
+ "This means {string0} will be removed from stock": "Questo vuol dire che {string0} sarà rimosso dalla dispensa",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Questo significa che la prossima esecuzione di questa faccenda è programmata {string0} giorni dopo l'ultima esecuzione",
+ "Removed {string1} of {string2} from stock": "Rimosso {string1} di {string2} dalla dispensa",
+ "About grocy": "A proposito di grocy",
+ "Close": "Chiudi",
+ "Released on": "Rilasciato il",
+ "Added {string1} of {string2} to stock": "Aggiunto {string1} di {string2} alla dispensa",
+ "Stock amount of {string1} is now {string2}": "La quantità in dispensa di {string1} è ora {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Prevista esecuzione della faccenda{string1} il {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Prevista carica delle batterie {string1} il {string2}",
+ "Consume all {string0} which are currently in stock": "Consumare tutto {string0} attualmente in dispensa",
+ "All": "Tutto",
+ "Search": "Cerca",
+ "Not logged in": "Non autenticato",
+ "You have to select a product": "Devi selezionare un prodotto",
+ "You have to select a chore": "Devi selezionare una faccenda",
+ "You have to select a battery": "Devi selezionare una batteria",
+ "A name is required": "Inserisci un nome",
+ "A location is required": "Inserisci la posizione",
+ "A quantity unit is required": "Inserisci un'unità di misura",
+ "A period type is required": "Seleziona un tipo di ripetizione",
+ "A best before date is required": "Inserisci una data di scadenza",
+ "Settings": "Impostazioni",
+ "This can only be before now": "Questo può essere solo prima d'ora",
+ "Calendar": "Calendario",
+ "Recipes": "Ricette",
+ "Edit recipe": "Modifica Ricetta",
+ "Ingredients list": "Lista Ingredienti",
+ "Add recipe ingredient": "Aggiungi l'ingrediente della ricetta",
+ "Edit recipe ingredient": "Modifica l'ingrediente della ricetta",
+ "Are you sure to delete recipe \"{string0}\"?": "Sei sicuro di voler eliminare la ricetta \"{string0}?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Sei sicuro di voler eliminare l'ingrediente della ricetta \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Sei sicuro di voler svuotare la lista della spesa \"{string0}\"?",
+ "Clear list": "Pulisci lista",
+ "Requirements fulfilled": "Requisiti soddisfatti",
+ "Put missing products on shopping list": "Metti i prodotti mancanti nella lista della spesa",
+ "Enough in stock": "Abbastanza in magazzino",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Quantità insufficiente in dispensa, {count}ingrediente mancante ma già nella lista della spesa | Quantità insufficienti in dispensa, {count} ingredienti mancanti ma già nella lista della spesa",
+ "Expand to fullscreen": "Espandi a schermo intero",
+ "Ingredients": "Ingredienti",
+ "Preparation": "Preparazione",
+ "Recipe": "Ricetta",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Quantità insufficiente in dispensa, {string1} mancante, {string2} già nella lista della spesa",
+ "Show notes": "Mostra note",
+ "Put missing amount on shopping list": "Inserire la quantità mancante nella lista della spesa",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Sei sicuro di mettere tutti gli ingredienti mancanti per la ricetta \"{string0}\" nella lista della spesa?",
+ "Added for recipe {string0}": "Aggiunto per la ricetta {string0}",
+ "Manage users": "Gestione utenti",
+ "User": "Utente",
+ "Users": "Utenti",
+ "Are you sure to delete user \"{string0}\"?": "Sei sicuro di voler eliminare l'utente \"{string0}\"?",
+ "Create user": "Crea utente",
+ "Edit user": "Modifica urente",
+ "First name": "Nome",
+ "Last name": "Cognome",
+ "A username is required": "È richiesto un nome utente",
+ "Confirm password": "Conferma la password",
+ "Passwords do not match": "Le password non corrispondono",
+ "Change password": "Cambiare la password",
+ "Done by": "Realizzato da",
+ "Last done by": "Ultima realizzazione di",
+ "Unknown": "Sconosciuto",
+ "Chores journal": "Diario delle faccende",
+ "0 means suggestions for the next charge cycle are disabled": "0 vuol dire che i suggerimenti per la prossima ricarica sono disabilitati",
+ "Charge cycle interval (days)": "Intervallo di ricarica (giorni)",
+ "Last price": "Ultimo prezzo",
+ "Price history": "Cronologia prezzi",
+ "No price history available": "Cronologia prezzi non disponibile",
+ "Price": "Prezzo",
+ "Unit": "Unità",
+ "{count} Unit | {count} Units": "{count} Unità | {count} Unità",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} faccenda in scadenza da fare | {count} faccende in scadenza da fare",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} faccenda in ritardo da fare | {count} faccende in ritardo da fare",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} batteria deve essere caricata | {count} batterie devono essere caricate",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} batteria è in ritardo di essere ricaricata | {count} batterie sono in ritardo di essere ricaricate",
+ "in singular form": "in forma singolare",
+ "Quantity unit": "Unità di quantità",
+ "Only check if any amount is in stock": "Controlla soltanto se è disponibile in dispensa una qualsiasi quantità ",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "Sei sicuro di consumare tutti gli ingredienti necessari per la ricetta \"{string0}\" (gli ingredienti contrassegnati con \"Controlla soltanto se è disponibile in dispensa una qualsiasi quantità\" saranno ignorati)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Rimuovi tutti gli ingredienti della ricetta \"{string0}\" dalla dispensa",
+ "Consume all ingredients needed by this recipe": "Consuma tutti gli ingredienti necessari per questa ricetta",
+ "Click to show technical details": "Clicca per mostrare i dettagli tecnici",
+ "Error while saving, probably this item already exists": "Errore durante il salvataggio, probabilmente questo oggetto esiste già",
+ "Error details": "Dettagli errore",
+ "Tasks": "Compiti",
+ "Show done tasks": "Mostra compiti completati",
+ "Task": "Compito",
+ "Due": "Da fare",
+ "Assigned to": "Assegnato a",
+ "Mark task \"{string0}\" as completed": "Segna il compito \"{string0}\" come completato",
+ "Uncategorized": "Non categorizzato",
+ "Task categories": "Categorie compito",
+ "Create task": "Crea compito",
+ "A due date is required": "È necessaria una data di scadenza",
+ "Category": "Categoria",
+ "Edit task": "Modifica compito",
+ "Are you sure to delete task \"{string0}\"?": "Sei sicuro di eliminare il compito \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} compito da fare | {count} compiti da fare",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} compito in ritardo da fare | {count} compiti in ritardo da fare",
+ "Edit task category": "Modifica categoria di compito",
+ "Create task category": "Crea categoria di compito",
+ "Product groups": "Gruppi di prodotti",
+ "Ungrouped": "Non raggruppati",
+ "Create product group": "Crea gruppo di prodotti",
+ "Edit product group": "Modifica gruppo di prodotti",
+ "Product group": "Gruppo di prodotti",
+ "Are you sure to delete product group \"{string0}\"?": "Sei sicuro di eliminare il gruppo di prodotti \"{string0}\"?",
+ "Stay logged in permanently": "Resta connesso in modo permanente",
+ "When not set, you will get logged out at latest after 30 days": "Se non impostato, si verrà disconnessi alla fine dopo 30 giorni",
+ "Status": "Stato",
+ "Below min. stock amount": "Sotto min. quantità in dispensa",
+ "Expiring soon": "In scadenza a breve",
+ "Already expired": "Già scaduto",
+ "Due soon": "Da fare subito",
+ "Overdue": "In ritardo",
+ "View settings": "Mostra impostazioni",
+ "Auto reload on external changes": "Ricaricamento automatico su modifiche esterne",
+ "Enable night mode": "Abilita la modalità notturna",
+ "Auto enable in time range": "Abilitazione automatica nell'intervallo di tempo",
+ "From": "Da",
+ "in format": "nel formato",
+ "To": "A",
+ "Time range goes over midnight": "L'intervallo di tempo va oltre la mezzanotte",
+ "Product picture": "Immagine del prodotto",
+ "No file selected": "Nessun file selezionato",
+ "Delete": "Elimina",
+ "Select file": "Seleziona il file",
+ "Image of product {string0}": "Immagine del prodotto {string0}",
+ "Deletion not possible": "Cancellazione non possibile",
+ "Equipment": "Attrezzatura",
+ "Instruction manual": "Manuale di istruzioni",
+ "The selected equipment has no instruction manual": "L'attrezzatura selezionata non ha un manuale di istruzioni",
+ "Notes": "Note",
+ "Edit equipment": "Modifica attrezzatura",
+ "Create equipment": "Crea attrezzatura",
+ "The current file will be deleted on save": "Il file corrente verrà eliminato al salvataggio",
+ "No picture available": "Nessuna immagine disponibile",
+ "Presets for new products": "Preimpostazioni per nuovi prodotti",
+ "Included recipes": "Ricette incluse",
+ "A recipe is required": "È richiesta una ricetta",
+ "Add included recipe": "Aggiungi la ricetta inclusa",
+ "Edit included recipe": "Modifica la ricetta inclusa",
+ "Group": "Gruppo",
+ "This will be used as a headline to group ingredients together": "Questo sarà usato come titolo per raggruppare gli ingredienti",
+ "Journal": "Diario",
+ "Stock journal": "Diario della dispensa",
+ "Undone on": "Non terminato il",
+ "Batteries journal": "Diario delle batterie",
+ "Undo charge cycle": "Annulla ricarica",
+ "Undo chore execution": "Annulla esecuzione faccenda",
+ "Chore execution successfully undone": "Esecuzione faccenda annullata con successo",
+ "Undo": "Annulla",
+ "Booking successfully undone": "Prenotazione annullata correttamente",
+ "Charge cycle successfully undone": "Ciclo di carica annullato correttamente",
+ "Disable stock fulfillment checking for this ingredient": "Disabilita l'esecuzione del controllo in dispensa per questo ingrediente",
+ "Add all list items to stock": "Aggiungi tutti gli oggetti della lista alla dispensa",
+ "Add this item to stock": "Aggiungi questo articolo alla dispensa",
+ "Adding shopping list item {string1} of {string2}": "Aggiunta alla lista della spesa dell'elemento {string1}di {string2}",
+ "Use a specific stock item": "Usa un articolo specifico della dispensa",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "Il primo elemento in questo elenco verrà scelto dalla regola predefinita che è \"Prima quello aperto, poi prima quello in scadenza, poi quello prima entrato è il primo uscito\"",
+ "Mark {string1} of {string2} as open": "Segna {string1} di {string2} come aperti",
+ "Marked {string1} of {string2} as opened": "Segnato {string1} di {string2} come aperti",
+ "Mark as opened": "Segna come aperto",
+ "Not opened": "Non aperto",
+ "Opened": "Aperto",
+ "{string0} opened": "{string0} cominciato/i",
+ "Product due": "Prodotto scaduto",
+ "Task due": "Compito da fare",
+ "Chore due": "Faccenda da fare",
+ "Battery charge cycle due": "Ricarica batteria da fare",
+ "Show clock in header": "Mostra l'orologio nell'intestazione",
+ "Stock settings": "Impostazioni dispensa",
+ "Shopping list to stock workflow": "Flusso di lavoro dalla lista della spesa alla dispensa ",
+ "Skip": "Salta",
+ "Servings": "Porzioni",
+ "Costs": "Costi",
+ "Based on the prices of the last purchase per product": "Basato sui prezzi dell'ultimo acquisto per prodotto",
+ "The ingredients listed here result in this amount of servings": "Gli ingredienti elencati qui portano a questa quantità di porzioni",
+ "Do not check against the shopping list when adding missing items to it": "Non controllare la lista della spesa quando si aggiungono articoli mancanti",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Per impostazione predefinita, l'importo da aggiungere alla lista della spesa è \"importo necessario - importo della dispensa - importo della lista della spesa\" - quando questo è abilitato, viene verificato solo rispetto all'importo della dispensa, non rispetto a ciò che è già nella lista della spesa",
+ "Picture": "Immagine",
+ "Uncheck ingredients to not put them on the shopping list": "Deseleziona gli ingredienti per non inserirli nella lista della spesa",
+ "This is for statistical purposes only": "Questo è solo a fini statistici",
+ "You have to select a recipe": "Devi selezionare una ricetta",
+ "Key type": "Tipo di chiave",
+ "Share/Integrate calendar (iCal)": "Condividi / Integra calendario (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Utilizzare il seguente URL (pubblico) per condividere o integrare il calendario in formato iCal",
+ "Allow partial units in stock": "Consenti unità parziali in dispensa",
+ "Enable tare weight handling": "Abilita la gestione della tara",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Questo è utile ad es. per la farina in barattoli: all'acquisto / consumo / inventario si pesa sempre l'intero barattolo, la quantità da registrare viene quindi calcolata automaticamente in base a ciò che è in dispensa ed al peso della tara definito di seguito",
+ "Tare weight": "Peso tara",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Gestione del peso di tara abilitata - si prega di pesare l'intero contenitore, la quantità da registrare verrà automaticamente calcolata",
+ "You have to select a location": "Devi selezionare una posizione",
+ "You have to select a store": "Devi selezionare un negozio",
+ "List": "Elenco",
+ "Gallery": "Galleria",
+ "The current picture will be deleted on save": "L'immagine corrente verrà eliminata al salvataggio",
+ "Journal for this battery": "Diario per questa batteria",
+ "System info": "Informazioni di sistema",
+ "Changelog": "Registro delle modifiche",
+ "will be multiplied by a factor of {string1} to get {string2}": "verrà moltiplicato per un fattore di {string1} per ottenere {string2}",
+ "The given date is earlier than today, are you sure?": "La data indicata è precedente ad oggi, sei sicuro?",
+ "Product count": "Conteggio del prodotto",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "Digitare un nuovo nome di prodotto o codice a barre e premere TAB o INVIO per avviare un flusso di lavoro",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Questo verrà utilizzato come impostazione predefinita quando si aggiunge questo prodotto come un ingrediente di ricetta",
+ "Add item": "Aggiungi elemento",
+ "Selected shopping list": "Lista della spesa selezionata",
+ "New shopping list": "Nuova lista della spesa",
+ "Delete shopping list": "Elimina lista della spesa",
+ "Chores settings": "Impostazioni delle faccende",
+ "Batteries settings": "Impostazioni batterie",
+ "Tasks settings": "Impostazioni compiti",
+ "Create shopping list": "Crea la lista della spesa",
+ "Are you sure to delete shopping list \"{string0}\"?": "Sei sicuro di voler eliminare la lista della spesa \"{string0}\"?",
+ "Average shelf life": "Durata di conservazione media",
+ "Spoil rate": "Velocità di deterioramento",
+ "Show more": "Mostra di più",
+ "Show less": "Mostra di meno",
+ "The amount must be between {string1} and {string2}": "La quantità deve essere compresa tra {string1} e {string2}",
+ "Day of month": "Giorno del mese",
+ "Monday": "Lunedì",
+ "Tuesday": "Martedì",
+ "Wednesday": "Mercoledì",
+ "Thursday": "Giovedì",
+ "Friday": "Venerdì",
+ "Saturday": "Sabato",
+ "Sunday": "Domenica",
+ "Configure userfields": "Configura campi utente",
+ "Userfields": "Campi definiti dall'utente",
+ "Entity": "Entità",
+ "Caption": "Didascalia",
+ "Type": "Tipo",
+ "Create userfield": "Crea campo utente",
+ "A entity is required": "È richiesta un'entità",
+ "A caption is required": "È richiesta una didascalia",
+ "A type is required": "È richiesto un tipo",
+ "Show as column in tables": "Mostra come colonna nelle tabelle",
+ "This is required and can only contain letters and numbers": "Questo è obbligatorio e può contenere solo lettere e numeri",
+ "Edit userfield": "Modifica campo utente",
+ "Plural forms": "Forme plurali",
+ "One plural form per line, the current language requires": "Una forma plurale per riga, richiede la lingua corrente",
+ "Plural count": "Conteggio plurale",
+ "Plural rule": "Regola plurale",
+ "in plural form": "in forma plurale",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Non abbastanza in dispensa, {count} ingrediente mancante | Non abbastanza in dispensa, {count} ingredienti mancanti",
+ "Not enough in stock, but already on the shopping list": "Non abbastanza disponibile in dispensa, ma già nella lista della spesa",
+ "Not enough in stock": "Non abbastanza in dispensa",
+ "Expiring soon days": "In scadenza tra pochi giorni",
+ "Default location": "Posizione predefinita",
+ "Default amount for purchase": "Quantità predefinita per l'acquisto",
+ "Default amount for consume": "Quantità predefinita per il consumo",
+ "Variable amount": "Quantità variabile",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Quando questo non è vuoto, verrà mostrato al posto della quantità sopra immessa mentre la quantità verrà comunque utilizzata per il controllo dell'adempimento delle scorte dii dispensa",
+ "Track date only": "Traccia solo la data",
+ "When enabled only the day of an execution is tracked, not the time": "Se abilitato, viene tracciato solo il giorno di un'esecuzione, non l'ora",
+ "Consume {string1} of {string2}": "Consumare {string1} di {string2}",
+ "Meal plan": "Piano dei pasti",
+ "Add recipe on {string0}": "Aggiungi ricetta a {string0}",
+ "{count} serving | {count} servings": "{count} porzione | {count} porzioni",
+ "Week costs": "Costi settimanali",
+ "Configuration": "Configurazione",
+ "A predefined list of values, one per line": "Un elenco predefinito di valori, uno per riga",
+ "Products": "Prodotti",
+ "Marked task {string0} as completed on {string0}": "Contrassegnata compito {string0} come completato il {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "La prenotazione ha successive prenotazioni dipendenti, non è possibile annullare",
+ "per serving": "per porzione",
+ "Never": "Mai",
+ "Today": "Oggi",
+ "Consume {string1} of {string2} as spoiled": "Consumare {string1} di {string2} come avariato",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Non tutti gli ingredienti della ricetta \"{string0}\" sono disponibili in dispensa, nulla è stato rimosso",
+ "Undo task": "Annulla attività",
+ "Due date rollover": "Differimento della data di scadenza",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Se abilitato, il lavoro di routine o faccenda non può mai scadere, la data di scadenza si sposterà ogni giorno alla scadenza",
+ "Location Content Sheet": "Foglio dei contenuti della posizione",
+ "Print": "Stampa",
+ "all locations": "tutte le posizioni",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "Qui puoi stampare una pagina per posizione con l'attuale dispensa, magari per appenderla e annotare le cose consumate su di essa.",
+ "this location": "questa posizione",
+ "Consumed amount": "Quantità consumata",
+ "Time of printing": "Tempo di stampa",
+ "Are you sure to delete equipment \"{string0}\"?": "Eliminare l'apparecchiatura \"{string0}\" ?",
+ "Parent product": "Prodotto principale",
+ "Not possible because this product is already used as a parent product in another product": "Non possibile perché questo prodotto è già utilizzato come prodotto principale in un altro prodotto",
+ "Default conversions": "Conversioni predefinite",
+ "Factor": "Fattore",
+ "1 {string0} is the same as...": "1 {string0} è uguale a ...",
+ "Create QU conversion": "Crea conversione di Unità di Quantità",
+ "Default for QU": "Predefinito per Unità di Quantità",
+ "Quantity unit from": "da Unità di Quantità",
+ "Quantity unit to": "A Unità di Quantità",
+ "This cannot be equal to {string0}": "Questo non può essere uguale a {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Ciò significa che 1 {string1} è uguale a {string2} {string3}",
+ "QU conversions": "Conversioni di Unità Quantitative",
+ "Product overrides": "Sostituzioni del prodotto",
+ "Override for product": "Sostituzione per prodotto",
+ "This equals {string1} {string2}": "Questo equivale a {string1} {string2} ",
+ "Edit QU conversion": "Modifica la conversione di Unità Quantitative",
+ "An assignment type is required": "È richiesto un tipo di incarico",
+ "Assignment type": "Tipo di incarico",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Questo significa che la prossima esecuzione di questa faccenda è programmata 1 giorno dopo l'ultima esecuzione",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Questo significa che la prossima esecuzione di questa faccenda è prevista 1 giorno dopo l'ultima esecuzione, ma solo per i giorni feriali selezionati di seguito",
+ "This means the next execution of this chore is not scheduled": "Questo significa che la prossima esecuzione di questa faccenda non è programmata",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Questo significa che la prossima esecuzione di questa faccenda è programmata nel giorno selezionato di seguito di ogni mese",
+ "This means the next execution of this chore will not be assigned to anyone": "Questo significa che la prossima esecuzione di questa faccenda non sarà assegnata a nessuno",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Questo significa che la prossima esecuzione di questa faccenda verrà assegnata a chi l'ha eseguita di meno",
+ "This means the next execution of this chore will be assigned randomly": "Questo significa che la prossima esecuzione di questa faccenda verrà assegnata casualmente",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Questo significa che la prossima esecuzione di questa faccenda verrà assegnata al prossimo in ordine alfabetico",
+ "Assign to": "Assegnato a",
+ "This assignment type requires that at least one is assigned": "Questo tipo di assegnazione richiede che almeno uno sia incaricato",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} faccenda è assegnata a me | {count} faccende sono assegnate a me",
+ "Assigned to me": "Assegnato a me",
+ "assigned to {string0}": "assegnato a {string0}",
+ "Assignment": "Incarico",
+ "Consume product on chore execution": "Consumare il prodotto per l'esecuzione delle faccende domestiche",
+ "Are you sure to delete user field \"{string0}\"?": "Sei sicuro di eliminare il campo utente \"{string0}\"?",
+ "Userentities": "Entità utente",
+ "Create userentity": "Crea entità utente",
+ "Show in sidebar menu": "Mostra nel menu della barra laterale",
+ "Edit userentity": "Modifica entità utente",
+ "Edit {string0}": "Modifica {string0}",
+ "Create {string0}": "Crea {string0}",
+ "Are you sure to delete this userobject?": "Sei sicuro di eliminare questo oggetto utente?",
+ "Icon CSS class": "Icona classe CSS",
+ "For example": "Per esempio",
+ "Configure fields": "Configura i campi",
+ "Quantity unit plural form testing": "Analisi della forma plurale dell'unità quantitativa",
+ "Result": "Risultato",
+ "Test plural forms": "Prova forme plurali",
+ "Scan a barcode": "Scansiona un codice a barre",
+ "Error while initializing the barcode scanning library": "Errore durante l'inizializzazione della libreria di scansione dei codici a barre",
+ "The resulting price of this ingredient will be multiplied by this factor": "Il prezzo risultante di questo ingrediente verrà moltiplicato per questo fattore",
+ "Price factor": "Fattore prezzo",
+ "Do you find grocy useful?": "Trovi utile grocy?",
+ "Say thanks": "Ringrazia",
+ "Search for recipes containing this product": "Cerca ricette contenenti questo prodotto",
+ "Add to shopping list": "Aggiungi alla lista della spesa",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Aggiunti {string1} di {string2} alla lista della spesa \"{string3}\"",
+ "Output": "Uscita",
+ "Energy (kcal)": "Energia (kcal)",
+ "Per stock quantity unit": "Unità quantitativa per dispensa",
+ "Barcode scanner testing": "Test dello scanner di codici a barre",
+ "Expected barcode": "Atteso Codice a barre",
+ "Scan field": "Campo di scansione",
+ "Scanned barcodes": "Codici a barre scansionati",
+ "Hit": "Scansionato",
+ "Miss": "Non scansionato",
+ "Display recipe": "Mostra la ricetta",
+ "Accumulate sub products min. stock amount": "Quantità in dispensa minima di sottoprodotti accumulati",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Se abilitato,. la quantità min. di sottoprodotti sarà accumulata in questo prodotto, il che significa che il sottoprodotto non sarà mai \"mancante\", solo questo prodotto",
+ "Are you sure to remove this conversion?": "Sei sicuro di rimuovere questa conversione?",
+ "Unit price": "Prezzo unitario",
+ "Total price": "Prezzo totale",
+ "in {string0} and based on the purchase quantity unit": "in {string0}e basato sull'unità quantitativa di acquisto",
+ "Unlimited": "Illimitato",
+ "Clear": "Liberato",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Rimuovere la ricetta inclusa \"{string0}\"?",
+ "Period interval": "Intervallo di tempo",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Questo significa che la prossima esecuzione di questa faccenda dovrebbe essere programmata solo ogni {string0} giorni",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Questo significa che la prossima esecuzione di questa faccenda dovrebbe essere programmata solo ogni {string0} settimane",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Questo significa che la prossima esecuzione di questa faccenda dovrebbe essere programmata solo ogni {string0} mesi",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Questo significa che la prossima esecuzione di questa faccenda è prevista 1 anno dopo l'ultima esecuzione",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Questo significa che la prossima esecuzione di questa faccenda dovrebbe essere programmata solo ogni {string0} anni",
+ "Transfer": "Trasferire",
+ "From location": "Dalla posizione",
+ "To location": "Alla posizione",
+ "There are no units available at this location": "Non ci sono unità disponibili in questa posizione",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "Quantità: {string1}; Scade il {string2}; Acquistato il {string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Trasferiti {string1} di {string2} da {string3} a {string4}",
+ "Stock entries": "Voci di dispensa",
+ "Best before date": "Data di scadenza",
+ "Purchased date": "Data di acquisto",
+ "Consume all {string0} for this stock entry": "Consuma tutte le {string0} per questa voce di dispensa",
+ "The amount cannot be lower than {string1}": "La quantità non può essere inferiore a {string1}",
+ "Stock entry successfully updated": "Voce di dispensa aggiornata correttamente",
+ "Edit stock entry": "Modifica voce di dispensa",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "L'accesso alla videocamera è possibile solo se supportato e consentito dal browser e quando grocy è connesso tramite una connessione sicura (https://)",
+ "Keep screen on": "Mantieni lo schermo acceso",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Mantieni lo schermo acceso mentre visualizzi una \"scheda a schermo intero\"",
+ "A purchased date is required": "È richiesta la data di acquisto",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "Quando è selezionato un prodotto, un'unità (per porzione in unità di quantità in dispensa) sarà aggiunta alla dispensa quando si consuma questa ricetta",
+ "Produces product": "Produce prodotto",
+ "This booking cannot be undone": "Questa prenotazione non può essere annullata",
+ "Booking does not exist or was already undone": "La prenotazione non esiste o è stata già annullata",
+ "Are you sure to delete API key \"{string0}\"?": "Eliminare la chiave API \"{string0}\"?",
+ "Add note": "Aggiungi nota",
+ "Add note on {string0}": "Aggiungi nota a {string0}",
+ "per day": "al giorno",
+ "Only undone items": "Solo oggetti annullati",
+ "Add product": "Aggiungi prodotto",
+ "Add product on {string0}": "Aggiungi prodotto a {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Consuma tutti gli ingredienti necessari per ricette o prodotti di questa settimana",
+ "Meal plan recipe": "Ricetta del Piano dei pasti",
+ "Meal plan note": "Nota del Piano dei pasti",
+ "Meal plan product": "Prodotto del Piano dei pasti",
+ "Scan mode": "Modalità di scansione",
+ "on": "accesa",
+ "off": "spenta",
+ "Scan mode is on but not all required fields could be populated automatically": "La modalità di scansione è attiva ma non è possibile compilare automaticamente tutti i campi richiesti",
+ "Is freezer": "È congelato",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Quando si spostano i prodotti da/verso un congelatore, la data di scadenza dei prodotti viene regolata automaticamente in base alle impostazioni del prodotto",
+ "This cannot be the same as the \"From\" location": "Non può essere uguale alla posizione \"Da\"",
+ "Thawed": "Scongelato",
+ "Frozen": "Congelato",
+ "Are you sure to delete userentity \"{string0}\"?": "Sei sicuro di voler eliminare l'entità utente \"{string0}\"?",
+ "Shopping list settings": "Impostazioni Lista della Spesa",
+ "Show a month-view calendar": "Mostra un calendario con vista mensile",
+ "Edit note on {string0}": "Modifica nota a {string0}",
+ "Edit product on {string0}": "Modifica prodotto a {string0}",
+ "Edit recipe on {string0}": "Modifica ricetta a {string0}",
+ "Desired servings": "Porzioni desiderate",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "Impostazioni Ricette",
+ "Recipe card": "Scheda ricetta",
+ "Group ingredients by their product group": "Raggruppa gli ingredienti per il loro gruppo di prodotti",
+ "Unknown store": "Negozio sconosciuto",
+ "Store": "Negozio",
+ "Transaction successfully undone": "Transazione annullata correttamente",
+ "Default store": "Negozio predefinito",
+ "Consume this stock entry": "Consuma questa voce di dispensa",
+ "Mark this stock entry as open": "Segna questa voce di dispensa come aperta",
+ "Mark this item as done": "Segna questo elemento come fatto",
+ "Edit this item": "Modifica questo elemento",
+ "Delete this item": "Elimina questo elemento",
+ "Show an icon if the product is already on the shopping list": "Mostra un'icona se il prodotto è già nella lista della spesa",
+ "Calories": "Calorie",
+ "means {string1} per {string2}": "si intende {string1} fino a {string2}",
+ "Create inverse QU conversion": "Crea conversione inversa di Unità di Quantità",
+ "Create recipe": "Crea una ricetta",
+ "Save & continue to add ingredients and included recipes": "Salva e continua ad aggiungere ingredienti e ricette incluse",
+ "Save & continue": "Salva e continua",
+ "Save & return to recipes": "Salva e torna alle ricette",
+ "Stock value": "Valore della dispensa",
+ "Average price": "Prezzo medio",
+ "Active": "Attivo",
+ "Barcodes": "Codici a Barre",
+ "Barcode": "Codice a Barre",
+ "Create Barcode": "Crea Codice a Barre",
+ "Barcode for product": "Codice a Barre per il prodotto",
+ "Edit Barcode": "Modifica Codice a Barre",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Insufficiente in dispensa (non incluso nei costi), ingrediente mancante {string0}",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "In base ai prezzi della regola di consumo predefinita che è \"Prima quello aperto, poi prima quello in scadenza, poi il primo entrato è il primo uscito\"",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Non abbastanza in dispensa (non incluso nei costi), {string1} mancante, {string2} già sulla lista della spesa",
+ "Quantity unit stock cannot be changed after first purchase": "L'unità di quantità in dispensa non può essere modificata dopo il primo acquisto",
+ "Clear filter": "Pulisci filtro",
+ "Permissions for user {string0}": "Autorizzazioni per l'utente {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "Sei sicuro di voler rimuovere le autorizzazioni complete per te stesso?",
+ "Permissions saved": "Autorizzazioni salvate",
+ "You are not allowed to view this page": "Non sei autorizzato a visualizzare questa pagina",
+ "Page not found": "Pagina non trovata",
+ "Unauthorized": "Non autorizzato",
+ "Error source": "Fonte di errore",
+ "Error message": "Messaggio di errore",
+ "Stack trace": "Traccia dello stack",
+ "Easy error info copy & paste (for reporting)": "Facile copia & incolla delle informazioni sugli errori (per la segnalazione)",
+ "This page does not exist": "Questa pagina non esiste",
+ "You will be redirected to the default page in {string0} seconds": "Verrai reindirizzato alla pagina predefinita in {string0} secondi",
+ "Server error": "Errore del server",
+ "A server error occured while processing your request": "Si è verificato un errore del server durante l'elaborazione della tua richiesta",
+ "If you think this is a bug, please report it": "Se pensi che questo sia un bug, per favore segnalalo",
+ "Language": "Lingua",
+ "User settings": "Impostazioni utente",
+ "Default": "Predefinito",
+ "Stock journal summary": "Riepilogo del diario della dispensa",
+ "Journal summary": "Riepilogo del diario",
+ "Journal summary for this product": "Riepilogo del diario per questo prodotto",
+ "Consume exact amount": "Consuma la quantità esatta",
+ "Value": "Valore",
+ "{string0} total value": "{string0} valore totale",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "Mostra la data di acquisto sulla pagina acquisti ed inventario (altrimenti la data di acquisto predefinita è quella odierna)",
+ "Common": "Usuale",
+ "Decimal places allowed for amounts": "Posizioni decimali consentite per gli importi",
+ "Decimal places allowed for prices": "Posizioni decimali consentite per i prezzi",
+ "Stock entries for this product": "Voci in dispensa per questo prodotto",
+ "Edit shopping list": "Modifica la lista della spesa",
+ "Save & continue to add quantity unit conversions & barcodes": "Salva e continua ad aggiungere conversioni di unità di quantità e codici a barre",
+ "Save & return to products": "Salva e torna ai prodotti",
+ "Save & continue to add conversions": "Salva e continua ad aggiungere conversioni",
+ "Save & return to quantity units": "Salva e torna alle unità di quantità",
+ "price": "prezzo",
+ "New stock amount": "Nuova quantità in dispensa",
+ "Price per stock unit": "Prezzo per unità in dispensa",
+ "Table options": "Opzioni della tabella",
+ "This product is currently on a shopping list": "Questo prodotto è già in una lista della spesa",
+ "Undo transaction": "Annulla transizione",
+ "Transaction type": "Tipo di transizione",
+ "Transaction time": "Tempo transizione",
+ "Chore journal": "Diario delle Faccende",
+ "Track chore execution": "Monitora l'esecuzione delle faccende",
+ "Mark task as completed": "Segna l'attività come completata",
+ "Track charge cycle": "Monitora il ciclo di ricarica",
+ "Battery journal": "Diario delle Batterie",
+ "This product has a picture": "Questo prodotto ha una immagine",
+ "Consume this stock entry as spoiled": "Consuma questa voce in dispensa come scaduta",
+ "Configure user permissions": "Configura i permessi dell'utente",
+ "Show a QR-Code for this API key": "Mostra un codice-QR per questa chiave API",
+ "This is the default quantity unit used when adding this product to the shopping list": "Questa è l'unità di quantità predefinita utilizzata quando si aggiunge questo prodotto alla lista della spesa",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "Mostra un avviso quando la data di scadenza del prodotto acquistato è precedente alla successiva data di scadenza in dispensa",
+ "This is due earlier than already in-stock items": "Questo è scaduto prima degli articoli già in dispensa",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "Quantità di consumo rapida",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "Questa quantità è utilizzata per i \"pulsanti di consumo rapido/apertura\" nella pagina di panoramica della dispensa (correlato alla unità quantitativa della dispensa)",
+ "Copy": "Copia",
+ "Are you sure to remove this barcode?": "Sei sicuro di rimuovere questo codice a barre?",
+ "Due date type": "Tipo di data di scadenza",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "In base al tipo selezionato, l'evidenziazione nella pagina di panoramica della dispensa sarà diversa",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "Significa che il prodotto è probabilmente ancora sicuro per essere consumato dopo che è stata raggiunta la sua data di scadenza",
+ "Expiration date": "Data di scadenza",
+ "Means that the product is not safe to be consumed after its due date is reached": "Significa che il prodotto non è sicuro da consumare una volta raggiunta la data di scadenza",
+ "For purchases this amount of days will be added to today for the due date suggestion": "Per gli acquisti, questo numero di giorni verrà aggiunto a oggi per il suggerimento della data di scadenza",
+ "-1 means that this product will be never overdue": "-1 significa che questo prodotto non sarà mai scaduto",
+ "Default due days": "Giorni di scadenza predefiniti",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "Quando questo prodotto è stato contrassegnato come aperto, la data di scadenza verrà sostituita da oggi + questo numero di giorni (un valore di 0 lo disabilita)",
+ "Default due days after opened": "Giorni di scadenza predefiniti dopo l'apertura",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "Quando si sposta questo prodotto in un luogo di congelamento (quindi quando lo si congela), la data di scadenza verrà sostituita da oggi + questo numero di giorni",
+ "Default due days after freezing": "Giorni di scadenza predefiniti dopo il congelamento",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "Spostando questo prodotto da un luogo di congelamento (quindi quando lo scongeli), la data di scadenza verrà sostituita con oggi + questo numero di giorni",
+ "Default due days after thawing": "Giorni di scadenza predefiniti dopo lo scongelamento",
+ "Next due date": "Prossima data di scadenza",
+ "{count} product is due | {count} products are due": "{count} prodotto è scaduto | {count} prodotti sono scaduti",
+ "Due date": "Data di scadenza",
+ "Never overdue": "Non scade mai",
+ "{count} product is expired | {count} products are expired": "{count} prodotto è scaduto | {count} prodotti sono scaduti",
+ "Expired": "Scaduto",
+ "Due soon days": "Scade tra pochi giorni",
+ "Add overdue/expired products": "Aggiungi prodotti scaduti",
+ "Products with tare weight enabled are currently not supported for transfer": "I prodotti con la tara abilitata non sono attualmente supportati per il trasferimento",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "Questo non può essere inferiore a {string1} o uguale a {string2} e deve essere un numero valido con al massimo {string3} cifre decimali",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "Questo deve essere tra {string1} e {string2}, non può essere uguale a {string3} e deve essere un numero valido con al massimo {string4} cifre decimali",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "Questo non può essere inferiore a {string1} e deve essere un numero valido con al massimo {string2} cifre decimali",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "Questo deve essere tra {string1} e {string2} e deve essere un numero valido con al massimo {string3} cifre decimali",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "Effettua automaticamente la prenotazione utilizzando l'ultimo prezzo e l'importo dell'articolo della lista della spesa, se il prodotto ha impostato \"Giorni di scadenza predefiniti\"",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "Quando si spostano prodotti da/a un luogo di congelamento, la data di scadenza dei prodotti viene regolata automaticamente in base alle impostazioni del prodotto",
+ "This is the internal field name, e. g. for the API": "Questo è il campo del nome interno, ad esempio per l'API",
+ "This is used to display the field on the frontend": "Questo è utilizzato per visualizzare il campo sul frontend",
+ "Multiple Userfields will be ordered by that number on the input form": "I campi utente multipli saranno ordinati in base a quel numero nel modulo di input",
+ "Sort number": "Ordinamento numerico",
+ "Download file": "Scarica il file",
+ "Use the products \"Quick consume amount\"": "Utilizza i prodotti \"Quantità di rapido consumo\"",
+ "Disabled": "Disabilitato",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "Ciò rimuove anche qualsiasi quantità in dispensa, nel diario e in tutti gli altri riferimenti di questo prodotto: considera piuttosto di disabilitarlo, se vuoi mantenerlo e soltanto nascondere il prodotto.",
+ "Show disabled": "Mostra disabilitato",
+ "Never show on stock overview": "Non mostrare mai nel riepilogo della dispensa",
+ "None": "Nessuno",
+ "Group by": "Raggruppato per",
+ "Ingredient group": "Gruppo ingredienti",
+ "Reset": "Ripristinare",
+ "Are you sure to reset the table options?": "Sei sicuro di ripristinare le opzioni della tabella?",
+ "Hide/view columns": "Mostra/nascondi colonne",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "Di seguito è possibile utilizzare una quantità/unità diversa mentre per l'esecuzione del controllo della dispensa è sufficiente quando qualsiasi quantità del prodotto è in dispensa",
+ "Last price (Unit)": "Ultimo prezzo (Unità)",
+ "Last price (Total)": "Ultimo prezzo (Totale)",
+ "Show header": "Mostra intestazione",
+ "Group by product group": "Raggruppa per gruppo di prodotti",
+ "Table": "Tabella",
+ "Layout type": "Tipo di layout",
+ "Merge this product with another one": "Unisci questo prodotto con un altro",
+ "Merge products": "Unisci i prodotti",
+ "Product to keep": "Prodotto da conservare",
+ "Product to remove": "Prodotto da rimuovere",
+ "Error while merging products": "Errore durante l'unione dei prodotti",
+ "After merging, this product will be kept": "Dopo l'unione, questo prodotto verrà mantenuto",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "Dopo l'unione, tutte le occorrenze di questo prodotto verranno sostituite da \"Prodotto da conservare\" (significa che questo prodotto non esisterà più)",
+ "Merge": "Unisci",
+ "Title": "Titolo",
+ "Link": "Link",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "La pagina del riepilogo della dispensa elenca tutti i prodotti che sono attualmente in dispensa o al di sotto della loro minima quantità di scorte: abilita questa opzione per nascondere sempre questo prodotto da lì.",
+ "Print options": "Opzioni di stampa",
+ "A product or a note is required": "È richiesto un prodotto o una nota",
+ "no-assignment": "nessun-incarico",
+ "who-least-did-first": "gli-ultimi-saranno-i-primi",
+ "random": "casuale",
+ "in-alphabetical-order": "in-ordine-alfabetico",
+ "timeago_locale": "it",
+ "timeago_nan": "NaN anni",
+ "moment_locale": "it",
+ "datatables_localization": "{\"sProcessing\": \"Traitement en cours...\",\"sSearch\": \"Rechercher :\",\"sLengthMenu\": \"Afficher _MENU_ éléments\",\"sInfo\": \"Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments\",\"sInfoEmpty\": \"Affichage de l'élément 0 à 0 sur 0 élément\",\"sInfoFiltered\": \"(filtré de _MAX_ éléments au total)\",\"sInfoPostFix\": \"\",\"sLoadingRecords\": \"Chargement en cours...\",\"sZeroRecords\": \"Aucun élément à afficher\",\"sEmptyTable\": \"Aucune donnée disponible dans le tableau\",\"oPaginate\": {\"sFirst\": \"Premier\",\"sPrevious\": \"Précédent\",\"sNext\": \"Suivant\",\"sLast\": \"Dernier\"},\"oAria\": {\"sSortAscending\": \": activer pour trier la colonne par ordre croissant\",\"sSortDescending\": \": activer pour trier la colonne par ordre décroissant\"},\"select\": {\"rows\": {_: \"{string0} lignes séléctionnées\",0: \"Aucune ligne séléctionnée\",1: \"1 ligne séléctionnée\"} }}",
+ "summernote_locale": "it-IT",
+ "fullcalendar_locale": "it",
+ "bootstrap-select_locale": "it_IT",
+ "purchase": "comprare",
+ "transfer_from": "trasferito_da",
+ "transfer_to": "trasferito_a",
+ "consume": "consumare",
+ "inventory-correction": "rettifica-inventario",
+ "product-opened": "prodotto-aperto",
+ "stock-edit-old": "modifica-dispensa-vecchio",
+ "stock-edit-new": "modifica-dispensa-nuovo",
+ "self-production": "auto-produzione",
+ "manually": "manualmente",
+ "dynamic-regular": "dinamico-periodico",
+ "daily": "giornalmente",
+ "weekly": "settimanalmente",
+ "monthly": "mensilmente",
+ "yearly": "annualmente",
+ "text-single-line": "testo singola riga",
+ "text-multi-line": "testo multi riga",
+ "number-integral": "numero intero",
+ "number-decimal": "numero decimale",
+ "date": "data",
+ "datetime": "ora",
+ "checkbox": "casella di controllo",
+ "preset-list": "lista predefinita",
+ "preset-checklist": "lista di controllo predefinita",
+ "link": "collegamento",
+ "link-with-title": "collegamento con titolo",
+ "file": "file",
+ "image": "immagine",
+ "ADMIN": "AMMINISTRATORE",
+ "USERS_CREATE": "UTENTI_CREARE",
+ "USERS_EDIT": "UTENTI_MODIFICARE",
+ "USERS_READ": "UTENTI_LEGGERE",
+ "USERS_EDIT_SELF": "UTENTI_MODIFICARE_SE_STESSO",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "BATTERIE_ANNULLARE_CICLO_DI_CARICA",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "BATTERIE_TRACCIARE_CICLO_DI_CARICA",
+ "CHORE_TRACK_EXECUTION": "FACCENDA_TRACCIARE_SVOLGIMENTO",
+ "CHORE_UNDO_EXECUTION": "FACCENDA_ANNULLARE_SVOLGIMENTO",
+ "MASTER_DATA_EDIT": "DATI_PRINCIPALI_MODIFICARE",
+ "TASKS_UNDO_EXECUTION": "COMPITI_ANNULLARE_SVOLGIMENTO",
+ "TASKS_MARK_COMPLETED": "COMPITI_SEGNARE_COMPLETATO",
+ "STOCK_EDIT": "DISPENSA_MODIFICARE",
+ "STOCK_TRANSFER": "DISPENSA_TRASFERIRE",
+ "STOCK_INVENTORY": "DISPENSA_INVENTARIO",
+ "STOCK_CONSUME": "DISPENSA_CONSUMARE",
+ "STOCK_OPEN": "DISPENSA_APRIRE",
+ "STOCK_PURCHASE": "DISPENSA_ACQUISTARE",
+ "SHOPPINGLIST_ITEMS_ADD": "LISTA_DELLA_SPESA_OGGETTI_AGGIUNGERE",
+ "SHOPPINGLIST_ITEMS_DELETE": "LISTA_DELLA_SPESA_OGGETTI_CANCELLARE",
+ "USERS": "UTENTI",
+ "STOCK": "DISPENSA",
+ "SHOPPINGLIST": "LISTA_DELLA_SPESA",
+ "CHORES": "FACCENDE",
+ "BATTERIES": "BATTERIE",
+ "TASKS": "COMPITI",
+ "RECIPES": "RICETTE",
+ "EQUIPMENT": "ATTREZZATURA",
+ "CALENDAR": "CALENDARIO",
+ "RECIPES_MEALPLAN": "RICETTE_PIANO_DEI_PASTI",
+ "cs": "Ceco",
+ "da": "Danese",
+ "de": "Tedesco",
+ "el_GR": "Greco",
+ "en": "Inglese",
+ "en_GB": "Inglese (Gran Bretagna)",
+ "es": "Spagnolo",
+ "fr": "Francese",
+ "hu": "Ungherese",
+ "it": "Italiano",
+ "ja": "Giapponese",
+ "ko_KR": "Coreano",
+ "nl": "Olandese",
+ "no": "Norvegese",
+ "pl": "Polacco",
+ "pt_BR": "Portoghese (Brasile)",
+ "pt_PT": "Portoghese (Portogallo)",
+ "ru": "Russo",
+ "sk_SK": "Slovacco",
+ "sv_SE": "Svedese",
+ "tr": "Turco",
+ "zh_TW": "Cinese (Taiwan)",
+ "zh_CN": "Cinese (Cina)",
+ "he_IL": "Ebraico (Israele)",
+ "ta": "Tamil",
+ "fi": "Finlandese",
+ "Cookies": "Biscotti",
+ "Chocolate": "Cioccolato",
+ "Pantry": "Dispensa",
+ "Candy cupboard": "Credenza delle caramelle",
+ "Tinned food cupboard": "Credenza del cibo in scatola",
+ "Fridge": "Frigorifero",
+ "Piece | Pieces": "Pezzo | Pezzi",
+ "Pack | Packs": "Pacco | Pacchi",
+ "Glass | Glasses": "Bicchiere | Bicchieri",
+ "Tin | Tins": "Lattina | Lattine",
+ "Can | Cans": "Barattolo | Barattoli",
+ "Bunch | Bunches": "Grappolo | Grappoli",
+ "Gummy bears": "Orsetti gommosi",
+ "Crisps": "Patatine",
+ "Eggs": "Uova",
+ "Noodles": "Tagliatelle",
+ "Pickles": "Sottaceti",
+ "Gulash soup": "Zuppa di Gulash",
+ "Yogurt": "Yogurt",
+ "Cheese": "Formaggio",
+ "Cold cuts": "Salumi",
+ "Paprika": "Paprica",
+ "Cucumber": "Cetriolo",
+ "Radish": "Ravanello",
+ "Tomato": "Pomodoro",
+ "Changed towels in the bathroom": "Cambiati asciugamani in bagno",
+ "Cleaned the kitchen floor": "Pulito il pavimento della cucina",
+ "Warranty ends": "Scadenza dalla garanzia",
+ "TV remote control": "Telecomando TV",
+ "Alarm clock": "Sveglia",
+ "Heat remote control": "Termostato",
+ "Lawn mowed in the garden": "Prato falciato nel giardino",
+ "Some good snacks": "Alcuni buoni spuntini",
+ "Pizza dough": "Impasto per pizza",
+ "Sieved tomatoes": "Pomodori setacciati",
+ "Salami": "Salame",
+ "Toast": "Toast",
+ "Minced meat": "Carne macinata",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti alla bolognese",
+ "Sandwiches": "Panini",
+ "English": "Inglese",
+ "German": "Tedesco",
+ "Italian": "Italiano",
+ "This is the note content of the recipe ingredient": "Questo è il contenuto della nota dell'ingrediente della ricetta",
+ "Demo User": "Utente Demo",
+ "Gram | Grams": "Grammo | Grammi",
+ "Flour": "Farina",
+ "Pancakes": "Frittelle",
+ "Sugar": "Zucchero",
+ "Home": "Casa",
+ "Life": "Vita",
+ "Projects": "Progetti",
+ "Repair the garage door": "Riparare la porta del garage",
+ "Fork and improve grocy": "Modifica e migliora grocy",
+ "Find a solution for what to do when I forget the door keys": "Trova una soluzione per cosa fare quando dimentico le chiavi della porta",
+ "Sweets": "Dolciumi",
+ "Bakery products": "Prodotti da forno",
+ "Tinned food": "Cibo in scatola",
+ "Butchery products": "Prodotti di macelleria",
+ "Vegetables/Fruits": "Verdure/Frutti",
+ "Refrigerated products": "Prodotti refrigerati",
+ "Coffee machine": "Macchina per il caffè",
+ "Dishwasher": "Lavastoviglie",
+ "Liter": "Litro",
+ "Liters": "Litri",
+ "Bottle": "Bottiglia",
+ "Bottles": "Bottiglie",
+ "Milk": "Latte",
+ "Chocolate sauce": "Salsa al cioccolato",
+ "Milliliters": "Millilitri",
+ "Milliliter": "Millilitro",
+ "Bottom": "Parte inferiore",
+ "Topping": "Guarnizione",
+ "French": "Francese",
+ "Turkish": "Turco",
+ "Spanish": "Spagnolo",
+ "Russian": "Russo",
+ "The thing which happens on the 5th of every month": "Quello che accade il 5 di ogni mese",
+ "The thing which happens daily": "Quello che accade ogni giorno",
+ "The thing which happens on Mondays and Wednesdays": "Quello che accade il lunedì e il mercoledì",
+ "Swedish": "Svedese",
+ "Polish": "Polacco",
+ "Milk Chocolate": "Cioccolato al latte",
+ "Dark Chocolate": "Cioccolato fondente",
+ "Slice | Slices": "Fetta | Fette",
+ "Example userentity": "Esempio di entità utente",
+ "This is an example user entity...": "Questo è un esempio di entità utente",
+ "Custom field": "Campo personalizzato",
+ "Example field value...": "Esempio di valore del campo ...",
+ "Waffle rolls": "Rotoli di cialde",
+ "Danish": "Danese",
+ "Dutch": "Olandese",
+ "Norwegian": "Norvegese",
+ "Demo": "Dimostrazione",
+ "Stable version": "Versione stabile",
+ "Preview version": "Versione di anteprima",
+ "current release": "versione attuale",
+ "not yet released": "non ancora pubblicata",
+ "Portuguese (Brazil)": "Portoghese (Brasile)",
+ "This is a note": "Questa è una nota",
+ "Freezer": "Congelatore",
+ "Hungarian": "Ungherese",
+ "Slovak": "Slovacco",
+ "Czech": "Ceco",
+ "Portuguese (Portugal)": "Portoghese (Portogallo)",
+ "DemoSupermarket1": "DemoSupermercato1",
+ "DemoSupermarket2": "DemoSupermercato2",
+ "Japanese": "Giapponese",
+ "Chinese (Taiwan)": "Cinese (Taiwan)",
+ "Greek": "Greco",
+ "Korean": "Coreano",
+ "Chinese (China)": "Cinese (Cina)",
+ "Hebrew (Israel)": "Ebraico (Israele)",
+ "Tamil": "Tamil",
+ "Finnish": "Finlandese",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/ja.json b/locale/ja.json
new file mode 100644
index 00000000..b3e1677f
--- /dev/null
+++ b/locale/ja.json
@@ -0,0 +1,860 @@
+{
+ "Stock overview": "在庫状況",
+ "{count} product expires | {count} products expiring": "{count} 個が期限切れ",
+ "within the next day | within the next {count} days": "({count} 日以内に)",
+ "{count} product is already expired | {count} products are already expired": "{count} 個がすでに消費期限切れ",
+ "{count} product is overdue | {count} products are overdue": "{count} 個がすでに期限切れ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} 個が設定した最小の在庫未満",
+ "Product": "製品",
+ "{count} Product | {count} Products": "{count} 個",
+ "Amount": "量",
+ "Logout": "ログアウト",
+ "Chores overview": "家事の状況",
+ "Batteries overview": "電池の状況",
+ "Purchase": "購入",
+ "Consume": "消費",
+ "Inventory": "在庫",
+ "Shopping list": "買い物リスト",
+ "Chore tracking": "家事追跡",
+ "Battery tracking": "電池追跡",
+ "Locations": "場所",
+ "Stores": "店舗",
+ "Quantity units": "数量単位",
+ "Chores": "家事",
+ "Batteries": "電池",
+ "Chore": "家事",
+ "Next estimated tracking": "次の予定追跡",
+ "Last tracked": "最終追跡",
+ "Battery": "電池",
+ "Last charged": "最終充電",
+ "Next planned charge cycle": "次の予定される充電サイクル",
+ "Best before": "期限",
+ "OK": "OK",
+ "Product overview": "製品状況",
+ "Stock quantity unit": "在庫の数量単位",
+ "Stock amount": "在庫量",
+ "Last purchased": "最終購入",
+ "Last used": "最終使用",
+ "Spoiled": "廃棄済み",
+ "Barcode lookup is disabled": "バーコード検索が無効",
+ "will be added to the list of barcodes for the selected product on submit": "",
+ "New amount": "新しい量",
+ "Note": "ノート",
+ "Tracked time": "追跡日",
+ "Chore overview": "家事の状況",
+ "Tracked count": "追跡数",
+ "Battery overview": "電池の状況",
+ "Charge cycles count": "充電サイクル数",
+ "Create shopping list item": "買い物リストの項目を作成",
+ "Edit shopping list item": "買い物リストの項目を編集",
+ "Save": "保存",
+ "Add": "追加",
+ "Name": "名前",
+ "Location": "場所",
+ "Min. stock amount": "最小の在庫量",
+ "Description": "説明",
+ "Create product": "製品を作成",
+ "Barcode(s)": "バーコード",
+ "Minimum stock amount": "最小の在庫量",
+ "Default best before days": "デフォルトの期限日",
+ "Default quantity unit purchase": "デフォルトの購入時の数量単位",
+ "Quantity unit stock": "保管の数量単位",
+ "Factor purchase to stock quantity unit": "購入量を在庫単位にする係数",
+ "Create location": "場所を作成",
+ "Create store": "店舗を作成",
+ "Create quantity unit": "数量単位を作成",
+ "Period type": "期限の種類",
+ "Period days": "期限日",
+ "Create chore": "家事を作成",
+ "Used in": "使用場所",
+ "Create battery": "電池を作成",
+ "Edit battery": "電池を編集",
+ "Edit chore": "家事を編集",
+ "Edit quantity unit": "数量単位を編集",
+ "Edit product": "製品を編集",
+ "Edit location": "場所を編集",
+ "Edit store": "店舗を編集",
+ "Record data": "デーダを記録",
+ "Manage master data": "マスターデータを管理",
+ "This will apply to added products": "追加された製品に適用します",
+ "never": "該当なし",
+ "Add products that are below defined min. stock amount": "保管数の下限以下の製品を追加する",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "",
+ "Login": "ログイン",
+ "Username": "ユーザー名",
+ "Password": "パスワード",
+ "Invalid credentials, please try again": "資格情報が無効です。もう一度お試しください",
+ "Are you sure to delete battery \"{string0}\"?": "電池\"{string0}\"を本当に削除しますか?",
+ "Yes": "はい",
+ "No": "いいえ",
+ "Are you sure to delete chore \"{string0}\"?": "家事\"{string0}\"を本当に削除しますか?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" を製品として解決できませんでした、どのように継続しますか?",
+ "Create or assign product": "プロダクトの作成または割り当て",
+ "Cancel": "キャンセル",
+ "Add as new product": "新しい製品として追加",
+ "Add as barcode to existing product": "既存の製品にバーコードとして追加",
+ "Add as new product and prefill barcode": "新しい製品として追加し、バーコードで事前入力する",
+ "Are you sure to delete quantity unit \"{string0}\"?": "数量単位 \"{string0}\" を本当に削除しますか?",
+ "Are you sure to delete product \"{string0}\"?": "製品 \"{string0}\" を本当に削除しますか?",
+ "Are you sure to delete location \"{string0}\"?": "場所 \"{string0}\" を本当に削除しますか?",
+ "Are you sure to delete store \"{string0}\"?": "店舗 \"{string0}\" を本当に削除しますか?",
+ "Manage API keys": "API キーを管理",
+ "REST API & data model documentation": "REST API とデータのモデルについての説明",
+ "API keys": "API キー",
+ "Create new API key": "新しい API キーを作成",
+ "API key": "API キー",
+ "Expires": "期限",
+ "Created": "作成",
+ "This product is not in stock": "この製品は在庫切れです",
+ "This means {string0} will be added to stock": "これは{string0}が在庫に追加されるという意味です",
+ "This means {string0} will be removed from stock": "これは{string0}が在庫から削除されるという意味です",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "",
+ "Removed {string1} of {string2} from stock": "在庫から {string2} の {string1} を削除しました",
+ "About grocy": "grocy について",
+ "Close": "閉じる",
+ "Released on": "リリース日:",
+ "Added {string1} of {string2} to stock": "{string2} の {string1} を在庫に追加しました",
+ "Stock amount of {string1} is now {string2}": "{string1} の在庫数は現在 {string2} です",
+ "Tracked execution of chore {string1} on {string2}": "",
+ "Tracked charge cycle of battery {string1} on {string2}": "",
+ "Consume all {string0} which are currently in stock": "現在在庫にあるすべての {string0} を消費する",
+ "All": "すべて",
+ "Search": "検索",
+ "Not logged in": "ログインしていません",
+ "You have to select a product": "製品を選択していません",
+ "You have to select a chore": "家事を選択していません",
+ "You have to select a battery": "電池を選択していません",
+ "A name is required": "名前が必要です",
+ "A location is required": "場所が必要です",
+ "A quantity unit is required": "数量単位が必要です",
+ "A period type is required": "期限のタイプが必要です",
+ "A best before date is required": "期限が必要です",
+ "Settings": "設定",
+ "This can only be before now": "",
+ "Calendar": "カレンダー",
+ "Recipes": "レシピ",
+ "Edit recipe": "レシピを編集",
+ "Ingredients list": "材料リスト",
+ "Add recipe ingredient": "レシピの材料を追加",
+ "Edit recipe ingredient": "レシピの材料を編集",
+ "Are you sure to delete recipe \"{string0}\"?": "レシピ \"{string0}\" を本当に削除しますか?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "レシピの材料 \"{string0}\" を本当に削除しますか?",
+ "Are you sure to empty shopping list \"{string0}\"?": "買い物リスト \"{string0}\" を本当に空にしますか?",
+ "Clear list": "リストを削除",
+ "Requirements fulfilled": "要件",
+ "Put missing products on shopping list": "不足している製品を買い物リストに入れる",
+ "Enough in stock": "在庫あり",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "在庫不足。{count} 個の材料がありませんが買い物リストに存在します",
+ "Expand to fullscreen": "フルスクリーンに拡大",
+ "Ingredients": "材料",
+ "Preparation": "準備",
+ "Recipe": "レシピ",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "在庫不足。{string1} 個の材料がありませんが、{string2} 個がすでに買い物リストに存在します",
+ "Show notes": "ノートを表示",
+ "Put missing amount on shopping list": "不足している量を買い物リストに入れる",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "レシピ \"{string0}\" の不足しているすべての材料を買い物リストに追加しますか?",
+ "Added for recipe {string0}": "レシピ {string0} に追加しました",
+ "Manage users": "ユーザーを管理",
+ "User": "ユーザー",
+ "Users": "ユーザー",
+ "Are you sure to delete user \"{string0}\"?": "ユーザー \"{string0}\" を本当に削除しますか?",
+ "Create user": "ユーザーを作成",
+ "Edit user": "ユーザーを編集",
+ "First name": "名前",
+ "Last name": "苗字",
+ "A username is required": "ユーザー名が必要です",
+ "Confirm password": "パスワードの確認",
+ "Passwords do not match": "パスワードが一致していません",
+ "Change password": "パスワードの変更",
+ "Done by": "実行者",
+ "Last done by": "最終実行者",
+ "Unknown": "不明",
+ "Chores journal": "家事記録",
+ "0 means suggestions for the next charge cycle are disabled": "0にすると次の充電サイクルの提案が無効になります",
+ "Charge cycle interval (days)": "充電サイクル間隔(日)",
+ "Last price": "最終価格",
+ "Price history": "価格変動",
+ "No price history available": "価格履歴を利用できません",
+ "Price": "価格",
+ "Unit": "単位",
+ "{count} Unit | {count} Units": "{count} 単位",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} 個の家事が予定されています",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} 個の家事が期限切れ",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} 個の電池の充電が予定されています",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} 個の交換が期限切れ",
+ "in singular form": "単数形",
+ "Quantity unit": "数量単位",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "在庫からレシピ \"{string0}\" のすべての材料を削除しました",
+ "Consume all ingredients needed by this recipe": "このレシピに必要なすべての材料を消費",
+ "Click to show technical details": "クリックして技術的な詳細情報を表示",
+ "Error while saving, probably this item already exists": "保存中にエラーが発生しました。おそらくアイテムがすでに存在します",
+ "Error details": "エラー詳細",
+ "Tasks": "タスク",
+ "Show done tasks": "完了済みのタスクを表示",
+ "Task": "タスク",
+ "Due": "期限",
+ "Assigned to": "次の人に割り当てる",
+ "Mark task \"{string0}\" as completed": "タスク \"{string0}\" を完了済みとしてマーク",
+ "Uncategorized": "未カテゴライズ",
+ "Task categories": "タスク カテゴリ",
+ "Create task": "タスクを作成",
+ "A due date is required": "期限の日付が必要です",
+ "Category": "カテゴリ",
+ "Edit task": "タスクを編集",
+ "Are you sure to delete task \"{string0}\"?": "タスク \"{string0}\" を本当に削除しますか?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} 個のタスクが予定されています",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} 個のタスクが期限切れ",
+ "Edit task category": "タスク カテゴリを編集",
+ "Create task category": "タスク カテゴリを作成",
+ "Product groups": "製品グループ",
+ "Ungrouped": "未グループ",
+ "Create product group": "製品グループを作成",
+ "Edit product group": "製品グループを編集",
+ "Product group": "製品グループ",
+ "Are you sure to delete product group \"{string0}\"?": "製品グループ \"{string0}\" を本当に削除しますか?",
+ "Stay logged in permanently": "ログインしたままにする",
+ "When not set, you will get logged out at latest after 30 days": "設定しない場合、30日後にログアウトされます",
+ "Status": "状態",
+ "Below min. stock amount": "最小在庫量以下",
+ "Expiring soon": "まもなく消費期限切れ",
+ "Already expired": "消費期限切れ",
+ "Due soon": "まもなく期限切れ",
+ "Overdue": "期限切れ",
+ "View settings": "表示設定",
+ "Auto reload on external changes": "外部の変更時に自動再読み込み",
+ "Enable night mode": "ナイトモードを有効",
+ "Auto enable in time range": "",
+ "From": "",
+ "in format": "",
+ "To": "",
+ "Time range goes over midnight": "",
+ "Product picture": "製品の写真",
+ "No file selected": "ファイルが選択されていません",
+ "Delete": "削除",
+ "Select file": "ファイル選択",
+ "Image of product {string0}": "製品 {string0} のイメージ",
+ "Deletion not possible": "",
+ "Equipment": "機器",
+ "Instruction manual": "取扱説明書",
+ "The selected equipment has no instruction manual": "選択した機器に取扱説明書はありません",
+ "Notes": "ノート",
+ "Edit equipment": "機器を編集",
+ "Create equipment": "機器を作成",
+ "The current file will be deleted on save": "",
+ "No picture available": "利用できる写真はありません",
+ "Presets for new products": "新しい製品のプリセット",
+ "Included recipes": "含まれているレシピ",
+ "A recipe is required": "レシピが必要です",
+ "Add included recipe": "含まれているレシピを追加",
+ "Edit included recipe": "含まれているレシピ編集",
+ "Group": "グループ",
+ "This will be used as a headline to group ingredients together": "",
+ "Journal": "記録",
+ "Stock journal": "在庫記録",
+ "Undone on": "",
+ "Batteries journal": "電池記録",
+ "Undo charge cycle": "充電サイクルを元に戻す",
+ "Undo chore execution": "家事の実行を元に戻す",
+ "Chore execution successfully undone": "家事の実行を元に戻しました",
+ "Undo": "元に戻す",
+ "Booking successfully undone": "予約を元に戻しました",
+ "Charge cycle successfully undone": "充電サイクルを元に戻しました",
+ "Disable stock fulfillment checking for this ingredient": "この材料の在庫フィルメントを無効にする",
+ "Add all list items to stock": "すべてのリスト項目をストックに追加",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "買い物リストの項目 {string2} の {string1} を追加しています",
+ "Use a specific stock item": "特定の在庫アイテムを使用する",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "{string2} の {string1} を開封済みとしてマーク",
+ "Marked {string1} of {string2} as opened": "{string2} の {string1} を開封済みとしてマークしました",
+ "Mark as opened": "開封済みとしてマーク",
+ "Not opened": "未開封",
+ "Opened": "開封済み",
+ "{string0} opened": "{string0} 個が開封済み",
+ "Product due": "製品の期限",
+ "Task due": "タスクの期限",
+ "Chore due": "家事の期限",
+ "Battery charge cycle due": "電池の充電サイクル期限",
+ "Show clock in header": "ヘッダーに時計を表示",
+ "Stock settings": "在庫設定",
+ "Shopping list to stock workflow": "",
+ "Skip": "スキップ",
+ "Servings": "提供数",
+ "Costs": "コスト",
+ "Based on the prices of the last purchase per product": "1 商品あたりの最終購入価格に基づく",
+ "The ingredients listed here result in this amount of servings": "",
+ "Do not check against the shopping list when adding missing items to it": "不足しているアイテムを買い物リストに追加するときに、買い物リストと照会しないでください",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "",
+ "Picture": "写真",
+ "Uncheck ingredients to not put them on the shopping list": "買い物リストに入れない材料はチェックを外してください",
+ "This is for statistical purposes only": "統計を記録するために使われます",
+ "You have to select a recipe": "レシピを選択していません",
+ "Key type": "キー タイプ",
+ "Share/Integrate calendar (iCal)": "カレンダー (iCal) の共有/統合",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "iCal 形式のカレンダーを共有/統合するには次の (公開) URL を使用してください",
+ "Allow partial units in stock": "部分的な在庫消費を有効にする",
+ "Enable tare weight handling": "",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "",
+ "Tare weight": "包装重量",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "",
+ "You have to select a location": "場所を選択していません",
+ "You have to select a store": "店舗を選択していません",
+ "List": "リスト",
+ "Gallery": "ギャラリー",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "この電池の記録",
+ "System info": "システム情報",
+ "Changelog": "変更ログ",
+ "will be multiplied by a factor of {string1} to get {string2}": "",
+ "The given date is earlier than today, are you sure?": "",
+ "Product count": "製品数",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "レシピの材料としてこの製品を追加するとききのデフォルトの設定として使用されます",
+ "Add item": "アイテムを追加する",
+ "Selected shopping list": "選択した買い物リスト",
+ "New shopping list": "新しい買い物リスト",
+ "Delete shopping list": "買い物リストを削除",
+ "Chores settings": "家事の設定",
+ "Batteries settings": "電池の設定",
+ "Tasks settings": "タスクの設定",
+ "Create shopping list": "買い物リストを作成",
+ "Are you sure to delete shopping list \"{string0}\"?": "買い物リスト \"{string0}\" を本当に削除しますか?",
+ "Average shelf life": "棚保存の平均時間",
+ "Spoil rate": "廃棄率",
+ "Show more": "さらに表示",
+ "Show less": "詳細を隠す",
+ "The amount must be between {string1} and {string2}": "",
+ "Day of month": "日付",
+ "Monday": "月曜日",
+ "Tuesday": "火曜日",
+ "Wednesday": "水曜日",
+ "Thursday": "木曜日",
+ "Friday": "金曜日",
+ "Saturday": "土曜日",
+ "Sunday": "日曜日",
+ "Configure userfields": "ユーザーフィールドを構成",
+ "Userfields": "ユーザーフィールド",
+ "Entity": "エンティティ",
+ "Caption": "キャプション",
+ "Type": "タイプ",
+ "Create userfield": "ユーザーフィールドを作成",
+ "A entity is required": "エンティティが必要です",
+ "A caption is required": "キャプションが必要です",
+ "A type is required": "タイプが必要です",
+ "Show as column in tables": "カラムをテーブルに表示する",
+ "This is required and can only contain letters and numbers": "半角英数字で入力してください",
+ "Edit userfield": "ユーザーフィールドを編集",
+ "Plural forms": "",
+ "One plural form per line, the current language requires": "",
+ "Plural count": "",
+ "Plural rule": "",
+ "in plural form": "",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "在庫不足。{count} 個の材料がありません",
+ "Not enough in stock, but already on the shopping list": "在庫不足ですが、すでに買い物リストに存在します",
+ "Not enough in stock": "在庫不足",
+ "Expiring soon days": "まもなく期限切れ",
+ "Default location": "デフォルトの場所",
+ "Default amount for purchase": "購入のデフォルトの量",
+ "Default amount for consume": "消費のデフォルトの量",
+ "Variable amount": "可変量",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "",
+ "Track date only": "日付のみ追跡",
+ "When enabled only the day of an execution is tracked, not the time": "この機能を有効にすると、時間ではなく実行日のみが追跡されます",
+ "Consume {string1} of {string2}": "{string2} の {string1} を消費",
+ "Meal plan": "食事プラン",
+ "Add recipe on {string0}": "{string0} のレシピを追加",
+ "{count} serving | {count} servings": "{count} 人分",
+ "Week costs": "週コスト",
+ "Configuration": "構成",
+ "A predefined list of values, one per line": "",
+ "Products": "製品",
+ "Marked task {string0} as completed on {string0}": "",
+ "Booking has subsequent dependent bookings, undo not possible": "",
+ "per serving": "",
+ "Never": "期限なし",
+ "Today": "今日",
+ "Consume {string1} of {string2} as spoiled": "{string2} の {string1} を廃棄",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "",
+ "Undo task": "",
+ "Due date rollover": "期日のロールオーバー",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "",
+ "Location Content Sheet": "保管情報シート",
+ "Print": "印刷",
+ "all locations": "すべての場所",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "この場所",
+ "Consumed amount": "消費量",
+ "Time of printing": "印刷時刻",
+ "Are you sure to delete equipment \"{string0}\"?": "機器 \"{string0}\" を本当に削除しますか?",
+ "Parent product": "親製品",
+ "Not possible because this product is already used as a parent product in another product": "",
+ "Default conversions": "デフォルトの変換",
+ "Factor": "係数",
+ "1 {string0} is the same as...": "",
+ "Create QU conversion": "数量単位の変換を作成",
+ "Default for QU": "数量単位のデフォルト",
+ "Quantity unit from": "",
+ "Quantity unit to": "",
+ "This cannot be equal to {string0}": "{string0} と同じにすることはできません",
+ "This means 1 {string1} is the same as {string2} {string3}": "",
+ "QU conversions": "数量単位の変換",
+ "Product overrides": "製品の上書き",
+ "Override for product": "製品のオーバーライド",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "数量単位の変換を編集",
+ "An assignment type is required": "割り当てタイプが必要です",
+ "Assignment type": "割り当てタイプ",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "",
+ "This means the next execution of this chore is not scheduled": "この家事の次の実行がスケジュールされていないことを意味します",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "",
+ "This means the next execution of this chore will not be assigned to anyone": "この家事の次の実行が誰にも割り当てられないことを意味します",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "この家事の次の実行が最も行わなかった人に割り当てられることを意味します",
+ "This means the next execution of this chore will be assigned randomly": "この家事の次の実行がラムダムに割り当てられることを意味します",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "この家事の次の実行がアルファベット順に割り当てられることを意味します",
+ "Assign to": "次の人に割り当てる",
+ "This assignment type requires that at least one is assigned": "",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count}個の家事が自分に割り当てられています",
+ "Assigned to me": "自分に割り当てる",
+ "assigned to {string0}": "{string0}に割り当てる",
+ "Assignment": "割り当て",
+ "Consume product on chore execution": "家事を実行するときに製品を消費",
+ "Are you sure to delete user field \"{string0}\"?": "ユーザー フィールド \"{string0}\" を本当に削除しますか?",
+ "Userentities": "ユーザーエントリー",
+ "Create userentity": "ユーザーエンティティを作成",
+ "Show in sidebar menu": "サイドバー メニューに表示",
+ "Edit userentity": "ユーザーエンティティを編集",
+ "Edit {string0}": "{string0}を編集",
+ "Create {string0}": "{string0}を作成",
+ "Are you sure to delete this userobject?": "ユーザーオブジェクトを本当に削除しますか?",
+ "Icon CSS class": "Icon CSS class",
+ "For example": "例",
+ "Configure fields": "フィールドを構成",
+ "Quantity unit plural form testing": "",
+ "Result": "結果",
+ "Test plural forms": "",
+ "Scan a barcode": "バーコードをスキャン",
+ "Error while initializing the barcode scanning library": "バーコードのスキャニング ライブラリの初期化中にエラーが発生しました",
+ "The resulting price of this ingredient will be multiplied by this factor": "",
+ "Price factor": "単位系数",
+ "Do you find grocy useful?": "grocy が便利だと思いますか?",
+ "Say thanks": "お礼する",
+ "Search for recipes containing this product": "この製品を含むレシピを検索",
+ "Add to shopping list": "買い物リストに追加",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "",
+ "Output": "出力",
+ "Energy (kcal)": "エネルギー (kcal)",
+ "Per stock quantity unit": "",
+ "Barcode scanner testing": "バーコードスキャナーを試す",
+ "Expected barcode": "期待されるバーコード",
+ "Scan field": "スキャン フィールド",
+ "Scanned barcodes": "スキャンされたバーコード",
+ "Hit": "ヒット",
+ "Miss": "ミス",
+ "Display recipe": "レシピを表示する",
+ "Accumulate sub products min. stock amount": "子製品の在庫量を蓄積する",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "",
+ "Are you sure to remove this conversion?": "この変換を本当に削除しますか?",
+ "Unit price": "単価",
+ "Total price": "合計金額",
+ "in {string0} and based on the purchase quantity unit": "",
+ "Unlimited": "無制限",
+ "Clear": "削除",
+ "Are you sure to remove the included recipe \"{string0}\"?": "含まれているレシピ \"{string0}\" を本当に削除しますか?",
+ "Period interval": "期限の周期",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "",
+ "Transfer": "移動",
+ "From location": "移動元",
+ "To location": "移動先",
+ "There are no units available at this location": "この場所で利用できる単位はありません",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "{string2} の {string1} を {string3} から {string4} に移動しました",
+ "Stock entries": "在庫エントリー",
+ "Best before date": "期限日",
+ "Purchased date": "購入日",
+ "Consume all {string0} for this stock entry": "この在庫エントリーのすべての {string0} を消費する",
+ "The amount cannot be lower than {string1}": "量は {string1} より小さくできません",
+ "Stock entry successfully updated": "在庫エントリーを更新しました",
+ "Edit stock entry": "在庫エントリーを編集",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "",
+ "Keep screen on": "",
+ "Keep screen on while displaying a \"fullscreen-card\"": "",
+ "A purchased date is required": "購入した日付が必要です",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "製造される製品",
+ "This booking cannot be undone": "この予約を元に戻すことができませんでした",
+ "Booking does not exist or was already undone": "予約が既に存在しないか、すでに元に戻せません",
+ "Are you sure to delete API key \"{string0}\"?": "API キー \"{string0}\" を本当に削除しますか?",
+ "Add note": "ノートを追加する",
+ "Add note on {string0}": "ノートを{string0}に追加する",
+ "per day": "(1 日当たり)",
+ "Only undone items": "未完了のアイテムのみ",
+ "Add product": "製品を追加",
+ "Add product on {string0}": "{string0} に製品を追加",
+ "Consume all ingredients needed by this weeks recipes or products": "今週のレシピか製品に必要なすべての材料を消費",
+ "Meal plan recipe": "食事プランのレシピ",
+ "Meal plan note": "食事プランのノート",
+ "Meal plan product": "食事プランの製品",
+ "Scan mode": "スキャン モード",
+ "on": "on",
+ "off": "off",
+ "Scan mode is on but not all required fields could be populated automatically": "スキャンモードが有効ですが、すべての必須フィールドを自動的に埋めることができるわけではありません",
+ "Is freezer": "冷凍庫",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "冷凍庫の場所との間で製品を移動する場合、製品の期限はの設定に応じて自動的に調整されます",
+ "This cannot be the same as the \"From\" location": "移動元と同じ場所にはできません",
+ "Thawed": "解凍",
+ "Frozen": "冷凍",
+ "Are you sure to delete userentity \"{string0}\"?": "ユーザーエンティティ \"{string0}\" を本当に削除しますか?",
+ "Shopping list settings": "買い物リスト設定",
+ "Show a month-view calendar": "月表示のカレンダーを表示する",
+ "Edit note on {string0}": "{string0} のノートを編集",
+ "Edit product on {string0}": "{string0} の製品を編集",
+ "Edit recipe on {string0}": "{string0} のレシピを編集",
+ "Desired servings": "何人前",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "レシピの設定",
+ "Recipe card": "レシピ カード",
+ "Group ingredients by their product group": "製品グループごとに材料をグループ化",
+ "Unknown store": "不明な店舗",
+ "Store": "店舗",
+ "Transaction successfully undone": "トランザクションを元に戻しました",
+ "Default store": "デフォルトの店舗",
+ "Consume this stock entry": "",
+ "Mark this stock entry as open": "",
+ "Mark this item as done": "",
+ "Edit this item": "項目を編集",
+ "Delete this item": "項目を削除",
+ "Show an icon if the product is already on the shopping list": "",
+ "Calories": "カロリー",
+ "means {string1} per {string2}": "",
+ "Create inverse QU conversion": "",
+ "Create recipe": "レシピ作成",
+ "Save & continue to add ingredients and included recipes": "",
+ "Save & continue": "保存して続ける",
+ "Save & return to recipes": "保存してレシピに戻る",
+ "Stock value": "",
+ "Average price": "平均価格",
+ "Active": "有効",
+ "Barcodes": "バーコード",
+ "Barcode": "バーコード",
+ "Create Barcode": "バーコードを作成",
+ "Barcode for product": "製品のバーコード",
+ "Edit Barcode": "バーコードを編集",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "フィルターをクリア",
+ "Permissions for user {string0}": "",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "",
+ "You are not allowed to view this page": "このページを表示することが出来ません",
+ "Page not found": "ページが見つかりません",
+ "Unauthorized": "",
+ "Error source": "",
+ "Error message": "",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "",
+ "A server error occured while processing your request": "",
+ "If you think this is a bug, please report it": "",
+ "Language": "言語",
+ "User settings": "ユーザー設定",
+ "Default": "デフォルト",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "値",
+ "{string0} total value": "合計金額 {string0}",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "保存して製品に戻る",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "価格",
+ "New stock amount": "新しい在庫量",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "期限日のタイプ",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "消費期限",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "デフォルトの開封後の期限",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "デフォルトの冷凍後の期限",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "次の期日",
+ "{count} product is due | {count} products are due": "",
+ "Due date": "",
+ "Never overdue": "期限なし",
+ "{count} product is expired | {count} products are expired": "",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "リセット",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "最終価格(単位)",
+ "Last price (Total)": "最終価格(合計)",
+ "Show header": "ヘッダーを表示",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "割り当てなし",
+ "who-least-did-first": "誰が最後にやったか",
+ "random": "ランダム",
+ "in-alphabetical-order": "アルファベット順",
+ "timeago_locale": "ja",
+ "timeago_nan": "約 NaN 年",
+ "moment_locale": "ja",
+ "datatables_localization": "{\"sEmptyTable\":\"テーブルにデータがありません\",\"sInfo\":\" _TOTAL_ 件中 _START_ から _END_ まで表示\",\"sInfoEmpty\":\" 0 件中 0 から 0 まで表示\",\"sInfoFiltered\":\"(全 _MAX_ 件より抽出)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"_MENU_ 件表示\",\"sLoadingRecords\":\"読み込み中...\",\"sProcessing\":\"処理中...\",\"sSearch\":\"検索:\",\"sZeroRecords\":\"一致するレコードがありません\",\"oPaginate\":{\"sFirst\":\"先頭\",\"sLast\":\"最終\",\"sNext\":\"次\",\"sPrevious\":\"前\"},\"oAria\":{\"sSortAscending\":\": 列を昇順に並べ替えるにはアクティブにする\",\"sSortDescending\":\": 列を降順に並べ替えるにはアクティブにする\"}}",
+ "summernote_locale": "ja-JP",
+ "fullcalendar_locale": "ja",
+ "bootstrap-select_locale": "ja_JP",
+ "manually": "手動",
+ "dynamic-regular": "ダイナミックレギュラー",
+ "daily": "毎日",
+ "weekly": "毎週",
+ "monthly": "毎月",
+ "yearly": "毎年",
+ "text-single-line": "1行のテキスト",
+ "text-multi-line": "複数行のテキスト",
+ "number-integral": "整数",
+ "number-decimal": "小数",
+ "date": "日付",
+ "datetime": "日時",
+ "checkbox": "チェックボックス",
+ "preset-list": "既定のリスト",
+ "preset-checklist": "既定のチェックリスト",
+ "link": "リンク",
+ "link-with-title": "",
+ "file": "ファイル",
+ "image": "イメージ",
+ "Cookies": "クッキー",
+ "Chocolate": "チョコレート",
+ "Pantry": "パントリー",
+ "Candy cupboard": "お菓子棚",
+ "Tinned food cupboard": "缶詰の保管棚",
+ "Fridge": "冷蔵庫",
+ "Piece | Pieces": "ピース",
+ "Pack | Packs": "パック",
+ "Glass | Glasses": "眼鏡",
+ "Tin | Tins": "小缶",
+ "Can | Cans": "カン",
+ "Bunch | Bunches": "房",
+ "Gummy bears": "グミベア",
+ "Crisps": "チップス",
+ "Eggs": "卵",
+ "Noodles": "麺類",
+ "Pickles": "ピクルス",
+ "Gulash soup": "グヤーシュ",
+ "Yogurt": "ヨーグルト",
+ "Cheese": "チーズ",
+ "Cold cuts": "コールドカット",
+ "Paprika": "パプリカ",
+ "Cucumber": "きゅうり",
+ "Radish": "だいこん",
+ "Tomato": "トマト",
+ "Changed towels in the bathroom": "浴室のタオルを変更",
+ "Cleaned the kitchen floor": "キッチンの床掃除",
+ "Warranty ends": "保証終了",
+ "TV remote control": "TV リモコン",
+ "Alarm clock": "時計のアラーム",
+ "Heat remote control": "ヒータのリモコン",
+ "Lawn mowed in the garden": "庭の芝刈り",
+ "Some good snacks": "おやつ",
+ "Pizza dough": "ピザ生地",
+ "Sieved tomatoes": "トマトペースト",
+ "Salami": "サラミ",
+ "Toast": "トースト",
+ "Minced meat": "ひき肉",
+ "Pizza": "ピザ",
+ "Spaghetti bolognese": "ボロネーゼスパゲッティ",
+ "Sandwiches": "サンドイッチ",
+ "English": "英語",
+ "German": "ドイツ語",
+ "Italian": "イタリア語",
+ "This is the note content of the recipe ingredient": "レシピの材料のノート",
+ "Demo User": "デモユーザー",
+ "Gram | Grams": "グラム",
+ "Flour": "小麦粉",
+ "Pancakes": "パンケーキ",
+ "Sugar": "砂糖",
+ "Home": "家",
+ "Life": "生活",
+ "Projects": "プロジェクト",
+ "Repair the garage door": "ガレージのドアを修復",
+ "Fork and improve grocy": "grocy をフォークして改善",
+ "Find a solution for what to do when I forget the door keys": "ドアの鍵を忘れたときの解決策を見つける",
+ "Sweets": "お菓子",
+ "Bakery products": "パン食品",
+ "Tinned food": "缶詰",
+ "Butchery products": "肉食品",
+ "Vegetables/Fruits": "野菜/フルーツ",
+ "Refrigerated products": "冷凍食品",
+ "Coffee machine": "コーヒー マシーン",
+ "Dishwasher": "食器洗い機",
+ "Liter": "リットル",
+ "Liters": "リットル",
+ "Bottle": "本",
+ "Bottles": "本",
+ "Milk": "ミルク",
+ "Chocolate sauce": "チョコレート ソース",
+ "Milliliters": "ミリリットル",
+ "Milliliter": "ミリリットル",
+ "Bottom": "底",
+ "Topping": "トッピング",
+ "French": "フランス語",
+ "Turkish": "トルコ語",
+ "Spanish": "スペイン語",
+ "Russian": "ロシア語",
+ "The thing which happens on the 5th of every month": "毎月5日に起こること",
+ "The thing which happens daily": "毎日起こること",
+ "The thing which happens on Mondays and Wednesdays": "月曜日と水曜日に起こること",
+ "Swedish": "スウェーデン語",
+ "Polish": "ポーランド語",
+ "Milk Chocolate": "ミルク チョコレート",
+ "Dark Chocolate": "ダーク チョコレート",
+ "Slice | Slices": "枚",
+ "Example userentity": "ユーザーエントリーの例",
+ "This is an example user entity...": "これはユーザー エントリーの例です...",
+ "Custom field": "カスタム フィールド",
+ "Example field value...": "フィールド値の例...",
+ "Waffle rolls": "ワッフル・ロール",
+ "Danish": "デンマーク語",
+ "Dutch": "オランダ語",
+ "Norwegian": "ノルウェー語",
+ "Demo": "デモ",
+ "Stable version": "安定板",
+ "Preview version": "プレビュー版",
+ "current release": "リリース済み",
+ "not yet released": "未リリース",
+ "Portuguese (Brazil)": "ポルトガル語 (ブラジル)",
+ "This is a note": "てすと",
+ "Freezer": "冷凍庫",
+ "Hungarian": "ハンガリー語",
+ "Slovak": "スロバキア語",
+ "Czech": "チェコ語",
+ "Portuguese (Portugal)": "ポルトガル語 (ポルトガル)",
+ "DemoSupermarket1": "イオン1",
+ "DemoSupermarket2": "イオン2",
+ "Japanese": "日本語",
+ "Chinese (Taiwan)": "中国語(台湾)",
+ "Greek": "",
+ "Korean": "",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/ko_KR.json b/locale/ko_KR.json
new file mode 100644
index 00000000..0355d747
--- /dev/null
+++ b/locale/ko_KR.json
@@ -0,0 +1,899 @@
+{
+ "Stock overview": "재고 개요",
+ "{count} product expires | {count} products expiring": "{count}개 제품 유통기한 만료",
+ "within the next day | within the next {count} days": "(향후 {count} 일 이내)",
+ "{count} product is already expired | {count} products are already expired": "{count} 개 제품 유통기한이 이미 만료됨",
+ "{count} product is overdue | {count} products are overdue": "",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} 개 제품은 재고 미달",
+ "Product": "제품",
+ "{count} Product | {count} Products": "{count} 개 제품",
+ "Amount": "합계",
+ "Logout": "로그아웃",
+ "Chores overview": "집안일 개요",
+ "Batteries overview": "배터리 개요",
+ "Purchase": "구매",
+ "Consume": "소비",
+ "Inventory": "재고",
+ "Shopping list": "구매 목록",
+ "Chore tracking": "집안일 기록",
+ "Battery tracking": "배터리 기록",
+ "Locations": "위치",
+ "Stores": "상점/비축",
+ "Quantity units": "수량 단위",
+ "Chores": "집안일",
+ "Batteries": "배터리",
+ "Chore": "집안일",
+ "Next estimated tracking": "다음 예상 추적",
+ "Last tracked": "마지막 추적",
+ "Battery": "배터리",
+ "Last charged": "마지막 충전",
+ "Next planned charge cycle": "다음 충전 주기",
+ "Best before": "유통기한",
+ "OK": "확인",
+ "Product overview": "제품 개요",
+ "Stock quantity unit": "재고 수량 단위",
+ "Stock amount": "재고 수량",
+ "Last purchased": "마지막 구매",
+ "Last used": "마지막 사용",
+ "Spoiled": "상한제품",
+ "Barcode lookup is disabled": "바코드 조회가 비활성화됨",
+ "will be added to the list of barcodes for the selected product on submit": "제출시 선택한 제품의 바코드 목록에 추가됨",
+ "New amount": "신규 총합",
+ "Note": "노트",
+ "Tracked time": "기록 시간",
+ "Chore overview": "집안일 개요",
+ "Tracked count": "기록 횟수",
+ "Battery overview": "배터리 개요",
+ "Charge cycles count": "충전 횟수",
+ "Create shopping list item": "구매 목록 생성",
+ "Edit shopping list item": "구매 목록 편집",
+ "Save": "저장",
+ "Add": "추가",
+ "Name": "명칭",
+ "Location": "위치",
+ "Min. stock amount": "최소 수량",
+ "Description": "설명",
+ "Create product": "제품 생성",
+ "Barcode(s)": "바코드",
+ "Minimum stock amount": "최소 재고 수량",
+ "Default best before days": "기본 유통기한",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "수량 단위 보관",
+ "Factor purchase to stock quantity unit": " 보관 수량 단위 구매 증가분",
+ "Create location": "위치 생성",
+ "Create store": "저장소 생성",
+ "Create quantity unit": "수량 단위 생성",
+ "Period type": "보관 형태",
+ "Period days": "보관 기한",
+ "Create chore": "집안일 생성",
+ "Used in": "사용됨",
+ "Create battery": "배터리 생성",
+ "Edit battery": "배터리 편집",
+ "Edit chore": "집안일 편집",
+ "Edit quantity unit": "수량 단위 수정",
+ "Edit product": "제품 수정",
+ "Edit location": "위치 수정",
+ "Edit store": "저장소 수정",
+ "Record data": "Record data",
+ "Manage master data": "기초 자료 관리",
+ "This will apply to added products": "이것은 추가된 제품에 적용될 것이다.",
+ "never": "never",
+ "Add products that are below defined min. stock amount": "정의된 최소값 미만인 제품을 추가. 재고량",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "This means 1 {string1} purchased will be converted into {string2} {string3} in stock",
+ "Login": "로그인",
+ "Username": "사용자계정",
+ "Password": "비밀번호",
+ "Invalid credentials, please try again": "잘못된 자격증명입니다. 다시 시도하십시오",
+ "Are you sure to delete battery \"{string0}\"?": " {string0} 배터리를 삭제 했습니까?",
+ "Yes": "예",
+ "No": "아니오",
+ "Are you sure to delete chore \"{string0}\"?": "{string0} 집안일을 삭제 하시겠습니까?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" could not be resolved to a product, how do you want to proceed?",
+ "Create or assign product": "제품 생성 또는 할당",
+ "Cancel": "취소",
+ "Add as new product": "새로운 제품으로 추가",
+ "Add as barcode to existing product": "기존 제품에 바코드로 추가",
+ "Add as new product and prefill barcode": "새로운 제품으로 추가 및 미리 바코드 채우기",
+ "Are you sure to delete quantity unit \"{string0}\"?": " \"{string0}\" 수량 단위를 삭제 하시겠습니까?",
+ "Are you sure to delete product \"{string0}\"?": "\"{string0}\" 제품을 삭제 하시겠습니까? ",
+ "Are you sure to delete location \"{string0}\"?": " \"{string0}\" 위치를 삭제 하시겠습니까?",
+ "Are you sure to delete store \"{string0}\"?": "\"{string0}\" 저장소를 삭제 하시겠습니까? ",
+ "Manage API keys": "API키 관리",
+ "REST API & data model documentation": "REST API 및 데이터 모델 문서",
+ "API keys": "API 키",
+ "Create new API key": "API 키 생성",
+ "API key": "API 키",
+ "Expires": "만료",
+ "Created": "생성",
+ "This product is not in stock": "이 상품은 재고가 없습니다.",
+ "This means {string0} will be added to stock": "이것은 {string0} 이 저장소에 추가됩니다.",
+ "This means {string0} will be removed from stock": "이것은 {string0} 이 저장소에 제거됩니다.",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "This means the next execution of this chore is scheduled {string0} days after the last execution",
+ "Removed {string1} of {string2} from stock": "{string2} {string1}을 재고 목록에서 제거함",
+ "About grocy": "Grocy에 대하여",
+ "Close": "닫기",
+ "Released on": "Released on",
+ "Added {string1} of {string2} to stock": " {string2} {string1}을 재고 목록에 추가함 ",
+ "Stock amount of {string1} is now {string2}": "현재 재고량은 {string1} {string2} ",
+ "Tracked execution of chore {string1} on {string2}": "{string2}에 {string1}집안일 추적",
+ "Tracked charge cycle of battery {string1} on {string2}": "{string2}에 {string1} 충전 주기 추적",
+ "Consume all {string0} which are currently in stock": "현재 재고가 있는 {string0} 모두 소비",
+ "All": "모두",
+ "Search": "검색",
+ "Not logged in": "로그인하지 않았습니다.",
+ "You have to select a product": "제품을 선택해야 합니다.",
+ "You have to select a chore": "집안일을 선택해야 합니다.",
+ "You have to select a battery": "배터리를 선택해야 합니다.",
+ "A name is required": "이름이 필요합니다.",
+ "A location is required": "위치가 필요합니다.",
+ "A quantity unit is required": "수량 단위가 필요합니다.",
+ "A period type is required": "기간 유형이 필요합니다.",
+ "A best before date is required": "유통기한이 필요합니다.",
+ "Settings": "설정",
+ "This can only be before now": "현재 이전 만 가능합니다.",
+ "Calendar": "달력",
+ "Recipes": "요리법",
+ "Edit recipe": "요리법 수정",
+ "Ingredients list": "재료 목록",
+ "Add recipe ingredient": "요리법 재료 추가",
+ "Edit recipe ingredient": "요리법 재료 편집",
+ "Are you sure to delete recipe \"{string0}\"?": "\"{string0}\" 요리법을 삭제하시겠습니까? ",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "요리법 재료를 삭제하시겠습니까? \"{string0}\"",
+ "Are you sure to empty shopping list \"{string0}\"?": " \"{string0}\" 구매 목록을 비우시겠습니까?",
+ "Clear list": "목록 지우기",
+ "Requirements fulfilled": "요구 사항 충족",
+ "Put missing products on shopping list": "누락제품 구매목록 등록",
+ "Enough in stock": "재고가 충분함",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "재고 부족. 재료 {count} 개가 누락되었지만 이미 쇼핑 목록에 있음",
+ "Expand to fullscreen": "전체 화면으로 확장",
+ "Ingredients": "재료",
+ "Preparation": "준비",
+ "Recipe": "요리법",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "재고 부족. 재료{string1}개 누락, {string2}이미 쇼핑리스트에 있습니다.",
+ "Show notes": "노트 보기",
+ "Put missing amount on shopping list": "쇼핑목록에 누락된 양 입력",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?",
+ "Added for recipe {string0}": "\"{string0}\" 요리법 추가",
+ "Manage users": "사용자 관리",
+ "User": "사용자",
+ "Users": "사용자",
+ "Are you sure to delete user \"{string0}\"?": "\"{string0}\"사용자를 삭제할까요?",
+ "Create user": "새용자 생성",
+ "Edit user": "사용자 수정",
+ "First name": "이름",
+ "Last name": "성",
+ "A username is required": "사용자 이름이 필요합니다.",
+ "Confirm password": "암호 변경",
+ "Passwords do not match": "암호 불일치",
+ "Change password": "암호 변경",
+ "Done by": "완료 사용자",
+ "Last done by": "마지막 완료 사용자",
+ "Unknown": "Unknown",
+ "Chores journal": "집안일 일지",
+ "0 means suggestions for the next charge cycle are disabled": "0은 다음 충전 사이클에 대한 제안이 비활성화됨을 의미한다.",
+ "Charge cycle interval (days)": "충전 주기 (일)",
+ "Last price": "마지막 가격",
+ "Price history": "금액 정보",
+ "No price history available": "사용 가능한 금액 정보 없음",
+ "Price": "금액",
+ "Unit": "단위",
+ "{count} Unit | {count} Units": "{count} 개",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} 개의 집안일이 예정되어 있습니다.",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} 개의 집안일이 밀려있습니다.",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} 배터리를 충전해야 합니다.",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} 배터리 충전 기한이 지났습니다.",
+ "in singular form": "단수형",
+ "Quantity unit": "단위",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "조리법 \"{string0}\"의 모든 재료를 제거했다.",
+ "Consume all ingredients needed by this recipe": "이 조리법에 필요한 모든 재료를 소비",
+ "Click to show technical details": "기술 정보를 보려면 클릭하십시오",
+ "Error while saving, probably this item already exists": "저장하는 동안 오류가 발생했습니다. 이 항목이 이미 있을 수 있습니다.",
+ "Error details": "오류 상세정보",
+ "Tasks": "작업",
+ "Show done tasks": "완료된 작업 보기",
+ "Task": "작업",
+ "Due": "기한",
+ "Assigned to": "할당",
+ "Mark task \"{string0}\" as completed": " \"{string0}\" 작업을 완료된 것으로 표시",
+ "Uncategorized": "기타",
+ "Task categories": "작업 구분",
+ "Create task": "작업 만들기",
+ "A due date is required": "마감일이 필요합니다.",
+ "Category": "구분",
+ "Edit task": "작업 수정",
+ "Are you sure to delete task \"{string0}\"?": "작업을 삭제하시겠습니까? \"{string0}\"",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} 작업이 완료될 예정입니다",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} 작업이 완료되지 않았습니다",
+ "Edit task category": "작업 구분 수정",
+ "Create task category": "작업 구분 생성",
+ "Product groups": "제품 그룹",
+ "Ungrouped": "제품 그룹 해제",
+ "Create product group": "제품 그룹 생성",
+ "Edit product group": "제품 그룹 수정",
+ "Product group": "제품 그룹",
+ "Are you sure to delete product group \"{string0}\"?": " \"{string0}\" 제품 그룹을 삭제 하시겠습니까?",
+ "Stay logged in permanently": "로그인 영구유지",
+ "When not set, you will get logged out at latest after 30 days": "설정되지 않은 경우 30일 후에 로그아웃됨",
+ "Status": "상태",
+ "Below min. stock amount": "최소 재고 미만",
+ "Expiring soon": "곧 만료 예정",
+ "Already expired": "이미 만료됨",
+ "Due soon": "마감 임박",
+ "Overdue": "마감지연",
+ "View settings": "화면 설정",
+ "Auto reload on external changes": "외부 변경시 자동 재로드",
+ "Enable night mode": "야간모드 사용",
+ "Auto enable in time range": "시간 범위에서 자동활성화",
+ "From": "From",
+ "in format": "in format",
+ "To": "To",
+ "Time range goes over midnight": "시간범위가 자정을 넘어간다",
+ "Product picture": "제품 사진",
+ "No file selected": "파일 선택 안됨",
+ "Delete": "삭제",
+ "Select file": "파일 선택",
+ "Image of product {string0}": "{string0}제품이미지 ",
+ "Deletion not possible": "",
+ "Equipment": "장비",
+ "Instruction manual": "사용설명서",
+ "The selected equipment has no instruction manual": "선택한 장비 사용 설명서 업음",
+ "Notes": "메모",
+ "Edit equipment": "장비 수정",
+ "Create equipment": "장비 생성",
+ "The current file will be deleted on save": "",
+ "No picture available": "사용 가능한 사진 없음",
+ "Presets for new products": "새로운 제품 사전 설정",
+ "Included recipes": "포함된 요리법",
+ "A recipe is required": "요리법이 필요합니다.",
+ "Add included recipe": "포함된 요리법 추가",
+ "Edit included recipe": "포함된 요리법 수정",
+ "Group": "그룹",
+ "This will be used as a headline to group ingredients together": "This will be used as a headline to group ingredients together",
+ "Journal": "일지",
+ "Stock journal": "재고 일지",
+ "Undone on": "실행 취소됨",
+ "Batteries journal": "배터리 일지",
+ "Undo charge cycle": "충전 주기 실행 취소",
+ "Undo chore execution": "집안일 실행 취소",
+ "Chore execution successfully undone": "집안일 실행 취소 성공",
+ "Undo": "실행 취소",
+ "Booking successfully undone": "실행 취소 성공",
+ "Charge cycle successfully undone": "충전 주기 실행 취소 성공",
+ "Disable stock fulfillment checking for this ingredient": "이 재료에 대한 재고 확인기능 비활성",
+ "Add all list items to stock": "재고에 모든 목록 항목 추가",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "쇼핑 목록 항목 추가 {string1} of {string2}",
+ "Use a specific stock item": "특정 재고 품목 사용",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Mark {string1} of {string2} as open",
+ "Marked {string1} of {string2} as opened": "Marked {string1} of {string2} as opened",
+ "Mark as opened": "제품 개봉",
+ "Not opened": "미개봉",
+ "Opened": "개봉",
+ "{string0} opened": "{string0} 개봉",
+ "Product due": "",
+ "Task due": "마감 기한",
+ "Chore due": "집안일",
+ "Battery charge cycle due": "배터리 충전 기한",
+ "Show clock in header": "상단 시계 보기",
+ "Stock settings": "저장소 설정",
+ "Shopping list to stock workflow": "구매 목록에서 재고 흐름",
+ "Skip": "건너뜀",
+ "Servings": "1인분",
+ "Costs": "비용",
+ "Based on the prices of the last purchase per product": "제품별 마지막 구매가격 기준",
+ "The ingredients listed here result in this amount of servings": "여기에 나열된 재료는몇 인분의 제공합니다",
+ "Do not check against the shopping list when adding missing items to it": "누락된 항목을 쇼핑 목록에 추가할 때 구매 목록과 대조하지 않음",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list",
+ "Picture": "사진",
+ "Uncheck ingredients to not put them on the shopping list": "구매 목록에 넣지 않으려면 재료 선택을 취소하십시오.",
+ "This is for statistical purposes only": "이것은 통계적 목적만을 위한 것이다.",
+ "You have to select a recipe": "레시피를 선택해야 합니다.",
+ "Key type": "Key type",
+ "Share/Integrate calendar (iCal)": "Share/Integrate calendar (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Use the following (public) URL to share or integrate the calendar in iCal format",
+ "Allow partial units in stock": "일부 단위의 재고로 허용",
+ "Enable tare weight handling": "용기 무게 포함",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "이것은 밀가루를 병에 담는 데 유용하다. 구입/소비/재고시에 당신은 항상 전체 병을 무게를 재는데, 게시될 양은 재고량과 아래에 정의된 무게에 따라 자동으로 계산된다.",
+ "Tare weight": "용기 무게",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated",
+ "You have to select a location": "위치를 선택하세요",
+ "You have to select a store": "상점을 선택하세요",
+ "List": "목록",
+ "Gallery": "사진첩",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "해당 배터리에 대한 일지",
+ "System info": "시스템 정보",
+ "Changelog": "변경 기록",
+ "will be multiplied by a factor of {string1} to get {string2}": "will be multiplied by a factor of {string1} to get {string2}",
+ "The given date is earlier than today, are you sure?": "지정된 날짜가 오늘보다 빠릅니다. 확실합니까?",
+ "Product count": "제품 수",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "이것은 요리법 재료로 추가 할 때 기본 설정으로 사용됩니다",
+ "Add item": "아이템 추가",
+ "Selected shopping list": "선택된 구매 목록",
+ "New shopping list": "새로운 구매 목록",
+ "Delete shopping list": "구매목록 삭제",
+ "Chores settings": "집안일 설정",
+ "Batteries settings": "배터리 설정",
+ "Tasks settings": "작업 설정",
+ "Create shopping list": "구매목록 생성",
+ "Are you sure to delete shopping list \"{string0}\"?": " \"{string0}\" 구매 목록을 삭제하시겠습니까?",
+ "Average shelf life": "평균 저장 수명",
+ "Spoil rate": "부패율",
+ "Show more": "더보기",
+ "Show less": "감추기",
+ "The amount must be between {string1} and {string2}": "The amount must be between {string1} and {string2}",
+ "Day of month": "매월 몇일",
+ "Monday": "월요일",
+ "Tuesday": "화요일",
+ "Wednesday": "수요일",
+ "Thursday": "목요일",
+ "Friday": "금요일",
+ "Saturday": "토요일",
+ "Sunday": "일요일",
+ "Configure userfields": "사용자 항목 설정",
+ "Userfields": "사용자 항목",
+ "Entity": "목록",
+ "Caption": "설명",
+ "Type": "종류",
+ "Create userfield": "사용자 항목 생성",
+ "A entity is required": "목록이 필요합니다.",
+ "A caption is required": "설명이 필요합니다.",
+ "A type is required": "구분이 필요합니다.",
+ "Show as column in tables": "Show as column in tables",
+ "This is required and can only contain letters and numbers": "This is required and can only contain letters and numbers",
+ "Edit userfield": "사용자 항목 수정",
+ "Plural forms": "Plural forms",
+ "One plural form per line, the current language requires": "One plural form per line, the current language requires",
+ "Plural count": "Plural count",
+ "Plural rule": "Plural rule",
+ "in plural form": "복수형",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "재고 부족, 재료{count} 개 누락",
+ "Not enough in stock, but already on the shopping list": "재고 부족, 그러나 구매 목록에 이미 있음",
+ "Not enough in stock": "재고 부족",
+ "Expiring soon days": "곧 만료",
+ "Default location": "기본 위치",
+ "Default amount for purchase": "구매 기본 수량",
+ "Default amount for consume": "소비 기본 수량",
+ "Variable amount": "Variable amount",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking",
+ "Track date only": "날짜만 기록",
+ "When enabled only the day of an execution is tracked, not the time": "활성화된 경우 실행 날짜만 기록되고 시간은 사용하지 않는다",
+ "Consume {string1} of {string2}": "Consume {string1} of {string2}",
+ "Meal plan": "식단 계획",
+ "Add recipe on {string0}": "Add recipe on {string0}",
+ "{count} serving | {count} servings": "{count} 인분",
+ "Week costs": "주당 비용",
+ "Configuration": "설정",
+ "A predefined list of values, one per line": "A predefined list of values, one per line",
+ "Products": "제품",
+ "Marked task {string0} as completed on {string0}": "표시된 작업 \"{string0}\" 완료처리됨 {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Booking has subsequent dependent bookings, undo not possible",
+ "per serving": "/ 1인분당",
+ "Never": "Never",
+ "Today": "오늘",
+ "Consume {string1} of {string2} as spoiled": "상한제품 {string2}{string1}을 소비",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed",
+ "Undo task": "",
+ "Due date rollover": "Due date rollover",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "When enabled the chore can never be overdue, the due date will shift forward each day when due",
+ "Location Content Sheet": "위치 내용 목록",
+ "Print": "출력",
+ "all locations": "모든 위치",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "이 위치",
+ "Consumed amount": "소비량",
+ "Time of printing": "출력 시간",
+ "Are you sure to delete equipment \"{string0}\"?": "\"{string0}\" 장비 목록을 삭제하시겠습니까?",
+ "Parent product": "상위 제품군",
+ "Not possible because this product is already used as a parent product in another product": "Not possible because this product is already used as a parent product in another product",
+ "Default conversions": "기본 변환",
+ "Factor": "Factor",
+ "1 {string0} is the same as...": "1 {string0} is the same as...",
+ "Create QU conversion": "수량 단위 변환 생성",
+ "Default for QU": "기본 수량 단위",
+ "Quantity unit from": "Quantity unit from",
+ "Quantity unit to": "Quantity unit to",
+ "This cannot be equal to {string0}": "This cannot be equal to {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "This means 1 {string1} is the same as {string2} {string3}",
+ "QU conversions": "수량 단위 변환",
+ "Product overrides": "제품 재정의",
+ "Override for product": "제품 재정의",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "수량 단위 변환 수정",
+ "An assignment type is required": "작업자 할당이 필요합니다.",
+ "Assignment type": "할당유형",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "This means the next execution of this chore is scheduled 1 day after the last execution",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "이는 이 일의 다음 실행이 마지막 실행일로부터 1일 후에 예정되어 있지만, 아래에서 선택한 평일에만 예정되어 있음을 의미한다.",
+ "This means the next execution of this chore is not scheduled": "이것은 이 일의 다음 실행이 예정되어 있지 않다는 것을 의미한다.",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "이것은 이 일의 다음 실행이 매월 아래 선택된 날짜에 예정되어 있음을 의미한다.",
+ "This means the next execution of this chore will not be assigned to anyone": "이것은 이 일의 다음 실행은 어느 누구에게도 할당되지 않는다는 것을 의미한다.",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "이것은 이 일의 다음 실행은 가장 적게 실행한 사람에게 할당된다는 것을 의미한다.",
+ "This means the next execution of this chore will be assigned randomly": "이것의 이 일의 다음 실행은 무작위로 작업자 할당된다는 것을 의미한다.",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "이것은 이 일의 다음 실행이 알파벳순으로 할당된다는 것을 의미한다.",
+ "Assign to": "역할 분담",
+ "This assignment type requires that at least one is assigned": "This assignment type requires that at least one is assigned",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} 개의 집안일이 나에게 할당되었습니다.",
+ "Assigned to me": "나에게 할당됨",
+ "assigned to {string0}": "{string0}에게 할당됨",
+ "Assignment": "작업 배분",
+ "Consume product on chore execution": "집안일 수행시 제품 소비",
+ "Are you sure to delete user field \"{string0}\"?": "사용자 정의 목록 \"{string0}\"을 삭제하시겠습니까?",
+ "Userentities": "사용자 정의 메뉴",
+ "Create userentity": "사용자 정의 목록 생성",
+ "Show in sidebar menu": "사이드 메뉴 보기",
+ "Edit userentity": "사용자 정의 목록 수정",
+ "Edit {string0}": "{string0} 수정 ",
+ "Create {string0}": " {string0} 생성",
+ "Are you sure to delete this userobject?": "Are you sure to delete this userobject?",
+ "Icon CSS class": "Icon CSS class",
+ "For example": "예시",
+ "Configure fields": "Configure fields",
+ "Quantity unit plural form testing": "Quantity unit plural form testing",
+ "Result": "Result",
+ "Test plural forms": "Test plural forms",
+ "Scan a barcode": "바코드 스캔",
+ "Error while initializing the barcode scanning library": "Error while initializing the barcode scanning library",
+ "The resulting price of this ingredient will be multiplied by this factor": "The resulting price of this ingredient will be multiplied by this factor",
+ "Price factor": "가격 변동",
+ "Do you find grocy useful?": "Do you find grocy useful?",
+ "Say thanks": "Say thanks",
+ "Search for recipes containing this product": "이 제품이 포함된 요리법 검색",
+ "Add to shopping list": "구매 목록 추가",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Added {string1} of {string2} to the shopping list \"{string3}\"",
+ "Output": "Output",
+ "Energy (kcal)": "열량 (kcal)",
+ "Per stock quantity unit": "Per stock quantity unit",
+ "Barcode scanner testing": "바코드 스캐너 테스트",
+ "Expected barcode": "예상되는 바코드",
+ "Scan field": "스캔 항목",
+ "Scanned barcodes": "스캔 바코드",
+ "Hit": "Hit",
+ "Miss": "Miss",
+ "Display recipe": "요리법 보기",
+ "Accumulate sub products min. stock amount": "Accumulate sub products min. stock amount",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product",
+ "Are you sure to remove this conversion?": "이 변환을 제거하시겠습니까?",
+ "Unit price": "단가",
+ "Total price": "총 가격",
+ "in {string0} and based on the purchase quantity unit": "{string0} 단위 및 구매 단위 기준",
+ "Unlimited": "Unlimited",
+ "Clear": "Clear",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Are you sure to remove the included recipe \"{string0}\"?",
+ "Period interval": "기간 간격",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "This means the next execution of this chore should only be scheduled every {string0} days",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "This means the next execution of this chore should only be scheduled every {string0} weeks",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "This means the next execution of this chore should only be scheduled every {string0} months",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "This means the next execution of this chore is scheduled 1 year after the last execution",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "This means the next execution of this chore should only be scheduled every {string0} years",
+ "Transfer": "위치이동",
+ "From location": "이동전 위치",
+ "To location": "이동 후 위치",
+ "There are no units available at this location": "이 위치에서 사용가능한 단위가 없다",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Transfered {string1} of {string2} from {string3} to {string4}",
+ "Stock entries": "재고 항목",
+ "Best before date": "유통기한",
+ "Purchased date": "구매일",
+ "Consume all {string0} for this stock entry": "Consume all {string0} for this stock entry",
+ "The amount cannot be lower than {string1}": "수량은 {string1}개 보다 작을 수 없습니다.",
+ "Stock entry successfully updated": "Stock entry successfully updated",
+ "Edit stock entry": "재고 목록 수정",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection",
+ "Keep screen on": "화면 켜짐 유지",
+ "Keep screen on while displaying a \"fullscreen-card\"": "\"전체 화면\"시 화면 켜짐 유지",
+ "A purchased date is required": "구매일이 필요합니다.",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "제품 소개",
+ "This booking cannot be undone": "실행 취소를 할 수 없습니다",
+ "Booking does not exist or was already undone": "Booking does not exist or was already undone",
+ "Are you sure to delete API key \"{string0}\"?": "Are you sure to delete API key \"{string0}\"?",
+ "Add note": "메모 추가",
+ "Add note on {string0}": "{string0} 메모 추가",
+ "per day": "per day",
+ "Only undone items": "Only undone items",
+ "Add product": "제품 생성",
+ "Add product on {string0}": " {string0}제품 생성",
+ "Consume all ingredients needed by this weeks recipes or products": "Consume all ingredients needed by this weeks recipes or products",
+ "Meal plan recipe": "식단 계획 레시피",
+ "Meal plan note": "식단 계획",
+ "Meal plan product": "식단 계획 제품",
+ "Scan mode": "스캔 모드",
+ "on": "On",
+ "off": "Off",
+ "Scan mode is on but not all required fields could be populated automatically": "스캔 모드가 켜져 있지만 일부 필수 필드를 자동으로 채울 수는 없음",
+ "Is freezer": "냉동고",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "제품을 냉동고에서 냉장고로 제품을 옮기는경우 제품 설정에 따라 유통기한 자동조정",
+ "This cannot be the same as the \"From\" location": "This cannot be the same as the \"From\" location",
+ "Thawed": "해동",
+ "Frozen": "냉동",
+ "Are you sure to delete userentity \"{string0}\"?": "Are you sure to delete userentity \"{string0}\"?",
+ "Shopping list settings": "구매 목록 설정",
+ "Show a month-view calendar": "월간 일정 보기",
+ "Edit note on {string0}": " {string0}메모 수정",
+ "Edit product on {string0}": " {string0}제품 수정",
+ "Edit recipe on {string0}": " {string0}레시피 수정",
+ "Desired servings": "원하는 인원분량",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "요리법 설정",
+ "Recipe card": "레시피 카드",
+ "Group ingredients by their product group": "Group ingredients by their product group",
+ "Unknown store": "알수없는 상점",
+ "Store": "상점",
+ "Transaction successfully undone": "실행 취소 성공",
+ "Default store": "기본 상점",
+ "Consume this stock entry": "재고품목 소비",
+ "Mark this stock entry as open": "이 재고 항목을 열린 것으로 표시",
+ "Mark this item as done": "항목 완료표시",
+ "Edit this item": "이 항목을 편집",
+ "Delete this item": "항목 삭제",
+ "Show an icon if the product is already on the shopping list": "제품이 이미 구매 목록에 있는 경우 아이콘 표시",
+ "Calories": "칼로리",
+ "means {string1} per {string2}": "각 {string2}당 {string1} ",
+ "Create inverse QU conversion": "Create inverse QU conversion",
+ "Create recipe": "레시피 생성",
+ "Save & continue to add ingredients and included recipes": "재료 및 포함 된 레시피 저장 및 계속 추가",
+ "Save & continue": "저장 후 계속 편집",
+ "Save & return to recipes": "저장 후 레시피목록으로 돌아가기",
+ "Stock value": "재고 가치",
+ "Average price": "평균 가격",
+ "Active": "활성",
+ "Barcodes": "바코드",
+ "Barcode": "바코드",
+ "Create Barcode": "바코드 생성",
+ "Barcode for product": "제품 바코드",
+ "Edit Barcode": "바코드 수정",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "필터 초기화",
+ "Permissions for user {string0}": "",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "권한 저장됨",
+ "You are not allowed to view this page": "",
+ "Page not found": "페이지를 찾을 수 없습니다",
+ "Unauthorized": "",
+ "Error source": "오류 소스",
+ "Error message": "오류 메시지",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "이 페이지는 존재하지 않습니다.",
+ "You will be redirected to the default page in {string0} seconds": "{string0}초내로 기본 페이지로 이동됨",
+ "Server error": "서버 오류",
+ "A server error occured while processing your request": "요청을 처리하는 도중 서버에서 오류가 발생함",
+ "If you think this is a bug, please report it": "이것이 버그라고 생각한다면, 레포트 해주세요",
+ "Language": "언어",
+ "User settings": "사용자 설정",
+ "Default": "기본",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": "",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": "",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "할당없음",
+ "who-least-did-first": "적게한 사람 우선",
+ "random": "무작위",
+ "in-alphabetical-order": "알파벳 순서",
+ "timeago_locale": "ko",
+ "timeago_nan": "NaN년",
+ "moment_locale": "ko",
+ "datatables_localization": "{\"sEmptyTable\":\"데이터가 없습니다\",\"sInfo\":\"_START_ - _END_ / _TOTAL_\",\"sInfoEmpty\":\"0 - 0 / 0\",\"sInfoFiltered\":\"(총 _MAX_ 개)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"페이지당 줄수 _MENU_\",\"sLoadingRecords\":\"읽는중...\",\"sProcessing\":\"처리중...\",\"sSearch\":\"검색:\",\"sZeroRecords\":\"검색 결과가 없습니다\",\"oPaginate\":{\"sFirst\":\"처음\",\"sLast\":\"마지막\",\"sNext\":\"다음\",\"sPrevious\":\"이전\"},\"oAria\":{\"sSortAscending\":\": 오름차순 정렬\",\"sSortDescending\":\": 내림차순 정렬\"}}",
+ "summernote_locale": "ko-KR",
+ "fullcalendar_locale": "ko",
+ "bootstrap-select_locale": "ko_KR",
+ "purchase": "구매",
+ "transfer_from": "이동 전",
+ "transfer_to": "이동 후",
+ "consume": "소모",
+ "inventory-correction": "재고 정리",
+ "product-opened": "제품 개봉",
+ "stock-edit-old": "재고 수정 오래됨",
+ "stock-edit-new": "재고 수정 신규",
+ "self-production": "자채 생산",
+ "manually": "수동",
+ "dynamic-regular": "주기적",
+ "daily": "매일",
+ "weekly": "주간",
+ "monthly": "월간",
+ "yearly": "매년",
+ "text-single-line": "text-single-line",
+ "text-multi-line": "text-multi-line",
+ "number-integral": "number-integral",
+ "number-decimal": "number-decimal",
+ "date": "date",
+ "datetime": "datetime",
+ "checkbox": "checkbox",
+ "preset-list": "preset-list",
+ "preset-checklist": "preset-checklist",
+ "link": "link",
+ "link-with-title": "",
+ "file": "file",
+ "image": "image",
+ "ADMIN": "관리자",
+ "USERS_CREATE": "사용자 생성",
+ "USERS_EDIT": "사용자 수정",
+ "USERS_READ": "사용자 읽기",
+ "USERS_EDIT_SELF": "사용자 수정(셀프)",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "배터리 충전 실행 취소",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "배터리 충전 실행 기록",
+ "CHORE_TRACK_EXECUTION": "집안일 실행 기록",
+ "CHORE_UNDO_EXECUTION": "집안일 실행 취소",
+ "MASTER_DATA_EDIT": "기본 자료 수정",
+ "TASKS_UNDO_EXECUTION": "작업 실행 취소",
+ "TASKS_MARK_COMPLETED": "작업 실행 기록",
+ "STOCK_EDIT": "재고 수정",
+ "STOCK_TRANSFER": "재고 이동",
+ "STOCK_INVENTORY": "재고 목록",
+ "STOCK_CONSUME": "재고 소비",
+ "STOCK_OPEN": "재고 열기",
+ "STOCK_PURCHASE": "재고 구매",
+ "SHOPPINGLIST_ITEMS_ADD": "구매 목록 아이템 추가",
+ "SHOPPINGLIST_ITEMS_DELETE": "구매 목록 아이템 삭제",
+ "USERS": "사용자",
+ "STOCK": "재고",
+ "SHOPPINGLIST": "구매 목록",
+ "CHORES": "집안일",
+ "BATTERIES": "배터리",
+ "TASKS": "작업",
+ "RECIPES": "요리법",
+ "EQUIPMENT": "장비",
+ "CALENDAR": "달력",
+ "RECIPES_MEALPLAN": "식단 계획",
+ "Cookies": "쿠키",
+ "Chocolate": "초콜릿",
+ "Pantry": "식료품 저장실",
+ "Candy cupboard": "간식 찬장",
+ "Tinned food cupboard": "통조림 찬장",
+ "Fridge": "냉장고",
+ "Piece | Pieces": "조각",
+ "Pack | Packs": "팩",
+ "Glass | Glasses": "잔",
+ "Tin | Tins": "통",
+ "Can | Cans": "캔",
+ "Bunch | Bunches": "묶음",
+ "Gummy bears": "구미베어",
+ "Crisps": "감자칩",
+ "Eggs": "계란",
+ "Noodles": "국수",
+ "Pickles": "피클",
+ "Gulash soup": "굴라시 수프",
+ "Yogurt": "요거트",
+ "Cheese": "치즈",
+ "Cold cuts": "편육",
+ "Paprika": "파프리카",
+ "Cucumber": "오이",
+ "Radish": "무",
+ "Tomato": "토마토",
+ "Changed towels in the bathroom": "화장실 수건 교체",
+ "Cleaned the kitchen floor": "주방 바닥 청소",
+ "Warranty ends": "보증 종료",
+ "TV remote control": "TV remote control",
+ "Alarm clock": "알람시계",
+ "Heat remote control": "난방 조절",
+ "Lawn mowed in the garden": "정원 잔디깍기",
+ "Some good snacks": "간식",
+ "Pizza dough": "피자 도우",
+ "Sieved tomatoes": "Sieved tomatoes",
+ "Salami": "살라미",
+ "Toast": "토스트",
+ "Minced meat": "다진고기",
+ "Pizza": "피자",
+ "Spaghetti bolognese": "봉골레 파스타",
+ "Sandwiches": "샌드위치",
+ "English": "영어",
+ "German": "독일어",
+ "Italian": "이탈리아어",
+ "This is the note content of the recipe ingredient": "이것은 요리 레시피의 노트 내용입니다.",
+ "Demo User": "데모 사용자",
+ "Gram | Grams": "g",
+ "Flour": "밀가루",
+ "Pancakes": "팬케이크",
+ "Sugar": "설탕",
+ "Home": "Home",
+ "Life": "Life",
+ "Projects": "프로젝트",
+ "Repair the garage door": "차고문수리",
+ "Fork and improve grocy": "Fork and improve grocy",
+ "Find a solution for what to do when I forget the door keys": "Find a solution for what to do when I forget the door keys",
+ "Sweets": "과자",
+ "Bakery products": "베이커리 제품",
+ "Tinned food": "통조림",
+ "Butchery products": "Butchery products",
+ "Vegetables/Fruits": "야채/과일",
+ "Refrigerated products": "냉장 제품",
+ "Coffee machine": "커피머신",
+ "Dishwasher": "식기세척기",
+ "Liter": "리터",
+ "Liters": "리터",
+ "Bottle": "병",
+ "Bottles": "병",
+ "Milk": "우유",
+ "Chocolate sauce": "초콜릿소스",
+ "Milliliters": "밀리리터",
+ "Milliliter": "밀리리터",
+ "Bottom": "바닥",
+ "Topping": "토핑",
+ "French": "프랑스어",
+ "Turkish": "터키어",
+ "Spanish": "스페인어",
+ "Russian": "러시아어",
+ "The thing which happens on the 5th of every month": "매월 5일에 발생하는 일",
+ "The thing which happens daily": "매일 발생하는 일",
+ "The thing which happens on Mondays and Wednesdays": "월요일과 수요일 발생하는 일",
+ "Swedish": "스웨덴어",
+ "Polish": "폴란드어",
+ "Milk Chocolate": "우유 초콜렛",
+ "Dark Chocolate": "다크 초콜렛",
+ "Slice | Slices": "슬라이스",
+ "Example userentity": "Example userentity",
+ "This is an example user entity...": "This is an example user entity...",
+ "Custom field": "Custom field",
+ "Example field value...": "Example field value...",
+ "Waffle rolls": "와플 롤",
+ "Danish": "덴마크어",
+ "Dutch": "네덜란드어",
+ "Norwegian": "노르웨이어",
+ "Demo": "데모",
+ "Stable version": "안정화 버전",
+ "Preview version": "미리보기 버전",
+ "current release": "현재 릴리즈",
+ "not yet released": "미공개",
+ "Portuguese (Brazil)": "포루투갈어(브라질)",
+ "This is a note": "이것은 메모입니다.",
+ "Freezer": "냉동고",
+ "Hungarian": "헝가리아어",
+ "Slovak": "슬로바키아어",
+ "Czech": "체코어",
+ "Portuguese (Portugal)": "포루투갈어(포루투갈)",
+ "DemoSupermarket1": "데모슈퍼마켓1",
+ "DemoSupermarket2": "데모슈퍼마켓2",
+ "Japanese": "일본어",
+ "Chinese (Taiwan)": "중국어(대만)",
+ "Greek": "그리스어",
+ "Korean": "한국어",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/nl.json b/locale/nl.json
new file mode 100644
index 00000000..5644f921
--- /dev/null
+++ b/locale/nl.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Voorraadoverzicht",
+ "{count} product expires | {count} products expiring": "{count}product verloopt | {count} producten verlopen",
+ "within the next day | within the next {count} days": "tussen nu en morgen | binnen {count} dagen",
+ "{count} product is already expired | {count} products are already expired": "{count} product is al verlopen | {count} producten zijn al verlopen",
+ "{count} product is overdue | {count} products are overdue": "product is verlopen | {count} producten zijn verlopen",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} product onder min. voorraadhoeveelheid | {count} producten onder min. voorraadhoeveelheid",
+ "Product": "Product",
+ "{count} Product | {count} Products": "{count} Product | {count} producten",
+ "Amount": "Hoeveelheid",
+ "Logout": "Uitloggen",
+ "Chores overview": "Overzicht klussen",
+ "Batteries overview": "Overzicht batterijen",
+ "Purchase": "Aankoop",
+ "Consume": "Consumeren",
+ "Inventory": "Voorraad",
+ "Shopping list": "Boodschappenlijst",
+ "Chore tracking": "Klussen volgen",
+ "Battery tracking": "Batterij volgen",
+ "Locations": "Locaties",
+ "Stores": "Winkel",
+ "Quantity units": "Hoeveelheidseenheden",
+ "Chores": "Klussen",
+ "Batteries": "Batterijen",
+ "Chore": "Klus",
+ "Next estimated tracking": "Volgende geschatte opvolging",
+ "Last tracked": "Laatst gevolgd",
+ "Battery": "Batterij",
+ "Last charged": "Laatst opgeladen",
+ "Next planned charge cycle": "Volgende geplande laadcyclus",
+ "Best before": "Tenminste houdbaar tot",
+ "OK": "OK",
+ "Product overview": "Productoverzicht",
+ "Stock quantity unit": "Voorraadhoeveelheidseenheid",
+ "Stock amount": "Voorraadhoeveelheid",
+ "Last purchased": "Laatst gekocht",
+ "Last used": "Laatst gebruikt",
+ "Spoiled": "Bedorven",
+ "Barcode lookup is disabled": "Zoeken op streepjescode is uitgeschakeld",
+ "will be added to the list of barcodes for the selected product on submit": "wordt toegevoegd aan de lijst van streepjescodes voor het geselecteerde product",
+ "New amount": "Nieuwe hoeveelheid",
+ "Note": "Notitie",
+ "Tracked time": "Bijgehouden tijd",
+ "Chore overview": "Overzicht klus",
+ "Tracked count": "Bijgehouden aantal",
+ "Battery overview": "Batterijoverzicht",
+ "Charge cycles count": "Aantal laadcycli",
+ "Create shopping list item": "Maak een item in de boodschappenlijst",
+ "Edit shopping list item": "Bewerk item in de boodschappenlijst",
+ "Save": "Opslaan",
+ "Add": "Toevoegen",
+ "Name": "Naam",
+ "Location": "Locatie",
+ "Min. stock amount": "Min. voorraadhoeveelheid",
+ "Description": "Omschrijving",
+ "Create product": "Maak een product",
+ "Barcode(s)": "Streepjescode(s)",
+ "Minimum stock amount": "Minimale voorraadhoeveelheid",
+ "Default best before days": "Standaard houdbaarheidsdata",
+ "Default quantity unit purchase": "Standaard aankoopeenheid",
+ "Quantity unit stock": "Voorraadeenheid",
+ "Factor purchase to stock quantity unit": "Factor van aankoop- naar voorraadeenheid",
+ "Create location": "Maak een locatie",
+ "Create store": "Maak winkel",
+ "Create quantity unit": "Maak hoeveelheidseenheid",
+ "Period type": "Periode type",
+ "Period days": "Periode dagen",
+ "Create chore": "Maak klus",
+ "Used in": "Gebruikt in",
+ "Create battery": "Maak een batterij",
+ "Edit battery": "Bewerk batterij",
+ "Edit chore": "Bewerk klus",
+ "Edit quantity unit": "Bewerk hoeveelheidseenheid",
+ "Edit product": "Bewerk product",
+ "Edit location": "Wijzig locatie",
+ "Edit store": "Bewerk winkel",
+ "Record data": "Gegevens opslaan",
+ "Manage master data": "Beheer masterdata",
+ "This will apply to added products": "Dit zal toegepast worden op toegevoegde producten",
+ "never": "nooit",
+ "Add products that are below defined min. stock amount": "Voeg producten toe die onder min. voorraadhoeveelheid zijn",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Dit betekent dat 1 {string1} aankoop geconverteerd zal worden in {string2} {string3} voorraad",
+ "Login": "Login",
+ "Username": "Gebruikersnaam",
+ "Password": "Wachtwoord",
+ "Invalid credentials, please try again": "Ongeldige aanmeldgegevens",
+ "Are you sure to delete battery \"{string0}\"?": "Klaar om batterij \"{string0}\" te verwijderen?",
+ "Yes": "Ja",
+ "No": "Nee",
+ "Are you sure to delete chore \"{string0}\"?": "Ben je zeker dat je klus \"{string0}\" wilt verwijderen?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" kon niet aan een product gelinkt worden, hoe wil je verder gaan?",
+ "Create or assign product": "Maak of assigneer product",
+ "Cancel": "Annuleer",
+ "Add as new product": "Voeg toe als nieuw product",
+ "Add as barcode to existing product": "Voeg toe als streepjescode bij bestaand product",
+ "Add as new product and prefill barcode": "Voeg toe als nieuw product en vul streepjescode in",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Weet u zeker dat u hoeveelheidseenheid \"{string0}\" wilt verwijderen?",
+ "Are you sure to delete product \"{string0}\"?": "Weet u zeker dat u product \"{string0}\" wilt verwijderen?",
+ "Are you sure to delete location \"{string0}\"?": "Weet u zeker dat u locatie \"{string0}\" wilt verwijderen?",
+ "Are you sure to delete store \"{string0}\"?": "Weet je zeker dat je winkel \"{string0}\" wilt verwijderen?",
+ "Manage API keys": "Beheer API sleutels",
+ "REST API & data model documentation": "REST API & data model documentatie",
+ "API keys": "API sleutels",
+ "Create new API key": "Maak nieuwe API sleutel",
+ "API key": "API sleutel",
+ "Expires": "Vervalt",
+ "Created": "Aangemaakt",
+ "This product is not in stock": "Dit product is niet in voorraad",
+ "This means {string0} will be added to stock": "{string0} zal worden toegevoegd aan de voorraad",
+ "This means {string0} will be removed from stock": "{string0} zal worden verwijderd uit de voorraad",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Dit betekent dat de volgende uitvoering van deze klus {string0} dagen na de laatste uitvoering is gepland.",
+ "Removed {string1} of {string2} from stock": "{string1} {string2} verwijderd uit de voorraad",
+ "About grocy": "Over grocy",
+ "Close": "Sluit",
+ "Released on": "Vrijgegeven op",
+ "Added {string1} of {string2} to stock": "{string1} {string2} toegevoegd aan de voorraad",
+ "Stock amount of {string1} is now {string2}": "Van {string1} is er nu {string2} in voorraad",
+ "Tracked execution of chore {string1} on {string2}": "Bijgehouden uitvoering van klus {string1} op {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Bijgehouden laadcyclus van batterij {string1}op {string2}",
+ "Consume all {string0} which are currently in stock": "Consumeer alle {string0} in voorraad",
+ "All": "Alle",
+ "Search": "Zoeken",
+ "Not logged in": "Niet ingelogd",
+ "You have to select a product": "Je moet een product selecteren",
+ "You have to select a chore": "Je moet een klus selecteren",
+ "You have to select a battery": "Je moet een batterij selecteren",
+ "A name is required": "Een naam is vereist",
+ "A location is required": "Een locatie is vereist",
+ "A quantity unit is required": "Een hoeveelheidseenheid is vereist",
+ "A period type is required": "Een periodetype is vereist",
+ "A best before date is required": "Een THT-datum is vereist",
+ "Settings": "Instellingen",
+ "This can only be before now": "Dit kan een voor nu zijn",
+ "Calendar": "Kalender",
+ "Recipes": "Recepten",
+ "Edit recipe": "Bewerk recept",
+ "Ingredients list": "Ingrediëntenlijst",
+ "Add recipe ingredient": "Voeg ingrediënt toe aan recept",
+ "Edit recipe ingredient": "Bewerk ingrediënt",
+ "Are you sure to delete recipe \"{string0}\"?": "Ben je zeker dat je recept \"{string0}\" wil verwijderen?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Ben je zeker dat je ingrediënt \"{string0}\" wil verwijderen?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Weet je zeker dat je boodschappenlijst {string0} leeg wilt maken?",
+ "Clear list": "Maak lijst leeg",
+ "Requirements fulfilled": "Vereisten volbracht",
+ "Put missing products on shopping list": "Voeg ontbrekende producten toe aan boodschappenlijst",
+ "Enough in stock": "Genoeg in voorraad",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Niet genoeg op voorraad, {count} ontbreekt en staat al op de boodschappenlijst | Niet genoeg in voorraad, {count} ingrediënten ontbreken en staan al op de boodschappenlijst",
+ "Expand to fullscreen": "Fullscreen",
+ "Ingredients": "Ingrediënten",
+ "Preparation": "Bereiding",
+ "Recipe": "Recept",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Niet genoeg op voorraad, {string1} ontbreekt, {string2} al op de boodschappenlijst",
+ "Show notes": "Toon notities",
+ "Put missing amount on shopping list": "Zet ontbrekende hoeveelheid op boodschappenlijst",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Weet je zeker dat je alle ontbrekende ingrediënten voor recept \"{string0}\" op de boodschappenlijst wilt zetten?",
+ "Added for recipe {string0}": "Toegevoegd voor recept {string0}",
+ "Manage users": "Beheer gebruikers",
+ "User": "Gebruiker",
+ "Users": "Gebruikers",
+ "Are you sure to delete user \"{string0}\"?": "Ben je zeker dat je gebruiker \"{string0}\" wilt verwijderen?",
+ "Create user": "Maak gebruiker",
+ "Edit user": "Bewerk gebruiker",
+ "First name": "Voornaam",
+ "Last name": "Achternaam",
+ "A username is required": "een gebruikersnaam is verplicht",
+ "Confirm password": "Bevestig wachtwoord",
+ "Passwords do not match": "Wachtwoorden komen niet overeen",
+ "Change password": "Wachtwoord wijzigen",
+ "Done by": "Gedaan door",
+ "Last done by": "Laatst gedaan door",
+ "Unknown": "Onbekend",
+ "Chores journal": "Klussendagboek",
+ "0 means suggestions for the next charge cycle are disabled": "0 betekent dat suggesties voor de volgende laadcyclus zijn uitgeschakeld",
+ "Charge cycle interval (days)": "Laadcyclusinterval (dagen)",
+ "Last price": "Laatste prijs",
+ "Price history": "Prijsgeschiedenis",
+ "No price history available": "Geen prijsgeschiedenis beschikbaar",
+ "Price": "Prijs",
+ "Unit": "Eenheid",
+ "{count} Unit | {count} Units": "{count}eenheid | {count}eenheden",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count}klusje is om uitgevoerd te worden | {count} klussen om te doen",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count}klus moet nog gedaan worden | {count} achterstallige klussen te doen",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "Er moet {count} batterij opgeladen worden | Er moeten {count} batterijen opgeladen worden",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} batterij moet nog opgeladen worden | {count}batterijen moeten nog opgeladen worden",
+ "in singular form": "In enkelvoud",
+ "Quantity unit": "Hoeveelheidseenheid",
+ "Only check if any amount is in stock": "Controleer alleen of er een aantal op voorraad is",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "Weet je zeker dat je alle ingrediënten gebruikt die nodig zijn voor het recept \"{string0}\" (ingrediënten gemarkeerd met \"controleer alleen als een enkele eenheid op voorraad is\" worden genegeerd)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Alle ingrediënten van recept \"{string0}\" uit voorraad verwijderd",
+ "Consume all ingredients needed by this recipe": "Consumeer alle ingrediënten die voor dit recept nodig zijn",
+ "Click to show technical details": "Klik om technische details te tonen",
+ "Error while saving, probably this item already exists": "Error bij opslaan, waarschijnlijk bestaat dit item al",
+ "Error details": "Error details",
+ "Tasks": "Taken",
+ "Show done tasks": "Toon afgewerkte klusjes",
+ "Task": "Klus",
+ "Due": "Verwacht",
+ "Assigned to": "Toegewezen aan",
+ "Mark task \"{string0}\" as completed": "Taak \"{string0}\" als voltooid aanduiden",
+ "Uncategorized": "Ongecategoriseerd",
+ "Task categories": "Taakcategorieën",
+ "Create task": "Maak taak",
+ "A due date is required": "Een vervaldatum is vereist",
+ "Category": "Categorie",
+ "Edit task": "Bewerk taak",
+ "Are you sure to delete task \"{string0}\"?": "Weet u zeker dat u taak \"{string0}\" wilt verwijderen?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count}taak moet uitgevoerd worden | {count} taken te doen",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count}taak moet nog uitgevoerd worden | {count} achterstallige taken te doen",
+ "Edit task category": "Bewerk taakcategorie",
+ "Create task category": "Maak kluscategorie",
+ "Product groups": "Productcategorieën",
+ "Ungrouped": "Geen categorie",
+ "Create product group": "Maak productcategorie",
+ "Edit product group": "Bewerk productcategorie",
+ "Product group": "Productcategorie",
+ "Are you sure to delete product group \"{string0}\"?": "Weet je zeker dat je productcategorie \"{string0}\" wilt verwijderen?",
+ "Stay logged in permanently": "Permanent aangemeld blijven",
+ "When not set, you will get logged out at latest after 30 days": "Wanneer niet aangevinkt zal je na maximum 30 dagen afgemeld worden",
+ "Status": "Status",
+ "Below min. stock amount": "Onder min. voorraadhoeveelheid",
+ "Expiring soon": "Verloopt binnenkort",
+ "Already expired": "Al verlopen",
+ "Due soon": "Bijna gepland",
+ "Overdue": "Achterstallig",
+ "View settings": "Beeld instellingen",
+ "Auto reload on external changes": "Auto-vernieuwen bij externe wijzigingen",
+ "Enable night mode": "Zet nachtmodus aan",
+ "Auto enable in time range": "Automatisch aanzetten in tijdsspanne",
+ "From": "Van",
+ "in format": "in formaat",
+ "To": "Tot",
+ "Time range goes over midnight": "Tijdsspanne gaat voorbij middernacht",
+ "Product picture": "Productafbeelding",
+ "No file selected": "Geen bestand geslecteerd",
+ "Delete": "Verwijderen",
+ "Select file": "Selecteer bestand",
+ "Image of product {string0}": "Afbeelding van product {string0}",
+ "Deletion not possible": "Verwijderen niet mogelijk",
+ "Equipment": "Apparaten",
+ "Instruction manual": "Gebruikshandleiding",
+ "The selected equipment has no instruction manual": "Het geselecteerde apparaat heeft geen gebruikshandleiding",
+ "Notes": "Notities",
+ "Edit equipment": "Bewerk apparaat",
+ "Create equipment": "Maak apparaat",
+ "The current file will be deleted on save": "Het huidige bestand zal worden verwijderd wanneer je het recept opslaat",
+ "No picture available": "Geen afbeelding beschikbaar",
+ "Presets for new products": "Vooraf ingesteld voor nieuwe producten",
+ "Included recipes": "Bijgevoegde recepten",
+ "A recipe is required": "Een recept is vereist",
+ "Add included recipe": "Voeg bijgevoegd recept toe",
+ "Edit included recipe": "Bewerk bijgevoegd recept",
+ "Group": "Groep",
+ "This will be used as a headline to group ingredients together": "Dit is een hoofding om ingrediënten te groeperen",
+ "Journal": "Dagboek",
+ "Stock journal": "Voorraad dagboek",
+ "Undone on": "Ongedaan gemaakt op",
+ "Batteries journal": "Batterijdagboek",
+ "Undo charge cycle": "Laadcyclus ongedaan maken",
+ "Undo chore execution": "Klus uitvoer ongedaan maken",
+ "Chore execution successfully undone": "Klus uitvoer ongedaan gemaakt",
+ "Undo": "Ongedaan maken",
+ "Booking successfully undone": "Boeking is ongedaan gemaakt",
+ "Charge cycle successfully undone": "Laadcyclus is ongedaan gemaakt",
+ "Disable stock fulfillment checking for this ingredient": "Schakel voorraadcontrole voor dit ingrediënt uit",
+ "Add all list items to stock": "Voeg alle lijstitems toe aan voorraad",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Item {string1} van {string2} van boodschappenlijst toevoegen",
+ "Use a specific stock item": "Gebruik een specifiek voorraaditem",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "Het eerste item in deze lijst wordt gekozen met de standaardregel: \"Als eerste geopend, daarna als eerste over datum, daarna eerste in eerste uit\"",
+ "Mark {string1} of {string2} as open": "Markeer {string1} {string2} als geopend",
+ "Marked {string1} of {string2} as opened": "{string1} {string2}gemarkeerd als geopend",
+ "Mark as opened": "Markeer als geopend",
+ "Not opened": "Niet geopend",
+ "Opened": "Geopend",
+ "{string0} opened": "{string0} geopend",
+ "Product due": "Product vervalt",
+ "Task due": "Taak te doen",
+ "Chore due": "Klus tegen",
+ "Battery charge cycle due": "Batterij oplaadcyclus nabij",
+ "Show clock in header": "Toon klok in koptekst",
+ "Stock settings": "Voorraadinstellingen",
+ "Shopping list to stock workflow": "Boodschappenlijst voor voorraad workflow",
+ "Skip": "Overslaan",
+ "Servings": "Porties",
+ "Costs": "Kosten",
+ "Based on the prices of the last purchase per product": "Gebaseerd op de prijs van de laatste aankoop per product",
+ "The ingredients listed here result in this amount of servings": "De ingrediënten die hier worden vermeld, resulteren in dit aantal porties",
+ "Do not check against the shopping list when adding missing items to it": "Controleer niet op de boodschappenlijst wanneer u ontbrekende items eraan toevoegt",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Standaard is het aantal dat moet worden toegevoegd aan de boodschappenlijst \"benodigde hoeveelheid - voorraadbedrag - aantal bestedingslijsten\" - wanneer dit is ingeschakeld, wordt het alleen vergeleken met het voorraad aantal, niet met wat al op de boodschappenlijst staat",
+ "Picture": "Afbeelding",
+ "Uncheck ingredients to not put them on the shopping list": "Zet het vinkje uit om ingrediënten niet op de boodschappenlijst te zetten",
+ "This is for statistical purposes only": "Dit dient enkel voor statistische doeleinden",
+ "You have to select a recipe": "Je moet een recept selecteren",
+ "Key type": "Sleutel type",
+ "Share/Integrate calendar (iCal)": "Deel/Integreer agenda (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Gebruik de volgende (publieke) URL om de agenda te delen of integreren in iCal formaat",
+ "Allow partial units in stock": "Sta gedeeltelijke eenheden in voorraad toe",
+ "Enable tare weight handling": "Gebruik van tarragewicht afhandelen",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Dit is nuttig voor b.v. meel in potten - bij aankoop/consumptie/inventaris weeg je altijd de hele pot, de te boeken hoeveelheid wordt dan automatisch berekend op basis van wat op voorraad is en het tarragewicht hieronder gedefinieerd",
+ "Tare weight": "Tarragewicht",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Tare weight handling ingeschakeld: weeg de hele container af, het te boeken aantal wordt automatisch berekend",
+ "You have to select a location": "Je moet een locatie selecteren",
+ "You have to select a store": "Je moet een winkel selecteren",
+ "List": "Lijst",
+ "Gallery": "Galerij",
+ "The current picture will be deleted on save": "De huidige afbeelding zal worden verwijderd wanneer je het recept opslaat.",
+ "Journal for this battery": "Dagboek voor deze batterij",
+ "System info": "Systeeminfo",
+ "Changelog": "Changelog",
+ "will be multiplied by a factor of {string1} to get {string2}": "Wordt vermenigvuldigd met een factor van {string1} om {string2} te bekomen ",
+ "The given date is earlier than today, are you sure?": "De opgegeven datum is eerder dan vandaag; weet je het zeker?",
+ "Product count": "Productenteller",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "Typ een nieuwe productnaam of streepjescode en druk op TAB of ENTER om een workflow te starten",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Dit wordt gebruikt als de standaardinstelling bij het toevoegen van dit product als receptingrediënt",
+ "Add item": "Voeg item toe",
+ "Selected shopping list": "Selecteer boodschappenlijst",
+ "New shopping list": "Nieuwe boodschappenlijst",
+ "Delete shopping list": "Verwijder boodschappenlijst",
+ "Chores settings": "Klusinstellingen",
+ "Batteries settings": "Batterij instellingen",
+ "Tasks settings": "Taken instellingen",
+ "Create shopping list": "Maak boodschappenlijst",
+ "Are you sure to delete shopping list \"{string0}\"?": "Weet je zeker dat je boodschappenlijst {string0} wilt verwijderen?",
+ "Average shelf life": "Gemiddelde houdbaarheid",
+ "Spoil rate": "Verspillings gemiddelde",
+ "Show more": "Laat meer zien",
+ "Show less": "Laat minder zien",
+ "The amount must be between {string1} and {string2}": "Het aantal moet tussen {string1}en {string2} zijn",
+ "Day of month": "Dag van de maand",
+ "Monday": "Maandag",
+ "Tuesday": "Dinsdag",
+ "Wednesday": "Woensdag",
+ "Thursday": "Donderdag",
+ "Friday": "Vrijdag",
+ "Saturday": "Zaterdag",
+ "Sunday": "Zondag",
+ "Configure userfields": "Configureer gebruikersvelden",
+ "Userfields": "Gebruikersvelden",
+ "Entity": "Entiteit",
+ "Caption": "Onderschrift",
+ "Type": "Type",
+ "Create userfield": "Maak gebruikersveld aan",
+ "A entity is required": "Een entiteit is vereist",
+ "A caption is required": "Een beschrijving is vereist",
+ "A type is required": "Een type is vereist",
+ "Show as column in tables": "Laat als kolom zien in tabellen",
+ "This is required and can only contain letters and numbers": "Dit is vereist en kan alleen cijfers en letters bevatten",
+ "Edit userfield": "Wijzig gebruikersveld",
+ "Plural forms": "Meervoudsvormen",
+ "One plural form per line, the current language requires": "Een meervoudsvorm per regel, de huidige taal vereist",
+ "Plural count": "Meervoud aantal",
+ "Plural rule": "Meervoudsregel",
+ "in plural form": "In meervoud",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Niet genoeg op voorraad, {count} ingrediënt ontbreekt. | Niet genoeg op voorraad, {count} ingrediënten ontbreken.",
+ "Not enough in stock, but already on the shopping list": "Niet genoeg op voorraad, maar al op het boodschappenlijstje",
+ "Not enough in stock": "Niet genoeg op voorraad",
+ "Expiring soon days": "Vervalt binnenkort dagen",
+ "Default location": "Standaardlocatie",
+ "Default amount for purchase": "Standaardhoeveelheid voor aankoop",
+ "Default amount for consume": "Standaardhoeveelheid voor consumeren",
+ "Variable amount": "Variabele hoeveelheid",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Wanneer dit niet leeg is, wordt dit weergegeven in plaats van de hierboven ingevoerde hoeveelheid, terwijl het aantal daar nog steeds zal worden gebruikt voor controle van de voorraadafhandeling",
+ "Track date only": "Alleen datum bijhouden",
+ "When enabled only the day of an execution is tracked, not the time": "Wanneer ingeschakeld, wordt alleen de dag van een uitvoering bijgehouden, niet de tijd",
+ "Consume {string1} of {string2}": "Consumeer {string1} {string2}",
+ "Meal plan": "Maaltijdplan",
+ "Add recipe on {string0}": "Voeg recept toe op {string0}",
+ "{count} serving | {count} servings": "{count} portie | {count} porties",
+ "Week costs": "Weekkosten",
+ "Configuration": "Configuratie",
+ "A predefined list of values, one per line": "Een vooraf gedefinieerde lijst met waarden, één per regel",
+ "Products": "Producten",
+ "Marked task {string0} as completed on {string0}": "Gemarkeerde taak {string0} voltooid op {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Boeking heeft latere afhankelijke boekingen, ongedaan maken niet mogelijk",
+ "per serving": "per portie",
+ "Never": "Nooit",
+ "Today": "Vandaag",
+ "Consume {string1} of {string2} as spoiled": "Consumeer {string1} {string2} als bedorven",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Niet alle ingrediënten van het recept \"{string0}\" zijn op voorraad, er is niets verwijderd",
+ "Undo task": "Ongedaan maken",
+ "Due date rollover": "Vervaldatum verlopen",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Wanneer de klus ingeschakeld is, kan deze nooit verlopen. De vervaldatum wordt elke dag vooruit geschoven wanneer deze verlopen is.",
+ "Location Content Sheet": "Overzicht per locatie",
+ "Print": "Afdrukken",
+ "all locations": "alle locaties",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "Hier kunt u een overzicht per locatie afdrukken met de huidige voorraad. Bijvoorbeeld om het daar op te hangen en dan de verbruikte artikelen op te noteren.",
+ "this location": "deze locatie",
+ "Consumed amount": "Geconsumeerde hoeveelheid",
+ "Time of printing": "Afdruktijdstip",
+ "Are you sure to delete equipment \"{string0}\"?": "Weet je zeker dat je apparaat \"{string0}\" wilt verwijderen?",
+ "Parent product": "Parent product",
+ "Not possible because this product is already used as a parent product in another product": "Niet mogelijk, omdat het product al wordt gebruikt als parent product in een ander product.",
+ "Default conversions": "Standaardconversies",
+ "Factor": "Factor",
+ "1 {string0} is the same as...": "1 {string0} is hetzelfde als...",
+ "Create QU conversion": "Maak hoeveelheidseenheidsconversie",
+ "Default for QU": "Standaard hoeveelheidseenheid",
+ "Quantity unit from": "Van hoeveelheidseenheid",
+ "Quantity unit to": "Naar hoeveelheidseenheid",
+ "This cannot be equal to {string0}": "Dit mag niet gelijk zijn aan {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Dit betekent dat 1 {string1} hetzelfde is als {string2}{string3}",
+ "QU conversions": "Hoeveelheidseenheidsconversies",
+ "Product overrides": "Product overschreden",
+ "Override for product": "Overschreden van product",
+ "This equals {string1} {string2}": "Dit komt overeen met {string1}{string2}",
+ "Edit QU conversion": "Wijzig hoeveelheidseenheidsconversies",
+ "An assignment type is required": "Een opdrachttype is vereist",
+ "Assignment type": "Opdrachttype",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Dit betekent dat de volgende uitvoering van deze klus 1 dag na de laatste uitvoering is gepland.",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Dit betekent dat de volgende uitvoering van deze klus 1 dag na de laatste uitvoering is gepland, maar alleen voor de onderstaand geselecteerde dagen.",
+ "This means the next execution of this chore is not scheduled": "Dit betekent dat de volgende uitvoering van deze klus niet gepland staat.",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Dit betekent dat de volgende uitvoering van deze klus elke maand gepland staat voor de onderstaand geselecteerde dagen.",
+ "This means the next execution of this chore will not be assigned to anyone": "Dit betekent dat de volgende uitvoering van deze klus niet meer aan iemand toegewezen staat.",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Dit betekent dat de volgende uitvoering van deze klus aan iemand toegewezen wordt die hem het minst heeft uitgevoerd.",
+ "This means the next execution of this chore will be assigned randomly": "Dit betekent dat de volgende uitvoering van deze klus willekeurig aan iemand toegewezen wordt.",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Dit betekent dat de volgende uitvoering van deze klus in alfabetische volgorde aan iemand toegewezen wordt.",
+ "Assign to": "Wijs toe aan",
+ "This assignment type requires that at least one is assigned": "Voor dit toewijzingstype moet er minstens één worden toegewezen",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} klusje is toegewezen aan mij | {count} klussen toegewezen aan mij",
+ "Assigned to me": "Toegewezen aan mij",
+ "assigned to {string0}": "Toegewezen aan {string0}",
+ "Assignment": "Toewijzing",
+ "Consume product on chore execution": "Consumeer product bij uitvoeren klus",
+ "Are you sure to delete user field \"{string0}\"?": "Weet u zeker dat u het gebruikersveld {string0} wilt verwijderen?",
+ "Userentities": "Gebruikersentiteit",
+ "Create userentity": "Maak gebruikersentiteit",
+ "Show in sidebar menu": "Weergeven in zijbalkmenu",
+ "Edit userentity": "Wijzig gebruikersentiteit",
+ "Edit {string0}": "Bewerk {string0}",
+ "Create {string0}": "Maak {string0}",
+ "Are you sure to delete this userobject?": "Weet u zeker dat u het gebruikersobject wil verwijderen?",
+ "Icon CSS class": "Icon CSS class",
+ "For example": "Bijvoorbeeld",
+ "Configure fields": "Velden configureren",
+ "Quantity unit plural form testing": "Hoeveelheidseenheid meervoudsvorm testen",
+ "Result": "Resultaat",
+ "Test plural forms": "Test meervoudsvormen",
+ "Scan a barcode": "Scan een streepjescode",
+ "Error while initializing the barcode scanning library": "Fout bij het initialiseren van de barcodescanbibliotheek",
+ "The resulting price of this ingredient will be multiplied by this factor": "De uitkomst van de prijs van dit ingrediënt wordt vermenigvuldigd met deze factor",
+ "Price factor": "Prijsfactor",
+ "Do you find grocy useful?": "Vind je grocy handig?",
+ "Say thanks": "Zeg bedankt",
+ "Search for recipes containing this product": "Zoek naar recepten met dit product",
+ "Add to shopping list": "Voeg toe aan boodschappenlijst",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "{string1} {string2} toegevoegd aan boodschappenlijst \"{string3}\"",
+ "Output": "Uitvoer",
+ "Energy (kcal)": "Energie (kcal)",
+ "Per stock quantity unit": "Voorraadhoeveelheidseenheid",
+ "Barcode scanner testing": "Testen streepjescodescanner",
+ "Expected barcode": "Verwachte streepjescode",
+ "Scan field": "Scanveld",
+ "Scanned barcodes": "Gescande streepjescodes",
+ "Hit": "Raak",
+ "Miss": "Mis",
+ "Display recipe": "Toon recept",
+ "Accumulate sub products min. stock amount": "Verzamel minimale voorraad sub producten",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Indien ingeschakeld, de min. voorraad van sub producten zal worden verzameld in dit product, wat betekent dat het sub product nooit zal \"ontbreken\", alleen dit product",
+ "Are you sure to remove this conversion?": "Weet u zeker dat u deze conversie wilt verwijderen.",
+ "Unit price": "Prijs per eenheid",
+ "Total price": "Totale prijs",
+ "in {string0} and based on the purchase quantity unit": "in {string0}en gebaseerd op de aankoopshoeveelheidseenheid",
+ "Unlimited": "Onbegrensd",
+ "Clear": "Wis",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Weet u zeker dat het recept \"{string0}\" wil toevoegen?",
+ "Period interval": "Periode interval",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Dit betekent dat de volgende uitvoering van deze klus, alleen elke {string0} dagen gepland mag worden. ",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Dit betekent dat de volgende uitvoering van deze klus alleen elke {string0} weken gepland mag worden. ",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Dit betekent dat de volgende uitvoering van deze klus alleen elke {string0} maanden gepland mag worden. ",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Dit betekent dat de volgende uitvoering van deze klus 1 jaar na de laatste uitvoering gepland wordt.",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Dit betekent dat de volgende uitvoering van deze klus alleen elke {string0} jaar gepland mag worden. ",
+ "Transfer": "Overdragen",
+ "From location": "Van locatie",
+ "To location": "Naar locatie",
+ "There are no units available at this location": "Er zijn geen items beschikbaar op deze locatie",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "Hoeveelheid: {string1}; Verloopt op {string2}; Gekocht op {string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "{string1} van {string2} overgedragen van {string3} naar {string4}",
+ "Stock entries": "Voorraad items",
+ "Best before date": "Tenminste houdbaar tot",
+ "Purchased date": "Aangeschafte datum",
+ "Consume all {string0} for this stock entry": "Consumeer {string0} van deze voorraad",
+ "The amount cannot be lower than {string1}": "De hoeveelheid kan niet lager zijn dan {string1}",
+ "Stock entry successfully updated": "Voorraad item succesvol geüpdatet",
+ "Edit stock entry": "Bewerk voorraad item",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Cameratoegang is alleen mogelijk als uw browser dit ondersteunt en toelaat en wanneer u verbindt met grocy via een beveiligde verbinding (https://).",
+ "Keep screen on": "Houd scherm aan",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Houd scherm aan bij het weergeven van een \"fullscreen-card\"",
+ "A purchased date is required": "Een aanschafdatum is vereist",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "Wanneer een product is geselecteerd, zal een eenheid ervan worden toegevoegd aan de voorraad bij consumptie van dit recept (per portie zoals in de aankoophoeveelheidseenheid).",
+ "Produces product": "Maakt product",
+ "This booking cannot be undone": "Deze reservering kan niet ongedaan worden gemaakt",
+ "Booking does not exist or was already undone": "Boeking bestaat niet of was reeds ongedaan gemaakt",
+ "Are you sure to delete API key \"{string0}\"?": "Bent u zeker dat u API sleutel “{string0}” wilt verwijderen?",
+ "Add note": "Voeg notitie toe",
+ "Add note on {string0}": "Voeg notitie toe aan {string0}",
+ "per day": "per day",
+ "Only undone items": "Alleen nog niet afgehandelde items",
+ "Add product": "Voeg product toe",
+ "Add product on {string0}": "Voeg product toe aan {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Consumeer alle ingrediënten die nodig zijn voor de recepten of producten van deze week",
+ "Meal plan recipe": "Maaltijdplan recept",
+ "Meal plan note": "Maaltijdplan notitie",
+ "Meal plan product": "Maaltijdplan product",
+ "Scan mode": "Scan modus",
+ "on": "aan",
+ "off": "uit",
+ "Scan mode is on but not all required fields could be populated automatically": "Scan modus is geactiveerd, maar niet alle vereiste velden konden automatisch ingevuld worden",
+ "Is freezer": "Is diepvriezer",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Bij het verplaatsen van producten van/naar een driepvriezer locatie, zal de THT datum automatisch aangepast worden volgens de product instellingen",
+ "This cannot be the same as the \"From\" location": "Dit kan niet hetzelfde zijn als de “Van” locatie",
+ "Thawed": "Ontdooid",
+ "Frozen": "Ingevroren",
+ "Are you sure to delete userentity \"{string0}\"?": "Ben je zeker dat je gebruikerentiteit \"{string0}\" wilt verwijderen?",
+ "Shopping list settings": "Instellingen voor het boodschappenlijstje",
+ "Show a month-view calendar": "Toon de maandkalender.",
+ "Edit note on {string0}": "Bewerk notitie over {string0}",
+ "Edit product on {string0}": "Bewerk product over {string0}",
+ "Edit recipe on {string0}": "Bewerk recept over {string0}",
+ "Desired servings": "Gewenst aantal porties",
+ "Base: {string0}": "Basis: {string0}",
+ "Recipes settings": "Recept instellingen",
+ "Recipe card": "Receptfiche",
+ "Group ingredients by their product group": "Groepeer ingrediënten per productcategorie",
+ "Unknown store": "Onbekende winkel",
+ "Store": "Winkel",
+ "Transaction successfully undone": "Transactie succesvol ongedaan gemaakt",
+ "Default store": "Standaardwinkel",
+ "Consume this stock entry": "Consumeer deze voorraad",
+ "Mark this stock entry as open": "Markeer deze voorraad als open",
+ "Mark this item as done": "Markeer dit item als afgehandeld",
+ "Edit this item": "Wijzig dit item",
+ "Delete this item": "Verwijder dit item",
+ "Show an icon if the product is already on the shopping list": "Toon een symbool indien dit product al op het boodschappenlijstje staat",
+ "Calories": "Calorieën",
+ "means {string1} per {string2}": "Betekent {string1} per {string2}",
+ "Create inverse QU conversion": "Maak tegenovergestelde hoeveelheidseenheidsconversie",
+ "Create recipe": "Maak een recept",
+ "Save & continue to add ingredients and included recipes": "Bewaar en ga door met het toevoegen van ingrediënten en toegevoegde recepten",
+ "Save & continue": "Opslaan en doorgaan",
+ "Save & return to recipes": "Opslaan en terugkeren naar recepten",
+ "Stock value": "Voorraadhoeveelheid",
+ "Average price": "Gemiddelde prijs",
+ "Active": "Actief",
+ "Barcodes": "Streepjescodes",
+ "Barcode": "Streepjescode",
+ "Create Barcode": "Maak streepjescode",
+ "Barcode for product": "Streepjescode van product",
+ "Edit Barcode": "Bewerk streepjescode",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Niet genoeg op voorraad (niet inbegrepen in de kosten), {string0} ingrediënten ontbreken",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "Gebaseerd op de prijzen van de standaardregel voor consumeren: \"Als eerste geopend, daarna als eerste over datum, daarna eerste in eerste uit\"",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Niet genoeg op voorraad (niet inbegrepen in de kosten), {string1} ontbreekt, {string2} al op de boodschappenlijst",
+ "Quantity unit stock cannot be changed after first purchase": "Hoeveelheid item voorraad kan niet gewijzigd worden na eerste aankoop",
+ "Clear filter": "Leeg filter",
+ "Permissions for user {string0}": "Rechten voor gebruiker {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "Weet u zeker dat u alle rechten wilt verwijderen van uzelf?",
+ "Permissions saved": "Rechten opgeslagen",
+ "You are not allowed to view this page": "U bent niet gemachtigd om deze pagina te bekijken",
+ "Page not found": "Pagina niet gevonden",
+ "Unauthorized": "Ongeautoriseerd ",
+ "Error source": "Fout bron",
+ "Error message": "Fout bericht",
+ "Stack trace": "Stack trace",
+ "Easy error info copy & paste (for reporting)": "Makkelijk fout informatie kopiëren en plakken (voor rapporteren)",
+ "This page does not exist": "Deze pagina bestaat niet",
+ "You will be redirected to the default page in {string0} seconds": "U zult worden herleid naar de standaard pagina in {string0} seconden",
+ "Server error": "Server fout",
+ "A server error occured while processing your request": "Een server fout heeft zich voorgedaan tijdens het verwerken van uw verzoek",
+ "If you think this is a bug, please report it": "Als u denkt dat dit een bug is, rapporteer deze aub",
+ "Language": "Taal",
+ "User settings": "Gebruiker instellingen",
+ "Default": "Standaard",
+ "Stock journal summary": "Voorraad dagboek samenvatting",
+ "Journal summary": "Dagboek samenvatting",
+ "Journal summary for this product": "Dagboek samenvatting voor dit product",
+ "Consume exact amount": "Gebruik precies deze hoeveelheid",
+ "Value": "Waarde",
+ "{string0} total value": "{string0} totale waarde",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "Toon aankoop datum op aankoop en voorraad pagina (anders zal de aankoop datum standaard op vandaag worden gezet)",
+ "Common": "Gebruikelijk",
+ "Decimal places allowed for amounts": "Decimalen zijn toegestaan in de hoeveelheid",
+ "Decimal places allowed for prices": "Decimalen zijn toegestaan voor de prijs",
+ "Stock entries for this product": "Voorraad items voor dit product",
+ "Edit shopping list": "Wijzig boodschappenlijst",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "Opslaan en terugkeren naar producten",
+ "Save & continue to add conversions": "Opslaan en ga door met het toevoegen van conversies",
+ "Save & return to quantity units": "Opslaan en terugkeren voorraadhoeveelheden",
+ "price": "prijs",
+ "New stock amount": "Nieuwe voorraadhoeveelheid",
+ "Price per stock unit": "Prijs per voorraadeenheid ",
+ "Table options": "Tabel opties",
+ "This product is currently on a shopping list": "Dit product staat momenteel op een boodschappenlijst",
+ "Undo transaction": "Transactie ongedaan maken ",
+ "Transaction type": "Transactie type",
+ "Transaction time": "Transactie tijd",
+ "Chore journal": "Klus dagboek",
+ "Track chore execution": "Volg de uitvoering van de klus",
+ "Mark task as completed": "Markeer taak als compleet",
+ "Track charge cycle": "Volg laadcyclus",
+ "Battery journal": "Batterijdagboek",
+ "This product has a picture": "Dit product heeft een afbeelding",
+ "Consume this stock entry as spoiled": "Consumeer deze voorraad as bedorven",
+ "Configure user permissions": "Configureer gebruikers permissies",
+ "Show a QR-Code for this API key": "Toon een QR-code voor deze API sleutel",
+ "This is the default quantity unit used when adding this product to the shopping list": "Dit is de standaard hoeveelheid die word gebruikt bij het toevoegen van dit product aan de boodschappenlijst",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "Toon een waarschuwing wanneer de verloop datum van het gekochte product eerder is dan de volgende verloop datum is in de voorraad",
+ "This is due earlier than already in-stock items": "Dit verloopt eerder dan de al in voorraad producten",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "Snel deze hoeveelheid gebruiken",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "Kopieer",
+ "Are you sure to remove this barcode?": "Weet u zeker dat u deze streepjescode wilt verwijderen?",
+ "Due date type": "Vervaldatum soort",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "Gebaseerd op het geselecteerde type, zal de markering op de voorraad overzichtspagina afwijken",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "Betekend dat het product misschien nog veilig is om te consumeren na het verlopen van de houdbaarheidsdatum",
+ "Expiration date": "Houdbaarheidsdatum",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "Standaard houdbaarheidsdatum",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "Standaard houdbaarheidsdatum na openen",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "Wanneer dit product naar een diepvriezer locatie wordt verplaatst (dus bij invriezen), zal de THT datum vervangen worden door vandaag + dit aantal dagen",
+ "Default due days after freezing": "Standaard houdbaarheidsdatum na invriezen",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "Wanneer dit product uit een diepvriezer locatie wordt gehaald (dus bij ontdooien), zal de THT datum vervangen worden door vandaag + dit aantal dagen",
+ "Default due days after thawing": "Standaard houdbaarheidsdatum na ontdooien",
+ "Next due date": "Volgend houdbaarheidsdatum",
+ "{count} product is due | {count} products are due": "{count} product verloopt | {count} producten verlopen",
+ "Due date": "Vervaldatum",
+ "Never overdue": "Verloopt nooit",
+ "{count} product is expired | {count} products are expired": "{count} product is vervallen | {count} producten zijn al vervallen",
+ "Expired": "Overdatum",
+ "Due soon days": "Bij verlopen dagen",
+ "Add overdue/expired products": "Voeg over datum of verlopen producten toe",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "Bij het verplaatsen van producten van/naar een diepvriezer locatie wordt de THT datum automatisch aangepast op basis van de product instellingen",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "Sorteer nummer",
+ "Download file": "Download bestand",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "Uitgeschakeld",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "Toon uitgeschakeld",
+ "Never show on stock overview": "",
+ "None": "Geen",
+ "Group by": "Groepeer op",
+ "Ingredient group": "Ingrediënt groep",
+ "Reset": "Resetten",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "Toon koptekst",
+ "Group by product group": "",
+ "Table": "Tabel",
+ "Layout type": "Opmaakt type",
+ "Merge this product with another one": "",
+ "Merge products": "Voeg producten samen",
+ "Product to keep": "Product te behouden",
+ "Product to remove": "Product te verwijderen",
+ "Error while merging products": "Fout tijdens het samenvoegen van producten",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "Samenvoegen",
+ "Title": "Titel",
+ "Link": "Link",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "Print opties",
+ "A product or a note is required": "",
+ "no-assignment": "niet-toegewezen",
+ "who-least-did-first": "wie-minst-gedaan-heeft-eerst",
+ "random": "willekeurig",
+ "in-alphabetical-order": "in-alfabetische-volgorde",
+ "timeago_locale": "nl",
+ "timeago_nan": "NaN jaar geleden",
+ "moment_locale": "nl",
+ "datatables_localization": "{\"sProcessing\":\"Bezig...\",\"sLengthMenu\":\"_MENU_ resultaten weergeven\",\"sZeroRecords\":\"Geen resultaten gevonden\",\"sInfo\":\"_START_ tot _END_ van _TOTAL_ resultaten\",\"sInfoEmpty\":\"Geen resultaten om weer te geven\",\"sInfoFiltered\":\" (gefilterd uit _MAX_ resultaten)\",\"sInfoPostFix\":\"\",\"sSearch\":\"Zoeken:\",\"sEmptyTable\":\"Geen resultaten aanwezig in de tabel\",\"sInfoThousands\":\".\",\"sLoadingRecords\":\"Een moment geduld aub - bezig met laden...\",\"oPaginate\":{\"sFirst\":\"Eerste\",\"sLast\":\"Laatste\",\"sNext\":\"Volgende\",\"sPrevious\":\"Vorige\"},\"oAria\":{\"sSortAscending\":\": activeer om kolom oplopend te sorteren\",\"sSortDescending\":\": activeer om kolom aflopend te sorteren\"}}",
+ "summernote_locale": "nl-NL",
+ "fullcalendar_locale": "nl",
+ "bootstrap-select_locale": "nl_NL",
+ "purchase": "Aankoop",
+ "transfer_from": "Overdragen van",
+ "transfer_to": "Overdragen naar",
+ "consume": "Consumeren",
+ "inventory-correction": "Voorraadcorrectie",
+ "product-opened": "Product geopend",
+ "stock-edit-old": "Bewerk oude voorraad",
+ "stock-edit-new": "Bewerk oude voorraad",
+ "self-production": "Eigen gemaakt",
+ "manually": "handmatig",
+ "dynamic-regular": "dynamisch-regelmatig",
+ "daily": "dagelijks",
+ "weekly": "wekelijks",
+ "monthly": "maandelijks",
+ "yearly": "jaarlijks",
+ "text-single-line": "tekst-één-regel",
+ "text-multi-line": "tekst-meerdere-regels",
+ "number-integral": "nummer-héél-getal",
+ "number-decimal": "nummer-decimaal",
+ "date": "datum",
+ "datetime": "datum en tijd",
+ "checkbox": "selectievak",
+ "preset-list": "vooringestelde lijst",
+ "preset-checklist": "vooringestelde-lijst",
+ "link": "koppeling",
+ "link-with-title": "link-met-titel",
+ "file": "bestand",
+ "image": "afbeelding",
+ "ADMIN": "ADMINISTRATOR",
+ "USERS_CREATE": "GEBRUIKERS_AANMAKEN",
+ "USERS_EDIT": "GEBRUIKERS_BEWERKEN",
+ "USERS_READ": "GEBRUIKERS_LEZEN",
+ "USERS_EDIT_SELF": "GEBRUIKERS_ZELF_AANPASSEN",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "BATTERIJEN_OPLAAD_CYCLUS_ONGEDAANMAKEN",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "BATTERIJEN_OPLAAD_CYCLUS_VOLGEN",
+ "CHORE_TRACK_EXECUTION": "TAAK_UITVOERING_VOLGEN",
+ "CHORE_UNDO_EXECUTION": "TAAK_UITVOERING_ONGEDAANMAKEN",
+ "MASTER_DATA_EDIT": "MEESTER_DATA_AANPASSEN",
+ "TASKS_UNDO_EXECUTION": "TAKEN_UITVOERING_ONGEDAANMAKEN",
+ "TASKS_MARK_COMPLETED": "TAKEN_MARKEER_COMPLEET",
+ "STOCK_EDIT": "VOORRAAD_AANPASSEN",
+ "STOCK_TRANSFER": "VOORRAAD_VERPLAATSEN",
+ "STOCK_INVENTORY": "VOORRAAD_INVENTARIS",
+ "STOCK_CONSUME": "VOORRAAD_CONSUMEREN",
+ "STOCK_OPEN": "VOORRAAD_OPENEN",
+ "STOCK_PURCHASE": "VOORRAAD_AANKOOP",
+ "SHOPPINGLIST_ITEMS_ADD": "BOODSCHAPPENLIJST_ITEMS_TOEVOEGEN",
+ "SHOPPINGLIST_ITEMS_DELETE": "BOODSCHAPPENLIJST_ITEMS_VERWIJDEREN",
+ "USERS": "GEBRUIKERS",
+ "STOCK": "VOORRAAD",
+ "SHOPPINGLIST": "BOODSCHAPPENLIJST",
+ "CHORES": "TAKEN",
+ "BATTERIES": "BATTERIJEN",
+ "TASKS": "TAKEN",
+ "RECIPES": "RECEPTEN",
+ "EQUIPMENT": "APPARATUUR",
+ "CALENDAR": "KALENDER",
+ "RECIPES_MEALPLAN": "RECEPTEN_EETPLAN",
+ "cs": "Czech ",
+ "da": "Deens",
+ "de": "Duits",
+ "el_GR": "Grieks",
+ "en": "Engels",
+ "en_GB": "Engels (Groot-Brittannië) ",
+ "es": "Spaans",
+ "fr": "Frans",
+ "hu": "Hongaars",
+ "it": "Italiaans",
+ "ja": "Japans",
+ "ko_KR": "Koreaans",
+ "nl": "Nederlands",
+ "no": "Noors",
+ "pl": "Pools",
+ "pt_BR": "Portugees",
+ "pt_PT": "Portugees",
+ "ru": "Russisch",
+ "sk_SK": "Slovaaks",
+ "sv_SE": "Slovaaks",
+ "tr": "Turks",
+ "zh_TW": "Chinees (Taiwan)",
+ "zh_CN": "Chinees (China)",
+ "he_IL": "Hebreeuws",
+ "ta": "Tamils",
+ "fi": "Fins",
+ "Cookies": "Koekjes",
+ "Chocolate": "Chocolade",
+ "Pantry": "Voorraadkast",
+ "Candy cupboard": "Snoepjeskast",
+ "Tinned food cupboard": "Blikkenkast",
+ "Fridge": "Koelkast",
+ "Piece | Pieces": "Stuk | Stuks",
+ "Pack | Packs": "pak | pakken",
+ "Glass | Glasses": "Glas | Glazen",
+ "Tin | Tins": "Blikje | Blikjes",
+ "Can | Cans": "Blik | Blikken",
+ "Bunch | Bunches": "Bos | Bossen",
+ "Gummy bears": "Gombeertjes",
+ "Crisps": "Chips",
+ "Eggs": "Eieren",
+ "Noodles": "Noedels",
+ "Pickles": "Augurken",
+ "Gulash soup": "Goulashsoep",
+ "Yogurt": "Yoghurt",
+ "Cheese": "Kaas",
+ "Cold cuts": "Beleg",
+ "Paprika": "Paprika",
+ "Cucumber": "Komkommer",
+ "Radish": "Radijs",
+ "Tomato": "Tomaat",
+ "Changed towels in the bathroom": "Handdoeken verwisseld in badkamer",
+ "Cleaned the kitchen floor": "De keukenvloer schoongemaakt",
+ "Warranty ends": "Garantie eindigt",
+ "TV remote control": "Afstandsbediening",
+ "Alarm clock": "Wekker",
+ "Heat remote control": "Afstandsbediening verwarming",
+ "Lawn mowed in the garden": "Gazon gemaaid in de tuin",
+ "Some good snacks": "Enkele goede hapjes",
+ "Pizza dough": "Pizzadeeg",
+ "Sieved tomatoes": "Gezeefde tomaten",
+ "Salami": "Salami",
+ "Toast": "Geroosterd brood",
+ "Minced meat": "Gehakt",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti bolognese",
+ "Sandwiches": "Sandwiches",
+ "English": "Engels",
+ "German": "Duits",
+ "Italian": "Italiaans",
+ "This is the note content of the recipe ingredient": "Dit is de inhoud van de opmerking van het recept-ingrediënt",
+ "Demo User": "Demo Gebruiker",
+ "Gram | Grams": "Gram | Grams",
+ "Flour": "Bloem",
+ "Pancakes": "Pannenkoeken",
+ "Sugar": "Suiker",
+ "Home": "Thuis",
+ "Life": "Leven",
+ "Projects": "Projecten",
+ "Repair the garage door": "De garagedeur repareren",
+ "Fork and improve grocy": "Fork en verbeter grocy",
+ "Find a solution for what to do when I forget the door keys": "Zoek een oplossing voor wat te doen als ik de deursleutels vergeet",
+ "Sweets": "Snoep",
+ "Bakery products": "Bakkerijproducten",
+ "Tinned food": "Ingeblikt voedsel",
+ "Butchery products": "Vleeswaren",
+ "Vegetables/Fruits": "Groenten/Fruit",
+ "Refrigerated products": "Gekoelde producten",
+ "Coffee machine": "Koffiemachine",
+ "Dishwasher": "Afwasmachine",
+ "Liter": "Liter",
+ "Liters": "Liters",
+ "Bottle": "Fles",
+ "Bottles": "Flessen",
+ "Milk": "Melk",
+ "Chocolate sauce": "Chocoladesaus",
+ "Milliliters": "Milliliters",
+ "Milliliter": "Milliliter",
+ "Bottom": "Onderkant",
+ "Topping": "Beleg",
+ "French": "Frans",
+ "Turkish": "Turks",
+ "Spanish": "Spaans",
+ "Russian": "Russisch",
+ "The thing which happens on the 5th of every month": "Het ding dat op de 5e van elke maand gebeurt",
+ "The thing which happens daily": "Het ding dat dagelijks gebeurt",
+ "The thing which happens on Mondays and Wednesdays": "Het ding dat op maandag en woensdag gebeurt",
+ "Swedish": "Zweeds",
+ "Polish": "Pools",
+ "Milk Chocolate": "Melk Chocolade",
+ "Dark Chocolate": "Pure Chocolade",
+ "Slice | Slices": "Punt | Puntjes",
+ "Example userentity": "Voorbeeld gebruikersentiteit",
+ "This is an example user entity...": "Dit is een voorbeeld van een gebruikers entiteit......",
+ "Custom field": "Custom veld",
+ "Example field value...": "Voorbeeld veld waarde....",
+ "Waffle rolls": "Wafel rollen",
+ "Danish": "Deens",
+ "Dutch": "Nederlands",
+ "Norwegian": "Norwegen",
+ "Demo": "Demo",
+ "Stable version": "Stabiele versie",
+ "Preview version": "Preview versie",
+ "current release": "Huidige versie",
+ "not yet released": "Nog niet uitgegeven",
+ "Portuguese (Brazil)": "Portugees (Brazilië)",
+ "This is a note": "Dit is een notitie",
+ "Freezer": "diepvriezer",
+ "Hungarian": "Hongaars",
+ "Slovak": "Slovaaks",
+ "Czech": "Tsjechisch",
+ "Portuguese (Portugal)": "Portugees (Portugal)",
+ "DemoSupermarket1": "DemoSupermarkt1",
+ "DemoSupermarket2": "DemoSupermarkt2",
+ "Japanese": "Japans",
+ "Chinese (Taiwan)": "Chinees (Taiwan)",
+ "Greek": "Grieks",
+ "Korean": "Koreaans",
+ "Chinese (China)": "Chinees (China)",
+ "Hebrew (Israel)": "Hebreeuws (Israël)",
+ "Tamil": "Tamil",
+ "Finnish": "Fins",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/no.json b/locale/no.json
new file mode 100644
index 00000000..c287ec7b
--- /dev/null
+++ b/locale/no.json
@@ -0,0 +1,869 @@
+{
+ "Stock overview": "Beholdningsoversikt",
+ "{count} product expires | {count} products expiring": "{count} produkt går ut på dato | {count} produkter går ut på dato",
+ "within the next day | within the next {count} days": "i løpet av neste dag | i løpet av de {count} neste dagene",
+ "{count} product is already expired | {count} products are already expired": "{count} produkt har gått ut på dato | {count} produkter har gått ut på dato",
+ "{count} product is overdue | {count} products are overdue": " | ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} produkt er under satt minimum for beholdningen | {count} produkter er under satt minimum for beholdningen",
+ "Product": "Produkt",
+ "{count} Product | {count} Products": "{count} Produkt | {count} Produkter",
+ "Amount": "Mengde",
+ "Logout": "Logg ut",
+ "Chores overview": "Husarbeidsoversikt",
+ "Batteries overview": "Batterioversikt",
+ "Purchase": "Innkjøp",
+ "Consume": "Forbruk produkt",
+ "Inventory": "Beholdning",
+ "Shopping list": "Handleliste",
+ "Chore tracking": "Husarbeidsregistrering",
+ "Battery tracking": "Batteriregistrering",
+ "Locations": "Lokasjoner",
+ "Stores": "Butikker",
+ "Quantity units": "Forpakning",
+ "Chores": "Husarbeid",
+ "Batteries": "Batterier",
+ "Chore": "Husarbeid",
+ "Next estimated tracking": "Neste estimterte registrering",
+ "Last tracked": "Sist registert",
+ "Battery": "Batteri",
+ "Last charged": "Sist ladet",
+ "Next planned charge cycle": "Neste planlagte oppladning",
+ "Best before": "Best før",
+ "OK": "OK",
+ "Product overview": "Produktoversikt",
+ "Stock quantity unit": "Forpakningstype i beholdningen",
+ "Stock amount": "Beholdningsantall",
+ "Last purchased": "Sist kjøpt",
+ "Last used": "Sist brukt",
+ "Spoiled": "Produkt har gått ut på dato",
+ "Barcode lookup is disabled": "Strekkodesøk deaktivert",
+ "will be added to the list of barcodes for the selected product on submit": "Blir lagt til liste over strekkoder når produkt blir lagt inn",
+ "New amount": "Ny mengde",
+ "Note": "Info",
+ "Tracked time": "Tid registrert",
+ "Chore overview": "Husarbeidsoversikt",
+ "Tracked count": "Antall registrerte",
+ "Battery overview": "Batterioversikt",
+ "Charge cycles count": "Antall oppladninger",
+ "Create shopping list item": "Opprett punkt i handeliste",
+ "Edit shopping list item": "Endre punkt i handleliste",
+ "Save": "Lagre",
+ "Add": "Legg til",
+ "Name": "Navn",
+ "Location": "Lokasjon",
+ "Min. stock amount": "Min. beholdning",
+ "Description": "Beskrivelse",
+ "Create product": "Opprett produkt",
+ "Barcode(s)": "Strekkode(r)",
+ "Minimum stock amount": "Minimumsbeholdning",
+ "Default best before days": "Forhåndsatt antall dager best før",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "Forpakning beholdning",
+ "Factor purchase to stock quantity unit": "Innkjøpsfaktor for forpakning",
+ "Create location": "Opprett lokasjon",
+ "Create store": "Opprett butikk",
+ "Create quantity unit": "Opprett forpakning",
+ "Period type": "Gjentakelse",
+ "Period days": "Antall dager for gjentakelse",
+ "Create chore": "Opprett husarbeidsoppgave",
+ "Used in": "Brukt",
+ "Create battery": "Opprett batteri",
+ "Edit battery": "Endre batteri",
+ "Edit chore": "Endre husarbeidsoppgave",
+ "Edit quantity unit": "Endre forpakning",
+ "Edit product": "Endre produkt",
+ "Edit location": "Endre lokasjon",
+ "Edit store": "Rediger butikk",
+ "Record data": "Logg handlinger",
+ "Manage master data": "Administrer masterdata",
+ "This will apply to added products": "Dette vil gjelde for produkt som blir lagt til",
+ "never": "aldri",
+ "Add products that are below defined min. stock amount": "Legg til produkt som er under minimumsbeholdningen",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Dette betyr at {string1} innkjøp vil bli gjort om til {string2} {string3} i beholdningen",
+ "Login": "Logg inn",
+ "Username": "Brukernavn",
+ "Password": "Passord",
+ "Invalid credentials, please try again": "Feil brukernavn og/eller passord, prøv igjen",
+ "Are you sure to delete battery \"{string0}\"?": "Er du sikker du ønsker å slette batteri \"{string0}\"?",
+ "Yes": "Ja",
+ "No": "Nei",
+ "Are you sure to delete chore \"{string0}\"?": "Er du sikker på du ønsker å slette husarbeidsoppgave \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" kunne ikke bli tildelt et produkt, hvordan ønsker du å fortsette?",
+ "Create or assign product": "Opprett eller tildel til et produkt",
+ "Cancel": "Avbryt",
+ "Add as new product": "Legg til som nytt produkt",
+ "Add as barcode to existing product": "Legg til strekkode til eksisterende produkt",
+ "Add as new product and prefill barcode": "Legg til som nytt produkt med forhåndsfylt strekkode",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Er du sikker du ønsker å slette forpakning \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Er du sikker du ønsker å slette produkt \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Er du sikker du ønsker å slette lokasjon \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Er du sikker på at du vil slette butikken",
+ "Manage API keys": "Administrer API-Keys",
+ "REST API & data model documentation": "REST-API & datamodell-dokumentasjon",
+ "API keys": "API-Keys",
+ "Create new API key": "Opprett ny API-Key",
+ "API key": "API-Key",
+ "Expires": "Går ut",
+ "Created": "Opprettet",
+ "This product is not in stock": "Dette produktet er ikke i beholdningen",
+ "This means {string0} will be added to stock": "Dette betyr at {string0} vil bli lagt til i beholdningen",
+ "This means {string0} will be removed from stock": "Dette betyr at {string0} vil bli fjernet fra beholdningen",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Dette betyr at neste utførelse av denne husarbeidsoppgaven er planlagt {string0} dager etter siste utførelse",
+ "Removed {string1} of {string2} from stock": "Fjernet {string1} {string2} fra beholdningen",
+ "About grocy": "Om Grocy",
+ "Close": "Lukk",
+ "Released on": "Utgitt",
+ "Added {string1} of {string2} to stock": "Lagt til {string1} {string2} i beholdningen",
+ "Stock amount of {string1} is now {string2}": "Beholdning av {string1} er nå {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Registrerte husarbeidsoppgave \"{string1}\" den {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Registrert lading av batteri {string1} den {string2}",
+ "Consume all {string0} which are currently in stock": "Forbruk alle {string0} i beholdningen",
+ "All": "Alle",
+ "Search": "Søk",
+ "Not logged in": "Ikke logget inn",
+ "You have to select a product": "Du må velge et produkt",
+ "You have to select a chore": "Du må velge en husarbeidsoppgave",
+ "You have to select a battery": "Du må velge et batteri",
+ "A name is required": "Vennligst fyll inn et navn",
+ "A location is required": "En lokasjon kreves",
+ "A quantity unit is required": "Forpakning mengde/størrelse kreves",
+ "A period type is required": "En periodetype kreves",
+ "A best before date is required": "En best før dato kreves",
+ "Settings": "Innstillinger",
+ "This can only be before now": "Dette kan kun være før nå tid",
+ "Calendar": "Kalender",
+ "Recipes": "Oppskrifter",
+ "Edit recipe": "Endre oppskrift",
+ "Ingredients list": "Liste over ingredienser",
+ "Add recipe ingredient": "Legg til ingrediens i oppskrift",
+ "Edit recipe ingredient": "Endre ingrediens i oppskrift",
+ "Are you sure to delete recipe \"{string0}\"?": "Er du sikker du ønsker å slette oppskrift \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Er du sikker du ønsker å slette ingrediens \"{string0}\" fra oppskriften?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Er du sikker du ønsker å slette handleliste \"{string0}\"?",
+ "Clear list": "Slett handleliste",
+ "Requirements fulfilled": "Har jeg alt jeg trenger for denne oppskriften?",
+ "Put missing products on shopping list": "Legg manglende produkter til handlelisten",
+ "Enough in stock": "Nok i beholdningen",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Ikke nok i beholdningen, {count} ingrediens mangler, men den er på handlelisten. | Ikke nok i beholdningen, {count} ingredienser mangler, men de er på handlelisten.",
+ "Expand to fullscreen": "Full skjerm",
+ "Ingredients": "Ingredienser",
+ "Preparation": "Forberedelse / Slik gjør du",
+ "Recipe": "Oppskrift",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Ikke nok i beholdningen, mangler {string1}, er {string2} på handlelisten",
+ "Show notes": "Vis notater",
+ "Put missing amount on shopping list": "Legg manglende til handlelisten",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Er du sikker du ønsker å legge alle manglende ingredienser for oppskrift \"{string0}\" i handlelisten?",
+ "Added for recipe {string0}": "Lagt til fra oppskrift \"{string0}\"",
+ "Manage users": "Administrer brukere",
+ "User": "Bruker",
+ "Users": "Brukere",
+ "Are you sure to delete user \"{string0}\"?": "Er du sikker på du ønsker å slette bruker, \"{string0}\"?",
+ "Create user": "Legg til bruker",
+ "Edit user": "Endre på bruker",
+ "First name": "Fornavn",
+ "Last name": "Etternavn",
+ "A username is required": "Et brukernavn er nødvendig",
+ "Confirm password": "Bekreft passord",
+ "Passwords do not match": "Passordene er ikke like",
+ "Change password": "Endre passord",
+ "Done by": "Utført av",
+ "Last done by": "Sist utført av",
+ "Unknown": "Ukjent",
+ "Chores journal": "Statistikk husarbeid",
+ "0 means suggestions for the next charge cycle are disabled": "0 betyr neste ladesyklus er avslått",
+ "Charge cycle interval (days)": "Ladesyklysintervall (dager)",
+ "Last price": "Siste pris",
+ "Price history": "Prishistorikk",
+ "No price history available": "Ingen prishistorikk tilgjengelig",
+ "Price": "Pris",
+ "Unit": "Enhet",
+ "{count} Unit | {count} Units": "{count} Enhet | {count} Enheter",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} husarbeidsoppgave som må gjøres nå | {count} husarbeidsoppgaver som må gjøres nå",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} husarbeidsoppgave har gått over fristen for utførelse | {count} husarbeidsoppgaver har gått over fristen for utførelse",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} batteri må lades | {count} batterier må lades",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} batteri har forfalt frist for å bli ladet | {count} batterier har forfalt frist for å bli ladet",
+ "in singular form": "I entall",
+ "Quantity unit": "Forpakning",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Fjern alle ingredienser for \"{string0}\" oppskriften fra beholdningen.",
+ "Consume all ingredients needed by this recipe": "Forbruk alle ingredienser for denne oppskriften",
+ "Click to show technical details": "Klikk for å vise teknisk informasjon",
+ "Error while saving, probably this item already exists": "Kunne ikke lagre, produkt er lagt til fra før",
+ "Error details": "Detaljer om feil",
+ "Tasks": "Oppgaver",
+ "Show done tasks": "Vis ferdige oppgaver",
+ "Task": "Oppgave",
+ "Due": "Forfall",
+ "Assigned to": " Tildelt til",
+ "Mark task \"{string0}\" as completed": "Merk oppgave \"{string0}\" som ferdig",
+ "Uncategorized": "Mangler kategori",
+ "Task categories": "Oppgavekategorier",
+ "Create task": "Opprett en oppgave",
+ "A due date is required": "En forfallsdato kreves",
+ "Category": "Kategori",
+ "Edit task": "Endre oppgave",
+ "Are you sure to delete task \"{string0}\"?": "Er du sikker du ønsker slette oppgave \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} oppgave må gjøres | {count} oppgaver må gjøres",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} oppgave har forfalt frist for å bli utført | {count} oppgaver har forfalt frist for å bli utført",
+ "Edit task category": "Endre oppgavekategori",
+ "Create task category": "Opprett oppgavekategori",
+ "Product groups": "Produktgrupper",
+ "Ungrouped": "Mangler gruppe",
+ "Create product group": "Opprett produktgruppe",
+ "Edit product group": "Endre produktgruppe",
+ "Product group": "Produktgruppe",
+ "Are you sure to delete product group \"{string0}\"?": "Er du sikker du ønsker å slette produktgruppe \"{string0}\"?",
+ "Stay logged in permanently": "Husk meg",
+ "When not set, you will get logged out at latest after 30 days": "Hvis \"Husk meg\" ikke er huket av vil du automatisk bli logget av om 30 dager",
+ "Status": "Status",
+ "Below min. stock amount": "Under under min. beholdningsmengde",
+ "Expiring soon": "Går snart ut på dato",
+ "Already expired": "Utgått på dato",
+ "Due soon": "Forfaller snart",
+ "Overdue": "Forfalt",
+ "View settings": "Se innstillinger",
+ "Auto reload on external changes": "Automatisk fornying ved ekstern endring",
+ "Enable night mode": "Aktiver nattmodus",
+ "Auto enable in time range": "Automatisk aktivering i tidsrommet",
+ "From": "Fra",
+ "in format": "format",
+ "To": "Til",
+ "Time range goes over midnight": "Tidsrommet går over midnatt",
+ "Product picture": "Produktbilde",
+ "No file selected": "Produktbilde ikke valgt",
+ "Delete": "Slett",
+ "Select file": "Velg produktbilde",
+ "Image of product {string0}": "Bilde av produkt {string0}",
+ "Deletion not possible": "",
+ "Equipment": "Instruksjonsmanualer",
+ "Instruction manual": "Instruksjonsmanual",
+ "The selected equipment has no instruction manual": "Merket utstyr har ingen instruksjonsmanual",
+ "Notes": "Notater",
+ "Edit equipment": "Endre instruksjonsmanual",
+ "Create equipment": "Opprett instruksjonmanualer for et utstyr",
+ "The current file will be deleted on save": "",
+ "No picture available": "Ingen bilde tilgjengelig",
+ "Presets for new products": "Forhåndsatt for nye produkter",
+ "Included recipes": "Inkludert oppskrift",
+ "A recipe is required": "En oppskrift kreves",
+ "Add included recipe": "Legg til inkludert oppskrift",
+ "Edit included recipe": "Endre inkludert oppskrift",
+ "Group": "Gruppe",
+ "This will be used as a headline to group ingredients together": "Dette vil bli brukt som overskrift for gruppering av ingredienser",
+ "Journal": "Logg",
+ "Stock journal": "Beholdningslogg",
+ "Undone on": "Angret den",
+ "Batteries journal": "Batterilogg",
+ "Undo charge cycle": "Angre ladesyklus",
+ "Undo chore execution": "Fjerne utførelse av husarbeidsoppgave",
+ "Chore execution successfully undone": "Husarbeid fjernet",
+ "Undo": "Angre",
+ "Booking successfully undone": "Registrering fjernet",
+ "Charge cycle successfully undone": "Ladesyklus fjernet",
+ "Disable stock fulfillment checking for this ingredient": "Ikke bruk beholdningsjekk for denne ingrediensen ",
+ "Add all list items to stock": "Legg alle produktene i listen til beholdningen",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Legger til handleliste ting {string1} av {string2}",
+ "Use a specific stock item": "Velg et bestemt produkt",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Merk {string1} av {string2} som åpen",
+ "Marked {string1} of {string2} as opened": "Merket {string1} av {string2} som åpnet",
+ "Mark as opened": "Merk som åpnet",
+ "Not opened": "Ikke åpnet",
+ "Opened": "Åpnet",
+ "{string0} opened": "{string0} åpnet",
+ "Product due": "",
+ "Task due": "Tidsfrist for oppgave",
+ "Chore due": "Tidsfrist for husarbeid",
+ "Battery charge cycle due": "Batteri må lades",
+ "Show clock in header": "Vis klokken på toppen av siden",
+ "Stock settings": "Beholdning - innstillinger",
+ "Shopping list to stock workflow": "Arbeidsflyt fra handleliste til beholding",
+ "Skip": "Hopp over",
+ "Servings": "Porsjoner",
+ "Costs": "Kostnad",
+ "Based on the prices of the last purchase per product": "Basert på prisen av siste kjøpte produkt",
+ "The ingredients listed here result in this amount of servings": "Ingrediensene som er lagt til er beregnet for antall porsjoner du oppgir her",
+ "Do not check against the shopping list when adding missing items to it": "Ikke sjekk handleliste når du legger til manglende produkt",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Som standard vil antallet som skal legges til handlelisten være slik \"nødvendig antall - beholdningsantall - handleliste antall\". Men når denne funksjonen er aktivert vil det være slik \"nødvendig antall - beholdningsantall\"",
+ "Picture": "Bilde",
+ "Uncheck ingredients to not put them on the shopping list": "Fjern huk for å ikke legge produktet i handlelisten",
+ "This is for statistical purposes only": "Dette er kun for statistikk",
+ "You have to select a recipe": "Du må velge en oppskrift",
+ "Key type": "Key type",
+ "Share/Integrate calendar (iCal)": "Del/ Integrer kalender (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Bruk følgene (offentlig) URL til å dele eller integrere kalenderen i iCal format",
+ "Allow partial units in stock": "Tillat oppdelte enheter i beholdningen",
+ "Enable tare weight handling": "Aktiver tara vekt funksjon",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Dette er nyttig f.eks med mel i en beholder. Ved innkjøp/ forbruk/ endring av beholdning veier du alltid hele beholderen. Gjenværende mengde vil så bli kalkulert i forhold til hva som er i beholdningen og tara vekten definert under",
+ "Tare weight": "Tara vekt",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Tara vekt funksjon på - vennligst vei hele beholderen. Mengden vil automatisk bli kalkulert",
+ "You have to select a location": "Du må velge en lokasjon",
+ "You have to select a store": "Du må velge en butikk",
+ "List": "Liste",
+ "Gallery": "Bildegalleri",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Logg for dette batteriet",
+ "System info": "System info",
+ "Changelog": "Change Log",
+ "will be multiplied by a factor of {string1} to get {string2}": "vil bli ganget med{string1}for å få {string2}",
+ "The given date is earlier than today, are you sure?": "Den oppgitte datoen er tidligere enn i dag, er du sikker du ønsker å bruke denne?",
+ "Product count": "Produkttelling",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Dette vil bli brukt som forhåndsinnstilling når dette produktet blir brukt som ingrediens i en oppskrift",
+ "Add item": "Legg til produkt",
+ "Selected shopping list": "Valgt handleliste:",
+ "New shopping list": "Ny handleliste",
+ "Delete shopping list": "Slett handleliste",
+ "Chores settings": "Husarbeid - innstillinger ",
+ "Batteries settings": "Batteri - innstillinger",
+ "Tasks settings": "Oppgaver - innstillinger",
+ "Create shopping list": "Lag handleliste",
+ "Are you sure to delete shopping list \"{string0}\"?": "Er du sikker du ønsker å slette handleliste \"{string0}\"?",
+ "Average shelf life": "Gjennomsnittlig holdbarhetstid",
+ "Spoil rate": "Prosenttall for hvor mye som har utgått på dato ",
+ "Show more": "Vis mer",
+ "Show less": "Vis mindre",
+ "The amount must be between {string1} and {string2}": "Mengden må være mellom {string1} og {string2}",
+ "Day of month": "Dag i måned",
+ "Monday": "Mandag",
+ "Tuesday": "Tirsdag",
+ "Wednesday": "Onsdag",
+ "Thursday": "Torsdag",
+ "Friday": "Fredag",
+ "Saturday": "Lørdag",
+ "Sunday": "Søndag",
+ "Configure userfields": "Sett opp egendefinerte kolonner",
+ "Userfields": "Kolonner",
+ "Entity": "Enhet",
+ "Caption": "Kolonne navn",
+ "Type": "Type",
+ "Create userfield": "Lag egendefinert kolonne",
+ "A entity is required": "En enhet kreves",
+ "A caption is required": "Et kolonne navn kreves",
+ "A type is required": "En type kreves",
+ "Show as column in tables": "Vis som kolonner på alle sider",
+ "This is required and can only contain letters and numbers": "Dette kreves og kan kun inneholde bokstaver og tall",
+ "Edit userfield": "Endre egendefinert kolonne",
+ "Plural forms": "I flertall form",
+ "One plural form per line, the current language requires": "Valgt språk må ha en flertallsform per linje",
+ "Plural count": "Flertallstelling",
+ "Plural rule": "Flertallsregel",
+ "in plural form": "I flertall",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Ikke nok i beholdningen, {count} ingrediens mangler | Ikke nok i beholdningen, {count} ingredienser mangler",
+ "Not enough in stock, but already on the shopping list": "Ikke nok i beholdningen, men er på handelisten",
+ "Not enough in stock": "Ikke nok i beholdningen",
+ "Expiring soon days": "Går ut på dato snart dager",
+ "Default location": "Standard lokasjon",
+ "Default amount for purchase": "Standard mengde for innkjøp",
+ "Default amount for consume": "Standard mengde for forbruk",
+ "Variable amount": "Variabel mengde",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Når denne ikke er tom, vil denne bli vist i stedet for antallet skrevet inn over, mens antallet der vil bli brukt for å sjekke beholdnigsmengde.",
+ "Track date only": "Registrer kun dato",
+ "When enabled only the day of an execution is tracked, not the time": "Når aktivert vil kun dagen og ikke tiden bli registrert",
+ "Consume {string1} of {string2}": "Forbruk {string1} av {string2}",
+ "Meal plan": "Middagsplanlegger",
+ "Add recipe on {string0}": "Legg oppskrift til {string0}",
+ "{count} serving | {count} servings": "{count} porsjon | {count} porsjoner",
+ "Week costs": "Utgift for uke",
+ "Configuration": "Oppsett",
+ "A predefined list of values, one per line": "En forhåndsdefinert liste av verdier, en per linje",
+ "Products": "Produkter",
+ "Marked task {string0} as completed on {string0}": "Merket oppgave {string0} som ferdig på {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Registrering har flere registreringer under seg, angre er ikke mulig",
+ "per serving": "pr. servering",
+ "Never": "Aldri",
+ "Today": "I dag",
+ "Consume {string1} of {string2} as spoiled": "Forbruk {string1} av {string2} som har gått ut på dato",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Ikke alle ingrediensene i oppskriften \"{string0}\" er på lager, så ingenting er fjernet!",
+ "Undo task": "",
+ "Due date rollover": "Forfallsdato rollover",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Når aktiveret kan husoppgaven aldri forfalle, forfallsdatoen flyttes frem hver dag husoppgaven ikke utføres",
+ "Location Content Sheet": "Se produkt per lokasjon",
+ "Print": "Skriv ut",
+ "all locations": "Alle lokasjoner",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "kun denne lokasjonen",
+ "Consumed amount": "",
+ "Time of printing": "Tidspunkt for utskrift",
+ "Are you sure to delete equipment \"{string0}\"?": "Er du sikker du ønsker å slette utstyr \"{string0}\"?",
+ "Parent product": "Hovedprodukt",
+ "Not possible because this product is already used as a parent product in another product": "Ikke mulig da dette produktet brukes som hovedprodukt av et annet produkt",
+ "Default conversions": "Standard konvertering",
+ "Factor": "Faktor",
+ "1 {string0} is the same as...": "1 {string0} er det samme som...",
+ "Create QU conversion": "Opprett konvertering",
+ "Default for QU": "Standard for forpakning",
+ "Quantity unit from": "Konvertere fra",
+ "Quantity unit to": "Konvertere til",
+ "This cannot be equal to {string0}": "Dette kan ikke være samme som {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Dette betyr at 1 {string1} er det samme som {string2}{string3}",
+ "QU conversions": "Forpakningskonvertering",
+ "Product overrides": "Produktoverstyring",
+ "Override for product": "Overstyr for product",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Endre forpakningskonvertering",
+ "An assignment type is required": "En tildelingstype kreves",
+ "Assignment type": "Tildelingstype",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Dette betyr at neste utførelse av denne husarbeidsoppgaven er planlagt 1 dag etter siste utførelse",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Dette betyr at neste utførelse av denne husarbeidsoppgaven er planlagt 1 dag etter siste utførelse, men kun for helgene valgt under",
+ "This means the next execution of this chore is not scheduled": "Dette betyr at neste utførelse av denne husarbeidsoppgaven ikke er planlagt",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Dette betyr at neste utførelse av denne husarbeidsoppgaven er planlagt samme dag hver måned fra dag valgt under",
+ "This means the next execution of this chore will not be assigned to anyone": "Dette betyr at neste utførelse av denne husarbeidsoppgaven ikke vil bli tildelt noen",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Dette betyr at neste utførelse av denne husarbeidsoppgaven vil bli tildelt den som har utført den minst",
+ "This means the next execution of this chore will be assigned randomly": "Dette betyr at neste utførelse av denne husarbeidsoppgaven vil bli tildelt tilfeldig",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Dette betyr at neste utførelse av denne husarbeidsoppgaven vil bli tildelt neste person i alfabetisk rekkefølge",
+ "Assign to": "Tildelt til",
+ "This assignment type requires that at least one is assigned": "Denne tildelningstypen krever at minst en er tildelt",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count}husarbeidsoppgave tildelt meg | {count} husarbeidsoppgaver tildelt meg",
+ "Assigned to me": "Tildelt meg",
+ "assigned to {string0}": "tildelt {string0}",
+ "Assignment": "Oppgave",
+ "Consume product on chore execution": "Konsumer produkt når husarbeid blir utført",
+ "Are you sure to delete user field \"{string0}\"?": "Er du sikker du ønsker å slette brukerfelt \"{string0}\"?",
+ "Userentities": "Egendefinerte linjer",
+ "Create userentity": "Opprett egendefinerte linjer",
+ "Show in sidebar menu": "Vis sidemeny",
+ "Edit userentity": "Endre egendefinerte linjer",
+ "Edit {string0}": "Endre {string0}",
+ "Create {string0}": "Opprett {string0}",
+ "Are you sure to delete this userobject?": "Er du sikker på du ønsker å slette dette objektet?",
+ "Icon CSS class": "Icon CSS class",
+ "For example": "For eksempel",
+ "Configure fields": "Konfigurer felt",
+ "Quantity unit plural form testing": "Forpakningstype flertalls testing",
+ "Result": "Resultat",
+ "Test plural forms": "Test flertallsform",
+ "Scan a barcode": "Skann strekkode",
+ "Error while initializing the barcode scanning library": "Feil under oppstart av strekkodeleser ",
+ "The resulting price of this ingredient will be multiplied by this factor": "Pris for denne ingrediensen vil bli ganget med dette tallet",
+ "Price factor": "Pris faktor",
+ "Do you find grocy useful?": "Syns du grocy er nyttig?",
+ "Say thanks": "Si takk",
+ "Search for recipes containing this product": "Søk etter oppskrift som inneholder dette produktet",
+ "Add to shopping list": "Legg til i handlelisten",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Legg til {string1}{string2} i handlelisten \"{string3}\" ",
+ "Output": "Resultat",
+ "Energy (kcal)": "Energi (kcal)",
+ "Per stock quantity unit": "Beholdnings forpakningstype",
+ "Barcode scanner testing": "Strekkode scanner testing",
+ "Expected barcode": "Forventet strekkode",
+ "Scan field": "Scannefelt",
+ "Scanned barcodes": "Skannede strekkoder",
+ "Hit": "Treff",
+ "Miss": "Bom",
+ "Display recipe": "Vis oppskrift",
+ "Accumulate sub products min. stock amount": "Akkumuler underordnede produkter i minimum beholdningsnivå",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Hvis aktivert vil minimum beholdningsnivå av under produkter bli akkumulert inn i dette produktet. Dette betyr at underordnede produktet aldri vil \"mangle\", kunne dette produktet.",
+ "Are you sure to remove this conversion?": "Er du sikker på at du ønsker å fjerne denne konverteringen?",
+ "Unit price": "Enhetspris",
+ "Total price": "Totalpris",
+ "in {string0} and based on the purchase quantity unit": "I {string0} og basert på innkjøpsforpakningen",
+ "Unlimited": "Evig",
+ "Clear": "Slett",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Er du sikker du ønsker å slette den inkluderte oppskriften \"{string0}\"?",
+ "Period interval": "Periodiskinterval",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Dette betyr at neste gjennomføring av denne husarbeidsoppgaven skal kun planlegges for hver {string0} dager",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Dette betyr at neste gjennomføring av denne husarbeidsoppgaven skal kun planlegges for hver {string0} uker",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Dette betyr at neste gjennomføring av denne husarbeidsoppgaven skal kun planlegges for hver {string0} måneder",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Dette betyr at neste gjennomføring av denne husarbeidsoppgaven skal være 1 år etter forrige gjennomføring",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Dette betyr at neste gjennomføring av denne husarbeidsoppgaven skal kun planlegges for hver {string0} år",
+ "Transfer": "Flytte produkt",
+ "From location": "Fra lokasjon",
+ "To location": "Til lokasjon",
+ "There are no units available at this location": "Det er ingen enheter tilgjengelig på denne lokasjonen",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Flyttet {string1} {string2} fra {string3} til {string4}",
+ "Stock entries": "Beholdningsoppføringer",
+ "Best before date": "Best før dato",
+ "Purchased date": "Innkjøpsdato",
+ "Consume all {string0} for this stock entry": "Forbruk alle {string0} for denne beholdningsoppføringen",
+ "The amount cannot be lower than {string1}": "Mengden kan ikke være lavere enn {string1}",
+ "Stock entry successfully updated": "Beholdningsoppføring oppdatert",
+ "Edit stock entry": "Endre beholdningsoppføring",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Tilgang til kamera er kun mulig når det er støttet og når nettleseren din tillater det og når grocy kjøres gjennom en sikker tilkobling (https://)",
+ "Keep screen on": "Skjerm alltid på",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Hold skjerm på når du bruker fullskjermsoversikt",
+ "A purchased date is required": "En innkjøpsdato kreves",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Lager produkt",
+ "This booking cannot be undone": "Denne registreringen kan ikke angres",
+ "Booking does not exist or was already undone": "Registeringen eksistere ikke eller har allerede blitt angret",
+ "Are you sure to delete API key \"{string0}\"?": "Er du sikker du ønsker slette API key \"{string0}\"?",
+ "Add note": "Legg til notat",
+ "Add note on {string0}": "Legg notat til {string0}",
+ "per day": "per dag",
+ "Only undone items": "Kun angrede enheter",
+ "Add product": "Legg til produkt",
+ "Add product on {string0}": "Legg produkt til {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Forbruk alle ingredienser nødvendig for denne ukens oppskrifter eller produkter",
+ "Meal plan recipe": "Middagsplan-oppskrift",
+ "Meal plan note": "Middagsplan-notat",
+ "Meal plan product": "Middagsplan-produkt",
+ "Scan mode": "Scanne modus",
+ "on": "på",
+ "off": "av",
+ "Scan mode is on but not all required fields could be populated automatically": "Scannemodus er på, men ikke alle felt kan fylles ut automatisk",
+ "Is freezer": "Er fryser",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Når produkter blir flyttet til/fra en fryskerlokasjon, endres best før datoen automatisk i forhold til produktinnstillingen",
+ "This cannot be the same as the \"From\" location": "Dette kan ikke være det som \"Fra\" lokasjonen",
+ "Thawed": "Tint",
+ "Frozen": "Fryst",
+ "Are you sure to delete userentity \"{string0}\"?": "Er du sikker på at du ønsker slette userentity \"{string0}\"?",
+ "Shopping list settings": "Handleliste - innstillinger",
+ "Show a month-view calendar": "Vis månedsoverblikk for kalenderen ",
+ "Edit note on {string0}": "Endre notat for den {string0}",
+ "Edit product on {string0}": "Endre produkt for den {string0}",
+ "Edit recipe on {string0}": "Endre produkt for den {string0}",
+ "Desired servings": "Ønskede porsjoner",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "Opprkifter - innstillinger",
+ "Recipe card": "Oppskrift kort",
+ "Group ingredients by their product group": "Gruppér ingredienser ut fra deres produktgruppe",
+ "Unknown store": "Ukjent butikk",
+ "Store": "Butikk",
+ "Transaction successfully undone": "Transaksjonen er reversert",
+ "Default store": "Standard butikk",
+ "Consume this stock entry": "Bruk denne lagerbeholdningen",
+ "Mark this stock entry as open": "Marker denne som åpen",
+ "Mark this item as done": "Marker denne som utført",
+ "Edit this item": "Rediger denne oppføringen",
+ "Delete this item": "Slett denne varen",
+ "Show an icon if the product is already on the shopping list": "Vis ett ikon dersom produktet allerede er på handlelisten",
+ "Calories": "Kalorier",
+ "means {string1} per {string2}": "betyr {string1} per {string2}",
+ "Create inverse QU conversion": "Lager invertert QU konvertering",
+ "Create recipe": "Lag oppskrift",
+ "Save & continue to add ingredients and included recipes": "Lagre og fortsett for å legge til ingredienser og inkluderte oppskrifter",
+ "Save & continue": "Lagre & fortsett",
+ "Save & return to recipes": "Lagre & returner til oppskrifter",
+ "Stock value": "",
+ "Average price": "Gjennomsnittlig pris",
+ "Active": "Aktiv",
+ "Barcodes": "Strekkoder",
+ "Barcode": "Strekkode",
+ "Create Barcode": "Opprett strekkode",
+ "Barcode for product": "Strekkode for produkt",
+ "Edit Barcode": "Endre strekkode",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "Tøm filter",
+ "Permissions for user {string0}": "Tillatelser for bruker {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "Tillatelser lagret",
+ "You are not allowed to view this page": "Du har ikke tillatelse til å vise denne siden",
+ "Page not found": "",
+ "Unauthorized": "",
+ "Error source": "",
+ "Error message": "",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "",
+ "A server error occured while processing your request": "",
+ "If you think this is a bug, please report it": "",
+ "Language": "",
+ "User settings": "",
+ "Default": "",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | ",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": " | ",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "Ingen tildeling",
+ "who-least-did-first": " Hvem gjorde minst først",
+ "random": "Tilfeldig",
+ "in-alphabetical-order": "I alfabetisk rekkefølge",
+ "timeago_locale": "no",
+ "timeago_nan": "for NaN År",
+ "moment_locale": "nb",
+ "datatables_localization": "{\"sEmptyTable\":\"Det finnes ingen data i tabellen\",\"sInfo\":\"_START_ fra _END_ til _TOTAL_ skriv\",\"sInfoEmpty\":\"Ingen data tilgjengelign\",\"sInfoFiltered\":\"(filtrert fra _MAX_ skriv)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\".\",\"sLengthMenu\":\"_MENU_ per side\",\"sLoadingRecords\":\"Laster ..\",\"sProcessing\":\"Vennligst vent ..\",\"sSearch\":\"Søk\",\"sZeroRecords\":\"Ingen oppføringer tilgjengelig\",\"oPaginate\":{\"sFirst\":\"Første\",\"sPrevious\":\"Bakover\",\"sNext\":\"Neste\",\"sLast\":\"Siste\"},\"oAria\":{\"sSortAscending\":\": Sortér stigende\",\"sSortDescending\":\": Sortér synkende\"},\"select\":{\"rows\":{\"0\":\"klikk på en linje for å velge\",\"1\":\"1 linje valgt\",\"_\":\" linger valgt\"}},\"buttons\":{\"print\":\"Print\",\"colvis\":\"Søyle\",\"copy\":\"Kopi\",\"copyTitle\":\"Kopier til utklippstavlen\",\"copyKeys\":\"Trykk ctrl eller ⌘ + C for å kopiere tabell til utklipptavlen. For å avbryte, klikke på meldingen eller trykk på ESC.\",\"copySuccess\":{\"1\":\"1 Kolonne kopiert\",\"_\":\" kolonne kopiert\"}}}",
+ "summernote_locale": "nb-NO",
+ "fullcalendar_locale": "nb",
+ "bootstrap-select_locale": "nb_NO",
+ "purchase": "innkjøp",
+ "transfer_from": "overføre_fra",
+ "transfer_to": "overføre_til",
+ "consume": "forbruk",
+ "inventory-correction": "beholdningsantall_korreksjon",
+ "product-opened": "produkt_åpnet",
+ "stock-edit-old": "beholdning_endre_gammel",
+ "stock-edit-new": "beholdning_endre_ny",
+ "self-production": "egenproduksjon",
+ "manually": "Manuell",
+ "dynamic-regular": "Automatisk",
+ "daily": "Daglig",
+ "weekly": "Ukentlig",
+ "monthly": "Månedlig",
+ "yearly": "årlig",
+ "text-single-line": "text-single-line",
+ "text-multi-line": "text-multi-line",
+ "number-integral": "number-integral",
+ "number-decimal": "number-decimal",
+ "date": "date",
+ "datetime": "datetime",
+ "checkbox": "checkbox",
+ "preset-list": "preset-list",
+ "preset-checklist": "preset-checklist",
+ "link": "link",
+ "link-with-title": "",
+ "file": "",
+ "image": "",
+ "Cookies": "Kjeks",
+ "Chocolate": "Sjokolade",
+ "Pantry": "Spiskammers",
+ "Candy cupboard": "Godteriskapet",
+ "Tinned food cupboard": "Boksematskapet",
+ "Fridge": "Kjøleskapet",
+ "Piece | Pieces": "Del | Deler",
+ "Pack | Packs": "Pakke | Pakker",
+ "Glass | Glasses": "Glass | Glass",
+ "Tin | Tins": "Boks | Bokser",
+ "Can | Cans": "Boks | Bokser",
+ "Bunch | Bunches": "Bunt | Bunter",
+ "Gummy bears": "Vingummibjørner",
+ "Crisps": "Chips",
+ "Eggs": "Egg",
+ "Noodles": "Nuddler",
+ "Pickles": "Sur agurk",
+ "Gulash soup": "Gulasj suppe",
+ "Yogurt": "Yoghurt",
+ "Cheese": "Ost",
+ "Cold cuts": "Kjøttpålegg",
+ "Paprika": "Paprika",
+ "Cucumber": "Agurk",
+ "Radish": "Reddik",
+ "Tomato": "Tomat",
+ "Changed towels in the bathroom": "Bytt handklær på badet",
+ "Cleaned the kitchen floor": "Vasket kjøkkengulvet",
+ "Warranty ends": "Garanti utgår",
+ "TV remote control": "Fjernkontroll for TV",
+ "Alarm clock": "Alarmklokke",
+ "Heat remote control": "Fjernkontroll for termostat",
+ "Lawn mowed in the garden": "Kuttet gresset i hagen",
+ "Some good snacks": "Noen gode snacks",
+ "Pizza dough": "Pizzadeig",
+ "Sieved tomatoes": "Tomatpuré",
+ "Salami": "Salami",
+ "Toast": "Ristet brød",
+ "Minced meat": "Kjøttdeig",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti Bolognese",
+ "Sandwiches": "Smørbrød",
+ "English": "Engelsk",
+ "German": "Tysk",
+ "Italian": "Italiensk",
+ "This is the note content of the recipe ingredient": "Dette er notisen for ingrediensen i oppskriften",
+ "Demo User": "Demo Bruker",
+ "Gram | Grams": "Gram | Gram",
+ "Flour": "Mel",
+ "Pancakes": "Pannekaker",
+ "Sugar": "Sukker",
+ "Home": "Hus",
+ "Life": "Livstil",
+ "Projects": "Projekter",
+ "Repair the garage door": "Reparere garasjedøren",
+ "Fork and improve grocy": "Fork og forbedre grocy",
+ "Find a solution for what to do when I forget the door keys": "Finne på løsning for hva jeg skal gjøre når jeg mister dørnøklene",
+ "Sweets": "Godteri",
+ "Bakery products": "Bakevarer",
+ "Tinned food": "Boksemat",
+ "Butchery products": "Kjøtt/ Ferskvare",
+ "Vegetables/Fruits": "Frukt/ Grønnsaker",
+ "Refrigerated products": "Frysedisk",
+ "Coffee machine": "Kaffetrakter",
+ "Dishwasher": "Oppvaskmaskin",
+ "Liter": "Liter",
+ "Liters": "Liter",
+ "Bottle": "Flaske",
+ "Bottles": "Flasker",
+ "Milk": "Melk",
+ "Chocolate sauce": "Sjokoladesaus",
+ "Milliliters": "Milliliter",
+ "Milliliter": "Milliliter",
+ "Bottom": "Bunn",
+ "Topping": "Topping",
+ "French": "Fransk",
+ "Turkish": "Tyrkisk",
+ "Spanish": "Spansk",
+ "Russian": "Russisk",
+ "The thing which happens on the 5th of every month": "Husarbeid som skjer den 5 hver måneden",
+ "The thing which happens daily": "Husarbeid som skjer daglig",
+ "The thing which happens on Mondays and Wednesdays": "Husarbeid som skjer på mandager og onsdager",
+ "Swedish": "Svensk",
+ "Polish": "Polsk",
+ "Milk Chocolate": "Melkesjokolade",
+ "Dark Chocolate": "Mørk sjokolade",
+ "Slice | Slices": "Skrive | Skriver",
+ "Example userentity": "Example userentity",
+ "This is an example user entity...": "This is an example user entity...",
+ "Custom field": "Custom field",
+ "Example field value...": "Example field value...",
+ "Waffle rolls": "Vaffelrull",
+ "Danish": "Dansk",
+ "Dutch": "Nederlandsk",
+ "Norwegian": "Norsk",
+ "Demo": "Demo",
+ "Stable version": "Stabil versjon",
+ "Preview version": "Versjon under utvikling",
+ "current release": "Nåværende versjon",
+ "not yet released": "enda ikke gitt ut",
+ "Portuguese (Brazil)": "Portugisisk (Brasil)",
+ "This is a note": "Dette er et notat",
+ "Freezer": "Fryser",
+ "Hungarian": "Ungarsk",
+ "Slovak": "Slovakisk",
+ "Czech": "Tjekkisk",
+ "Portuguese (Portugal)": "Portugisisk (Portugal)",
+ "DemoSupermarket1": "DemoButikk1",
+ "DemoSupermarket2": "DemoButikk2",
+ "Japanese": "Japansk",
+ "Chinese (Taiwan)": "Kinesisk (Taiwan)",
+ "Greek": "",
+ "Korean": "",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/pl.json b/locale/pl.json
new file mode 100644
index 00000000..43618c94
--- /dev/null
+++ b/locale/pl.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "Przegląd zapasów",
+ "{count} product expires | {count} products expiring": "{count} produkt traci ważność | {count} produkty tracą ważność | {count} produktów traci ważność | {count} produktów traci ważność",
+ "within the next day | within the next {count} days": "jutro | w ciągu {count} dni | w ciągu {count} dni | w ciągu {count} dni",
+ "{count} product is already expired | {count} products are already expired": "Przeterminowane produkty: {count} | Przeterminowane produkty: {count} | Przeterminowane produkty: {count} | Przeterminowane produkty: {count}",
+ "{count} product is overdue | {count} products are overdue": "{count} produkt przeterminowany | {count} produkty przeterminowane | {count} produkty przeterminowane | {count} produkty przeterminowane",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "Produkty poniżej zdefiniowanej minimalnej ilości: {count} | Produkty poniżej zdefiniowanej minimalnej ilości: {count} | Produkty poniżej zdefiniowanej minimalnej ilości: {count} | Produkty poniżej zdefiniowanej minimalnej ilości: {count}",
+ "Product": "Produkt",
+ "{count} Product | {count} Products": "{count} Produkt | {count} Produkty | {count} Produktów | {count} Produktów",
+ "Amount": "Ilość",
+ "Logout": "Wyloguj",
+ "Chores overview": "Przegląd obowiązków",
+ "Batteries overview": "Przegląd baterii",
+ "Purchase": "Zakup",
+ "Consume": "Spożyj",
+ "Inventory": "Spis produktów",
+ "Shopping list": "Lista zakupów",
+ "Chore tracking": "Wykonanie obowiązku",
+ "Battery tracking": "Sprawdzenie stanu baterii",
+ "Locations": "Miejsca",
+ "Stores": "Sklepy",
+ "Quantity units": "Jednostki ilości",
+ "Chores": "Obowiązki",
+ "Batteries": "Baterie",
+ "Chore": "Obowiązek",
+ "Next estimated tracking": "Następne planowane wykonanie",
+ "Last tracked": "Ostatnie wykonanie",
+ "Battery": "Bateria",
+ "Last charged": "Ostatnio ładowane",
+ "Next planned charge cycle": "Następny planowany cykl ładowania",
+ "Best before": "Najlepiej spożyć przed",
+ "OK": "OK",
+ "Product overview": "Przegląd produktów",
+ "Stock quantity unit": "Jednostka ilości zapasów",
+ "Stock amount": "Ilość zapasów",
+ "Last purchased": "Ostatnio kupione",
+ "Last used": "Ostatnio użyte",
+ "Spoiled": "Zepsute",
+ "Barcode lookup is disabled": "Czytnik kodów kreskowych jest wyłączony",
+ "will be added to the list of barcodes for the selected product on submit": "po przesłaniu zostanie dodany do listy kodów kreskowych dla podanego produktu",
+ "New amount": "Nowa ilość",
+ "Note": "Notatka",
+ "Tracked time": "Data wykonania",
+ "Chore overview": "Przegląd obowiązków",
+ "Tracked count": "Ilość wykonań",
+ "Battery overview": "Przegląd baterii",
+ "Charge cycles count": "Ilość cykli ładowania",
+ "Create shopping list item": "Dodaj pozycję na liście zakupów",
+ "Edit shopping list item": "Edytuj przedmiot na liście zakupów",
+ "Save": "Zapisz",
+ "Add": "Dodaj",
+ "Name": "Nazwa",
+ "Location": "Miejsce",
+ "Min. stock amount": "Min. ilość",
+ "Description": "Opis",
+ "Create product": "Dodaj produkt",
+ "Barcode(s)": "Kod(y) kreskowe",
+ "Minimum stock amount": "Minimalna ilość",
+ "Default best before days": "Domyślna ilość dni przydatności do spożycia ",
+ "Default quantity unit purchase": "Domyślna jednostka zakupu",
+ "Quantity unit stock": "Jednostka ilości zapasów",
+ "Factor purchase to stock quantity unit": "Konwersja ilości zakupu do zapasów",
+ "Create location": "Dodaj miejsce",
+ "Create store": "Dodaj sklep",
+ "Create quantity unit": "Dodaj jednostkę miary",
+ "Period type": "Częstotliwość wykonywania",
+ "Period days": "Ilość dni",
+ "Create chore": "Dodaj obowiązek",
+ "Used in": "Użyte w",
+ "Create battery": "Dodaj baterię",
+ "Edit battery": "Edytuj baterię",
+ "Edit chore": "Edytuj obowiązek",
+ "Edit quantity unit": "Edycja jednostki ilości",
+ "Edit product": "Edytuj produkt",
+ "Edit location": "Edytuj lokalizację",
+ "Edit store": "Edytuj sklep",
+ "Record data": "Zbieraj dane",
+ "Manage master data": "Zarządzanie danymi",
+ "This will apply to added products": "Zostanie zastosowana do dodanych produktów",
+ "never": "nigdy",
+ "Add products that are below defined min. stock amount": "Dodaj produkty poniżej zdefiniowanej minimalnej ilości",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Oznacza to, że 1 {string1} z zakupu będzie przeliczona na {string2} {string3} do zapasów",
+ "Login": "Zaloguj",
+ "Username": "Nazwa użytkownika",
+ "Password": "Hasło",
+ "Invalid credentials, please try again": "Nieprawidłowe dane logowania, spróbuj jeszcze raz",
+ "Are you sure to delete battery \"{string0}\"?": "Czy na pewno chcesz usunąć baterię \"{string0}\"?",
+ "Yes": "Tak",
+ "No": "Nie",
+ "Are you sure to delete chore \"{string0}\"?": "Czy na pewno chcesz usunąć obowiązek \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "Produkt \"{string0}\" nie istnieje. Co dalej?",
+ "Create or assign product": "Dodaj lub przydziel produkt",
+ "Cancel": "Anuluj",
+ "Add as new product": "Dodaj jako nowy produkt",
+ "Add as barcode to existing product": "Dodaj jako kod kreskowy do istniejącego produktu",
+ "Add as new product and prefill barcode": "Dodaj jako nowy produkt i dodaj kod kreskowy",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Czy na pewno chcesz usunąć jednostkę ilości \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Czy na pewno chcesz usunąć produkt \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Czy na pewno chcesz usunąć miejsce \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Czy na pewno chcesz usunąć sklep \"{string0}\"?",
+ "Manage API keys": "Zarządzaj kluczami API",
+ "REST API & data model documentation": "REST API & dokumentacja modelu danych",
+ "API keys": "Klucze API",
+ "Create new API key": "Utwórz nowy klucz API",
+ "API key": "Klucz API",
+ "Expires": "Traci ważność",
+ "Created": "Dodano",
+ "This product is not in stock": "Nie ma tego produktu na stanie",
+ "This means {string0} will be added to stock": " To znaczy, że {string0} zostanie dodany na stan",
+ "This means {string0} will be removed from stock": "To znaczy, że {string0} zostanie usunięty ze stanu",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Oznacza to, że następne wykonanie obowiązku jest zaplanowane na {string0} dni po ostatnim wykonaniu",
+ "Removed {string1} of {string2} from stock": "{string2} - {string1} - usunięto z zapasów",
+ "About grocy": "O grocy",
+ "Close": "Zamknij",
+ "Released on": "Wydano dnia",
+ "Added {string1} of {string2} to stock": "{string2} - {string1} - dodano do zapasów",
+ "Stock amount of {string1} is now {string2}": "Zapasy {string1} wynoszą teraz: {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Obowiązek {string1} wykonano dnia {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Naładowano baterię {string1} dnia {string2}",
+ "Consume all {string0} which are currently in stock": "{string0} - spożyj całość z zapasów",
+ "All": "Wszystko",
+ "Search": "Szukaj",
+ "Not logged in": "Nie zalogowany",
+ "You have to select a product": "Musisz wybrać produkt",
+ "You have to select a chore": "Musisz wybrać obowiązek",
+ "You have to select a battery": "Musisz wybrać baterię",
+ "A name is required": "Nazwa jest wymagana",
+ "A location is required": "Lokalizacja jest wymagana",
+ "A quantity unit is required": "Jednostka ilości jest wymagana",
+ "A period type is required": "Częstotliwość wykonywania jest wymagana",
+ "A best before date is required": "Termin spożycia jest wymagany",
+ "Settings": "Ustawienia",
+ "This can only be before now": "Wartość musi być przed dniem dzisiejszym",
+ "Calendar": "Kalendarz",
+ "Recipes": "Przepisy",
+ "Edit recipe": "Edytuj przepis",
+ "Ingredients list": "Lista składników",
+ "Add recipe ingredient": "Dodaj składnik przepisu",
+ "Edit recipe ingredient": "Edytuj składnik przepisu",
+ "Are you sure to delete recipe \"{string0}\"?": "Czy na pewno chcesz usunąć przepis \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Czy na pewno chcesz usunąć składnik przepisu \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Czy na pewno chcesz wyczyścić listę zakupów \"{string0}\"?",
+ "Clear list": "Wyczyść listę",
+ "Requirements fulfilled": "Wymagania spełnione",
+ "Put missing products on shopping list": "Dodaj brakujące produkty do listy zakupów",
+ "Enough in stock": "Dość na stanie",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Za mało zapasów. Brakuje {count} składnika, ale jest już na liście zakupów | Za mało zapasów. Brakuje {count} składników, ale są już na liście zakupów | Za mało zapasów. Brakuje {count} składników, ale są już na liście zakupów | Za mało zapasów. Brakuje {count} składników, ale są już na liście zakupów",
+ "Expand to fullscreen": "Pokaż w pełnym ekranie",
+ "Ingredients": "Składniki",
+ "Preparation": "Przygotowanie",
+ "Recipe": "Przepis",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Za mało na stanie. Brakuje: {string1}. {string2} znajduje się już na liście zakupów",
+ "Show notes": "Pokaż notatki",
+ "Put missing amount on shopping list": "Dodaj brakującą ilość do listy zakupów",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Czy na pewno chcesz dodać wszystkie brakujące składniki przepisu \"{string0}\" na listę zakupów?",
+ "Added for recipe {string0}": "Dodano do przepisu {string0}",
+ "Manage users": "Zarządzaj użytkownikami",
+ "User": "Użytkownik",
+ "Users": "Użytkownicy",
+ "Are you sure to delete user \"{string0}\"?": "Czy na pewno chcesz usunąć użytkownika \"{string0}\"?",
+ "Create user": "Utwórz użytkownika",
+ "Edit user": "Edytuj użytkownika",
+ "First name": "Imię",
+ "Last name": "Nazwisko",
+ "A username is required": "Nazwa użytkownika jest wymagana",
+ "Confirm password": "Potwierdź hasło",
+ "Passwords do not match": "Hasła nie są identyczne",
+ "Change password": "Zmień hasło",
+ "Done by": "Zrobione przez",
+ "Last done by": "Ostatnio zrobione przez",
+ "Unknown": "Nieznany",
+ "Chores journal": "Dziennik obowiązków",
+ "0 means suggestions for the next charge cycle are disabled": "0 oznacza, że sugestie odnośnie następnego cyklu ładowania są wyłączone",
+ "Charge cycle interval (days)": "Interwał cyklu ładowania (dni)",
+ "Last price": "Ostatnia cena",
+ "Price history": "Historia cen",
+ "No price history available": "Historia cen jest niedostępna",
+ "Price": "Cena",
+ "Unit": "Jednostka",
+ "{count} Unit | {count} Units": "{count} Jednostka | {count} Jednostki | {count} Jednostek | {count} Jednostek",
+ "{count} chore is due to be done | {count} chores are due to be done": "Obowiązki bliskie terminu realizacji: {count} | Obowiązki bliskie terminu realizacji: {count} | Obowiązki bliskie terminu realizacji: {count} | Obowiązki bliskie terminu realizacji: {count}",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "Obowiązki niewykonane w terminie: {count} | Obowiązki niewykonane w terminie: {count} | Obowiązki niewykonane w terminie: {count} | Obowiązki niewykonane w terminie: {count}",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "Baterie bliskie terminu ładowania: {count} | Baterie bliskie terminu ładowania: {count} | Baterie bliskie terminu ładowania: {count} | Baterie bliskie terminu ładowania: {count}",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "Baterie po terminie ładowania: {count} | Baterie po terminie ładowania: {count} | Baterie po terminie ładowania: {count} | Baterie po terminie ładowania: {count}",
+ "in singular form": "w liczbie pojedynczej",
+ "Quantity unit": "Jednostka ilości",
+ "Only check if any amount is in stock": "Zaznacz tylko, jeśli cokolwiek jest w zapasach",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "Czy jesteś pewny/pewna, by zużyć wszystkie składniki potrzebne do przepisu \"{string0}\" (składniki oznaczone jako \"zaznacz tylko, jeśli cokolwiek jest w zapasach\" zostaną zignorowane)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Usuń wszystkie składniki przepisu \"{string0}\" z zapasów",
+ "Consume all ingredients needed by this recipe": "Użyj wszystkich składników wymaganych do tego przepisu",
+ "Click to show technical details": "Naciśnij, aby poznać techniczne szczegóły",
+ "Error while saving, probably this item already exists": "Błąd podczas zapisywania, najprawdopodobniej przedmiot już istnieje",
+ "Error details": "Szczegóły błędu",
+ "Tasks": "Zadania",
+ "Show done tasks": "Pokaż ukończone zadania",
+ "Task": "Zadanie",
+ "Due": "Termin wykonania",
+ "Assigned to": "Przypisany do",
+ "Mark task \"{string0}\" as completed": "Oznacz zadanie \"{string0}\" jako wykonane",
+ "Uncategorized": "Bez kategorii",
+ "Task categories": "Kategorie zadań",
+ "Create task": "Dodaj zadanie",
+ "A due date is required": "Termin wykonania jest wymagany",
+ "Category": "Kategoria",
+ "Edit task": "Edytuj zadanie",
+ "Are you sure to delete task \"{string0}\"?": "Czy jesteś pewien, że chcesz usunąć zadanie \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "Zadania po terminie realizacji: {count} | Zadania po terminie realizacji: {count} | Zadania po terminie realizacji: {count} | Zadania po terminie realizacji: {count}",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "Zadania bliskie terminu realizacji: {count} | Zadania bliskie terminu realizacji: {count} | Zadania bliskie terminu realizacji: {count} | Zadania bliskie terminu realizacji: {count}",
+ "Edit task category": "Edytuj kategorię zadania",
+ "Create task category": "Dodaj kategorię zadania",
+ "Product groups": "Grupy produktów",
+ "Ungrouped": "Bez grupy",
+ "Create product group": "Dodaj grupę produktów",
+ "Edit product group": "Edytuj grupę produktów",
+ "Product group": "Grupa produktów",
+ "Are you sure to delete product group \"{string0}\"?": "Czy na pewno chcesz usunąć grupę produktów \"{string0}\"?",
+ "Stay logged in permanently": "Pozostań zalogowany na zawsze",
+ "When not set, you will get logged out at latest after 30 days": "Gdy nie ustawione - zostaniesz wylogowany/a po najpóźniej 30 dniach",
+ "Status": "Status",
+ "Below min. stock amount": "Poniżej min. ilości zapasów",
+ "Expiring soon": "Niedługo traci ważność",
+ "Already expired": "Po terminie ważności",
+ "Due soon": "Blisko terminu",
+ "Overdue": "Po terminie",
+ "View settings": "Zobacz ustawienia",
+ "Auto reload on external changes": "Automatyczne przeładowanie przy zewnętrznych zmianach",
+ "Enable night mode": "Włącz tryb nocny",
+ "Auto enable in time range": "Aktywne w godzinach",
+ "From": "Od",
+ "in format": "w formacie",
+ "To": "Do",
+ "Time range goes over midnight": "Zakres czasu przekracza północ",
+ "Product picture": "Zdjęcie produktu",
+ "No file selected": "Nie wybrano pliku",
+ "Delete": "Usuń",
+ "Select file": "Wybierz plik",
+ "Image of product {string0}": "Zdjęcie produktu {string0}",
+ "Deletion not possible": "Usunięcie niemożliwe",
+ "Equipment": "Wyposażenie",
+ "Instruction manual": "Instrukcja obsługi",
+ "The selected equipment has no instruction manual": "Wybrany element wyposażenia nie ma instrukcji obsługi",
+ "Notes": "Notatki",
+ "Edit equipment": "Edytuj wyposażenie",
+ "Create equipment": "Dodaj wyposażenie",
+ "The current file will be deleted on save": "",
+ "No picture available": "Brak zdjęcia",
+ "Presets for new products": "Ustawienia wstępne dla nowych produktów",
+ "Included recipes": "Dołączone przepisy",
+ "A recipe is required": "Wymagany jest przepis",
+ "Add included recipe": "Dołącz przepis",
+ "Edit included recipe": "Edytuj dołączony przepis",
+ "Group": "Grupa",
+ "This will be used as a headline to group ingredients together": "Będzie to używane jako nagłówek do grupowania składników",
+ "Journal": "Dziennik",
+ "Stock journal": "Dziennik zapasów",
+ "Undone on": "Anulowano dnia",
+ "Batteries journal": "Dziennik baterii",
+ "Undo charge cycle": "Anuluj cykl ładowania",
+ "Undo chore execution": "Anuluj wykonanie obowiązku",
+ "Chore execution successfully undone": "Pomyślnie anulowano wykonanie obowiązku",
+ "Undo": "Anuluj",
+ "Booking successfully undone": "Rezerwacja została anulowana",
+ "Charge cycle successfully undone": "Pomyślnie anulowano cykl ładowania",
+ "Disable stock fulfillment checking for this ingredient": "Wyłącz sprawdzanie stanu zapasów dla tego składnika",
+ "Add all list items to stock": "Dodaj wszystkie pozycje z listy do zapasów",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "{string2} - {string1} - dodaję pozycję do listy zakupów",
+ "Use a specific stock item": "Użyj konkretnej pozycji z zapasów",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "{string2} - {string1} - oznacz jako otwarte",
+ "Marked {string1} of {string2} as opened": "{string2} - {string1} - oznaczono jako otwarte",
+ "Mark as opened": "Oznacz jako otwarte",
+ "Not opened": "Zamknięte",
+ "Opened": "Otwarte",
+ "{string0} opened": "Otwarto {string0}",
+ "Product due": "Produkt przeterminowany",
+ "Task due": "Termin wykonania zadania",
+ "Chore due": "Termin wykonania obowiązku",
+ "Battery charge cycle due": "Termin wymiany baterii",
+ "Show clock in header": "Pokaż zegar w nagłówku",
+ "Stock settings": "Ustawienia zapasów",
+ "Shopping list to stock workflow": "Lista zakupów do przepływu pracy zapasów",
+ "Skip": "Pomiń",
+ "Servings": "Porcje",
+ "Costs": "Koszta",
+ "Based on the prices of the last purchase per product": "Wyliczono na podstawie ostatnich cen zakupu produktów",
+ "The ingredients listed here result in this amount of servings": "Wymienione składniki dają taką ilość porcji.",
+ "Do not check against the shopping list when adding missing items to it": "Nie sprawdzaj listy zakupów, dodając do niej brakujące pozycje",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Domyślnie ilość dodawana do listy zakupów to: potrzebna ilość - ilość zapasów - ilość na liście zakupów. Po włączeniu tej opcji, \"ilość na liście zakupów\" nie jest uwzględniana przy kalkulacjach potrzebnej ilości.",
+ "Picture": "Zdjęcie",
+ "Uncheck ingredients to not put them on the shopping list": "Odznacz składniki, których nie chcesz dodać na listę zakupów",
+ "This is for statistical purposes only": "Wyłącznie do celów statystycznych",
+ "You have to select a recipe": "Musisz wybrać przepis",
+ "Key type": "Rodzaj klucza",
+ "Share/Integrate calendar (iCal)": "Udostępnij/Integruj kalendarz (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Użyj tego (publicznego) adresu URL, aby udostępnić lub zintegrować kalendarz w formacie iCal",
+ "Allow partial units in stock": "Zezwalaj na częściowe sztuki w zapasach",
+ "Enable tare weight handling": "Włącz obsługę masy tary",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Jest to przydatne np. w przypadku mąki w słoikach - przy zakupie / spożyciu/ zapasie zawsze waży się cały słoik, kwota jest następnie automatycznie obliczana na podstawie tego, co znajduje się w magazynie i masy tary zdefiniowanej poniżej",
+ "Tare weight": "Waga opakowania",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Włączona obsługa masy tary - zważ całe opakowanie, kwota zostanie automatycznie obliczona",
+ "You have to select a location": "Musisz wybrać miejsce",
+ "You have to select a store": "Musisz wybrać sklep",
+ "List": "Lista",
+ "Gallery": "Galeria",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Dziennik baterii",
+ "System info": "Informacje systemowe",
+ "Changelog": "Lista zmian",
+ "will be multiplied by a factor of {string1} to get {string2}": "będzie pomnożone przez współczynnik {string1} aby uzyskać {string2}",
+ "The given date is earlier than today, are you sure?": "Podana data jest wcześniejsza niż dzisiejsza, czy na pewno?",
+ "Product count": "Liczba produktów",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Będzie to użyte jako domyślne ustawienie podczas dodawania tego produktu jako składnika receptury",
+ "Add item": "Dodaj pozycję",
+ "Selected shopping list": "Zaznaczona lista zakupów",
+ "New shopping list": "Nowa lista zakupów",
+ "Delete shopping list": "Usuń listę zakupów",
+ "Chores settings": "Ustawienia obowiązków",
+ "Batteries settings": "Ustawienia przeglądów",
+ "Tasks settings": "Ustawienia zadań",
+ "Create shopping list": "Dodaj listę zakupów",
+ "Are you sure to delete shopping list \"{string0}\"?": "Czy na pewno chcesz usunąć listę zakupów \"{string0}\"?",
+ "Average shelf life": "Średni okres trwałości",
+ "Spoil rate": "Wskaźnik zepsucia",
+ "Show more": "Pokaż więcej",
+ "Show less": "Pokaż mniej",
+ "The amount must be between {string1} and {string2}": "Wartość musi być pomiędzy {string1} a {string2}",
+ "Day of month": "Dzień miesiąca",
+ "Monday": "Poniedziałek",
+ "Tuesday": "Wtorek",
+ "Wednesday": "Środa",
+ "Thursday": "Czwartek",
+ "Friday": "Piątek",
+ "Saturday": "Sobota",
+ "Sunday": "Niedziela",
+ "Configure userfields": "Konfiguracja pól użytkownika",
+ "Userfields": "Pola użytkownika",
+ "Entity": "Obiekt",
+ "Caption": "Opis",
+ "Type": "Typ",
+ "Create userfield": "Dodaj pole użytkownika",
+ "A entity is required": "Należy wybrać obiekt",
+ "A caption is required": "Opis jest wymagany",
+ "A type is required": "Należy wybrać typ",
+ "Show as column in tables": "Pokaż jako kolumna w tabelach",
+ "This is required and can only contain letters and numbers": "Pole jest wymagane i może zawierać jedynie litery i cyfry",
+ "Edit userfield": "Edytuj pole użytkownika",
+ "Plural forms": "Formy liczby mnogiej",
+ "One plural form per line, the current language requires": "Jedna forma liczby mnogiej na linię. Ten język wymaga",
+ "Plural count": "Ilość odmian liczby mnogiej",
+ "Plural rule": "Reguła odmiany",
+ "in plural form": "w liczbie mnogiej",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Za mało zapasów, brakuje {count} składnika | Za mało zapasów, brakuje {count} składników | Za mało zapasów, brakuje {count} składników | Za mało zapasów, brakuje {count} składników",
+ "Not enough in stock, but already on the shopping list": "Za mało zapasów, ale już na liście zakupów",
+ "Not enough in stock": "Za mało zapasów",
+ "Expiring soon days": "Dni \"blisko terminu przydatności\"",
+ "Default location": "Domyślne miejsce",
+ "Default amount for purchase": "Domyślna ilość do zakupu",
+ "Default amount for consume": "Domyślna ilość do spożycia",
+ "Variable amount": "Nadpisz ilość",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Opcja służy do podmiany ilości na liście składników. Powyższa ilość nadal będzie używana do sprawdzania ilości zapasów.",
+ "Track date only": "Tylko data wykonania",
+ "When enabled only the day of an execution is tracked, not the time": "Po włączeniu notowana jest tylko data wykonania bez czasu",
+ "Consume {string1} of {string2}": "{string2} - {string1} - spożyj",
+ "Meal plan": "Plan posiłków",
+ "Add recipe on {string0}": "Dodaj przepis {string0}",
+ "{count} serving | {count} servings": "{count} porcja | {count} porcje | {count} porcji | {count} porcji",
+ "Week costs": "Koszt tygodniowy",
+ "Configuration": "Konfiguracja",
+ "A predefined list of values, one per line": "Lista predefiniowanych wartości, jedna na linię",
+ "Products": "Produkty",
+ "Marked task {string0} as completed on {string0}": "Oznaczono zadanie {string0} jako wykonane dnia {string0} ",
+ "Booking has subsequent dependent bookings, undo not possible": "Rezerwacja ma kolejne zależne rezerwacje, nie można jej cofnąć",
+ "per serving": "na porcję",
+ "Never": "Nigdy",
+ "Today": "Dzisiaj",
+ "Consume {string1} of {string2} as spoiled": "{string2} - {string1} - oznacz jako zepsute",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Nie wszystkie składniki przepisu \"{string0}\" są dostępne, nic nie zostało usunięte",
+ "Undo task": "Cofnij zadanie",
+ "Due date rollover": "Przeniesienie daty wykonania",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Kiedy włączone, obowiązek nigdy nie będzie oznaczony jako po terminie - termin wykonania będzie przesuwać się każdego dnia",
+ "Location Content Sheet": "Arkusz Zawartości",
+ "Print": "Drukuj",
+ "all locations": "wszystkie lokalizacje",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "ta lokalizacja",
+ "Consumed amount": "Spożyta ilość",
+ "Time of printing": "Czas wydruku",
+ "Are you sure to delete equipment \"{string0}\"?": "Jesteś pewien że chcesz usunąć wyposażenie \"{string0}\"?",
+ "Parent product": "Produkt nadrzędny",
+ "Not possible because this product is already used as a parent product in another product": "Nie jest to możliwe, ponieważ ten produkt jest już użyty jako produkt nadrzędny w innym produkcie",
+ "Default conversions": "Domyślne konwersje",
+ "Factor": "Przelicznik",
+ "1 {string0} is the same as...": "1 {string0} to to samo co...",
+ "Create QU conversion": "Utwórz konwersję ilości",
+ "Default for QU": "Domyślne dla ilości",
+ "Quantity unit from": "Jednostka ilości z",
+ "Quantity unit to": "Jednostka ilości na",
+ "This cannot be equal to {string0}": "Nie może być równe {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Oznacza to, że 1 {string1} to to samo co {string2} {string3}",
+ "QU conversions": "Konwersja ilości",
+ "Product overrides": "Nadpisywanie produktu",
+ "Override for product": "Nadpisanie produktu",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Edytuj konwersję ilości",
+ "An assignment type is required": "Należy wybrać typ przypisania",
+ "Assignment type": "Typ przypisania",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Oznacza to, że następne wykonanie obowiązku jest zaplanowane na 1 dzień po ostatnim wykonaniu",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Oznacza to, że następne wykonanie obowiązku jest zaplanowane na 1 dzień po ostatnim wykonaniu, ale tylko w dniach tygodnia wybranych poniżej",
+ "This means the next execution of this chore is not scheduled": "Oznacza to, że następne wykonanie tego obowiązku nie zostanie zaplanowane",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Oznacza to, że następne wykonanie obowiązku jest zaplanowane na wybrany dzień każdego miesiąca",
+ "This means the next execution of this chore will not be assigned to anyone": "Oznacza to, że następne wykonanie tego obowiązku nie zostanie przypisane do nikogo",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Oznacza to, że następne wykonanie tego obowiązku zostanie przypisane do osoby która ostatnio je wykonała",
+ "This means the next execution of this chore will be assigned randomly": "Oznacza to, że następne wykonanie obowiązku zostanie przypisane losowo",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Oznacza to, że następne wykonanie tego obowiązku zostanie przypisane do następnej osoby w porządku alfabetycznym",
+ "Assign to": "Przypisz do",
+ "This assignment type requires that at least one is assigned": "Ten typ przypisania wymaga przynajmniej jednej przypisanej osoby",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} obowiązki przypisane do mnie | {count} obowiązków przypisanych do mnie | {count} obowiązek przypisany do mnie | {count} obowiązków przypisanych do mnie",
+ "Assigned to me": "Przypisane do mnie",
+ "assigned to {string0}": "przypisane do {string0}",
+ "Assignment": "Przypisanie",
+ "Consume product on chore execution": "Zużyj produkt po wykonaniu obowiązku",
+ "Are you sure to delete user field \"{string0}\"?": "Czy na pewno chcesz usunąć pole użytkownika \"{string0}\"?",
+ "Userentities": "Podmioty użytkownika",
+ "Create userentity": "Utwórz podmiot użytkownika",
+ "Show in sidebar menu": "Pokaż w menu bocznym",
+ "Edit userentity": "Edytuj podmiot użytkownika",
+ "Edit {string0}": "Edytuj {string0}",
+ "Create {string0}": "Dodaj {string0}",
+ "Are you sure to delete this userobject?": "Czy na pewno chcesz usunąć ten obiekt użytkownika?",
+ "Icon CSS class": "Klasa CSS ikonki",
+ "For example": "Na przykład",
+ "Configure fields": "Konfiguruj pola",
+ "Quantity unit plural form testing": "Testowa jednostka ilości w liczbie mnogiej",
+ "Result": "Wynik",
+ "Test plural forms": "Sprawdź formy liczby mnogiej",
+ "Scan a barcode": "Skanuj kod kreskowy",
+ "Error while initializing the barcode scanning library": "Błąd przy uruchamianiu biblioteki skanowania kodów kreskowych",
+ "The resulting price of this ingredient will be multiplied by this factor": "Cena tego składnika zostanie pomnożona przez ten współczynnik",
+ "Price factor": "Współczynnik ceny",
+ "Do you find grocy useful?": "Uważasz że grocy jest przydatne?",
+ "Say thanks": "Podziękuj",
+ "Search for recipes containing this product": "Szukaj przepisów zawierających ten produkt",
+ "Add to shopping list": "Dodaj do listy zakupów",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Dodano{string1} z {string2} do listy zakupów \"{string3}\"",
+ "Output": "Wynik wyjściowy",
+ "Energy (kcal)": "Wartość energetyczna (kcal)",
+ "Per stock quantity unit": "Na jednostkę ilości zakupów",
+ "Barcode scanner testing": "Test skanera kodów kreskowych",
+ "Expected barcode": "Oczekiwany kod kreskowy",
+ "Scan field": "Pole skanowania",
+ "Scanned barcodes": "Zeskanowane kody kreskowe",
+ "Hit": "Trafienie",
+ "Miss": "Pudło",
+ "Display recipe": "Wyświetl przepis",
+ "Accumulate sub products min. stock amount": "Zgromadź półprodukty w minimalną ilość zapasu",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Jeżeli włączone, minimalna ilość zapasu półproduktów będzie akumulowana do tego produktu. Oznacza to, że półproduktu nigdy nie będzie brakować, jedynie tego produktu.",
+ "Are you sure to remove this conversion?": "Czy na pewno chcesz usunąć tą konwersję?",
+ "Unit price": "Cena jednostkowa",
+ "Total price": "Cena całości",
+ "in {string0} and based on the purchase quantity unit": "w {string0} na podstawie ilości",
+ "Unlimited": "Nielimitowane",
+ "Clear": "Wyczyść",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Czy na pewno chcesz usunąć zawarty przepis \"{string0}\"?",
+ "Period interval": "Częstotliwość",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Oznacza to, że następne wykonanie obowiązku zaplanowane będzie co {string0} dni ",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Oznacza to, że następne wykonanie obowiązku zaplanowane będzie co {string0} tygodni",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Oznacza to, że następne wykonanie obowiązku zaplanowane będzie co {string0} miesięcy",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Oznacza to, że następne wykonanie obowiązku jest zaplanowane na 1 rok po ostatnim wykonaniu",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Oznacza to, że następne wykonanie obowiązku zaplanowane będzie co {string0} lat",
+ "Transfer": "Przenieś",
+ "From location": "Z miejsca",
+ "To location": "Na miejsce",
+ "There are no units available at this location": "Nie ma żadnych jednostek dostępnych dla tej lokalizacji",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Przeniesiono {string1} z {string2} od {string3} do {string4}",
+ "Stock entries": "Pozycje zapasu",
+ "Best before date": "Data przydatności do spożycia",
+ "Purchased date": "Data zakupu",
+ "Consume all {string0} for this stock entry": "Spożyj całość {string0} z zapasów",
+ "The amount cannot be lower than {string1}": "Wartość nie może być mniejsza niż {string1}",
+ "Stock entry successfully updated": "Pozycja zapasu zaktualizowana pomyślnie",
+ "Edit stock entry": "Edytuj pozycję zapasu",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Dostęp do kamery jest możliwy jedynie jeżeli jest wspierany i twoja przeglądarka na niego zezwala. Dodatkowo gorcy musi być dostępne za pośrednictwem bezpiecznego połączenia (https://)",
+ "Keep screen on": "Nie wygaszaj ekranu",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Nie wygaszaj ekranu jeżeli wyświetlana jest karta pełnoekranowa",
+ "A purchased date is required": "Data zakupu jest wymagana",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Wytwarza produkt",
+ "This booking cannot be undone": "Nie można cofnąć tej rezerwacji",
+ "Booking does not exist or was already undone": "Rezerwacja nie istnieje lub została już cofnięta",
+ "Are you sure to delete API key \"{string0}\"?": "Na pewno chcesz usunąć klucz API \"{string0}\"?",
+ "Add note": "Dodaj notatkę",
+ "Add note on {string0}": "Dodaj notatkę do {string0}",
+ "per day": "na dzień",
+ "Only undone items": "Tylko nie odhaczone pozycje",
+ "Add product": "Dodaj produkt",
+ "Add product on {string0}": "Dodaj produkt do {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Spożyj wszystkie składniki potrzebne do przepisów na ten tydzień",
+ "Meal plan recipe": "Przepis w planie posiłków",
+ "Meal plan note": "Notatka w planie posiłków",
+ "Meal plan product": "Produkt w planie posiłków",
+ "Scan mode": "Tryb skanowania",
+ "on": "włączony",
+ "off": "wyłączony",
+ "Scan mode is on but not all required fields could be populated automatically": "Tryb skanowania jest włączony, jednak nie wszystkie wymagane pola mogły zostać automatycznie uzupełnione",
+ "Is freezer": "Jest mrożonką",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Kiedy przenosimy produkt z/do zamrażarki, data przydatności jest automatycznie korygowana zgodnie z ustawieniami produktu",
+ "This cannot be the same as the \"From\" location": "Nie może być tożsame z lokalizacją \"od\"",
+ "Thawed": "Rozmrożone",
+ "Frozen": "Zamrożone",
+ "Are you sure to delete userentity \"{string0}\"?": "Czy na pewno chcesz usunąć podmiot użytkownika \"{string0}\"?",
+ "Shopping list settings": "Ustawienia listy zakupów",
+ "Show a month-view calendar": "Zobacz miesięczny widok kalendarza",
+ "Edit note on {string0}": "Edytuj notatkę do {string0}",
+ "Edit product on {string0}": "Edytuj produkt do {string0}",
+ "Edit recipe on {string0}": "Edytuj przepis do {string0}",
+ "Desired servings": "Pożądana ilość porcji",
+ "Base: {string0}": "Baza: {string0}",
+ "Recipes settings": "Ustawienia przepisów",
+ "Recipe card": "Karta przepisu",
+ "Group ingredients by their product group": "Grupuj składniki według przepisanych im grup produktów",
+ "Unknown store": "Nieznany sklep",
+ "Store": "Sklep",
+ "Transaction successfully undone": "Poprawnie cofnięto transakcję",
+ "Default store": "Sklep domyślny",
+ "Consume this stock entry": "Spożyj tą pozycje zapasów",
+ "Mark this stock entry as open": "Oznacz tą pozycje zapasów jako otwarta",
+ "Mark this item as done": "Odhacz tą pozycję",
+ "Edit this item": "Edytuj tą pozycję",
+ "Delete this item": "Usuń tą pozycję",
+ "Show an icon if the product is already on the shopping list": "Pokaż ikonkę, jeżeli produkt znajduje się już na liście zakupów",
+ "Calories": "Kalorie",
+ "means {string1} per {string2}": "oznacza {string1} na {string2}",
+ "Create inverse QU conversion": "Utwórz odwrotną konwersję ilości",
+ "Create recipe": "Utwórz przepis",
+ "Save & continue to add ingredients and included recipes": "Zapisz i kontynuuj dodawanie składników i dołączonych przepisów",
+ "Save & continue": "Zapisz i kontynuuj",
+ "Save & return to recipes": "Zapisz i wróć do przepisów",
+ "Stock value": "Wartość zapasów",
+ "Average price": "Średnia cena",
+ "Active": "Aktywny",
+ "Barcodes": "Kody kreskowe",
+ "Barcode": "Kod kreskowy",
+ "Create Barcode": "Utwórz kod kreskowy",
+ "Barcode for product": "Kod kreskowy dla produktu",
+ "Edit Barcode": "Edytuj kod kreskowy",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Za mało zapasów (nie wliczając kosztów), brakuje {string0} składników",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Za mało na stanie (nie wliczając kosztów). Brakuje: {string1}. {string2} znajduje się już na liście zakupów",
+ "Quantity unit stock cannot be changed after first purchase": "Jednostka ilości zapasu nie może być zmieniona po pierwszym zakupie",
+ "Clear filter": "Wyczyść filtr",
+ "Permissions for user {string0}": "Uprawnienia dla użytkownika {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "Czy na pewno chcesz usunąć dla siebie pełne uprawnienia?",
+ "Permissions saved": "Uprawnienia zapisane",
+ "You are not allowed to view this page": "Nie masz uprawnień aby zobaczyć tą stronę",
+ "Page not found": "Strona nie znaleziona",
+ "Unauthorized": "Brak uprawnień",
+ "Error source": "Błąd źródła",
+ "Error message": "Wiadomość błędu",
+ "Stack trace": "Śledzenie stosu",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "Ta strona nie istnieje",
+ "You will be redirected to the default page in {string0} seconds": "Zostaniesz przekierowany do strony domyślnej za {string0} sekund",
+ "Server error": "Błąd serwera",
+ "A server error occured while processing your request": "Wystąpił błąd podczas przetwarzania wprowadzonych zmian",
+ "If you think this is a bug, please report it": "Proszę zgłoś to, jeżeli uważasz że to błąd",
+ "Language": "Język",
+ "User settings": "Ustawienia użytkownika",
+ "Default": "Domyślne",
+ "Stock journal summary": "Podsumowanie dziennika zapasów",
+ "Journal summary": "Dziennik zapasów",
+ "Journal summary for this product": "Dziennik zapasów dla tego produktu",
+ "Consume exact amount": "Spożyj dokładną ilość",
+ "Value": "Wartość",
+ "{string0} total value": "{string0} wartość całkowita",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "Pokaż datę zakupu na stronach zakupów oraz zapasów (w innym wypadku data zakupu będzie domyślnie ustawiona na dzisiaj)",
+ "Common": "Pospolite",
+ "Decimal places allowed for amounts": "Miejsca po przecinku zezwolone dla ilości",
+ "Decimal places allowed for prices": "Miejsca po przecinku zezwolone dla cen",
+ "Stock entries for this product": "Wpisy zapasu dla tego produktu",
+ "Edit shopping list": "Edytuj listę zakupów",
+ "Save & continue to add quantity unit conversions & barcodes": "Zapisz i kontynuuj dodawanie jednostek konwersji i kodów kreskowych",
+ "Save & return to products": "Zapisz i wróć do produktów",
+ "Save & continue to add conversions": "Zapisz i kontynuuj dodawanie konwersji",
+ "Save & return to quantity units": "Zapisz i wróć do jednostek ilości",
+ "price": "Cena",
+ "New stock amount": "Nowa ilość zapasu",
+ "Price per stock unit": "Cena na jednostkę zapasu",
+ "Table options": "Opcje tabeli",
+ "This product is currently on a shopping list": "Produkt jest obecny na liście zakupów",
+ "Undo transaction": "Cofnij transakcję",
+ "Transaction type": "Typ transakcji",
+ "Transaction time": "Czas transakcji",
+ "Chore journal": "Dziennik obowiązków",
+ "Track chore execution": "Śledź postęp wykonania obowiązku",
+ "Mark task as completed": "Oznacz zadanie jako wykonane",
+ "Track charge cycle": "Śledź cykl ładowania",
+ "Battery journal": "Dziennik baterii",
+ "This product has a picture": "Ten produkt ma obraz",
+ "Consume this stock entry as spoiled": "Spożyj tą pozycję zapasów jako zepsuta",
+ "Configure user permissions": "Skonfiguruj pozwolenia użytkownika",
+ "Show a QR-Code for this API key": "Pokaż kod QR dla tego klucza API",
+ "This is the default quantity unit used when adding this product to the shopping list": "To jest domyślna jednostka używana podczas dodawania tego produktu do listy zakupów",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "Czy na pewno usunąć ten kod kreskowy?",
+ "Due date type": "Typ daty wykonania",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "Data ważności",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | | | ",
+ "Due date": "",
+ "Never overdue": "Nigdy się nie przeterminuje",
+ "{count} product is expired | {count} products are expired": " | | | ",
+ "Expired": "Przeterminowany",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "Pobierz plik",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "Wyłączone",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "Pokaż wyłączone",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "Zresetuj",
+ "Are you sure to reset the table options?": "Jesteś pewny/pewna, że chcesz usunąć opcje tabeli?",
+ "Hide/view columns": "Ukryj/pokaż kolumny",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "Ostatnia cena (Jednostka)",
+ "Last price (Total)": "Ostatnia cena (Suma)",
+ "Show header": "Pokaż nagłówek",
+ "Group by product group": "",
+ "Table": "Tabela",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "brak przypisania",
+ "who-least-did-first": "kto-ostatnio-ten-pierwszy",
+ "random": "losowo",
+ "in-alphabetical-order": "alfabetycznie",
+ "timeago_locale": "pl",
+ "timeago_nan": "NaN lat temu",
+ "moment_locale": "pl",
+ "datatables_localization": "{\"sEmptyTable\":\"Brak danych do wyświetlenia\",\"sInfo\":\"Pokazuję od _START_ do _END_ z _TOTAL_ wpisów\",\"sInfoEmpty\":\"Pokazuję od 0 do 0 z 0 wpisów\",\"sInfoFiltered\":\"(przefiltrowane z _MAX_ wszystkich wpisów)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Pokaż _MENU_ wpisów\",\"sLoadingRecords\":\"Ładowanie...\",\"sProcessing\":\"Przetwarzanie...\",\"sSearch\":\"Szukaj:\",\"sZeroRecords\":\"Nie znaleziono pasujących elementów\",\"oPaginate\":{\"sFirst\":\"Pierwsza\",\"sLast\":\"Ostatnia\",\"sNext\":\"Następna\",\"sPrevious\":\"Poprzednia\"},\"oAria\":{\"sSortAscending\":\": aktywuj, aby posortować kolumnę rosnąco\",\"sSortDescending\":\": aktywuj, aby posortować kolumnę malejąco\"}}",
+ "summernote_locale": "pl-PL",
+ "fullcalendar_locale": "pl",
+ "bootstrap-select_locale": "pl_PL",
+ "purchase": "Zakup",
+ "transfer_from": "Transfer z",
+ "transfer_to": "Transfer do",
+ "consume": "Spożycie",
+ "inventory-correction": "Korekta zapasów",
+ "product-opened": "Produkt otwarty",
+ "stock-edit-old": "Edytuj stary stan zapasu",
+ "stock-edit-new": "Edytuj nowy stan zapasu",
+ "self-production": "Wytworzone własnoręcznie",
+ "manually": "Ręcznie",
+ "dynamic-regular": "Co kilka dni",
+ "daily": "Codziennie",
+ "weekly": "W określone dni tygodnia",
+ "monthly": "Co miesiąc",
+ "yearly": "Co rok",
+ "text-single-line": "Tekst (jedna linia)",
+ "text-multi-line": "Tekst (wiele linii)",
+ "number-integral": "Liczba (całkowita)",
+ "number-decimal": "Liczba (dziesiętna)",
+ "date": "Data (bez czasu)",
+ "datetime": "Data i czas",
+ "checkbox": "Pole wyboru",
+ "preset-list": "Lista opcji",
+ "preset-checklist": "Lista kontrolna",
+ "link": "Link",
+ "link-with-title": "",
+ "file": "Plik",
+ "image": "Obraz",
+ "ADMIN": "ADMIN",
+ "USERS_CREATE": "TWORZENIE_UZYTKOWNIKOW",
+ "USERS_EDIT": "EDYCJA_UZYTKOWNIKOW",
+ "USERS_READ": "WYKAZ_UZYTKOWNIKOW",
+ "USERS_EDIT_SELF": "EDYCJA_SWOICH_DANYCH",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "COFNIECIE_NALADOWANIA_BATERII",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "SLEDZENIE_NALADOWANIA_BATERII",
+ "CHORE_TRACK_EXECUTION": "SLEDZENIE_WYKONANIA_OBOWIAZKOW",
+ "CHORE_UNDO_EXECUTION": "COFNIECIE_WYKONANIA_OBOWIAZKOW",
+ "MASTER_DATA_EDIT": "EDYCJA_DANYCH_GLOWNYCH",
+ "TASKS_UNDO_EXECUTION": "COFNIECIE_WYKONANIA_ZADANIA",
+ "TASKS_MARK_COMPLETED": "OZNACZENIE_ZADANIA_WYKONANE",
+ "STOCK_EDIT": "EDYCJA_STANU_ZAPASU",
+ "STOCK_TRANSFER": "TRASNFER_STANU_ZAPASU",
+ "STOCK_INVENTORY": "STAN_ZAPASU",
+ "STOCK_CONSUME": "SPOZYCIE_ZE_STANU",
+ "STOCK_OPEN": "OTWORZENIE_STANU_ZAPASU",
+ "STOCK_PURCHASE": "ZAKUP_ZAPASU",
+ "SHOPPINGLIST_ITEMS_ADD": "DODANIE_DO_ZAKUPOW",
+ "SHOPPINGLIST_ITEMS_DELETE": "USUNIECIE_Z_ZAKUPOW",
+ "USERS": "UZYTKOWNICY",
+ "STOCK": "STAN_ZAPASU",
+ "SHOPPINGLIST": "LISTA_ZAKUPOW",
+ "CHORES": "OBOWIĄZKI",
+ "BATTERIES": "BATERIE",
+ "TASKS": "ZADANIA",
+ "RECIPES": "PRZEPISY",
+ "EQUIPMENT": "WYPOSAZENIE",
+ "CALENDAR": "KALENDARZ",
+ "RECIPES_MEALPLAN": "PLAN_POSILKOW",
+ "cs": "Czech",
+ "da": "Danish",
+ "de": "German",
+ "el_GR": "Greek",
+ "en": "English",
+ "en_GB": "English (Great Britain)",
+ "es": "Spanish",
+ "fr": "French",
+ "hu": "Hungarian",
+ "it": "Italian",
+ "ja": "Japanese",
+ "ko_KR": "Korean",
+ "nl": "Dutch",
+ "no": "Norwegian",
+ "pl": "Polish",
+ "pt_BR": "Portuguese (Brazil)",
+ "pt_PT": "Portuguese (Portugal)",
+ "ru": "Russian",
+ "sk_SK": "Slovak",
+ "sv_SE": "Swedish",
+ "tr": "Turkish",
+ "zh_TW": "Chinese (Taiwan)",
+ "zh_CN": "",
+ "he_IL": "",
+ "ta": "",
+ "fi": "",
+ "Cookies": "Ciastka",
+ "Chocolate": "Czekolada",
+ "Pantry": "Spiżarnia",
+ "Candy cupboard": "Szafka cukierkowa",
+ "Tinned food cupboard": "Szafka na konserwy",
+ "Fridge": "Lodówka",
+ "Piece | Pieces": "Sztuka | Sztuki | Sztuk | Sztuk",
+ "Pack | Packs": "Paczka | Paczki | Paczek | Paczek",
+ "Glass | Glasses": "Szklanka | Szklanki | Szklanek | Szklanek",
+ "Tin | Tins": "Puszka | Puszki | Puszek | Puszek",
+ "Can | Cans": "Opakowanie | Opakowania | Opakowań | Opakowań",
+ "Bunch | Bunches": "Pęczek | Pęczki | Pęczków | Pęczków",
+ "Gummy bears": "Żelki",
+ "Crisps": "Chipsy",
+ "Eggs": "Jajka",
+ "Noodles": "Makaron",
+ "Pickles": "Ogórki konserwowe",
+ "Gulash soup": "Gulasz",
+ "Yogurt": "Jogurt",
+ "Cheese": "Ser",
+ "Cold cuts": "Wędlina",
+ "Paprika": "Papryka",
+ "Cucumber": "Ogórek",
+ "Radish": "Rzodkiweka",
+ "Tomato": "Pomidor",
+ "Changed towels in the bathroom": "Zmieniono ręczniki w łazience",
+ "Cleaned the kitchen floor": "Posprzątano kuchnię",
+ "Warranty ends": "Koniec gwarancji",
+ "TV remote control": "Pilot do TV",
+ "Alarm clock": "Budzik",
+ "Heat remote control": "Pilot do sterowania ciepłem",
+ "Lawn mowed in the garden": "Skoszono trawnik w ogrodzie",
+ "Some good snacks": "Dobre przekąski",
+ "Pizza dough": "Ciasto na pizzę",
+ "Sieved tomatoes": "Przesiane pomidory",
+ "Salami": "Salami",
+ "Toast": "Tost",
+ "Minced meat": "Mięso mielone",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti bolognese",
+ "Sandwiches": "Kanapki",
+ "English": "Angielski",
+ "German": "Niemiecki",
+ "Italian": "Włoski",
+ "This is the note content of the recipe ingredient": "To jest treść notatki składnika receptury",
+ "Demo User": "Użytkownik demonstracyjny",
+ "Gram | Grams": "Gram | Gramy | Gramów | Gramów",
+ "Flour": "Mąka",
+ "Pancakes": "Naleśniki",
+ "Sugar": "Cukier",
+ "Home": "Dom",
+ "Life": "Życiowe",
+ "Projects": "Projekty",
+ "Repair the garage door": "Naprawić drzwi garażowe",
+ "Fork and improve grocy": "Skopiuj i ulepsz grocy",
+ "Find a solution for what to do when I forget the door keys": "Znajdź rozwiązanie, co zrobić, gdy zapomnę kluczy do drzwi",
+ "Sweets": "Słodycze",
+ "Bakery products": "Pieczywo",
+ "Tinned food": "Konserwy",
+ "Butchery products": "Produkty mięsne",
+ "Vegetables/Fruits": "Warzywa/Owoce",
+ "Refrigerated products": "Produkty mrożone",
+ "Coffee machine": "Maszyna do kawy",
+ "Dishwasher": "Zmywarka",
+ "Liter": "Litr",
+ "Liters": "Litrów/ry",
+ "Bottle": "Butelka",
+ "Bottles": "Butelek/ki",
+ "Milk": "Mleko",
+ "Chocolate sauce": "Sos czekoladowy",
+ "Milliliters": "Milimetrów/ry",
+ "Milliliter": "Milimetr",
+ "Bottom": "Spód",
+ "Topping": "Górny",
+ "French": "Francuski",
+ "Turkish": "Turecki",
+ "Spanish": "Hiszpański",
+ "Russian": "Rosyjski",
+ "The thing which happens on the 5th of every month": "To, co dzieje się 5 dnia każdego miesiąca",
+ "The thing which happens daily": "To, co dzieje się codziennie",
+ "The thing which happens on Mondays and Wednesdays": "To, co dzieje się w poniedziałki i środy",
+ "Swedish": "Szwedzki",
+ "Polish": "Polski",
+ "Milk Chocolate": "Mleko Czekoladowe",
+ "Dark Chocolate": "Ciemna Czekolada",
+ "Slice | Slices": "Plasterek | Plasterki | Plasterków | Plasterków",
+ "Example userentity": "Przykładowy podmiot użytkownika",
+ "This is an example user entity...": "To jest przykład podmiotu użytkownika...",
+ "Custom field": "Pole niestandardowe",
+ "Example field value...": "Przykładowa wartość pola ...",
+ "Waffle rolls": "Wafle",
+ "Danish": "Duński",
+ "Dutch": "Holenderski",
+ "Norwegian": "Norweski",
+ "Demo": "Demo",
+ "Stable version": "Wersja stabilna",
+ "Preview version": "Wersja rozwojowa",
+ "current release": "obecne wydanie",
+ "not yet released": "jeszcze nie wydane",
+ "Portuguese (Brazil)": "Portugalski (Brazylia)",
+ "This is a note": "To jest notatka",
+ "Freezer": "Zamrażarka",
+ "Hungarian": "Węgierski",
+ "Slovak": "Słowacki",
+ "Czech": "Czeski",
+ "Portuguese (Portugal)": "Portugalski (Portugalia)",
+ "DemoSupermarket1": "DemoSupermarket1",
+ "DemoSupermarket2": "DemoSupermarket2",
+ "Japanese": "Japoński",
+ "Chinese (Taiwan)": "Chiński (Tajwan)",
+ "Greek": "Grecki",
+ "Korean": "Koreański",
+ "Chinese (China)": "Chiński (Chiny)",
+ "Hebrew (Israel)": "Hebrajski (Izrael)",
+ "Tamil": "Tamilski",
+ "Finnish": "Fiński",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/pt_BR.json b/locale/pt_BR.json
new file mode 100644
index 00000000..4c2851ee
--- /dev/null
+++ b/locale/pt_BR.json
@@ -0,0 +1,869 @@
+{
+ "Stock overview": "Resumo do estoque",
+ "{count} product expires | {count} products expiring": "{count} produtos vencendo | {count} produtos vencendo",
+ "within the next day | within the next {count} days": "produtos vencendo nos próximos dias | nos próximos {count} dias",
+ "{count} product is already expired | {count} products are already expired": "{count} product is already expired | {count} produtos já vencidos",
+ "{count} product is overdue | {count} products are overdue": " | ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} produtos estão abaixo da quantidade minima de estoque definida | {count} produtos estão abaixo da quantidade minima de estoque",
+ "Product": "Produto",
+ "{count} Product | {count} Products": "{count} Produtos | {count} Products",
+ "Amount": "Quantidade",
+ "Logout": "Sair",
+ "Chores overview": "Visão Geral das Tarefas Domésticas",
+ "Batteries overview": "Visão Geral das Baterias",
+ "Purchase": "Compra",
+ "Consume": "Consumo",
+ "Inventory": "Inventário",
+ "Shopping list": "Lista de Compras",
+ "Chore tracking": "Monitoramento de tarefas domésticas",
+ "Battery tracking": "Monitoramento de Bateria",
+ "Locations": "Localizações",
+ "Stores": "Lojas",
+ "Quantity units": "Unidades de medida",
+ "Chores": "Tarefas Domésticas",
+ "Batteries": "Baterias",
+ "Chore": "Tarefa Doméstica",
+ "Next estimated tracking": "Próximo acompanhamento estimado",
+ "Last tracked": "Último acompanhamento",
+ "Battery": "Bateria",
+ "Last charged": "Última Carga",
+ "Next planned charge cycle": "Próximo ciclo de carga planejada",
+ "Best before": "Melhor consumido antes de ",
+ "OK": "OK",
+ "Product overview": "Visão geral de Produto",
+ "Stock quantity unit": "Unidades de medida do estoque",
+ "Stock amount": "Total de Estoque",
+ "Last purchased": "Última compra",
+ "Last used": "Último uso",
+ "Spoiled": "Vencido",
+ "Barcode lookup is disabled": "A pesquisa de código de barras está desativada",
+ "will be added to the list of barcodes for the selected product on submit": "será adicionado à lista de códigos de barras do produto selecionado no envio",
+ "New amount": "Novo total",
+ "Note": "Nota",
+ "Tracked time": "Registo de tempo",
+ "Chore overview": "Visão Geral de Tarefas",
+ "Tracked count": "Total de Registos",
+ "Battery overview": "Visão Geral de Bateria",
+ "Charge cycles count": "Contagem de ciclos de carga",
+ "Create shopping list item": "Criar item na lista de compras",
+ "Edit shopping list item": "Editar item da lista de compras",
+ "Save": "Salvar",
+ "Add": "Adicionar",
+ "Name": "Nome",
+ "Location": "Localização",
+ "Min. stock amount": "Total mínimo de estoque",
+ "Description": "Descrição",
+ "Create product": "Criar produto",
+ "Barcode(s)": "Código(s) de Barra",
+ "Minimum stock amount": "Total mínimo de estoque",
+ "Default best before days": "Próximo prazo de validade padrão",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "Unidades de medida do estoque",
+ "Factor purchase to stock quantity unit": "Fator de unidade de compra e estoque",
+ "Create location": "Criar Localização",
+ "Create store": "Criar loja",
+ "Create quantity unit": "Criar unidade de medida",
+ "Period type": "Tipo de período",
+ "Period days": "Período em dias",
+ "Create chore": "Criar tarefa doméstica",
+ "Used in": "Usado em",
+ "Create battery": "Criar bateria",
+ "Edit battery": "Editar bateria",
+ "Edit chore": "Editar tarefa doméstica",
+ "Edit quantity unit": "Edutar unidade de medida",
+ "Edit product": "Editar produto",
+ "Edit location": "Editar localização",
+ "Edit store": "Editar loja",
+ "Record data": "Gravar dados",
+ "Manage master data": "Gerenciar dados mestres",
+ "This will apply to added products": "Isso irá se aplicar aos produtos acicionados",
+ "never": "nunca",
+ "Add products that are below defined min. stock amount": "Adicionar produtos que estão abaixo da quantidade mínima de estoque definido",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Isto significa que 1 {string1} comprado será convertido em {string2} {string3} no estoque",
+ "Login": "Login",
+ "Username": "Usuário",
+ "Password": "Senha",
+ "Invalid credentials, please try again": "Credenciais inválidas, por favor tente novamente",
+ "Are you sure to delete battery \"{string0}\"?": "Tem certeza que quer apagar esta bateria \"{string0}\"?",
+ "Yes": "Sim",
+ "No": "Não",
+ "Are you sure to delete chore \"{string0}\"?": "Você tem certeza que quer deletar a tarefa doméstica \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" não pode ser resolvido como um produto, como deseja proceder?",
+ "Create or assign product": "criar ou adicionar produto",
+ "Cancel": "Cancelar",
+ "Add as new product": "Adicionar como produto novo",
+ "Add as barcode to existing product": "adicionar código de barras à um produto existente",
+ "Add as new product and prefill barcode": "adicionar um novo produto e seu código de barras",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Você tem certeza que quer apagar esta quantidade \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Tem certeza que quer apagar este produto \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Tem certeza que quer apagar este local \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Você tem certeza que deseja apagar a loja \"{string0}\"?",
+ "Manage API keys": "Organizar Chaves do API",
+ "REST API & data model documentation": "Documentação do REST API & modelo de dados",
+ "API keys": "chaves API",
+ "Create new API key": "Criar nova chave API",
+ "API key": "Chave API",
+ "Expires": "Vence",
+ "Created": "Criado",
+ "This product is not in stock": "Este produto não está no estoque",
+ "This means {string0} will be added to stock": "Isso significa que {string0} será adicionado ao estoque",
+ "This means {string0} will be removed from stock": "Isso significa que {string0} será removido do estoque",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Isso significa que a proxima execução desta tarefa doméstica será agendada {string0} dias depois da ultima execução",
+ "Removed {string1} of {string2} from stock": "Removido {string1} de {string2} do estoque",
+ "About grocy": "Sobre o grocy",
+ "Close": "Fechar",
+ "Released on": "Lançado em",
+ "Added {string1} of {string2} to stock": "Adicionado {string1} de {string2} no estoque",
+ "Stock amount of {string1} is now {string2}": "A quantidade de estoque de {string1} agora é {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Acompanhamento da tarefa {string1} de {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Acompanhamento do ciclo de carga de bateria {string1} de {string2}",
+ "Consume all {string0} which are currently in stock": "Consumir todos os {string0} os quais estão atualmente em estoque",
+ "All": "Todos",
+ "Search": "Procurar",
+ "Not logged in": "Não logado",
+ "You have to select a product": "Você precisa selecionar um produto",
+ "You have to select a chore": "Você precisa selecionar uma tarefa",
+ "You have to select a battery": "Você precisa selecionar uma bateria",
+ "A name is required": "O nome é obrigatório",
+ "A location is required": "A localização é obrigatória",
+ "A quantity unit is required": "A unidade de medida é obrigatória",
+ "A period type is required": "O tipo de período é obrigatório",
+ "A best before date is required": "A data de validade é obrigatória",
+ "Settings": "Configurações",
+ "This can only be before now": "Só pode ser antes de agora",
+ "Calendar": "Calendário",
+ "Recipes": "Receitas",
+ "Edit recipe": "Editar receita",
+ "Ingredients list": "Lista de ingredientes",
+ "Add recipe ingredient": "Adicionar ingrediente",
+ "Edit recipe ingredient": "Editar ingrediente",
+ "Are you sure to delete recipe \"{string0}\"?": "Você tem certeza que quer deletar a receita \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Você tem certeza que quer deletar o ingrediente \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Você tem certeza que quer esvaziar a lista de compra \"{string0}\"?",
+ "Clear list": "Limpar lista",
+ "Requirements fulfilled": "Requerimentos completos",
+ "Put missing products on shopping list": "Colocar a quantidade faltante na lista de compras",
+ "Enough in stock": "Suficiente em estoque",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Estoque insuficiente, {count} ingrediente faltando mas já está na lista de compras | Estoque insuficiente, {count} ingredientes faltando mas já estão na lista de compras",
+ "Expand to fullscreen": "Expandir para tela inteira",
+ "Ingredients": "Ingredientes",
+ "Preparation": "Preparação",
+ "Recipe": "Receita",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Estoque insuficiente, {string1} faltando, {string2} já na lista de compras",
+ "Show notes": "Exibir anotações",
+ "Put missing amount on shopping list": "Colocar a quantidade faltante na lista de compras",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Você tem certeza que quer colocar todos os ingredientes faltando da receita \"{string0}\" na lista de compras?",
+ "Added for recipe {string0}": "Adicionar para a receita {string0}",
+ "Manage users": "Gerenciar usuários",
+ "User": "Usuário",
+ "Users": "Usuários",
+ "Are you sure to delete user \"{string0}\"?": "Tem certeza que quer apagar o usuário \"{string0}\"?",
+ "Create user": "Criar usuário",
+ "Edit user": "Editar usuário",
+ "First name": "Primeiro nome",
+ "Last name": "Último nome",
+ "A username is required": "É necessário um nome de usuário",
+ "Confirm password": "Confirme a senha",
+ "Passwords do not match": "As senhas não conferem",
+ "Change password": "Alterar senha",
+ "Done by": "Feito por",
+ "Last done by": "Feito pela última vez por",
+ "Unknown": "Desconhecido",
+ "Chores journal": "Diário de tarefas domésticas",
+ "0 means suggestions for the next charge cycle are disabled": "0 significa que as sugestões para o próximo ciclo de carga estão desabilitados",
+ "Charge cycle interval (days)": "Intervalo de ciclo de carga (dias)",
+ "Last price": "Último preço",
+ "Price history": "Histórico de preço",
+ "No price history available": "Não há histórico de preço disponível",
+ "Price": "Preço",
+ "Unit": "Unidade",
+ "{count} Unit | {count} Units": "{count} Unidade | {count} Unidades",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} tarefa doméstica está para vencer | {count} tarefas domésticas estão para vencer",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} tarefa doméstica está vencida | {count} tarefas domésticas estão vencidas",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} bateria deve ser carregada | {count} baterias devem ser carregadas",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} bateria está pendente de ser carregada | {count} baterias estão pendentes de serem carregadas",
+ "in singular form": "no singular",
+ "Quantity unit": "Unidade de medida",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Removidos todos os ingredientes da receita \"{string0}\" do estoque",
+ "Consume all ingredients needed by this recipe": "Consumir todos os ingredientes necessários para esta receita",
+ "Click to show technical details": "Clique para exibir detalhes técnicos",
+ "Error while saving, probably this item already exists": "Erro ao salvar, provavelmente este item já existe",
+ "Error details": "Detalhes do erro",
+ "Tasks": "Tarefas",
+ "Show done tasks": "Exibir tarefas concluídas",
+ "Task": "Tarefa",
+ "Due": "Prazo",
+ "Assigned to": "Designado a",
+ "Mark task \"{string0}\" as completed": "Marcar tarefa \"{string0}\" como completada",
+ "Uncategorized": "Não categorizado",
+ "Task categories": "Categorias de tarefas",
+ "Create task": "Criar tarefa",
+ "A due date is required": "É necessário um prazo",
+ "Category": "Categoria",
+ "Edit task": "Editar tarefa",
+ "Are you sure to delete task \"{string0}\"?": "Tem certeza que quer apagar a tarefa \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} tarefa a ser feita | {count} tarefas a serem feitas",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} tarefa pendente de ser feita | {count} tarefas pendentes de serem feitas",
+ "Edit task category": "Editar categoria de tarefas",
+ "Create task category": "Criar categoria de tarefas",
+ "Product groups": "Grupos de produtos",
+ "Ungrouped": "Não agrupado",
+ "Create product group": "Criar grupo de produto",
+ "Edit product group": "Editar grupo de produto",
+ "Product group": "Grupo de produto",
+ "Are you sure to delete product group \"{string0}\"?": "Você tem certeza que quer deletar o grupo de produto \"{string0}\"?",
+ "Stay logged in permanently": "Permanecer logado permanentemente",
+ "When not set, you will get logged out at latest after 30 days": "Quando não marcado, você será deslogado após 30 dias",
+ "Status": "Status",
+ "Below min. stock amount": "Abaixo da quantidade min. de estoque",
+ "Expiring soon": "Vencendo em breve",
+ "Already expired": "Já vencidos",
+ "Due soon": "Vencendo em breve",
+ "Overdue": "Vencidos",
+ "View settings": "Visualizar configurações",
+ "Auto reload on external changes": "Recarregar em caso de alterações externas",
+ "Enable night mode": "Habilitar modo noturno",
+ "Auto enable in time range": "Auto habilitar em um intervalo de tempo",
+ "From": "De",
+ "in format": "em formato",
+ "To": "Para",
+ "Time range goes over midnight": "O intervalo de tempo passa da meia-noite",
+ "Product picture": "Foto do produto",
+ "No file selected": "Nenhum arquivo selecionado",
+ "Delete": "Deletar",
+ "Select file": "Selecionar arquivo",
+ "Image of product {string0}": "Imagem do produto {string0}",
+ "Deletion not possible": "",
+ "Equipment": "Equipamento",
+ "Instruction manual": "Manual de instrução",
+ "The selected equipment has no instruction manual": "O equipamento selecionado não tem manual de instrução",
+ "Notes": "Anotações",
+ "Edit equipment": "Editar equipamento",
+ "Create equipment": "Criar equipamento",
+ "The current file will be deleted on save": "",
+ "No picture available": "Nenhuma imagem disponível",
+ "Presets for new products": "Configurações para novos produtos",
+ "Included recipes": "Receitas incluídas",
+ "A recipe is required": "A receita é obrigatória",
+ "Add included recipe": "Adicionar receita incluída",
+ "Edit included recipe": "Editar receita incluída",
+ "Group": "Grupo",
+ "This will be used as a headline to group ingredients together": "Será usado como parâmetro para agrupar ingredientes",
+ "Journal": "Diário",
+ "Stock journal": "Diário de estoque",
+ "Undone on": "Desfeito em",
+ "Batteries journal": "Diário de baterias",
+ "Undo charge cycle": "Desfazer ciclo de carga",
+ "Undo chore execution": "Desfazer execução de tarefa doméstica",
+ "Chore execution successfully undone": "Execução de terefa doméstica desfeita com sucesso",
+ "Undo": "Desfazer",
+ "Booking successfully undone": "Reserva desfeita com sucesso",
+ "Charge cycle successfully undone": "Ciclo de carga desfeito com sucesso",
+ "Disable stock fulfillment checking for this ingredient": "Desabilitar verificação de estoque para este ingrediente",
+ "Add all list items to stock": "Adicionar todos os itens da lista ao estoque",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Adicionando item a lista de compra {string1} de {string2}",
+ "Use a specific stock item": "Usar um item específico do estoque",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Marcar {string1} de {string2} como aberto",
+ "Marked {string1} of {string2} as opened": "{string1} de {string2} marcado como aberto",
+ "Mark as opened": "Marcar como aberto",
+ "Not opened": "Não aberto",
+ "Opened": "Aberto",
+ "{string0} opened": "{string0} aberto",
+ "Product due": "",
+ "Task due": "Vencimento da tarefa",
+ "Chore due": "Vencimento da tarefa",
+ "Battery charge cycle due": "Vencimento do ciclo de carga",
+ "Show clock in header": "Exibir relógio no cabeçalho",
+ "Stock settings": "Configurações de estoque",
+ "Shopping list to stock workflow": "Fluxo de trabalho da lista de compras para o estoque",
+ "Skip": "Pular",
+ "Servings": "Porções",
+ "Costs": "Custos",
+ "Based on the prices of the last purchase per product": "Baseado no preço da ultima compra por produto",
+ "The ingredients listed here result in this amount of servings": "Os ingredientes listados aqui resultam nesta quantidade de porções",
+ "Do not check against the shopping list when adding missing items to it": "Não verificar com a lista de compras quando adicionar itens faltando a ela",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Por padrão a quantidade a ser adicionada a lista de compras é \"quantidade necessária - quantidade em estoque - quantidade na lista de compras\" - quando está habilidado, só é verificado a quantidade em estoque, não o que já está na lista de compras",
+ "Picture": "Imagem",
+ "Uncheck ingredients to not put them on the shopping list": "Desmarque os ingredientes para não colocá-los na lista de compra",
+ "This is for statistical purposes only": "Isto é apenas para fins estatísticos",
+ "You have to select a recipe": "Você precisa selecionar uma receita",
+ "Key type": "Tipo de chave",
+ "Share/Integrate calendar (iCal)": "Compartilhar/Integrar calendário (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Use a seguinte URL (pública) para compartilhar ou integrar o calendário no formato iCal",
+ "Allow partial units in stock": "Permitir unidades parciais no estoque",
+ "Enable tare weight handling": "Ativar manipulação de tara",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Isso é útil, por exemplo para farinha em frascos - na compra/consumo/inventário, você sempre pesa todo o frasco, o valor a ser lançado é calculado automaticamente com base no que está em estoque e no peso da tara definido abaixo",
+ "Tare weight": "Peso da tara",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Manuseio da tara ativado - pesar todo o contêiner, o valor a ser lançado será calculado automaticamente",
+ "You have to select a location": "Você precisa selecionar uma localização",
+ "You have to select a store": "Necessário Selecionar uma Loja",
+ "List": "Lista",
+ "Gallery": "Galeria",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Diário para esta bateria",
+ "System info": "Informações do sistema",
+ "Changelog": "Log de alterações",
+ "will be multiplied by a factor of {string1} to get {string2}": "será multiplicado por um fator de {string1} para obter {string2}",
+ "The given date is earlier than today, are you sure?": "Você tem certeza que a data especificada é anterior a data de hoje?",
+ "Product count": "Contagem de produto",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Isto será usado como configuração padrão quando este produto for adicionado como ingrediente",
+ "Add item": "Adicionar item",
+ "Selected shopping list": "Lista de Compras Selecionada",
+ "New shopping list": "Nova lista de compras",
+ "Delete shopping list": "Deletar lista de compras",
+ "Chores settings": "Configurações de tarefas",
+ "Batteries settings": "Configurações de baterias",
+ "Tasks settings": "Configurações de tarefas",
+ "Create shopping list": "Criar lista de compras",
+ "Are you sure to delete shopping list \"{string0}\"?": "Você tem certeza que quer deletar a lista de compra \"{string0}\"?",
+ "Average shelf life": "Prazo médio de validade",
+ "Spoil rate": "Taxa de desperdício",
+ "Show more": "Exibir mais",
+ "Show less": "Exibir menos",
+ "The amount must be between {string1} and {string2}": "A quantidade deve ser entre {string1} e {string2}",
+ "Day of month": "Dia do mês",
+ "Monday": "Segunda-feira",
+ "Tuesday": "Terça-feira",
+ "Wednesday": "Quarta-feira",
+ "Thursday": "Quinta-feira",
+ "Friday": "Sexta-feira",
+ "Saturday": "Sábado",
+ "Sunday": "Domingo",
+ "Configure userfields": "Configurar campos do usuário",
+ "Userfields": "Campos do usuário",
+ "Entity": "Entidade",
+ "Caption": "Legenda",
+ "Type": "Tipo",
+ "Create userfield": "Criar campo do usuário",
+ "A entity is required": "A entidade é obrigatória",
+ "A caption is required": "A legenda é obrigatória",
+ "A type is required": "O tipo é obrigatório",
+ "Show as column in tables": "Exibir como colunas em tabelas",
+ "This is required and can only contain letters and numbers": "Isto é obrigatório e podem conter apenas letras e numeros",
+ "Edit userfield": "Editar campo do usuário",
+ "Plural forms": "Formas de plural",
+ "One plural form per line, the current language requires": "Uma forma de plural por linha, o idioma atual requer",
+ "Plural count": "Contagem de plural",
+ "Plural rule": "Regra de plural",
+ "in plural form": "no plural",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Não há estoque suficiente, {count} falta ingrediente | Não há estoque suficiente, {count} faltam ingredientes",
+ "Not enough in stock, but already on the shopping list": "Estoque insuficiente, mas já na lista de compras",
+ "Not enough in stock": "Não há estoque suficiente",
+ "Expiring soon days": "Expirando em breve",
+ "Default location": "Localização padrão",
+ "Default amount for purchase": "Quantidade padrão para comprar",
+ "Default amount for consume": "Quantidade padrão para consumir",
+ "Variable amount": "Quantidade variável",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Quando não estiver vazio, será exibido em vez do valor informado acima, enquanto o valor ainda será usado para verificação de preenchimento de estoque",
+ "Track date only": "Rastrear apenas data",
+ "When enabled only the day of an execution is tracked, not the time": "Quando habilitado, apenas o dia de execução será rastreado, não o horário",
+ "Consume {string1} of {string2}": "Consumir {string1} de {string2}",
+ "Meal plan": "Plano de refeições",
+ "Add recipe on {string0}": "Adicionar receita a {string0}",
+ "{count} serving | {count} servings": "{count}porção | {count}porções",
+ "Week costs": "Custos na semana",
+ "Configuration": "Configuração",
+ "A predefined list of values, one per line": "Uma lista predefinida de valores, uma por linha",
+ "Products": "Produtos",
+ "Marked task {string0} as completed on {string0}": "Tarefas marcadas {string0} como completadas em {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "A reserva tem reservas dependentes subsequentes, não sendo possível desfazer",
+ "per serving": "porções",
+ "Never": "Nunca",
+ "Today": "Hoje",
+ "Consume {string1} of {string2} as spoiled": "Consumir {string1} de {string2} como estragado",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Nem todos os ingredientes da receita \"{string0}\" estão no estoque, nada foi removido",
+ "Undo task": "",
+ "Due date rollover": "Rolagem da data de vencimento",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Quando ativada, a tarefa nunca pode estar vencida, a data de vencimento avançará todos os dias quando estiver vencida",
+ "Location Content Sheet": "Planilha de localização",
+ "Print": "Imprimir",
+ "all locations": "todas as localizações",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "esta localização",
+ "Consumed amount": "",
+ "Time of printing": "Hora da impressão",
+ "Are you sure to delete equipment \"{string0}\"?": "Você tem certeza que quer deletar o equipamento \"{string0}\"?",
+ "Parent product": "Produto pai",
+ "Not possible because this product is already used as a parent product in another product": "Não foi possível pois este produto já está sendo usado como produto pai em outro produto",
+ "Default conversions": "Conversões padrão",
+ "Factor": "Fator",
+ "1 {string0} is the same as...": "1 {string0} é o mesmo que",
+ "Create QU conversion": "Criar conversão de medida",
+ "Default for QU": "Padrão para unidade de medida",
+ "Quantity unit from": "Unidade de medida de",
+ "Quantity unit to": "Unidade de medida para",
+ "This cannot be equal to {string0}": "Isto não pode ser igual a {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Isto significa que 1 {string1} é o mesmo que {string2} {string3} ",
+ "QU conversions": "Conversões de medidas",
+ "Product overrides": "Substituições de produto",
+ "Override for product": "Substituir pelo produto",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Editar conversão de medida",
+ "An assignment type is required": "Um tipo de atribuição é requerido",
+ "Assignment type": "Tipo de atribuição",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Isso significa que a próxima execução desta tarefa doméstica será agendada 1 dia depois da ultima execução",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Isso significa que a próxima execução desta tarefa doméstica será agendada 1 dia depois da ultima execução, porém apenas para os dias de semana selecionados abaixo",
+ "This means the next execution of this chore is not scheduled": "Isso significa que a próxima execução desta tarefa doméstica não está agendada",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Isto significa que a próxima execução desta tarefa doméstica será agendada no dia selecionado de cada mês",
+ "This means the next execution of this chore will not be assigned to anyone": "Isso significa que a próxima execução desta tarefa não será atribuída para ninguém",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Isso significa que a próxima execução desta tarefa será atribuída para aquele que a executou por último",
+ "This means the next execution of this chore will be assigned randomly": "Isso significa que a próxima execução desta tarefa será atribuída aleatoriamente",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Isso significa que a próxima execução desta tarefa será atribuída para o próximo de acordo com a ordem alfabética",
+ "Assign to": "Atribuir para",
+ "This assignment type requires that at least one is assigned": "Esse tipo de atribuição requer que ao menos um esteja atribuído",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} tarefa doméstica está atribuída a mim | {count} tarefas domésticas estão atribuídas a mim",
+ "Assigned to me": "Atribuir para mim",
+ "assigned to {string0}": "atribuído para {string0}",
+ "Assignment": "Tarefa",
+ "Consume product on chore execution": "Consumir produto na execução de tarefa doméstica",
+ "Are you sure to delete user field \"{string0}\"?": "Tem certeza que quer apagar o campo de usuário \"{string0}\"?",
+ "Userentities": "Entidade de usuário",
+ "Create userentity": "Criar entidade de usuário",
+ "Show in sidebar menu": "Exibir no menu lateral",
+ "Edit userentity": "Editar entidade de usuário",
+ "Edit {string0}": "Editar {string0}",
+ "Create {string0}": "Criar {string0}",
+ "Are you sure to delete this userobject?": "Tem certeza que quer deletar este objeto de usuário?",
+ "Icon CSS class": "Classe CSS do ícone",
+ "For example": "Por exemplo",
+ "Configure fields": "Configurar campos",
+ "Quantity unit plural form testing": "Teste de forma de plural de unidade de quantidade",
+ "Result": "Resultado",
+ "Test plural forms": "Testar formas de plural",
+ "Scan a barcode": "Ler um código de barras",
+ "Error while initializing the barcode scanning library": "Erro ao inicializar a biblioteca de scanner de código de barras",
+ "The resulting price of this ingredient will be multiplied by this factor": "O preço resultante desde ingrediente será multiplicado por esse fator",
+ "Price factor": "Fator de preço",
+ "Do you find grocy useful?": "Você achou que o Grocy é útil?",
+ "Say thanks": "Dizer obrigado",
+ "Search for recipes containing this product": "Procurar receitas contendo este produto",
+ "Add to shopping list": "Adicionar à lista de compras",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Adicionado {string1} de {string2} na lista de compra \"{string3}\"",
+ "Output": "Saída",
+ "Energy (kcal)": "Energia (kcal)",
+ "Per stock quantity unit": "Quantidade em estoque por unidade",
+ "Barcode scanner testing": "Teste do leitor de códigos de barra",
+ "Expected barcode": "Código de barras esperado",
+ "Scan field": "Campo de scan",
+ "Scanned barcodes": "Códigos de barra lidos",
+ "Hit": "Acertos",
+ "Miss": "Erros",
+ "Display recipe": "Exibir receita",
+ "Accumulate sub products min. stock amount": "Acumular valor mínimo do estoque de subprodutos",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Se ativado, a quantidade mínima de estoque de subprodutos será acumulada neste produto, significa que o subproduto nunca estará \"ausente\", somente este produto",
+ "Are you sure to remove this conversion?": "Você tem certeza que quer remover esta conversão?",
+ "Unit price": "Unidade de preço",
+ "Total price": "Preço total",
+ "in {string0} and based on the purchase quantity unit": "em {string0} e baseado na unidade de medida de compra",
+ "Unlimited": "Sem limite",
+ "Clear": "Limpar",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Você tem certeza que quer remover a receira incluída \"{string0}\"?",
+ "Period interval": "Intervalo do período",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Isto significa que a próxima execução desta tarefa doméstica deverá somente ser agendada a cada {string0} dias",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Isto significa que a próxima execução desta tarefa doméstica deverá somente ser agendada a cada {string0} semanas",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Isto significa que a próxima execução desta tarefa doméstica deverá somente ser agendada a cada {string0} meses",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Isto significa que a próxima execução desta tarefa doméstica é agendada 1 ano após a última execução",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Isto significa que a próxima execução desta tarefa doméstica deverá somente ser agendada a cada {string0}anos",
+ "Transfer": "Transferir",
+ "From location": "De",
+ "To location": "Para",
+ "There are no units available at this location": "Não há nenhuma unidade disponivel neste local",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Transferido{string1} de {string2} de {string3} para {string4}",
+ "Stock entries": "Itens no estoque",
+ "Best before date": "Consumir antes de",
+ "Purchased date": "Data de compra",
+ "Consume all {string0} for this stock entry": "Consumir todos os {string0} para esse item no estoque",
+ "The amount cannot be lower than {string1}": "A quantidade não pode ser menor que {string1}",
+ "Stock entry successfully updated": "Estoque atualizado com sucesso",
+ "Edit stock entry": "Editar item no estoque",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "O acesso para a câmera só é possível quando suportado e autorizado pelo seu Navegador e quando o grocy está trafegando por uma conexão segura (https://).",
+ "Keep screen on": "Mantenha a tela ligada",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Mantenha a tela ligada quando estiver mostrando um \"Cartão de tela-cheia\"",
+ "A purchased date is required": "Uma data de compra é obrigatória",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Produto Manufaturado",
+ "This booking cannot be undone": "Essa reserva não pode ser desfeita",
+ "Booking does not exist or was already undone": "Reserva não existe ou já foi desfeita anteriormente.",
+ "Are you sure to delete API key \"{string0}\"?": "Tem certeza que gostaria de remover a chave de API \"{string0}\"?",
+ "Add note": "Adicionar Comentário",
+ "Add note on {string0}": "Adicionar Nota a {string0}",
+ "per day": "Diário",
+ "Only undone items": "Somente Itens incompletos",
+ "Add product": "Adicionar Produto",
+ "Add product on {string0}": "Adicionar produto em {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Consumir todos ingredientes necessários para as receitas dessa semana ou produtos.",
+ "Meal plan recipe": "Receita do Plano de Refeição ",
+ "Meal plan note": "Comentário do Plano de Refeição",
+ "Meal plan product": "Produto do Plano de Refeição",
+ "Scan mode": "Modo Scanner",
+ "on": "Ligado",
+ "off": "Desligado",
+ "Scan mode is on but not all required fields could be populated automatically": "Modo Scanner está ligado, mas não foi possível preencher todos os Campos Obrigatórios automaticamente.",
+ "Is freezer": "Congelador",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Quando mover produtos de/para uma localidade freezer, as datas \"melhor consumir antes de\" serão ajustadas automaticamente de acordo com as configurações do produto.",
+ "This cannot be the same as the \"From\" location": "Isto não será o mesmo que a localidade \"De\"",
+ "Thawed": "Derretido",
+ "Frozen": "Congelado",
+ "Are you sure to delete userentity \"{string0}\"?": "Tem certeza que deseja remover \"{string0}\"?",
+ "Shopping list settings": "Configurações da Lista de Compras",
+ "Show a month-view calendar": "Visualizar calendário em formato \"Mês Completo\"",
+ "Edit note on {string0}": "Editar comentário em {string0}",
+ "Edit product on {string0}": "Editar produto em {string0}",
+ "Edit recipe on {string0}": "Editar receita em {string0}",
+ "Desired servings": "Porções Desejadas",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "Configurações da Receita",
+ "Recipe card": "Cartão de Receita",
+ "Group ingredients by their product group": "Agrupar ingredientes por grupo de produto",
+ "Unknown store": "Loja Desconhecida",
+ "Store": "Loja",
+ "Transaction successfully undone": "Transação estornada com sucesso",
+ "Default store": "Loja Padrão",
+ "Consume this stock entry": "Consumir esse item do estoque",
+ "Mark this stock entry as open": "Marcar esse item do estoque como Aberto",
+ "Mark this item as done": "Marcar item como Concluído",
+ "Edit this item": "Editar esse item",
+ "Delete this item": "Remover esse item",
+ "Show an icon if the product is already on the shopping list": "Mostrar um ícone se o produto já está na lista de compras",
+ "Calories": "Calorias",
+ "means {string1} per {string2}": "quer dizer {string1} para cada {string2}",
+ "Create inverse QU conversion": "Criar conversão QU inversa",
+ "Create recipe": "Criar receita",
+ "Save & continue to add ingredients and included recipes": "Salvar & Continuar para adicionar ingredientes nas receitas incluídas",
+ "Save & continue": "Salvar & continuar",
+ "Save & return to recipes": "Salvar & retornar a receitas",
+ "Stock value": "",
+ "Average price": "",
+ "Active": "",
+ "Barcodes": "",
+ "Barcode": "",
+ "Create Barcode": "",
+ "Barcode for product": "",
+ "Edit Barcode": "",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "",
+ "Permissions for user {string0}": "",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "",
+ "You are not allowed to view this page": "",
+ "Page not found": "",
+ "Unauthorized": "",
+ "Error source": "",
+ "Error message": "",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "",
+ "A server error occured while processing your request": "",
+ "If you think this is a bug, please report it": "",
+ "Language": "",
+ "User settings": "",
+ "Default": "",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | ",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": " | ",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "não-designado",
+ "who-least-did-first": "quem-fez-menos-primeiro",
+ "random": "aleatório",
+ "in-alphabetical-order": "em-ordem-alfabética",
+ "timeago_locale": "pt-br",
+ "timeago_nan": "NaN anos atrás",
+ "moment_locale": "pt-br",
+ "datatables_localization": "{ \"sEmptyTable\": \"Nenhum registro encontrado\", \"sInfo\": \"Mostrando de _START_ até _END_ de _TOTAL_ registros\", \"sInfoEmpty\": \"Mostrando 0 até 0 de 0 registros\", \"sInfoFiltered\": \"(Filtrados de _MAX_ registros)\", \"sInfoPostFix\": \"\", \"sInfoThousands\": \".\", \"sLengthMenu\": \"_MENU_ resultados por página\", \"sLoadingRecords\": \"Carregando...\", \"sProcessing\": \"Processando...\", \"sZeroRecords\": \"Nenhum registro encontrado\", \"sSearch\": \"Pesquisar\", \"oPaginate\": { \"sNext\": \"Próximo\", \"sPrevious\": \"Anterior\", \"sFirst\": \"Primeiro\", \"sLast\": \"Último\" }, \"oAria\": { \"sSortAscending\": \": Ordenar colunas de forma ascendente\", \"sSortDescending\": \": Ordenar colunas de forma descendente\" }, \"select\": { \"rows\": { \"_\": \"Selecionado {string0} linhas\", \"0\": \"Nenhuma linha selecionada\", \"1\": \"Selecionado 1 linha\" } }}",
+ "summernote_locale": "pt-BR",
+ "fullcalendar_locale": "pt-br",
+ "bootstrap-select_locale": "pt_BR",
+ "purchase": "comprar",
+ "transfer_from": "transferir de",
+ "transfer_to": "transferir para",
+ "consume": "consumir",
+ "inventory-correction": "correção de inventário",
+ "product-opened": "produto-aberto",
+ "stock-edit-old": "editar estoque antigo",
+ "stock-edit-new": "editar estoque novo",
+ "self-production": "Produção Propria",
+ "manually": "manualmente",
+ "dynamic-regular": "Regular dinâmico",
+ "daily": "diário",
+ "weekly": "semanal",
+ "monthly": "mensal",
+ "yearly": "anualmente",
+ "text-single-line": "Texto (linha única)",
+ "text-multi-line": "Texto (Multiplas Linhas)",
+ "number-integral": "Número (inteiro)",
+ "number-decimal": "Número (decimal)",
+ "date": "Data (sem horário)",
+ "datetime": "Data e Hora",
+ "checkbox": "Caixa de Seleção",
+ "preset-list": "lista-predefinida",
+ "preset-checklist": "lista-de-verificação-predefinida",
+ "link": "link",
+ "link-with-title": "",
+ "file": "",
+ "image": "",
+ "Cookies": "Biscoitos",
+ "Chocolate": "Chocolate",
+ "Pantry": "Despensa",
+ "Candy cupboard": "Armário de doces",
+ "Tinned food cupboard": "Armário de Enlatados",
+ "Fridge": "Geladeira",
+ "Piece | Pieces": "Pedaço | Pedaços",
+ "Pack | Packs": "Pacote | Pacotes",
+ "Glass | Glasses": "Vidro | Vidros",
+ "Tin | Tins": "Enlatado | Enlatados",
+ "Can | Cans": "Lata | Latas",
+ "Bunch | Bunches": "Cacho | Cachos",
+ "Gummy bears": "Gomas",
+ "Crisps": "Batatinhas",
+ "Eggs": "Ovos",
+ "Noodles": "Noodles",
+ "Pickles": "Picles",
+ "Gulash soup": "Sopa de goulash",
+ "Yogurt": "Yogurt",
+ "Cheese": "Queijo",
+ "Cold cuts": "Cortes frios",
+ "Paprika": "Páprica",
+ "Cucumber": "Pepino",
+ "Radish": "Rabanete",
+ "Tomato": "Tomate",
+ "Changed towels in the bathroom": "Trocar toalhas do banheiro",
+ "Cleaned the kitchen floor": "Limpar o chão da cozinha",
+ "Warranty ends": "Término de Garantia",
+ "TV remote control": "Controle Remoto da TV",
+ "Alarm clock": "Despertador",
+ "Heat remote control": "Controle remoto do aquecedor",
+ "Lawn mowed in the garden": "Cortar a grama do jardim",
+ "Some good snacks": "Alguns lanches",
+ "Pizza dough": "Massa de pizza",
+ "Sieved tomatoes": "Tomates pelados",
+ "Salami": "Salame",
+ "Toast": "Torrada",
+ "Minced meat": "Carne Moída",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Espaguete à bolonhesa",
+ "Sandwiches": "Sanduiches",
+ "English": "Inglês",
+ "German": "Alemão",
+ "Italian": "Italiano",
+ "This is the note content of the recipe ingredient": "Este é o conteúdo do ingrediente da receita",
+ "Demo User": "Usuário de demonstração",
+ "Gram | Grams": "Grama | Gramas",
+ "Flour": "Farinha",
+ "Pancakes": "Panquecas",
+ "Sugar": "Açucar",
+ "Home": "Casa",
+ "Life": "Vida",
+ "Projects": "Projetos",
+ "Repair the garage door": "Consertar o portão da Garagem",
+ "Fork and improve grocy": "Ajude a aprimorar o grocy",
+ "Find a solution for what to do when I forget the door keys": "Encontre uma solução para o que fazer quando eu esquecer as chaves da porta",
+ "Sweets": "Doces",
+ "Bakery products": "Produtos de confeitaria",
+ "Tinned food": "Alimentos enlatados",
+ "Butchery products": "Produtos de açougue",
+ "Vegetables/Fruits": "Vegetais/Frutas",
+ "Refrigerated products": "Produtos refrigerados",
+ "Coffee machine": "Máquina de café",
+ "Dishwasher": "Lava-louças",
+ "Liter": "Litro",
+ "Liters": "Litros",
+ "Bottle": "Garrafa",
+ "Bottles": "Garrafas",
+ "Milk": "Leite",
+ "Chocolate sauce": "Chocolate temperado",
+ "Milliliters": "Milimetros",
+ "Milliliter": "Milimetro",
+ "Bottom": "Inferior",
+ "Topping": "Cobertura",
+ "French": "Francês",
+ "Turkish": "Turco",
+ "Spanish": "Espanhol",
+ "Russian": "Russo",
+ "The thing which happens on the 5th of every month": "Coisas que ocorrem todo dia 5 de cada mês",
+ "The thing which happens daily": "Coisas que ocorrem diariamente",
+ "The thing which happens on Mondays and Wednesdays": "Coisas que ocorrem as segundas e quartas",
+ "Swedish": "Sueco",
+ "Polish": "Polonês",
+ "Milk Chocolate": "Chocolate Branco",
+ "Dark Chocolate": "Chocolate Amargo",
+ "Slice | Slices": "Fatia | Fatias",
+ "Example userentity": "Exemplo de entidade de usuário",
+ "This is an example user entity...": "Este é um exemplo de entidade de usuário",
+ "Custom field": "Campo customizado",
+ "Example field value...": "Exemplo de valor de campo",
+ "Waffle rolls": "Rolos de waffle",
+ "Danish": "Dinamarquês",
+ "Dutch": "Holandês",
+ "Norwegian": "Norueguês",
+ "Demo": "Demo",
+ "Stable version": "Versão estável",
+ "Preview version": "Versão de Prévia",
+ "current release": "versão atual",
+ "not yet released": "ainda não lançado",
+ "Portuguese (Brazil)": "Português (Brasil)",
+ "This is a note": "Isso é uma anotação",
+ "Freezer": "Freezer",
+ "Hungarian": "Húngaro",
+ "Slovak": "Eslováquio",
+ "Czech": "Tcheco",
+ "Portuguese (Portugal)": "Português (Portugal)",
+ "DemoSupermarket1": "SupermercadoDemo1",
+ "DemoSupermarket2": "SupermercadoDemo2",
+ "Japanese": "Japonês",
+ "Chinese (Taiwan)": "Chinês (Taiwan)",
+ "Greek": "",
+ "Korean": "",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/pt_PT.json b/locale/pt_PT.json
new file mode 100644
index 00000000..ab9ec6e2
--- /dev/null
+++ b/locale/pt_PT.json
@@ -0,0 +1,787 @@
+{
+ "Stock overview": "Visão geral do Stock",
+ "{count} product expires | {count} products expiring": "{count} produto expira | {count} produtos a expirar",
+ "within the next day | within the next {count} days": "no próximo dia | nos próximos {count} dias",
+ "{count} product is already expired | {count} products are already expired": "{count} produto já expirou | {count} produtos já expiraram",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} produto está abaixo da quantidade min. de stock | {count} produtos estão abaixo da quantidade min. de stock",
+ "Product": "Produto",
+ "{count} Product | {count} Products": "{count} Produto | {count} Produtos",
+ "Amount": "Quantidade",
+ "Next best before date": "Próxima data de validade a expirar",
+ "Logout": "Logout",
+ "Chores overview": "Visão geral das Tarefas",
+ "Batteries overview": "Visão geral das Pilhas",
+ "Purchase": "Comprar",
+ "Consume": "Consumir",
+ "Inventory": "Inventário",
+ "Shopping list": "Lista de compras",
+ "Chore tracking": "Tracking de Tarefas",
+ "Battery tracking": "Tracking de Pilhas",
+ "Locations": "Localizações",
+ "Stores": "",
+ "Quantity units": "Unidades de medida",
+ "Chores": "Tarefas",
+ "Batteries": "Pilhas",
+ "Chore": "Tarefa",
+ "Next estimated tracking": "Próximo acompanhamento estimado",
+ "Last tracked": "Apagar lista de compras",
+ "Battery": "Pilha",
+ "Last charged": "Última carga",
+ "Next planned charge cycle": "Próximo ciclo de carga planeado",
+ "Best before": "Consumir antes de",
+ "OK": "OK",
+ "Product overview": "Visão geral do Produto",
+ "Stock quantity unit": "Unidade de medida do Stock",
+ "Stock amount": "Quantidade em stock",
+ "Last purchased": "Comprado pela última vez em",
+ "Last used": "Usado pela última vez em",
+ "Spoiled": "Estragado",
+ "Barcode lookup is disabled": "Pesquisa por código de barras desactivada",
+ "will be added to the list of barcodes for the selected product on submit": "ao submeter irá ser adicionado à lista de códigos de barra para o produto seleccionado",
+ "New amount": "Nova quantidade",
+ "Note": "Nota",
+ "Tracked time": "Tempo registado",
+ "Chore overview": "Visão geral da Tarefa",
+ "Tracked count": "Total de registos",
+ "Battery overview": "Visão geral da Pilha",
+ "Charge cycles count": "Total de ciclos de carga",
+ "Create shopping list item": "Criar item na lista de compras",
+ "Edit shopping list item": "Editar item da lista de compras",
+ "Save": "Guardar",
+ "Add": "Adicionar",
+ "Name": "Nome",
+ "Location": "Localização",
+ "Min. stock amount": "Quantidade mínima de stock",
+ "QU purchase": "UM compra",
+ "QU stock": "UM stock",
+ "QU factor": "UM factor",
+ "Description": "Descrição",
+ "Create product": "Criar produto",
+ "Barcode(s)": "Código(s) de barras",
+ "Minimum stock amount": "Quantidade mínima de stock",
+ "Default best before days": "Data de validade padrão",
+ "Quantity unit purchase": "Unidade de medida da compra",
+ "Quantity unit stock": "Unidade de medida do stock",
+ "Factor purchase to stock quantity unit": "Unidade de medida do stock por compra",
+ "Create location": "Criar localização",
+ "Create store": "",
+ "Create quantity unit": "Criar unidade de medida",
+ "Period type": "Tipo de periodo",
+ "Period days": "Dias do periodo",
+ "Create chore": "Criar tarefa",
+ "Used in": "Usado em",
+ "Create battery": "Criar Pilha",
+ "Edit battery": "Editar Pilha",
+ "Edit chore": "Editar Tarefa",
+ "Edit quantity unit": "Editar unidade de medida",
+ "Edit product": "Editar Produto",
+ "Edit location": "Editar Localização",
+ "Edit store": "",
+ "Record data": "Gravar dados",
+ "Manage master data": "Gerir dados mestre",
+ "This will apply to added products": "Isto será aplicado a todos os produtos",
+ "never": "nunca",
+ "Add products that are below defined min. stock amount": "Adicionar produtos que estão abaixo da quantidade min. de stock definida",
+ "For purchases this amount of days will be added to today for the best before date suggestion": "Numa compra este número de dias irá ser adicionado ao dia de hoje como sugestão de prazo de validade",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Isto significa que 1 {string1} comprado irá ser convertido em {string2} {string3} em stock",
+ "Login": "Login",
+ "Username": "Nome de utilizador",
+ "Password": "Palavra passe",
+ "Invalid credentials, please try again": "Credenciais incorrectas, por favor tente novamente",
+ "Are you sure to delete battery \"{string0}\"?": "Tem a certeza que pretende eliminar a pilha \"{string0}\"?",
+ "Yes": "Sim",
+ "No": "Não",
+ "Are you sure to delete chore \"{string0}\"?": "Tem a certeza que pretende eliminar a tarefa \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "Não foi possivel identificar \"{string0}\" como um produto, como pretende prosseguir?",
+ "Create or assign product": "Criar ou atribuir a produto",
+ "Cancel": "Cancelar",
+ "Add as new product": "Adicionar como novo produto",
+ "Add as barcode to existing product": "Adicionar como código de barras de um produto já existente",
+ "Add as new product and prefill barcode": "Adicionar como novo produto e preencher código de barras",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Tem a certeza que pretende eliminar a unidade de medida \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Tem a certeza que pretende eliminar o produto \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Tem a certeza que pretende eliminar o local \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "",
+ "Manage API keys": "Gerir chaves da API",
+ "REST API & data model documentation": "REST API e documentação do modelo de dados",
+ "API keys": "Chaves da API",
+ "Create new API key": "Criar uma nova chave da API",
+ "API key": "Chave da API",
+ "Expires": "Expira",
+ "Created": "Criada",
+ "This product is not in stock": "Este produto não existe em stock",
+ "This means {string0} will be added to stock": "Isto significa que {string0} será adicionado ao stock",
+ "This means {string0} will be removed from stock": "Isto significa que {string0} será removido do stock",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Isto significa que a próxima tarefa será agendada para {string0} dias depois da última execução.",
+ "Removed {string1} of {string2} from stock": "Removidos {string1} de {string2} do stock",
+ "About grocy": "Acerca do grocy",
+ "Close": "Fechar",
+ "Released on": "Lançado em",
+ "Added {string1} of {string2} to stock": "Adicionado {string1} de {string2} ao stock",
+ "Stock amount of {string1} is now {string2}": "Quantidade de stock de {string1} é agora {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Acompanhamento da tarefa {string1} de {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Registado o ciclo de carga da bateria {string1} em {string2}",
+ "Consume all {string0} which are currently in stock": "Usar todos os/as {string0} que estão em stock",
+ "All": "Todos",
+ "Track charge cycle of battery {string0}": "Registar o ciclo de carga da bateria {string0}",
+ "Track execution of chore {string0}": "Registar a execução da tarefa {string0}",
+ "Filter by location": "Filtrar por localização",
+ "Search": "Procurar",
+ "Not logged in": "Login não efectuado",
+ "You have to select a product": "Tem que seleccionar um produto",
+ "You have to select a chore": "Tem que seleccionar uma tarefa",
+ "You have to select a battery": "Tem que seleccionar uma pilha",
+ "A name is required": "O nome é obrigatório",
+ "A location is required": "A localização é obrigatória",
+ "The amount cannot be lower than {string0}": "A quantidade não pode ser menor do que {string0}",
+ "This cannot be negative": "Isto não pode ser negativo",
+ "A quantity unit is required": "Uma unidade de medida é obrigatória",
+ "A period type is required": "Um tipo de periodo é obrigatório",
+ "A best before date is required": "O prazo de validade é obrigatório",
+ "Settings": "Definições",
+ "This can only be before now": "Apenas pode ser anterior a hoje",
+ "Calendar": "Calendário",
+ "Recipes": "Receitas",
+ "Edit recipe": "Editar receita",
+ "Ingredients list": "Lista de ingredientes",
+ "Add recipe ingredient": "Adicionar ingrediente da receita",
+ "Edit recipe ingredient": "Editar ingrediente da receita",
+ "Are you sure to delete recipe \"{string0}\"?": "Pretende eliminar a receita \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Pretende eliminar o ingrediente da receita \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Pretende esvaziar a lista de compras \"{string0}\"?",
+ "Clear list": "Esvaziar lista",
+ "Requirements fulfilled": "Requisitos cumpridos",
+ "Put missing products on shopping list": "Colocar produtos em falta na lista de compras",
+ "Enough in stock": "Suficiente em stock",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Não existe suficiente em stock, {count} ingrediente em falta mas já na lista de compras | Não existe suficiente em stock, {count} ingredientes em falta mas já na lista de compras",
+ "Expand to fullscreen": "Expandir para ecrã inteiro",
+ "Ingredients": "Ingredientes",
+ "Preparation": "Preparação",
+ "Recipe": "Receita",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Não existe suficiente em stock, {string1} em falta, {string2} já na lista de compras",
+ "Show notes": "Mostrar notas",
+ "Put missing amount on shopping list": "Colocar quantidade em falta na lista de compras",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Pretende colocar todos os produtos em falta da receita \"{string0}\" na lista de compras?",
+ "Added for recipe {string0}": "Adicionado para a receita {string0}",
+ "Manage users": "Gerir utilizadores",
+ "User": "Utilizador",
+ "Users": "Utilizadores",
+ "Are you sure to delete user \"{string0}\"?": "Pretende eliminar o utilizador \"{string0}\"?",
+ "Create user": "Criar utilizador",
+ "Edit user": "Editar utilizador",
+ "First name": "Nome",
+ "Last name": "Apelido",
+ "A username is required": "Nome de utilizador é obrigatório",
+ "Confirm password": "Confirmar palavra passe",
+ "Passwords do not match": "Palavras passes não são iguais",
+ "Change password": "Alterar palavra passe",
+ "Done by": "Efectuado por",
+ "Last done by": "Efectuado na ultima vez por",
+ "Unknown": "Desconhecido",
+ "Filter by chore": "Filtrar por tarefa",
+ "Chores journal": "Diário de tarefas",
+ "0 means suggestions for the next charge cycle are disabled": "0 significa que as sugestões para o próximo ciclo de carga estão desactivadas",
+ "Charge cycle interval (days)": "Periodo do ciclo de carga (dias)",
+ "Last price": "Ultimo preço",
+ "Price history": "Histórico de preços",
+ "No price history available": "Histórico de preços não está disponivel",
+ "Price": "Preço",
+ "in {string0} per purchase quantity unit": "em {string0} por unidade de medida de compra",
+ "The price cannot be lower than {string0}": "O preço não pode ser inferior a {string0}",
+ "Unit": "Unidade",
+ "{count} Unit | {count} Units": "{count} Unidade | {count} Unidades",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} tarefa está agendada | {count} tarefas estão agendadas ",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} tarefa já ultrapassou o prazo | {count} tarefas já ultrapassaram o prazo",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} pilha precisa ser carregada | {count} pilhas precisam ser carregadas",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} pilha ultrapassou o prazo para ser carregada | {count} pilhas ultrapassaram o prazo para serem carregadas",
+ "in singular form": "no singular",
+ "Never expires": "Nunca expira",
+ "This cannot be lower than {string0}": "Não pode ser mais baixo do que {string0}",
+ "-1 means that this product never expires": "-1 significa que o produto nunca expira",
+ "Quantity unit": "Unidade de medida",
+ "Only check if a single unit is in stock (a different quantity can then be used above)": "Marcar se apenas uma única unidade se encontra em stock (uma quantidade diferente pode depois ser usada acima)",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?": "Pretende consumir todos os ingredientes necessários para a receita \"{string0}\" (ingredientes identificados com \"Marcar apenas se apenas uma unidade se encontra em stock\" serão ignorados)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Remover todos os ingredientes da receita \"{string0}\" do stock",
+ "Consume all ingredients needed by this recipe": "Consumir todos os ingredientes necessários nesta receita",
+ "Click to show technical details": "Clicar para ver detalhes técnicos",
+ "Error while saving, probably this item already exists": "Erro ao gravar, provavelmente este item já existe",
+ "Error details": "Detalhes do erro",
+ "Tasks": "Tarefas",
+ "Show done tasks": "Mostrar tarefas concluidas",
+ "Task": "Tarefa",
+ "Due": "Agendado para",
+ "Assigned to": "Atribuído a",
+ "Mark task \"{string0}\" as completed": "Marcar tarefa \"{string0}\" como concluída",
+ "Uncategorized": "Sem categoria",
+ "Task categories": "Categorias das tarefas",
+ "Create task": "Criar tarefa",
+ "A due date is required": "A data de agendamento é obrigatória",
+ "Category": "Categoria",
+ "Edit task": "Editar tarefa",
+ "Are you sure to delete task \"{string0}\"?": "Pretende eliminar a tarefa \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} tarefa agendada | {count} tarefas agendadas",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} tarefas pendentes de execução | {count}taferas pendentes de realização",
+ "Edit task category": "Editar categoria da tarefa",
+ "Create task category": "Criar categoria da tarefa",
+ "Product groups": "Grupos de produto",
+ "Ungrouped": "Sem agrupar",
+ "Create product group": "Criar grupo de produtos",
+ "Edit product group": "Editar grupos de produto",
+ "Product group": "Grupo de produto",
+ "Are you sure to delete product group \"{string0}\"?": "Estás seguro que queres apagar o grupo de produtos \"{string0}\"?",
+ "Stay logged in permanently": "Permanecer com a sessão aberta",
+ "When not set, you will get logged out at latest after 30 days": "Quando não marcado, a sessão encerrará em no máximo 30 dias",
+ "Status": "",
+ "Below min. stock amount": "Por debaixo da quantidade min. de stock",
+ "Expiring soon": "Expira em breve",
+ "Already expired": "Já expirado",
+ "Due soon": "previsto em breve",
+ "Overdue": "Caducado",
+ "View settings": "Ver configuração",
+ "Auto reload on external changes": "Auto recarrega com alterações externas",
+ "Enable night mode": "Habilitar modo de noite",
+ "Auto enable in time range": "Auto activado no limite de tempo",
+ "From": "Desde",
+ "in format": "em formato",
+ "To": "Para",
+ "Time range goes over midnight": "Limite de tempo passa a meia-noite",
+ "Product picture": "Foto do produto",
+ "No file selected": "Não existe ficheiro seleccionado",
+ "If you don't select a file, the current picture will not be altered": "Se não seleccionar um ficheiro, a imagem não será alterada",
+ "Delete": "Apagar",
+ "The current picture will be deleted when you save the product": "A imagem actual será apagada quando salvar o produto",
+ "Select file": "Seleccionar ficheiro",
+ "Image of product {string0}": "Imagem do produto {string0}",
+ "This product cannot be deleted because it is in stock, please remove the stock amount first.": "Este produto não pode ser apagado porque está em stock, por favor, elimine o stock antes",
+ "Delete not possible": "Não é possível eliminar",
+ "Equipment": "Equipamento",
+ "Instruction manual": "Manual de instruções",
+ "The selected equipment has no instruction manual": "O equipamento seleccionado não tem manual de instruções",
+ "Notes": "Notas",
+ "Edit equipment": "Editar equipamento",
+ "Create equipment": "Criar equipamento",
+ "If you don't select a file, the current instruction manual will not be altered": "Se não seleccionar um ficheiro, o manual de instruções actual não será alterado",
+ "No instruction manual available": "Manual de instruções não disponível",
+ "The current instruction manual will be deleted when you save the equipment": "O actual manual de instruções será apagado quando salvar o equipamento",
+ "No picture available": "Sem imagem disponível",
+ "Filter by product group": "Filtra por grupo de produto",
+ "Presets for new products": "Configurações para novos produtos",
+ "Included recipes": "Receitas incluídas",
+ "A recipe is required": "É necessário uma receita",
+ "Add included recipe": "Adicionar receita incluída",
+ "Edit included recipe": "Editar receita incluída",
+ "Group": "Grupo",
+ "This will be used as a headline to group ingredients together": "Este será usado como cabeçalho para agrupar os ingredientes",
+ "Journal": "Diário",
+ "Stock journal": "Diário do stock",
+ "Filter by product": "Filtrar por produto",
+ "Booking time": "Tempo de reserva",
+ "Booking type": "Tipo de reserva",
+ "Undo booking": "Desfazer reserva",
+ "Undone on": "Desfeito em",
+ "Batteries journal": "Diário de pilhas",
+ "Filter by battery": "Filtrar por bateria",
+ "Undo charge cycle": "Anular ciclo de carga",
+ "Undo chore execution": "Anular a execução da tarefa",
+ "Chore execution successfully undone": "Execução da tarefa anulada com sucesso",
+ "Undo": "Anular",
+ "Booking successfully undone": "Reserva anulada com sucesso",
+ "Charge cycle successfully undone": "Ciclo de carga anulado com sucesso",
+ "This cannot be negative and must be an integral number": "Não pode ser um número negativo e tem de ser um número inteiro",
+ "Disable stock fulfillment checking for this ingredient": "Desactivar verificação do stock para este ingrediente",
+ "Add all list items to stock": "Adicionar todos os elementos da lista ao stock",
+ "Add {string1} of {string2} to stock": "Adicionar {string1} de {string2} ao stock",
+ "Adding shopping list item {string1} of {string2}": "Adicionando item {string1} de {string2} à lista de compras",
+ "Use a specific stock item": "Usar um elemento de stock específico",
+ "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\"": "O primeiro elemento da lista será seleccionado primeiro pela regra de \"primeiro o que expira primeiro, depois primeiro a chegar, primeiro a sair\"",
+ "Mark {string1} of {string2} as open": "Marcar {string1} de {string2} como aberto",
+ "When this product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)": "Quando este produto for marcado aberto, a data de preferência antes de será substituída por hoje + este número de dias ( o valor 0 desactiva a função)",
+ "Default best before days after opened": "Dias de consumo depois de aberto por defeito",
+ "Marked {string1} of {string2} as opened": "Marcar {string1} de {string2} como aberto",
+ "Mark as opened": "Marcar como aberto",
+ "Not opened": "Fechado",
+ "Opened": "Aberto",
+ "{string0} opened": "{string0} aberto",
+ "Product expires": "Validade do produto",
+ "Task due": "Tarefa prevista em",
+ "Chore due": "Tarefa prevista em",
+ "Battery charge cycle due": "Ciclo de carga da bateria previsto em",
+ "Show clock in header": "Mostrar relógio no cabeçalho",
+ "Stock settings": "Configuração do stock",
+ "Shopping list to stock workflow": "Fluxo de trabalho da lista de compras para o stock",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set": "",
+ "Skip": "Passar",
+ "Servings": "Porções",
+ "Costs": "Custos",
+ "Based on the prices of the last purchase per product": "Baseado nos preços das últimas compras por produto",
+ "The ingredients listed here result in this amount of servings": "",
+ "Do not check against the shopping list when adding missing items to it": "",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "",
+ "Picture": "Imagem",
+ "Uncheck ingredients to not put them on the shopping list": "",
+ "This is for statistical purposes only": "Apenas para propósito estatístico.",
+ "You have to select a recipe": "Tem de seleccionar uma receita",
+ "Key type": "Tipo de chave",
+ "Share/Integrate calendar (iCal)": "Partilhar/integrar calendário (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Utilize o seguinte URL (publico) para partilhar ou integrar o calendário em formato iCal",
+ "Allow partial units in stock": "Permitir unidades parciais no stock",
+ "Enable tare weight handling": "Activar a manipulação de tara",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "",
+ "Tare weight": "Peso",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "",
+ "You have to select a location": "Precisa de seleccionar uma localização",
+ "You have to select a store": "",
+ "List": "Lista",
+ "Gallery": "Galeria",
+ "The current picture will be deleted when you save the recipe": "A imagem actual será apagada quando salvar a receita",
+ "Show product details": "Mostrar detalhes do produto",
+ "Stock journal for this product": "Diário de stock para este produto",
+ "Show chore details": "Exibir detalhes da tarefa doméstica",
+ "Journal for this chore": "Diário para a tarefa doméstica",
+ "Show battery details": "Mostrar detalhes da bateria",
+ "Journal for this battery": "Diário para esta bateria",
+ "System info": "Informação do sistema",
+ "Changelog": "histórico de modificações",
+ "will be multiplied by a factor of {string1} to get {string2}": "",
+ "The given date is earlier than today, are you sure?": "A data é anterior a hoje, tem a certeza?",
+ "Product count": "Contagem do produto",
+ "Type a new product name or barcode and hit TAB to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "",
+ "Add item": "Adicionar item",
+ "Selected shopping list": "Seleccionar lista de compras",
+ "New shopping list": "Nova lista de compras",
+ "Delete shopping list": "Apagar lista de compras",
+ "Chores settings": "Configurações das tarefas domésticas",
+ "Batteries settings": "Configurações das baterias",
+ "Tasks settings": "Configurações das tarefas",
+ "Create shopping list": "Criar lista de compras",
+ "Are you sure to delete shopping list \"{string0}\"?": "Tem a certeza que quer apagar a lista de compras \"{string0}\"?",
+ "Average shelf life": "Tempo de vida médio na prateleira",
+ "Spoil rate": "Taxa de desperdício",
+ "Show more": "Mostrar mais",
+ "Show less": "Mostrar menos",
+ "The amount must be between {string1} and {string2}": "A quantidade tem de ser entre {string1} e {string2}",
+ "Day of month": "Dia do mês",
+ "Monday": "Segunda-feira",
+ "Tuesday": "Terça-feira",
+ "Wednesday": "Quarta-feira",
+ "Thursday": "Quinta-feira",
+ "Friday": "Sexta-feira",
+ "Saturday": "Sábado",
+ "Sunday": "Domingo",
+ "Configure userfields": "Configurar campos do utilizador",
+ "Userfields": "Campos do utilizador",
+ "Filter by entity": "Filtrar por entidade",
+ "Entity": "Entidade",
+ "Caption": "Legenda",
+ "Type": "Tipo",
+ "Create userfield": "Criar campo do utilizador",
+ "A entity is required": "É necessário uma entidade",
+ "A caption is required": "É necessário uma legenda",
+ "A type is required": "É necessário um tipo",
+ "Show as column in tables": "Mostrar como coluna nas tabelas",
+ "This is required and can only contain letters and numbers": "É necessário e só pode conter letras e números",
+ "Edit userfield": "Editar campo do utilizador",
+ "Plural forms": "Forma plural",
+ "One plural form per line, the current language requires": "Uma forma plural por linha, a língua actual exige.",
+ "Plural count": "Contagem plural",
+ "Plural rule": "Regra plural",
+ "in plural form": "no plural",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Sem stock suficiente, {count} ingredientes faltando | Sem stock suficiente, {count} ingredientes faltando",
+ "The amount cannot be lower than {string1} or equal {string2}": "A quantidade não pode ser menor que {string1} ou igual a {string2}",
+ "Not enough in stock, but already on the shopping list": "Stock insuficiente, mas já na lista de compras",
+ "Not enough in stock": "Não há stock suficiente",
+ "Expiring soon days": "A expirar em breve",
+ "Default location": "Localização padrão",
+ "Default amount for purchase": "Quantidade padrão para comprar",
+ "Default amount for consume": "Quantidade padrão para consumir",
+ "Variable amount": "Quantidade variável",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "",
+ "Track date only": "Monitorizar apenas a data",
+ "When enabled only the day of an execution is tracked, not the time": "",
+ "Consume {string1} of {string2}": "Consumir {string1} de {string2}",
+ "Meal plan": "Plano de refeições",
+ "Add recipe on {string0}": "Adicionar receita em {string0}",
+ "{count} serving | {count} servings": "{count} porções | {count} porções",
+ "Week costs": "Custo por semana",
+ "Configuration": "Configuração",
+ "A predefined list of values, one per line": "Uma lista pré-definida de valores, um por linha",
+ "Chores due soon days": "Tarefas domésticas a expirarem nos próximos dias",
+ "Batteries due to be charged soon days": "Pilhas cujo o prazo para serem carregadas expiram nos próximos dias",
+ "Tasks due soon days": "Tarefas a expirarem nos próximos dias",
+ "Products": "Produtos",
+ "Marked task {string0} as completed on {string0}": "",
+ "Booking has subsequent dependent bookings, undo not possible": "",
+ "per serving": "por porção",
+ "Never": "Nunca",
+ "Today": "Hoje",
+ "Consume {string1} of {string2} as spoiled": "Consumir {string1} de {string2}como estragado",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Nem todos os ingredientes da receita \"{string0}\" estão em stock, nada foi removido",
+ "Undo task \"{string0}\"": "Desfazer a tarefa \"{string0}\"",
+ "Due date rollover": "",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "",
+ "Location Content Sheet": "",
+ "Print": "Imprimir",
+ "all locations": "Todas localizações",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it.": "",
+ "this location": "Esta localização",
+ "Consumend amount": "Quantidade consumida",
+ "Time of printing": "Hora de impressão",
+ "Are you sure to delete equipment \"{string0}\"?": "Tem a certeza que quer apagar o equipamento \"{string0}\"?",
+ "Parent product": "Produto pai",
+ "Not possible because this product is already used as a parent product in another product": "",
+ "Default conversions": "Conversão padrão",
+ "Factor": "Fator",
+ "1 {string0} is the same as...": "",
+ "Create QU conversion": "",
+ "Default for QU": "",
+ "Quantity unit from": "Unidade de medida de",
+ "Quantity unit to": "Unidade de medida para",
+ "This cannot be lower than {string1} and must be a valid number with max. {string2} decimal places": "",
+ "This cannot be equal to {string0}": "Não pode ser igual a {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "",
+ "QU conversions": "",
+ "Product overrides": "",
+ "Override for product": "",
+ "This equals {string1} {string2} in stock": "",
+ "Edit QU conversion": "",
+ "An assignment type is required": "",
+ "Assignment type": "",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Isto significa que a próxima execução desta tarefa está agendada para 1 dia após a sua última execução",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Isto significa que a próxima execução desta tarefa está agendada para 1 dia após a sua última execução, mas apenas para os dias da semana em baixo selecionados",
+ "This means the next execution of this chore is not scheduled": "Isto significa que a próxima execução desta tarefa não está agendada",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Isto significa que a próxima execução desta tarefa está agendada para o dia em baixo selecionado de cada mês",
+ "This means the next execution of this chore will not be assigned to anyone": "Isto significa que a próxima execução desta tarefa não será atribuída a ninguém",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Isto significa que a próxima execução desta tarefa será atribuída a quem a executou menos vezes",
+ "This means the next execution of this chore will be assigned randomly": "Isto significa que a próxima execução desta tarefa será atribuída de modo aleatório",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Isto significa que a próxima execução desta tarefa será atribuída ao seguinte por ordem alfabética",
+ "Assign to": "Atribuí a",
+ "This assignment type requires that at least one is assigned": "",
+ "{count} chore is assigned to me | {count} chores are assigned to me": " | ",
+ "Assigned to me": "Atribuído a mim",
+ "assigned to {string0}": "atribuído a {string0}",
+ "Assignment": "",
+ "Consume product on chore execution": "",
+ "Are you sure to delete user field \"{string0}\"?": "Tem a certeza que pretende eliminar o campo do utilizador \"{string0}\"?",
+ "Userentities": "",
+ "Create userentity": "",
+ "Show in sidebar menu": "",
+ "Edit userentity": "",
+ "Edit {string0}": "Editar {string0}",
+ "Create {string0}": "Criar {string0}",
+ "Are you sure to delete this userobject?": "",
+ "Icon CSS class": "",
+ "For example": "Por exemplo",
+ "Configure fields": "",
+ "Quantity unit plural form testing": "",
+ "Result": "Resultado",
+ "Test plural forms": "",
+ "Scan a barcode": "Ler o código de barras",
+ "Error while initializing the barcode scanning library": "Erro enquanto inicializava a biblioteca para ler o código de barras",
+ "The resulting price of this ingredient will be multiplied by this factor": "",
+ "Price factor": "",
+ "Do you find grocy useful?": "Você acha grocy útil?",
+ "Say thanks": "Diga obrigado",
+ "Search for recipes containing this product": "",
+ "Add to shopping list": "Adicione à lista de compras",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Adicionado {string1} de {string2} à lista de compras \"{string3}\"",
+ "Output": "",
+ "Energy (kcal)": "Energia (kcal)",
+ "Per stock quantity unit": "Unidade de medida por stock",
+ "Barcode scanner testing": "",
+ "Expected barcode": "Código de barras esperado",
+ "Scan field": "Ler campo",
+ "Scanned barcodes": "Código de barras lidos",
+ "Hit": "",
+ "Miss": "",
+ "Display recipe": "Mostrar receita",
+ "Accumulate sub products min. stock amount": "",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "",
+ "Are you sure to remove this conversion?": "Tem a certeza que pretende remover esta conversão?",
+ "Unit price": "Preço de unidade",
+ "Total price": "Preço total",
+ "in {string0} and based on the purchase quantity unit": "",
+ "Unlimited": "Ilimitado",
+ "Clear": "",
+ "Are you sure to remove the included recipe \"{string0}\"?": "",
+ "Period interval": "Periodo de intervalo",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "",
+ "Transfer": "Transferir",
+ "From location": "Da localização",
+ "To location": "Para a localização",
+ "There are no units available at this location": "Não existem unidades disponíveis nesta localização",
+ "Amount: {string1}; Expires on {string2}; Bought on {string3}": "Quantidade: {string1}; Expira em {string2}; Comprado em {string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Transferido {string1} de {string2} do {string3} para {string4}",
+ "Show stock entries": "Mostrar entradas no stock",
+ "Stock entries": "Entradas de stock",
+ "Best before date": "Prazo de validade",
+ "Purchased date": "Data de compra",
+ "Consume all {string0} for this stock entry": "Consumir todos os/as {string0} nesta entrada de stock",
+ "The amount cannot be lower than {string1}": "A quantidade não pode ser menor que {string1}",
+ "Stock entry successfully updated": "Entrada de stock foi actualizada com sucesso",
+ "Edit stock entry": "Editar entrada de stock",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "",
+ "Keep screen on": "Manter o ecrã ligado",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Manter ecrã ligado enquanto é mostrado um \"cartão em ecrã inteiro\"",
+ "A purchased date is required": "É necessário uma data de compra",
+ "When a product is selected, one unit (per serving in purchase quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Produzir o produto",
+ "This booking cannot be undone": "Esta marcação não pode ser revertida",
+ "Booking does not exist or was already undone": "A marcação não existe ou foi já previamente revertida",
+ "Are you sure to delete API key \"{string0}\"?": "Tem a certeza que pretende apagar a chave da API \"{string0}\"?",
+ "Add note": "Adicionar nota",
+ "Add note on {string0}": "Adicionar nota em {string0}",
+ "per day": "por dia",
+ "Compact view": "Vista compacta",
+ "Normal view": "Vista normal",
+ "Only undone items": "Apenas items revertidos",
+ "Add product": "Adicionar produto",
+ "Add product on {string0}": "Adicionar produto em {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "",
+ "Meal plan recipe": "Receita do plano de refeições",
+ "Meal plan note": "Nota do plano de refeições",
+ "Meal plan product": "",
+ "Scan mode": "",
+ "on": "ligado",
+ "off": "desligado",
+ "Scan mode is on but not all required fields could be populated automatically": "",
+ "Is freezer": "",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "",
+ "On moving this product to a freezer location (so when freezing it), the best before date will be replaced by today + this amount of days": "",
+ "Default best before days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the best before date will be replaced by today + this amount of days": "",
+ "Default best before days after thawing": "",
+ "This cannot be the same as the \"From\" location": "",
+ "Thawed": "Descongelado",
+ "Frozen": "Congelado",
+ "Are you sure to delete userentity \"{string0}\"?": "",
+ "Shopping list settings": "Definições da lista de compras",
+ "Show a month-view calendar": "Mostrar a vista mensal do calendário",
+ "Don't automatically switch to the compact view on mobile devices": "",
+ "Edit note on {string0}": "Editar nota em {string0}",
+ "Edit product on {string0}": "Editar produto em {string0}",
+ "Edit recipe on {string0}": "Editar receita em {string0}",
+ "Desired servings": "Porção desejada",
+ "Base: {string0}": "Base: {string0}",
+ "Recipes settings": "Definições de receitas",
+ "Recipe card": "Cartão da receita",
+ "Group ingredients by their product group": "Agrupar ingredientes pelo respectivo grupo de produto",
+ "Unknown store": "",
+ "Store": "",
+ "Transaction successfully undone": "",
+ "Default store": "",
+ "Consume this stock entry": "",
+ "Mark this stock entry as open": "",
+ "Mark this item as done": "",
+ "Edit this item": "",
+ "Delete this item": "",
+ "Show an icon if the product is already on the shopping list": "",
+ "Calories": "",
+ "By default the amount to be added to the shopping list is `needed amount - stock amount - shopping list amount` - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "",
+ "means {string1} per {string2}": "",
+ "Create inverse QU conversion": "",
+ "Create recipe": "",
+ "Save & continue to add ingredients and included recipes": "",
+ "Save & continue": "",
+ "Save & return to recipes": "",
+ "no-assignment": "não-atribuído ",
+ "who-least-did-first": "quem-fez-menos-primeiro",
+ "random": "aleatório",
+ "in-alphabetical-order": "em-ordem-alfabética",
+ "timeago_locale": "pt",
+ "timeago_nan": "NaN anos atrás",
+ "moment_locale": "pt",
+ "datatables_localization": "{\"sEmptyTable\":\"Não há dados disponiveis na tabela\",\"sInfo\":\"Showing _START_ to _END_ of _TOTAL_ entries\",\"sInfoEmpty\":\"A mostrar 0 a 0 de 0 registos\",\"sInfoFiltered\":\"(filtered from _MAX_ total entries)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Show _MENU_ entries\",\"sLoadingRecords\":\"A carregar...\",\"sProcessing\":\"A processar...\",\"sSearch\":\"Pesquisa:\",\"sZeroRecords\":\"Não foram encontrados registos\",\"oPaginate\":{\"sFirst\":\"Primeira\",\"sLast\":\"Última\",\"sNext\":\"Próxima\",\"sPrevious\":\"Anterior\"},\"oAria\":{\"sSortAscending\":\": activar para ordernar coluna em ascendente\",\"sSortDescending\":\": activar para ordernar coluna em descendente\"}}",
+ "summernote_locale": "pt-PT",
+ "fullcalendar_locale": "pt",
+ "bootstrap-select_locale": "pt_PT",
+ "purchase": "Comprar",
+ "transfer_from": "transferir_de",
+ "transfer_to": "transferir_para",
+ "consume": "Consumir",
+ "inventory-correction": "Correcção de Inventário",
+ "product-opened": "Produto aberto",
+ "stock-edit-old": "editar-stock-antigo",
+ "stock-edit-new": "editar-stock-novo",
+ "self-production": "produção-própria",
+ "manually": "Manualmente",
+ "dynamic-regular": "Regular dinâmico",
+ "daily": "Diário",
+ "weekly": "Semanal",
+ "monthly": "Mensal",
+ "yearly": "Anual",
+ "text-single-line": "Texto (linha única)",
+ "text-multi-line": "Texto (múltiplas linhas)",
+ "number-integral": "Número (inteiro)",
+ "number-decimal": "Número (décimal)",
+ "date": "Data (sem horas)",
+ "datetime": "Data e Hora",
+ "checkbox": "Checkbox",
+ "preset-list": "Lista pré-defenida",
+ "preset-checklist": "lista-verificação-pré-defenida",
+ "link": "hiperligação",
+ "link-with-title": "",
+ "file": "",
+ "image": "",
+ "Cookies": "Biscoitos",
+ "Chocolate": "Chocolate",
+ "Pantry": "Despensa",
+ "Candy cupboard": "Armário dos doces",
+ "Tinned food cupboard": "Armário dos enlatados",
+ "Fridge": "Frigorifico",
+ "Piece | Pieces": "Pedaço | Pedaços",
+ "Pack | Packs": "Pacote | Pacotes",
+ "Glass | Glasses": "Copo | Copos",
+ "Tin | Tins": "Lata | Latas",
+ "Can | Cans": "Lata | Latas",
+ "Bunch | Bunches": "Molho | Molhos",
+ "Gummy bears": "Ursinhos de goma",
+ "Crisps": "Batatas fritas",
+ "Eggs": "Ovos",
+ "Noodles": "Noodles",
+ "Pickles": "Picles",
+ "Gulash soup": "Sopa Goulash",
+ "Yogurt": "Iogurte",
+ "Cheese": "Queijo",
+ "Cold cuts": "Cortes frios",
+ "Paprika": "Paprica",
+ "Cucumber": "Pepino",
+ "Radish": "Rabanete",
+ "Tomato": "Tomate",
+ "Changed towels in the bathroom": "Toalhas mudadas na Casa de Banho",
+ "Cleaned the kitchen floor": "Chão da Cozinha limpo",
+ "Warranty ends": "Garantia termina",
+ "TV remote control": "Comando da TV",
+ "Alarm clock": "Relógio de alarme",
+ "Heat remote control": "Comando do aquecimento",
+ "Lawn mowed in the garden": "Relva cortada no jardim",
+ "Some good snacks": "Alguns bons petiscos",
+ "Pizza dough": "Massa para piza",
+ "Sieved tomatoes": "Tomates triturados",
+ "Salami": "Salame",
+ "Toast": "Torrada",
+ "Minced meat": "Carne picada",
+ "Pizza": "Piza",
+ "Spaghetti bolognese": "Esparguete à bolonhesa",
+ "Sandwiches": "Sanduiche",
+ "English": "Inglês",
+ "German": "Alemão",
+ "Italian": "Italiano",
+ "This is the note content of the recipe ingredient": "Este é o conteúdo da nota do ingrediente da receita",
+ "Demo User": "Utilizador de demonstração",
+ "Gram | Grams": "Grama | Gramas",
+ "Flour": "Farinha",
+ "Pancakes": "Panquecas",
+ "Sugar": "Açúcar",
+ "Home": "Casa",
+ "Life": "Vida",
+ "Projects": "Projectos",
+ "Repair the garage door": "Reparar a porta da garagem",
+ "Fork and improve grocy": "Fazer um Fork para melhorar o Grocy",
+ "Find a solution for what to do when I forget the door keys": "Encontrar uma solução para o que fazer quando me esqueço das chaves da porta",
+ "Sweets": "Doces",
+ "Bakery products": "Produtos de pastelaria",
+ "Tinned food": "Comida enlatada",
+ "Butchery products": "Produtos do talho",
+ "Vegetables/Fruits": "Vegetais/Frutas",
+ "Refrigerated products": "Produtos refrigerados",
+ "Coffee machine": "Máquina de café",
+ "Dishwasher": "Máquina de lavar loiça",
+ "Liter": "Litro",
+ "Liters": "Litros",
+ "Bottle": "Garrafa",
+ "Bottles": "Garrafas",
+ "Milk": "Leite",
+ "Chocolate sauce": "Molho de Chocolate",
+ "Milliliters": "Mililitros",
+ "Milliliter": "Mililitro",
+ "Bottom": "Fundo",
+ "Topping": "Cobertura",
+ "French": "Francês",
+ "Turkish": "Turco",
+ "Spanish": "Espanhol",
+ "Russian": "Russo",
+ "The thing which happens on the 5th of every month": "A coisa que acontece ao dia 5 todos os meses",
+ "The thing which happens daily": "A coisa que acontece todos os dias",
+ "The thing which happens on Mondays and Wednesdays": "A coisa que acontece às Segundas e Quartas",
+ "Swedish": "Sueco",
+ "Polish": "Polir",
+ "Milk Chocolate": "Leite com Chocolate",
+ "Dark Chocolate": "Chocolate preto",
+ "Slice | Slices": "Fatias | Fatias",
+ "Example userentity": "Exemplo entidade utilizador",
+ "This is an example user entity...": "Este é um exemplo de uma entidade do utilizador",
+ "Custom field": "Campo personalizado",
+ "Example field value...": "Exemplo de campo com valor...",
+ "Waffle rolls": "Canudinhos",
+ "Danish": "Dinamarquês",
+ "Dutch": "Holandês",
+ "Norwegian": "Norueguês",
+ "Demo": "Demonstração",
+ "Stable version": "Versão estável",
+ "Preview version": "Versão de testes",
+ "current release": "versão actual",
+ "not yet released": "ainda não apresentada",
+ "Portuguese (Brazil)": "Português (Brasil)",
+ "This is a note": "Isto é uma nota",
+ "Freezer": "Frigorífico",
+ "Hungarian": "Húngaro",
+ "Slovak": "Eslovaco",
+ "Czech": "Checo",
+ "Portuguese (Portugal)": "Português (Portugal)",
+ "DemoSupermarket1": "",
+ "DemoSupermarket2": "",
+ "Japanese": "",
+ "Chinese (Taiwan)": "",
+ "Greek": "",
+ "Korean": "",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "{string0} total value": "",
+ "{count} product is overdue | {count} products are overdue": "",
+ "{count} product is expired | {count} products are expired": "",
+ "Value": "",
+ "Next due date": "",
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/ru.json b/locale/ru.json
new file mode 100644
index 00000000..2ca3b760
--- /dev/null
+++ b/locale/ru.json
@@ -0,0 +1,864 @@
+{
+ "Stock overview": "Обзор запасов",
+ "{count} product expires | {count} products expiring": "{count} продукт испортится | {count} продукта испортятся | {count} продуктов испортятся | {count} продуктов испортятся",
+ "within the next day | within the next {count} days": "в течение следующего дня | в течение {count} дней | в течение {count} дней | в течение {count} дней",
+ "{count} product is already expired | {count} products are already expired": "{count} продукт испортился | {count} продукта испортилось | {count} продуктов испортилось | {count} продуктов испортилось",
+ "{count} product is overdue | {count} products are overdue": " | | | ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} продукт меньше мин. заданного кол-ва | {count} продукта меньше мин. заданного кол-ва | {count} продуктов меньше мин. заданного кол-ва | {count} продуктов меньше мин. заданного кол-ва",
+ "Product": "Продукт",
+ "{count} Product | {count} Products": "{count} продукт | {count} продукта | {count} продуктов | {count} продуктов",
+ "Amount": "Количество",
+ "Logout": "Выйти",
+ "Chores overview": "Обзор работ",
+ "Batteries overview": "Обзор батареек",
+ "Purchase": "Купить",
+ "Consume": "Употребить",
+ "Inventory": "Инвентарь",
+ "Shopping list": "Список покупок",
+ "Chore tracking": "Выполнить работу",
+ "Battery tracking": "Отслеживание батареек",
+ "Locations": "Места",
+ "Stores": "Магазины",
+ "Quantity units": "Единицы измерения",
+ "Chores": "Работы",
+ "Batteries": "Батарейки",
+ "Chore": "Работа",
+ "Next estimated tracking": "Следующий период отслеживания",
+ "Last tracked": "Последнее время отслеживания",
+ "Battery": "Батарейка",
+ "Last charged": "Последний раз заряжалась",
+ "Next planned charge cycle": "Следующий запланированный цикл заряда",
+ "Best before": "Срок годности",
+ "OK": "Готово",
+ "Product overview": "Обзор продуктов",
+ "Stock quantity unit": "Единица измерения запаса",
+ "Stock amount": "Количество в запасе",
+ "Last purchased": "Последняя покупка",
+ "Last used": "Последний раз использовалось",
+ "Spoiled": "Испорчено",
+ "Barcode lookup is disabled": "Поиск по штрихкоду отключён",
+ "will be added to the list of barcodes for the selected product on submit": "будет добавлен к списку штрихкодов для выбранного продукта при сохранении",
+ "New amount": "Новое количество",
+ "Note": "Заметка",
+ "Tracked time": "Время выполнения",
+ "Chore overview": "Обзор работы по дому",
+ "Tracked count": "Количество выполнений",
+ "Battery overview": "Обзор батарей",
+ "Charge cycles count": "Количество циклов заряда",
+ "Create shopping list item": "Создать элемент списка покупок",
+ "Edit shopping list item": "Изменить элемент списка покупок",
+ "Save": "Сохранить",
+ "Add": "Добавить",
+ "Name": "Имя",
+ "Location": "Место хранения",
+ "Min. stock amount": "Мин. кол-во в запасе",
+ "Description": "Описание",
+ "Create product": "Создать продукт",
+ "Barcode(s)": "Штрихкод(ы)",
+ "Minimum stock amount": "Минимальное количество в запасе",
+ "Default best before days": "Срок годности по умолчанию в днях",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "Единица измерения в запасе",
+ "Factor purchase to stock quantity unit": "Коэффициент пересчёта единиц измерения при покупке и в запасе",
+ "Create location": "Создать место хранения",
+ "Create store": "Добавить магазин",
+ "Create quantity unit": "Создать единицу измерения",
+ "Period type": "Тип периода",
+ "Period days": "Период в днях",
+ "Create chore": "Создать работу по дому",
+ "Used in": "Используется в",
+ "Create battery": "Создать батарею",
+ "Edit battery": "Изменить батарею",
+ "Edit chore": "Изменить работу по дому",
+ "Edit quantity unit": "Изменить единицу измерения",
+ "Edit product": "Изменить продукт",
+ "Edit location": "Изменить место хранения",
+ "Edit store": "Редактировать магазин",
+ "Record data": "Записать данные",
+ "Manage master data": "Управление основными данными",
+ "This will apply to added products": "Будет применено к добавленным продуктам",
+ "never": "никогда",
+ "Add products that are below defined min. stock amount": "Добавить продукты, которых меньше мин. заданного кол-ва",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Означает, что при покупке 1 {string1} будет пересчитан в {string2} {string3} в запасе",
+ "Login": "Вход",
+ "Username": "Имя пользователя",
+ "Password": "Пароль",
+ "Invalid credentials, please try again": "Неправильные данные для входа, попробуйте снова",
+ "Are you sure to delete battery \"{string0}\"?": "Вы уверены, что нужно удалить батарею \"{string0}\"? ",
+ "Yes": "Да",
+ "No": "Нет",
+ "Are you sure to delete chore \"{string0}\"?": "Вы уверены, что нужно удалить работу по дому \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" не может быть преобразован к существующему продукту. Как вы хотите продолжить?",
+ "Create or assign product": "Создать или назначить продукт",
+ "Cancel": "Отмена",
+ "Add as new product": "Добавить как новый продукт",
+ "Add as barcode to existing product": "Добавить в качестве штрихкода к существующему продукту",
+ "Add as new product and prefill barcode": "Добавить новый продукт, заполнив штрихкод",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Вы уверены, что нужно удалить единицу измерения \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Вы уверены, что хотите удалить продукт {string0}?",
+ "Are you sure to delete location \"{string0}\"?": "Вы уверены, что нужно удалить место хранения \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Вы уверены, что хотите удалить магазин \"{string0}\"?",
+ "Manage API keys": "Управление ключами доступа к API",
+ "REST API & data model documentation": "Документация на REST API и модуль данных",
+ "API keys": "Ключи доступа к API",
+ "Create new API key": "Создать ключ доступа к API",
+ "API key": "Ключ доступа к API",
+ "Expires": "Истекает",
+ "Created": "Создан",
+ "This product is not in stock": "Данного продукта нет в запасе",
+ "This means {string0} will be added to stock": "Означает, что {string0} будет добавлен в запас",
+ "This means {string0} will be removed from stock": "Означает, что {string0} будет убран из запаса",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Это означает, что следующее выполнение этой работы будет назначено через {string0} дней от последнего выполнения",
+ "Removed {string1} of {string2} from stock": "Убрано {string1} из {string2} из запаса",
+ "About grocy": "О grocy",
+ "Close": "Закрыть",
+ "Released on": "Выпуск от",
+ "Added {string1} of {string2} to stock": "Добавлено {string1} из {string2} в запас",
+ "Stock amount of {string1} is now {string2}": "{string1} в запасе в количестве {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Записано выполнение работы по дому {string1} в {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Отмечен цикл заряд батареи {string1} в {string2}",
+ "Consume all {string0} which are currently in stock": "Употребить все {string0}, что находятся в запасе",
+ "All": "Все",
+ "Search": "Поиск",
+ "Not logged in": "Вы не авторизованы",
+ "You have to select a product": "Вам нужно выбрать продукт",
+ "You have to select a chore": "Вам нужно выбрать работу по дому",
+ "You have to select a battery": "Вам нужно выбрать батарею",
+ "A name is required": "Имя необходимо",
+ "A location is required": "Место хранения необходимо",
+ "A quantity unit is required": "Необходима единица измерения",
+ "A period type is required": "Необходим тип периода",
+ "A best before date is required": "Необходим срок годности",
+ "Settings": "Настройки",
+ "This can only be before now": "Данное поле должно быть раньше текущего времени",
+ "Calendar": "Календарь",
+ "Recipes": "Рецепты",
+ "Edit recipe": "Изменить рецепт",
+ "Ingredients list": "Список ингредиентов",
+ "Add recipe ingredient": "Добавить ингредиент рецепта",
+ "Edit recipe ingredient": "Изменить ингредиент рецепта",
+ "Are you sure to delete recipe \"{string0}\"?": "Вы уверены, что нужно удалить рецепт \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Вы уверены, что нужно удалить ингредиент рецепта \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Вы уверены, что нужно очистить список покупок \"{string0}\"? ",
+ "Clear list": "Очистить список",
+ "Requirements fulfilled": "Требования выполнены",
+ "Put missing products on shopping list": "Добавить отсутствующие продукты в список покупок",
+ "Enough in stock": "Достаточно в запасе",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Запасов не достаточно, {count} ингредиент отсутствуют, но уже добавлены в список покупок | Запасов не достаточно, {count} ингредиента отсутствуют, но уже добавлены в список покупок | Запасов не достаточно, {count} ингредиентов отсутствуют, но уже добавлены в список покупок | Запасов не достаточно, {count} ингредиентов отсутствуют, но уже добавлены в список покупок",
+ "Expand to fullscreen": "Раскрыть на весь экран",
+ "Ingredients": "Ингредиенты",
+ "Preparation": "Приготовление",
+ "Recipe": "Рецепт",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Запаса недостаточно, {string1} ингредиентов нет, {string2} уже добавлены в список покупок",
+ "Show notes": "Показать заметки",
+ "Put missing amount on shopping list": "Добавить отсутствующее количество в список покупок",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Вы уверены, что нужно добавить все отсутствующие ингредиенты для рецепта \"{string0}\" в список покупок?",
+ "Added for recipe {string0}": "Добавлен рецепт {string0}",
+ "Manage users": "Управление пользователями",
+ "User": "Пользователь",
+ "Users": "Пользователи",
+ "Are you sure to delete user \"{string0}\"?": "Вы уверены, что нужно удалить пользователя \"{string0}\"?",
+ "Create user": "Создать пользователя",
+ "Edit user": "Изменить пользователя",
+ "First name": "Имя",
+ "Last name": "Фамилия",
+ "A username is required": "Имя пользователя обязательно",
+ "Confirm password": "Подтверждение пароля",
+ "Passwords do not match": "Пароли не совпадают",
+ "Change password": "Изменить пароль",
+ "Done by": "Выполнено ",
+ "Last done by": "Последний раз выполнено",
+ "Unknown": "Неизвестно",
+ "Chores journal": "Журнал выполнения работ по дому",
+ "0 means suggestions for the next charge cycle are disabled": "0 означен, что предложения следующего цикла заряда выключены",
+ "Charge cycle interval (days)": "Цикл работы от 1 заряда (дней)",
+ "Last price": "Последняя цена",
+ "Price history": "История цен",
+ "No price history available": "Нет истории цен для показа",
+ "Price": "Цена",
+ "Unit": "Ед.изм.",
+ "{count} Unit | {count} Units": "{count} Единица Измерения | {count} Единицы Измерения | {count} Единиц Измерения | {count} Единиц Измерения",
+ "{count} chore is due to be done | {count} chores are due to be done": "Подходит срок {count} работы по дому | Подходит срок {count} работ по дому | Подходит срок {count} работ по дому | Подходит срок {count} работ по дому",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "Прошёл срок {count} работы по дому | Прошёл срок {count} работ по дому | Прошёл срок {count} работ по дому | Прошёл срок {count} работ по дому",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "Подходит срок заряда {count} батареи | Подходит срок заряда {count} батарей | Подходит срок заряда {count} батарей | Подходит срок заряда {count} батарей ",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "Вышел срок заряда у {count} батареи | Вышел срок заряда у {count} батарей | Вышел срок заряда у {count} батарей | Вышел срок заряда у {count} батарей",
+ "in singular form": "в единственном числе",
+ "Quantity unit": "Единица измерения",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Все ингредиенты рецепта \"{string0}\" убраны из запаса",
+ "Consume all ingredients needed by this recipe": "Употребить все ингредиенты из этого рецепта",
+ "Click to show technical details": "Нажмите, чтобы посмотреть технические детали",
+ "Error while saving, probably this item already exists": "Ошибка при сохранении, вероятно, данный элемент уже существует",
+ "Error details": "Детали ошибки",
+ "Tasks": "Задачи",
+ "Show done tasks": "Показать завершённые задачи",
+ "Task": "Задача",
+ "Due": "Срок выполнения",
+ "Assigned to": "Назначена",
+ "Mark task \"{string0}\" as completed": "Пометить задачу \"{string0}\" как выполненную",
+ "Uncategorized": "Без категории",
+ "Task categories": "Категории задач",
+ "Create task": "Создать задачу",
+ "A due date is required": "Необходим срок выполнения",
+ "Category": "Категория",
+ "Edit task": "Изменить задачу",
+ "Are you sure to delete task \"{string0}\"?": "Вы уверены, что нужно удалить задачу \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "Подходит срок {count} задачи | Подходит срок {count} задач | Подходит срок {count} задач | Подходит срок {count} задач",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "Вышел срок {count} задачи | Вышел срок {count} задач | Вышел срок {count} задач | Вышел срок {count} задач",
+ "Edit task category": "Изменить категорию задач",
+ "Create task category": "Создать категорию задач",
+ "Product groups": "Группы продуктов",
+ "Ungrouped": "Без группы",
+ "Create product group": "Создать группу продуктов",
+ "Edit product group": "Изменить группу продуктов",
+ "Product group": "Группа продуктов",
+ "Are you sure to delete product group \"{string0}\"?": "Вы уверены, что нужно удалить группу \"{string0}\"?",
+ "Stay logged in permanently": "Оставаться в сети всегда",
+ "When not set, you will get logged out at latest after 30 days": "Если не отмечено, то вы выйдете автоматически через 30 дней",
+ "Status": "",
+ "Below min. stock amount": "Меньше мин. заданного кол-ва",
+ "Expiring soon": "Скоро заканчивается срок",
+ "Already expired": "Срок годности вышел",
+ "Due soon": "Срок выполнения подходит",
+ "Overdue": "Срок выполнен кончился",
+ "View settings": "Настройки показа",
+ "Auto reload on external changes": "Автоматическая перезагрузка при внешних изменениях",
+ "Enable night mode": "Включить ночной режим",
+ "Auto enable in time range": "Автоматически включать на данном отрезке времени",
+ "From": "Начиная с",
+ "in format": "в формате",
+ "To": "Заканчивая на",
+ "Time range goes over midnight": "Временной период пересекает полночь",
+ "Product picture": "Изображение продукта",
+ "No file selected": "Файл не выбран",
+ "Delete": "Удалить",
+ "Select file": "Выбрать файл",
+ "Image of product {string0}": "Изображение продукта {string0}",
+ "Deletion not possible": "",
+ "Equipment": "Техника",
+ "Instruction manual": "Инструкция",
+ "The selected equipment has no instruction manual": "У данной техники нет инструкции",
+ "Notes": "Заметки",
+ "Edit equipment": "Изменить технику",
+ "Create equipment": "Создать технику",
+ "The current file will be deleted on save": "",
+ "No picture available": "Нет доступного изображения",
+ "Presets for new products": "Настройки по умолчанию для новых продуктов",
+ "Included recipes": "Включённые рецепты",
+ "A recipe is required": "Необходим рецепт",
+ "Add included recipe": "Добавить включённый рецепт",
+ "Edit included recipe": "Изменить включённый рецепт",
+ "Group": "Группа",
+ "This will be used as a headline to group ingredients together": "Будет использовано как заголовок для группировки ингредиентов",
+ "Journal": "Журнал",
+ "Stock journal": "Журнал запасов",
+ "Undone on": "Отменено",
+ "Batteries journal": "Журнал батарей",
+ "Undo charge cycle": "Отменить цикл заряда",
+ "Undo chore execution": "Отменить выполнение работы по дому",
+ "Chore execution successfully undone": "Успешно отменено выполнение работы по дому",
+ "Undo": "Отменить",
+ "Booking successfully undone": "Действие успешно отменено",
+ "Charge cycle successfully undone": "Цикл заряда успешно отменён",
+ "Disable stock fulfillment checking for this ingredient": "Отключить проверки наличия в запасе для данного ингредиента",
+ "Add all list items to stock": "Добавить всё в списке в запас",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Добавляется элемент списка покупок {string1} {string2}",
+ "Use a specific stock item": "Использовать конкретный элемент из запаса",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Открыть {string1} {string2} ",
+ "Marked {string1} of {string2} as opened": "{string2} {string1} помечено открытым",
+ "Mark as opened": "Пометить как открытые",
+ "Not opened": "Не открыто",
+ "Opened": "Открыто",
+ "{string0} opened": "{string0} открыто",
+ "Product due": "",
+ "Task due": "Срок выполнения задачи",
+ "Chore due": "Срок выполнения работы по дому",
+ "Battery charge cycle due": "Срок заряда батареи",
+ "Show clock in header": "Показывать часы в заголовке",
+ "Stock settings": "Настройки запаса",
+ "Shopping list to stock workflow": "Способ передачи продуктов из списка покупок в запас",
+ "Skip": "Пропустить",
+ "Servings": "Порции",
+ "Costs": "Цены",
+ "Based on the prices of the last purchase per product": "На основании цен на недавние покупки продуктов",
+ "The ingredients listed here result in this amount of servings": "После приготовления ингредиентов, указанных здесь, получится данное количество порций",
+ "Do not check against the shopping list when adding missing items to it": "Не проверять количество в списке покупок при добавлении в него отсутствующих элементов",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "По умолчанию количество, добавляемое в список покупок вычисляется так: \"необходимое количество - количество в запасе - количество в списке покупок\". Когда включается данная опция, новое количество высчитывается только на основании запаса, а не вычитая количество в списке.",
+ "Picture": "Изображение",
+ "Uncheck ingredients to not put them on the shopping list": "Снимите выделение с элементов, чтобы не добавлять их в список покупок",
+ "This is for statistical purposes only": "Нужно только для статистический целей",
+ "You have to select a recipe": "Вам нужно выбрать рецепт",
+ "Key type": "Тип ключа",
+ "Share/Integrate calendar (iCal)": "Поделиться/Интегрировать календать (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Используйте данную (публичную) ссылку (URL), чтобы поделиться или интегрировать календарь в формате iCal",
+ "Allow partial units in stock": "Разрешить дробные количества в запасе",
+ "Enable tare weight handling": "Включить расчёт с учётом тары",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Это удобно, например, для хранения муки в контейнере - при покупке/потреблении/инветаризации взвесьте весь контейнер, а настоящее количество будет автоматически рассчитано на основе объёма в запасе и веса тары ниже",
+ "Tare weight": "Вес тары",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Включён расчёт с учётом тары - пожалуйста, взвесьте весь контейнер, изменения в количестве будут автоматически рассчитаны",
+ "You have to select a location": "Вам нужно выбрать место хранения",
+ "You have to select a store": "Вам нужно выбрать магазин",
+ "List": "Список",
+ "Gallery": "Галерея",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Журнал для данной батареи",
+ "System info": "Системная информация",
+ "Changelog": "Список изменений",
+ "will be multiplied by a factor of {string1} to get {string2}": "",
+ "The given date is earlier than today, are you sure?": "Введённая дата в прошлом, вы уверены?",
+ "Product count": "Количество продукта",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Это будет использоваться в качестве настройки по умолчанию при добавлении данного продукта как ингредиента в рецепт",
+ "Add item": "Добавить элемент",
+ "Selected shopping list": "Выбранный список покупок",
+ "New shopping list": "Новый список покупок",
+ "Delete shopping list": "Удалить список покупок",
+ "Chores settings": "Настройки работ по дому",
+ "Batteries settings": "Настройки батарей",
+ "Tasks settings": "Настройки задач",
+ "Create shopping list": "Создать список покупок",
+ "Are you sure to delete shopping list \"{string0}\"?": "Вы уверены, что нужно удалить список покупок \"{string0}\"? ",
+ "Average shelf life": "Среднее время жизни на полке",
+ "Spoil rate": "Скорость порчи",
+ "Show more": "Показать больше",
+ "Show less": "Показать меньше",
+ "The amount must be between {string1} and {string2}": "Значение должно быть в диапазоне от {string1} до {string2}",
+ "Day of month": "День месяца",
+ "Monday": "Понедельник",
+ "Tuesday": "Вторник",
+ "Wednesday": "Среда",
+ "Thursday": "Четверг",
+ "Friday": "Пятница",
+ "Saturday": "Суббота",
+ "Sunday": "Воскресенье",
+ "Configure userfields": "Настроить поля пользователя",
+ "Userfields": "Поля пользователя",
+ "Entity": "Сущность",
+ "Caption": "Название",
+ "Type": "Тип",
+ "Create userfield": "Создать поле пользователя",
+ "A entity is required": "Необходима сущность",
+ "A caption is required": "Необходимо название",
+ "A type is required": "Необходим тип",
+ "Show as column in tables": "Показывать как колонку в таблицах",
+ "This is required and can only contain letters and numbers": "Это обязательно и может содержать только латинские буквы и цифры",
+ "Edit userfield": "Изменить поле пользователя",
+ "Plural forms": "Множественные числа",
+ "One plural form per line, the current language requires": "Одно множественное число на строчку, текущему языку нужно ",
+ "Plural count": "Число форм множественного числа",
+ "Plural rule": "Правило формирование множественного числа",
+ "in plural form": "в множественном числе",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Недостаточно в запасе, {count} ингредиент отсутствует | Недостаточно в запасе, {count} ингредиента отсутствуют | Недостаточно в запасе, {count} ингредиентов отсутствуют | Недостаточно в запасе, {count} ингредиентов отсутствуют",
+ "Not enough in stock, but already on the shopping list": "Не достаточно в запасе, но уже добавлено в список покупок",
+ "Not enough in stock": "Не достаточно в запасе",
+ "Expiring soon days": "Дней до окончания срока годности",
+ "Default location": "Место хранения по умолчанию",
+ "Default amount for purchase": "Количество покупки по умолчанию",
+ "Default amount for consume": "Количество потребления по умолчанию",
+ "Variable amount": "Переменное количество",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Если введено, то это количество будет показываться вместо количества, введённого выше, но введённое выше будет использоваться для расчёта запаса продуктов",
+ "Track date only": "Отслеживать только дату",
+ "When enabled only the day of an execution is tracked, not the time": "Когда включено, только день выполнение будет записан, но не время",
+ "Consume {string1} of {string2}": "Употребить {string1} {string2}",
+ "Meal plan": "План питания",
+ "Add recipe on {string0}": "Добавить рецепт в {string0}",
+ "{count} serving | {count} servings": "{count} порция | {count} порции | {count} порций | {count} порций",
+ "Week costs": "Затраты на неделю",
+ "Configuration": "Конфигурация",
+ "A predefined list of values, one per line": "Предопределённый список значений, по одному на строку",
+ "Products": "Продукты",
+ "Marked task {string0} as completed on {string0}": "Пометить задачу \"{string0}\" как выполненную {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "У данного действия есть зависимые действия, отмена невозможна",
+ "per serving": "на порцию",
+ "Never": "Никогда",
+ "Today": "Сегодня",
+ "Consume {string1} of {string2} as spoiled": "Употребить {string1} {string2} как испорченное",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Не все ингредиенты рецепта \"{string0}\" есть в запасе, ничего не изъято",
+ "Undo task": "",
+ "Due date rollover": "Переносить срок выполнения",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Когда данная опция включена, срок выполнения работы по дому никогда не будет проходить - срок будет сдвигаться вперёд каждый день при его окончании",
+ "Location Content Sheet": "Лист содержимого места хранения",
+ "Print": "Печать",
+ "all locations": "все места хранения",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "это место хранения",
+ "Consumed amount": "",
+ "Time of printing": "Время печати",
+ "Are you sure to delete equipment \"{string0}\"?": "Вы уверены, что нужно удалить оборудование \"{string0}\"?",
+ "Parent product": "Родительский продукт",
+ "Not possible because this product is already used as a parent product in another product": "Невозможно, так как этот продукт уже является родительским продуктом у другого продукта",
+ "Default conversions": "Преобразование по умолчанию",
+ "Factor": "Коэффициент",
+ "1 {string0} is the same as...": "1 {string0} - то же, что ...",
+ "Create QU conversion": "Создать преобразования ЕИ",
+ "Default for QU": "Умолчание для ЕИ",
+ "Quantity unit from": "Начальная единица измерения",
+ "Quantity unit to": "Конечная единица измерения",
+ "This cannot be equal to {string0}": "Не может быть равно {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Означает, что 1 {string1} - это то же, что {string2}{string3}",
+ "QU conversions": "Преобразование ЕИ",
+ "Product overrides": "Переопределения продукта",
+ "Override for product": "Переопределить продукт",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Изменить преобразование ЕИ",
+ "An assignment type is required": "Назначение необходимо",
+ "Assignment type": "Типы назначения",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Это означает, что следующее выполнение этой работы будет назначено через день от последнего выполнения ",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Это означает, что следующее выполнение этой работы будет назначено через день от последнего выполнения, но только по дням недели, выбранным ниже",
+ "This means the next execution of this chore is not scheduled": "Это означает, что следующее выполнение этой работы не будет назначено",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Это означает, что следующее выполнение этой работы будет назначено на выбранный ниже день каждого месяца",
+ "This means the next execution of this chore will not be assigned to anyone": "Это означает, что следующее выполнение этой работы не будет назначено никому",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Это означает, что следующее выполнение этой работы будет назначено тому, что выполнял её меньше",
+ "This means the next execution of this chore will be assigned randomly": "Это означает, что следующее выполнение этой работы будет назначено случайно",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Это означает, что следующее исполнение этой работы будет назначено в алфавитном порядке",
+ "Assign to": "Назначить",
+ "This assignment type requires that at least one is assigned": "Для этого типа назначения необходим как минимум один назначенный",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} работа назначена мне | {count} работы назначены мне | {count}работ назначены мне | {count} работ назначены мне",
+ "Assigned to me": "Назначено мне",
+ "assigned to {string0}": "назначено {string0}",
+ "Assignment": "",
+ "Consume product on chore execution": "Употребить продукт по исполнению работы",
+ "Are you sure to delete user field \"{string0}\"?": "Вы уверены, что нужно удалить пользовательское поле \"{string0}\"?",
+ "Userentities": "Пользовательские сущности",
+ "Create userentity": "Создать пользовательскую сущность",
+ "Show in sidebar menu": "Показывать в меню слева",
+ "Edit userentity": "Изменить пользовательскую сущность",
+ "Edit {string0}": "Изменить {string0}",
+ "Create {string0}": "Создать {string0}",
+ "Are you sure to delete this userobject?": "Вы уверены, что нужно удалить эту пользовательский объект?",
+ "Icon CSS class": "CSS класс иконок",
+ "For example": "Например",
+ "Configure fields": "Настроить пользовательские поля",
+ "Quantity unit plural form testing": "Проверка множественных форм",
+ "Result": "Результат",
+ "Test plural forms": "Проба форм множественного числа",
+ "Scan a barcode": "Отсканировать штрихкод",
+ "Error while initializing the barcode scanning library": "Ошибка инициализации библиотеки сканирования штрихкодов",
+ "The resulting price of this ingredient will be multiplied by this factor": "Полная цена этого ингредиента будет умножена на этот коэффициент",
+ "Price factor": "Коэффициент цены",
+ "Do you find grocy useful?": "Вы находите grocy полезным?",
+ "Say thanks": "Сказать спасибо",
+ "Search for recipes containing this product": "Искать рецепты, содержащие данный продукт",
+ "Add to shopping list": "Добавить в список покупок",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Добавлено {string1} из {string2} в список покупок \"{string3}\"",
+ "Output": "Вывод",
+ "Energy (kcal)": "Энергия (ккал)",
+ "Per stock quantity unit": "На единицу измерения в запасе",
+ "Barcode scanner testing": "Проверка сканера штрихкодов",
+ "Expected barcode": "Ожидаемый штрихкод",
+ "Scan field": "Сканировать поле",
+ "Scanned barcodes": "Отсканированные штрихкоды",
+ "Hit": "Правильно",
+ "Miss": "Неправильно",
+ "Display recipe": "Отобразить рецепт",
+ "Accumulate sub products min. stock amount": "Собирать мин. заданные количества подпродуктов",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Если включено, то мин. заданные кол-ва подпродуктов будут соединятся и отслеживаться в этом продукте. Это означает, что подпродукты никогда не будут \"отсутсвующими\", только этот продукт будет",
+ "Are you sure to remove this conversion?": "Вы уверены, что нужно удалить это преобразование?",
+ "Unit price": "Цена за единицу",
+ "Total price": "Общая цена",
+ "in {string0} and based on the purchase quantity unit": "в {string0} исходя из количества купленных единиц",
+ "Unlimited": "Неограниченно",
+ "Clear": "Очистить",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Вы уверены, что хотите удалить включённый рецепт \"{string0}\"?",
+ "Period interval": "Временной интервал",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Это означает, что выполнение этой работы будет назначаться каждые {string0} дней",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Это означает, что выполнение этой работы будет назначаться каждые {string0} недель",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Это означает, что выполнение этой работы будет назначаться каждые {string0} месяцев",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Это означает, что выполнение этой работы будет назначено через год после последнего выполнения",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Это означает, что выполнение этой работы будет назначаться каждые {string0} лет",
+ "Transfer": "Переместить",
+ "From location": "Из места хранения",
+ "To location": "В место хранения",
+ "There are no units available at this location": "Нет объектов доступных в этом месте хранения",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Перемещено {string1} из {string2} из {string3} в {string4}",
+ "Stock entries": "Запасы",
+ "Best before date": "Годен до",
+ "Purchased date": "Дата покупки",
+ "Consume all {string0} for this stock entry": "Употребить все {string0} этого запаса",
+ "The amount cannot be lower than {string1}": "Количество не может быть меньше {string0}",
+ "Stock entry successfully updated": "Данные по запасу успешно обновлены",
+ "Edit stock entry": "Редактировать запас",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Доступ к камере возможен только тогда, когда это поддерживается и разрешено вашим браузером и когда grocy обслуживается через безопасное (https://) соединение.",
+ "Keep screen on": "Держать экран включенным",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Держать экран включенным при отображении \"полноэкранной карточки\"",
+ "A purchased date is required": "Укажите дату покупки",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "",
+ "This booking cannot be undone": "",
+ "Booking does not exist or was already undone": "",
+ "Are you sure to delete API key \"{string0}\"?": "Вы уверены, что хотите удалить ключ API \"{string0}\"?",
+ "Add note": "Добавить заметку",
+ "Add note on {string0}": "",
+ "per day": "в день",
+ "Only undone items": "",
+ "Add product": "Добавить продукт",
+ "Add product on {string0}": "",
+ "Consume all ingredients needed by this weeks recipes or products": "Употребить все ингредиенты, необходимые для рецептов или продуктов этой недели",
+ "Meal plan recipe": "Рецепт плана питания",
+ "Meal plan note": "Заметка плана питания",
+ "Meal plan product": "Продукт плана питания",
+ "Scan mode": "Режим сканирования",
+ "on": "вкл",
+ "off": "выкл",
+ "Scan mode is on but not all required fields could be populated automatically": "Режим сканирования включен, но не все обязательные поля могут быть заполнены автоматически",
+ "Is freezer": "В морозилке",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "При перемещении продуктов в морозильную камеру или из неё, срок годности продукта будет автоматически обновлен в соответствии с настройками этого продукта",
+ "This cannot be the same as the \"From\" location": "Это не может быть тем же местом хранения, что и \"из\"",
+ "Thawed": "Разморожен",
+ "Frozen": "Заморожен",
+ "Are you sure to delete userentity \"{string0}\"?": "Вы уверены, что нужно удалить пользовательскую запись \"{string0}\"?",
+ "Shopping list settings": "Настройки списка покупок",
+ "Show a month-view calendar": "Показать календарь на месяц",
+ "Edit note on {string0}": "",
+ "Edit product on {string0}": "",
+ "Edit recipe on {string0}": "",
+ "Desired servings": "Количество порций",
+ "Base: {string0}": "База: {string0}",
+ "Recipes settings": "Настройки рецептов",
+ "Recipe card": "Карточка рецепта",
+ "Group ingredients by their product group": "Сгруппировать ингредиенты по группам продуктов",
+ "Unknown store": "Неизвестный магазин",
+ "Store": "Магазин",
+ "Transaction successfully undone": "Транзакция успешно отменена",
+ "Default store": "",
+ "Consume this stock entry": "",
+ "Mark this stock entry as open": "",
+ "Mark this item as done": "",
+ "Edit this item": "",
+ "Delete this item": "",
+ "Show an icon if the product is already on the shopping list": "",
+ "Calories": "",
+ "means {string1} per {string2}": "",
+ "Create inverse QU conversion": "",
+ "Create recipe": "",
+ "Save & continue to add ingredients and included recipes": "",
+ "Save & continue": "",
+ "Save & return to recipes": "",
+ "Stock value": "",
+ "Average price": "",
+ "Active": "",
+ "Barcodes": "",
+ "Barcode": "",
+ "Create Barcode": "",
+ "Barcode for product": "",
+ "Edit Barcode": "",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "",
+ "Permissions for user {string0}": "",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "",
+ "You are not allowed to view this page": "",
+ "Page not found": "",
+ "Unauthorized": "",
+ "Error source": "",
+ "Error message": "",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "",
+ "A server error occured while processing your request": "",
+ "If you think this is a bug, please report it": "",
+ "Language": "",
+ "User settings": "",
+ "Default": "",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | | | ",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": " | | | ",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "не назначать",
+ "who-least-did-first": "сначала тот, кто реже выполнял",
+ "random": "случайно",
+ "in-alphabetical-order": "по алфавиту",
+ "timeago_locale": "ru",
+ "timeago_nan": "NaN год",
+ "moment_locale": "ru",
+ "datatables_localization": "{\"processing\": \"Подождите...\",\"search\": \"Поиск:\",\"lengthMenu\": \"Показать _MENU_ записей\",\"info\": \"Записи с _START_ до _END_ из _TOTAL_ записей\",\"infoEmpty\": \"Записи с 0 до 0 из 0 записей\",\"infoFiltered\": \"(отфильтровано из _MAX_ записей)\",\"infoPostFix\": \"\",\"loadingRecords\": \"Загрузка записей...\",\"zeroRecords\": \"Записи отсутствуют.\",\"emptyTable\": \"В таблице отсутствуют данные\",\"paginate\": {\"first\": \"Первая\",\"previous\": \"Предыдущая\",\"next\": \"Следующая\",\"last\": \"Последняя\"},\"aria\": {\"sortAscending\": \": активировать для сортировки столбца по возрастанию\",\"sortDescending\": \": активировать для сортировки столбца по убыванию\"}}",
+ "summernote_locale": "ru-RU",
+ "fullcalendar_locale": "ru",
+ "bootstrap-select_locale": "ru_RU",
+ "purchase": "купить",
+ "consume": "употребить",
+ "inventory-correction": "Исправление инвентаря",
+ "product-opened": "Продукт открыт",
+ "manually": "вручную",
+ "dynamic-regular": "регулярно",
+ "daily": "ежедневно",
+ "weekly": "еженедельно",
+ "monthly": "ежемесячно",
+ "yearly": "ежегодно",
+ "text-single-line": "Текст (однострочный)",
+ "text-multi-line": "Текст (многострочный)",
+ "number-integral": "Число (целочисленное)",
+ "number-decimal": "Число (дробное)",
+ "date": "Дата (без времени)",
+ "datetime": "Дата и время",
+ "checkbox": "Флажок",
+ "preset-list": "предопределённый-список",
+ "preset-checklist": "предопределённый-список-галочек",
+ "link": "ссылка",
+ "link-with-title": "",
+ "file": "",
+ "image": "",
+ "Cookies": "Печенье",
+ "Chocolate": "Шоколад",
+ "Pantry": "Кладовая",
+ "Candy cupboard": "Шкаф для конфет",
+ "Tinned food cupboard": "Шкаф для консервов",
+ "Fridge": "Холодильник",
+ "Piece | Pieces": "Штука | Штуки | Штук | Штук",
+ "Pack | Packs": "Упаковка | Упаковки | Упаковок | Упаковок",
+ "Glass | Glasses": "Стакан | Стакана | Стаканов | Стаканов",
+ "Tin | Tins": "Консервная Банка | Консервных Банки | Консервных Банок | Консервных Банок",
+ "Can | Cans": "Банка | Банки | Банок | Банок",
+ "Bunch | Bunches": "Пучок | Пучка | Пучков | Пучков",
+ "Gummy bears": "Мармеладные мишки",
+ "Crisps": "Чипсы",
+ "Eggs": "Яйца",
+ "Noodles": "Макароны",
+ "Pickles": "Соленья",
+ "Gulash soup": "Суп-гуляш",
+ "Yogurt": "Йогурт",
+ "Cheese": "Сыр",
+ "Cold cuts": "Вырезка",
+ "Paprika": "Паприка",
+ "Cucumber": "Огурец",
+ "Radish": "Редиска",
+ "Tomato": "Помидор",
+ "Changed towels in the bathroom": "Полотенца в ванной поменяны",
+ "Cleaned the kitchen floor": "Пол на кухне чист",
+ "Warranty ends": "Гарантия заканчивается",
+ "TV remote control": "Пульт для телевизора",
+ "Alarm clock": "Часы с будильником",
+ "Heat remote control": "Пульт ДУ для печки",
+ "Lawn mowed in the garden": "Газон в саду пострижен",
+ "Some good snacks": "Вкусные закуски",
+ "Pizza dough": "Тесто для пиццы",
+ "Sieved tomatoes": "Отборные помидоры",
+ "Salami": "Салями",
+ "Toast": "Тост",
+ "Minced meat": "Фарш",
+ "Pizza": "Пицца",
+ "Spaghetti bolognese": "Спагетти болоньезе",
+ "Sandwiches": "Сэндвичи",
+ "English": "Английский",
+ "German": "Немецкий",
+ "Italian": "Итальянский",
+ "This is the note content of the recipe ingredient": "Это тело заметки по игредиенту рецепта",
+ "Demo User": "Пользователь Демо",
+ "Gram | Grams": "Грамм | Грамма | Грамм | Грамм",
+ "Flour": "Мука",
+ "Pancakes": "Блины",
+ "Sugar": "Сахар",
+ "Home": "Дом",
+ "Life": "Жизнь",
+ "Projects": "Проекты",
+ "Repair the garage door": "Починить дверь гаража",
+ "Fork and improve grocy": "Форкнуть и сделать grocy лучше",
+ "Find a solution for what to do when I forget the door keys": "Придумать что делать, когда я забываю ключи от двери",
+ "Sweets": "Сладости",
+ "Bakery products": "Хлебобулочные изделия",
+ "Tinned food": "Консервы",
+ "Butchery products": "Мясные изделия",
+ "Vegetables/Fruits": "Фрукты/овощи",
+ "Refrigerated products": "Замороженные продукты",
+ "Coffee machine": "Кофемашина",
+ "Dishwasher": "Посудомоечная машина",
+ "Liter": "Литр",
+ "Liters": "Литры",
+ "Bottle": "Бутылка",
+ "Bottles": "Бутылки",
+ "Milk": "Молоко",
+ "Chocolate sauce": "Шоколадный соус",
+ "Milliliters": "Миллилитры",
+ "Milliliter": "Миллилитр",
+ "Bottom": "Низ",
+ "Topping": "Топпинг",
+ "French": "Французский",
+ "Turkish": "Турецкий",
+ "Spanish": "Испанский",
+ "Russian": "Русский",
+ "The thing which happens on the 5th of every month": "Что-то, что происходит 5 числа каждого месяца",
+ "The thing which happens daily": "Что-то, что происходит каждый день",
+ "The thing which happens on Mondays and Wednesdays": "Что-то, что происходит по понедельникам и средам",
+ "Swedish": "Шведский",
+ "Polish": "Польский",
+ "Milk Chocolate": "Молочный шоколад",
+ "Dark Chocolate": "Тёмный шоколад",
+ "Slice | Slices": "Срез (Slice) | Среза (Slices) | Срезы (Slices) | Срезы (Slices)",
+ "Example userentity": "Пример пользовательской сущности",
+ "This is an example user entity...": "Это пример пользовательской сущности...",
+ "Custom field": "Пользовательское поле",
+ "Example field value...": "Пример значения поля...",
+ "Waffle rolls": "Сладкие трубочки",
+ "Danish": "Датский",
+ "Dutch": "Голландский",
+ "Norwegian": "Норвежский",
+ "Demo": "Демо",
+ "Stable version": "Стабильная версия",
+ "Preview version": "Версия предпросмотра",
+ "current release": "текущий релиз",
+ "not yet released": "Пока не выпущено",
+ "Portuguese (Brazil)": "Португальский (Бразилия)",
+ "This is a note": "Это заметка",
+ "Freezer": "Морозилка",
+ "Hungarian": "Венгерский",
+ "Slovak": "Словацкий",
+ "Czech": "Чешский",
+ "Portuguese (Portugal)": "Португальский (Португалия)",
+ "DemoSupermarket1": "ДемоСупермаркет1",
+ "DemoSupermarket2": "ДемоСупермаркет2",
+ "Japanese": "Японский",
+ "Chinese (Taiwan)": "Китайский (Тайвань)",
+ "Greek": "",
+ "Korean": "",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/sk_SK.json b/locale/sk_SK.json
new file mode 100644
index 00000000..defe9f5f
--- /dev/null
+++ b/locale/sk_SK.json
@@ -0,0 +1,899 @@
+{
+ "Stock overview": "Prehľad zásob",
+ "{count} product expires | {count} products expiring": "{count} výrobok expiruje | {count} výrobky expirujú | {count} výrobkov expiruje | {count} výrobkov expiruje",
+ "within the next day | within the next {count} days": "počas nasledujúceho dňa | počas nasledujúcich {count} dní | počas nasledujúcich {count} dní | počas nasledujúcich {count} dní",
+ "{count} product is already expired | {count} products are already expired": "{count} výrobok je po záruke | {count} výrobky sú po záruke | {count} výrobkov je po záruke | {count} výrobkov je po záruke",
+ "{count} product is overdue | {count} products are overdue": " | | | ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} výrobok má stav pod definovanou minimálnou zásobou | {count} výrobky majú stav pod definovanou minimálnou zásobou | {count} výrobkov má stav pod definovanou minimálnou zásobou | {count} výrobkov má stav pod definovanou minimálnou zásobou",
+ "Product": "Výrobok",
+ "{count} Product | {count} Products": "{count} výrobok | {count} výrobky | {count} výrobkov | {count} výrobkov",
+ "Amount": "Množstvo",
+ "Logout": "Odhlásiť",
+ "Chores overview": "Prehľad povinností",
+ "Batteries overview": "Prehľad batérií",
+ "Purchase": "Nakúpiť",
+ "Consume": "Spotrebovať",
+ "Inventory": "Zásoba",
+ "Shopping list": "Nákupný zoznam",
+ "Chore tracking": "Záznam povinností",
+ "Battery tracking": "Záznam stavu batérií",
+ "Locations": "Umiestnenia",
+ "Stores": "Obchody",
+ "Quantity units": "Merné jednotky",
+ "Chores": "Povinnosti",
+ "Batteries": "Batérie",
+ "Chore": "Povinnosť",
+ "Next estimated tracking": "Predpokladaný čas vykonania",
+ "Last tracked": "Naposledy vykonané",
+ "Battery": "Batéria",
+ "Last charged": "Naposledy nabité",
+ "Next planned charge cycle": "Ďalšia plánované nabíjanie",
+ "Best before": "Spotrebovať do",
+ "OK": "OK",
+ "Product overview": "Prehľad výrobkov",
+ "Stock quantity unit": "Jednotka množstva zásoby",
+ "Stock amount": "Množstvo zásoby",
+ "Last purchased": "Naposledy nakúpené",
+ "Last used": "Naposledy použité",
+ "Spoiled": "Pokazené",
+ "Barcode lookup is disabled": "Vyhľadávanie podľa čiarového kódu je vypnuté",
+ "will be added to the list of barcodes for the selected product on submit": "pri odoslaní bude pridané do zoznamu čiarových kódov pre daný výrobok",
+ "New amount": "Nové množstvo",
+ "Note": "Poznámka",
+ "Tracked time": "Zaznamenaný čas",
+ "Chore overview": "Prehľad povinností",
+ "Tracked count": "Zaznamenaný počet",
+ "Battery overview": "Prehľad batérií",
+ "Charge cycles count": "Počet nabíjacích cyklov",
+ "Create shopping list item": "Vytvoriť položku v nákupnom zozname",
+ "Edit shopping list item": "Upraviť položku v nákupnom zozname",
+ "Save": "Uložiť",
+ "Add": "Pridať",
+ "Name": "Meno",
+ "Location": "Umiestnenie",
+ "Min. stock amount": "Min. množstvo zásoby",
+ "Description": "Popis",
+ "Create product": "Vytvoriť výrobok",
+ "Barcode(s)": "Čiarový kód(y)",
+ "Minimum stock amount": "Minimálna zásoba",
+ "Default best before days": "Predvolený dátum spotreby",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "Merná jednotka zásoby",
+ "Factor purchase to stock quantity unit": "Faktor množstva jednotiek zásoby pri nákupe jedného kusu výrobku",
+ "Create location": "Vytvoriť umiestnenie",
+ "Create store": "Vytvoriť obchod",
+ "Create quantity unit": "Vytvoriť mernú jednotku",
+ "Period type": "Typ opakovania",
+ "Period days": "Dni opakovania",
+ "Create chore": "Vytvoriť povinnosť",
+ "Used in": "Použité v",
+ "Create battery": "Vytvoriť batériu",
+ "Edit battery": "Upraviť batériu",
+ "Edit chore": "Upraviť povinnosť",
+ "Edit quantity unit": "Upraviť mernú jednotku",
+ "Edit product": "Upraviť výrobok",
+ "Edit location": "Upraviť umiestnenie",
+ "Edit store": "Upraviť obchod",
+ "Record data": "Zaznamenať údaje",
+ "Manage master data": "Spravovať hlavné údaje",
+ "This will apply to added products": "Toto bude použité pri pridávaných výrobkoch",
+ "never": "nikdy",
+ "Add products that are below defined min. stock amount": "Pridať výrobky, ktoré majú stav pod minimálnou zásobou",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Kúpa 1 {string1} bude prevedená na zásobu {string2} {string3}",
+ "Login": "Prihlásiť sa",
+ "Username": "Používateľské meno",
+ "Password": "Heslo",
+ "Invalid credentials, please try again": "Neplatné prihlasovacie údaje, skúste to prosím ešte raz",
+ "Are you sure to delete battery \"{string0}\"?": "Naozaj si prajete odstrániť batériu \"{string0}\"?",
+ "Yes": "Áno",
+ "No": "Nie",
+ "Are you sure to delete chore \"{string0}\"?": "Naozaj si prajete odstrániť povinnosť \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" nebol rozoznaný ako výrobok, ako si želáte pokračovať?",
+ "Create or assign product": "Vytvoriť alebo priradiť výrobok",
+ "Cancel": "Zrušiť",
+ "Add as new product": "Pridať nový výrobok",
+ "Add as barcode to existing product": "Pridať ako čiarový kód k existujúcemu výrobku",
+ "Add as new product and prefill barcode": "Pridať ako nový výrobok a predvyplniť čiarový kód",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Naozaj si prajete odstrániť mernú jednotku \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Naozaj si prajete odstrániť výrobok \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Naozaj si prajete odstrániť umiestnenie \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Naozaj chcete odstrániť obchod \"{string0}\"?",
+ "Manage API keys": "Spravovať API kľúče",
+ "REST API & data model documentation": "REST API & dokumentácia dátového modelu",
+ "API keys": "API kľúče",
+ "Create new API key": "Vytvoriť nový API kľúč",
+ "API key": "API kľúč",
+ "Expires": "Vyprší",
+ "Created": "Vytvorený",
+ "This product is not in stock": "Tento výrobok nie je na sklade",
+ "This means {string0} will be added to stock": "To znamená, že výrobok {string0} bude pridaný do zásoby",
+ "This means {string0} will be removed from stock": "To znamená, že výrobok {string0} bude odobraný zo zásoby",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "To znamená, že ďalšie vykonanie tejto povinnosti je naplánované na {string0} dní po jej poslednom vykonaní",
+ "Removed {string1} of {string2} from stock": "Odobrané {string1} {string2} zo zásoby",
+ "About grocy": "O grocy",
+ "Close": "Zatvoriť",
+ "Released on": "Vydané",
+ "Added {string1} of {string2} to stock": "Pridané {string1} {string2} do zásoby",
+ "Stock amount of {string1} is now {string2}": "Skladová zásoba {string1} je teraz {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Priebeh plnenia povinnosti {string1} {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Priebeh nabíjania batérie {string1} {string2}",
+ "Consume all {string0} which are currently in stock": "Spotrebovať všetky {string0}, ktoré sú v zásobe",
+ "All": "Všetko",
+ "Search": "Hľadať",
+ "Not logged in": "Neprihlásený",
+ "You have to select a product": "Musíte vybrať výrobok",
+ "You have to select a chore": "Musíte vybrať povinnosť",
+ "You have to select a battery": "Musíte vybrať batériu",
+ "A name is required": "Je vyžadované meno",
+ "A location is required": "Je vyžadované umiestnenie",
+ "A quantity unit is required": "Je vyžadovaná merná jednotka",
+ "A period type is required": "Je vyžadovaný typ opakovania",
+ "A best before date is required": "Je vyžadovaný dátum spotreby",
+ "Settings": "Nastavenia",
+ "This can only be before now": "Toto môže byť iba v minulosti",
+ "Calendar": "Kalendár",
+ "Recipes": "Recepty",
+ "Edit recipe": "Upraviť recept",
+ "Ingredients list": "Zoznam ingrediencií",
+ "Add recipe ingredient": "Pridať ingrediencu",
+ "Edit recipe ingredient": "Upraviť ingredienciu",
+ "Are you sure to delete recipe \"{string0}\"?": "Naozaj si prajete odstrániť recept \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Naozaj si prajete odstrániť ingredienciu \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Naozaj si prajete vyprázdniť nákupný zoznam \"{string0}\"?",
+ "Clear list": "Vymazať zoznam",
+ "Requirements fulfilled": "Požiadavky splnené",
+ "Put missing products on shopping list": "Pridať chýbajúce výrobky do nákupného zoznamu",
+ "Enough in stock": "Dostatočná zásoba",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Nedostatočná zásoba, chýba {count} ingrediencia, ktorá už ale je v nákupnom zozname | Nedostatočná zásoba, chýbajú {count} ingrediencie, ktoré už ale sú v nákupnom zozname | Nedostatočná zásoba, chýba {count} ingrediencií, ktoré už ale sú v nákupnom zozname | Nedostatočná zásoba, chýba {count} ingrediencií, ktoré už ale sú v nákupnom zozname",
+ "Expand to fullscreen": "Rozšíriť na celú obrazovku",
+ "Ingredients": "Ingrediencie",
+ "Preparation": "Príprava",
+ "Recipe": "Recept",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Nedostatočná zásoba, z {string1} potrebných sú/je {string2} v nákupnom zozname",
+ "Show notes": "Ukázať poznámky",
+ "Put missing amount on shopping list": "Pridať chýbajúce množstvo do nákupného zoznamu",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Naozaj si prajete pridať všetky chýbajúce ingrediencie z receptu \"{string0}\" do nákupného zoznamu?",
+ "Added for recipe {string0}": "Pridané pre recept {string0}",
+ "Manage users": "Spravovať používateľov",
+ "User": "Používateľ",
+ "Users": "Používatelia",
+ "Are you sure to delete user \"{string0}\"?": "Naozaj si prajete odstrániť používateľa \"{string0}\"?",
+ "Create user": "Vytvoriť používateľa",
+ "Edit user": "Upraviť používateľa",
+ "First name": "Krstné meno",
+ "Last name": "Priezvisko",
+ "A username is required": "Je vyžadované prihlasovacie meno",
+ "Confirm password": "Potvrdiť heslo",
+ "Passwords do not match": "Heslá sa nezhodujú",
+ "Change password": "Zmeniť heslo",
+ "Done by": "Vykonal(a)",
+ "Last done by": "Naposledy vykonal(a)",
+ "Unknown": "Neznámy",
+ "Chores journal": "Denník povinností",
+ "0 means suggestions for the next charge cycle are disabled": "Pre vypnutie návrhu na najbližšie nabíjanie batérie zadajte 0",
+ "Charge cycle interval (days)": "Interval nabíjania batérie (dni)",
+ "Last price": "Posledná cena",
+ "Price history": "História cien",
+ "No price history available": "História cien nie je dostupná",
+ "Price": "Cena",
+ "Unit": "Jednotka",
+ "{count} Unit | {count} Units": "{count} jednotka | {count} jednotky | {count} jednotiek | {count} jednotiek",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} povinnosť má byť splnená | {count} povinnosti majú byť splnené | {count} povinností má byť splnených | {count} povinností má byť splnených",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} povinnosť už mala byť splnená | {count} povinnosti už mali byť splnené | {count} povinností už malo byť splnených | {count} povinností už malo byť splnených",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} batéria by mala byť nabitá | {count} batérie by mali byť nabité | {count} batérií by malo byť nabitých | {count} batérií by malo byť nabitých",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} batéria už mala byť nabitá | {count} batérie už mali byť nabité | {count} batérií už malo byť nabitých | {count} batérií už malo byť nabitých",
+ "in singular form": "v jednotnom čísle",
+ "Quantity unit": "Merná jednotka",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Všetky ingrediencie z receptu \"{string0}\" boli odobraté zo zásoby",
+ "Consume all ingredients needed by this recipe": "Spotrebovať všetky ingredience použité v tomto recepte",
+ "Click to show technical details": "Kliknite pre zobrazenie technických podrobností",
+ "Error while saving, probably this item already exists": "Chyba počas ukladania, táto položka už pravdepodobne existuje",
+ "Error details": "Podrobnosti o chybe",
+ "Tasks": "Úlohy",
+ "Show done tasks": "Zobraziť dokončené úlohy",
+ "Task": "Úloha",
+ "Due": "Termín splnenia",
+ "Assigned to": "Priradené používateľovi",
+ "Mark task \"{string0}\" as completed": "Označiť úlohu \"{string0}\" ako splnenú",
+ "Uncategorized": "Bez kategórie",
+ "Task categories": "Kategórie úloh",
+ "Create task": "Vytvoriť úlohu",
+ "A due date is required": "Termín splnenia je povinný",
+ "Category": "Kategória",
+ "Edit task": "Upraviť úlohu",
+ "Are you sure to delete task \"{string0}\"?": "Naozaj si prajete odstrániť úlohu \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} úloha má byť splnená | {count} úlohy majú byť splnené | {count} úloh má byť splnených | {count} úloh má byť splnených",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} úloha už mala byť splnená | {count} úlohy už mali byť splnené | {count} úloh už malo byť splnených | {count} úloh už malo byť splnených",
+ "Edit task category": "Upraviť kategóriu úlohy",
+ "Create task category": "Vytvoriť kategóriu úloh",
+ "Product groups": "Skupiny výrobkov",
+ "Ungrouped": "Bez skupiny",
+ "Create product group": "Vytvoriť skupinu výrobkov",
+ "Edit product group": "Upraviť skupinu výrobkov",
+ "Product group": "Skupina výrobkov",
+ "Are you sure to delete product group \"{string0}\"?": "Naozaj si prajete odstrániť skupinu výrobkov \"{string0}\"?",
+ "Stay logged in permanently": "Zostať prihlásený",
+ "When not set, you will get logged out at latest after 30 days": "Ak nie je zaškrtnuté, budete odhlásený najneskôr o 30 dní",
+ "Status": "Stav",
+ "Below min. stock amount": "Pod min. množstvom zásoby",
+ "Expiring soon": "Čoskoro vyprší dátum spotreby",
+ "Already expired": "Po záruke",
+ "Due soon": "Blížiaci sa termín splnenia",
+ "Overdue": "Už malo byť splnené",
+ "View settings": "Zobraziť nastavenia",
+ "Auto reload on external changes": "Automaticky obnoviť pri zmene údajov iným používateľom",
+ "Enable night mode": "Povoliť tmavý režim",
+ "Auto enable in time range": "Automaticky povoliť v určený čas",
+ "From": "Od",
+ "in format": "vo formáte",
+ "To": "Do",
+ "Time range goes over midnight": "Časový rozsah presahuje cez polnoc",
+ "Product picture": "Obrázok výrobku",
+ "No file selected": "Nie je vybraný žiadny súbor",
+ "Delete": "Odstrániť",
+ "Select file": "Vybrať súbor",
+ "Image of product {string0}": "Obrázok výrobku {string0}",
+ "Deletion not possible": "",
+ "Equipment": "Vybavenie",
+ "Instruction manual": "Návod na použitie",
+ "The selected equipment has no instruction manual": "Vybrané vybavenie nemá návod na použitie",
+ "Notes": "Poznámky",
+ "Edit equipment": "Upraviť vybavenie",
+ "Create equipment": "Vytvoriť vybavenie",
+ "The current file will be deleted on save": "",
+ "No picture available": "Obrázok nie je k dispozícii",
+ "Presets for new products": "Predvolené hodnoty pre nové výrobky",
+ "Included recipes": "Čiastkové recepty",
+ "A recipe is required": "Je vyžadovaný recept",
+ "Add included recipe": "Pridať čiastkový recept",
+ "Edit included recipe": "Upraviť čiastkový recept",
+ "Group": "Skupina",
+ "This will be used as a headline to group ingredients together": "Toto bude použité ako nadpis pre skupinu ingrediencií",
+ "Journal": "Denník",
+ "Stock journal": "Denník zásob",
+ "Undone on": "Rezervácia zrušená",
+ "Batteries journal": "Denník batérií",
+ "Undo charge cycle": "Zrušiť nabíjanie",
+ "Undo chore execution": "Zrušiť vykonanie povinnosti",
+ "Chore execution successfully undone": "Vykonanie povinnosti zrušené",
+ "Undo": "Zrušiť",
+ "Booking successfully undone": "Rezervácia úspešne zrušená",
+ "Charge cycle successfully undone": "Nabíjanie batérie úspešne zrušené",
+ "Disable stock fulfillment checking for this ingredient": "Vypnúť kontrolu stavu zásob pre túto ingredienciu",
+ "Add all list items to stock": "Pridať všetky položky zoznamu do zásob",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Pridávam položku nákupného zoznamu {string1} {string2}",
+ "Use a specific stock item": "Použiť požadovanú položku zásob",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Označiť {string1} of {string2} ako otvorené",
+ "Marked {string1} of {string2} as opened": "Označené {string1} {string2} ako otvorené",
+ "Mark as opened": "Označiť ako otvorené",
+ "Not opened": "Neotvorené",
+ "Opened": "Otvorené",
+ "{string0} opened": "{string0} otvorený",
+ "Product due": "",
+ "Task due": "Úloha aktívna o",
+ "Chore due": "Povinnosť",
+ "Battery charge cycle due": "Batéria má byť nabitá",
+ "Show clock in header": "Zobraziť hodiny v hlavičke",
+ "Stock settings": "Nastavenia zásob",
+ "Shopping list to stock workflow": "Nákupný zoznam do výberu zásob",
+ "Skip": "Preskočiť",
+ "Servings": "Porcie",
+ "Costs": "Náklady",
+ "Based on the prices of the last purchase per product": "Založené na cenách výrobkov pri ich poslednom nákupe",
+ "The ingredients listed here result in this amount of servings": "Zobrazené ingrediencie zodpovedajú takémuto množstvu porcií",
+ "Do not check against the shopping list when adding missing items to it": "Nekontrolovať nákupný zoznam pri pridávaní chýbajúcich položiek",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Pri pridávaní položiek do nákupného zoznamu sa používa vzorec \"potrebné množstvo - zásoba - množstvo v nákupnom zozname\". Ak je táto voľba zapnutá, množstvo v nákupnom zozname nie je brané do úvahy.",
+ "Picture": "Obrázok",
+ "Uncheck ingredients to not put them on the shopping list": "Odznačte ingrediencie, ktoré nechcete pridať do nákupného zoznamu",
+ "This is for statistical purposes only": "Toto je iba pre účely štatistík",
+ "You have to select a recipe": "Musíte vybrať recept",
+ "Key type": "Typ kľúča",
+ "Share/Integrate calendar (iCal)": "Zdieľať/integrovať kalendár (formát iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Použiť túto (verejnú) URL adresu na zdieľanie alebo integráciu kalendára vo formáte iCal",
+ "Allow partial units in stock": "Povoliť čiastkové jednotky v zásobe",
+ "Enable tare weight handling": "Aktivovať používanie tary",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Toto je užitočné pri výrobkoch vo vlastných nádobách, ktoré sa vážia vrátane nádoby. Ich hmotnosť je automaticky odpočítaná podľa nižšie definovanej tary.",
+ "Tare weight": "Tara",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Je aktívna tara. Prosím, odvážte celý výrobok, vrátane obalu, jeho hmotnosť bude automaticky odrátaná.",
+ "You have to select a location": "Musíte vybrať umiestnenie",
+ "You have to select a store": "Musíte vybrať obchod",
+ "List": "Zoznam",
+ "Gallery": "Galéria",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Denník pre túto batériu",
+ "System info": "Systémové informácie",
+ "Changelog": "Zoznam zmien",
+ "will be multiplied by a factor of {string1} to get {string2}": "",
+ "The given date is earlier than today, are you sure?": "Zadaný dátum je v minulosti, ste si istý?",
+ "Product count": "Množstvo výrobku",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Toto bude použité ako predvolené nastavenie pri pridávaní tohto výrobku ako ingrediencie",
+ "Add item": "Pridať položku",
+ "Selected shopping list": "Vybrať nákupný zoznam",
+ "New shopping list": "Nový nákupný zoznam",
+ "Delete shopping list": "Odstrániť nákupný zoznam",
+ "Chores settings": "Nastavenia povinností",
+ "Batteries settings": "Nastavenie batérií",
+ "Tasks settings": "Nastavenia úloh",
+ "Create shopping list": "Vytvoriť nákupný zoznam",
+ "Are you sure to delete shopping list \"{string0}\"?": "Naozaj si prajete odstrániť nákupný zoznam \"{string0}\"?",
+ "Average shelf life": "Priemerná doba uskladnenia",
+ "Spoil rate": "Rýchlosť kazenia",
+ "Show more": "Zobraziť viac",
+ "Show less": "Zobraziť menej",
+ "The amount must be between {string1} and {string2}": "Množstvo musí byť v rozmedzí od {string1} do {string2}",
+ "Day of month": "Deň v mesiaci",
+ "Monday": "Pondelok",
+ "Tuesday": "Utorok",
+ "Wednesday": "Streda",
+ "Thursday": "Štvrtok",
+ "Friday": "Piatok",
+ "Saturday": "Sobota",
+ "Sunday": "Nedeľa",
+ "Configure userfields": "Nastaviť používateľské polia",
+ "Userfields": "Používateľské polia",
+ "Entity": "Entita",
+ "Caption": "Nadpis",
+ "Type": "Typ",
+ "Create userfield": "Vytvoriť používateľské pole",
+ "A entity is required": "Vyžaduje sa entita",
+ "A caption is required": "Vyžaduje sa popisok",
+ "A type is required": "Vyžaduje sa typ",
+ "Show as column in tables": "Zobraziť ako riadok v tabuľkách",
+ "This is required and can only contain letters and numbers": "Toto pole je povinné a môže obsahovať iba písmená a čísla",
+ "Edit userfield": "Upraviť používateľské pole",
+ "Plural forms": "Formy plurálu",
+ "One plural form per line, the current language requires": "Jedna forma množného čísla na riadok, aktuálny jazyk vyžaduje",
+ "Plural count": "Počet plurálov",
+ "Plural rule": "Pravidlá pre plurál",
+ "in plural form": "v množnom čísle",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Nedostatočná zásoba, chýba {count} ingrediencia | Nedostatočná zásoba, chýbajú {count} ingrediencie | Nedostatočná zásoba, chýba {count} ingrediencií | Nedostatočná zásoba, chýba {count} ingrediencií",
+ "Not enough in stock, but already on the shopping list": "Nedostatočná zásoba, ale už je v nákupnom zozname",
+ "Not enough in stock": "Nedostatočná zásoba",
+ "Expiring soon days": "Dni blížiaceho sa uplynutia dátumu spotreby",
+ "Default location": "Predvolené umiestnenie",
+ "Default amount for purchase": "Predvolené množstvo pre nákup",
+ "Default amount for consume": "Predvolené množstvo pre spotrebu",
+ "Variable amount": "Premenlivé množstvo",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "Ak toto nie je prázdne, použije sa pri zobrazení miesto množstva zadaného vyššie, zatiaľčo uvedené množstvo sa stále použije pri kontrole stavu zásob",
+ "Track date only": "Zaznamenávať iba dátum",
+ "When enabled only the day of an execution is tracked, not the time": "Ak je zapnuté, bude sa zaznamenávať iba dátum vykonanie, bez časového razítka",
+ "Consume {string1} of {string2}": "Spotrebovať {string1} {string2}",
+ "Meal plan": "Jedálniček",
+ "Add recipe on {string0}": "Pridať recept na {string0}",
+ "{count} serving | {count} servings": "{count} porcia | {count} porcie | {count} porcií | {count} porcií",
+ "Week costs": "Týždenné náklady",
+ "Configuration": "Nastavenia",
+ "A predefined list of values, one per line": "Preddefinovaný zoznam hodnôt, jedna na riadok",
+ "Products": "Výrobky",
+ "Marked task {string0} as completed on {string0}": "Úloha {string0} označená ako hotová v {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Na tejto rezervácii závisia ďalšie rezervácie, zrušenie nie je možné",
+ "per serving": "na porciu",
+ "Never": "Nikdy",
+ "Today": "Dnes",
+ "Consume {string1} of {string2} as spoiled": "Spotrebovať {string1} {string2} ako pokazené",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Nie všetky ingredience v recepte \"{string0}\" sú v zásobe, nič nebude odstránené",
+ "Undo task": "",
+ "Due date rollover": "Posunutie termínu",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "Ak je zapnuté, povinnosť nikdy nebude meškať, termín sa pri oneskorení automaticky posunie dopredu",
+ "Location Content Sheet": "Hárok s obsahom umiestnenia",
+ "Print": "Tlač",
+ "all locations": "všetky umiestnenia",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "toto umiestnenie",
+ "Consumed amount": "Spotrebované množstvo",
+ "Time of printing": "Čas tlače",
+ "Are you sure to delete equipment \"{string0}\"?": "Naozaj si prajete odstrániť zariadenie \"{string0}\"?",
+ "Parent product": "Rodičovský výrobok",
+ "Not possible because this product is already used as a parent product in another product": "Toto sa nedá, pretože tento výrobok je už použitý ako rodičovský výrobok pre iný výrobok",
+ "Default conversions": "Predvolené prevody",
+ "Factor": "Faktor",
+ "1 {string0} is the same as...": "1 {string0} je rovnaký ako...",
+ "Create QU conversion": "Vytvoriť jednotku prevodu",
+ "Default for QU": "Predvolená jednotka",
+ "Quantity unit from": "Z množstevných jednotiek",
+ "Quantity unit to": "Na množstevné jednotky",
+ "This cannot be equal to {string0}": "Hodnota sa nemôže rovnať {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "To znamená, že 1 {string1} je to isté ako {string2} %3{string0}",
+ "QU conversions": "Prevod množstevných jednotiek",
+ "Product overrides": "Špeciálne nastavenia výrobku",
+ "Override for product": "Použiť špeciálne nastavenie pre výrobok",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Upraviť konverziu jednotiek",
+ "An assignment type is required": "Vyžaduje sa typ priradenia",
+ "Assignment type": "Typ priradenia",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Toto znamená, že ďalšie vykonávanie tejto povinnosti je naplánované 1 deň po jej poslednom vykonaní",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Toto znamená, že ďalšie vykonávanie tejto povinnosti je naplánované jeden deň po jej poslednom vykonaní, ale iba vo vybraných dňoch v týždni",
+ "This means the next execution of this chore is not scheduled": "Toto znamená, že ďalšie vykonávanie tejto povinnosti nie je naplánované",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Toto znamená, že ďalšie vykonávanie tejto povinnosti je naplánované vo vybraný deň každého mesiaca",
+ "This means the next execution of this chore will not be assigned to anyone": "Toto znamená, že ďalšie vykonávanie tejto povinnosti nebude priradené žiadnej osobe",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Toto znamená, že ďalšie vykonávanie tejto povinnosti bude priradené osobe, ktorá túto povinnosť vykonávala najmenej",
+ "This means the next execution of this chore will be assigned randomly": "Toto znamená, že ďalšie vykonávanie tejto povinnosti bude priradené náhodnej osobe",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Toto znamená, že ďalšie vykonávanie tejto povinnosti bude priradené osobám podľa abecedného poradia",
+ "Assign to": "Priradiť používateľovi",
+ "This assignment type requires that at least one is assigned": "Tejto typ priradenia vyžaduje priradenie aspoň jednej osoby",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} povinnosť je priradená mne | {count} povinnosti sú priradené mne | {count} povinností je priradených mne | {count} povinností je priradených mne",
+ "Assigned to me": "Priradené mne",
+ "assigned to {string0}": "priradené používateľovi {string0}",
+ "Assignment": "Priradenie",
+ "Consume product on chore execution": "Spotrebovať výrobok pri vykonaní povinnosti",
+ "Are you sure to delete user field \"{string0}\"?": "Naozaj si prajete odstrániť pole \"{string0}\" definované používateľom?",
+ "Userentities": "Používateľské entity",
+ "Create userentity": "Vytvoriť používateľskú entitu",
+ "Show in sidebar menu": "Zobraziť v bočnej ponuke",
+ "Edit userentity": "Upraviť používateľskú entitu",
+ "Edit {string0}": "Upraviť {string0}",
+ "Create {string0}": "Vytvoriť {string0}",
+ "Are you sure to delete this userobject?": "Naozaj si prajete odstrániť objekt definovaný používateľom?",
+ "Icon CSS class": "CSS trieda ikony",
+ "For example": "Napríklad",
+ "Configure fields": "Nastavenia polí",
+ "Quantity unit plural form testing": "Testovanie tvarov množných čísiel množstevných jednotiek",
+ "Result": "Výsledok",
+ "Test plural forms": "Otestovať množné čísla",
+ "Scan a barcode": "Naskenovať čiarový kód",
+ "Error while initializing the barcode scanning library": "Chyba pri inicializácii knižnice skenovania čiarových kódov",
+ "The resulting price of this ingredient will be multiplied by this factor": "Konečná cena tejto ingrediencie bude vynásobená týmto faktorom",
+ "Price factor": "Cenový faktor",
+ "Do you find grocy useful?": "Páči sa vám grocy?",
+ "Say thanks": "Poďakovanie",
+ "Search for recipes containing this product": "Vyhľadať recepty obsahujúce tento výrobok",
+ "Add to shopping list": "Pridať do nákupného zoznamu",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "Pridané {string1} {string2} do nákupného zoznamu \"{string3}\"",
+ "Output": "Výstup",
+ "Energy (kcal)": "Energia (kcal)",
+ "Per stock quantity unit": "Na jednotku množstva zásoby",
+ "Barcode scanner testing": "Testovanie skenera čiarových kódov",
+ "Expected barcode": "Očakávaný čiarový kód",
+ "Scan field": "Skenovacie pole",
+ "Scanned barcodes": "Naskenované čiarové kódy",
+ "Hit": "Zásah",
+ "Miss": "Vedľa",
+ "Display recipe": "Zobraziť recept",
+ "Accumulate sub products min. stock amount": "Sčítavať min. skladové množstvá podriadených výrobkov",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Ak je povolené, min. skladové množstvá podvýrobkov budú sčítané do tohto výrobku, to znamená, že podvýrobky nikdy nebudú \"chýbať\", iba tento výrobok",
+ "Are you sure to remove this conversion?": "Naozaj si prajete odstrániť tento prevod?",
+ "Unit price": "Cena za jednotku",
+ "Total price": "Celková cena",
+ "in {string0} and based on the purchase quantity unit": "v {string0} a založené na merných jednotkách nákupu",
+ "Unlimited": "Neobmedzene",
+ "Clear": "Vymazať",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Naozaj si prajete odstrániť čiastkový recept \"{string0}\"?",
+ "Period interval": "Interval opakovania",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Toto znamená, že ďalšie vykonávanie tejto povinnosti by malo byť naplánované každých {string0} dní",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Toto znamená, že ďalšie vykonávanie tejto povinnosti by malo byť naplánované každých {string0} týždňov",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Toto znamená, že ďalšie vykonávanie tejto povinnosti by malo byť naplánované každých {string0} mesiacov",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Toto znamená, že ďalšie vykonávanie tejto povinnosti je naplánované 1 rok po jej poslednom vykonaní",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Toto znamená, že ďalšie vykonávanie tejto povinnosti by malo byť naplánované každých {string0} rokov",
+ "Transfer": "Presun",
+ "From location": "Z umiestnenia",
+ "To location": "Do umiestnenia",
+ "There are no units available at this location": "V tomto umiestnení nie sú dostupné žiadne jednotky",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Presunuté {string1} {string2} z {string3} do {string4}",
+ "Stock entries": "Položky zásoby",
+ "Best before date": "Dátum spotreby",
+ "Purchased date": "Dátum nákupu",
+ "Consume all {string0} for this stock entry": "Spotrebovať všetky {string0} pre túto zásobu",
+ "The amount cannot be lower than {string1}": "Množstvo nemôže byť menšie ako {string1}",
+ "Stock entry successfully updated": "Položka zásoby úspešne aktualizovaná",
+ "Edit stock entry": "Upraviť zásobu",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "",
+ "Keep screen on": "Nevypínať obrazovku",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Nechať obrazovku zapnutú počas zobrazenia \"karty na celú obrazovku\"",
+ "A purchased date is required": "Vyžaduje sa zadanie dátumu kúpy",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Vytvára výrobok",
+ "This booking cannot be undone": "Táto rezervácia sa nedá zrušiť",
+ "Booking does not exist or was already undone": "Rezervácia neexistuje alebo už bola zrušená",
+ "Are you sure to delete API key \"{string0}\"?": "Naozaj si prajete vymazať API kľúč \"{string0}\"?",
+ "Add note": "Pridať poznámku",
+ "Add note on {string0}": "Pridať poznámku na {string0}",
+ "per day": "na deň",
+ "Only undone items": "Iba zrušené položky",
+ "Add product": "Pridať výrobok",
+ "Add product on {string0}": "Pridať výrobok na {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Spotrebovať všetky ingrediencie potrebné pre recepty a výrobky na tento týždeň",
+ "Meal plan recipe": "Recept pre jedálniček",
+ "Meal plan note": "Poznámka pre jedálniček",
+ "Meal plan product": "Výrobok pre jedálniček",
+ "Scan mode": "Režim skenovania",
+ "on": "zap",
+ "off": "vyp",
+ "Scan mode is on but not all required fields could be populated automatically": "Režim skenovania je zapnutý, ale nepodarilo sa automaticky vyplniť všetky polia+",
+ "Is freezer": "Je mraznička",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "Ak je výrobok presunutý z/do mrazničky, dátum spotreby výrobku bude automaticky upravený podľa nastavenia výrobku.",
+ "This cannot be the same as the \"From\" location": "Toto nemôže byť rovnaké ako umiestnenie \"Od\"",
+ "Thawed": "Rozmrazené",
+ "Frozen": "Zmrazené",
+ "Are you sure to delete userentity \"{string0}\"?": "Naozaj si prajete odstrániť používateľskú entitu \"{string0}\"?",
+ "Shopping list settings": "Nastavenia nákupného zoznamu",
+ "Show a month-view calendar": "Zobraziť kalendár s mesiacmi",
+ "Edit note on {string0}": "Upraviť poznámku na {string0}",
+ "Edit product on {string0}": "Upraviť výrobok na {string0}",
+ "Edit recipe on {string0}": "Upraviť recept na {string0}",
+ "Desired servings": "Požadované porcie",
+ "Base: {string0}": "Základ: {string0}",
+ "Recipes settings": "Nastavenia receptov",
+ "Recipe card": "Karta s receptom",
+ "Group ingredients by their product group": "Zoskupiť ingrediencie podľa skupiny výrobkov",
+ "Unknown store": "Neznámy obchod",
+ "Store": "Obchod",
+ "Transaction successfully undone": "Transakcia bola úspešne zrušená",
+ "Default store": "Predvolený obchod",
+ "Consume this stock entry": "Spotrebovať túto položku zásob",
+ "Mark this stock entry as open": "Označiť túto položku zásob ako otvorenú",
+ "Mark this item as done": "Označiť túto položku ako hotovú",
+ "Edit this item": "Upraviť túto položku",
+ "Delete this item": "Odstrániť túto položku",
+ "Show an icon if the product is already on the shopping list": "",
+ "Calories": "Kalórie",
+ "means {string1} per {string2}": "",
+ "Create inverse QU conversion": "",
+ "Create recipe": "Vytvoriť recept",
+ "Save & continue to add ingredients and included recipes": "",
+ "Save & continue": "",
+ "Save & return to recipes": "",
+ "Stock value": "",
+ "Average price": "",
+ "Active": "",
+ "Barcodes": "",
+ "Barcode": "",
+ "Create Barcode": "",
+ "Barcode for product": "",
+ "Edit Barcode": "",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "",
+ "Permissions for user {string0}": "",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "",
+ "You are not allowed to view this page": "",
+ "Page not found": "Stránka nebola nájdená",
+ "Unauthorized": "Nepovolený prístup",
+ "Error source": "Zdroj chyby",
+ "Error message": "Hlásenie o chybe",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "Táto stránka neexistuje",
+ "You will be redirected to the default page in {string0} seconds": "O {string0} sekúnd budete presmerovaný na domovskú stránku",
+ "Server error": "Chyba servera",
+ "A server error occured while processing your request": "",
+ "If you think this is a bug, please report it": "Ak si myslíte, že ide o chybu, nahláste ju prosím",
+ "Language": "",
+ "User settings": "",
+ "Default": "",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | | | ",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": " | | | ",
+ "Expired": "",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "bez priradenia",
+ "who-least-did-first": "prednosť má najmenej vyťažovaná osoba",
+ "random": "náhodne",
+ "in-alphabetical-order": "abecedne",
+ "timeago_locale": "sk",
+ "timeago_nan": "pred NaN rokmi",
+ "moment_locale": "sk",
+ "datatables_localization": "{\"sEmptyTable\":\"Nie sú k dispozícii žiadne dáta\",\"sInfo\":\"Záznamy _START_ až _END_ z celkom _TOTAL_\",\"sInfoEmpty\":\"Záznamy 0 až 0 z celkom 0 \",\"sInfoFiltered\":\"(vyfiltrované spomedzi _MAX_ záznamov)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Zobraz _MENU_ záznamov\",\"sLoadingRecords\":\"Načítavam...\",\"sProcessing\":\"Spracúvam...\",\"sSearch\":\"Hľadať:\",\"sZeroRecords\":\"Nenašli sa žiadne vyhovujúce záznamy\",\"oPaginate\":{\"sFirst\":\"Prvá\",\"sLast\":\"Posledná\",\"sNext\":\"Nasledujúca\",\"sPrevious\":\"Predchádzajúca\"},\"oAria\":{\"sSortAscending\":\": aktivujte na zoradenie stĺpca vzostupne\",\"sSortDescending\":\": aktivujte na zoradenie stĺpca zostupne\"}}",
+ "summernote_locale": "sk-SK",
+ "fullcalendar_locale": "sk",
+ "bootstrap-select_locale": "sk_SK",
+ "purchase": "kúpiť",
+ "transfer_from": "prevod_z",
+ "transfer_to": "prevod_na",
+ "consume": "spotrebovať",
+ "inventory-correction": "inventár-oprava",
+ "product-opened": "výrobok-otvorený",
+ "stock-edit-old": "zásoby-úpravy-starý",
+ "stock-edit-new": "zásoby-úpravy-nový",
+ "self-production": "samoprodukcia",
+ "manually": "ručne",
+ "dynamic-regular": "dynamicky-pravidelne",
+ "daily": "denne",
+ "weekly": "týždenne",
+ "monthly": "mesačne",
+ "yearly": "ročne",
+ "text-single-line": "text-jeden-riadok",
+ "text-multi-line": "text-viac-riadkov",
+ "number-integral": "číslo-celé",
+ "number-decimal": "číslo-desatinné",
+ "date": "dátum",
+ "datetime": "dátum a čas",
+ "checkbox": "zaškrtávacie políčko",
+ "preset-list": "voľby-zoznam",
+ "preset-checklist": "voľby-zaškrtávací-zoznam",
+ "link": "odkaz",
+ "link-with-title": "",
+ "file": "",
+ "image": "",
+ "ADMIN": "ADMIN",
+ "USERS_CREATE": "POUŽÍVATELIA_VYTVORIŤ",
+ "USERS_EDIT": "POUŽÍVATELIA_UPRAVIŤ",
+ "USERS_READ": "POUŽÍVATELIA_ZOBRAZIŤ",
+ "USERS_EDIT_SELF": "POUŽÍVATELIA_UPRAVIŤ_SVOJE_ÚDAJE",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "BATÉRIE_ZRUŠIŤ_NABÍJACÍ_CYKLUS",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "BATÉRIE_SLEDOVAŤ_CYKLUS_NABÍJANIA",
+ "CHORE_TRACK_EXECUTION": "POVINNOSŤ_ZAZNAMENAŤ_PLNENIE",
+ "CHORE_UNDO_EXECUTION": "POVINNOSŤ_ZRUŠENIE_PLNENIA",
+ "MASTER_DATA_EDIT": "ÚPRAVA_HLAVNÝCH_DÁT",
+ "TASKS_UNDO_EXECUTION": "ÚLOHY_ZRUŠENIE_PLNENIA",
+ "TASKS_MARK_COMPLETED": "ÚLOHY_OZNAČIŤ_AKO_SPLNENÉ",
+ "STOCK_EDIT": "ZÁSOBY_ÚPRAVY",
+ "STOCK_TRANSFER": "ZÁSOBY_PRENOS",
+ "STOCK_INVENTORY": "ZÁSOBY_INVENTÁR",
+ "STOCK_CONSUME": "ZÁSOBY_SPOTREBA",
+ "STOCK_OPEN": "ZÁSOBY_OTVORIŤ",
+ "STOCK_PURCHASE": "ZÁSOBY_NÁKUP",
+ "SHOPPINGLIST_ITEMS_ADD": "NÁKUPNÝ_ZOZNAM_PRIDAŤ",
+ "SHOPPINGLIST_ITEMS_DELETE": "NÁKUPNÝ_ZOZNAM_ODSTRÁNIŤ",
+ "USERS": "POUŽÍVATELIA",
+ "STOCK": "ZÁSOBY",
+ "SHOPPINGLIST": "NÁKUPNÝ_ZOZNAM",
+ "CHORES": "POVINNOSTI",
+ "BATTERIES": "BATÉRIE",
+ "TASKS": "ÚLOHY",
+ "RECIPES": "RECEPTY",
+ "EQUIPMENT": "VYBAVENIE",
+ "CALENDAR": "KALENDÁR",
+ "RECIPES_MEALPLAN": "RECEPTY_JEDÁLNIČEK",
+ "Cookies": "Sušienky",
+ "Chocolate": "Čokoláda",
+ "Pantry": "Komora",
+ "Candy cupboard": "Skrinka so sladkosťami",
+ "Tinned food cupboard": "Skrinka s konzervami",
+ "Fridge": "Chladnička",
+ "Piece | Pieces": "Kus | Kusy | Kusov | Kusov",
+ "Pack | Packs": "Balenie | Balenia | Balení | Balení",
+ "Glass | Glasses": "Pohár | Poháre | Pohárov | Pohárov",
+ "Tin | Tins": "Plechovka | Plechovky | Plechoviek | Plechoviek",
+ "Can | Cans": "Konzerva | Konzervy | Konzerv | Konzerv",
+ "Bunch | Bunches": "Strapec | Strapce | Strapcov | Strapcov",
+ "Gummy bears": "Gumoví medvedíci",
+ "Crisps": "Čipsy",
+ "Eggs": "Vajcia",
+ "Noodles": "Rezance",
+ "Pickles": "Čalamáda",
+ "Gulash soup": "Guláš",
+ "Yogurt": "Jogurt",
+ "Cheese": "Syr",
+ "Cold cuts": "Nárezy",
+ "Paprika": "Paprika",
+ "Cucumber": "Uhorka",
+ "Radish": "Reďkovka",
+ "Tomato": "Paradajka",
+ "Changed towels in the bathroom": "Vymenené uteráky v kúpeľni",
+ "Cleaned the kitchen floor": "Umytá dlážka v kuchyni",
+ "Warranty ends": "Záruka končí",
+ "TV remote control": "Diaľkové ovládanie TV",
+ "Alarm clock": "Budík",
+ "Heat remote control": "Diaľkové ovládanie klimatizácie",
+ "Lawn mowed in the garden": "Pokosený trávnik v záhrade",
+ "Some good snacks": "Nejaká dobrá mňamka",
+ "Pizza dough": "Cesto na pizzu",
+ "Sieved tomatoes": "Pretlak",
+ "Salami": "Saláma",
+ "Toast": "Hrianka",
+ "Minced meat": "Mleté mäso",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Boloňské špagety",
+ "Sandwiches": "Sendviče",
+ "English": "Angličtina",
+ "German": "Nemčina",
+ "Italian": "Taliančina",
+ "This is the note content of the recipe ingredient": "Toto je obsah poznámky pre ingredienciu",
+ "Demo User": "Používateľ dema",
+ "Gram | Grams": "Gram | Gramy | Gramov | Gramov",
+ "Flour": "Múka",
+ "Pancakes": "Palacinky",
+ "Sugar": "Cukor",
+ "Home": "Domov",
+ "Life": "Život",
+ "Projects": "Projekty",
+ "Repair the garage door": "Opraviť garážové dvere",
+ "Fork and improve grocy": "Forknúť a vylepšiť grocy",
+ "Find a solution for what to do when I forget the door keys": "Nájsť riešenie čo robiť, keď zabudnem kľúče od domu",
+ "Sweets": "Sladkosti",
+ "Bakery products": "Pekárenské výrobky",
+ "Tinned food": "Jedlo v konzerve",
+ "Butchery products": "Mäsové výrobky",
+ "Vegetables/Fruits": "Zelenina/Ovocie",
+ "Refrigerated products": "Chladené výrobky",
+ "Coffee machine": "Kávovar",
+ "Dishwasher": "Umývačka riadu",
+ "Liter": "Liter",
+ "Liters": "Litre",
+ "Bottle": "Fľaša",
+ "Bottles": "Fľaše",
+ "Milk": "Mlieko",
+ "Chocolate sauce": "Čokoládová poleva",
+ "Milliliters": "Mililitre",
+ "Milliliter": "Mililiter",
+ "Bottom": "Základ",
+ "Topping": "Poleva",
+ "French": "Francúzština",
+ "Turkish": "Turečtina",
+ "Spanish": "Španielčina",
+ "Russian": "Ruština",
+ "The thing which happens on the 5th of every month": "Vec, ktorá sa deje 5. v každom mesiaci",
+ "The thing which happens daily": "Vec, ktorá sa deje každý deň",
+ "The thing which happens on Mondays and Wednesdays": "Vec, ktorá sa deje každý pondelok a stredu",
+ "Swedish": "Švédčina",
+ "Polish": "Poľština",
+ "Milk Chocolate": "Mliečna čokoláda",
+ "Dark Chocolate": "Horká čokoláda",
+ "Slice | Slices": "Krajec | Krajce | Krajcov | Krajcov",
+ "Example userentity": "Príklad používateľskej entity",
+ "This is an example user entity...": "Toto je prázdna používateľská entita...",
+ "Custom field": "Vlastné pole",
+ "Example field value...": "Príklad hodnoty poľa...",
+ "Waffle rolls": "Lievance",
+ "Danish": "Dánčina",
+ "Dutch": "Holandčina",
+ "Norwegian": "Nórčina",
+ "Demo": "Demo",
+ "Stable version": "Stabilná verzia",
+ "Preview version": "Vývojová verzia",
+ "current release": "aktuálne vydanie",
+ "not yet released": "zatiaľ nevydané",
+ "Portuguese (Brazil)": "Portugalčina (brazílska)",
+ "This is a note": "Toto je poznámka",
+ "Freezer": "Mraznička",
+ "Hungarian": "Maďarčina",
+ "Slovak": "Slovenčina",
+ "Czech": "Čeština",
+ "Portuguese (Portugal)": "Portugalčina (Portugalsko)",
+ "DemoSupermarket1": "Billa",
+ "DemoSupermarket2": "Lidl",
+ "Japanese": "Japončina",
+ "Chinese (Taiwan)": "Čínština (Tajvan)",
+ "Greek": "Gréčtina",
+ "Korean": "Kórejčina",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/sv_SE.json b/locale/sv_SE.json
new file mode 100644
index 00000000..b6dfb339
--- /dev/null
+++ b/locale/sv_SE.json
@@ -0,0 +1,899 @@
+{
+ "Stock overview": "Lageröversikt",
+ "{count} product expires | {count} products expiring": "{count} produkt går ut | {count} produkter går ut",
+ "within the next day | within the next {count} days": "inom en dag | inom {count} dagar",
+ "{count} product is already expired | {count} products are already expired": "{count} produkt har redan gått ut | {count} produkter har redan gått ut",
+ "{count} product is overdue | {count} products are overdue": " | ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} produkt är under beställningspunkten | {count} produkter är under den valda gränsen för minsta lagerantal",
+ "Product": "Produkt",
+ "{count} Product | {count} Products": "{count} Produkt | {count} produkter",
+ "Amount": "Mängd",
+ "Logout": "Logga ut",
+ "Chores overview": "Sysslor, översikt",
+ "Batteries overview": "Batterier, översikt",
+ "Purchase": "Inköp",
+ "Consume": "Förbruka",
+ "Inventory": "Lager",
+ "Shopping list": "Inköpslista",
+ "Chore tracking": "Spårning av sysslor",
+ "Battery tracking": "Spårning av batterier",
+ "Locations": "Platser",
+ "Stores": "Affärer",
+ "Quantity units": "Mängdenheter",
+ "Chores": "Sysslor",
+ "Batteries": "Batterier",
+ "Chore": "Syssla",
+ "Next estimated tracking": "Nästa beräknade spårning",
+ "Last tracked": "Senast spårad",
+ "Battery": "Batteri",
+ "Last charged": "Senast laddat",
+ "Next planned charge cycle": "Nästa planerade laddningscykel",
+ "Best before": "Bäst före",
+ "OK": "OK",
+ "Product overview": "Produktöversikt",
+ "Stock quantity unit": "Mängdenhet för lager",
+ "Stock amount": "Lagerantal",
+ "Last purchased": "Senast köpt",
+ "Last used": "Senast använd",
+ "Spoiled": "Utgången",
+ "Barcode lookup is disabled": "Streckkodsuppslagning är inaktiverad",
+ "will be added to the list of barcodes for the selected product on submit": "kommer att läggas till i listan över streckkoder för den valda produkten när du trycker 'skicka'",
+ "New amount": "Nytt antal",
+ "Note": "Anteckning",
+ "Tracked time": "Spårad tid",
+ "Chore overview": "Syssla, översikt",
+ "Tracked count": "Antal spårningar",
+ "Battery overview": "Batteri, översikt",
+ "Charge cycles count": "Antal laddcykler",
+ "Create shopping list item": "Skapa artikel på inköpslista",
+ "Edit shopping list item": "Redigera artikel på inköpslista",
+ "Save": "Spara",
+ "Add": "Lägg till",
+ "Name": "Namn",
+ "Location": "Plats",
+ "Min. stock amount": "Minsta lagerantal",
+ "Description": "Beskrivning",
+ "Create product": "Skapa produkt",
+ "Barcode(s)": "Streckkod(er)",
+ "Minimum stock amount": "Minsta lagersaldo",
+ "Default best before days": "Standardantal bäst-före-dagar",
+ "Default quantity unit purchase": "Standard inköpsmängd",
+ "Quantity unit stock": "Kvantitetsenhet lager",
+ "Factor purchase to stock quantity unit": "Faktorera mängdenhet för inköp mot mängdenhet för lager",
+ "Create location": "Skapa plats",
+ "Create store": "Skapa affär",
+ "Create quantity unit": "Skapa mängdenhet",
+ "Period type": "Periodtyp",
+ "Period days": "Antal dagar i perioden",
+ "Create chore": "Skapa syssla",
+ "Used in": "Använd i",
+ "Create battery": "Skapa batteri",
+ "Edit battery": "Redigera batteri",
+ "Edit chore": "Redigera syssla",
+ "Edit quantity unit": "Redigera mängdenhet",
+ "Edit product": "Redigera produkt",
+ "Edit location": "Redigera plats",
+ "Edit store": "Redigera affär",
+ "Record data": "Spara data",
+ "Manage master data": "Hantera övergripande data",
+ "This will apply to added products": "Detta gäller för tillagda produkter",
+ "never": "aldrig",
+ "Add products that are below defined min. stock amount": "Lägg till produkter som är under det angivna minsta lagerantalet",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "Detta betyder at 1 {string1} köpta kommer att konverteras till {string2} {string3} i lager",
+ "Login": "Logga in",
+ "Username": "Användarnamn",
+ "Password": "Lösenord",
+ "Invalid credentials, please try again": "Ogiltiga uppgifter, var god försök igen",
+ "Are you sure to delete battery \"{string0}\"?": "Vill du radera batteri \"{string0}\"?",
+ "Yes": "Ja",
+ "No": "Nej",
+ "Are you sure to delete chore \"{string0}\"?": "Är du säker på att radera sysslan \"{string0}\"?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" kunde inte hittas som produkt, hur vill du fortsätta?",
+ "Create or assign product": "Skapa eller tilldela produkt",
+ "Cancel": "Avbryt",
+ "Add as new product": "Lägg till som ny produkt",
+ "Add as barcode to existing product": "Lägg till som streckkod till befintlig produkt",
+ "Add as new product and prefill barcode": "Lägg till som ny produkt och fyll i streckkoden",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Är du säker på att radera mängdenheten \"{string0}\"?",
+ "Are you sure to delete product \"{string0}\"?": "Är du säker på att du vill radera produkten \"{string0}\"?",
+ "Are you sure to delete location \"{string0}\"?": "Är du säker på att du vill radera platsen \"{string0}\"?",
+ "Are you sure to delete store \"{string0}\"?": "Vill du verkligen radera affär \"{string0}\"?",
+ "Manage API keys": "Hantera API-nycklar",
+ "REST API & data model documentation": "REST API och dokumentation för datamodell",
+ "API keys": "API-nycklar",
+ "Create new API key": "Skapa ny API-nyckel",
+ "API key": "API-nyckel",
+ "Expires": "Löper ut",
+ "Created": "Skapad",
+ "This product is not in stock": "Denna produkt finns inte i lager",
+ "This means {string0} will be added to stock": "Detta betyder att {string0} kommer att läggas till i lager",
+ "This means {string0} will be removed from stock": "Detta betyder att {string0} kommer att tas bort från lager",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "Det innebär att nästa utförande av denna syssla schemaläggs 1{string0} dagar efter att den senast utförts",
+ "Removed {string1} of {string2} from stock": "Tog bort {string1} {string2} från lagret",
+ "About grocy": "Om grocy",
+ "Close": "Stäng",
+ "Released on": "Utgiven",
+ "Added {string1} of {string2} to stock": "Lade till {string1} {string2} till lagret",
+ "Stock amount of {string1} is now {string2}": "Mängden {string1} i lager är nu {string2}",
+ "Tracked execution of chore {string1} on {string2}": "Spårat utförandet av syssla {string1} den {string2}",
+ "Tracked charge cycle of battery {string1} on {string2}": "Spårade laddningscykeln för batteri {string1} den {string2}",
+ "Consume all {string0} which are currently in stock": "Förbruka alla {string0} som för närvarande finns i lager",
+ "All": "Alla",
+ "Search": "Sök",
+ "Not logged in": "Inte inloggad",
+ "You have to select a product": "Du måste välja en produkt",
+ "You have to select a chore": "Du måste välja en syssla",
+ "You have to select a battery": "Du måste välja ett batteri",
+ "A name is required": "Ett namn krävs",
+ "A location is required": "En plats krävs",
+ "A quantity unit is required": "En mängdenhet krävs",
+ "A period type is required": "En periodtyp krävs",
+ "A best before date is required": "Ett bäst-före-datum krävs",
+ "Settings": "inställningar",
+ "This can only be before now": "Detta kan bara vara en tidpunkt tidigare än just nu",
+ "Calendar": "Kalender",
+ "Recipes": "Recept",
+ "Edit recipe": "Redigera recept",
+ "Ingredients list": "Ingredienslista",
+ "Add recipe ingredient": "Lägg till receptingrediens",
+ "Edit recipe ingredient": "Redigera receptingrediens",
+ "Are you sure to delete recipe \"{string0}\"?": "Är du säker på att du vill radera receptet \"{string0}\"?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Är du säker på att du vill radera receptingrediensen \"{string0}\"?",
+ "Are you sure to empty shopping list \"{string0}\"?": "Är du säker på att du vill tömma inköpslistan \"{string0}\"?",
+ "Clear list": "Töm lista",
+ "Requirements fulfilled": "Krav uppfyllda",
+ "Put missing products on shopping list": "Lägg saknade produkter i inköpslista",
+ "Enough in stock": "Tillräckligt i lager",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "Inte tillräckligt mycket i lager, {count} ingrediens saknas men finns redan på inköpslistan | Inte tillräckligt mycket i lager, {count} ingredienser saknas men finns redan i inköpslistan",
+ "Expand to fullscreen": "Expandera till fullskärm",
+ "Ingredients": "Ingredienser",
+ "Preparation": "Förberedelse",
+ "Recipe": "Recept",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "Inte tillräckligt mycket i lager, {string1} saknas, {string2} finns redan på inköpslistan",
+ "Show notes": "Visa anteckningar",
+ "Put missing amount on shopping list": "Lägg till saknat antal i inköpslistan",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Vill du lägga alla saknade ingredienser för receptet \"{string0}\" på inköpslistan?",
+ "Added for recipe {string0}": "Tillagd för recept {string0}",
+ "Manage users": "Hantera användare",
+ "User": "Användare",
+ "Users": "Användare",
+ "Are you sure to delete user \"{string0}\"?": "Vill du radera användaren \"{string0}\"?",
+ "Create user": "Skapa användare",
+ "Edit user": "Redigera användare",
+ "First name": "Förnamn",
+ "Last name": "Efternamn",
+ "A username is required": "Ett användarnamn krävs",
+ "Confirm password": "Bekräfta lösenord",
+ "Passwords do not match": "Lösenorden matchar inte",
+ "Change password": "Ändra lösenord",
+ "Done by": "Gjord av",
+ "Last done by": "Senast gjord av",
+ "Unknown": "Okänd",
+ "Chores journal": "Sysslologg",
+ "0 means suggestions for the next charge cycle are disabled": "0 betyder att förslag till nästa laddningscykel är inaktiverade",
+ "Charge cycle interval (days)": "Laddningscykelintervall (dagar)",
+ "Last price": "Sista priset",
+ "Price history": "Prishistorik",
+ "No price history available": "Ingen prishistorik tillgänglig",
+ "Price": "Pris",
+ "Unit": "Enhet",
+ "{count} Unit | {count} Units": "{count} Enhet | {count} Enheter",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} syssla att utföra | {count} sysslor att utföra",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} syssla är försenad | {count} sysslor är försenade",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} batteri behöver laddas | {count}batterier behöver laddas",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} batteri borde redan ha laddats | {count} batterier borde redan ha laddats",
+ "in singular form": "i singular form",
+ "Quantity unit": "Mängdenhet",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Ta bort alla ingredienser i receptet \"{string0}\" från lager",
+ "Consume all ingredients needed by this recipe": "Konsumera alla ingredienser som behövs för detta recept",
+ "Click to show technical details": "Klicka för att visa tekniska detaljer",
+ "Error while saving, probably this item already exists": "Ett fel uppstod vid lagring, förmodligen finns det här objektet",
+ "Error details": "Detaljer om felet",
+ "Tasks": "Uppgifter",
+ "Show done tasks": "Visa utförda uppgifter",
+ "Task": "Uppgift",
+ "Due": "Förfaller",
+ "Assigned to": "Tilldelats",
+ "Mark task \"{string0}\" as completed": "Markera uppgiften \"{string0}\" som slutförd",
+ "Uncategorized": "Okategoriserad",
+ "Task categories": "Uppgiftskategorier",
+ "Create task": "Skapa uppgift",
+ "A due date is required": "Förfallodatum krävs",
+ "Category": "Kategori",
+ "Edit task": "Redigera uppgiften",
+ "Are you sure to delete task \"{string0}\"?": "Vill du radera uppgift \"{string0}\"?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} uppgift skall utföras | {count} uppgifter att utföra",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} uppgift är försenad | {count} uppgifter är försenade",
+ "Edit task category": "Redigera uppgiftskategori",
+ "Create task category": "Skapa uppgiftskategori",
+ "Product groups": "Produktgrupper",
+ "Ungrouped": "Ogrupperade",
+ "Create product group": "Skapa produktgrupp",
+ "Edit product group": "Redigera produktgrupp",
+ "Product group": "Produktgrupp",
+ "Are you sure to delete product group \"{string0}\"?": "Vill du verkligen radera produktgrupp \"{string0}\"?",
+ "Stay logged in permanently": "Håll dig inloggad permanent",
+ "When not set, you will get logged out at latest after 30 days": "Om inte markerad så kommer du att bli utloggad efter högst 30 dagar",
+ "Status": "Status",
+ "Below min. stock amount": "Under min. lagersaldo",
+ "Expiring soon": "Förfaller snart",
+ "Already expired": "Redan utgått",
+ "Due soon": "Förfaller snart",
+ "Overdue": "Försenad",
+ "View settings": "Visa inställningar",
+ "Auto reload on external changes": "Hämta om automatiskt vid externa ändringar",
+ "Enable night mode": "Aktivera nattläge",
+ "Auto enable in time range": "Automatisk aktivering i tidsintervall",
+ "From": "Från",
+ "in format": "i format",
+ "To": "Till",
+ "Time range goes over midnight": "Tidsintervallet går över midnatt",
+ "Product picture": "Produktbild",
+ "No file selected": "Ingen fil vald",
+ "Delete": "Radera",
+ "Select file": "Välj fil",
+ "Image of product {string0}": "Bild av produkt {string0}",
+ "Deletion not possible": "",
+ "Equipment": "Utrustning",
+ "Instruction manual": "Instruktionsmanual",
+ "The selected equipment has no instruction manual": "Den valda utrustningen har ingen bruksanvisning",
+ "Notes": "Anteckningar",
+ "Edit equipment": "Redigera utrustning",
+ "Create equipment": "Skapa utrustning",
+ "The current file will be deleted on save": "",
+ "No picture available": "Ingen bild tillgänglig",
+ "Presets for new products": "Förinställningar för nya produkter",
+ "Included recipes": "Inkluderade recept",
+ "A recipe is required": "Ett recept krävs",
+ "Add included recipe": "Lägg till inkluderat recept",
+ "Edit included recipe": "Redigera inkluderat recept",
+ "Group": "Grupp",
+ "This will be used as a headline to group ingredients together": "Detta kommer att användas som en rubrik för att gruppera ingredienser tillsammans",
+ "Journal": "Logg",
+ "Stock journal": "Lagerlogg",
+ "Undone on": "Ogjord den",
+ "Batteries journal": "Batterilogg",
+ "Undo charge cycle": "Ångra laddningscykel",
+ "Undo chore execution": "Ångra utförande av syssla",
+ "Chore execution successfully undone": "Sysslan är borttagen",
+ "Undo": "Ångra",
+ "Booking successfully undone": "Bokningen borttagen",
+ "Charge cycle successfully undone": "Laddningscykeln är framgångsrikt borttagen",
+ "Disable stock fulfillment checking for this ingredient": "Inaktivera kontroll av lageruppfyllelse för denna ingrediens",
+ "Add all list items to stock": "Lägg till alla listobjekt på lager",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "Lägger till {string1} av {string2} på inköpslistan",
+ "Use a specific stock item": "Använd ett specifikt lagerobjekt",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "Markera {string1} av {string2} som öppna",
+ "Marked {string1} of {string2} as opened": "Markerat {string1} av {string2} som öppna",
+ "Mark as opened": "Markera som öppnat",
+ "Not opened": "Ej öppnad",
+ "Opened": "Öppnad",
+ "{string0} opened": "{string0} öppnade",
+ "Product due": "",
+ "Task due": "Uppgift förfallen",
+ "Chore due": "Syssla förfallen",
+ "Battery charge cycle due": "Batteriladdningscykel förfaller",
+ "Show clock in header": "Visa klockan i sidhuvudet",
+ "Stock settings": "Lagerinställningar",
+ "Shopping list to stock workflow": "Arbetsflöde för inköpslista till lager",
+ "Skip": "Hoppa över",
+ "Servings": "Portioner",
+ "Costs": "Kostar",
+ "Based on the prices of the last purchase per product": "Baserat på priserna för det senaste köpet per produkt",
+ "The ingredients listed here result in this amount of servings": "Ingredienserna som anges här resulterar i denna mängd portioner",
+ "Do not check against the shopping list when adding missing items to it": "Kontrollera inte inköpslistan när du lägger till saknade objekt i den",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Som standard är mängden som ska läggas till i inköpslistan \"nödvändig mängd - lagerbelopp - mängd på inköpslista\" - när det här är aktiverat kontrolleras det endast mot lagerbeloppet, inte mot det som redan finns på inköpslistan",
+ "Picture": "Bild",
+ "Uncheck ingredients to not put them on the shopping list": "Avmarkera ingredienser för att inte lägga dem på inköpslistan",
+ "This is for statistical purposes only": "Detta är endast för statistiska ändamål",
+ "You have to select a recipe": "Du måste välja ett recept",
+ "Key type": "Nyckeltyp",
+ "Share/Integrate calendar (iCal)": "Dela/integrera kalender (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Använd följande (offentliga) URL för att dela eller integrera kalendern i iCal-format",
+ "Allow partial units in stock": "Tillåt delar av enhet på lager",
+ "Enable tare weight handling": "Aktivera hantering av förpackningsvikt",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Detta är användbart t.ex. för mjöl i burkar - vid köp/konsumtion/inventering väger du alltid hela burken, den mängd som ska läggas till beräknas sedan automatiskt baserat på vad som finns i lager och förpackningsvikten som anges nedan",
+ "Tare weight": "Förpackningsvikt",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Förpackningsvikt aktiverad - vänligen väg hela behållaren. Mängden som som ska sparas beräknas automatiskt",
+ "You have to select a location": "Du måste välja en plats",
+ "You have to select a store": "Du måste välja en affär",
+ "List": "Lista",
+ "Gallery": "Galleri",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "Logg för detta batteri",
+ "System info": "Systeminformation",
+ "Changelog": "Ändringslogg",
+ "will be multiplied by a factor of {string1} to get {string2}": "kommer att multipliceras med en faktor {string1} för att få {string2}",
+ "The given date is earlier than today, are you sure?": "Det angivna datumet är tidigare än idag, är du säker?",
+ "Product count": "Produktantal",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Detta kommer att användas som standardinställning när du lägger till denna produkt som receptkomponent",
+ "Add item": "Lägg till vara",
+ "Selected shopping list": "Vald inköpslista",
+ "New shopping list": "Ny inköplista",
+ "Delete shopping list": "Ta bort inköpslista",
+ "Chores settings": "Sysslor, inställningar",
+ "Batteries settings": "Batterier, inställningar",
+ "Tasks settings": "Uppgifter, inställningar",
+ "Create shopping list": "Skapa inköpslista",
+ "Are you sure to delete shopping list \"{string0}\"?": "Vill du radera inköpslista \"{string0}\"?",
+ "Average shelf life": "Genomsnittlig hållbarhet",
+ "Spoil rate": "Skämd takt",
+ "Show more": "Visa mer",
+ "Show less": "Visa mindre",
+ "The amount must be between {string1} and {string2}": "Beloppet måste vara mellan {string1} och {string2}",
+ "Day of month": "Dag i månad",
+ "Monday": "Måndag",
+ "Tuesday": "Tisdag",
+ "Wednesday": "Onsdag",
+ "Thursday": "Torsdag",
+ "Friday": "Fredag",
+ "Saturday": "Lördag",
+ "Sunday": "Söndag",
+ "Configure userfields": "Konfigurera användarfält",
+ "Userfields": "Användarfält",
+ "Entity": "Entitet",
+ "Caption": "Rubrik",
+ "Type": "Typ",
+ "Create userfield": "Skapa användarfält",
+ "A entity is required": "En entitet krävs",
+ "A caption is required": "En rubrik krävs",
+ "A type is required": "En typ krävs",
+ "Show as column in tables": "Visa som kolumn i tabeller",
+ "This is required and can only contain letters and numbers": "Detta är obligatoriskt och kan bara innehålla bokstäver och siffror",
+ "Edit userfield": "Redigera användarfält",
+ "Plural forms": "Pluralformer",
+ "One plural form per line, the current language requires": "En pluralform per rad som aktuellt språk behöver",
+ "Plural count": "Flertal",
+ "Plural rule": "Pluralregel",
+ "in plural form": "i plural form",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "Inte tillräckligt i lager, {count} ingrediens saknas | Inte tillräckligt i lager, {count} ingredienser saknas",
+ "Not enough in stock, but already on the shopping list": "Inte tillräckligt i lager, men finns redan på inköpslistan",
+ "Not enough in stock": "Inte tillräckligt i lager",
+ "Expiring soon days": "Utgår snart dagar",
+ "Default location": "Standardplats",
+ "Default amount for purchase": "Standardmängd för inköp",
+ "Default amount for consume": "Standardmängd för konsumtion",
+ "Variable amount": "Variabel mängd",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "När detta inte är tomt kommer det att visas istället för det angivna beloppet medan beloppet där fortfarande kommer att användas för att kontrollera lager",
+ "Track date only": "Spåra endast datum",
+ "When enabled only the day of an execution is tracked, not the time": "När det är aktiverat spåras bara dagen för en körning, inte tiden",
+ "Consume {string1} of {string2}": "Konsumera {string1} av {string2}",
+ "Meal plan": "Måltidsplan",
+ "Add recipe on {string0}": "Lägg till recept i {string0}",
+ "{count} serving | {count} servings": "{count} portion | {count} portioner",
+ "Week costs": "Veckokostnader",
+ "Configuration": "Konfiguration",
+ "A predefined list of values, one per line": "En fördefinierad lista med värden, en per rad",
+ "Products": "Produkter",
+ "Marked task {string0} as completed on {string0}": "Markerade uppgift {string0} som avslutad den {string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "Bokning har efterföljande beroende bokningar, går inte att ångra",
+ "per serving": "per portion",
+ "Never": "Aldrig",
+ "Today": "Idag",
+ "Consume {string1} of {string2} as spoiled": "Konsumera{string1} av {string2} som förstört ",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "Inte alla ingredienser i recept \"{string0}\" finns i lager, inget togs bort",
+ "Undo task": "",
+ "Due date rollover": "Förfallodatumövergång",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "När detta är aktiverat kan uppdraget aldrig bli försenat, förfallodatumet flyttas framåt varje dag när det förfaller",
+ "Location Content Sheet": "Platsinnehållsblad",
+ "Print": "Skriv ut",
+ "all locations": "Alla positioner",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "Denna position",
+ "Consumed amount": "Förbrukat antal",
+ "Time of printing": "Tid för utskrift",
+ "Are you sure to delete equipment \"{string0}\"?": "Vill du verkligen radera utrustningen \"{string0}\"?",
+ "Parent product": "Överordnad produkt",
+ "Not possible because this product is already used as a parent product in another product": "Inte möjligt då denna produkt redan används som överordnad produkt för en annan produkt",
+ "Default conversions": "Standardkonverteringar",
+ "Factor": "Faktor",
+ "1 {string0} is the same as...": "1 {string0} är detsamma som...",
+ "Create QU conversion": "Skapa konvertering för mängdenhet",
+ "Default for QU": "Standard för mängdenhet",
+ "Quantity unit from": "Från mängdenhet",
+ "Quantity unit to": "Till mängdenhet",
+ "This cannot be equal to {string0}": "Detta kan inte vara lika med {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "Det innebär att 1 {string1} är detsamma som {string2} {string3}",
+ "QU conversions": "Konverteringar mellan mängdenheter",
+ "Product overrides": "Produkten har företräde framför",
+ "Override for product": "Företräde för produkt",
+ "This equals {string1} {string2}": "",
+ "Edit QU conversion": "Redigera konvertering för mängdenhet",
+ "An assignment type is required": "En uppgiftstyp behövs",
+ "Assignment type": "Uppgiftstyp",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "Det innebär att nästa utförande av denna syssla schemaläggs 1 dag efter att den senast utförts",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "Det innebär att nästa utförande av denna syssla schemaläggs 1 dag efter att den senast utförts, men endast på de nedan valda veckodagarna",
+ "This means the next execution of this chore is not scheduled": "Det innebär att nästa utförande av denna syssla inte schemaläggs",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "Det innebär att nästa utförande av denna syssla schemaläggs på den nedan valda dagen i varje månad",
+ "This means the next execution of this chore will not be assigned to anyone": "Det innebär att nästa utförande av denna syssla inte tilldelas någon",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "Det innebär att nästa utförande av denna syssla tilldelas den som utfört den minst",
+ "This means the next execution of this chore will be assigned randomly": "Det innebär att nästa utförande av denna syssla tilldelas slumpmässigt",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "Det innebär att nästa utförande av denna syssla tilldelas nästa person i bokstavsordning",
+ "Assign to": "Tilldela",
+ "This assignment type requires that at least one is assigned": "Denna uppgiftstyp kräver åtminstone en tilldelning",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "Jag har {count} tilldelad syssla | Jag har {count} tilldelade sysslor",
+ "Assigned to me": "Tilldelad till mig",
+ "assigned to {string0}": "Tilldelad till {string0}",
+ "Assignment": "Uppgift",
+ "Consume product on chore execution": "Förbruka produkt när syssla utförs",
+ "Are you sure to delete user field \"{string0}\"?": "Är du säker på att du vill radera användarfältet \"{string0}\"?",
+ "Userentities": "Användarposter",
+ "Create userentity": "Skapa användarpost",
+ "Show in sidebar menu": "Visa i sidofältet",
+ "Edit userentity": "Redigera användarpost",
+ "Edit {string0}": "Redigera {string0}",
+ "Create {string0}": "Skapa {string0}",
+ "Are you sure to delete this userobject?": "Är du säker på att du vill radera detta användarobjekt?",
+ "Icon CSS class": "CSS-klass för ikon",
+ "For example": "Till exempel",
+ "Configure fields": "Konfigurera fält",
+ "Quantity unit plural form testing": "Test för pluralform av mängdenhet",
+ "Result": "Resultat",
+ "Test plural forms": "Testa pluralformer",
+ "Scan a barcode": "Skanna streckkod",
+ "Error while initializing the barcode scanning library": "Fel när programbiblioteket för streckkodsskanning skulle läsas in",
+ "The resulting price of this ingredient will be multiplied by this factor": "Priset för denna ingrediens kommer att multipliceras med denna faktor",
+ "Price factor": "Prisfaktor",
+ "Do you find grocy useful?": "Tycker du att grocy är användbart?",
+ "Say thanks": "Tacka",
+ "Search for recipes containing this product": "Sök efter recept som innehåller denna produkt",
+ "Add to shopping list": "Lägg till i inköpslista",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "La till {string1} {string2} till inköpslistan \"{string3}\"",
+ "Output": "Utdata",
+ "Energy (kcal)": "Energi (kcal)",
+ "Per stock quantity unit": "Per mängdenhet i lager",
+ "Barcode scanner testing": "Test av streckkodsskanning",
+ "Expected barcode": "Förväntad streckkod",
+ "Scan field": "Skanningsfält",
+ "Scanned barcodes": "Skannade streckkoder",
+ "Hit": "Träff",
+ "Miss": "Ej träff",
+ "Display recipe": "Visa recept",
+ "Accumulate sub products min. stock amount": "Ackumulera minsta lagersumma för underprodukt",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "Om detta är aktiverat kommer minsta lagerantal för underprodukter att ackumuleras till denna produkt, vilket innebär att underprodukten aldrig kommer saknas, endast denna överordnade produkt",
+ "Are you sure to remove this conversion?": "Är du säker på att du vill radera denna konvertering?",
+ "Unit price": "Enhetspris",
+ "Total price": "Totalpris",
+ "in {string0} and based on the purchase quantity unit": "i {string0} och baserat på mängdenhet för inköp",
+ "Unlimited": "Obegränsat",
+ "Clear": "Töm",
+ "Are you sure to remove the included recipe \"{string0}\"?": "Är du säker på att du vill radera receptet \"{string0}\" som ingår?",
+ "Period interval": "Periodintervall",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "Det innebär att nästa utförande av denna syssla endast ska schemaläggas var {string0} dag",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "Det innebär att nästa utförande av denna syssla endast ska schemaläggas var {string0} vecka",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "Det innebär att nästa utförande av denna syssla endast ska schemaläggas var {string0} månad",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "Det innebär att nästa utförande av denna syssla schemaläggs 1 år efter att den senast utförts",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "Det innebär att nästa utförande av denna syssla endast ska schemaläggas var {string0} år",
+ "Transfer": "Överför",
+ "From location": "Från plats",
+ "To location": "Till plats",
+ "There are no units available at this location": "Det finns inga enheter tillgänliga på denna plats",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "Flyttade {string1} av {string2} från {string3} till {string4}",
+ "Stock entries": "Lagerposter",
+ "Best before date": "Bäst före-datum",
+ "Purchased date": "Inköpsdatum",
+ "Consume all {string0} for this stock entry": "Konsumera alla {string0} av denna lagerpost",
+ "The amount cannot be lower than {string1}": "Antaler kan ej vara lägre än {string1}",
+ "Stock entry successfully updated": "Uppdaterade lagerposten",
+ "Edit stock entry": "Redigera lagerpost",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "Åtkomst till kamera kan bara ske när det stöds och är tillåtet av din webbläsare och när grocy visas via en krypterad anslutning (https://)",
+ "Keep screen on": "Behåll skärm på",
+ "Keep screen on while displaying a \"fullscreen-card\"": "Behåll skärm på när ett \"fullskärmskort\" visas",
+ "A purchased date is required": "Inköpsdatum krävs",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "Producerar produkt",
+ "This booking cannot be undone": "Denna bokning kan ej ångras",
+ "Booking does not exist or was already undone": "Bokning existerar ej eller är redan borttagen",
+ "Are you sure to delete API key \"{string0}\"?": "Vill du verkligen radera API-nyckeln \"{string0}\"?",
+ "Add note": "Lägg till anteckning",
+ "Add note on {string0}": "Lägg till kommentar på {string0}",
+ "per day": "per dag",
+ "Only undone items": "Endast borttagna objekt",
+ "Add product": "Lägg till produkt",
+ "Add product on {string0}": "Lägg till produkt på {string0}",
+ "Consume all ingredients needed by this weeks recipes or products": "Konsumera alla ingredienser som behövs för den här veckans recept eller produkter",
+ "Meal plan recipe": "Måltidsplan recept",
+ "Meal plan note": "Måltidsplan anteckning",
+ "Meal plan product": "Måltidsplan produkt",
+ "Scan mode": "Skanningsläge",
+ "on": "på",
+ "off": "av",
+ "Scan mode is on but not all required fields could be populated automatically": "Skanningsläge är aktiverat men alla obligatoriska fält kunde inte fyllas i automatiskt",
+ "Is freezer": "Är en frys",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "När du flyttar produkter från/till en frys justeras bäst före-datumet enligt produktinställningarna",
+ "This cannot be the same as the \"From\" location": "Kan ej vara samma som \"Från\" platsen",
+ "Thawed": "Tinad",
+ "Frozen": "Fryst",
+ "Are you sure to delete userentity \"{string0}\"?": "Vill du radera användarobjektet \"{string0}\"?",
+ "Shopping list settings": "Inköpslista, inställningar",
+ "Show a month-view calendar": "Visa månadsvy i kalender",
+ "Edit note on {string0}": "Redigera anteckning på {string0}",
+ "Edit product on {string0}": "Redigera produkt på {string0}",
+ "Edit recipe on {string0}": "Redigera recept på {string0}",
+ "Desired servings": "Önskat antal portioner",
+ "Base: {string0}": "Bas: {string0}",
+ "Recipes settings": "Recept, inställningar",
+ "Recipe card": "Receptkort",
+ "Group ingredients by their product group": "Gruppera ingredienser efter produktgrupp",
+ "Unknown store": "Okänd affär",
+ "Store": "Affär",
+ "Transaction successfully undone": "Överföringen är nu borttagen",
+ "Default store": "Standardaffär",
+ "Consume this stock entry": "Förbruka den här lagerposten",
+ "Mark this stock entry as open": "Markera den här lagerposten som öppnad",
+ "Mark this item as done": "Markera den här posten som klar",
+ "Edit this item": "Redigera den här posten",
+ "Delete this item": "Radera den här posten",
+ "Show an icon if the product is already on the shopping list": "Visa en ikon om produkten redan finns i inköpslistan",
+ "Calories": "Kalorier",
+ "means {string1} per {string2}": "betyder {string1}per {string2}",
+ "Create inverse QU conversion": "Skapa inverterad mängdenhetskonvertering",
+ "Create recipe": "Skapa recept",
+ "Save & continue to add ingredients and included recipes": "Spara & fortsätt för att lägga till ingredienser och inkluderade recept",
+ "Save & continue": "Spara & fortsätt",
+ "Save & return to recipes": "Spara & återgå till recept",
+ "Stock value": "Lagervärde",
+ "Average price": "Genomsnitt pris",
+ "Active": "Aktiv",
+ "Barcodes": "Streckkoder",
+ "Barcode": "Streckkod",
+ "Create Barcode": "Skapa Streckkod",
+ "Barcode for product": "Streckkod för produkt",
+ "Edit Barcode": "Redigera Streckkod",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "Inte tillräckligt i lager (inte inkluderat i utgifter), {string0} ingredienser saknas",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "Inte tillräckligt mycket i lager (inte inkluderad i kostnaden), {string1} saknas. {string2} finns redan på inköpslistan",
+ "Quantity unit stock cannot be changed after first purchase": "Antalet kan inte ändras efter första köpet",
+ "Clear filter": "Töm filter",
+ "Permissions for user {string0}": "Rättigheter för användare {string0}",
+ "Are you sure you want to remove full permissions for yourself?": "Är du säker på att du vill radera fullständiga rättigheter för dig själv ?",
+ "Permissions saved": "Rättigheter sparade",
+ "You are not allowed to view this page": "Du har inte tillåtelse att se denna sida",
+ "Page not found": "Sidan hittades ej",
+ "Unauthorized": "",
+ "Error source": "Felkälla",
+ "Error message": "Felmeddelande",
+ "Stack trace": "",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "Sidan finns inte",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "Serverfel",
+ "A server error occured while processing your request": "Ett serverfel inträffade när din förfrågan behandlades",
+ "If you think this is a bug, please report it": "",
+ "Language": "Språk",
+ "User settings": "Användarinställningar",
+ "Default": "Standard",
+ "Stock journal summary": "",
+ "Journal summary": "",
+ "Journal summary for this product": "",
+ "Consume exact amount": "Förbruka exakt antal",
+ "Value": "",
+ "{string0} total value": "",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "",
+ "Decimal places allowed for amounts": "",
+ "Decimal places allowed for prices": "",
+ "Stock entries for this product": "",
+ "Edit shopping list": "",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "",
+ "price": "pris",
+ "New stock amount": "",
+ "Price per stock unit": "",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "",
+ "Transaction type": "",
+ "Transaction time": "",
+ "Chore journal": "",
+ "Track chore execution": "",
+ "Mark task as completed": "",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "",
+ "{count} product is due | {count} products are due": " | ",
+ "Due date": "",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": " | ",
+ "Expired": "Utgått",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "Ingen",
+ "Group by": "Gruppera efter",
+ "Ingredient group": "Ingrediensgrupp",
+ "Reset": "Nollställ",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "ingen-tilldelning",
+ "who-least-did-first": "den-som-gjorde-minst-går-först",
+ "random": "slumpmässig",
+ "in-alphabetical-order": "i-alfabetisk-ordning",
+ "timeago_locale": "sv",
+ "timeago_nan": "NaN år sedan",
+ "moment_locale": "sv",
+ "datatables_localization": "{\"sEmptyTable\":\"Ingen data tillgänglig i tabellen\",\"sInfo\":\"Visar _START_ till _END_ av _TOTAL_ noteringar\",\"sInfoEmpty\":\"Visar 0 till 0 av 0 noteringar\",\"sInfoFiltered\":\"(filtrerat från _MAX_ totala noteringar)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Show _MENU_ noteringar\",\"sLoadingRecords\":\"Laddar...\",\"sProcessing\":\"Processar...\",\"sSearch\":\"Söker:\",\"sZeroRecords\":\"Ingen träff som matchar\",\"oPaginate\":{\"sFirst\":\"Första\",\"sLast\":\"Sista\",\"sNext\":\"Nästa\",\"sPrevious\":\"Föregående\"},\"oAria\":{\"sSortAscending\":\": aktivera för att sortera kolumn stigande\",\"sSortDescending\":\": aktivera för att sortera kolumn fallande\"}}",
+ "summernote_locale": "sv-SE",
+ "fullcalendar_locale": "sv",
+ "bootstrap-select_locale": "sv_SE",
+ "purchase": "Inköp",
+ "transfer_from": "Överför från",
+ "transfer_to": "Överför till",
+ "consume": "Konsumera",
+ "inventory-correction": "Korrigera lager",
+ "product-opened": "Produkt öppnad",
+ "stock-edit-old": "lager-redigera-gammal",
+ "stock-edit-new": "lager-redigera-ny",
+ "self-production": "egentillverkning",
+ "manually": "Manuellt",
+ "dynamic-regular": "Dynamisk regelbunden",
+ "daily": "Daglig",
+ "weekly": "Veckovis",
+ "monthly": "Månadsvis",
+ "yearly": "Årligen",
+ "text-single-line": "Text (en rad)",
+ "text-multi-line": "Text (flera rader)",
+ "number-integral": "Antal (heltal)",
+ "number-decimal": "Antal (decimal)",
+ "date": "Datum (utan tid)",
+ "datetime": "Datum & tid",
+ "checkbox": "Kryssruta",
+ "preset-list": "mall-lista",
+ "preset-checklist": "mallchecklista",
+ "link": "länk",
+ "link-with-title": "",
+ "file": "",
+ "image": "",
+ "ADMIN": "ADMIN",
+ "USERS_CREATE": "ANVÄNDARE_SKAPA",
+ "USERS_EDIT": "ANVÄNDARE_REDIGERA",
+ "USERS_READ": "ANVÄNDARE_LÄS",
+ "USERS_EDIT_SELF": "ANVÄNDARE_REDIGERA_SJÄLV",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "BATTERIER_AVBRYT_LADDNINGSCYKEL",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "BATTERIER_SPÅRA_LADDNINGSCYKEL",
+ "CHORE_TRACK_EXECUTION": "SYSSLOR_SPÅRA_UTFÖRANDE",
+ "CHORE_UNDO_EXECUTION": "SYSSLOR_AVBRYT_UTFÖRANDE",
+ "MASTER_DATA_EDIT": "MASTER_DATA_ÄNDRA",
+ "TASKS_UNDO_EXECUTION": "UPPGIFTER_AVBRYT_UTFÖRANDE",
+ "TASKS_MARK_COMPLETED": "UPPGIFTER_MARKERA_SLUTFÖRD",
+ "STOCK_EDIT": "LAGER_EDITERA",
+ "STOCK_TRANSFER": "LAGER_ÖVERFÖR",
+ "STOCK_INVENTORY": "LAGER_INVENTARIER",
+ "STOCK_CONSUME": "LAGER_KONSUMERA",
+ "STOCK_OPEN": "LAGER_ÖPPNA",
+ "STOCK_PURCHASE": "LAGER_HANDLA",
+ "SHOPPINGLIST_ITEMS_ADD": "SHOPPINGLISTA_SAKER_LÄGG_TILL",
+ "SHOPPINGLIST_ITEMS_DELETE": "SHOPPINGLISTA_SAKER_TA_BORT",
+ "USERS": "ANVÄNDARE",
+ "STOCK": "LAGER",
+ "SHOPPINGLIST": "SHOPPINGLISTA",
+ "CHORES": "SYSSLOR",
+ "BATTERIES": "BATTERIER",
+ "TASKS": "UPPGIFTER",
+ "RECIPES": "RECEPT",
+ "EQUIPMENT": "UTRUSTNING",
+ "CALENDAR": "KALENDER",
+ "RECIPES_MEALPLAN": "RECEPT_MÅLTIDSPLAN",
+ "Cookies": "Kakor",
+ "Chocolate": "Choklad",
+ "Pantry": "Skafferi",
+ "Candy cupboard": "Godisskåp",
+ "Tinned food cupboard": "Konservskafferi",
+ "Fridge": "Kylskåp",
+ "Piece | Pieces": "Bit | bitar",
+ "Pack | Packs": "Förpackning | förpackningar",
+ "Glass | Glasses": "Glas | glas",
+ "Tin | Tins": "Burk | konservburk",
+ "Can | Cans": "Burk | burkar",
+ "Bunch | Bunches": "Knippa | knippor",
+ "Gummy bears": "Gummibjörnar",
+ "Crisps": "Chips",
+ "Eggs": "Ägg",
+ "Noodles": "Spaghetti",
+ "Pickles": "Inlagda grönsaker",
+ "Gulash soup": "Gulashsoppa",
+ "Yogurt": "Yoghurt",
+ "Cheese": "Ost",
+ "Cold cuts": "Pålägg",
+ "Paprika": "Paprika",
+ "Cucumber": "Gurka",
+ "Radish": "Rädisa",
+ "Tomato": "Tomat",
+ "Changed towels in the bathroom": "Byta handdukar i badrummet",
+ "Cleaned the kitchen floor": "Rengjorde köksgolvet",
+ "Warranty ends": "Garantin upphör",
+ "TV remote control": "TV fjärrkontroll",
+ "Alarm clock": "Väckarklocka",
+ "Heat remote control": "Klimat fjärrkontroll",
+ "Lawn mowed in the garden": "Gräset klippt i trädgården",
+ "Some good snacks": "Några bra tilltugg",
+ "Pizza dough": "Pizzadeg",
+ "Sieved tomatoes": "Passerade tomater",
+ "Salami": "Salami",
+ "Toast": "Rostat bröd",
+ "Minced meat": "Köttfärs",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spaghetti bolognese",
+ "Sandwiches": "Smörgåsar",
+ "English": "Engelska",
+ "German": "Tyska",
+ "Italian": "Italienska",
+ "This is the note content of the recipe ingredient": "Detta är anteckningen för receptets ingrediens",
+ "Demo User": "Demo-användare",
+ "Gram | Grams": "Gram | gram",
+ "Flour": "Mjöl",
+ "Pancakes": "Pannkakor",
+ "Sugar": "Socker",
+ "Home": "Hem",
+ "Life": "Liv",
+ "Projects": "Projekt",
+ "Repair the garage door": "Reparera garagedörren",
+ "Fork and improve grocy": "Starta ny gren och förbättra grocy",
+ "Find a solution for what to do when I forget the door keys": "Hitta en lösning för vad man ska göra när jag glömmer dörrnycklarna",
+ "Sweets": "Sötsaker",
+ "Bakery products": "Bageriprodukter",
+ "Tinned food": "Konserverad mat",
+ "Butchery products": "Slaktprodukter",
+ "Vegetables/Fruits": "Grönsaker/frukt",
+ "Refrigerated products": "Kylda produkter",
+ "Coffee machine": "Kaffemaskin",
+ "Dishwasher": "Diskmaskin",
+ "Liter": "liter",
+ "Liters": "liter",
+ "Bottle": "flaska",
+ "Bottles": "flaskor",
+ "Milk": "Mjölk",
+ "Chocolate sauce": "Chokladsås",
+ "Milliliters": "ml",
+ "Milliliter": "ml",
+ "Bottom": "Botten",
+ "Topping": "Garnering",
+ "French": "Franska",
+ "Turkish": "Turkiska",
+ "Spanish": "Spanska",
+ "Russian": "Ryska",
+ "The thing which happens on the 5th of every month": "Saken som händer den 5:e varje månad",
+ "The thing which happens daily": "Saken som händer dagligen",
+ "The thing which happens on Mondays and Wednesdays": "Saken som händer på måndagar och onsdagar",
+ "Swedish": "Svenska",
+ "Polish": "Polska",
+ "Milk Chocolate": "Mjölkchoklad",
+ "Dark Chocolate": "Mörk chocklad",
+ "Slice | Slices": "Skiva | skivor",
+ "Example userentity": "Exempel användarenhet",
+ "This is an example user entity...": "Detta är ett exempel på en användarenhet...",
+ "Custom field": "Anpassat fält",
+ "Example field value...": "Anpassat fält värde...",
+ "Waffle rolls": "Våffelrullar",
+ "Danish": "Danska",
+ "Dutch": "Hollänska",
+ "Norwegian": "Norska",
+ "Demo": "Demo",
+ "Stable version": "Stabil version",
+ "Preview version": "Förhandsgrandskningsversion",
+ "current release": "Aktuell version",
+ "not yet released": "osläppt version",
+ "Portuguese (Brazil)": "Portugisiska (Brasilien)",
+ "This is a note": "Detta är en anteckning",
+ "Freezer": "Frys",
+ "Hungarian": "Ungerska",
+ "Slovak": "Slovakiska",
+ "Czech": "Tjeckiska",
+ "Portuguese (Portugal)": "Portugisiska (Portugal)",
+ "DemoSupermarket1": "Demo-affär1",
+ "DemoSupermarket2": "Demo-affär2",
+ "Japanese": "Japanska",
+ "Chinese (Taiwan)": "Kinesiska (Taiwan)",
+ "Greek": "",
+ "Korean": "",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/ta.json b/locale/ta.json
new file mode 100644
index 00000000..25e8cc18
--- /dev/null
+++ b/locale/ta.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "இருப்பு கண்ணோட்டம்",
+ "{count} product expires | {count} products expiring": "{count} பொருள் காலாவதியாகின்றது | {count} பொருட்கள் காலாவதியாகின்றன",
+ "within the next day | within the next {count} days": "நாளையிற்குள் | அடுத்த {count} நாட்களிற்குள்",
+ "{count} product is already expired | {count} products are already expired": "{count} பொருள் காலாவதியாகிவிட்டது | {count} பொருட்கள் காலாவதியாகிவிட்டன",
+ "{count} product is overdue | {count} products are overdue": "{count} பொருளை வாங்க வேண்டும் | {count} பொருட்களை வாங்க வேண்டும்",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "குறிப்பிட்ட கையிருப்பு அளவினை விட குறைவான {count} பொருள் | குறிப்பிட்ட கையிருப்பு அளவினை விட குறைவான {count} பொருட்கள்",
+ "Product": "பொருள்",
+ "{count} Product | {count} Products": "{count} பொருள் | {count} பொருட்கள்",
+ "Amount": "மொத்தம்",
+ "Logout": "வெளியேறு",
+ "Chores overview": "பணிகளின் கண்ணோட்டம்",
+ "Batteries overview": "மின்கலங்களின் கண்ணோட்டம்",
+ "Purchase": "வாங்கியது",
+ "Consume": "பயன்படுத்தியது",
+ "Inventory": "இருப்பு",
+ "Shopping list": "வாங்க வேண்டியவை",
+ "Chore tracking": "பணியின் கண்காணிப்பு",
+ "Battery tracking": "மின்கல கண்காணிப்பு",
+ "Locations": "இடங்கள்",
+ "Stores": "கடைகள்",
+ "Quantity units": "அளவு அலகுகள்",
+ "Chores": "வேலைகள்",
+ "Batteries": "மின்கலங்கள்",
+ "Chore": "வேலை",
+ "Next estimated tracking": "அடுத்த மதிப்பிடப்பட்ட கண்காணிப்பு",
+ "Last tracked": "கடைசியாக கண்காணிக்கப்பட்டது",
+ "Battery": "மின்கலம்",
+ "Last charged": "கடைசியாக திறனேற்றப்பட்டது",
+ "Next planned charge cycle": "அடுத்த திட்டமிடப்பட்ட சக்தியேற்றல்",
+ "Best before": "நாளிற்கு முன் சிறந்தது",
+ "OK": "சரி",
+ "Product overview": "பொருளின் கண்ணோட்டம்",
+ "Stock quantity unit": "கையிருப்பு அளவு அலகு",
+ "Stock amount": "இருப்பு அளவு",
+ "Last purchased": "கடைசியாக வாங்கப்பட்டது",
+ "Last used": "கடைசியாக பயன்படுத்தப்பட்டது",
+ "Spoiled": "கெட்டு விட்டது",
+ "Barcode lookup is disabled": "பார்கோடின் தேடுதலினை செயலிழக்க செய்",
+ "will be added to the list of barcodes for the selected product on submit": "",
+ "New amount": "புதிய அளவு",
+ "Note": "குறிப்பு",
+ "Tracked time": "தடப்படுத்தப்படும் காலம்",
+ "Chore overview": "பணியின் கண்ணோட்டம்",
+ "Tracked count": "தடப்படுபவையின் எண்ணிக்கை",
+ "Battery overview": "மின்கலக் கண்ணோட்டம்",
+ "Charge cycles count": "மின்கல சக்தியேற்றலின் எண்ணிக்கை",
+ "Create shopping list item": "வாங்க வேண்டிய பொருளினை உருவாக்கு",
+ "Edit shopping list item": "வாங்க வேண்டிய பொருளினைத் தொகு",
+ "Save": "சேமி",
+ "Add": "சேர்",
+ "Name": "பெயர்",
+ "Location": "இடம்",
+ "Min. stock amount": "குறைந்தபட்ச இருப்பு அளவு",
+ "Description": "விவரணம்",
+ "Create product": "பொருளினை உருவாக்கு",
+ "Barcode(s)": "பார்கோடு(கள்)",
+ "Minimum stock amount": "குறைந்தபட்ச இருப்பு அளவு",
+ "Default best before days": "இயல்நிலை நாட்களுக்கு முன் சிறந்தது",
+ "Default quantity unit purchase": "",
+ "Quantity unit stock": "அளவு அலகு கையிருப்பு",
+ "Factor purchase to stock quantity unit": "",
+ "Create location": "இடத்தை உருவாக்கவும்",
+ "Create store": "கடையினை உருவாக்கு",
+ "Create quantity unit": "கொள்ளளவு அலகினை உருவாக்கவும்",
+ "Period type": "கால வகை",
+ "Period days": "கால நாட்கள்",
+ "Create chore": "வேலையினை உருவாக்கு",
+ "Used in": "இங்கு பயன்படுத்தப்படுகிறது",
+ "Create battery": "மின்கலத்தினை உருவாக்கு",
+ "Edit battery": "மின்கலத்தினைத் தொகு",
+ "Edit chore": "வேலையினைத் தொகு",
+ "Edit quantity unit": "கொள்ளளவு அலகினை தொகுக்கவும்",
+ "Edit product": "பொருளினைத் தொகு",
+ "Edit location": "இடத்தினைத் தொகு",
+ "Edit store": "கடையினைத் தொகு",
+ "Record data": "தரவுகளைப் பதிவிடு",
+ "Manage master data": "பிரதான தரவுகளை நிர்வகிக்கவும்",
+ "This will apply to added products": "",
+ "never": "ஒருபோதும் இல்லை",
+ "Add products that are below defined min. stock amount": "",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "",
+ "Login": "புகுபதிகையிடு",
+ "Username": "பயனர்பெயர்",
+ "Password": "கடவுச்சொல்",
+ "Invalid credentials, please try again": "தவறான ஆதாரச்சான்றுகள், மீண்டும் முயற்சிக்கவும்",
+ "Are you sure to delete battery \"{string0}\"?": "\"{string0}\" மின்கலத்தினை நீக்க உறுதியா?",
+ "Yes": "ஆமாம்",
+ "No": "இல்லை",
+ "Are you sure to delete chore \"{string0}\"?": "\"{string0}\" வேலையினை நீக்க உறுதியா?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "",
+ "Create or assign product": "பொருளினை உருவாக்கு அல்லது நிறுவு",
+ "Cancel": "ரத்துசெய்",
+ "Add as new product": "புதிய பொருளாக சேர்",
+ "Add as barcode to existing product": "",
+ "Add as new product and prefill barcode": "புதிய பொருளாக சேர் மற்றும் பார்கோடு விவரங்களை முன்னமே பட்டியலிடு",
+ "Are you sure to delete quantity unit \"{string0}\"?": "",
+ "Are you sure to delete product \"{string0}\"?": "\"{string0}\" பொருளினை நீக்க உறுதியா?",
+ "Are you sure to delete location \"{string0}\"?": "\"{string0}\" இடத்தினை நீக்க உறுதியா?",
+ "Are you sure to delete store \"{string0}\"?": "\"{string0}\" கடையினை நீக்க உறுதியா?",
+ "Manage API keys": "API விசைகளை நிர்வகிக்கவும்",
+ "REST API & data model documentation": "REST API & தரவுகள் ஆவணப்படுத்துதல்",
+ "API keys": "API விசைகள்",
+ "Create new API key": "புதிய API விசையினை உருவாக்கவும்",
+ "API key": "API விசை",
+ "Expires": "காலாவதியாகும் நாள்",
+ "Created": "உருவாக்கப்பட்டது",
+ "This product is not in stock": "இந்த பொருள் இருப்பில் இல்லை",
+ "This means {string0} will be added to stock": "{string0} கையிருப்பில் சேர்க்கப்படும்",
+ "This means {string0} will be removed from stock": "{string0} கையிருப்பிலிருந்து விலக்கப்படும்",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "",
+ "Removed {string1} of {string2} from stock": "கையிருப்பிலிருந்து {string2} இன் {string1} நீக்கப்பட்டது",
+ "About grocy": "குரோசி பற்றி",
+ "Close": "மூடு",
+ "Released on": "வெளியிடப்பட்ட நாள்",
+ "Added {string1} of {string2} to stock": "கையிருப்பில் {string2} இல் {string1} சேர்க்கப்பட்டது",
+ "Stock amount of {string1} is now {string2}": "",
+ "Tracked execution of chore {string1} on {string2}": "",
+ "Tracked charge cycle of battery {string1} on {string2}": "",
+ "Consume all {string0} which are currently in stock": "இருப்பில் உள்ள {string0} அனைத்தையும் உண்",
+ "All": "அனைத்தும்",
+ "Search": "தேடுங்கள்",
+ "Not logged in": "உள்நுழையவில்லை",
+ "You have to select a product": "நீங்கள் ஒரு பொருளினைத் தேர்ந்தெடுக்க வேண்டும்",
+ "You have to select a chore": "நீங்கள் ஒரு பணியினைத் தேர்ந்தெடுக்க வேண்டும்",
+ "You have to select a battery": "நீங்கள் ஒரு மின்கலத்தினைத் தேர்ந்தெடுக்க வேண்டும்",
+ "A name is required": "ஒரு பெயர் தேவை",
+ "A location is required": "ஒரு இடம் தேவை",
+ "A quantity unit is required": "ஒரு அளவு அலகு தேவை",
+ "A period type is required": "ஒரு கால வகை தேவைப்படுகிறது",
+ "A best before date is required": "எந்த நாளிற்கு முன் சிறந்தது என குறிப்பிடல் வேண்டும்",
+ "Settings": "அமைப்புகள்",
+ "This can only be before now": "இது முன்னராக மட்டுமே இருக்க இயலும்",
+ "Calendar": "நாட்காட்டி",
+ "Recipes": "சமையல் குறிப்புகள்",
+ "Edit recipe": "சமையல் குறிப்பினைத் தொகு",
+ "Ingredients list": "தேவையான பொருட்களின் பட்டியல்",
+ "Add recipe ingredient": "சமையல் குறிப்பின் மூலப்பொருளினை இணை",
+ "Edit recipe ingredient": "சமையல் குறிப்பின் மூலப்பொருட்களைத் தொகு",
+ "Are you sure to delete recipe \"{string0}\"?": "\"{string0}\" சமையல் குறிப்பினை நீக்க உறுதியா?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "",
+ "Are you sure to empty shopping list \"{string0}\"?": "\"{string0}\" வாங்க வேண்டியவை பட்டியலில் உள்ளவற்றினை நீக்க உறுதியா?",
+ "Clear list": "பட்டியலினை முதன்மைப்படுத்து",
+ "Requirements fulfilled": "தேவைகள் பூர்திசெய்யப்பட்டுள்ளன",
+ "Put missing products on shopping list": "காலியாகிய பொருட்களினை வாங்கும் பட்டியலில் இணை",
+ "Enough in stock": "போதுமானதாக கையிருப்பில் உள்ளது",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": " | ",
+ "Expand to fullscreen": "முழுத்திரையிற்கு விரிவாக்கு",
+ "Ingredients": "தேவையான பொருட்கள்",
+ "Preparation": "தயாரிப்பு",
+ "Recipe": "சமையல் குறிப்பு",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "",
+ "Show notes": "குறிப்புகளைக் காட்டு",
+ "Put missing amount on shopping list": "விடுபட்டுள்ள தொகையை வாங்க வேண்டியவை பட்டியலில் சேர்",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "",
+ "Added for recipe {string0}": "{string0}சமையல் குறிப்பில் இணைக்கப்பட்டது",
+ "Manage users": "பயனர்களை நிர்வகிக்கவும்",
+ "User": "பயனர்",
+ "Users": "பயனர்கள்",
+ "Are you sure to delete user \"{string0}\"?": "\"{string0}\" பயனரினை நீக்க உறுதியா?",
+ "Create user": "பயனரை உருவாக்கு",
+ "Edit user": "பயனரை மாற்று",
+ "First name": "முதன்மை பெயர்",
+ "Last name": "விகுதி பெயர்",
+ "A username is required": "பயனர் பெயர் தேவை",
+ "Confirm password": "கடவுச் சொல் உறுதி செய்யவும்",
+ "Passwords do not match": "கடவுச்சொற்கள் பொருந்தவில்லை",
+ "Change password": "கடவுச்சொல்லை மாற்றவும்",
+ "Done by": "ஆல் முடிக்கப்பட்டது",
+ "Last done by": "கடைசியாக செய்தவர்",
+ "Unknown": "தெரியாதது",
+ "Chores journal": "பணிகளின் நாளேடு",
+ "0 means suggestions for the next charge cycle are disabled": "",
+ "Charge cycle interval (days)": "மின்கல சக்தியேற்ற இடைவெளி (நாட்கள்)",
+ "Last price": "முந்தைய விலை",
+ "Price history": "விலை வரலாறு",
+ "No price history available": "விலை வரலாறு இருக்கவில்லை",
+ "Price": "விலை",
+ "Unit": "அலகு",
+ "{count} Unit | {count} Units": "{count} அலகு | {count} அலகுகள்",
+ "{count} chore is due to be done | {count} chores are due to be done": " | ",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": " | ",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} மின்கலம் சக்தியேற்றப்பட வேண்டும் | {count} மின்கலங்கள் சக்தியேற்றப்பட வேண்டும்",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} மின்கலம் சக்தியேற்றப்பட வேண்டும் | {count} மின்கலங்கள் சக்தியேற்றப்பட வேண்டும்",
+ "in singular form": "ஒருமை வடிவத்தில்",
+ "Quantity unit": "அளவு அலகு",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "",
+ "Consume all ingredients needed by this recipe": "சமையல் குறிப்பிலுள்ள அனைத்து பொருட்களையும் உண்",
+ "Click to show technical details": "நுட்ப விவரங்களைப் பார்க்க இங்கு சொடுக்கவும்",
+ "Error while saving, probably this item already exists": "சேமிக்கும் போது பிழை ஏற்பட்டது, இந்த பொருள் ஏற்கனவே பதிவு செய்யப்பட்டிருக்கலாம்",
+ "Error details": "பிழையின் விவரங்கள்",
+ "Tasks": "பணிகள்",
+ "Show done tasks": "முடிந்த பணிகளைக் காட்டு",
+ "Task": "பணி",
+ "Due": "உரிய",
+ "Assigned to": "இவருக்கு நிச்சியக்கப்பட்டுள்ளது",
+ "Mark task \"{string0}\" as completed": "\"{string0}\" பணியினை முடித்ததாகக் குறிக்கவும்",
+ "Uncategorized": "வகைப்படுத்தப்படவில்லை",
+ "Task categories": "பணி பகுப்புகள்",
+ "Create task": "பணியினை உருவாக்கு",
+ "A due date is required": "உரிய கடைசி தேதி தேவை",
+ "Category": "பகுப்பு",
+ "Edit task": "பணியினை தொகு",
+ "Are you sure to delete task \"{string0}\"?": "\"{string0}\" பணியினை நீக்க உறுதியா?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} வேலையினை முடிக்க வேண்டும் | {count} வேலைகளை முடிக்க வேண்டும்",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": " | ",
+ "Edit task category": "பணியின் பகுப்பினைத் தொகு",
+ "Create task category": "பணியின் பகுப்பினை உருவாக்கு",
+ "Product groups": "பொருட்களின் குழுக்கள்",
+ "Ungrouped": "குழுவாக்கப்படாதவை",
+ "Create product group": "பொருட்கள் குழுவினை உருவாக்கு",
+ "Edit product group": "பொருட்கள் குழுவினைத் தொகு",
+ "Product group": "பொருட்களின் குழு",
+ "Are you sure to delete product group \"{string0}\"?": "\"{string0}\" பொருட்கள் குழுவினை நீக்க உறுதியா?",
+ "Stay logged in permanently": "என்றும் புகுபதிகையில் இரு",
+ "When not set, you will get logged out at latest after 30 days": "",
+ "Status": "நிலை",
+ "Below min. stock amount": "குறைந்தபட்ச இருப்பு அளவின் கீழ் உள்ளது",
+ "Expiring soon": "விரைவில் காலாவதியாகிறது",
+ "Already expired": "காலாவதியாகிவிட்டது",
+ "Due soon": "சீக்கிரம் முடியவுள்ளது",
+ "Overdue": "முடிக்கவேண்டியவை",
+ "View settings": "அமைப்புகளைக் காண்க",
+ "Auto reload on external changes": "வெளிப்புற மாற்றங்களில் தானாக மீண்டும் ஏற்றவும்",
+ "Enable night mode": "இரவு பயன்முறையை செயல்படுத்து",
+ "Auto enable in time range": "",
+ "From": "இங்கிருந்து",
+ "in format": "வடிவத்தில்",
+ "To": "இங்கு",
+ "Time range goes over midnight": "நேர வரம்பு நள்ளிரவுக்கு மேல் செல்கிறது",
+ "Product picture": "பொருளின் படம்",
+ "No file selected": "எந்த கோப்பும் தேர்வு செய்யப்படவில்லை",
+ "Delete": "நீக்கவும்",
+ "Select file": "கோப்பைத் தேர்ந்தெடுக்கவும்",
+ "Image of product {string0}": "{string0}பொருளின் படம்",
+ "Deletion not possible": "நீக்க இயலாது",
+ "Equipment": "கருவி",
+ "Instruction manual": "உதவி வழிகாட்டி",
+ "The selected equipment has no instruction manual": "இந்தக் கருவிக்கு உதவி வழிக்காட்டி கிடைக்கவில்லை",
+ "Notes": "குறிப்புகள்",
+ "Edit equipment": "கருவியை மாற்றவும்",
+ "Create equipment": "கருவியை உருவாக்கவும்",
+ "The current file will be deleted on save": "",
+ "No picture available": "படம் ஏதும் இல்லை",
+ "Presets for new products": "புதிய பொருட்களிற்கான முன்னமைவுகள்",
+ "Included recipes": "கொடுக்கப்பட்டுள்ள சமையல் குறிப்புகள்",
+ "A recipe is required": "ஒரு சமையல் குறிப்பு தேவை",
+ "Add included recipe": "",
+ "Edit included recipe": "கொடுக்கப்பட்டுள்ள சமையல் குறிப்பினைத் தொகு",
+ "Group": "குழு",
+ "This will be used as a headline to group ingredients together": "",
+ "Journal": "நாளேடு",
+ "Stock journal": "இருப்பு நாளேடு",
+ "Undone on": "அன்று மீளமைக்கப்பட்டது",
+ "Batteries journal": "மின்கல நாளேடு",
+ "Undo charge cycle": "சக்தியேற்றலினை மீளமை",
+ "Undo chore execution": "பணி முடிவினை மீளமை",
+ "Chore execution successfully undone": "",
+ "Undo": "மீளமை",
+ "Booking successfully undone": "பதிவு வெற்றிகரமாக மீளமைக்கப்பட்டது",
+ "Charge cycle successfully undone": "சக்தியேற்றம் வெற்றிகரமாக மீளமைக்கப்பட்டது",
+ "Disable stock fulfillment checking for this ingredient": "",
+ "Add all list items to stock": "பட்டியலிலுள்ள அனைத்து பொருட்களையும் இருப்பில் சேர்",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "",
+ "Use a specific stock item": "குறிப்பிட்ட கையிருப்பு பொருளினை பயன்படுத்து",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "{string2} இல் {string1} இனை திறக்கப்பட்டதாக குறி",
+ "Marked {string1} of {string2} as opened": "{string2} இல் {string1} திறக்கப்பட்டதாக குறிக்கப்பட்டது",
+ "Mark as opened": "திறந்ததாக குறிக்கவும்",
+ "Not opened": "திறக்கப்படவில்லை",
+ "Opened": "திறக்கப்பட்டுவிட்டது",
+ "{string0} opened": "{string0} திறக்கப்பட்டது",
+ "Product due": "",
+ "Task due": "பணியினை முடிக்க",
+ "Chore due": "முடிக்க வேண்டிய வேலைகள்",
+ "Battery charge cycle due": "",
+ "Show clock in header": "தலைப்பில் கடிகாரத்தினைக் காட்டு",
+ "Stock settings": "இருப்பின் அமைப்புகள்",
+ "Shopping list to stock workflow": "வாங்க வேண்டியவை பட்டியலிலிருந்து கையிருப்பு பணிப்பாய்வு",
+ "Skip": "தவிர்",
+ "Servings": "பரிமாறல்கள்",
+ "Costs": "செலவுகள்",
+ "Based on the prices of the last purchase per product": "பொருள் வாரியாக கடைசியாக வாங்கிய விலைகளின் அடிப்படையில்",
+ "The ingredients listed here result in this amount of servings": "",
+ "Do not check against the shopping list when adding missing items to it": "",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "",
+ "Picture": "படம்",
+ "Uncheck ingredients to not put them on the shopping list": "",
+ "This is for statistical purposes only": "புள்ளிவிவர நோக்கத்திற்கு மட்டுமே பயன்படுத்தப்படும்",
+ "You have to select a recipe": "நீங்கள் ஒரு சமையல் குறிப்பினைத் தேர்ந்தெடுக்க வேண்டும்",
+ "Key type": "கீ வகை",
+ "Share/Integrate calendar (iCal)": "நாளிதழினை பகிர்/இணை (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "",
+ "Allow partial units in stock": "கையிருப்பில் பகுதியளவிலான அலகுகளையும் அனுமதி",
+ "Enable tare weight handling": "",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "",
+ "Tare weight": "எடை",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "",
+ "You have to select a location": "",
+ "You have to select a store": "நீங்கள் ஒரு கடையினைத் தேர்ந்தெடுக்க வேண்டும்",
+ "List": "பட்டியல்",
+ "Gallery": "படங்கள்",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "இந்த மின்கலத்தின் நாளேடு",
+ "System info": "செயலி விவரம்",
+ "Changelog": "மாறுபாடு பட்டியல்",
+ "will be multiplied by a factor of {string1} to get {string2}": "",
+ "The given date is earlier than today, are you sure?": "கொடுக்கப்பட்ட தேதி இன்றை விட முந்தையது, நீங்கள் உறுதியாக இருக்கிறீர்களா?",
+ "Product count": "பொருள் எண்ணிக்கை",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "",
+ "Add item": "உருப்படியைச் சேர்க்கவும்",
+ "Selected shopping list": "தேர்ந்தெடுக்கப்பட்ட வாங்க வேண்டியவைப் பட்டியல்",
+ "New shopping list": "புதிய வாங்க வேண்டியவைப் பட்டியல்",
+ "Delete shopping list": "வாங்க வேண்டியவைப் பட்டியலினை நீக்கு",
+ "Chores settings": "பணிகளின் அமைப்புகள்",
+ "Batteries settings": "மின்கலங்களின் அமைப்புகள்",
+ "Tasks settings": "பணி அமைப்புகள்",
+ "Create shopping list": "வாங்க வேண்டியவைப் பட்டியலினை உருவாக்கு",
+ "Are you sure to delete shopping list \"{string0}\"?": "\"{string0}\" வாங்க வேண்டியவை பட்டியலினை நீக்க உறுதியா?",
+ "Average shelf life": "சராசரி பொருளின் வாழ்க்கை",
+ "Spoil rate": "கெட்டுப்போகும் வேகம்",
+ "Show more": "மேலும் காட்டு",
+ "Show less": "குறைத்து காட்டு",
+ "The amount must be between {string1} and {string2}": "அளவு {string1} இற்கும் {string2} இற்கும் இடையில் இருக்க வேண்டும்",
+ "Day of month": "மாதத்தின் நாள்",
+ "Monday": "திங்கட்கிழமை",
+ "Tuesday": "செவ்வாய்க்கிழமை",
+ "Wednesday": "புதன்கிழமை",
+ "Thursday": "வியாழக்கிழமை",
+ "Friday": "வெள்ளிக்கிழமை",
+ "Saturday": "சனிக்கிழமை",
+ "Sunday": "ஞாயிற்றுக்கிழமை",
+ "Configure userfields": "பயனர்புலங்களை அமைத்திடு",
+ "Userfields": "பயனர்புலங்கள்",
+ "Entity": "உருபொருள்",
+ "Caption": "தலைப்பு",
+ "Type": "வகை",
+ "Create userfield": "பயனர்புலத்தினை உருவாக்கு",
+ "A entity is required": "ஒரு உருபொருள் தேவைப்படுகிறது",
+ "A caption is required": "ஒரு குறிப்பு தேவை",
+ "A type is required": "ஒரு வகை தேவைப்படுகிறது",
+ "Show as column in tables": "இதனை பட்டியலில் ஒரு நீளணியாகக் காட்டு",
+ "This is required and can only contain letters and numbers": "",
+ "Edit userfield": "பயனர்புலத்தினைத் தொகு",
+ "Plural forms": "பன்மை வடிவங்கள்",
+ "One plural form per line, the current language requires": "",
+ "Plural count": "பன்மை எண்ணிக்கை",
+ "Plural rule": "பன்மை விதி",
+ "in plural form": "பன்மை வடிவத்தில்",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": " | ",
+ "Not enough in stock, but already on the shopping list": "கையிருப்பில் போதுமானதாக இல்லை, ஆனால் ஏற்கனவே வாங்க வேண்டியவை பட்டியலில் உள்ளது",
+ "Not enough in stock": "கையிருப்பில் போதுமானதாக இல்லை",
+ "Expiring soon days": "விரைவில் காலாவதியாகப்போகும் நாட்கள்",
+ "Default location": "இயல்புநிலை இடம்",
+ "Default amount for purchase": "வாங்குவதற்கான இயல்நிலை மதிப்பு",
+ "Default amount for consume": "உண்பதற்கான இயல்நிலை மதிப்பு",
+ "Variable amount": "மாறி அளவு",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "",
+ "Track date only": "தட நாள் மட்டும்",
+ "When enabled only the day of an execution is tracked, not the time": "",
+ "Consume {string1} of {string2}": "{string2} இலிருந்து {string1} இனை உண்",
+ "Meal plan": "உணவுத்திட்டம்",
+ "Add recipe on {string0}": "{string0} இல் சமையல் குறிப்பினை இணை",
+ "{count} serving | {count} servings": "{count} பரிமாறல் | {count} பரிமாறல்கள்",
+ "Week costs": "வார செலவுகள்",
+ "Configuration": "உள்ளமைவு",
+ "A predefined list of values, one per line": "மதிப்புகளின் முன் வரையறுக்கப்பட்ட பட்டியல், ஒரு வரிக்கு ஒன்று",
+ "Products": "பொருட்கள்",
+ "Marked task {string0} as completed on {string0}": "வேலை {string0} {string0} அன்று முடிக்கப்பட்டதாக குறிக்கப்பட்டது",
+ "Booking has subsequent dependent bookings, undo not possible": "",
+ "per serving": "ஒவ்வொரு பரிமாறலிற்கும்",
+ "Never": "ஒருபோதும் இல்லை",
+ "Today": "இன்று",
+ "Consume {string1} of {string2} as spoiled": "",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "",
+ "Undo task": "",
+ "Due date rollover": "",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "",
+ "Location Content Sheet": "",
+ "Print": "அச்சிடு",
+ "all locations": "அனைத்து இடங்கள்",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "",
+ "this location": "இந்த இடம்",
+ "Consumed amount": "உண்ட அளவு",
+ "Time of printing": "அச்சிடும் நேரம்",
+ "Are you sure to delete equipment \"{string0}\"?": "",
+ "Parent product": "மூலப் பொருள்",
+ "Not possible because this product is already used as a parent product in another product": "",
+ "Default conversions": "இயல்புநிலை மாற்றங்கள்",
+ "Factor": "மடங்கு",
+ "1 {string0} is the same as...": "1 {string0} இரண்டும் ஒன்று...",
+ "Create QU conversion": "",
+ "Default for QU": "QU இற்கான இயல்நிலை",
+ "Quantity unit from": "இந்த அளவு அலகு முதல்",
+ "Quantity unit to": "இந்த அளவு அலகிற்கு",
+ "This cannot be equal to {string0}": "",
+ "This means 1 {string1} is the same as {string2} {string3}": "",
+ "QU conversions": "QU மாற்றங்கள்",
+ "Product overrides": "",
+ "Override for product": "",
+ "This equals {string1} {string2}": "அதாவது {string2} இற்கு {string1} சமம்",
+ "Edit QU conversion": "",
+ "An assignment type is required": "ஒரு நிச்சயிக்கும் வகை தேவைப்படுகிறது",
+ "Assignment type": "நிச்சயித்தல் வகை",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "",
+ "This means the next execution of this chore is not scheduled": "",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "",
+ "This means the next execution of this chore will not be assigned to anyone": "",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "",
+ "This means the next execution of this chore will be assigned randomly": "",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "",
+ "Assign to": "இவருக்கு நிச்சியி",
+ "This assignment type requires that at least one is assigned": "",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} பணி எனக்கு நிச்சியக்கப்பட்டுள்ளது | {count} பணிகள் எனக்கு நிச்சியக்கப்பட்டுள்ளன",
+ "Assigned to me": "எனக்கு நிச்சியக்கப்பட்டுள்ளவை",
+ "assigned to {string0}": "{string0}இற்கு நிச்சியக்கப்பட்டது",
+ "Assignment": "பணி",
+ "Consume product on chore execution": "பணியின் முடிவில் பொருளினை உண்",
+ "Are you sure to delete user field \"{string0}\"?": "",
+ "Userentities": "பயனர் உருபொருட்கள்",
+ "Create userentity": "பயனர் உருபொருளினை உருவாக்கு",
+ "Show in sidebar menu": "",
+ "Edit userentity": "பயனர் உருபொருளினைத் தொகு",
+ "Edit {string0}": "{string0} இனைத் தொகு",
+ "Create {string0}": "{string0} இனை உருவாக்கு",
+ "Are you sure to delete this userobject?": "",
+ "Icon CSS class": "Icon CSS class",
+ "For example": "உதாரணத்திற்கு",
+ "Configure fields": "புலங்களை அமைத்திடு",
+ "Quantity unit plural form testing": "",
+ "Result": "முடிவு",
+ "Test plural forms": "பன்மை வடிவங்களை சோதி",
+ "Scan a barcode": "பார்கோடினை ஸ்கேன் செய்",
+ "Error while initializing the barcode scanning library": "",
+ "The resulting price of this ingredient will be multiplied by this factor": "",
+ "Price factor": "விலை மடங்கு",
+ "Do you find grocy useful?": "தங்களுக்கு குரோசி பயனுள்ளதாக உள்ளதா?",
+ "Say thanks": "நன்றி கூறு",
+ "Search for recipes containing this product": "இந்த பொருளினைக் கொண்ட சமையல் குறிப்புகளைத் தேடு",
+ "Add to shopping list": "வாங்க வேண்டியற்றில் சேர்",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "",
+ "Output": "வெளியீடு",
+ "Energy (kcal)": "சக்தி (கிலோ கலோரிகள்)",
+ "Per stock quantity unit": "ஒவ்வொரு கையிருப்பு அளவு அலகிற்கும்",
+ "Barcode scanner testing": "பார்கோடு ஸ்கேனர் சோதனை",
+ "Expected barcode": "எதிர்பார்க்கும் பார்கோடு",
+ "Scan field": "",
+ "Scanned barcodes": "ஸ்கேன் செய்யப்பட்ட பார்கோடுகள்",
+ "Hit": "வெற்றி",
+ "Miss": "தவற விடு",
+ "Display recipe": "சமையல் குறிப்பினைக் காட்டு",
+ "Accumulate sub products min. stock amount": "",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "",
+ "Are you sure to remove this conversion?": "இந்த மாற்றுதலினை நீக்க உறுதியா?",
+ "Unit price": "அலகு விலை",
+ "Total price": "மொத்தச் செலவு",
+ "in {string0} and based on the purchase quantity unit": "",
+ "Unlimited": "அளவில்லாமல்",
+ "Clear": "காலியாக்கு",
+ "Are you sure to remove the included recipe \"{string0}\"?": "முன்னமே இணைக்கப்பட்டுள்ள \"{string0}\" சமையல் குறிப்பினை நீக்க உறுதியா?",
+ "Period interval": "கால இடைவெளி",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "",
+ "Transfer": "பரிமாற்றம்",
+ "From location": "அனுப்பும் இடம்",
+ "To location": "செல்லும் இடம்",
+ "There are no units available at this location": "எந்த பொருளும் இந்த இடத்தில் இல்லை",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "",
+ "Stock entries": "கையிருப்பு பதிவுகள்",
+ "Best before date": "நாளிற்கு முன் சிறந்தது",
+ "Purchased date": "வாங்கிய நாள்",
+ "Consume all {string0} for this stock entry": "இருப்பில் உள்ள {string0} அனைத்தையும் உண்",
+ "The amount cannot be lower than {string1}": "{string1} இனை விட அளவு குறைவாக இருக்க இயலாது",
+ "Stock entry successfully updated": "கையிருப்பு பதிவு வெற்றிகரமாக பதியப்பட்டது",
+ "Edit stock entry": "கையிருப்பு பதிவினைத் தொகு",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "",
+ "Keep screen on": "திரையினை செயலில் வை",
+ "Keep screen on while displaying a \"fullscreen-card\"": "",
+ "A purchased date is required": "வாங்கிய நாளினை குறிப்பிட வேண்டும்",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "",
+ "Produces product": "தயாரிக்கும் பொருள்",
+ "This booking cannot be undone": "இந்த பதிவினை மீளமைக்க முடியாது",
+ "Booking does not exist or was already undone": "",
+ "Are you sure to delete API key \"{string0}\"?": "\"{string0}\" API விசையினை நீக்க வேண்டுமா",
+ "Add note": "குறிப்பு சேர்",
+ "Add note on {string0}": "{string0}இல் ஒரு குறிப்பினை இணை",
+ "per day": "ஒரு நாளைக்கு",
+ "Only undone items": "மீளமைக்கப்பட்ட பொருட்கள் மட்டும்",
+ "Add product": "பொருளினைச் சேர்",
+ "Add product on {string0}": "{string0} இல் பொருளினை இணை",
+ "Consume all ingredients needed by this weeks recipes or products": "",
+ "Meal plan recipe": "உணவுத்திட்ட சமையல் குறிப்பு",
+ "Meal plan note": "உணவுத்திட்ட குறிப்பு",
+ "Meal plan product": "உணவுத்திட்ட தயாரிப்பு",
+ "Scan mode": "",
+ "on": "செயலாக்கு",
+ "off": "அணை",
+ "Scan mode is on but not all required fields could be populated automatically": "",
+ "Is freezer": "உறைவிப்பான் ஆகும்",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "",
+ "This cannot be the same as the \"From\" location": "",
+ "Thawed": "உருகியது",
+ "Frozen": "உறைந்தது",
+ "Are you sure to delete userentity \"{string0}\"?": "",
+ "Shopping list settings": "வாங்க வேண்டியவை அமைப்புகள்",
+ "Show a month-view calendar": "மாத வாரியாக நாட்காட்டியனை காட்டு",
+ "Edit note on {string0}": "{string0} இல் குறிப்பினைத் தொகு",
+ "Edit product on {string0}": "{string0} இல் பொருளினைத் தொகு",
+ "Edit recipe on {string0}": "{string0} இன் சமையல் குறிப்பினைத் தொகு",
+ "Desired servings": "விருப்பமான பரிமாறல்கள்",
+ "Base: {string0}": "அடிப்படை: {string0}",
+ "Recipes settings": "சமையல் குறிப்புகளின் அமைப்புகள்",
+ "Recipe card": "சமையல் குறிப்பு கார்டு",
+ "Group ingredients by their product group": "",
+ "Unknown store": "அறியப்படாத கடை",
+ "Store": "கடை",
+ "Transaction successfully undone": "பரிமாற்றம் வெற்றிகரமாக மீளமைக்கப்பட்டது",
+ "Default store": "இயல்புநிலை கடை",
+ "Consume this stock entry": "இந்த கையிருப்பு பொருளினை உண்",
+ "Mark this stock entry as open": "கையிருப்பு பொருளினை திறந்ததாகக் குறி",
+ "Mark this item as done": "இதனினை முடித்ததாகக் குறி",
+ "Edit this item": "இதைத் தொகு",
+ "Delete this item": "இதை நீக்கு",
+ "Show an icon if the product is already on the shopping list": "",
+ "Calories": "கலோரிகள்",
+ "means {string1} per {string2}": "அதாவது {string2} இற்கு {string1}",
+ "Create inverse QU conversion": "",
+ "Create recipe": "சமையல் குறிப்பினை உருவாக்கவும்",
+ "Save & continue to add ingredients and included recipes": "",
+ "Save & continue": "சேமித்து தொடரவும்",
+ "Save & return to recipes": "சமையல் குறிப்புகளுக்கு சேமித்து தொடரு",
+ "Stock value": "கையிருப்பின் மதிப்பு",
+ "Average price": "சராசரி விலை",
+ "Active": "செயலில் உள்ளது",
+ "Barcodes": "பார்கோடுகள்",
+ "Barcode": "பார்கோடு",
+ "Create Barcode": "பார்கோடினை உருவாக்கு",
+ "Barcode for product": "பொருளிற்கான பார்கோடு",
+ "Edit Barcode": "பார்கோடினைத் தொகு",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "",
+ "Quantity unit stock cannot be changed after first purchase": "",
+ "Clear filter": "வடிகட்டியை அழி",
+ "Permissions for user {string0}": "பயனர் {string0} இன் அனுமதிகள்",
+ "Are you sure you want to remove full permissions for yourself?": "",
+ "Permissions saved": "சேமிக்கப்பட்டுள்ள அனுமதிகள் ",
+ "You are not allowed to view this page": "இந்த பக்கத்தினைப் பார்க்க தங்களுக்கு அனுமதி இல்லை",
+ "Page not found": "பக்கம் கிடைக்கவில்லை",
+ "Unauthorized": "அங்கீகரிக்கப்படாதது",
+ "Error source": "பிழையின் மூலம்",
+ "Error message": "பிழைச் செய்தி",
+ "Stack trace": "Stack trace",
+ "Easy error info copy & paste (for reporting)": "",
+ "This page does not exist": "இந்த பக்கம் இல்லை",
+ "You will be redirected to the default page in {string0} seconds": "",
+ "Server error": "சேவையக பிழை",
+ "A server error occured while processing your request": "உங்கள் கோரிக்கையைச் செயல்படுத்தும்போது சேவையகப் பிழை ஏற்பட்டது",
+ "If you think this is a bug, please report it": "ஏதாவது பிழைகளை கண்டறிந்தால், தயவுகூர்ந்து அதனினை எங்களிடம் கூறுங்கள்",
+ "Language": "மொழி",
+ "User settings": "பயனர் அமைப்புகள்",
+ "Default": "இயல்புநிலை",
+ "Stock journal summary": "இருப்பு நாளேடின் சுருக்கம்",
+ "Journal summary": "நாளேடின் சுருக்கம்",
+ "Journal summary for this product": "இந்த பொருளினுடைய நாளேடின் சுருக்கம்",
+ "Consume exact amount": "குறிப்பிடும் அளவினை உண்",
+ "Value": "மதிப்பு",
+ "{string0} total value": "{string0} மொத்த மதிப்பு",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "",
+ "Common": "பொது",
+ "Decimal places allowed for amounts": "தொகைகளுக்கு தசம இடங்கள் அனுமதிக்கப்படுகின்றன",
+ "Decimal places allowed for prices": "தசம இடங்கள் விலைகளுக்கு அனுமதிக்கப்படுகின்றன",
+ "Stock entries for this product": "இந்த பொருளினுடைய கையிருப்பின் பதிகைகள்",
+ "Edit shopping list": "வாங்க வேண்டிய பொருட்கள் பட்டியலினைத் தொகு",
+ "Save & continue to add quantity unit conversions & barcodes": "",
+ "Save & return to products": "சேமித்த பிறகு பொருட்களுக்கு செல்",
+ "Save & continue to add conversions": "",
+ "Save & return to quantity units": "சேமித்த பிறகு அளவு அலகுகளுக்கு செல்",
+ "price": "விலை",
+ "New stock amount": "புதிய இருப்பு அளவு",
+ "Price per stock unit": "ஒவ்வொரு கையிருப்பு அளவின் விலை",
+ "Table options": "",
+ "This product is currently on a shopping list": "",
+ "Undo transaction": "பரிமாற்றத்தினை மீளமை",
+ "Transaction type": "பரிமாற்றம் வகை",
+ "Transaction time": "பரிமாற்ற நேரம்",
+ "Chore journal": "பணிகள் பதிகை",
+ "Track chore execution": "பணிகள் முடித்தலினை தடமிடு",
+ "Mark task as completed": "வேலையினை முடித்ததாக குறிக்கவும்",
+ "Track charge cycle": "",
+ "Battery journal": "",
+ "This product has a picture": "",
+ "Consume this stock entry as spoiled": "",
+ "Configure user permissions": "பயனர் அனுமதிகளை அமைத்திடு",
+ "Show a QR-Code for this API key": "",
+ "This is the default quantity unit used when adding this product to the shopping list": "",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "விரைவு உண்ணும் அளவு",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "",
+ "Due date type": "உரிய தேதி வகை",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "",
+ "Expiration date": "காலாவதியாகப்போகும் நாள்",
+ "Means that the product is not safe to be consumed after its due date is reached": "",
+ "For purchases this amount of days will be added to today for the due date suggestion": "",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after thawing": "",
+ "Next due date": "அடுத்த உரிய தேதி",
+ "{count} product is due | {count} products are due": " | ",
+ "Due date": "உரிய தேதி",
+ "Never overdue": "",
+ "{count} product is expired | {count} products are expired": "{count} பொருள் காலாவதியாகிவிட்டது | {count} பொருட்கள் காலாவதியாகிவிட்டன",
+ "Expired": "காலாவதியானவை",
+ "Due soon days": "",
+ "Add overdue/expired products": "",
+ "Products with tare weight enabled are currently not supported for transfer": "",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "",
+ "This is the internal field name, e. g. for the API": "",
+ "This is used to display the field on the frontend": "",
+ "Multiple Userfields will be ordered by that number on the input form": "",
+ "Sort number": "",
+ "Download file": "கோப்பினை பதிவிறக்கு",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "செயலிழக்கசெய்யப்பட்டுள்ளது",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "செயலிழக்கசெய்யப்பட்டதினை காட்டு",
+ "Never show on stock overview": "",
+ "None": "ஏதுமில்லை",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "மீளமை",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "நெடுவரிசைகளை காட்டு/மறை",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "கடைசி விலை (அலகு)",
+ "Last price (Total)": "கடைசி விலை (மொத்தம்)",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "அட்டவணை",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "எந்த-வேலையும்-இல்லாதவர்",
+ "who-least-did-first": "யார்-முதலில்-குறைந்தது-செய்தார்",
+ "random": "ஏதோவொன்று",
+ "in-alphabetical-order": "அகரவரிசைப்படி",
+ "timeago_locale": "en",
+ "timeago_nan": "NaN years ago",
+ "moment_locale": "ta",
+ "datatables_localization": "{\"sEmptyTable\":\"அட்டவணையில் தரவு கிடைக்கவில்லை\",\"sInfo\":\"உள்ளீடுகளை் _START_ முதல _END_ உள்ள _TOTAL_ காட்டும்\",\"sInfoEmpty\":\"0 உள்ளீடுகளை 0 0 காட்டும்\",\"sInfoFiltered\":\"(_MAX_ மொத்த உள்ளீடுகளை இருந்து வடிகட்டி)\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"_MENU_ காண்பி\",\"sLoadingRecords\":\"ஏற்றுகிறது ...\",\"sProcessing\":\"செயலாக்க ...\",\"sSearch\":\"தேடல்:\",\"sZeroRecords\":\"பொருத்தமான பதிவுகள் இல்லை\",\"oPaginate\":{\"sFirst\":\"முதல்\",\"sLast\":\"இறுதி\",\"sNext\":\"அடுத்து\",\"sPrevious\":\"முந்தைய\"},\"oAria\":{\"sSortAscending\":\": நிரலை ஏறுவரிசையில் வரிசைப்படுத்த செயல்படுத்த\",\"sSortDescending\":\": நிரலை இறங்கு வரிசைப்படுத்த செயல்படுத்த\"}}",
+ "summernote_locale": "ta-IN",
+ "fullcalendar_locale": "x",
+ "bootstrap-select_locale": "x",
+ "purchase": "வாங்கு",
+ "transfer_from": "பரிமாற்றம்_from",
+ "transfer_to": "பரிமாற்றம்_to",
+ "consume": "உட்கொள்",
+ "inventory-correction": "இருப்புசாமான்-திருத்தம்",
+ "product-opened": "பொருள்-திறக்கப்பட்டது",
+ "stock-edit-old": "கையிருப்பு-தொகு-பழையது",
+ "stock-edit-new": "கையிருப்பு-தொகு-புதியது",
+ "self-production": "சுய-தயாரிப்பு",
+ "manually": "கைமுறையாக",
+ "dynamic-regular": "டைனமிக்-வழக்கம்",
+ "daily": "தினந்தோறும்",
+ "weekly": "வாரந்தோறும்",
+ "monthly": "மாதந்தோறும்",
+ "yearly": "ஆண்டுதோறும்",
+ "text-single-line": "ஒரு-வரி-உரை",
+ "text-multi-line": "பல்வரி-உரை",
+ "number-integral": "எண்-முழு",
+ "number-decimal": "எண்-decimal",
+ "date": "தேதி",
+ "datetime": "தேதி நேரம்",
+ "checkbox": "தேர்வுப்பெட்டி",
+ "preset-list": "preset-பட்டியல்",
+ "preset-checklist": "preset-checklist",
+ "link": "இணைப்பு",
+ "link-with-title": "",
+ "file": "கோப்பு",
+ "image": "படம்",
+ "ADMIN": "நிருவாகி",
+ "USERS_CREATE": "பயனர்களை_உருவாக்கு",
+ "USERS_EDIT": "பயனர்களை_தொகு",
+ "USERS_READ": "பயனர்களை_பார்",
+ "USERS_EDIT_SELF": "பயனர்கள்_தொகு_சுயமாக",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "BATTERIES_UNDO_CHARGE_CYCLE",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "BATTERIES_TRACK_CHARGE_CYCLE",
+ "CHORE_TRACK_EXECUTION": "பணி_TRACK_EXECUTION",
+ "CHORE_UNDO_EXECUTION": "பணி_UNDO_EXECUTION",
+ "MASTER_DATA_EDIT": "பிரதான_தரவுகள்_தொகு",
+ "TASKS_UNDO_EXECUTION": "வேலைகள்_UNDO_EXECUTION",
+ "TASKS_MARK_COMPLETED": "வேலைகள்_முடித்ததாக_குறி",
+ "STOCK_EDIT": "கையிருப்பு_தொகு",
+ "STOCK_TRANSFER": "கையிருப்பு_பரிமாற்றம்",
+ "STOCK_INVENTORY": "இருப்பு_கையிருப்பு",
+ "STOCK_CONSUME": "இருப்பு_உண்",
+ "STOCK_OPEN": "இருப்பு_திற",
+ "STOCK_PURCHASE": "இருப்பு_வாங்கியவை",
+ "SHOPPINGLIST_ITEMS_ADD": "வாங்கவேண்டியவை_பொருட்கள்_சேர்",
+ "SHOPPINGLIST_ITEMS_DELETE": "வாங்கவேண்டியவை_பொருட்கள்_நீக்கு",
+ "USERS": "பயனர்கள்",
+ "STOCK": "கையிருப்பு",
+ "SHOPPINGLIST": "வாங்கவேண்டியவை",
+ "CHORES": "பணிகள்",
+ "BATTERIES": "மின்கலங்கள்",
+ "TASKS": "பணிகள்",
+ "RECIPES": "சமையல் குறிப்புகள்",
+ "EQUIPMENT": "உபகரணங்கள்",
+ "CALENDAR": "நாட்காட்டி",
+ "RECIPES_MEALPLAN": "சமையல்குறிப்புகள்_உணவுத்திட்டம்",
+ "cs": "cs",
+ "da": "da",
+ "de": "de",
+ "el_GR": "el_GR",
+ "en": "en",
+ "en_GB": "en_GB",
+ "es": "es",
+ "fr": "fr",
+ "hu": "hu",
+ "it": "it",
+ "ja": "ja",
+ "ko_KR": "ko_KR",
+ "nl": "nl",
+ "no": "no",
+ "pl": "pl",
+ "pt_BR": "pt_BR",
+ "pt_PT": "pt_PT",
+ "ru": "ru",
+ "sk_SK": "sk_SK",
+ "sv_SE": "sv_SE",
+ "tr": "tr",
+ "zh_TW": "zh_TW",
+ "zh_CN": "zh_CN",
+ "he_IL": "he_IL",
+ "ta": "",
+ "fi": "",
+ "Cookies": "குக்கீகள்",
+ "Chocolate": "சாக்லேட்",
+ "Pantry": "சாமான் அறை",
+ "Candy cupboard": "மிட்டாய் அலமாரி",
+ "Tinned food cupboard": "தகர குவளை உணவு அலமாரி",
+ "Fridge": "ஃப்ரிட்ஜ்",
+ "Piece | Pieces": "துண்டு | துண்டுகள்",
+ "Pack | Packs": "தொகுப்பு | தொகுப்புகள்",
+ "Glass | Glasses": "கண்ணாடி | கண்ணாடிகள்",
+ "Tin | Tins": "தகரம் | தகரங்கள்",
+ "Can | Cans": "தகர குவளை | தகர குவளைகள்",
+ "Bunch | Bunches": "கொத்து | கொத்துக்கள்",
+ "Gummy bears": "கம்மி கரடிகள்",
+ "Crisps": "உருளைக்கிழங்கு சில்லுகள்",
+ "Eggs": "முட்டைகள்",
+ "Noodles": "நூடுல்சு",
+ "Pickles": "ஊறுகாய்",
+ "Gulash soup": "குலாஷ் சூப்",
+ "Yogurt": "தயிர்",
+ "Cheese": "பாலாடைக்கட்டி",
+ "Cold cuts": "குளிர் வெட்டுக்கள்",
+ "Paprika": "மிளகு",
+ "Cucumber": "வெள்ளரிக்காய்",
+ "Radish": "முள்ளங்கி",
+ "Tomato": "தக்காளி",
+ "Changed towels in the bathroom": "குளியலறையில் உள்ள துண்டுகள் மாற்றப்பட்டன",
+ "Cleaned the kitchen floor": "சமையலறையின் தரை சுத்தம் செய்யப்பட்டது",
+ "Warranty ends": "உத்தரவாதம் முடிவடைகிறது",
+ "TV remote control": "டிவி ரிமோட் கண்ட்ரோல்",
+ "Alarm clock": "எழுப்பு மணி",
+ "Heat remote control": "சூடேற்றும் சாதன ரிமோட் கண்ட்ரோல்",
+ "Lawn mowed in the garden": "தோட்டத்தில் புல்வெளி வெட்டப்பட்டது",
+ "Some good snacks": "சில நல்ல தின்பண்டங்கள்",
+ "Pizza dough": "பீட்சா மாவு",
+ "Sieved tomatoes": "சல்லடை தக்காளி",
+ "Salami": "சலாமி",
+ "Toast": "வாட்டு",
+ "Minced meat": "வெட்டப்பட்ட இறைச்சி",
+ "Pizza": "பீட்சா",
+ "Spaghetti bolognese": "மாச்சேவை பொலொக்னியேசெ",
+ "Sandwiches": "சாண்ட்விச்சுகள்",
+ "English": "ஆங்கிலம்",
+ "German": "செருமானிய மொழி",
+ "Italian": "இத்தாலிய மொழி",
+ "This is the note content of the recipe ingredient": "இது செய்முறை மூலப்பொருளின் குறிப்பு உள்ளடக்கம் ஆகும்",
+ "Demo User": "செயல் விளக்க பயனர்",
+ "Gram | Grams": "கிராம் | கிராம்கள்",
+ "Flour": "மாவு",
+ "Pancakes": "பான்கேக்குகள்",
+ "Sugar": "சர்க்கரை",
+ "Home": "வீடு",
+ "Life": "வாழ்க்கை",
+ "Projects": "திட்டங்கள்",
+ "Repair the garage door": "கேரேஜ் கதவை சரிசெய்யவும்",
+ "Fork and improve grocy": "குரோசியை மேம்படுத்தவும்",
+ "Find a solution for what to do when I forget the door keys": "கதவு விசைகளை நான் மறக்கும்போது என்ன செய்வது என்பதற்கான தீர்வைக் கண்டறியவும்",
+ "Sweets": "இனிப்புகள்",
+ "Bakery products": "பேக்கரி பொருட்கள்",
+ "Tinned food": "தகர குவளை உணவு",
+ "Butchery products": "கசாப்பு கடை பொருட்கள்",
+ "Vegetables/Fruits": "காய்கறிகள் / பழங்கள்",
+ "Refrigerated products": "குளிரூட்டப்பட்ட பொருட்கள்",
+ "Coffee machine": "கொட்டைவடிநீர் இயந்திரம்",
+ "Dishwasher": "பாத்திரங்கழுவி",
+ "Liter": "லிட்டர்",
+ "Liters": "லிட்டர்கள்",
+ "Bottle": "குப்பி",
+ "Bottles": "குப்பிகள்",
+ "Milk": "பால்",
+ "Chocolate sauce": "சாக்லேட் குழம்பு",
+ "Milliliters": "மில்லிலிட்டர்கள்",
+ "Milliliter": "மில்லிலிட்டர்",
+ "Bottom": "அடிப்பறம்",
+ "Topping": "டாப்பிங்கு",
+ "French": "பிரஞ்சு",
+ "Turkish": "துருக்கியம்",
+ "Spanish": "எசுப்பானியம்",
+ "Russian": "உருசியம்",
+ "The thing which happens on the 5th of every month": "ஒவ்வொரு மாதமும் 5 ஆம் தேதி நடக்கும் விடயம்",
+ "The thing which happens daily": "தினசரி நடக்கும் விடயம்",
+ "The thing which happens on Mondays and Wednesdays": "திங்கள் மற்றும் புதன்கிழமைகளில் நடக்கும் விடயம்",
+ "Swedish": "சுவேக மொழி",
+ "Polish": "போலிய மொழி",
+ "Milk Chocolate": "பால் சாக்லேட்",
+ "Dark Chocolate": "டார்க் சாக்லேட்",
+ "Slice | Slices": "துண்டு | துண்டுகள்",
+ "Example userentity": "எடுத்துக்காட்டு பயனர் உருபொருள்",
+ "This is an example user entity...": "இது ஒரு எடுத்துக்காட்டு பயனர் உருபொருள் ஆகும் ",
+ "Custom field": "தனிப்பயன் புலம்",
+ "Example field value...": "எடுத்துக்காட்டு புல மதிப்பு ...",
+ "Waffle rolls": "வாப்பிள் சுருள்கள்",
+ "Danish": "டேனிய மொழி",
+ "Dutch": "டச்சு மொழி",
+ "Norwegian": "நார்வீஜிய மொழி",
+ "Demo": "பார்வைக்கு",
+ "Stable version": "நிலையான பதிப்பு",
+ "Preview version": "முன்னோட்ட பதிப்பு",
+ "current release": "தற்போதைய பதிப்பு",
+ "not yet released": "இன்னும் வெளியிடப்படவில்லை",
+ "Portuguese (Brazil)": "போர்த்துக்கேய மொழி (பிரேசில்)",
+ "This is a note": "இது ஒரு குறிப்பு",
+ "Freezer": "உறைவிப்பான்",
+ "Hungarian": "ஹங்கேரிய மொழி",
+ "Slovak": "சுலோவாக்கிய மொழி",
+ "Czech": "செக் மொழி",
+ "Portuguese (Portugal)": "போர்த்துக்கேய மொழி (போர்த்துகல்)",
+ "DemoSupermarket1": "சூப்பர்மார்கெட்1",
+ "DemoSupermarket2": "சூப்பர்மார்கெட்2",
+ "Japanese": "சப்பானிய மொழி",
+ "Chinese (Taiwan)": "சீனம் (தைவான்)",
+ "Greek": "கிரேக்கம்",
+ "Korean": "கொரிய மொழி",
+ "Chinese (China)": "சீனம் (சீனா)",
+ "Hebrew (Israel)": "ஹீபுரு (இசுரேல்)",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/tr.json b/locale/tr.json
new file mode 100644
index 00000000..1e53b19d
--- /dev/null
+++ b/locale/tr.json
@@ -0,0 +1,547 @@
+{
+ "Stock overview": "Stoklara genel bakış",
+ "{count} product expires | {count} products expiring": " | ",
+ "within the next day | within the next {count} days": " | ",
+ "{count} product is already expired | {count} products are already expired": " | ",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": " | ",
+ "Product": "Ürün",
+ "{count} Product | {count} Products": " | ",
+ "Amount": "Miktar",
+ "Next best before date": "Son kullanma tarihi",
+ "Logout": "Çıkış yap",
+ "Chores overview": "Ev işlerine genel bakış",
+ "Batteries overview": "Pillere genel bakış",
+ "Purchase": "Satın al",
+ "Consume": "Tüket",
+ "Inventory": "Envanter",
+ "Shopping list": "Alışveriş listesi",
+ "Chore tracking": "Ev işleri takibi",
+ "Battery tracking": "Pil takibi",
+ "Locations": "Lokasyonlar",
+ "Quantity units": "Miktar birimleri",
+ "Chores": "Ev işleri",
+ "Batteries": "Piller",
+ "Chore": "Ev işi",
+ "Next estimated tracking": "Sonraki tahmini takip",
+ "Last tracked": "Son takip",
+ "Battery": "Pil",
+ "Last charged": "Son şarj ediş",
+ "Next planned charge cycle": "Sonraki planlanan şarj döngüsü",
+ "Best before": "Son kullanma tarihi",
+ "OK": "Tamam",
+ "Product overview": "Ürün genel bakışı",
+ "Stock quantity unit": "Stok miktar birimi",
+ "Stock amount": "Stok miktarı",
+ "Last purchased": "Son satın alış",
+ "Last used": "Son kullanış",
+ "Spoiled": "Bozulmuş",
+ "Barcode lookup is disabled": "Barkod inceleme özelliği devre dışı bırakıldı",
+ "will be added to the list of barcodes for the selected product on submit": "kayıt esnasında seçilen ürün için barkod listesine eklenecek",
+ "New amount": "Yeni miktar",
+ "Note": "Not",
+ "Tracked time": "Takip edilen süre",
+ "Chore overview": "Ev işlerine genel bakış",
+ "Tracked count": "Takip sayısı",
+ "Battery overview": "Pillere genel bakış",
+ "Charge cycles count": "Şarj döngüsü sayısı",
+ "Create shopping list item": "Alışveriş listesine bir madde ekle",
+ "Edit shopping list item": "Alışveriş listesi maddesini düzenle",
+ "Save": "Kaydet",
+ "Add": "Ekle",
+ "Name": "İsim",
+ "Location": "Lokasyon",
+ "Min. stock amount": "Min. stok miktarı",
+ "QU purchase": "QU satın al",
+ "QU stock": "QU stok",
+ "QU factor": "QU faktör",
+ "Description": "Açıklama",
+ "Create product": "Ürün oluştur",
+ "Barcode(s)": "Barkod(lar)",
+ "Minimum stock amount": "Minimum stok miktarı",
+ "Default best before days": "Varsayılan son kullanım tarihi",
+ "Quantity unit purchase": "Miktar birim alımı",
+ "Quantity unit stock": "Miktar birim stoğu",
+ "Factor purchase to stock quantity unit": "Alımı stok miktar birimle çarp",
+ "Create location": "Lokasyon oluştur",
+ "Create quantity unit": "Miktar birimi oluştur",
+ "Period type": "Dönem türü",
+ "Period days": "Dönem günleri",
+ "Create chore": "Ev işi oluştur",
+ "Used in": "içinde kullanılıyor",
+ "Create battery": "Pil oluştur",
+ "Edit battery": "Pil düzenle",
+ "Edit chore": "Ev işi düzenle",
+ "Edit quantity unit": "Miktar birimi düzenle",
+ "Edit product": "Ürünü düzenle",
+ "Edit location": "Lokasyonu düzenle",
+ "Record data": "Veri kaydet",
+ "Manage master data": "Ana veriyi yönet",
+ "This will apply to added products": "Bu eklenen ürünlere uygulanacak",
+ "never": "asla",
+ "Add products that are below defined min. stock amount": "Tanımlanan min. stok miktarının altındaki ürünleri ekle",
+ "For purchases this amount of days will be added to today for the best before date suggestion": "Satın alımlar için bu kadar gün son kullanım tarihi önerisi üzerine bugün eklenecek",
+ "This means 1 {string0} purchased will be converted into {string0} {string0} in stock": "Bu 1 {string0} satın alımının {string0} {string0} stoklarına dönüştürüleceğini ifade ediyor",
+ "Login": "Giriş yap",
+ "Username": "Kullanıcı adı",
+ "Password": "Parola",
+ "Invalid credentials, please try again": "Yanlış giriş bilgisi, lütfen tekrar deneyin",
+ "Are you sure to delete battery \"{string0}\"?": "Pil \"{string0}\"'i silmek istediğine emin misin?",
+ "Yes": "Evet",
+ "No": "Hayır",
+ "Are you sure to delete chore \"{string0}\"?": "Ev işi \"{string0}\"'i silmek istediğine emin misin?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "\"{string0}\" bir ürünle eşleşmiyor, nasıl ilerlemek istersin?",
+ "Create or assign product": "Oluştur veya bir ürüne ata",
+ "Cancel": "İptal et",
+ "Add as new product": "Yeni ürün olarak ekle",
+ "Add as barcode to existing product": "Var olan ürüne barkod olarak ekle",
+ "Add as new product and prefill barcode": "Yeni ürün olarak ekle ve barkodu otomatik doldur",
+ "Are you sure to delete quantity unit \"{string0}\"?": "Miktar birimi \"{string0}\"'i silmek istediğine emin misin?",
+ "Are you sure to delete product \"{string0}\"?": "Ürün \"{string0}\"'i silmek istediğine emin misin?",
+ "Are you sure to delete location \"{string0}\"?": "Lokasyon \"{string0}\"'i silmek istediğine emin misin?",
+ "Manage API keys": "API anahtarlarını yönet",
+ "REST API & data model documentation": "REST API & veri modeli dökümantasyonu",
+ "API keys": "API anahtarları",
+ "Create new API key": "Yeni API anahtarı oluştur",
+ "API key": "API anahtarı",
+ "Expires": "Süresi doluyor",
+ "Created": "Oluşturuldu",
+ "This product is not in stock": "Bu ürün stoklarda yok",
+ "This means {string0} will be added to stock": "Bu {string0}'in stoklara ekleneceğini ifade ediyor",
+ "This means {string0} will be removed from stock": "Bu {string0}'in stoklardan silineceğini ifade ediyor",
+ "This means it is estimated that a new execution of this chore is tracked {string0} days after the last was tracked": "Bu ev işinin sonraki takibinin son takipten {string0} gün sonra olacağının tahmin edildiğini ifade ediyor",
+ "Removed {string0} {string0} of {string0} from stock": "{string0}'ün {string0} {string0}'si stoklardan silindi",
+ "About grocy": "grocy hakkında",
+ "Close": "Kapat",
+ "Released on": "Yayınlanma tarihi",
+ "Consume {string0} {string0} of {string0}": "{string0}'ün {string0}/{string0}'sini tüket",
+ "Added {string0} {string0} of {string0} to stock": "{string0}'in {string0}/{string0}'ü stoklara eklendi",
+ "Stock amount of {string0} is now {string0} {string0}": "{string0}'in stok miktarı şimdi {string0} {string0}",
+ "Tracked execution of chore {string0} on {string0}": "{string0}'in {string0} üzerindeki uygulaması takip edildi",
+ "Tracked charge cycle of battery {string0} on {string0}": "Pil {string0}'in {string0} üzerindeki şarj döngüsü takip edildi",
+ "Consume all {string0} which are currently in stock": "{string0}'in bütün stoklarını tüket",
+ "All": "Hepsi",
+ "Track charge cycle of battery {string0}": "Pil {string0}'in şarj döngüsünü takip et",
+ "Track execution of chore {string0}": "Ev işi {string0}'in uygulamasını takip et",
+ "Filter by location": "Lokasyona göre filtrele",
+ "Search": "Ara",
+ "Not logged in": "Giriş yapılmadı",
+ "You have to select a product": "Ürün seçmeniz lazım",
+ "You have to select a chore": "Ev işi seçmeniz lazım",
+ "You have to select a battery": "Pil seçmeniz lazım",
+ "A name is required": "Bir isim zorunlu",
+ "A location is required": "Bir lokasyon zorunlu",
+ "The amount cannot be lower than {string0}": "Miktar {string0}'den az olamaz",
+ "This cannot be negative": "Bu negatif olamaz",
+ "A quantity unit is required": "Miktar birim zorunlu",
+ "A period type is required": "Dönem tipi zorunlu",
+ "A best before date is required": "Son kullanma tarihi gerekiyor",
+ "Settings": "Ayarlar",
+ "This can only be before now": "Bu sadece şu andan önce olabilir",
+ "Calendar": "Takvim",
+ "Recipes": "Tarifler",
+ "Edit recipe": "Tarifi düzenle",
+ "New recipe": "Yeni tarif",
+ "Ingredients list": "Malzeme listesi",
+ "Add recipe ingredient": "Tarife malzeme ekle",
+ "Edit recipe ingredient": "Tarif malzemesini düzenle",
+ "Are you sure to delete recipe \"{string0}\"?": "Tarif \"{string0}\"'i silmek istediğine emin misin?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "Tarif malzemesi \"{string0}\"'i silmek istediğine emin misin?",
+ "Are you sure to empty shopping list \"{string0}\"?": "",
+ "Clear list": "Listeyi temizle",
+ "Requirements fulfilled": "Gereklilikler sağlandı",
+ "Put missing products on shopping list": "Eksik malzemeleri alışveriş listesine ekle",
+ "Enough in stock": "Stokta yeteri kadar var",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": " | ",
+ "Expand to fullscreen": "Tam ekran yap",
+ "Ingredients": "Malzemeler",
+ "Preparation": "Hazırlanışı",
+ "Recipe": "Tarif",
+ "Not enough in stock, {string0} missing, {string0} already on shopping list": "Stokta yeterince {string0} yok, {string0} alış veriş listesine eklenmiş",
+ "Show notes": "Notları göster",
+ "Put missing amount on shopping list": "Eksik miktar kadar alışveriş listesine ekle",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "Tarif \"{string0}\"'deki bütün eksik malzemeleri alışveriş listesine eklemek istediğinize emin misiniz?",
+ "Added for recipe {string0}": "Tarif {string0} için eklendi",
+ "Manage users": "Kullanıcıları yönet",
+ "User": "Kullanıcı",
+ "Users": "Kullanıcılar",
+ "Are you sure to delete user \"{string0}\"?": "Kullanıcı \"{string0}\"'i silmek istediğine emin misin?",
+ "Create user": "Kullanıcı oluştur",
+ "Edit user": "Kullanıcıyı düzenle",
+ "First name": "İsim",
+ "Last name": "Soyisim",
+ "A username is required": "Bir kullanıcı adı zorunlu",
+ "Confirm password": "Parolayı doğrulayın",
+ "Passwords do not match": "Parolalar uyuşmuyor",
+ "Change password": "Parolayı değiştir",
+ "Done by": "Tamamlanma tarihi",
+ "Last done by": "Son tamamlanma tarih",
+ "Unknown": "Bilinmeyen",
+ "Filter by chore": "Ev işine göre filtrele",
+ "Chores journal": "Ev işi günlüğü",
+ "0 means suggestions for the next charge cycle are disabled": "0 sonraki şarj döngüsünün devre dışı bırakıldığını ifade eder",
+ "Charge cycle interval (days)": "Şart döngüsü aralığı (gün)",
+ "Last price": "Son fiyat",
+ "Price history": "Fiyat tarihçesi",
+ "No price history available": "Fiyat tarihçesi yok",
+ "Price": "Fiyat",
+ "in {string0} per purchase quantity unit": "{string0} için her miktar birimini satın al",
+ "The price cannot be lower than {string0}": "Fiyat {string0}'den az olamaz",
+ "Unit": "Birim",
+ "{count} Unit | {count} Units": " | ",
+ "{count} chore is due to be done | {count} chores are due to be done": " | ",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": " | ",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": " | ",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": " | ",
+ "in singular form": "tekil formda",
+ "Never expires": "Son kullanma tarihi asla dolmuyor",
+ "This cannot be lower than {string0}": "Bu {string0}'den az olamaz",
+ "-1 means that this product never expires": "-1 ürünün son kullanma tarihinin asla dolmadığını ifade eder",
+ "Quantity unit": "Miktar birimi",
+ "Only check if a single unit is in stock (a different quantity can then be used above)": "Sadece tek ürün stoklardaysa işaretleyin (farklı miktar daha sonra yukarıdan kullanılabilir)",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?": "\"{string0}\" için gereken tüm malzemeleri tüketmek istediğine emin misin (\"sadece tek ürün varsa işaretle\" ile işaretlenmiş ürünler ihmal edilecek)?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "Tarif \"{string0}\"'in tüm malzemeleri stoklardan silindi",
+ "Consume all ingredients needed by this recipe": "Bu tarif için gereken tüm malzemeleri tüket",
+ "Click to show technical details": "Teknik detayları görmek için tıkla",
+ "Error while saving, probably this item already exists": "Kaydederken problem oldu, bu ürün muhtemelen zaten kayıtlı",
+ "Error details": "Hata detayları",
+ "Tasks": "Görevler",
+ "Show done tasks": "Tamamlanmış görevleri göster",
+ "Task": "Görev",
+ "Due": "Tamamlanma tarihi",
+ "Assigned to": "Atanan kişi",
+ "Mark task \"{string0}\" as completed": "Görev \"{string0}\"'i tamamlandı olarak işaretle",
+ "Uncategorized": "Kategorize edilmemiş",
+ "Task categories": "Görev kategorileri",
+ "Create task": "Görev oluştur",
+ "A due date is required": "Bir tamamlanma tarihi zorunlu",
+ "Category": "Kategori",
+ "Edit task": "Görevi düzenle",
+ "Are you sure to delete task \"{string0}\"?": "Görev \"{string0}\"'i silmek istediğine emin misin?",
+ "{count} task is due to be done | {count} tasks are due to be done": " | ",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": " | ",
+ "Edit task category": "Görev kategorisini düzenle",
+ "Create task category": "Görev kategorisi oluştur",
+ "Product groups": "Ürün grupları",
+ "Ungrouped": "Grupsuz",
+ "Create product group": "Ürün grubu oluştur",
+ "Edit product group": "Ürün grubunu düzenle",
+ "Product group": "Ürün grubu",
+ "Are you sure to delete product group \"{string0}\"?": "Ürün grubu \"{string0}\"'i silmek istediğine emin misin?",
+ "Stay logged in permanently": "Sürekli olarak girişli kal",
+ "When not set, you will get logged out at latest after 30 days": "Seçilmediği takdirde, en az 30 gün sonra otomatik olarak çıkış yapacaksınız",
+ "Filter by status": "Duruma göre filtrele",
+ "Below min. stock amount": "Min. stok miktarının altında",
+ "Expiring soon": "Son kullanma tarihi yakında doluyor",
+ "Already expired": "Son kullanma tarihi dolmuş",
+ "Due soon": "Tamamlanma süresi yakında",
+ "Overdue": "Tamamlanma süresi geçmiş",
+ "View settings": "Ayarlara bak",
+ "Auto reload on external changes": "Dış değişikliklerde otomatik olarak yenile",
+ "Enable night mode": "Gece modunu aktif et",
+ "Auto enable in time range": "Zaman aralığında otomatik olarak aktif et",
+ "From": "Tarafından",
+ "in format": "biçiminde",
+ "To": "İçin",
+ "Time range goes over midnight": "Zaman aralığı gece yarısını geçiyor",
+ "Product picture": "Ürün fotoğrafı",
+ "No file selected": "Hiçbir dosya seçilmedi",
+ "If you don't select a file, the current picture will not be altered": "Eğer herhangi bir dosya seçmezseniz, şimdiki fotoğraf değişmeyecek",
+ "Delete": "Sil",
+ "The current picture will be deleted when you save the product": "Ürünü kaydettiğiniz zaman şimdiki fotoğraf silinecek",
+ "Select file": "Dosya seç",
+ "Image of product {string0}": "{string0} ürününe ait fotoğraf",
+ "This product cannot be deleted because it is in stock, please remove the stock amount first.": "Bu ürün silinemiyor çünkü stoklarda var, lütfen öncelikle stok miktarını silin",
+ "Delete not possible": "Silme işlemi mümkün değil",
+ "Equipment": "Ekipman",
+ "Instruction manual": "Kullanım kılavuzu",
+ "The selected equipment has no instruction manual": "Seçili ekipmanın kullanım kılavuzu yok",
+ "Notes": "Notlar",
+ "Edit equipment": "Ekipmanı düzenle",
+ "Create equipment": "Ekipman oluştur",
+ "If you don't select a file, the current instruction manual will not be altered": "Eğer herhangi bir dosya seçmezseniz, şimdiki kullanım kılavuzu değişmeyecek",
+ "No instruction manual available": "Herhangi bir kullanım kılavuzu yok",
+ "The current instruction manual will be deleted when you save the equipment": "Ekipmanı kaydettiğiniz zaman şimdiki kullanım kılavuzu silinecek",
+ "No picture available": "Görsel mevcut değil",
+ "Filter by product group": "Ürün grubuna göre filtrele",
+ "Presets for new products": "Yeni ürünler için ön tanımlar",
+ "Included recipes": "Dahil edilmiş tarifler",
+ "A recipe is required": "Bir tarif gerekiyor",
+ "Add included recipe": "Dahil edilmiş tarif ekle",
+ "Edit included recipe": "Dahil edilmiş tarifi düzenle",
+ "Group": "Grup",
+ "This will be used as a headline to group ingredients together": "Bu, malzemeleri beraber gruplamak için başlık olarak kullanılacak",
+ "Journal": "Günlük",
+ "Stock journal": "Stok günlüğü",
+ "Filter by product": "Ürüne göre filtrele",
+ "Booking time": "Rezervasyon zamanı",
+ "Booking type": "Rezervasyon türü",
+ "Undo booking": "Rezervasyonu geri al",
+ "Undone on": "Tarihinde tamamlanmamış",
+ "Batteries journal": "Pil günlüğü",
+ "Filter by battery": "Pile göre filtrele",
+ "Undo charge cycle": "Şart döngüsünü geri al",
+ "Undo chore execution": "Ev işi uygulamasını geri al",
+ "Chore execution successfully undone": "Ev işi başarıyla geri alındı",
+ "Undo": "Geri al",
+ "Booking successfully undone": "Rezervasyon başarıyla geri alındı",
+ "Charge cycle successfully undone": "Şarj döngüsü başarıyla geri alındı",
+ "This cannot be negative and must be an integral number": "Bu, negatif olamaz ve bir tam sayı olmak zorunda",
+ "Disable stock fulfillment checking for this ingredient": "Bu malzeme için stok yenilemeyi kapat",
+ "Add all list items to stock": "Bütün liste maddelerini stoğa ekle",
+ "Add {string0} {string0} of {string0} to stock": "{string0}'ün {string0}/{string0}'sini stoğa ekle",
+ "Adding shopping list item {string0} of {string0}": "Alışveriş listesi maddelerinin {string0}/{string0}'si ekleniyor",
+ "Use a specific stock item": "Spesifik bir stok maddesi kullan",
+ "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\"": "Bu listedeki ilk madde ön tanımlı olarak \"Süresi ilk dolan ilk, ondan sonra ilk giren ilk çıkar\" mantığıyla seçilecektir",
+ "Mark {string0} of {string0} as open": "",
+ "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)": "Ürün açık olarak işaretlendikten sonra, son kullanım tarihi bugün + belirtilen gün miktarı olarak güncellenecektir (0 değeri bunu kapatır)",
+ "Default best before days after opened": "Açıldıktan sonrası için ön tanımlı son kullanım tarihi",
+ "Marked {string0} {string0} of {string0} as opened": "{string0}'in {string0}/{string0}'ü açık olarak işaretlendi",
+ "Mark as opened": "Açıldı olarak işaretle",
+ "Expires on {string0}; Bought on {string0}": "{string0}'de son kullanım tarihi doluyor; {string0}'de satın alındı",
+ "Not opened": "Açılmadı",
+ "Opened": "Açıldı",
+ "{string0} opened": "{string0} açıldı",
+ "Product expires": "Ürünün son kullanma tarihi doluyor",
+ "Task due": "Görev süresi",
+ "Chore due": "Ev işi süresi",
+ "Battery charge cycle due": "Pil şarj döngüsü süresi",
+ "Show clock in header": "Saati başlıkta göster",
+ "Stock settings": "Stok ayarları",
+ "Shopping list to stock workflow": "Alışveriş listesinden stok akışına",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set": "Eğer ürünün \"ön tanımlı son kullanım tarihi\" ayarlanmamışsa, otomatik olarak rezervasyonu son fiyatı ve alışveriş listesindeki madde sayısını baz alarak yap",
+ "Skip": "Geç",
+ "Servings": "Porsiyon",
+ "Costs": "Maliyet",
+ "Based on the prices of the last purchase per product": "Satın alınan her ürünün son satın alış fiyatlarına göre",
+ "The ingredients listed here result in this amount of servings": "Burada listelenen malzemelerle bu kadar porsiyon çıkıyor",
+ "Do not check against the shopping list when adding missing items to it": "Eksik malzemeleri eklerken alışveriş listesine karşı kontrol etme",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "Varsayılan olarak alışveriş listesine eklenen miktar \"gereken miktar - stok miktarı - alışveriş listesi miktarı\" olarak hesaplanır. Bu aktif edildiği zaman sadece stok miktarına karşı kontrol yapılır ve alışveriş listesi kontrol edilmez.",
+ "Picture": "Resim",
+ "Uncheck ingredients to not put them on the shopping list": "Alışveriş listesine malzemeleri eklememek için işareti kaldırın",
+ "This is for statistical purposes only": "Bu sadece istatistiki amaçlar için",
+ "You have to select a recipe": "Bir tarif seçmelisiniz",
+ "Key type": "Anahtar türü",
+ "Share/Integrate calendar (iCal)": "Takvime ekle/paylaş (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "Takvimle iCal formatında paylaşmak veya takvime entegre etmek için aşağıdaki (herkese açık) URL'yi kullanın",
+ "Allow partial units in stock": "Stoklarda kısmi birimlere izin ver",
+ "Enable tare weight handling": "Dara ağırlığı yönetimini aktif et",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "Örnek: Kavanozlardaki unu satın alım/harcama/envanter işlemlerinde kavanozun tamamını tartıyorsunuz, sonrasında kaydedilecek olan miktar otomatik olarak stoklarda olanlar ve aşağıda tanımlanmış olan dara ağırlığı üzerinden hesaplanıyor",
+ "Tare weight": "Dara ağırlığı",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "Dara ağırlığı kontrolü aktif edildi - lütfen tüm konteyneri tartın, gönderilecek olan veri otomatik olarak hesaplanacaktır",
+ "You have to select a location": "Bir lokasyon seçmeniz gerekiyor",
+ "List": "Liste",
+ "Gallery": "Galeri",
+ "The current picture will be deleted when you save the recipe": "Tarifi kaydettiğiniz zaman şimdiki fotoğraf silinecek",
+ "Show product details": "Ürün detaylarını göster",
+ "Stock journal for this product": "Bu ürün için stok günlüğü",
+ "Show chore details": "Düzenli iş detaylarını göster",
+ "Journal for this chore": "Bu düzenli iş için günlük",
+ "Show battery details": "Pil detaylarını göster",
+ "Journal for this battery": "Bu pil için günlük",
+ "System info": "Sistem bilgisi",
+ "Changelog": "Değişiklikler",
+ "will be multiplied a factor of {string0} to get {string0}": "{string0}'yi bulmak için {string0}'in faktörüyle çarpılacak",
+ "The given date is earlier than today, are you sure?": "Yazılan tarih bugünden daha önce, emin misiniz?",
+ "Product count": "Ürün sayısı",
+ "Type a new product name or barcode and hit TAB to start a workflow": "İş akışı başlatmak için yeni bir ürün ismi veya barkodu yazın ve TAB tuşuna basın",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "Varsayılan olarak bu ürünü tarif malzemesi olarak eklediğinizde bu ayar kullanılacak",
+ "Add item": "",
+ "Selected shopping list": "",
+ "New shopping list": "",
+ "Delete shopping list": "",
+ "Chores settings": "",
+ "Batteries settings": "",
+ "Tasks settings": "",
+ "Create shopping list": "",
+ "Are you sure to delete shopping list \"{string0}\"?": "",
+ "Average shelf life": "",
+ "Spoil rate": "",
+ "Show more": "",
+ "Show less": "",
+ "The amount must be between {string0} and {string0}": "",
+ "Day of month": "",
+ "Monday": "",
+ "Tuesday": "",
+ "Wednesday": "",
+ "Thursday": "",
+ "Friday": "",
+ "Saturday": "",
+ "Sunday": "",
+ "Configure userfields": "",
+ "Userfields": "",
+ "Filter by entity": "",
+ "Entity": "",
+ "Caption": "",
+ "Type": "",
+ "Create userfield": "",
+ "A entity is required": "",
+ "A caption is required": "",
+ "A type is required": "",
+ "Show as column in tables": "",
+ "This is required and can only contain letters and numbers": "",
+ "Edit userfield": "",
+ "Plural forms": "",
+ "One plural form per line, the current language requires": "",
+ "Plural count": "",
+ "Plural rule": "",
+ "in plural form": "çoğul formda",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": " | ",
+ "Consume {string0} of {string0}": "",
+ "no-assignment": "",
+ "who-least-did-first": "",
+ "random": "",
+ "in-alphabetical-order": "",
+ "timeago_locale": "tr",
+ "timeago_nan": "NaN yıl önce",
+ "moment_locale": "tr",
+ "datatables_localization": "{\"sEmptyTable\":\"Tablo içerisinde uygun veri yok\",\"sInfo\":\"_TOTAL_ girdiden _START_ - _END_ aralığı gösteriliyor\",\"sInfoEmpty\":\"0 girdiden 0 - 0 aralığı gösteriliyor\",\"sInfoFiltered\":\"(_MAX_ toplam girdiden filtrelendi)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"_MENU_ girdilerini göster\",\"sLoadingRecords\":\"Yükleniyor...\",\"sProcessing\":\"İşleniyor...\",\"sSearch\":\"Ara:\",\"sZeroRecords\":\"Eşleşen kayıt bulunamadı\",\"oPaginate\":{\"sFirst\":\"İlk\",\"sLast\":\"Son\",\"sNext\":\"Sonraki\",\"sPrevious\":\"Önceki\"},\"oAria\":{\"sSortAscending\":\": sütunu artan sıraya göre sıralamak için aktif edin\",\"sSortDescending\":\": sütunu azalan sıraya göre sıralamak için aktif edin\"}}",
+ "summernote_locale": "tr-TR",
+ "fullcalendar_locale": "tr",
+ "bootstrap-select_locale": "tr_TR",
+ "purchase": "Satın al",
+ "consume": "Tüket",
+ "inventory-correction": "Envanter doğrulama",
+ "product-opened": "Ürün açıldı",
+ "manually": "Manuel",
+ "dynamic-regular": "Dinamik düzenli",
+ "daily": "",
+ "weekly": "",
+ "monthly": "",
+ "text-single-line": "",
+ "text-multi-line": "",
+ "number-integral": "",
+ "number-decimal": "",
+ "date": "",
+ "datetime": "",
+ "checkbox": "",
+ "Cookies": "Kurabiyeler",
+ "Chocolate": "Çikolata",
+ "Pantry": "Kiler",
+ "Candy cupboard": "Şeker dolabı",
+ "Tinned food cupboard": "Konserve dolabı",
+ "Fridge": "Buzdolabı",
+ "Piece | Pieces": " | ",
+ "Pack | Packs": " | ",
+ "Glass | Glasses": " | ",
+ "Tin | Tins": " | ",
+ "Can | Cans": " | ",
+ "Bunch | Bunches": " | ",
+ "Gummy bears": "Jelibon ayı",
+ "Crisps": "Cips",
+ "Eggs": "Yumurta",
+ "Noodles": "Noodle",
+ "Pickles": "Turşu",
+ "Gulash soup": "Gulaş çorbası",
+ "Yogurt": "Yoğurt",
+ "Cheese": "Peynir",
+ "Cold cuts": "Söğüş",
+ "Paprika": "Kırmızı biber",
+ "Cucumber": "Salatalık",
+ "Radish": "Turp",
+ "Tomato": "Domates",
+ "Changed towels in the bathroom": "Banyoda değişen havlular",
+ "Cleaned the kitchen floor": "Temizlenen mutfak zeminleri",
+ "Warranty ends": "Garantisi bitiyor",
+ "TV remote control": "TV uzaktan kumandası",
+ "Alarm clock": "Alarm saati",
+ "Heat remote control": "Uzaktan ısı kontrolü",
+ "Lawn mowed in the garden": "Biçilen bahçeler",
+ "Some good snacks": "Bazı iyi atıştırmalıklar",
+ "Pizza dough": "Pizza hamuru",
+ "Sieved tomatoes": "Elenmiş domates",
+ "Salami": "Salam",
+ "Toast": "Tost",
+ "Minced meat": "Kıyma",
+ "Pizza": "Pizza",
+ "Spaghetti bolognese": "Spagetti bolonez",
+ "Sandwiches": "Sandviç",
+ "English": "İngilizce",
+ "German": "Almanca",
+ "Italian": "İtalyanca",
+ "Demo in different language": "Farklı dilde bir demo",
+ "This is the note content of the recipe ingredient": "Bu, tarif malzemesi için bir not içeriği",
+ "Demo User": "Demo Kullanıcısı",
+ "Gram | Grams": " | ",
+ "Flour": "Un",
+ "Pancakes": "Pankek",
+ "Sugar": "Şeker",
+ "Home": "Ev",
+ "Life": "Yaşam",
+ "Projects": "Projeler",
+ "Repair the garage door": "Garaj kapısını tamir et",
+ "Fork and improve grocy": "grocy'i forkla ve geliştir",
+ "Find a solution for what to do when I forget the door keys": "Anahtarları unuttuğumda ne yapmam gerektiğine dair bir çözüm bul",
+ "Sweets": "Tatlılar",
+ "Bakery products": "Fırın ürünleri",
+ "Tinned food": "Konserve yiyecekler",
+ "Butchery products": "Kasap ürünleri",
+ "Vegetables/Fruits": "Sebze/Meyve",
+ "Refrigerated products": "Dondurulmuş ürünler",
+ "Coffee machine": "Kahve makinesi",
+ "Dishwasher": "Bulaşık makinesi",
+ "Liter": "Litre",
+ "Liters": "Litre",
+ "Bottle": "Şişe",
+ "Bottles": "Şişe",
+ "Milk": "Süt",
+ "Chocolate sauce": "Çikolata sosu",
+ "Milliliters": "Mililitre",
+ "Milliliter": "Mililitre",
+ "Bottom": "Dip",
+ "Topping": "Süsleme",
+ "French": "Fransızca",
+ "Turkish": "Türkçe",
+ "Spanish": "İspanyolca",
+ "Russian": "Rusça",
+ "The thing which happens on the 5th of every month": "",
+ "The thing which happens daily": "",
+ "The thing which happens on Mondays and Wednesdays": "",
+ "Swedish": "",
+ "Polish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "{string0} total value": "",
+ "Stock entries": "",
+ "Location Content Sheet": "",
+ "{count} product is overdue | {count} products are overdue": "",
+ "{count} product is expired | {count} products are expired": "",
+ "Value": "",
+ "Next due date": "",
+ "Calories": "",
+ "Per stock quantity unit": "",
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/zh_CN.json b/locale/zh_CN.json
new file mode 100644
index 00000000..011806f6
--- /dev/null
+++ b/locale/zh_CN.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "库存总览",
+ "{count} product expires | {count} products expiring": "{count}产品即将过期",
+ "within the next day | within the next {count} days": "在接下来{count}天",
+ "{count} product is already expired | {count} products are already expired": "{count}产品已经过期",
+ "{count} product is overdue | {count} products are overdue": "{count}产品过期",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count}产品低于定义的最小库存",
+ "Product": "产品",
+ "{count} Product | {count} Products": "{count}产品",
+ "Amount": "总量",
+ "Logout": "注销",
+ "Chores overview": "家务总览",
+ "Batteries overview": "电池总览",
+ "Purchase": "购买",
+ "Consume": "消耗",
+ "Inventory": "库存",
+ "Shopping list": "购物清单",
+ "Chore tracking": "家务追踪",
+ "Battery tracking": "电量追踪",
+ "Locations": "地理位置",
+ "Stores": "商店",
+ "Quantity units": "数量单位",
+ "Chores": "家务",
+ "Batteries": "电池",
+ "Chore": "家务",
+ "Next estimated tracking": "接下来预测追踪",
+ "Last tracked": "上次记录",
+ "Battery": "电池",
+ "Last charged": "上次收费",
+ "Next planned charge cycle": "下次计划充电周期",
+ "Best before": "最好早于",
+ "OK": "是",
+ "Product overview": "产品总览",
+ "Stock quantity unit": "库存数量单位",
+ "Stock amount": "库存总量",
+ "Last purchased": "上次购买",
+ "Last used": "上次使用",
+ "Spoiled": "腐败的",
+ "Barcode lookup is disabled": "条形码查找已禁用",
+ "will be added to the list of barcodes for the selected product on submit": "提交时加入所选商品的条形码清单",
+ "New amount": "新增总量",
+ "Note": "便签",
+ "Tracked time": "记录时间",
+ "Chore overview": "家务总览",
+ "Tracked count": "记录数量",
+ "Battery overview": "电池总览",
+ "Charge cycles count": "充电周期次数",
+ "Create shopping list item": "创建购物清单条目",
+ "Edit shopping list item": "修改购物清单条目",
+ "Save": "保存",
+ "Add": "添加",
+ "Name": "名称",
+ "Location": "地址",
+ "Min. stock amount": "最小库存数量",
+ "Description": "描述",
+ "Create product": "创建产品",
+ "Barcode(s)": "条形码",
+ "Minimum stock amount": "最小库存总量",
+ "Default best before days": "默认最好早于",
+ "Default quantity unit purchase": "默认数量单位购买",
+ "Quantity unit stock": "库存数量单位",
+ "Factor purchase to stock quantity unit": "库存数量单位",
+ "Create location": "创建位置",
+ "Create store": "创建商店",
+ "Create quantity unit": "创建数量单位",
+ "Period type": "周期类型",
+ "Period days": "周期天数",
+ "Create chore": "创建家务",
+ "Used in": "使用于",
+ "Create battery": "创建电池",
+ "Edit battery": "修改电池",
+ "Edit chore": "修改家务",
+ "Edit quantity unit": "修改数量单位",
+ "Edit product": "修改产品",
+ "Edit location": "修改地址",
+ "Edit store": "修改商店",
+ "Record data": "记录数据",
+ "Manage master data": "管理主数据",
+ "This will apply to added products": "这将应用于新增商品",
+ "never": "从不",
+ "Add products that are below defined min. stock amount": "添加低于最低库存数量的商品",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "这意味着购买的1{string1}将转换为{string2}{string3}库存",
+ "Login": "登录",
+ "Username": "用户名",
+ "Password": "密码",
+ "Invalid credentials, please try again": "用户名或者密码错误,请重试",
+ "Are you sure to delete battery \"{string0}\"?": "确定删除电池{string0}",
+ "Yes": "是",
+ "No": "否",
+ "Are you sure to delete chore \"{string0}\"?": "确定删除家务{string0}?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "{string0}不能找到对应的产品,想要如何继续?",
+ "Create or assign product": "添加或者指定产品",
+ "Cancel": "取消",
+ "Add as new product": "添加新产品",
+ "Add as barcode to existing product": "作为条形码添加到已知产品",
+ "Add as new product and prefill barcode": "作为新产品添加并预输入条形码",
+ "Are you sure to delete quantity unit \"{string0}\"?": "确定删除数量单位{string0}?",
+ "Are you sure to delete product \"{string0}\"?": "确定删除产品{string0}?",
+ "Are you sure to delete location \"{string0}\"?": "确定删除地址{string0}?",
+ "Are you sure to delete store \"{string0}\"?": "确定删除商店{string0}",
+ "Manage API keys": "管理API 秘钥",
+ "REST API & data model documentation": "REST API 和数据模型文档",
+ "API keys": "API 秘钥",
+ "Create new API key": "创建新API 秘钥",
+ "API key": "API 秘钥",
+ "Expires": "过期",
+ "Created": "已添加",
+ "This product is not in stock": "这个产品不在库存中",
+ "This means {string0} will be added to stock": "这意味着{string0}将被添加到库存中",
+ "This means {string0} will be removed from stock": "这意味着{string0}将从库存中删除",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "这意味着这个家务的下次执行被安排在上一次执行后的{string0}天",
+ "Removed {string1} of {string2} from stock": "从库存的{string2}中删除{string1}",
+ "About grocy": "关于grocy",
+ "Close": "关闭",
+ "Released on": "发布于",
+ "Added {string1} of {string2} to stock": "添加{string2}中的{string1}到库存",
+ "Stock amount of {string1} is now {string2}": "当前 {string1} 在库存中的数量是 {string2}",
+ "Tracked execution of chore {string1} on {string2}": "跟踪杂物{string1}在{string2}的执行",
+ "Tracked charge cycle of battery {string1} on {string2}": "跟踪电池{string1}在{string2}的充电周期",
+ "Consume all {string0} which are currently in stock": "消耗所有{string0}的库存",
+ "All": "全部",
+ "Search": "搜索",
+ "Not logged in": "未登录",
+ "You have to select a product": "请选择一个产品",
+ "You have to select a chore": "你必须选择一个家务",
+ "You have to select a battery": "请选择一个电池",
+ "A name is required": "请填写名字",
+ "A location is required": "请填写位置",
+ "A quantity unit is required": "请填写数量单位",
+ "A period type is required": "请填写周期类型",
+ "A best before date is required": "请填写保质期",
+ "Settings": "设置",
+ "This can only be before now": "只能在现在之前",
+ "Calendar": "日历",
+ "Recipes": "食谱",
+ "Edit recipe": "修改食谱",
+ "Ingredients list": "成分表",
+ "Add recipe ingredient": "添加食谱成分",
+ "Edit recipe ingredient": "编辑食谱成分",
+ "Are you sure to delete recipe \"{string0}\"?": "确定删除食谱 {string0}",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "您确定要删除食谱成分\"{string0}\"吗?",
+ "Are you sure to empty shopping list \"{string0}\"?": "你确定要清空购物清单“{string0}”吗?",
+ "Clear list": "清除列表",
+ "Requirements fulfilled": "满足要求",
+ "Put missing products on shopping list": "将缺失的产品列在购物清单上",
+ "Enough in stock": "库存充足",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "库存不足,缺少原料{count},但已经在购物清单上",
+ "Expand to fullscreen": "全屏",
+ "Ingredients": "配料",
+ "Preparation": "预备",
+ "Recipe": "食谱",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "库存不足,缺少 {string1},{string2} 已经在购物清单中 ",
+ "Show notes": "显示笔记",
+ "Put missing amount on shopping list": "将丢失的数量列在购物单上",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "你确定把食谱“{string0}”中所缺少的材料都列在购物单上了吗?",
+ "Added for recipe {string0}": "已添加到食谱{string0}",
+ "Manage users": "管理用户",
+ "User": "用户",
+ "Users": "用户",
+ "Are you sure to delete user \"{string0}\"?": "确定要删除用户 “{string0}” 吗?",
+ "Create user": "创建用户",
+ "Edit user": "编辑用户",
+ "First name": "姓",
+ "Last name": "名",
+ "A username is required": "请填写用户名",
+ "Confirm password": "确认密码",
+ "Passwords do not match": "密码不匹配",
+ "Change password": "修改密码",
+ "Done by": "完成者",
+ "Last done by": "最后完成者",
+ "Unknown": "未知",
+ "Chores journal": "家务日志",
+ "0 means suggestions for the next charge cycle are disabled": "0表示停用下次充电周期建议",
+ "Charge cycle interval (days)": "充电周期间隔(天)",
+ "Last price": "最后的价格",
+ "Price history": "价格历史",
+ "No price history available": "没有价格历史",
+ "Price": "价格",
+ "Unit": "单位",
+ "{count} Unit | {count} Units": "{count}单位",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count}家务要去完成",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count}家务逾期未做",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count}电池要充电了",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count}电池逾期未充电",
+ "in singular form": "单数形式",
+ "Quantity unit": "数量单位",
+ "Only check if any amount is in stock": "只检查是否有任何数量的库存",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "您确定要消耗食谱“{string0}”中所需的所有成分(标有“仅检查库存量”的成分将被忽略)吗?",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "从库存中移除所有食谱“{string0}”的成分",
+ "Consume all ingredients needed by this recipe": "食用此食谱所需的所有成分 ",
+ "Click to show technical details": "单击此处显示技术细节",
+ "Error while saving, probably this item already exists": "保存失败,可能这一项已经存在",
+ "Error details": "错误详情",
+ "Tasks": "任务",
+ "Show done tasks": "显示已完成的任务",
+ "Task": "任务",
+ "Due": "截止",
+ "Assigned to": "分配给",
+ "Mark task \"{string0}\" as completed": "标记任务 “{string0}” 为完成",
+ "Uncategorized": "未分类的",
+ "Task categories": "任务分类",
+ "Create task": "创建任务",
+ "A due date is required": "请填写截止日期",
+ "Category": "类别",
+ "Edit task": "编辑任务",
+ "Are you sure to delete task \"{string0}\"?": "确定要删除任务 “{string0}” 吗?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count}任务要去完成",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count}任务逾期未做",
+ "Edit task category": "编辑任务分类",
+ "Create task category": "创建任务分类",
+ "Product groups": "产品组",
+ "Ungrouped": "未分组",
+ "Create product group": "创建产品组",
+ "Edit product group": "编辑产品组",
+ "Product group": "产品组",
+ "Are you sure to delete product group \"{string0}\"?": "您确定要删除产品组\"{string0}\"吗?",
+ "Stay logged in permanently": "保持登陆",
+ "When not set, you will get logged out at latest after 30 days": "如果没有设置,您将最迟在30天后登出",
+ "Status": "状态",
+ "Below min. stock amount": "少于库存最低阈值",
+ "Expiring soon": "即将过期",
+ "Already expired": "已经过期",
+ "Due soon": "即将到期",
+ "Overdue": "逾期",
+ "View settings": "视图设置",
+ "Auto reload on external changes": "自动重新加载外部更改",
+ "Enable night mode": "开启夜间模式",
+ "Auto enable in time range": "在时间范围内自动启用",
+ "From": "来自",
+ "in format": "输入格式",
+ "To": "前往",
+ "Time range goes over midnight": "时间范围超过午夜",
+ "Product picture": "产品图片",
+ "No file selected": "未选中文件",
+ "Delete": "删除",
+ "Select file": "选择文件",
+ "Image of product {string0}": "产品 {string0} 的图片",
+ "Deletion not possible": "无法删除",
+ "Equipment": "设备",
+ "Instruction manual": "使用手册",
+ "The selected equipment has no instruction manual": "所选设备无使用说明书",
+ "Notes": "笔记",
+ "Edit equipment": "编辑设备",
+ "Create equipment": "创建设备",
+ "The current file will be deleted on save": "当前文件将在保存时被删除",
+ "No picture available": "没有可用图片",
+ "Presets for new products": "新产品预设",
+ "Included recipes": "随附的食谱",
+ "A recipe is required": "请填写食谱",
+ "Add included recipe": "添加随附的食谱",
+ "Edit included recipe": "编辑关联食谱",
+ "Group": "组",
+ "This will be used as a headline to group ingredients together": "这将被用作标题,以分组成分在一起",
+ "Journal": "日志",
+ "Stock journal": "库存日志",
+ "Undone on": "撤消",
+ "Batteries journal": "电池日志",
+ "Undo charge cycle": "撤销充电周期",
+ "Undo chore execution": "取消家务执行",
+ "Chore execution successfully undone": "家务执行撤消成功",
+ "Undo": "撤销",
+ "Booking successfully undone": "预订撤消成功",
+ "Charge cycle successfully undone": "充电周期取消成功",
+ "Disable stock fulfillment checking for this ingredient": "禁用此成分的库存履行检查",
+ "Add all list items to stock": "将所有列表项添加到库存",
+ "Add this item to stock": "把这一项加入库存",
+ "Adding shopping list item {string1} of {string2}": "添加购物清单项{string2}中的{string1}",
+ "Use a specific stock item": "使用特定的库存项目",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "列表中的第一项将按照默认规则进行选择,即“先打开,然后先到期,然后先进先出”",
+ "Mark {string1} of {string2} as open": "标记 {string2} 中的{string1}为拆封",
+ "Marked {string1} of {string2} as opened": "已标记 {string2} 中的{string1}为已拆封",
+ "Mark as opened": "标记为已拆封",
+ "Not opened": "未拆封",
+ "Opened": "已拆封",
+ "{string0} opened": "{string0} 已拆封",
+ "Product due": "产品到期",
+ "Task due": "任务到期",
+ "Chore due": "家务到期",
+ "Battery charge cycle due": "电池充电周期到期",
+ "Show clock in header": "在顶部显示时钟",
+ "Stock settings": "库存设置",
+ "Shopping list to stock workflow": "购物清单到库存工作流",
+ "Skip": "跳过",
+ "Servings": "份量",
+ "Costs": "费用",
+ "Based on the prices of the last purchase per product": "基于上一次购买每个产品的价格",
+ "The ingredients listed here result in this amount of servings": "这里列出的成分导致份量如此",
+ "Do not check against the shopping list when adding missing items to it": "当把缺少的东西添加到购物清单时,不核对清单",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "默认情况下,要添加到购物清单的金额是“需要的数量-库存数量-购物清单数量”-当启用这个功能时,它只根据库存数量进行检查,而不是根据购物清单上已经有的数量",
+ "Picture": "图片",
+ "Uncheck ingredients to not put them on the shopping list": "不检查配料,以免把它们列在购物清单上",
+ "This is for statistical purposes only": "这只是为了统计目的",
+ "You have to select a recipe": "你必须选择一个食谱",
+ "Key type": "密钥类型",
+ "Share/Integrate calendar (iCal)": "共享或集成日历 (iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "使用以下(公共)URL以iCal格式共享或集成日历",
+ "Allow partial units in stock": "允许部分库存",
+ "Enable tare weight handling": "启用皮重处理",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "这对装在罐子里的面粉很有用——在购买/消耗/库存时,你总是要称量整个罐子,然后根据库存和下面定义的皮重自动计算出过账的数量",
+ "Tare weight": "皮重",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "启用皮重处理-请称重整个集装箱,金额将被自动计算过帐",
+ "You have to select a location": "你需要选择一个地址",
+ "You have to select a store": "你需要选择一个商店",
+ "List": "清单",
+ "Gallery": "陈列室",
+ "The current picture will be deleted on save": "当前图片将在保存时被删除",
+ "Journal for this battery": "这个电池的日志",
+ "System info": "系统信息",
+ "Changelog": "变更日志",
+ "will be multiplied by a factor of {string1} to get {string2}": "将被乘以一个因数{string1}得到{string2}",
+ "The given date is earlier than today, are you sure?": "该日期早于今天,确认吗?",
+ "Product count": "产品数量",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "键入新产品名称或条形码,然后按TAB或ENTER键启动工作流",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "当添加此产品作为食谱成分时,这将用作默认设置",
+ "Add item": "添加项目",
+ "Selected shopping list": "选中的购物清单",
+ "New shopping list": "新建购物清单",
+ "Delete shopping list": "删除购物清单",
+ "Chores settings": "家务设置",
+ "Batteries settings": "电池设置",
+ "Tasks settings": "任务设置",
+ "Create shopping list": "创建购物清单",
+ "Are you sure to delete shopping list \"{string0}\"?": "确认要删除购物清单 “{string0}” 吗?",
+ "Average shelf life": "平均寿命",
+ "Spoil rate": "损坏率",
+ "Show more": "显示更多",
+ "Show less": "显示更少",
+ "The amount must be between {string1} and {string2}": "数量需在 {string1} 和 {string2} 之间",
+ "Day of month": "每月的天数",
+ "Monday": "星期一",
+ "Tuesday": "星期二",
+ "Wednesday": "星期三",
+ "Thursday": "星期四",
+ "Friday": "星期五",
+ "Saturday": "星期六",
+ "Sunday": "星期日",
+ "Configure userfields": "配置用户字段",
+ "Userfields": "用户领域",
+ "Entity": "实体",
+ "Caption": "标题",
+ "Type": "类型",
+ "Create userfield": "创建用户字段",
+ "A entity is required": "请填写实体",
+ "A caption is required": "请填写标题",
+ "A type is required": "请填写类型",
+ "Show as column in tables": "在表格中以列的形式显示",
+ "This is required and can only contain letters and numbers": "这是必需项,并且只能包含字母和数字",
+ "Edit userfield": "编辑用户字段",
+ "Plural forms": "复数形式",
+ "One plural form per line, the current language requires": "当前语言要求每行一种复数形式",
+ "Plural count": "复数计数",
+ "Plural rule": "复数规则",
+ "in plural form": "复数形式",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "库存不足,缺少原料{count}",
+ "Not enough in stock, but already on the shopping list": "库存不足,但已在购物清单中",
+ "Not enough in stock": "库存不足",
+ "Expiring soon days": "即将过期",
+ "Default location": "默认位置",
+ "Default amount for purchase": "默认购买金额",
+ "Default amount for consume": "默认消费金额",
+ "Variable amount": "可变数量",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "当此值不为空时,将显示该值而不是上面输入的值,而该值仍将用于库存兑现检查",
+ "Track date only": "只跟踪日期",
+ "When enabled only the day of an execution is tracked, not the time": "当启用时,只跟踪执行的日期,而不是时间",
+ "Consume {string1} of {string2}": "消费{string2}中的{string1}",
+ "Meal plan": "膳食计划",
+ "Add recipe on {string0}": "在{string0}上添加食谱",
+ "{count} serving | {count} servings": "{count}份",
+ "Week costs": "周成本",
+ "Configuration": "配置",
+ "A predefined list of values, one per line": "一个预定义的值列表,每行一个",
+ "Products": "产品",
+ "Marked task {string0} as completed on {string0}": "将任务{string0}标记为已完成{string0}",
+ "Booking has subsequent dependent bookings, undo not possible": "预订有后续的从属预订,不可撤消",
+ "per serving": "每餐份",
+ "Never": "从不",
+ "Today": "今天",
+ "Consume {string1} of {string2} as spoiled": "消耗{string2}中的{string1}作为被损坏的",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "并不是所有的食谱“{string0}”的成分在库存,没有删除",
+ "Undo task": "撤销任务",
+ "Due date rollover": "到期日期翻转",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "当启用该任务时,该任务永远不会过期,到期日期将每天提前",
+ "Location Content Sheet": "位置内容表",
+ "Print": "打印",
+ "all locations": "所有位置",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "在这里,您可以为每个位置打印一个包含当前库存的页面,或许可以将其挂在那里,并在上面记录消耗的东西",
+ "this location": "此位置",
+ "Consumed amount": "已分配资金",
+ "Time of printing": "印刷时间",
+ "Are you sure to delete equipment \"{string0}\"?": "你确定要删除设备\"{string0}\"?",
+ "Parent product": "主产品",
+ "Not possible because this product is already used as a parent product in another product": "不可能,因为该产品已经作为其他产品的主产品使用",
+ "Default conversions": "默认的转换",
+ "Factor": "因素",
+ "1 {string0} is the same as...": "1 {string0} 等同于...",
+ "Create QU conversion": "创建QU转换",
+ "Default for QU": "默认QU",
+ "Quantity unit from": "从数量单位",
+ "Quantity unit to": "到数量单位",
+ "This cannot be equal to {string0}": "这不能等于 {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "这意味着1{string1}等于{string2}{string3}",
+ "QU conversions": "QU转换",
+ "Product overrides": "产品覆盖",
+ "Override for product": "覆盖产品",
+ "This equals {string1} {string2}": "这等于{string1}{string2}",
+ "Edit QU conversion": "编辑QU转换",
+ "An assignment type is required": "需要赋值类型",
+ "Assignment type": "分配类型",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "这意味着该差事的下一次执行安排在上次执行之后的1天",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "这意味着此差事的下一次执行安排在最后一次执行之后的1天,但仅针对下面选择的工作日",
+ "This means the next execution of this chore is not scheduled": "这意味着没有计划此差事的下一次执行",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "这意味着此任务的下一次执行安排在每月的以下选定日期",
+ "This means the next execution of this chore will not be assigned to anyone": "这意味着这个差事的下一次执行不会分配给任何人",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "这意味着这个差事的下一个执行将分配给执行它最少的那个人",
+ "This means the next execution of this chore will be assigned randomly": "这意味着此差事的下一次执行将随机分配",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "这意味着该任务的下一个执行将按字母顺序分配给下一个执行",
+ "Assign to": "分配给",
+ "This assignment type requires that at least one is assigned": "此赋值类型要求至少分配一个",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "分配给我做家务{count}",
+ "Assigned to me": "分配给我",
+ "assigned to {string0}": "分配给 {string0}",
+ "Assignment": "分配",
+ "Consume product on chore execution": "在执行杂项时消费产品, 消费产品上的苦差事执行",
+ "Are you sure to delete user field \"{string0}\"?": "您确定要删除用户字段\"{string0}\"吗?",
+ "Userentities": "用户实体",
+ "Create userentity": "创建用户实体",
+ "Show in sidebar menu": "显示在侧边栏菜单中",
+ "Edit userentity": "编辑用户实体",
+ "Edit {string0}": "编辑 {string0}",
+ "Create {string0}": "创建 {string0}",
+ "Are you sure to delete this userobject?": "您确定要删除此用户对象吗?",
+ "Icon CSS class": "图标CSS类",
+ "For example": "例如",
+ "Configure fields": "配置字段",
+ "Quantity unit plural form testing": "数量单位复数形式测试",
+ "Result": "结果",
+ "Test plural forms": "测试复数形式",
+ "Scan a barcode": "扫描条形码",
+ "Error while initializing the barcode scanning library": "初始化条形码扫描库时出错",
+ "The resulting price of this ingredient will be multiplied by this factor": "这种成分的最终价格将乘以这个因素",
+ "Price factor": "价格系数",
+ "Do you find grocy useful?": "你觉得grocy有用吗?",
+ "Say thanks": "表示感谢",
+ "Search for recipes containing this product": "搜索含有此产品的食谱",
+ "Add to shopping list": "加入购物清单",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "添加{string2}中的{string1}到购物清单\"{string3}\"",
+ "Output": "输出",
+ "Energy (kcal)": "能量(千卡)",
+ "Per stock quantity unit": "每库存数量单位",
+ "Barcode scanner testing": "条形码扫描器测试",
+ "Expected barcode": "预期条码",
+ "Scan field": "扫描范围",
+ "Scanned barcodes": "扫描条形码",
+ "Hit": "命中",
+ "Miss": "女士",
+ "Display recipe": "显示食谱",
+ "Accumulate sub products min. stock amount": "累积子产品的最小库存数量",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "如果启用,子产品的最小库存数量将累计到此产品中,意味着子产品将永远不会“丢失”,只有此产品",
+ "Are you sure to remove this conversion?": "您确定要删除此转换吗?",
+ "Unit price": "单价",
+ "Total price": "总价",
+ "in {string0} and based on the purchase quantity unit": "在{string0}以采购数量为单位",
+ "Unlimited": "无限制",
+ "Clear": "清除",
+ "Are you sure to remove the included recipe \"{string0}\"?": "您确定要删除随附的食谱“{string0}”吗?",
+ "Period interval": "时间间隔",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "这意味着该家务的下一次执行应该每{string0}天安排一次",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "这意味着该家务的下一次执行应该只安排每{string0}个星期执行一次",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "这意味着该家务的下一次执行应该每{string0}个月安排一次",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "这意味着该差事的下一次执行安排在上次执行之后的1年",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "这意味着该家务的下一次执行应该每{string0}年计划一次",
+ "Transfer": "迁移",
+ "From location": "起点位置",
+ "To location": "终点位置",
+ "There are no units available at this location": "这个地方没有可用的单元",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "数额:{string1};截止期:{string2};购买日:{string3}",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "将{string2}中的{string1}从{string3}转移到{string4}",
+ "Stock entries": "库存条目",
+ "Best before date": "保质期",
+ "Purchased date": "购买日",
+ "Consume all {string0} for this stock entry": "使用这个库存条目的所有{string0}",
+ "The amount cannot be lower than {string1}": "金额不能低于{string1}",
+ "Stock entry successfully updated": "库存条目更新成功",
+ "Edit stock entry": "编辑库存条目",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "只有当您的浏览器支持和允许并通过安全(https://)连接提供grocy服务时,才有可能访问摄像头",
+ "Keep screen on": "保持唤醒",
+ "Keep screen on while displaying a \"fullscreen-card\"": "在显示“全屏幕卡”时保持屏幕打开",
+ "A purchased date is required": "购买日期是必需的",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "选择一种产品时,将在食用此配方时向库存添加一个单位(每份库存数量单位)",
+ "Produces product": "生产产品",
+ "This booking cannot be undone": "这个预订不能取消",
+ "Booking does not exist or was already undone": "预订不存在或已撤消",
+ "Are you sure to delete API key \"{string0}\"?": "您确定要删除API密钥\"{string0}\"吗?",
+ "Add note": "添加笔记",
+ "Add note on {string0}": "在{string0}添加注释",
+ "per day": "每天",
+ "Only undone items": "仅未完成的项目",
+ "Add product": "添加产品",
+ "Add product on {string0}": "在{string0}添加产品",
+ "Consume all ingredients needed by this weeks recipes or products": "食用本星期食谱或产品所需的所有原料",
+ "Meal plan recipe": "膳食计划菜谱",
+ "Meal plan note": "膳食计划报告",
+ "Meal plan product": "膳食计划产品",
+ "Scan mode": "扫描模式",
+ "on": "开",
+ "off": "关",
+ "Scan mode is on but not all required fields could be populated automatically": "扫描模式已启用,但并非所有必填字段都可以自动填充",
+ "Is freezer": "冷冻机",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "将产品移入/移出冰柜位置时,会根据产品设置自动调整产品的保质期",
+ "This cannot be the same as the \"From\" location": "这不能与“From”位置相同",
+ "Thawed": "解冻",
+ "Frozen": "冷藏",
+ "Are you sure to delete userentity \"{string0}\"?": "您确定要删除用户实体\"{string0}\"吗?",
+ "Shopping list settings": "购物清单设置",
+ "Show a month-view calendar": "显示一个月视图日历",
+ "Edit note on {string0}": "编辑关于{string0}的注释",
+ "Edit product on {string0}": "在{string0}编辑产品",
+ "Edit recipe on {string0}": "编辑食谱{string0}",
+ "Desired servings": "所需份量",
+ "Base: {string0}": "基础:{string0}",
+ "Recipes settings": "配方设置",
+ "Recipe card": "食谱卡",
+ "Group ingredients by their product group": "按产品组对成分进行分组",
+ "Unknown store": "未知商店",
+ "Store": "商店",
+ "Transaction successfully undone": "交易成功撤消",
+ "Default store": "默认商店",
+ "Consume this stock entry": "消耗此库存项",
+ "Mark this stock entry as open": "将该库存条目标记为打开",
+ "Mark this item as done": "把这项标记为已完成",
+ "Edit this item": "编辑此项",
+ "Delete this item": "删除此项",
+ "Show an icon if the product is already on the shopping list": "如果产品已经在购物清单上,则显示一个图标",
+ "Calories": "卡路里",
+ "means {string1} per {string2}": "每{string2},{string1}财产",
+ "Create inverse QU conversion": "单位转换",
+ "Create recipe": "创建配方",
+ "Save & continue to add ingredients and included recipes": "保存并继续添加配料和包括食谱",
+ "Save & continue": "保存并继续",
+ "Save & return to recipes": "保存并返回食谱",
+ "Stock value": "库存量",
+ "Average price": "平均价格",
+ "Active": "有效的",
+ "Barcodes": "条形码",
+ "Barcode": "条形码",
+ "Create Barcode": "创建条形码",
+ "Barcode for product": "产品条形码",
+ "Edit Barcode": "编辑条形码",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "库存不足(不计入成本),{string0}成分缺失",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "基于默认消费规则的价格,即“先打开,然后先到期,然后先进先出”",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "库存不足(不计入成本),{string1}缺失,{string2}已在购物清单上",
+ "Quantity unit stock cannot be changed after first purchase": "首次购买后不能更改数量单位库存",
+ "Clear filter": "清除过滤器",
+ "Permissions for user {string0}": "{string0}用户的权限",
+ "Are you sure you want to remove full permissions for yourself?": "您确定要删除自己的全部权限吗?",
+ "Permissions saved": "权限保存",
+ "You are not allowed to view this page": "您无权查看此页",
+ "Page not found": "页面未找到",
+ "Unauthorized": "未授权",
+ "Error source": "出错源",
+ "Error message": "出错信息",
+ "Stack trace": "堆栈踪迹",
+ "Easy error info copy & paste (for reporting)": "简单的错误信息复制和粘贴(用于报告)",
+ "This page does not exist": "此页面不存在",
+ "You will be redirected to the default page in {string0} seconds": "您将在{string0}秒内被重定向到默认页面",
+ "Server error": "服务器错误",
+ "A server error occured while processing your request": "处理您的请求时发生服务器错误",
+ "If you think this is a bug, please report it": "如果你认为这是一个bug,请报告它",
+ "Language": "语言",
+ "User settings": "用户设置",
+ "Default": "默认",
+ "Stock journal summary": "库存总结",
+ "Journal summary": "总结",
+ "Journal summary for this product": "本产品的日志摘要",
+ "Consume exact amount": "消费确切数额",
+ "Value": "值",
+ "{string0} total value": "{string0}总值",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "在购买和库存页面显示购买日期(否则购买日期默认为今天)",
+ "Common": "通用",
+ "Decimal places allowed for amounts": "允许小数点后位-数量",
+ "Decimal places allowed for prices": "允许小数点后位-价格",
+ "Stock entries for this product": "此产品的库存条目",
+ "Edit shopping list": "编辑购物清单",
+ "Save & continue to add quantity unit conversions & barcodes": "保存并继续添加数量单位转换和条形码",
+ "Save & return to products": "保存并返回到产品",
+ "Save & continue to add conversions": "保存并继续添加",
+ "Save & return to quantity units": "保存并返回到数量单位",
+ "price": "价格",
+ "New stock amount": "新库存量",
+ "Price per stock unit": "每库存单位价格",
+ "Table options": "表选项",
+ "This product is currently on a shopping list": "该产品目前在购物清单上",
+ "Undo transaction": "撤消交易",
+ "Transaction type": "交易类型",
+ "Transaction time": "交易时间",
+ "Chore journal": "家务杂志",
+ "Track chore execution": "跟踪家务执行",
+ "Mark task as completed": "将任务标记为已完成",
+ "Track charge cycle": "跟踪充电周期",
+ "Battery journal": "电池日志",
+ "This product has a picture": "该产品有图片",
+ "Consume this stock entry as spoiled": "消耗该库存条目作为损耗",
+ "Configure user permissions": "配置用户权限",
+ "Show a QR-Code for this API key": "显示此API密钥的QR码",
+ "This is the default quantity unit used when adding this product to the shopping list": "这是将此产品添加到购物清单时使用的默认数量单位",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "当所购买产品的到期日早于库存中的下一个到期日时,显示警告",
+ "This is due earlier than already in-stock items": "这是由于早于已有库存的物品",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "快速消费的金额",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "此金额用于库存概览页面上的“快速消费/打开按钮”(与单位库存数量相关)",
+ "Copy": "复制",
+ "Are you sure to remove this barcode?": "您确定要删除此条形码吗?",
+ "Due date type": "到期日期类型",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "根据所选择的类型,库存总览页面上的高亮显示将有所不同",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "意味着产品在过期后仍然可以安全食用",
+ "Expiration date": "截止日期",
+ "Means that the product is not safe to be consumed after its due date is reached": "指产品过期后食用不安全",
+ "For purchases this amount of days will be added to today for the due date suggestion": "对于购买,这个天数将增加到今天的到期日建议",
+ "-1 means that this product will be never overdue": "-1表示该产品永远不会过期",
+ "Default due days": "默认到期日",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "当此产品标记为已打开时,到期日期将替换为今天+该天数(值0会禁用此日期)",
+ "Default due days after opened": "开封后默认到期日",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "将本产品移至冷藏室时(因此将其冷冻时),到期日将替换为今天+该天数",
+ "Default due days after freezing": "冻结后默认到期日",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "当将产品从冷冻室移出时(解冻时),到期日将改为今天+这个天数",
+ "Default due days after thawing": "解冻后默认到期日",
+ "Next due date": "下一个到期日",
+ "{count} product is due | {count} products are due": "{count}产品到期",
+ "Due date": "截止日期",
+ "Never overdue": "永不逾期",
+ "{count} product is expired | {count} products are expired": "{count}产品已过期",
+ "Expired": "已过期",
+ "Due soon days": "即将到期",
+ "Add overdue/expired products": "添加过期/过期的产品",
+ "Products with tare weight enabled are currently not supported for transfer": "当前不支持启用了皮重的产品进行转移",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "此数字不能小于{string1}或等于{string2},并且必须是有效数字,最大值{string3}为小数位",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "该值必须在{string1}和{string2}之间,不能等于{string3},并且必须是有效数字,最大值{string4}为小数位",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "此数字不能小于{string1},并且必须是一个有效数字,最大值{string2}为小数位",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "此数字必须在{string1}和{string2}之间,并且必须是一个有效数字,最大值{string3}为小数位",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "如果产品设置了“默认到期日”,则使用最新价格和购物清单项目的金额自动进行预订",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "将产品移入/移出冰柜位置时,产品到期日会根据产品设置自动调整",
+ "This is the internal field name, e. g. for the API": "这是内部字段名称,例如用于API",
+ "This is used to display the field on the frontend": "这用于在前端显示字段",
+ "Multiple Userfields will be ordered by that number on the input form": "在输入表单上,将按该数字对多个用户字段进行排序",
+ "Sort number": "排序编号",
+ "Download file": "下载文件",
+ "Use the products \"Quick consume amount\"": "使用产品“快速消费量”",
+ "Disabled": "禁用",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "这也会删除该产品的任何库存量,日记帐和所有其他参考-如果您想保留该数量而只是隐藏该产品,请考虑禁用它。",
+ "Show disabled": "显示已禁用",
+ "Never show on stock overview": "不在库存总览显示",
+ "None": "没有",
+ "Group by": "分组依据",
+ "Ingredient group": "成分组",
+ "Reset": "重置",
+ "Are you sure to reset the table options?": "确定要重置表选项吗?",
+ "Hide/view columns": "隐藏/查看 列",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "然后,可以在下面使用不同的数量/单位,而在进行库存履行检查时,只要有任意数量的库存产品就足够了",
+ "Last price (Unit)": "最终价格(单位)",
+ "Last price (Total)": "最终价格(总计)",
+ "Show header": "显示标题",
+ "Group by product group": "按产品组分组",
+ "Table": "表",
+ "Layout type": "布局类型",
+ "Merge this product with another one": "将此产品与另一产品合并",
+ "Merge products": "合并产品",
+ "Product to keep": "保留的产品",
+ "Product to remove": "要删除的产品",
+ "Error while merging products": "合并产品时出错",
+ "After merging, this product will be kept": "合并后,此产品将保留",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "合并后,此产品的所有出现都将被“要保留的产品”代替(意味着该产品将不再存在)",
+ "Merge": "合并",
+ "Title": "标题",
+ "Link": "链接",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "库存总览页面列出了当前有库存或低于其最低库存的所有产品。库存量-启用此功能可将其始终隐藏在此处",
+ "Print options": "打印选项",
+ "A product or a note is required": "需要一件产品或一张便条",
+ "no-assignment": "未分配过的优先",
+ "who-least-did-first": "最少分配优先",
+ "random": "随机",
+ "in-alphabetical-order": "按字母顺序",
+ "timeago_locale": "zh-CN",
+ "timeago_nan": "NaN 年以前",
+ "moment_locale": "zh-CN",
+ "datatables_localization": "{\"sProcessing\":\"处理中...\",\"sLengthMenu\":\"显示 _MENU_ 项结果\",\"sZeroRecords\":\"没有匹配结果\",\"sInfo\":\"显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项\",\"sInfoEmpty\":\"显示第 0 至 0 项结果,共 0 项\",\"sInfoFiltered\":\"(由 _MAX_ 项结果过滤)\",\"sSearch\":\"搜索:\",\"sEmptyTable\":\"表中数据为空\",\"sLoadingRecords\":\"载入中...\",\"sInfoThousands\":\",\",\"oPaginate\":{\"sFirst\":\"首页\",\"sPrevious\":\"上页\",\"sNext\":\"下页\",\"sLast\":\"末页\"},\"oAria\":{\"sSortAscending\":\": 以升序排列此列\",\"sSortDescending\":\": 以降序排列此列\"}}",
+ "summernote_locale": "zh-CN",
+ "fullcalendar_locale": "zh-cn",
+ "bootstrap-select_locale": "zh_CN",
+ "purchase": "购买",
+ "transfer_from": "转自",
+ "transfer_to": "转给",
+ "consume": "消耗",
+ "inventory-correction": "库存更正",
+ "product-opened": "已开封产品",
+ "stock-edit-old": "旧库存修改",
+ "stock-edit-new": "新库存修改",
+ "self-production": "自我生产产品",
+ "manually": "手动",
+ "dynamic-regular": "动态有序",
+ "daily": "每天",
+ "weekly": "每周",
+ "monthly": "每月",
+ "yearly": "每年",
+ "text-single-line": "文字单行",
+ "text-multi-line": "文本多行",
+ "number-integral": "数量(整数)",
+ "number-decimal": "十进制数",
+ "date": "日期",
+ "datetime": "日期时间",
+ "checkbox": "复选框",
+ "preset-list": "预设清单",
+ "preset-checklist": "预设清单",
+ "link": "链接",
+ "link-with-title": "标题链接",
+ "file": "文件",
+ "image": "图像",
+ "ADMIN": "所有权限",
+ "USERS_CREATE": "创建用户",
+ "USERS_EDIT": "编辑用户",
+ "USERS_READ": "显示所有用户",
+ "USERS_EDIT_SELF": "编辑自己的用户数据",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "撤销充电周期",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "跟踪充电周期",
+ "CHORE_TRACK_EXECUTION": "跟踪执行情况",
+ "CHORE_UNDO_EXECUTION": "撤销执行",
+ "MASTER_DATA_EDIT": "编辑主数据",
+ "TASKS_UNDO_EXECUTION": "撤销执行",
+ "TASKS_MARK_COMPLETED": "标记完成",
+ "STOCK_EDIT": "编辑库存条目",
+ "STOCK_TRANSFER": "库存迁移",
+ "STOCK_INVENTORY": "存货清单",
+ "STOCK_CONSUME": "库存消费",
+ "STOCK_OPEN": "打开产品",
+ "STOCK_PURCHASE": "采购",
+ "SHOPPINGLIST_ITEMS_ADD": "添加项目",
+ "SHOPPINGLIST_ITEMS_DELETE": "删除项目",
+ "USERS": "用户管理",
+ "STOCK": "库存",
+ "SHOPPINGLIST": "购物清单",
+ "CHORES": "家务",
+ "BATTERIES": "电池",
+ "TASKS": "任务",
+ "RECIPES": "食谱",
+ "EQUIPMENT": "设备",
+ "CALENDAR": "日历",
+ "RECIPES_MEALPLAN": "膳食计划",
+ "cs": "cs",
+ "da": "da",
+ "de": "de",
+ "el_GR": "el_GR",
+ "en": "en",
+ "en_GB": "en_GB",
+ "es": "es",
+ "fr": "fr",
+ "hu": "hu",
+ "it": "it",
+ "ja": "ja",
+ "ko_KR": "ko_KR",
+ "nl": "nl",
+ "no": "no",
+ "pl": "pl",
+ "pt_BR": "pt_BR",
+ "pt_PT": "pt_PT",
+ "ru": "ru",
+ "sk_SK": "sk_SK",
+ "sv_SE": "sv_SE",
+ "tr": "tr",
+ "zh_TW": "zh_TW",
+ "zh_CN": "zh_CN",
+ "he_IL": "he_IL",
+ "ta": "ta",
+ "fi": "fi",
+ "Cookies": "曲奇饼干",
+ "Chocolate": "巧克力",
+ "Pantry": "食品储藏室",
+ "Candy cupboard": "糖果柜",
+ "Tinned food cupboard": "罐头食品橱",
+ "Fridge": "冰箱",
+ "Piece | Pieces": "件",
+ "Pack | Packs": "包",
+ "Glass | Glasses": "杯",
+ "Tin | Tins": "罐",
+ "Can | Cans": "罐",
+ "Bunch | Bunches": "束/捆",
+ "Gummy bears": "小熊软糖",
+ "Crisps": "薯片",
+ "Eggs": "鸡蛋",
+ "Noodles": "面条",
+ "Pickles": "腌咸菜",
+ "Gulash soup": " 匈牙利牛肉汤 ",
+ "Yogurt": "酸奶",
+ "Cheese": "奶酪",
+ "Cold cuts": "冷切肉",
+ "Paprika": "辣椒",
+ "Cucumber": "黄瓜",
+ "Radish": "小萝卜",
+ "Tomato": "西红柿",
+ "Changed towels in the bathroom": "更换卫生间毛巾",
+ "Cleaned the kitchen floor": "清理厨房地板",
+ "Warranty ends": "保质期结束",
+ "TV remote control": "电视机遥控器",
+ "Alarm clock": "闹钟",
+ "Heat remote control": "加热器遥控器",
+ "Lawn mowed in the garden": "清理花园草坪",
+ "Some good snacks": "美味零食",
+ "Pizza dough": "披萨面团",
+ "Sieved tomatoes": "精选西红柿",
+ "Salami": "蒜味腊肠",
+ "Toast": "烤面包",
+ "Minced meat": "肉糜",
+ "Pizza": "披萨",
+ "Spaghetti bolognese": "肉醬意大利面",
+ "Sandwiches": "三明治",
+ "English": "英语",
+ "German": "德语",
+ "Italian": "意大利语",
+ "This is the note content of the recipe ingredient": "这是配方成分的注释内容",
+ "Demo User": "演示用户",
+ "Gram | Grams": "克",
+ "Flour": "面粉",
+ "Pancakes": "烤饼",
+ "Sugar": "糖",
+ "Home": "主页",
+ "Life": "生命",
+ "Projects": "项目",
+ "Repair the garage door": "修理车库门",
+ "Fork and improve grocy": "建立分支并完善grocy",
+ "Find a solution for what to do when I forget the door keys": "寻找解决方法当忘记拿钥匙的时候",
+ "Sweets": "甜食",
+ "Bakery products": "烘焙用品",
+ "Tinned food": "灌装食物",
+ "Butchery products": "肉类产品",
+ "Vegetables/Fruits": "蔬菜/水果",
+ "Refrigerated products": "冷藏食物",
+ "Coffee machine": "咖啡机",
+ "Dishwasher": "洗洁精",
+ "Liter": "升",
+ "Liters": "升",
+ "Bottle": "瓶",
+ "Bottles": "瓶",
+ "Milk": "牛奶",
+ "Chocolate sauce": "巧克力酱",
+ "Milliliters": "毫升",
+ "Milliliter": "毫升",
+ "Bottom": "底部",
+ "Topping": "顶部配料",
+ "French": "法语",
+ "Turkish": "土耳其语",
+ "Spanish": "西班牙语",
+ "Russian": "俄语",
+ "The thing which happens on the 5th of every month": "每月5号发生的事情",
+ "The thing which happens daily": "每天发生的事情",
+ "The thing which happens on Mondays and Wednesdays": "每周一和周三发生的事情",
+ "Swedish": "瑞典语",
+ "Polish": "波兰语",
+ "Milk Chocolate": "牛奶巧克力",
+ "Dark Chocolate": "黑巧克力",
+ "Slice | Slices": "切片",
+ "Example userentity": "用户实体举例",
+ "This is an example user entity...": "这是一个用户实体样例",
+ "Custom field": "自定义区域",
+ "Example field value...": "示例值",
+ "Waffle rolls": "华夫卷",
+ "Danish": "丹麦语",
+ "Dutch": "荷兰语",
+ "Norwegian": "挪威语",
+ "Demo": "演示",
+ "Stable version": "稳定版本",
+ "Preview version": "预览版本",
+ "current release": "当前版本",
+ "not yet released": "尚未发布",
+ "Portuguese (Brazil)": "葡萄牙语(巴西)",
+ "This is a note": "这是个便签",
+ "Freezer": "冰箱",
+ "Hungarian": "匈牙利语",
+ "Slovak": "斯洛伐克语",
+ "Czech": "捷克语",
+ "Portuguese (Portugal)": "葡萄牙语(葡萄牙)",
+ "DemoSupermarket1": "演示超市1",
+ "DemoSupermarket2": "演示超市2",
+ "Japanese": "日语",
+ "Chinese (Taiwan)": "中文(台湾)",
+ "Greek": "希腊语",
+ "Korean": "韩语",
+ "Chinese (China)": "中文(中国)",
+ "Hebrew (Israel)": "希伯来语(以色列)",
+ "Tamil": "泰米尔语",
+ "Finnish": "芬兰语",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/locale/zh_TW.json b/locale/zh_TW.json
new file mode 100644
index 00000000..02c6274c
--- /dev/null
+++ b/locale/zh_TW.json
@@ -0,0 +1,925 @@
+{
+ "Stock overview": "庫存總覽",
+ "{count} product expires | {count} products expiring": "{count} 項物品將於",
+ "within the next day | within the next {count} days": "{count} 天後過期",
+ "{count} product is already expired | {count} products are already expired": "{count} 項物品已經過期",
+ "{count} product is overdue | {count} products are overdue": "{count} 項物品逾期",
+ "{count} product is below defined min. stock amount | {count} products are below defined min. stock amount": "{count} 項物品數量小於最低庫存數量",
+ "Product": "物品",
+ "{count} Product | {count} Products": "{count} 項物品",
+ "Amount": "數量",
+ "Logout": "登出",
+ "Chores overview": "家務總覽",
+ "Batteries overview": "電池總覽",
+ "Purchase": "購買",
+ "Consume": "消耗",
+ "Inventory": "庫存",
+ "Shopping list": "購物清單",
+ "Chore tracking": "家務追蹤",
+ "Battery tracking": "電池追蹤",
+ "Locations": "位置",
+ "Stores": "店家",
+ "Quantity units": "數量單位",
+ "Chores": "家務",
+ "Batteries": "電池",
+ "Chore": "家務",
+ "Next estimated tracking": "預計下次追蹤",
+ "Last tracked": "上次追蹤",
+ "Battery": "電池",
+ "Last charged": "上次充電",
+ "Next planned charge cycle": "預計下次充電",
+ "Best before": "賞味期限",
+ "OK": "OK",
+ "Product overview": "物品總覽",
+ "Stock quantity unit": "庫存數量單位",
+ "Stock amount": "庫存數量",
+ "Last purchased": "上次購買",
+ "Last used": "上次使用",
+ "Spoiled": "已報廢",
+ "Barcode lookup is disabled": "已停用條碼搜尋",
+ "will be added to the list of barcodes for the selected product on submit": "送出時將所選物品的條碼新增至條碼列表",
+ "New amount": "新數量",
+ "Note": "備註",
+ "Tracked time": "追蹤時間",
+ "Chore overview": "家務總覽",
+ "Tracked count": "追蹤次數",
+ "Battery overview": "電池總覽",
+ "Charge cycles count": "充電次數",
+ "Create shopping list item": "新增購物清單項目",
+ "Edit shopping list item": "編輯購物清單項目",
+ "Save": "儲存",
+ "Add": "新增",
+ "Name": "名稱",
+ "Location": "位置",
+ "Min. stock amount": "最低庫存數量",
+ "Description": "說明",
+ "Create product": "新增物品",
+ "Barcode(s)": "條碼",
+ "Minimum stock amount": "最低庫存數量",
+ "Default best before days": "預設賞味期限天數",
+ "Default quantity unit purchase": "預設購買數量單位",
+ "Quantity unit stock": "庫存數量單位",
+ "Factor purchase to stock quantity unit": "拆分購買數量單位為庫存數量單位",
+ "Create location": "新增位置",
+ "Create store": "新增店家",
+ "Create quantity unit": "新增數量單位",
+ "Period type": "週期類型",
+ "Period days": "週期天數",
+ "Create chore": "新增家務",
+ "Used in": "使用於",
+ "Create battery": "新增電池",
+ "Edit battery": "編輯電池",
+ "Edit chore": "編輯家務",
+ "Edit quantity unit": "編輯數量單位",
+ "Edit product": "編輯物品",
+ "Edit location": "編輯位置",
+ "Edit store": "編輯店家",
+ "Record data": "記錄資料",
+ "Manage master data": "管理主資料",
+ "This will apply to added products": "這將會套用於已加入的物品",
+ "never": "永不",
+ "Add products that are below defined min. stock amount": "加入小於最低庫存數量的物品",
+ "This means 1 {string1} purchased will be converted into {string2} {string3} in stock": "這代表購買 1 {string1} 會轉換為 {string2} {string3} 的庫存 ",
+ "Login": "登入",
+ "Username": "帳號",
+ "Password": "密碼",
+ "Invalid credentials, please try again": "帳號或密碼錯誤,請重試。",
+ "Are you sure to delete battery \"{string0}\"?": "確定要刪除電池「{string0}」嗎?",
+ "Yes": "是",
+ "No": "否",
+ "Are you sure to delete chore \"{string0}\"?": "確定要刪除家務「{string0}」嗎?",
+ "\"{string0}\" could not be resolved to a product, how do you want to proceed?": "「{string0}」尚無對應物品,如何進行下一步?",
+ "Create or assign product": "新增或分配物品",
+ "Cancel": "取消",
+ "Add as new product": "新增為新物品",
+ "Add as barcode to existing product": "作為條碼附加到現有物品",
+ "Add as new product and prefill barcode": "新增為新物品並預填入條碼",
+ "Are you sure to delete quantity unit \"{string0}\"?": "確定要刪除數量單位「{string0}」嗎?",
+ "Are you sure to delete product \"{string0}\"?": "確定要刪除物品「{string0}」嗎?",
+ "Are you sure to delete location \"{string0}\"?": "確定要刪除位置「{string0}」嗎?",
+ "Are you sure to delete store \"{string0}\"?": "確定要刪除店家「{string0}」嗎?",
+ "Manage API keys": "管理 API 金鑰",
+ "REST API & data model documentation": "REST API 及資料模型文件",
+ "API keys": "API 金鑰",
+ "Create new API key": "新增 API 金鑰",
+ "API key": "API 金鑰",
+ "Expires": "過期",
+ "Created": "已新增",
+ "This product is not in stock": "此物品不在庫存中",
+ "This means {string0} will be added to stock": "這代表 {string0} 將加到庫存中",
+ "This means {string0} will be removed from stock": "這代表 {string0} 將從庫存中刪除",
+ "This means the next execution of this chore is scheduled {string0} days after the last execution": "這代表此家務將在上一次執行的 {string0} 天後再次執行",
+ "Removed {string1} of {string2} from stock": "從庫存的 {string2} 中刪除 {string1}",
+ "About grocy": "關於 grocy",
+ "Close": "結束",
+ "Released on": "發佈於",
+ "Added {string1} of {string2} to stock": "已將 {string2} 的 {string1} 加到庫存中",
+ "Stock amount of {string1} is now {string2}": "{string1} 的庫存數量為 {string2}",
+ "Tracked execution of chore {string1} on {string2}": "於 {string2} 追蹤家務 {string1} 執行狀況",
+ "Tracked charge cycle of battery {string1} on {string2}": "於 {string2} 追蹤電池 {string1} 充電狀況",
+ "Consume all {string0} which are currently in stock": "消耗庫存中全部的 {string0}",
+ "All": "全部",
+ "Search": "搜尋",
+ "Not logged in": "未登入",
+ "You have to select a product": "請選擇一個物品",
+ "You have to select a chore": "請選擇一件家務",
+ "You have to select a battery": "請選擇一組電池",
+ "A name is required": "名稱為必填項目",
+ "A location is required": "位置為必填項目",
+ "A quantity unit is required": "數量單位為必填項目",
+ "A period type is required": "週期類型為必填項目",
+ "A best before date is required": "賞味期限為必填項目",
+ "Settings": "設定",
+ "This can only be before now": "這只能在目前時間之前",
+ "Calendar": "日曆",
+ "Recipes": "食譜",
+ "Edit recipe": "編輯食譜",
+ "Ingredients list": "食材列表",
+ "Add recipe ingredient": "新增食譜食材",
+ "Edit recipe ingredient": "編輯食譜食材",
+ "Are you sure to delete recipe \"{string0}\"?": "確定要刪除食譜「{string0}」嗎?",
+ "Are you sure to delete recipe ingredient \"{string0}\"?": "確定要刪除食譜食材「{string0}」嗎?",
+ "Are you sure to empty shopping list \"{string0}\"?": "確定要清空購物清單「{string0}」嗎?",
+ "Clear list": "清除列表",
+ "Requirements fulfilled": "符合需求",
+ "Put missing products on shopping list": "將不足的物品加入購物清單",
+ "Enough in stock": "庫存充足",
+ "Not enough in stock, {count} ingredient missing but already on the shopping list | Not enough in stock, {count} ingredients missing but already on the shopping list": "食材 {count} 庫存不足,但已加入購物清單。",
+ "Expand to fullscreen": "全螢幕模式",
+ "Ingredients": "食材",
+ "Preparation": "前置作業",
+ "Recipe": "食譜",
+ "Not enough in stock, {string1} missing, {string2} already on shopping list": "{string1} 庫存不足,其中 {string2} 已經加入購物清單。",
+ "Show notes": "顯示備註",
+ "Put missing amount on shopping list": "將不足的數量加入購物清單",
+ "Are you sure to put all missing ingredients for recipe \"{string0}\" on the shopping list?": "確定要將「{string0}」食譜中所有不足的食材加入購物清單嗎?",
+ "Added for recipe {string0}": "已加進食譜「{string0}」",
+ "Manage users": "管理使用者",
+ "User": "使用者",
+ "Users": "使用者",
+ "Are you sure to delete user \"{string0}\"?": "確定要刪除使用者「{string0}」嗎?",
+ "Create user": "新增使用者",
+ "Edit user": "編輯使用者",
+ "First name": "名",
+ "Last name": "姓",
+ "A username is required": "帳號為必填項目",
+ "Confirm password": "確認密碼",
+ "Passwords do not match": "密碼不相符",
+ "Change password": "修改密碼",
+ "Done by": "完成者",
+ "Last done by": "上次完成者",
+ "Unknown": "不明",
+ "Chores journal": "家務日誌",
+ "0 means suggestions for the next charge cycle are disabled": "0 代表停用下次充電建議",
+ "Charge cycle interval (days)": "充電間隔(天數)",
+ "Last price": "上次價格",
+ "Price history": "價格歷史",
+ "No price history available": "沒有可用價格歷史",
+ "Price": "價格",
+ "Unit": "單位",
+ "{count} Unit | {count} Units": "{count} 個單位",
+ "{count} chore is due to be done | {count} chores are due to be done": "{count} 件家務需要完成",
+ "{count} chore is overdue to be done | {count} chores are overdue to be done": "{count} 件家務早該完成",
+ "{count} battery is due to be charged | {count} batteries are due to be charged": "{count} 組電池需要充電",
+ "{count} battery is overdue to be charged | {count} batteries are overdue to be charged": "{count} 組電池早該充電",
+ "in singular form": "單數形式",
+ "Quantity unit": "數量單位",
+ "Only check if any amount is in stock": "",
+ "Are you sure to consume all ingredients needed by recipe \"{string0}\" (ingredients marked with \"only check if any amount is in stock\" will be ignored)?": "",
+ "Removed all ingredients of recipe \"{string0}\" from stock": "已從庫存中移除了食譜「{string0}」的所有食材",
+ "Consume all ingredients needed by this recipe": "消耗此食譜所需的所有食材",
+ "Click to show technical details": "按此顯示技術細節",
+ "Error while saving, probably this item already exists": "儲存時發生錯誤,此項目可能已經存在。",
+ "Error details": "錯誤詳情",
+ "Tasks": "任務",
+ "Show done tasks": "顯示已完成的任務",
+ "Task": "任務",
+ "Due": "到期",
+ "Assigned to": "分配給",
+ "Mark task \"{string0}\" as completed": "標記任務「{string0}」為已完成",
+ "Uncategorized": "未分類的",
+ "Task categories": "任務分類",
+ "Create task": "新增任務",
+ "A due date is required": "到期日期為必填項目",
+ "Category": "分類",
+ "Edit task": "編輯任務",
+ "Are you sure to delete task \"{string0}\"?": "確定要刪除任務「{string0}」嗎?",
+ "{count} task is due to be done | {count} tasks are due to be done": "{count} 項任務需要完成",
+ "{count} task is overdue to be done | {count} tasks are overdue to be done": "{count} 項任務早該完成",
+ "Edit task category": "編輯任務分類",
+ "Create task category": "新增任務分類",
+ "Product groups": "物品分類",
+ "Ungrouped": "未分類",
+ "Create product group": "新增物品分類",
+ "Edit product group": "編輯物品分類",
+ "Product group": "物品分類",
+ "Are you sure to delete product group \"{string0}\"?": "確定要刪除物品分類「{string0}」嗎?",
+ "Stay logged in permanently": "保持登入狀態",
+ "When not set, you will get logged out at latest after 30 days": "如未設定,最晚將在 30 天後被登出",
+ "Status": "狀態",
+ "Below min. stock amount": "小於最低庫存數量",
+ "Expiring soon": "即將過期",
+ "Already expired": "已經過期",
+ "Due soon": "即將到期",
+ "Overdue": "逾期",
+ "View settings": "顯示設定",
+ "Auto reload on external changes": "更新時自動重新載入",
+ "Enable night mode": "開啟夜間模式",
+ "Auto enable in time range": "在時間範圍內自動啟用",
+ "From": "從",
+ "in format": "格式",
+ "To": "至",
+ "Time range goes over midnight": "時間範圍超過午夜",
+ "Product picture": "物品圖片",
+ "No file selected": "未選擇檔案",
+ "Delete": "刪除",
+ "Select file": "選擇檔案",
+ "Image of product {string0}": "物品「{string0}」的圖片",
+ "Deletion not possible": "",
+ "Equipment": "設備",
+ "Instruction manual": "說明書",
+ "The selected equipment has no instruction manual": "所選設備沒有說明書",
+ "Notes": "備註",
+ "Edit equipment": "編輯設備",
+ "Create equipment": "新增設備",
+ "The current file will be deleted on save": "",
+ "No picture available": "沒有可用圖片",
+ "Presets for new products": "新物品預設設定",
+ "Included recipes": "隨附的食譜",
+ "A recipe is required": "食譜為必填項目",
+ "Add included recipe": "新增隨附的食譜",
+ "Edit included recipe": "編輯隨附的食譜",
+ "Group": "分類",
+ "This will be used as a headline to group ingredients together": "這將做為食材分類的標題",
+ "Journal": "日誌",
+ "Stock journal": "庫存日誌",
+ "Undone on": "取消",
+ "Batteries journal": "電池日誌",
+ "Undo charge cycle": "取消充電",
+ "Undo chore execution": "取消家務執行",
+ "Chore execution successfully undone": "取消家務執行成功",
+ "Undo": "取消",
+ "Booking successfully undone": "取消預訂成功",
+ "Charge cycle successfully undone": "取消充電成功",
+ "Disable stock fulfillment checking for this ingredient": "停用此食材的需求庫存檢查",
+ "Add all list items to stock": "將所有列表項目加到庫存中",
+ "Add this item to stock": "",
+ "Adding shopping list item {string1} of {string2}": "將 {string2} 的 {string1} 加到購物清單項目",
+ "Use a specific stock item": "使用特定的庫存項目",
+ "The first item in this list would be picked by the default rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Mark {string1} of {string2} as open": "將 {string2} 的 {string1} 標記為已開封",
+ "Marked {string1} of {string2} as opened": "已將 {string2} 的 {string1} 標記為已開封",
+ "Mark as opened": "標記為已開封",
+ "Not opened": "未開封",
+ "Opened": "已開封",
+ "{string0} opened": "{string0} 已開封",
+ "Product due": "物品到期",
+ "Task due": "任務到期",
+ "Chore due": "家務到期",
+ "Battery charge cycle due": "電池充電到期",
+ "Show clock in header": "在上方顯示時鐘",
+ "Stock settings": "庫存設定",
+ "Shopping list to stock workflow": "購物清單到庫存的工作流程",
+ "Skip": "跳過",
+ "Servings": "份數",
+ "Costs": "花費",
+ "Based on the prices of the last purchase per product": "按每件物品的上次購買價格",
+ "The ingredients listed here result in this amount of servings": "此處列出的食材數量已採計份數",
+ "Do not check against the shopping list when adding missing items to it": "向購物清單中加入不足項目時無須檢查購物清單數量",
+ "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list": "在預設狀況下,被加到購物清單中的數量為「所需數量 - 庫存數量 - 購物清單數量」。啟用此選項後,僅根據庫存數量而不檢查購物清單中已存在的數量。",
+ "Picture": "圖片",
+ "Uncheck ingredients to not put them on the shopping list": "取消勾選不加入購物清單的食材",
+ "This is for statistical purposes only": "此資料僅用於統計",
+ "You have to select a recipe": "請選擇一份食譜",
+ "Key type": "金鑰類型",
+ "Share/Integrate calendar (iCal)": "分享/整合日曆(iCal)",
+ "Use the following (public) URL to share or integrate the calendar in iCal format": "使用以下(公開) URL 以 iCal 格式分享或整合日曆",
+ "Allow partial units in stock": "允許拆分單位庫存",
+ "Enable tare weight handling": "啟用皮重處理",
+ "This is useful e.g. for flour in jars - on purchase/consume/inventory you always weigh the whole jar, the amount to be posted is then automatically calculated based on what is in stock and the tare weight defined below": "這很有用。例如:罐中的麵粉在購買/消耗/調整庫存時可整罐秤重,該差值將按庫存及空罐重自動算出。",
+ "Tare weight": "皮重",
+ "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated": "啟用皮重處理:請將整個容器秤重,填入數量將自動計算。",
+ "You have to select a location": "請選擇一個位置",
+ "You have to select a store": "請選擇一個店家",
+ "List": "清單",
+ "Gallery": "圖庫",
+ "The current picture will be deleted on save": "",
+ "Journal for this battery": "此電池的日誌",
+ "System info": "系統資訊",
+ "Changelog": "更新日誌",
+ "will be multiplied by a factor of {string1} to get {string2}": "將乘以係數 {string1} 而得到 {string2}",
+ "The given date is earlier than today, are you sure?": "填寫的日期早於今天,確定嗎?",
+ "Product count": "物品數量",
+ "Type a new product name or barcode and hit TAB or ENTER to start a workflow": "輸入新的物品名稱或條碼並按下 TAB 以啟動工作流程",
+ "This will be used as the default setting when adding this product as a recipe ingredient": "此為將物品設定為食譜食材時的預設設定",
+ "Add item": "新增項目",
+ "Selected shopping list": "所選購物清單",
+ "New shopping list": "建立新的購物清單",
+ "Delete shopping list": "刪除購物清單",
+ "Chores settings": "家務設定",
+ "Batteries settings": "電池設定",
+ "Tasks settings": "任務設定",
+ "Create shopping list": "新增購物清單",
+ "Are you sure to delete shopping list \"{string0}\"?": "確定要刪除購物清單「{string0}」嗎?",
+ "Average shelf life": "平均庫存期",
+ "Spoil rate": "報廢率",
+ "Show more": "全部顯示",
+ "Show less": "簡略顯示",
+ "The amount must be between {string1} and {string2}": "數量須在 {string1} 和 {string2} 之間",
+ "Day of month": "一個月中的某天",
+ "Monday": "星期一",
+ "Tuesday": "星期二",
+ "Wednesday": "星期三",
+ "Thursday": "星期四",
+ "Friday": "星期五",
+ "Saturday": "星期六",
+ "Sunday": "星期日",
+ "Configure userfields": "設定自定義欄位",
+ "Userfields": "自定義欄位",
+ "Entity": "實體",
+ "Caption": "標題",
+ "Type": "類型",
+ "Create userfield": "新增自定義欄位",
+ "A entity is required": "實體為必填項目",
+ "A caption is required": "標題為必填項目",
+ "A type is required": "類型為必填項目",
+ "Show as column in tables": "在表格中顯示為列",
+ "This is required and can only contain letters and numbers": "此為必填項目且只能包含字母和數字",
+ "Edit userfield": "編輯自定義欄位",
+ "Plural forms": "複數形式",
+ "One plural form per line, the current language requires": "當前語言要求每行一種複數形式",
+ "Plural count": "複數",
+ "Plural rule": "複數規則",
+ "in plural form": "複數形式",
+ "Not enough in stock, {count} ingredient missing | Not enough in stock, {count} ingredients missing": "食材 {count} 庫存不足",
+ "Not enough in stock, but already on the shopping list": "庫存不足,但已在購物清單中",
+ "Not enough in stock": "庫存不足",
+ "Expiring soon days": "即將過期天數",
+ "Default location": "預設位置",
+ "Default amount for purchase": "預設購買數量",
+ "Default amount for consume": "預設消耗數量",
+ "Variable amount": "可變數量",
+ "When this is not empty, it will be shown instead of the amount entered above while the amount there will still be used for stock fulfillment checking": "若此欄位不為空,則將顯示它而非上面輸入的數量,該數量仍將用於需求庫存檢查。",
+ "Track date only": "僅追蹤日期",
+ "When enabled only the day of an execution is tracked, not the time": "啟用後,僅追蹤執行的日期,而不追蹤時間。",
+ "Consume {string1} of {string2}": "消耗 {string2} 的 {string1}",
+ "Meal plan": "菜單",
+ "Add recipe on {string0}": "在 {string0} 上增加食譜",
+ "{count} serving | {count} servings": "{count} 份",
+ "Week costs": "週花費",
+ "Configuration": "設定",
+ "A predefined list of values, one per line": "預定義的值列表,每行一個",
+ "Products": "物品",
+ "Marked task {string0} as completed on {string0}": "已將任務 {string0} 標記為在 {string0} 上已完成",
+ "Booking has subsequent dependent bookings, undo not possible": "已有後續的相關預訂,故無法取消。",
+ "per serving": "每份",
+ "Never": "從未",
+ "Today": "今天",
+ "Consume {string1} of {string2} as spoiled": "將 {string2} 的 {string1} 設為報廢",
+ "Not all ingredients of recipe \"{string0}\" are in stock, nothing removed": "食譜「{string0}」並非所有食材都有庫存,未處理。",
+ "Undo task": "取消任務",
+ "Due date rollover": "到期日期展延",
+ "When enabled the chore can never be overdue, the due date will shift forward each day when due": "啟用後,家務就永遠不會逾期,到期日期將在到期時向後挪一天。",
+ "Location Content Sheet": "位置內容表",
+ "Print": "列印",
+ "all locations": "所有位置",
+ "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it": "您可在此列印各位置的現有庫存,可用來懸掛並備註消耗的東西。",
+ "this location": "此位置",
+ "Consumed amount": "已消耗數量",
+ "Time of printing": "列印時間",
+ "Are you sure to delete equipment \"{string0}\"?": "確定要刪除設備「{string0}」嗎?",
+ "Parent product": "母物品",
+ "Not possible because this product is already used as a parent product in another product": "已為另一物品的母物品,故無法完成。",
+ "Default conversions": "預設轉換",
+ "Factor": "係數",
+ "1 {string0} is the same as...": "1 {string0} 等同於...",
+ "Create QU conversion": "新增 QU 轉換",
+ "Default for QU": "預設 QU",
+ "Quantity unit from": "來源數量單位",
+ "Quantity unit to": "目的數量單位",
+ "This cannot be equal to {string0}": "這不能等於 {string0}",
+ "This means 1 {string1} is the same as {string2} {string3}": "這代表 1 {string1} 與 {string2} {string3} 相同",
+ "QU conversions": "QU 轉換",
+ "Product overrides": "物品覆寫",
+ "Override for product": "覆寫物品",
+ "This equals {string1} {string2}": "這等於 {string1}{string2}",
+ "Edit QU conversion": "編輯 QU 轉換",
+ "An assignment type is required": "分配類型為必填項目",
+ "Assignment type": "分配類型",
+ "This means the next execution of this chore is scheduled 1 day after the last execution": "這代表此家務下一次執行被安排在上一次執行的 1 天之後",
+ "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below": "這代表此家務下一次執行被安排在上一次執行的 1 天之後,但僅適用於以下所選的日子。",
+ "This means the next execution of this chore is not scheduled": "這代表此家務尚未被安排下一次執行",
+ "This means the next execution of this chore is scheduled on the below selected day of each month": "這代表此家務被安排在每月的以下所選日子執行",
+ "This means the next execution of this chore will not be assigned to anyone": "這代表此家務下一次執行將不會分配給任何人",
+ "This means the next execution of this chore will be assigned to the one who executed it least": "這代表此家務下一次執行將分配給最少做這件家務的人",
+ "This means the next execution of this chore will be assigned randomly": "這代表此家務下一次執行將隨機分配",
+ "This means the next execution of this chore will be assigned to the next one in alphabetical order": "這代表此家務下一次執行將分配給按字母順序的下一位",
+ "Assign to": "分配給",
+ "This assignment type requires that at least one is assigned": "此分配類型要求至少分配一個",
+ "{count} chore is assigned to me | {count} chores are assigned to me": "{count} 件家務分配給我",
+ "Assigned to me": "分配給我",
+ "assigned to {string0}": "分配給 {string0}",
+ "Assignment": "分配",
+ "Consume product on chore execution": "在執行家務時消耗物品",
+ "Are you sure to delete user field \"{string0}\"?": "確定要刪除自定義欄位「{string0}」嗎?",
+ "Userentities": "自定義實體",
+ "Create userentity": "新增自定義實體",
+ "Show in sidebar menu": "在選單中顯示",
+ "Edit userentity": "編輯自定義實體",
+ "Edit {string0}": "編輯 {string0}",
+ "Create {string0}": "新增 {string0}",
+ "Are you sure to delete this userobject?": "確定要刪除此自定義物件嗎?",
+ "Icon CSS class": "圖標 CSS 類",
+ "For example": "舉例",
+ "Configure fields": "設定欄位",
+ "Quantity unit plural form testing": "數量單位複數形式檢查",
+ "Result": "結果",
+ "Test plural forms": "測試複數形式",
+ "Scan a barcode": "掃描條碼",
+ "Error while initializing the barcode scanning library": "初始化條碼掃描函式庫時發生錯誤",
+ "The resulting price of this ingredient will be multiplied by this factor": "此食材的價格將被乘以此係數",
+ "Price factor": "價格係數",
+ "Do you find grocy useful?": "您覺得 grocy 有用嗎?",
+ "Say thanks": "表示感謝",
+ "Search for recipes containing this product": "搜尋包含該物品的食譜",
+ "Add to shopping list": "加入購物清單",
+ "Added {string1} of {string2} to the shopping list \"{string3}\"": "已將 {string2} 的 {string1} 加入購物清單「{string3}」",
+ "Output": "輸出",
+ "Energy (kcal)": "熱量(大卡)",
+ "Per stock quantity unit": "每庫存數量單位",
+ "Barcode scanner testing": "條碼掃描測試",
+ "Expected barcode": "預期條碼",
+ "Scan field": "掃描欄位",
+ "Scanned barcodes": "已掃描條碼",
+ "Hit": "Hit",
+ "Miss": "Miss",
+ "Display recipe": "顯示食譜",
+ "Accumulate sub products min. stock amount": "累計子物品的最小庫存數量",
+ "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product": "啟用後,子物品的最小庫存數量將累計到該物品中,這代表子物品將永遠不會「不足」。",
+ "Are you sure to remove this conversion?": "確定要刪除此單位轉換嗎?",
+ "Unit price": "單價",
+ "Total price": "總價",
+ "in {string0} and based on the purchase quantity unit": "按購買數量單位以 {string0} 為單位",
+ "Unlimited": "無上限",
+ "Clear": "清除",
+ "Are you sure to remove the included recipe \"{string0}\"?": "確定要刪除隨附的食譜「{string0}」嗎?",
+ "Period interval": "週期間隔",
+ "This means the next execution of this chore should only be scheduled every {string0} days": "這代表此家務僅應在每 {string0} 天安排下一次執行",
+ "This means the next execution of this chore should only be scheduled every {string0} weeks": "這代表此家務僅應在每 {string0} 週安排下一次執行",
+ "This means the next execution of this chore should only be scheduled every {string0} months": "這代表此家務僅應在每 {string0} 個月安排下一次執行",
+ "This means the next execution of this chore is scheduled 1 year after the last execution": "這代表此家務下一次執行被安排在上一次執行的 1 年之後",
+ "This means the next execution of this chore should only be scheduled every {string0} years": "這代表此家務僅應在每 {string0} 年安排下一次執行",
+ "Transfer": "轉移",
+ "From location": "從位置",
+ "To location": "到位置",
+ "There are no units available at this location": "此位置沒有可用單位",
+ "Amount: {string1}; Due on {string2}; Bought on {string3}": "數量:{string1}; 將於 {string2} 逾期; 在 {string3} 時購買",
+ "Transfered {string1} of {string2} from {string3} to {string4}": "從 {string3} 到 {string4} 轉移 {string2} 中的 {string1}",
+ "Stock entries": "庫存條目",
+ "Best before date": "賞味期限",
+ "Purchased date": "購買日期",
+ "Consume all {string0} for this stock entry": "消耗此庫存條目的所有 {string0}",
+ "The amount cannot be lower than {string1}": "該數量不能小於{string1}",
+ "Stock entry successfully updated": "更新庫存條目已成功",
+ "Edit stock entry": "編輯庫存條目",
+ "Camera access is only possible when supported and allowed by your browser and when grocy is served via a secure (https://) connection": "只有在瀏覽器支援且使用安全(https://)連線時才能在允許下使用相機",
+ "Keep screen on": "螢幕恆亮",
+ "Keep screen on while displaying a \"fullscreen-card\"": "在全螢幕模式時螢幕恆亮",
+ "A purchased date is required": "購買日期為必填項目",
+ "When a product is selected, one unit (per serving in stock quantity unit) will be added to stock on consuming this recipe": "當選擇一項物品後,在消耗此食譜時將一單位(一份庫存數量單位)加到庫存中。",
+ "Produces product": "製作物品",
+ "This booking cannot be undone": "此預訂無法取消",
+ "Booking does not exist or was already undone": "預訂不存在或已取消",
+ "Are you sure to delete API key \"{string0}\"?": "確定要刪除 API 金鑰「{string0}」嗎?",
+ "Add note": "新增備註",
+ "Add note on {string0}": "在 {string0} 上新增備註",
+ "per day": "每天",
+ "Only undone items": "僅未完成項目",
+ "Add product": "新增物品",
+ "Add product on {string0}": "在 {string0} 上新增物品",
+ "Consume all ingredients needed by this weeks recipes or products": "消耗本週食譜或物品所需的所有食材",
+ "Meal plan recipe": "菜單食譜",
+ "Meal plan note": "菜單備註",
+ "Meal plan product": "菜單物品",
+ "Scan mode": "掃描模式",
+ "on": "開",
+ "off": "關",
+ "Scan mode is on but not all required fields could be populated automatically": "掃描模式已開啟,但並非所有必填欄位皆可自動填入",
+ "Is freezer": "冷凍庫",
+ "When moving products from/to a freezer location, the products best before date is automatically adjusted according to the product settings": "將物品移出/移入冷凍庫位置時,會根據物品設定自動調整賞味期限。",
+ "This cannot be the same as the \"From\" location": "這不能與「來源」存放位置相同",
+ "Thawed": "已解凍",
+ "Frozen": "已冷凍",
+ "Are you sure to delete userentity \"{string0}\"?": "確定要刪除自定義實體「{string0}」嗎?",
+ "Shopping list settings": "購物清單設定",
+ "Show a month-view calendar": "顯示月視圖日曆",
+ "Edit note on {string0}": "在 {string0} 上編輯備註",
+ "Edit product on {string0}": "在 {string0} 上編輯物品",
+ "Edit recipe on {string0}": "在 {string0} 上編輯食譜",
+ "Desired servings": "需要份數",
+ "Base: {string0}": "按: {string0}",
+ "Recipes settings": "食譜設定",
+ "Recipe card": "食譜卡",
+ "Group ingredients by their product group": "按物品分類對食材進行分類",
+ "Unknown store": "不明店家",
+ "Store": "店家",
+ "Transaction successfully undone": "取消處理成功",
+ "Default store": "預設店家",
+ "Consume this stock entry": "消耗此庫存條目",
+ "Mark this stock entry as open": "將此庫存條目標示為已開封",
+ "Mark this item as done": "標記此項目為已完成",
+ "Edit this item": "編輯此項目",
+ "Delete this item": "刪除此項目",
+ "Show an icon if the product is already on the shopping list": "當物品已經在購物清單時顯示圖示",
+ "Calories": "大卡",
+ "means {string1} per {string2}": "代表每 {string2} 包含 {string1}",
+ "Create inverse QU conversion": "新增反向 QU 轉換",
+ "Create recipe": "新增食譜",
+ "Save & continue to add ingredients and included recipes": "儲存並繼續新增食材及隨附的食譜",
+ "Save & continue": "儲存並繼續",
+ "Save & return to recipes": "儲存並返回食譜",
+ "Stock value": "庫存數",
+ "Average price": "平均價格",
+ "Active": "有效",
+ "Barcodes": "條碼",
+ "Barcode": "條碼",
+ "Create Barcode": "新增條碼",
+ "Barcode for product": "物品條碼",
+ "Edit Barcode": "編輯條碼",
+ "Not enough in stock (not included in costs), {string0} ingredient missing": "食材 {string0} 庫存不足(不包含在花費內)",
+ "Based on the prices of the default consume rule which is \"Opened first, then first due first, then first in first out\"": "",
+ "Not enough in stock (not included in costs), {string1} missing, {string2} already on shopping list": "{string1} 庫存不足(不包含在花費內),其中 {string2} 已經加入購物清單。",
+ "Quantity unit stock cannot be changed after first purchase": "庫存數量單位無法於初次購買後更改",
+ "Clear filter": "清除過濾條件",
+ "Permissions for user {string0}": "使用者 {string0} 的權限",
+ "Are you sure you want to remove full permissions for yourself?": "確定要刪除個人最高權限嗎?",
+ "Permissions saved": "儲存權限設定",
+ "You are not allowed to view this page": "無權限瀏覽此頁面",
+ "Page not found": "未找到頁面",
+ "Unauthorized": "未認證",
+ "Error source": "錯誤來源",
+ "Error message": "錯誤訊息",
+ "Stack trace": "堆疊追蹤",
+ "Easy error info copy & paste (for reporting)": "複製並貼上簡易錯誤資訊(回報用)",
+ "This page does not exist": "此頁面不存在",
+ "You will be redirected to the default page in {string0} seconds": "將於 {string0} 秒後回到預設頁面",
+ "Server error": "伺服器錯誤",
+ "A server error occured while processing your request": "系統於處理要求時發生錯誤",
+ "If you think this is a bug, please report it": "若您覺得這是個 Bug,請回報。",
+ "Language": "語言",
+ "User settings": "使用者設定",
+ "Default": "預設",
+ "Stock journal summary": "庫存日誌概要",
+ "Journal summary": "日誌概要",
+ "Journal summary for this product": "此物品的日誌概要",
+ "Consume exact amount": "消耗精確數量",
+ "Value": "數值",
+ "{string0} total value": "{string0} 總數",
+ "Show purchased date on purchase and inventory page (otherwise the purchased date defaults to today)": "在購買和庫存頁面顯示購買日期欄位(否則預設購買日期為今天)",
+ "Common": "一般",
+ "Decimal places allowed for amounts": "允許數量使用小數",
+ "Decimal places allowed for prices": "允許價格使用小數",
+ "Stock entries for this product": "此物品的庫存條目",
+ "Edit shopping list": "編輯購物清單",
+ "Save & continue to add quantity unit conversions & barcodes": "儲存並繼續新增數量單位轉換及條碼",
+ "Save & return to products": "儲存並返回物品",
+ "Save & continue to add conversions": "儲存並繼續新增轉換",
+ "Save & return to quantity units": "儲存並返回數量單位",
+ "price": "價格",
+ "New stock amount": "新庫存數量",
+ "Price per stock unit": "每庫存單位單價",
+ "Table options": "",
+ "This product is currently on a shopping list": "此物品已在購物清單中",
+ "Undo transaction": "取消處理",
+ "Transaction type": "處理類型",
+ "Transaction time": "處理時間",
+ "Chore journal": "家務日誌",
+ "Track chore execution": "追蹤家務執行",
+ "Mark task as completed": "標記任務為已完成",
+ "Track charge cycle": "追蹤電池充電",
+ "Battery journal": "電池日誌",
+ "This product has a picture": "此物品有圖片",
+ "Consume this stock entry as spoiled": "將此庫存條目設為已報廢",
+ "Configure user permissions": "設定使用者權限",
+ "Show a QR-Code for this API key": "顯示此 API 金鑰的 QR-Code",
+ "This is the default quantity unit used when adding this product to the shopping list": "此為將物品加入購物清單時的預設數量單位",
+ "Show a warning when the due date of the purchased product is earlier than the next due date in stock": "當所購買物品的到期日期比庫存物品的到期日期早時顯示警告",
+ "This is due earlier than already in-stock items": "",
+ "When enabled, after changing/scanning a product and if all fields could be automatically populated (by product and/or barcode defaults), the transaction is automatically submitted": "",
+ "Quick consume amount": "快速消耗數量",
+ "This amount is used for the \"quick consume/open buttons\" on the stock overview page (related to quantity unit stock)": "此數量用於庫存總覽的「快速消耗/開封按鈕」(使用庫存數量單位)",
+ "Copy": "",
+ "Are you sure to remove this barcode?": "確定要刪除此條碼嗎?",
+ "Due date type": "到期日期類型",
+ "Based on the selected type, the highlighting on the stock overview page will be different": "庫存總覽頁面會標記出不同的所選類型",
+ "Means that the product is maybe still safe to be consumed after its due date is reached": "代表逾期後物品可能仍可正常使用",
+ "Expiration date": "有效期限",
+ "Means that the product is not safe to be consumed after its due date is reached": "代表逾期後物品無法正常使用",
+ "For purchases this amount of days will be added to today for the due date suggestion": "所購買物品的建議到期日期為今天的日期加上此天數",
+ "-1 means that this product will be never overdue": "",
+ "Default due days": "預設到期天數",
+ "When this product was marked as opened, the due date will be replaced by today + this amount of days (a value of 0 disables this)": "",
+ "Default due days after opened": "預設開封後到期天數",
+ "On moving this product to a freezer location (so when freezing it), the due date will be replaced by today + this amount of days": "",
+ "Default due days after freezing": "預設冷凍後到期天數",
+ "On moving this product from a freezer location (so when thawing it), the due date will be replaced by today + this amount of days": "將此物品移出冷凍庫時(將其解凍時),到期日期將由今天加上此天數代替",
+ "Default due days after thawing": "預設解凍後到期天數",
+ "Next due date": "新到期日期",
+ "{count} product is due | {count} products are due": "{count} 項物品到期",
+ "Due date": "到期日期",
+ "Never overdue": "永不逾期",
+ "{count} product is expired | {count} products are expired": "{count} 物品已過期",
+ "Expired": "已過期",
+ "Due soon days": "即將到期天數",
+ "Add overdue/expired products": "新增逾期/過期物品",
+ "Products with tare weight enabled are currently not supported for transfer": "目前不支援啟用皮重處理選項的物品轉移",
+ "This cannot be lower than {string1} or equal {string2} and needs to be a valid number with max. {string3} decimal places": "此須為 {string3} 位小數的有效數字且不能小於 {string1} 或等於 {string2}",
+ "This must be between {string1} and {string2}, cannot equal {string3} and needs to be a valid number with max. {string4} decimal places": "此須為 {string4} 位小數的有效數字且不能等於 {string3},須在 {string1} 和 {string2} 之間。",
+ "This cannot be lower than {string1} and needs to be a valid number with max. {string2} decimal places": "此須為 {string2} 位小數的有效數字且不能小於 {string1}",
+ "This must between {string1} and {string2} and needs to be a valid number with max. {string3} decimal places": "此須為 {string3} 位小數的有效數字且須在 {string1} 和 {string2} 之間",
+ "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default due days\" set": "如果物品設定了“預設到期天數”,則使用上次價格和購物清單項目的數量自動進行預訂",
+ "When moving products from/to a freezer location, the products due date is automatically adjusted according to the product settings": "將物品移出/移入冷凍庫位置時,會根據物品設定自動調整到期日期。",
+ "This is the internal field name, e. g. for the API": "此為內部欄位名稱,例如用於 API。",
+ "This is used to display the field on the frontend": "用於前端顯示欄位",
+ "Multiple Userfields will be ordered by that number on the input form": "多個自定義欄位將按輸入格式編號排序",
+ "Sort number": "排序編號",
+ "Download file": "下載檔案",
+ "Use the products \"Quick consume amount\"": "",
+ "Disabled": "",
+ "This also removes any stock amount, the journal and all other references of this product - consider disabling it instead, if you want to keep that and just hide the product.": "",
+ "Show disabled": "",
+ "Never show on stock overview": "",
+ "None": "",
+ "Group by": "",
+ "Ingredient group": "",
+ "Reset": "",
+ "Are you sure to reset the table options?": "",
+ "Hide/view columns": "隱藏/顯示欄位",
+ "A different amount/unit can then be used below while for stock fulfillment checking it is sufficient when any amount of the product in stock": "",
+ "Last price (Unit)": "",
+ "Last price (Total)": "",
+ "Show header": "",
+ "Group by product group": "",
+ "Table": "",
+ "Layout type": "",
+ "Merge this product with another one": "",
+ "Merge products": "",
+ "Product to keep": "",
+ "Product to remove": "",
+ "Error while merging products": "",
+ "After merging, this product will be kept": "",
+ "After merging, all occurences of this product will be replaced by \"Product to keep\" (means this product will not exist anymore)": "",
+ "Merge": "",
+ "Title": "",
+ "Link": "",
+ "The stock overview page lists all products which are currently in-stock or below their min. stock amount - enable this to hide this product there always": "",
+ "Print options": "",
+ "A product or a note is required": "",
+ "no-assignment": "不指派",
+ "who-least-did-first": "閒置優先指派",
+ "random": "隨機",
+ "in-alphabetical-order": "按字母排序",
+ "timeago_locale": "zh-TW",
+ "timeago_nan": "NaN 年以前",
+ "moment_locale": "zh-tw",
+ "datatables_localization": "{\"sProcessing\": \"處理中...\",\"sLengthMenu\": \"顯示 _MENU_ 項結果\",\"sZeroRecords\": \"沒有符合的結果\",\"sInfo\": \"顯示第 _START_ 至 _END_ 項結果,共 _TOTAL_ 項\",\"sInfoEmpty\": \"顯示第 0 至 0 項結果,共 0 項\",\"sInfoFiltered\": \"(由 _MAX_ 項結果過濾)\",\"sInfoPostFix\": \"\",\"sSearch\": \"搜尋:\",\"sUrl\": \"\",\"sEmptyTable\": \"表格無資料\",\"sLoadingRecords\": \"載入中...\",\"sInfoThousands\": \",\",\"oPaginate\": {\"sFirst\": \"首頁\",\"sPrevious\": \"上頁\",\"sNext\": \"下頁\",\"sLast\": \"末頁\"},\"oAria\": {\"sSortAscending\": \": 以升冪排列此列\",\"sSortDescending\": \": 以降冪排列此列\"}}",
+ "summernote_locale": "zh-TW",
+ "fullcalendar_locale": "zh-tw",
+ "bootstrap-select_locale": "zh_TW",
+ "purchase": "購買",
+ "transfer_from": "轉自",
+ "transfer_to": "轉給",
+ "consume": "消耗",
+ "inventory-correction": "庫存修正",
+ "product-opened": "已開封物品",
+ "stock-edit-old": "舊庫存修改",
+ "stock-edit-new": "新庫存修改",
+ "self-production": "自產物品",
+ "manually": "手動",
+ "dynamic-regular": "自訂週期",
+ "daily": "每日",
+ "weekly": "每周",
+ "monthly": "每月",
+ "yearly": "每年",
+ "text-single-line": "單行文字",
+ "text-multi-line": "多行文字",
+ "number-integral": "整數",
+ "number-decimal": "小數",
+ "date": "日期",
+ "datetime": "日期與時間",
+ "checkbox": "勾選",
+ "preset-list": "預選列表",
+ "preset-checklist": "預勾選列表",
+ "link": "連結",
+ "link-with-title": "",
+ "file": "檔案",
+ "image": "圖片",
+ "ADMIN": "系統管理員",
+ "USERS_CREATE": "新增使用者",
+ "USERS_EDIT": "編輯使用者",
+ "USERS_READ": "顯示使用者",
+ "USERS_EDIT_SELF": "編輯使用者個人資料",
+ "BATTERIES_UNDO_CHARGE_CYCLE": "取消電池充電",
+ "BATTERIES_TRACK_CHARGE_CYCLE": "追蹤電池充電",
+ "CHORE_TRACK_EXECUTION": "追蹤家務執行",
+ "CHORE_UNDO_EXECUTION": "取消家務執行",
+ "MASTER_DATA_EDIT": "編輯主資料",
+ "TASKS_UNDO_EXECUTION": "取消任務執行",
+ "TASKS_MARK_COMPLETED": "標記任務完成",
+ "STOCK_EDIT": "庫存編輯",
+ "STOCK_TRANSFER": "庫存轉移",
+ "STOCK_INVENTORY": "庫存清單",
+ "STOCK_CONSUME": "庫存消耗",
+ "STOCK_OPEN": "庫存開封",
+ "STOCK_PURCHASE": "庫存採購",
+ "SHOPPINGLIST_ITEMS_ADD": "新增購物清單項目",
+ "SHOPPINGLIST_ITEMS_DELETE": "刪除購物清單項目",
+ "USERS": "使用者",
+ "STOCK": "庫存",
+ "SHOPPINGLIST": "購物清單",
+ "CHORES": "家務",
+ "BATTERIES": "電池",
+ "TASKS": "任務",
+ "RECIPES": "食譜",
+ "EQUIPMENT": "設備",
+ "CALENDAR": "日曆",
+ "RECIPES_MEALPLAN": "菜單",
+ "cs": "捷克文",
+ "da": "丹麥文",
+ "de": "德文",
+ "el_GR": "希臘文",
+ "en": "英文",
+ "en_GB": "英文(大不列顛)",
+ "es": "西班牙文",
+ "fr": "法文",
+ "hu": "匈牙利文",
+ "it": "義大利文",
+ "ja": "日文",
+ "ko_KR": "韓文",
+ "nl": "荷蘭文",
+ "no": "挪威文",
+ "pl": "波蘭文",
+ "pt_BR": "葡萄牙文(巴西)",
+ "pt_PT": "葡萄牙文(葡萄牙)",
+ "ru": "俄文",
+ "sk_SK": "斯洛伐克文",
+ "sv_SE": "瑞典文",
+ "tr": "土耳其文",
+ "zh_TW": "正體中文(台灣)",
+ "zh_CN": "",
+ "he_IL": "",
+ "ta": "",
+ "fi": "",
+ "Cookies": "餅乾",
+ "Chocolate": "巧克力",
+ "Pantry": "儲藏室",
+ "Candy cupboard": "糖果櫃",
+ "Tinned food cupboard": "罐頭櫃",
+ "Fridge": "冰箱",
+ "Piece | Pieces": "件",
+ "Pack | Packs": "包",
+ "Glass | Glasses": "杯",
+ "Tin | Tins": "罐",
+ "Can | Cans": "罐",
+ "Bunch | Bunches": "捆",
+ "Gummy bears": "小熊軟糖",
+ "Crisps": "洋芋片",
+ "Eggs": "雞蛋",
+ "Noodles": "麵條",
+ "Pickles": "醃黃瓜",
+ "Gulash soup": "匈牙利湯",
+ "Yogurt": "優格",
+ "Cheese": "起司",
+ "Cold cuts": "冷盤肉",
+ "Paprika": "辣椒",
+ "Cucumber": "黃瓜",
+ "Radish": "蘿蔔",
+ "Tomato": "番茄",
+ "Changed towels in the bathroom": "更換浴室毛巾",
+ "Cleaned the kitchen floor": "清理廚房地板",
+ "Warranty ends": "保固過期",
+ "TV remote control": "電視遙控器",
+ "Alarm clock": "鬧鐘",
+ "Heat remote control": "暖爐遙控器",
+ "Lawn mowed in the garden": "清理花園草坪",
+ "Some good snacks": "美味零食",
+ "Pizza dough": "披薩麵團",
+ "Sieved tomatoes": "精選番茄",
+ "Salami": "義大利香腸",
+ "Toast": "吐司",
+ "Minced meat": "絞肉",
+ "Pizza": "披薩",
+ "Spaghetti bolognese": "番茄肉醬義大利麵",
+ "Sandwiches": "三明治",
+ "English": "英文",
+ "German": "德文",
+ "Italian": "義大利文",
+ "This is the note content of the recipe ingredient": "這是食譜食材中的備註",
+ "Demo User": "測試使用者",
+ "Gram | Grams": "克",
+ "Flour": "麵粉",
+ "Pancakes": "鬆餅",
+ "Sugar": "糖",
+ "Home": "首頁",
+ "Life": "生命",
+ "Projects": "專案",
+ "Repair the garage door": "修理車庫門",
+ "Fork and improve grocy": "協助改進 grocy",
+ "Find a solution for what to do when I forget the door keys": "規劃忘記鑰匙時的解決辦法",
+ "Sweets": "甜食",
+ "Bakery products": "烘焙用品",
+ "Tinned food": "罐頭",
+ "Butchery products": "肉品",
+ "Vegetables/Fruits": "蔬果",
+ "Refrigerated products": "冷藏食品",
+ "Coffee machine": "咖啡機",
+ "Dishwasher": "洗碗機",
+ "Liter": "公升",
+ "Liters": "公升",
+ "Bottle": "瓶",
+ "Bottles": "瓶",
+ "Milk": "牛奶",
+ "Chocolate sauce": "巧克力醬",
+ "Milliliters": "毫升",
+ "Milliliter": "毫升",
+ "Bottom": "底部",
+ "Topping": "配料",
+ "French": "法文",
+ "Turkish": "土耳其文",
+ "Spanish": "西班牙文",
+ "Russian": "俄文",
+ "The thing which happens on the 5th of every month": "每月 5 號發生的事情",
+ "The thing which happens daily": "每天發生的事情",
+ "The thing which happens on Mondays and Wednesdays": "每周一與每周三會發生的事情",
+ "Swedish": "瑞典文",
+ "Polish": "波蘭文",
+ "Milk Chocolate": "牛奶巧克力",
+ "Dark Chocolate": "黑巧克力",
+ "Slice | Slices": "片",
+ "Example userentity": "使用者自訂項目範例",
+ "This is an example user entity...": "這是一個使用者自訂項目範例",
+ "Custom field": "自訂欄位",
+ "Example field value...": "範例值",
+ "Waffle rolls": "蛋捲",
+ "Danish": "丹麥文",
+ "Dutch": "荷蘭文",
+ "Norwegian": "挪威文",
+ "Demo": "Demo",
+ "Stable version": "穩定版本",
+ "Preview version": "預覽版本",
+ "current release": "當前版本",
+ "not yet released": "尚未發布",
+ "Portuguese (Brazil)": "葡萄牙文(巴西)",
+ "This is a note": "這是一則備註",
+ "Freezer": "冷凍庫",
+ "Hungarian": "匈牙利文",
+ "Slovak": "斯洛伐克文",
+ "Czech": "捷克文",
+ "Portuguese (Portugal)": "葡萄牙文(葡萄牙)",
+ "DemoSupermarket1": "範例超市1",
+ "DemoSupermarket2": "範例超市2",
+ "Japanese": "日文",
+ "Chinese (Taiwan)": "正體中文(臺灣)",
+ "Greek": "希臘文",
+ "Korean": "韓文",
+ "Chinese (China)": "",
+ "Hebrew (Israel)": "",
+ "Tamil": "",
+ "Finnish": "",
+ "many awesome people": {
+ "": ""
+ },
+ "{project_link} made with ❤️ and ☕ by {contributors}": "",
+ "Automatically reload data": "",
+ "Night mode": "",
+ "Auto": "",
+ "Automatic night mode range": "",
+ "Invert": "",
+ "Keep screen on while displaying fullscreen content": "",
+ "This activates night mode between {start} and {end} the next day": {
+ "": ""
+ },
+ "This activates night mode between {start} and {end} the same day": {
+ "": ""
+ },
+ "Starts With": "",
+ "Ends With": "",
+ "Equals": "",
+ "Not Equals": "",
+ "Contains": "",
+ "Not Contains": "",
+ "Less Than": "",
+ "Less Than Or Equal": "",
+ "Equal": "",
+ "Greater Than Or Equal": "",
+ "Greater Than": "",
+ "Before": "",
+ "Before Or On": "",
+ "On Day": "",
+ "Not On Day": "",
+ "After Or On": "",
+ "After": "",
+ "item": {
+ "label": ""
+ }
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 7a255c25..b461a115 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
"@fullcalendar/moment": "4.4.2",
"@fullcalendar/timegrid": "4.4.2",
"@rollup/plugin-eslint": "^8.0.1",
+ "@types/luxon": "^1.27.0",
"animate.css": "^3.7.2",
"bootbox": "^5.5.2",
"bootstrap": "^4.5.2",
@@ -32,8 +33,14 @@
"jquery": "3.5.1",
"jquery-lazy": "^1.7.11",
"jquery-serializejson": "^2.9.0",
+ "lodash": "^4.17.21",
+ "luxon": "^1.27.0",
"moment": "^2.27.0",
"nosleep.js": "^0.11.0",
+ "primeflex": "^2.0.0",
+ "primeicons": "^4.1.0",
+ "primevue": "patch:primevue@3.5.1#./patches/primevue.diff",
+ "quill": "^1.3.7",
"sass": "^1.35.1",
"sprintf-js": "^1.1.2",
"startbootstrap-sb-admin": "4.0.0",
@@ -43,15 +50,23 @@
"timeago": "^1.6.7",
"timeago.js": "^4.0.2",
"toastr": "^2.1.4",
- "uuid": "^8.3.2"
+ "uuid": "^8.3.2",
+ "vue": "next",
+ "vue-i18n": "next",
+ "vue-router": "4",
+ "vuex": "next"
},
"devDependencies": {
"@babel/core": "^7.14.6",
"@babel/preset-env": "^7.14.7",
"@rollup/plugin-babel": "^5.3.0",
"@rollup/plugin-commonjs": "^19.0.0",
+ "@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^13.0.0",
"@rollup/plugin-replace": "^2.4.2",
+ "@typescript-eslint/eslint-plugin": "^4.28.1",
+ "@typescript-eslint/parser": "^4.28.1",
+ "@vue/compiler-sfc": "^3.1.4",
"autoprefixer": "^10.2.6",
"babel-core": "^6.26.3",
"babel-preset-es2015": "^6.24.1",
@@ -72,7 +87,13 @@
"postcss-import": "^14.0.2",
"rollup": "^2.52.1",
"rollup-plugin-postcss": "^4.0.0",
+ "rollup-plugin-typescript2": "^0.30.0",
+ "rollup-plugin-vue": "latest",
"standard": "^16.0.3",
- "uglify-js": "^3.13.10"
+ "tslib": "^2.3.0",
+ "typescript": "^4.3.5",
+ "uglify-js": "^3.13.10",
+ "vue-eslint-parser": "^7.7.2",
+ "vue-i18n-extract": "^1.2.3"
}
}
diff --git a/patches/primevue.diff b/patches/primevue.diff
new file mode 100644
index 00000000..8cb4c711
--- /dev/null
+++ b/patches/primevue.diff
@@ -0,0 +1,26 @@
+diff --git a/confirmationservice/ConfirmationService.d.ts b/confirmationservice/ConfirmationService.d.ts
+index de2ab1d8b4c83981eeb146e56a960816452e4fa6..cd921ea8c9d5f74dec8f7a1af5c48d5adf0de7a4 100644
+--- a/confirmationservice/ConfirmationService.d.ts
++++ b/confirmationservice/ConfirmationService.d.ts
+@@ -1,6 +1,7 @@
+ import Vue, { PluginFunction } from 'vue';
+
+-export const install: PluginFunction<{}>;
++declare const install: PluginFunction<{}>;
++export default install;
+
+ interface ConfirmationServiceMethods {
+ require(options: any): any;
+diff --git a/toastservice/ToastService.d.ts b/toastservice/ToastService.d.ts
+index 88a375aa3847a56796e586ec6c6cd1d527da0b67..8459f689a4265528e4ccaf917bf43c7e61835bbd 100755
+--- a/toastservice/ToastService.d.ts
++++ b/toastservice/ToastService.d.ts
+@@ -1,6 +1,7 @@
+ import Vue, { PluginFunction } from 'vue';
+
+-export const install: PluginFunction<{}>;
++declare const install: PluginFunction<{}>;
++export default install;
+
+ interface ToastServiceMethods {
+ add(message: any): any;
diff --git a/php/Controllers/RecipesApiController.php b/php/Controllers/RecipesApiController.php
index cc89b57a..4693f1ef 100644
--- a/php/Controllers/RecipesApiController.php
+++ b/php/Controllers/RecipesApiController.php
@@ -3,9 +3,185 @@
namespace Grocy\Controllers;
use Grocy\Controllers\Users\User;
+use Grocy\Services\RecipesService;
class RecipesApiController extends BaseApiController
{
+ public function GetAll(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
+ {
+ // this should be a database select & join,
+ // but the schema is fucked, so here we are.
+
+ $recipes = $this->getDatabase()->recipes()->where('type', RecipesService::RECIPE_TYPE_NORMAL)->orderBy('name', 'COLLATE NOCASE');
+ $recipesResolved = $this->getRecipesService()->GetRecipesResolved();
+
+ foreach($recipes as $recipe)
+ {
+ $recipe->need_fulfilled = FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1;
+ $recipe->need_fulfilled_with_shopping_list = FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1;
+ $recipe->missing_products_count = (int)FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count;
+ $recipe->costs = (float)FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->costs;
+ $recipe->calories = (float)FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->calories;
+ }
+
+ return $this->ApiResponse($response, $recipes);
+ }
+
+ public function GetRecipe(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
+ {
+ if (!isset($args['recipeId']))
+ {
+ return $this->GenericErrorResponse($response, "Recipe Not Found");
+ }
+ // TODO: Userfields!
+ /*
+ $renderArray = [
+ 'userfields' => $this->getUserfieldsService()->GetFields('recipes'),
+ 'userfieldValues' => $this->getUserfieldsService()->GetAllValues('recipes'),
+ ];
+ */
+
+ $recipe = $this->getDatabase()->recipes($args['recipeId']);
+ if(!$recipe)
+ {
+ return $this->GenericErrorResponse($response, "Recipe Not Found");
+ }
+ $recipe = $this->getRecipesService()->clean($recipe);
+
+ $recipesResolved = $this->getRecipesService()->GetRecipesResolved();
+
+ $recipe->need_fulfilled = FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1;
+ $recipe->need_fulfilled_with_shopping_list = FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1;
+ $recipe->missing_products_count = (int)FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count;
+ $recipe->costs = (float)FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->costs;
+ $recipe->calories = (float)FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->calories;
+
+ // another thing that should be a join, but is "impossible" to do.
+ // n.b. it is possible, but way harder than it should be.
+ $products = $this->getDatabase()->select('products')->fetchAll();
+
+ $ingredients = $this->getDatabase()->recipes_pos_resolved()->where('recipe_id = :1 AND is_nested_recipe_pos = 0', $recipe->id)->orderBy('ingredient_group', 'ASC', 'product_group', 'ASC');
+
+ $recipe->ingredients = $this->resolveIngredients($ingredients, $products);
+
+ $selectedRecipeSubRecipes = $this->getDatabase()
+ ->recipes()
+ ->where('id IN (SELECT includes_recipe_id FROM recipes_nestings_resolved WHERE recipe_id = :1 AND includes_recipe_id != :1)', $recipe->id)
+ ->orderBy('name', 'COLLATE NOCASE')
+ ->fetchAll();
+
+ $recipe->subRecipes = [];
+ // for some reason we need to set the keys explicitly,
+ // otherwise json_encode doesn't work properly. and doesn't
+ // make a nice array.
+ $i = 0;
+
+ $recipe->servings = null; // because OF COURSE we can't just use desired_servings here.
+
+ // of COURSE this is in another view, because I can't join, for the love of god.
+ $nestings = $this->getDatabase()->recipes_nestings()->where('recipe_id', $recipe->id)->fetchAll();
+ foreach ($selectedRecipeSubRecipes as $subRecipe)
+ {
+ $id = $subRecipe->id;
+ $ingredients = $this->getDatabase()->recipes_pos_resolved()->where('recipe_id = :1 AND is_nested_recipe_pos = 0', $id)->orderBy('ingredient_group', 'ASC', 'product_group', 'ASC');
+ foreach ($ingredients as $pos)
+ {
+ // who the fuck knows. maybe at some point recursive nesting was allowed? But I'm pretty sure that it would break other things.
+ if ($id == $recipe->id) continue;
+
+ $pos2 = $this->getDatabase()->recipes_pos_resolved()->where('recipe_id = :1 AND recipe_pos_id = :2 AND is_nested_recipe_pos = 1', $recipe->id, $pos->recipe_pos_id)->fetch();
+ $pos->recipe_amount = $pos2->recipe_amount;
+ $pos->missing_amount = $pos2->missing_amount;
+ }
+ // LessQL makes it impossible to use array_filter(), so a Loop it is.
+ foreach($nestings as $nesting)
+ {
+ if((int)$nesting->includes_recipe_id == (int)$subRecipe->id)
+ {
+ $subRecipe->servings = (int)$nesting->servings;
+ break;
+ }
+ }
+ $subRecipe->ingredients = $this->resolveIngredients($ingredients, $products);
+ $recipe->subRecipes[$i++] = $this->getRecipesService()->clean($subRecipe);
+ }
+
+ return $this->ApiResponse($response, $recipe);
+ }
+
+ // Special API endpoint because we need to return the recipe we just edited to avoid another network roundtrip.
+ public function EditRecipe(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
+ {
+ User::checkPermission($request, User::PERMISSION_MASTER_DATA_EDIT);
+
+ if (!isset($args['recipeId']))
+ {
+ return $this->GenericErrorResponse($response, "Recipe Not Found");
+ }
+ // TODO: Userfields!
+ /*
+ $renderArray = [
+ 'userfields' => $this->getUserfieldsService()->GetFields('recipes'),
+ 'userfieldValues' => $this->getUserfieldsService()->GetAllValues('recipes'),
+ ];
+ */
+
+ $recipe = $this->getDatabase()->recipes($args['recipeId']);
+ if(!$recipe)
+ {
+ return $this->GenericErrorResponse($response, "Recipe Not Found");
+ }
+
+ $requestBody = $this->GetParsedAndFilteredRequestBody($request);
+
+ try
+ {
+
+ $recipe->update($requestBody);
+ $success = $recipe->isClean();
+
+ return $this->GetRecipe($request, $response, $args);
+ }
+ catch (\Exception $ex)
+ {
+ return $this->GenericErrorResponse($response, $ex->getMessage());
+ }
+ }
+
+ // the ingredients are grouped, maybe, maybe not. who the fuck knows, really.
+ // Because SQL doing SQL things, we have to resolve that correctly here.
+ // that shit *should* be sorted and this resolving function *should* preserve that.
+ function resolveIngredients($ingredients, $products)
+ {
+ $ret = [];
+
+ foreach($ingredients as $ingredient)
+ {
+ $ing = $this->getRecipesService()->CleanIngredient($ingredient);
+ $key = $ing->ingredient_group;
+ $ing->product = $this->findProduct($ing->product_id, $products);
+ if($key == null) $key = "default";
+
+ if(!isset($ret[$key])) $ret[$key] = [];
+
+ $ret[$key][] = $ing;
+ }
+
+ return $ret;
+ }
+
+ // fuck it.
+ function findProduct($productId, $products)
+ {
+ foreach($products as $product)
+ {
+ if($product['id'] == $productId)
+ {
+ return $this->getStockService()->CleanProduct($product);
+ }
+ }
+ }
+
public function AddNotFulfilledProductsToShoppingList(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
{
User::checkPermission($request, User::PERMISSION_SHOPPINGLIST_ITEMS_ADD);
diff --git a/php/Controllers/StockApiController.php b/php/Controllers/StockApiController.php
index c76fd24a..442e513a 100644
--- a/php/Controllers/StockApiController.php
+++ b/php/Controllers/StockApiController.php
@@ -329,6 +329,16 @@ public function CurrentStock(\Psr\Http\Message\ServerRequestInterface $request,
return $this->ApiResponse($response, $this->getStockService()->GetCurrentStock());
}
+ public function StockOverview(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
+ {
+ $usersService = $this->getUsersService();
+
+ return $this->ApiResponse($response, [
+ 'currentStock' => $this->getStockService()->GetCurrentStockOverview(),
+ 'currentStockLocations' => $this->getStockService()->GetCurrentStockLocations(),
+ ]);
+ }
+
public function CurrentVolatileStock(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
{
$nextXDays = 5;
@@ -427,6 +437,57 @@ public function ExternalBarcodeLookup(\Psr\Http\Message\ServerRequestInterface $
}
}
+ public function GetProducts(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
+ {
+ if (isset($request->getQueryParams()['include_disabled']))
+ {
+ $products = $this->getDatabase()->products()->orderBy('name', 'COLLATE NOCASE');
+ }
+ else
+ {
+ $products = $this->getDatabase()->products()->where('active = 1')->orderBy('name', 'COLLATE NOCASE');
+ }
+
+ // THIS SHOULD BE A JOIN.
+ // I LITERALLY CANNOT EVEN.
+ $barcodes = $this->getDatabase()->product_barcodes()->orderBy('barcode');
+ $qu_conversions = $this->getDatabase()->quantity_unit_conversions();
+
+ $ret= [];
+ foreach($products as $product)
+ {
+ $np = $this->getStockService()->CleanProduct($product);
+ $np->barcodes = [];
+ $np->qu_conversions = [];
+
+ $bcid = 0;
+ foreach($barcodes as $barcode)
+ {
+ $bc = $this->getStockService()->CleanBarcode($barcode);
+ if($bc->product_id == null || $bc->product_id == $np->id)
+ $np->barcodes[$bcid++] = $bc;
+ }
+
+ $qucid = 0;
+ foreach($qu_conversions as $qu_conversion)
+ {
+ $quConversion = $this->getStockService()->cleanQUConversion($qu_conversion);
+ if($quConversion->product_id == $product->id ||
+ $quConversion->product_id == null && (
+ $quConversion->from_qu_id == $product->qu_id_purchase ||
+ $quConversion->from_qu_id == $product->qu_id_stock ||
+ $quConversion->to_qu_id == $product->qu_id_purchase ||
+ $quConversion->to_qu_id == $product->qu_id_stock)
+ )
+ $np->qu_conversions[$qucid++] = $quConversion;
+ }
+
+ $ret[] = $np;
+ }
+
+ return $this->ApiResponse($response, $ret);
+ }
+
public function InventoryProduct(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
{
User::checkPermission($request, User::PERMISSION_STOCK_INVENTORY);
diff --git a/php/Controllers/SystemApiController.php b/php/Controllers/SystemApiController.php
index 0f13d16f..35613d49 100644
--- a/php/Controllers/SystemApiController.php
+++ b/php/Controllers/SystemApiController.php
@@ -1,7 +1,8 @@
getLocalizationService();
+
+ // featureflags
+ $flags = get_defined_constants();
+ foreach ($flags as $constant => $value)
+ {
+ if (substr($constant, 0, 19) !== 'GROCY_FEATURE_FLAG_')
+ {
+ unset($flags[$constant]);
+ }
+ }
+
+ $GrocyConfig = [
+ "Culture" => GROCY_LOCALE,
+ "Currency" => GROCY_CURRENCY,
+ "CalendarFirstDayOfWeek" => GROCY_CALENDAR_FIRST_DAY_OF_WEEK,
+ "CalendarShowWeekNumbers" => GROCY_CALENDAR_SHOW_WEEK_OF_YEAR,
+ "MealPlanFirstDayOfWeek" => GROCY_MEAL_PLAN_FIRST_DAY_OF_WEEK,
+ "Locale" => $ls->Culture,
+ "FeatureFlags" => $flags,
+
+ "Webhooks" => [],
+ "User" => [
+ "Settings" => [],
+ "Id" => -1,
+ "Permissions" => []
+ ]
+ ];
+
+ if(GROCY_FEATURE_FLAG_LABELPRINTER && !GROCY_LABEL_PRINTER_RUN_SERVER) {
+ $GrocyConfig["Webhooks"] = array_merge($GrocyConfig["Webhooks"], [
+ "labelprinter" => [
+ "hook" => GROCY_LABEL_PRINTER_WEBHOOK,
+ "extra_data" => GROCY_LABEL_PRINTER_PARAMS
+ ]
+ ]);
+ }
+ if(GROCY_AUTHENTICATED) {
+ $user = $this->getSessionService()->GetDefaultUser();
+ $GrocyConfig["User"]["Settings"] = array_merge($GrocyConfig["User"]["Settings"], $this->getUsersService()->GetUserSettings($user->id));
+ $perms = User::PermissionList();
+ foreach($perms as $value)
+ $GrocyConfig["User"]["Permissions"][$value->permission_name] = $value->has_permission;
+
+
+ $GrocyConfig["User"]["Id"] = $user->id;
+
+ $GrocyConfig["User"] = array_merge($GrocyConfig["User"], [
+ "Username" => $user->username,
+ "PictureFileName" => $user->picture_file_name,
+ ]);
+ }
+ return $this->ApiResponse($response, $GrocyConfig);
+ }
+
+ public function GetQuantitiyUnitConfig(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
+ {
+ // this probably doesn't align too well with vuex? but we'll see.
+ return $this->ApiResponse($response, [
+ 'QuantityUnits' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
+ 'QuantityUnitConversionsResolved' => $this->getDatabase()->quantity_unit_conversions_resolved()
+ ]);
+ }
+
public function GetDbChangedTime(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
{
return $this->ApiResponse($response, [
diff --git a/php/Controllers/SystemController.php b/php/Controllers/SystemController.php
index 2018904a..8cfb582b 100644
--- a/php/Controllers/SystemController.php
+++ b/php/Controllers/SystemController.php
@@ -4,6 +4,7 @@
use Grocy\Services\DatabaseMigrationService;
use Grocy\Services\DemoDataGeneratorService;
+use Grocy\Services\SessionService;
class SystemController extends BaseController
{
@@ -32,7 +33,19 @@ public function Root(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Htt
$demoDataGeneratorService->PopulateDemoData();
}
- return $response->withRedirect($this->AppContainer->get('UrlManager')->ConstructUrl($this->GetEntryPageRelative()));
+ if (GROCY_MODE === 'dev' || GROCY_MODE === 'demo' || GROCY_MODE === 'prerelease' || GROCY_IS_EMBEDDED_INSTALL || GROCY_DISABLE_AUTH)
+ {
+ $sessionService = SessionService::getInstance();
+ $user = $sessionService->GetDefaultUser();
+
+ define('GROCY_AUTHENTICATED', true);
+ define('GROCY_USER_USERNAME', $user->username);
+ define('GROCY_USER_PICTURE_FILE_NAME', $user->picture_file_name);
+ }
+
+ // yolo, this is a SPA now.
+ return $this->render($request, $response, 'vue');
+ //return $response->withRedirect($this->AppContainer->get('UrlManager')->ConstructUrl($this->GetEntryPageRelative()));
}
public function __construct(\DI\Container $container)
diff --git a/php/Services/LocalizationService.php b/php/Services/LocalizationService.php
index 852927cd..0856253e 100644
--- a/php/Services/LocalizationService.php
+++ b/php/Services/LocalizationService.php
@@ -11,7 +11,8 @@ class LocalizationService
const DOMAIN = 'grocy/userstrings';
const LOCALE_BASE = REPO_BASE . '/localization';
- protected $Po;
+ // Shame.
+ public $Po;
protected $PoUserStrings;
@@ -62,6 +63,9 @@ public function GetPluralDefinition()
public function GetPoAsJsonString()
{
+ // Shame.
+ if($this->Po == null) return '{}';
+
return $this->Po->toJsonString();
}
diff --git a/php/Services/RecipesService.php b/php/Services/RecipesService.php
index 856009d5..faf34abb 100644
--- a/php/Services/RecipesService.php
+++ b/php/Services/RecipesService.php
@@ -70,6 +70,42 @@ public function ConsumeRecipe($recipeId)
}
}
+ public function Clean($recipe)
+ {
+ $recipe = (object)$recipe;
+ $recipe->id = (int)$recipe->id;
+ $recipe->base_servings = (int)$recipe->base_servings;
+ $recipe->desired_servings = (int)$recipe->desired_servings;
+ $recipe->not_check_shoppinglist = (int)$recipe->not_check_shoppinglist > 0;
+ $recipe->product_id = $recipe->product_id != null ? (int)$recipe->product_id : null;
+
+ return $recipe;
+ }
+
+ public function CleanIngredient($ingredient)
+ {
+ $ingredient = (object)$ingredient;
+ $ingredient->recipe_id = (int)$ingredient->recipe_id;
+ $ingredient->recipe_pos_id = (int)$ingredient->recipe_pos_id;
+ $ingredient->product_id = (int)$ingredient->product_id;
+ $ingredient->recipe_amount = (double)$ingredient->recipe_amount;
+ $ingredient->stock_amount = (double)$ingredient->stock_amount;
+ $ingredient->missing_amount = (double)$ingredient->missing_amount;
+ $ingredient->amount_on_shoppinglist = (double)$ingredient->amount_on_shoppinglist;
+ $ingredient->qu_id = (int)$ingredient->qu_id;
+ $ingredient->costs = (double)$ingredient->costs; // more rounding errors woohooo!
+ $ingredient->is_nested_recipe_pos = (int)$ingredient->is_nested_recipe_pos > 0;
+ $ingredient->id = (int)$ingredient->id;
+ $ingredient->child_recipe_id = (int)$ingredient->child_recipe_id;
+ $ingredient->only_check_single_unit_in_stock = (int)$ingredient->only_check_single_unit_in_stock > 0;
+ $ingredient->calories = (double)$ingredient->calories;
+ $ingredient->product_active = (int)$ingredient->product_active > 0;
+ $ingredient->need_fulfilled = (int)$ingredient->need_fulfilled > 0;
+ $ingredient->need_fulfilled_with_shopping_list = (int)$ingredient->need_fulfilled_with_shopping_list > 0;
+
+ return $ingredient;
+ }
+
public function GetRecipesPosResolved()
{
$sql = 'SELECT * FROM recipes_pos_resolved';
diff --git a/php/Services/StockService.php b/php/Services/StockService.php
index 423b27bf..946dcc4f 100644
--- a/php/Services/StockService.php
+++ b/php/Services/StockService.php
@@ -17,6 +17,61 @@ class StockService extends BaseService
const TRANSACTION_TYPE_TRANSFER_FROM = 'transfer_from';
const TRANSACTION_TYPE_TRANSFER_TO = 'transfer_to';
+ public function CleanProduct($product)
+ {
+ $product = (object)$product; // php go brrrr
+ $product->id = (int)$product->id;
+ $product->product_group_id = $product->product_group_id != null ? (int)$product->product_group_id : null;
+ $product->active = (int)$product->active > 0;
+ $product->location_id = (int)$product->location_id;
+ $product->shopping_location_id = $product->shopping_location_id != null ? (int)$product->shopping_location_id : null;
+ $product->qu_id_purchase = (int)$product->qu_id_purchase;
+ $product->qu_id_stock = (int)$product->qu_id_stock;
+ $product->qu_factor_purchase_to_stock = (double)$product->qu_factor_purchase_to_stock;
+ $product->min_stock_amount = (double)$product->min_stock_amount;
+ $product->default_best_before_days = (int)$product->default_best_before_days;
+ $product->default_best_before_days_after_open = (int)$product->default_best_before_days_after_open;
+ $product->default_best_before_days_after_freezing = (int)$product->default_best_before_days_after_freezing;
+ $product->default_best_before_days_after_thawing = (int)$product->default_best_before_days_after_thawing;
+ $product->enable_tare_weight_handling = (int)$product->enable_tare_weight_handling > 0;
+ $product->tare_weight = (double)$product->tare_weight;
+ $product->not_check_stock_fulfillment_for_recipes = (int)$product->not_check_stock_fulfillment_for_recipes > 0;
+ $product->parent_product_id = $product->parent_product_id != null ? (int)$product->parent_product_id : null;
+ $product->calories = (double)$product->calories;
+ $product->cumulate_min_stock_amount_of_sub_products = (int)$product->cumulate_min_stock_amount_of_sub_products > 0;
+ $product->due_type = (int)$product->due_type;
+ $product->quick_consume_amount = (double)$product->quick_consume_amount;
+ $product->hide_on_stock_overview = (int)$product->hide_on_stock_overview > 0;
+ $product->default_print_stock_label = (int)$product->default_print_stock_label > 0;
+ $product->allow_label_per_unit = (int)$product->allow_label_per_unit;
+
+ return $product;
+ }
+
+ public function CleanBarcode($barcode)
+ {
+ $barcode = (object)$barcode;
+ $barcode->id = (int)$barcode->id;
+ $barcode->product_id = $barcode->product_id != null ? (int)$barcode->product_id : null;
+ $barcode->qu_id = $barcode->qu_id != null ? (int)$barcode->qu_id : null;
+ $barcode->amount = $barcode->amount != null ? (double)$barcode->amount : null;
+ $barcode->shopping_location_id = $barcode->shopping_location_id != null ? (int) $barcode->shopping_location_id : null;
+ $barcode->last_price = $barcode->last_price != null ? (double)$barcode->last_price : null;
+ return $barcode;
+ }
+
+ public function CleanQUConversion($conversion)
+ {
+ $conversion = (object)$conversion;
+ $conversion->id = (int)$conversion->id;
+ $conversion->from_qu_id = (int)$conversion->from_qu_id;
+ $conversion->to_qu_id = (int)$conversion->to_qu_id;
+ $conversion->factor = (double)$conversion->factor;
+ $conversion->product_id = $conversion->product_id != null ? (int)$conversion->product_id : null;
+
+ return $conversion;
+ }
+
public function AddMissingProductsToShoppingList($listId = 1)
{
if (!$this->ShoppingListExists($listId))
diff --git a/php/Views/vue.blade.php b/php/Views/vue.blade.php
new file mode 100644
index 00000000..31383393
--- /dev/null
+++ b/php/Views/vue.blade.php
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ grocy
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/php/routes.php b/php/routes.php
index 8268958a..27490a73 100644
--- a/php/routes.php
+++ b/php/routes.php
@@ -150,6 +150,8 @@
$group->get('/system/time', '\Grocy\Controllers\SystemApiController:GetSystemTime');
$group->get('/system/db-changed-time', '\Grocy\Controllers\SystemApiController:GetDbChangedTime');
$group->get('/system/config', '\Grocy\Controllers\SystemApiController:GetConfig');
+ $group->get('/system/config/grocy', '\Grocy\Controllers\SystemApiController:GetGrocyConfig');
+ $group->get('/system/config/units', '\Grocy\Controllers\SystemApiController:GetQuantitiyUnitConfig');
$group->post('/system/log-missing-localization', '\Grocy\Controllers\SystemApiController:LogMissingLocalization');
// Generic entity interaction
@@ -182,8 +184,12 @@
$group->put('/user/settings/{settingKey}', '\Grocy\Controllers\UsersApiController:SetUserSetting');
$group->delete('/user/settings/{settingKey}', '\Grocy\Controllers\UsersApiController:DeleteUserSetting');
+ // Products
+ $group->get('/stock/products', '\Grocy\Controllers\StockApiController:GetProducts');
+
// Stock
$group->get('/stock', '\Grocy\Controllers\StockApiController:CurrentStock');
+ $group->get('/stock/overview', '\Grocy\Controllers\StockApiController:StockOverview');
$group->get('/stock/entry/{entryId}', '\Grocy\Controllers\StockApiController:StockEntry');
$group->put('/stock/entry/{entryId}', '\Grocy\Controllers\StockApiController:EditStockEntry');
$group->get('/stock/volatile', '\Grocy\Controllers\StockApiController:CurrentVolatileStock');
@@ -220,6 +226,10 @@
$group->post('/stock/shoppinglist/remove-product', '\Grocy\Controllers\StockApiController:RemoveProductFromShoppingList');
// Recipes
+ $group->get('/recipes', '\Grocy\Controllers\RecipesApiController:GetAll');
+ $group->get('/recipes/{recipeId}/get', '\Grocy\Controllers\RecipesApiController:GetRecipe');
+ $group->put('/recipes/{recipeId}/edit', '\Grocy\Controllers\RecipesApiController:EditRecipe');
+
$group->post('/recipes/{recipeId}/add-not-fulfilled-products-to-shoppinglist', '\Grocy\Controllers\RecipesApiController:AddNotFulfilledProductsToShoppingList');
$group->get('/recipes/{recipeId}/fulfillment', '\Grocy\Controllers\RecipesApiController:GetRecipeFulfillment');
$group->post('/recipes/{recipeId}/consume', '\Grocy\Controllers\RecipesApiController:ConsumeRecipe');
diff --git a/public/.gitignore b/public/.gitignore
index 77b808fa..ecdef538 100644
--- a/public/.gitignore
+++ b/public/.gitignore
@@ -3,3 +3,4 @@ viewjs/
css/
webfonts/
dist/
+locale/
diff --git a/public/img/not-grocy-user-white.svg b/public/img/not-grocy-user-white.svg
new file mode 100644
index 00000000..7ada3f07
--- /dev/null
+++ b/public/img/not-grocy-user-white.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/public/img/not-grocy-white-stencil.svg b/public/img/not-grocy-white-stencil.svg
new file mode 100644
index 00000000..5b7fee51
--- /dev/null
+++ b/public/img/not-grocy-white-stencil.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/img/not-grocy-white.svg b/public/img/not-grocy-white.svg
new file mode 100644
index 00000000..5b7fee51
--- /dev/null
+++ b/public/img/not-grocy-white.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rollup.vue.js b/rollup.vue.js
new file mode 100644
index 00000000..9eae2a62
--- /dev/null
+++ b/rollup.vue.js
@@ -0,0 +1,50 @@
+/* eslint-disable no-undef */
+import vue from 'rollup-plugin-vue';
+import commonjs from '@rollup/plugin-commonjs';
+import resolve from '@rollup/plugin-node-resolve';
+import babel from '@rollup/plugin-babel';
+import postcss from 'rollup-plugin-postcss';
+import replace from '@rollup/plugin-replace';
+import typescript from 'rollup-plugin-typescript2';
+import json from '@rollup/plugin-json';
+
+import path from 'path';
+
+
+const env = process.env.NODE_ENV || 'development';
+
+export default {
+ input: [
+ 'js/main.ts'
+ ],
+ output: {
+ dir: 'public/dist',
+ format: 'umd',
+ name: 'VueGrocy',
+ sourcemap: true,
+ globals: {
+ quill: 'Quill'
+ }
+ },
+ plugins: [
+ resolve({ browser: true, preferBuiltins: true }),
+ json(),
+ vue({
+ target: "browser"
+ }),
+ typescript(),
+ commonjs(),
+ babel({
+ babelHelpers: 'bundled',
+ exclude: 'node_modules/**'
+ }),
+ postcss({ // will load postcss.config.js
+ extract: path.resolve('public/dist/app.css'),
+ minimize: env !== 'development',
+ }),
+ replace({
+ 'process.env.NODE_ENV': JSON.stringify(env),
+ preventAssignment: true,
+ })
+ ]
+};
diff --git a/scss/_main.scss b/scss/_main.scss
index d012e474..175b4061 100644
--- a/scss/_main.scss
+++ b/scss/_main.scss
@@ -56,7 +56,7 @@ a.discrete-link {
top: 0;
left: 0;
overflow: auto;
- background-color: $white;
+ background-color: #fff;
width: 100%;
}
diff --git a/scss/grocy.scss b/scss/grocy.scss
index 38caedd5..7e8be308 100755
--- a/scss/grocy.scss
+++ b/scss/grocy.scss
@@ -1,14 +1,50 @@
// This is the main not-grocy stylesheet.
// Please do not place any CSS directly in here but import from other files.
-// import custom variables
+@import 'primeflex/src/_variables.scss';
+@import 'primeflex/src/_grid.scss';
+@import 'primeflex/src/_formlayout.scss';
+@import 'primeflex/src/_display.scss';
+@import 'primeflex/src/_text.scss';
+@import 'primeflex/src/flexbox/_flexbox.scss';
+@import 'primeflex/src/_spacing.scss';
+@import 'primeflex/src/_elevation.scss';
+
@import "variables";
-// import bootstrap (as a whole)
-@import "bootstrap/scss/bootstrap";
-// startbootstrap
-@import "startbootstrap-sb-admin/scss/sb-admin";
+.use-bootstrap {
+ // import custom variables
+ // import bootstrap (as a whole)
+ @import "bootstrap/scss/bootstrap";
+
+ @import "customizations/bootstrap";
+ @import "customizations/sbadmin2";
+
+ // bootstrap-combobox
+ @import "@danielfarrell/bootstrap-combobox/css/bootstrap-combobox.css";
+ @import "customizations/bs-combobox";
+
+ // bootstrap-datatables
+ @import "datatables.net-bs4/css/dataTables.bootstrap4.css";
+ @import "datatables.net-colreorder-bs4/css/colReorder.bootstrap4.css";
+ @import "datatables.net-rowgroup-bs4/css/rowGroup.bootstrap4.css";
+ @import "datatables.net-select-bs4/css/select.bootstrap4.css";
+ @import "customizations/datatables";
+
+ // bootstrap-select
+ @import "bootstrap-select/sass/bootstrap-select";
+
+ // tempusdominus
+ @import "tempusdominus-bootstrap-4/src/sass/tempusdominus-bootstrap-4";
+ @import "customizations/tempusdominus";
+
+ // summernote
+ @import "summernote/src/styles/summernote-bs4";
+
+ // TODO: does it need to be at the end?
+ @import "night-mode";
+}
// main grocy-style
@import "main";
@import "barcodes";
@@ -19,34 +55,10 @@
@import "@fortawesome/fontawesome-free/css/all.css";
@import "customizations/fontawesome";
-
-@import "customizations/bootstrap";
-@import "customizations/sbadmin2";
-
-// bootstrap-combobox
-@import "@danielfarrell/bootstrap-combobox/css/bootstrap-combobox.css";
-@import "customizations/bs-combobox";
-
-// bootstrap-datatables
-@import "datatables.net-bs4/css/dataTables.bootstrap4.css";
-@import "datatables.net-colreorder-bs4/css/colReorder.bootstrap4.css";
-@import "datatables.net-rowgroup-bs4/css/rowGroup.bootstrap4.css";
-@import "datatables.net-select-bs4/css/select.bootstrap4.css";
-@import "customizations/datatables";
-
-// bootstrap-select
-@import "bootstrap-select/sass/bootstrap-select";
-
// toastr
@import "toastr/toastr";
@import "customizations/toastr";
-// tempusdominus
-@import "tempusdominus-bootstrap-4/src/sass/tempusdominus-bootstrap-4";
-@import "customizations/tempusdominus";
-
-// summernote
-@import "summernote/src/styles/summernote-bs4";
// popper.js
@import "customizations/popperjs";
@@ -60,5 +72,16 @@
// end third-party
-// TODO: does it need to be at the end?
-@import "night-mode";
\ No newline at end of file
+// now comes the fun part, because whatever is set above, primeVue will now override.
+.theme-day {
+ @import 'sigma/day'; // this will be the day theme.
+}
+.theme-night {
+ @import 'sigma/night'; // this will be the night theme.
+}
+
+@import 'primevue/resources/primevue.css'; // core css
+@import 'primeicons/primeicons.css'; // icons
+
+@import './sigma/layout.scss';
+@import 'primeicons/primeicons.css';
diff --git a/scss/sigma/.gitignore b/scss/sigma/.gitignore
new file mode 100644
index 00000000..a09ed652
--- /dev/null
+++ b/scss/sigma/.gitignore
@@ -0,0 +1,2 @@
+_day.scss
+_night.scss
\ No newline at end of file
diff --git a/scss/sigma/_overrides.scss b/scss/sigma/_overrides.scss
new file mode 100644
index 00000000..3b405a7e
--- /dev/null
+++ b/scss/sigma/_overrides.scss
@@ -0,0 +1,261 @@
+body {
+ transition: background-color .2s ease;
+
+ &.theme-night {
+ color: rgba(255, 255, 255, 0.87); // text-color
+ background-color: #121212; // surface-b
+
+ .stock-table tr {
+ &.row-due-soon {
+ background-color: #FFE082 !important;
+ color: #121212;
+ }
+
+ &.row-expired {
+ background-color: #F48FB1 !important;
+ color: #121212;
+ }
+
+ &.row-overdue {
+ background-color: #78909C !important;
+ color: #fff;
+ }
+
+ &.row-on-shoppinglist {
+ background-color: #81D4FA !important;
+ color: #121212;
+ }
+ }
+
+ .layout-footer {
+ background-color: #1e1e1e; // surface-a
+ }
+
+ .user-settings-menu {
+ > li {
+ > a {
+ border-top: 1px solid $menuitemDarkBorderColor;
+ }
+
+ &:last-child {
+ > a {
+ border-bottom: 1px solid $menuitemDarkBorderColor;
+ }
+ }
+
+ ul {
+ background-color: $menuitemDarkActiveBgColor;
+ }
+ }
+
+ li {
+ a {
+ color: $menuitemDarkColor;
+
+ &.router-link-active {
+ color: $menuitemDarkActiveColor;
+ }
+
+ &:hover {
+ color: $menuitemDarkHoverColor;
+ }
+ }
+
+ &.active-menuitem {
+ > a {
+ background-color: $menuitemDarkActiveBgColor;
+ color: $menuitemDarkActiveColor;
+ }
+ }
+ }
+ }
+ }
+
+ &.theme-day {
+ .stock-table tr {
+ &.row-due-soon {
+ background-color: adjust-color(#fbc02d, $lightness: 30%) !important; // yellow 500
+ }
+
+ &.row-expired {
+ background-color: adjust-color(#D32F2F, $lightness: 30%) !important;
+ }
+
+ &.row-overdue {
+ background-color: adjust-color(#607D8B, $lightness: 30%) !important;
+ }
+
+ &.row-on-shoppinglist {
+ background-color: adjust-color(#0288D1, $lightness: 50%) !important;
+ }
+ }
+
+ .user-settings-menu {
+ > li {
+ > a {
+ border-top: 1px solid $menuitemBorderColor;
+ }
+
+ &:last-child {
+ > a {
+ border-bottom: 1px solid $menuitemBorderColor;
+ }
+ }
+
+ ul {
+ background-color: $menuitemActiveBgColor;
+ }
+ }
+
+ li {
+ a {
+ color: $menuitemColor;
+
+ &.router-link-active {
+ color: $menuitemActiveColor;
+ }
+
+ &:hover {
+ color: $menuitemHoverColor;
+ }
+ }
+
+ &.active-menuitem {
+ > a {
+ background-color: $menuitemActiveBgColor;
+ color: $menuitemActiveColor;
+ }
+ }
+ }
+ }
+ }
+}
+
+.layout-logo img {
+ max-width: 80%;
+ max-height: 7.5rem;
+}
+
+.p-text-help {
+ color: $textSecondaryColor;
+}
+
+#userSettingsDropDown {
+ width: 100%;
+ @media screen and (min-width: $md) {
+ width: 370px;
+ }
+}
+
+
+.layout-menu-button {
+ &:focus {
+ @include focused-inset();
+ }
+ img {
+ max-width: 100px;
+ float: left;
+ margin-top: -50px;
+ margin-left: 20px;
+ transition: opacity .2s ease-out;
+ opacity: 0;
+
+ &.showing {
+ opacity: 1;
+ }
+ }
+ span {
+ display: block;
+ float: left;
+ }
+
+ width: 80px;
+ clear: left;
+}
+
+.layout-topbar-icons .p-link {
+ &:focus {
+ @include focused-inset();
+ }
+}
+
+.layout-headerclock {
+ float: left;
+ font-size: 20px;
+}
+
+.p-card.with-title-addon .p-card-title span {
+ font-size: 80%;
+ color: #777;
+}
+
+.filter-buttons button {
+ margin-right: .5rem;
+}
+
+.product-context-menu {
+ width: 22rem !important;
+}
+
+.row-due-soon {
+ background-color: #fbc02d; // yellow 500
+ color: #212529;
+}
+
+// this needs to get its own sass file FAST.
+.recipes-list {
+ .recipe-image {
+ background-size: cover;
+ background-position: center center;
+ }
+ cursor: pointer;
+}
+.p-dataview-grid {
+ .p-dataview-content > .p-grid {
+ display: block;
+ column-count: 1;
+ @media screen and (min-width: $sm) {
+ column-count: 2;
+ }
+ column-gap: .5rem;
+ orphans: 1;
+ widows: 1;
+ }
+
+ .recipes-masonry {
+ display: inline-block;
+ cursor: pointer;
+ }
+
+ &::before,
+ &::after {
+ content: "";
+ flex-basis: 100%;
+ width: 0;
+ order: 2;
+ }
+}
+
+.recipe-display, .recipes-fullscreen .p-dialog-header {
+ .recipe-image {
+ min-height: 20rem;
+ background-size: cover;
+ background-position: center center;
+ }
+}
+
+.ingredient-group-list, .ingredient-list {
+ list-style-type: none;
+ padding-left: 0;
+}
+
+.ingredient-list li {
+ border-bottom: 1px solid #eee;
+ padding-bottom: 1rem;
+}
+
+.recipes-fullscreen {
+ .p-dialog-header {
+ display: block; // no icons, no flex need
+ }
+}
\ No newline at end of file
diff --git a/scss/sigma/_variables.scss b/scss/sigma/_variables.scss
new file mode 100644
index 00000000..f641c126
--- /dev/null
+++ b/scss/sigma/_variables.scss
@@ -0,0 +1,47 @@
+/* General */
+$fontSize:14px;
+$bodyBgColor:#edf0f5;
+$textColor:#333333;
+$textSecondaryColor:#707070;
+$borderRadius:3px;
+$dividerColor:#e3e3e3;
+$transitionDuration:.2s;
+$maskBgColor:#424242;
+$focusShadowColor:#a0ff8d;
+
+/* Menu Common */
+$menuitemBadgeBgColor:#2a602c;
+$menuitemBadgeColor:#ffffff;
+$submenuFontSize:13px;
+$menuitemActiveRouteColor:#bbebb1;
+
+/* Menu Light */
+$menuBgColorFirst:#f3f4f9;
+$menuBgColorLast:#d7dbe8;
+$menuitemColor:#242823;
+$menuitemHoverColor:#2a602c;
+$menuitemActiveColor:#2a602c;
+$menuitemActiveBgColor:#ffffff;
+$menuitemBorderColor:rgba(210, 224, 207, 0.6);
+
+/* Menu Dark */
+$menuDarkBgColorFirst:#585f56;
+$menuDarkBgColorLast:#414741;
+$menuitemDarkColor:#ffffff;
+$menuitemDarkHoverColor:#4CAF50;
+$menuitemDarkActiveColor:#bbebb1;
+$menuitemDarkActiveBgColor:#2f352e;
+$menuitemDarkBorderColor:rgba(54, 65, 52, 0.6);
+
+/* Topbar */
+$topbarLeftBgColor:#4CAF50;
+$topbarRightBgColor:#6ebe71;
+$topbarItemBadgeBgColor:#ef6262;
+$topbarItemBadgeColor:#ffffff;
+$topbarItemColor:#ffffff;
+$topbarItemHoverColor:#ccfbc3;
+$topbarSearchInputBorderBottomColor:#ffffff;
+$topbarSearchInputColor:#ffffff;
+
+/* Footer */
+$footerBgColor:#ffffff;
\ No newline at end of file
diff --git a/scss/sigma/flags/flag_placeholder.png b/scss/sigma/flags/flag_placeholder.png
new file mode 100755
index 00000000..febd5246
Binary files /dev/null and b/scss/sigma/flags/flag_placeholder.png differ
diff --git a/scss/sigma/flags/flags.css b/scss/sigma/flags/flags.css
new file mode 100755
index 00000000..592d5757
--- /dev/null
+++ b/scss/sigma/flags/flags.css
@@ -0,0 +1 @@
+span.flag{width:44px;height:30px;display:inline-block;}img.flag{width:30px}.flag{background:url(flags_responsive.png) no-repeat;background-size:100%;vertical-align: middle;}.flag-ad{background-position:0 .413223%}.flag-ae{background-position:0 .826446%}.flag-af{background-position:0 1.239669%}.flag-ag{background-position:0 1.652893%}.flag-ai{background-position:0 2.066116%}.flag-al{background-position:0 2.479339%}.flag-am{background-position:0 2.892562%}.flag-an{background-position:0 3.305785%}.flag-ao{background-position:0 3.719008%}.flag-aq{background-position:0 4.132231%}.flag-ar{background-position:0 4.545455%}.flag-as{background-position:0 4.958678%}.flag-at{background-position:0 5.371901%}.flag-au{background-position:0 5.785124%}.flag-aw{background-position:0 6.198347%}.flag-az{background-position:0 6.61157%}.flag-ba{background-position:0 7.024793%}.flag-bb{background-position:0 7.438017%}.flag-bd{background-position:0 7.85124%}.flag-be{background-position:0 8.264463%}.flag-bf{background-position:0 8.677686%}.flag-bg{background-position:0 9.090909%}.flag-bh{background-position:0 9.504132%}.flag-bi{background-position:0 9.917355%}.flag-bj{background-position:0 10.330579%}.flag-bm{background-position:0 10.743802%}.flag-bn{background-position:0 11.157025%}.flag-bo{background-position:0 11.570248%}.flag-br{background-position:0 11.983471%}.flag-bs{background-position:0 12.396694%}.flag-bt{background-position:0 12.809917%}.flag-bv{background-position:0 13.22314%}.flag-bw{background-position:0 13.636364%}.flag-by{background-position:0 14.049587%}.flag-bz{background-position:0 14.46281%}.flag-ca{background-position:0 14.876033%}.flag-cc{background-position:0 15.289256%}.flag-cd{background-position:0 15.702479%}.flag-cf{background-position:0 16.115702%}.flag-cg{background-position:0 16.528926%}.flag-ch{background-position:0 16.942149%}.flag-ci{background-position:0 17.355372%}.flag-ck{background-position:0 17.768595%}.flag-cl{background-position:0 18.181818%}.flag-cm{background-position:0 18.595041%}.flag-cn{background-position:0 19.008264%}.flag-co{background-position:0 19.421488%}.flag-cr{background-position:0 19.834711%}.flag-cu{background-position:0 20.247934%}.flag-cv{background-position:0 20.661157%}.flag-cx{background-position:0 21.07438%}.flag-cy{background-position:0 21.487603%}.flag-cz{background-position:0 21.900826%}.flag-de{background-position:0 22.31405%}.flag-dj{background-position:0 22.727273%}.flag-dk{background-position:0 23.140496%}.flag-dm{background-position:0 23.553719%}.flag-do{background-position:0 23.966942%}.flag-dz{background-position:0 24.380165%}.flag-ec{background-position:0 24.793388%}.flag-ee{background-position:0 25.206612%}.flag-eg{background-position:0 25.619835%}.flag-eh{background-position:0 26.033058%}.flag-er{background-position:0 26.446281%}.flag-es{background-position:0 26.859504%}.flag-et{background-position:0 27.272727%}.flag-fi{background-position:0 27.68595%}.flag-fj{background-position:0 28.099174%}.flag-fk{background-position:0 28.512397%}.flag-fm{background-position:0 28.92562%}.flag-fo{background-position:0 29.338843%}.flag-fr{background-position:0 29.752066%}.flag-ga{background-position:0 30.165289%}.flag-gd{background-position:0 30.578512%}.flag-ge{background-position:0 30.991736%}.flag-gf{background-position:0 31.404959%}.flag-gh{background-position:0 31.818182%}.flag-gi{background-position:0 32.231405%}.flag-gl{background-position:0 32.644628%}.flag-gm{background-position:0 33.057851%}.flag-gn{background-position:0 33.471074%}.flag-gp{background-position:0 33.884298%}.flag-gq{background-position:0 34.297521%}.flag-gr{background-position:0 34.710744%}.flag-gs{background-position:0 35.123967%}.flag-gt{background-position:0 35.53719%}.flag-gu{background-position:0 35.950413%}.flag-gw{background-position:0 36.363636%}.flag-gy{background-position:0 36.77686%}.flag-hk{background-position:0 37.190083%}.flag-hm{background-position:0 37.603306%}.flag-hn{background-position:0 38.016529%}.flag-hr{background-position:0 38.429752%}.flag-ht{background-position:0 38.842975%}.flag-hu{background-position:0 39.256198%}.flag-id{background-position:0 39.669421%}.flag-ie{background-position:0 40.082645%}.flag-il{background-position:0 40.495868%}.flag-in{background-position:0 40.909091%}.flag-io{background-position:0 41.322314%}.flag-iq{background-position:0 41.735537%}.flag-ir{background-position:0 42.14876%}.flag-is{background-position:0 42.561983%}.flag-it{background-position:0 42.975207%}.flag-jm{background-position:0 43.38843%}.flag-jo{background-position:0 43.801653%}.flag-jp{background-position:0 44.214876%}.flag-ke{background-position:0 44.628099%}.flag-kg{background-position:0 45.041322%}.flag-kh{background-position:0 45.454545%}.flag-ki{background-position:0 45.867769%}.flag-km{background-position:0 46.280992%}.flag-kn{background-position:0 46.694215%}.flag-kp{background-position:0 47.107438%}.flag-kr{background-position:0 47.520661%}.flag-kw{background-position:0 47.933884%}.flag-ky{background-position:0 48.347107%}.flag-kz{background-position:0 48.760331%}.flag-la{background-position:0 49.173554%}.flag-lb{background-position:0 49.586777%}.flag-lc{background-position:0 50%}.flag-li{background-position:0 50.413223%}.flag-lk{background-position:0 50.826446%}.flag-lr{background-position:0 51.239669%}.flag-ls{background-position:0 51.652893%}.flag-lt{background-position:0 52.066116%}.flag-lu{background-position:0 52.479339%}.flag-lv{background-position:0 52.892562%}.flag-ly{background-position:0 53.305785%}.flag-ma{background-position:0 53.719008%}.flag-mc{background-position:0 54.132231%}.flag-md{background-position:0 54.545455%}.flag-me{background-position:0 54.958678%}.flag-mg{background-position:0 55.371901%}.flag-mh{background-position:0 55.785124%}.flag-mk{background-position:0 56.198347%}.flag-ml{background-position:0 56.61157%}.flag-mm{background-position:0 57.024793%}.flag-mn{background-position:0 57.438017%}.flag-mo{background-position:0 57.85124%}.flag-mp{background-position:0 58.264463%}.flag-mq{background-position:0 58.677686%}.flag-mr{background-position:0 59.090909%}.flag-ms{background-position:0 59.504132%}.flag-mt{background-position:0 59.917355%}.flag-mu{background-position:0 60.330579%}.flag-mv{background-position:0 60.743802%}.flag-mw{background-position:0 61.157025%}.flag-mx{background-position:0 61.570248%}.flag-my{background-position:0 61.983471%}.flag-mz{background-position:0 62.396694%}.flag-na{background-position:0 62.809917%}.flag-nc{background-position:0 63.22314%}.flag-ne{background-position:0 63.636364%}.flag-nf{background-position:0 64.049587%}.flag-ng{background-position:0 64.46281%}.flag-ni{background-position:0 64.876033%}.flag-nl{background-position:0 65.289256%}.flag-no{background-position:0 65.702479%}.flag-np{background-position:0 66.115702%}.flag-nr{background-position:0 66.528926%}.flag-nu{background-position:0 66.942149%}.flag-nz{background-position:0 67.355372%}.flag-om{background-position:0 67.768595%}.flag-pa{background-position:0 68.181818%}.flag-pe{background-position:0 68.595041%}.flag-pf{background-position:0 69.008264%}.flag-pg{background-position:0 69.421488%}.flag-ph{background-position:0 69.834711%}.flag-pk{background-position:0 70.247934%}.flag-pl{background-position:0 70.661157%}.flag-pm{background-position:0 71.07438%}.flag-pn{background-position:0 71.487603%}.flag-pr{background-position:0 71.900826%}.flag-pt{background-position:0 72.31405%}.flag-pw{background-position:0 72.727273%}.flag-py{background-position:0 73.140496%}.flag-qa{background-position:0 73.553719%}.flag-re{background-position:0 73.966942%}.flag-ro{background-position:0 74.380165%}.flag-rs{background-position:0 74.793388%}.flag-ru{background-position:0 75.206612%}.flag-rw{background-position:0 75.619835%}.flag-sa{background-position:0 76.033058%}.flag-sb{background-position:0 76.446281%}.flag-sc{background-position:0 76.859504%}.flag-sd{background-position:0 77.272727%}.flag-se{background-position:0 77.68595%}.flag-sg{background-position:0 78.099174%}.flag-sh{background-position:0 78.512397%}.flag-si{background-position:0 78.92562%}.flag-sj{background-position:0 79.338843%}.flag-sk{background-position:0 79.752066%}.flag-sl{background-position:0 80.165289%}.flag-sm{background-position:0 80.578512%}.flag-sn{background-position:0 80.991736%}.flag-so{background-position:0 81.404959%}.flag-sr{background-position:0 81.818182%}.flag-ss{background-position:0 82.231405%}.flag-st{background-position:0 82.644628%}.flag-sv{background-position:0 83.057851%}.flag-sy{background-position:0 83.471074%}.flag-sz{background-position:0 83.884298%}.flag-tc{background-position:0 84.297521%}.flag-td{background-position:0 84.710744%}.flag-tf{background-position:0 85.123967%}.flag-tg{background-position:0 85.53719%}.flag-th{background-position:0 85.950413%}.flag-tj{background-position:0 86.363636%}.flag-tk{background-position:0 86.77686%}.flag-tl{background-position:0 87.190083%}.flag-tm{background-position:0 87.603306%}.flag-tn{background-position:0 88.016529%}.flag-to{background-position:0 88.429752%}.flag-tp{background-position:0 88.842975%}.flag-tr{background-position:0 89.256198%}.flag-tt{background-position:0 89.669421%}.flag-tv{background-position:0 90.082645%}.flag-tw{background-position:0 90.495868%}.flag-ty{background-position:0 90.909091%}.flag-tz{background-position:0 91.322314%}.flag-ua{background-position:0 91.735537%}.flag-ug{background-position:0 92.14876%}.flag-gb,.flag-uk{background-position:0 92.561983%}.flag-um{background-position:0 92.975207%}.flag-us{background-position:0 93.38843%}.flag-uy{background-position:0 93.801653%}.flag-uz{background-position:0 94.214876%}.flag-va{background-position:0 94.628099%}.flag-vc{background-position:0 95.041322%}.flag-ve{background-position:0 95.454545%}.flag-vg{background-position:0 95.867769%}.flag-vi{background-position:0 96.280992%}.flag-vn{background-position:0 96.694215%}.flag-vu{background-position:0 97.107438%}.flag-wf{background-position:0 97.520661%}.flag-ws{background-position:0 97.933884%}.flag-ye{background-position:0 98.347107%}.flag-za{background-position:0 98.760331%}.flag-zm{background-position:0 99.173554%}.flag-zr{background-position:0 99.586777%}.flag-zw{background-position:0 100%}
diff --git a/scss/sigma/flags/flags_responsive.png b/scss/sigma/flags/flags_responsive.png
new file mode 100755
index 00000000..c27ce213
Binary files /dev/null and b/scss/sigma/flags/flags_responsive.png differ
diff --git a/scss/sigma/layout.scss b/scss/sigma/layout.scss
new file mode 100644
index 00000000..cc7084b5
--- /dev/null
+++ b/scss/sigma/layout.scss
@@ -0,0 +1,33 @@
+/* This file, and all contents of the directory /scss/sigma
+ are taken from primevue-sigma, a free Admin template
+ Licensed under the MIT license. Some edits have been made by the
+ not-grocy authors. You can obtain individual line-by-line authorship
+ and copyright by using `git blame `.
+
+MIT License
+
+Copyright (c) 2019 cagataycivici
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*/
+
+@import "./_variables";
+@import "./sass/_layout";
+@import "./_overrides";
\ No newline at end of file
diff --git a/scss/sigma/sass/_config.scss b/scss/sigma/sass/_config.scss
new file mode 100644
index 00000000..c9175f2d
--- /dev/null
+++ b/scss/sigma/sass/_config.scss
@@ -0,0 +1,151 @@
+.layout-config {
+ position: fixed;
+ top: 50px;
+ padding: 0;
+ right: 0;
+ display: block;
+ width: 20em;
+ z-index: 998;
+ height: calc(100% - 50px);
+ transform: translate3d(20em, 0px, 0px);
+ transition: transform $transitionDuration;
+ backface-visibility: hidden;
+ box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.24);
+ color: $textColor;
+ background-color: #ffffff;
+
+ &.layout-config-active {
+ transform: translate3d(0px, 0px, 0px);
+
+ .layout-config-content {
+ .layout-config-button {
+ i {
+ transform: rotate(360deg);
+ }
+ }
+ }
+ }
+
+ .layout-config-button {
+ display: block;
+ position: absolute;
+ width: 52px;
+ height: 52px;
+ line-height: 52px;
+ background-color: $menuitemBadgeBgColor;
+ text-align: center;
+ color: $menuitemBadgeColor;
+ top: 230px;
+ left: -52px;
+ z-index: -1;
+ overflow: hidden;
+ cursor: pointer;
+ transition: background-color $transitionDuration;
+ box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.24);
+
+ i {
+ font-size: 32px;
+ line-height: inherit;
+ cursor: pointer;
+ transform: rotate(0deg);
+ transition: color $transitionDuration, transform 1s;
+ }
+ }
+
+ .layout-config-close {
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+ text-align: center;
+ right: 20px;
+ top: 10px;
+ z-index: 1;
+ background-color: #e54a51;
+ transition: background-color $transitionDuration;
+ border-radius: 50%;
+
+ i {
+ color: #ffffff;
+ line-height: inherit;
+ font-size: 12px;
+ }
+
+ &:hover {
+ background-color: #ea6e73;
+ }
+ }
+
+ .layout-config-content {
+ position: relative;
+ overflow: auto;
+ height: 100%;
+ padding: 1em;
+ padding-bottom: 100px;
+
+ .layout-themes {
+ display: flex;
+ flex-wrap: wrap;
+
+ > div {
+ padding: .25rem;
+ }
+
+
+ a {
+ width: 2rem;
+ height: 2rem;
+ border-radius: 50%;
+ display: block;
+ position: relative;
+ align-items: center;
+ justify-content: center;
+ transition: transform $transitionDuration;
+ box-shadow: 0 .125rem .25rem rgba(0,0,0,.075);
+
+ i {
+ font-size: 1rem;
+ position: absolute;
+ color: $menuitemBadgeColor;
+ top: 50%;
+ left: 50%;
+ margin-left: -.5rem;
+ margin-top: -.5rem;
+ }
+
+ &:hover {
+ transform: scale(1.1);
+ }
+ }
+ }
+ }
+
+ .p-col {
+ text-align: center;
+ }
+
+ p {
+ line-height: 1.5;
+ margin-top: 0;
+ color: $textSecondaryColor;
+ }
+}
+
+.blocked-scroll-config{
+ overflow: hidden;
+}
+
+@media screen and (max-width: 1024px) {
+ .layout-config {
+ top: 50px;
+ transform: translate3d(100%, 0px, 0px);
+
+ &.layout-config-active {
+ transform: translate3d(0px, 0px, 0px);
+ }
+
+ .layout-config-close {
+ right: 10px;
+ }
+ }
+}
diff --git a/scss/sigma/sass/_content.scss b/scss/sigma/sass/_content.scss
new file mode 100644
index 00000000..d198f6fe
--- /dev/null
+++ b/scss/sigma/sass/_content.scss
@@ -0,0 +1,4 @@
+.layout-main {
+ transition: margin-left $transitionDuration;
+ padding: 70px 2rem 2rem 2rem;
+}
diff --git a/scss/sigma/sass/_dashboard.scss b/scss/sigma/sass/_dashboard.scss
new file mode 100644
index 00000000..7203f60d
--- /dev/null
+++ b/scss/sigma/sass/_dashboard.scss
@@ -0,0 +1,186 @@
+/* Dashboard */
+.dashboard {
+
+ .summary {
+ position: relative;
+
+ .title {
+ font-size: 20px;
+ }
+
+ .detail {
+ color: $textSecondaryColor;
+ display: block;
+ margin-top: 10px;
+ }
+
+ .count {
+ color: #ffffff;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ font-size: 24px;
+ padding: 7px 14px;
+ border-radius: $borderRadius;
+
+ &.visitors {
+ background-color: #20d077;
+ }
+
+ &.purchases {
+ background-color: #f9c851;
+ }
+
+ &.revenue {
+ background-color: #007be5;
+ }
+ }
+ }
+
+ .highlight-box {
+ height: 100px;
+ display: flex;
+ @include clearfix();
+
+ .initials {
+ height: 100%;
+ width: 50%;
+ text-align: center;
+ padding: 1em;
+
+ > span {
+ font-size: 48px;
+ }
+ }
+
+ .highlight-details {
+ height: 100%;
+ background-color: #ffffff;
+ width: 50%;
+ padding: 1em;
+
+ i {
+ font-size: 18px;
+ vertical-align: middle;
+ margin-right: .5em;
+ }
+
+ .count {
+ color: $textSecondaryColor;
+ font-size: 36px;
+ margin-top: 4px;
+ display: block;
+ }
+ }
+ }
+
+ .task-list {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+
+ li {
+ padding: .5em .25em;
+ border-bottom: 1px solid $dividerColor;
+ @include clearfix();
+ }
+
+ .p-checkbox {
+ vertical-align: middle;
+ margin-right: .5em;
+ }
+
+ .task-name {
+ vertical-align: middle;
+ }
+
+ i {
+ float: right;
+ font-size: 24px;
+ color: $textSecondaryColor;
+ }
+
+ .p-panel-content {
+ min-height: 256px;
+ }
+ }
+
+ .contact-form {
+ .p-panel-content {
+ min-height: 256px;
+ }
+ }
+
+ .contacts {
+
+ ul {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+
+ li {
+ border-bottom: 1px solid $dividerColor;
+
+ button {
+ padding: 9px;
+ width: 100%;
+ box-sizing: border-box;
+ text-decoration: none;
+ position: relative;
+ display: block;
+ border-radius: 2px;
+ transition: background-color .2s;
+
+ .name {
+ position: absolute;
+ right: 10px;
+ top: 10px;
+ font-size: 18px;
+ }
+
+ .email {
+ position: absolute;
+ right: 10px;
+ top: 30px;
+ font-size: 14px;
+ color: $textSecondaryColor;
+ }
+
+ &:hover {
+ cursor: pointer;
+ background-color: #eeeeee;
+ }
+ }
+
+ &:last-child {
+ border: 0;
+ }
+ }
+ }
+
+ .p-panel-content {
+ min-height: 256px;
+ }
+ }
+
+ .activity-list {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+
+ li {
+ border-bottom: 1px solid $dividerColor;
+ padding: 16px 8px;
+
+ .count {
+ font-size: 24px;
+ color: #ffffff;
+ background-color: #007be5;
+ font-weight: 700;
+ padding: .25em .5em;
+ display: inline-block;
+ border-radius: $borderRadius;
+ }
+ }
+ }
+}
diff --git a/scss/sigma/sass/_footer.scss b/scss/sigma/sass/_footer.scss
new file mode 100644
index 00000000..f0cb0fe4
--- /dev/null
+++ b/scss/sigma/sass/_footer.scss
@@ -0,0 +1,13 @@
+.layout-footer {
+ transition: margin-left $transitionDuration;
+ background-color: $footerBgColor;
+ padding: 1em 2em;
+
+ img {
+ vertical-align: middle;
+ }
+
+ .footer-text {
+ vertical-align: middle;
+ }
+}
diff --git a/scss/sigma/sass/_layout.scss b/scss/sigma/sass/_layout.scss
new file mode 100644
index 00000000..f6bdf650
--- /dev/null
+++ b/scss/sigma/sass/_layout.scss
@@ -0,0 +1,14 @@
+@import "./_mixins";
+@import "./_splash";
+@import "./_main";
+@import "./_topbar";
+@import "./_sidebar";
+@import "./_profile";
+@import "./_menu";
+@import "./_config";
+@import "./_content";
+@import "./_footer";
+@import "./_responsive";
+@import "./_utils";
+@import "./_typography";
+@import "./_dashboard";
diff --git a/scss/sigma/sass/_main.scss b/scss/sigma/sass/_main.scss
new file mode 100644
index 00000000..08073877
--- /dev/null
+++ b/scss/sigma/sass/_main.scss
@@ -0,0 +1,34 @@
+* {
+ box-sizing: border-box;
+}
+
+html {
+ height: 100%;
+ font-size: $fontSize;
+}
+
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+ font-size: $fontSize;
+ color: $textColor;
+ background-color: $bodyBgColor;
+ margin: 0;
+ padding: 0;
+ min-height: 100%;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a {
+ text-decoration: none;
+ color: #2196f3;
+}
+
+.layout-wrapper {
+ padding: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ min-height: 100vh;
+}
+
diff --git a/scss/sigma/sass/_menu.scss b/scss/sigma/sass/_menu.scss
new file mode 100644
index 00000000..613567f6
--- /dev/null
+++ b/scss/sigma/sass/_menu.scss
@@ -0,0 +1,191 @@
+.layout-menu-container {
+ padding-bottom: 120px;
+}
+
+.layout-menu {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+
+ li {
+ a {
+ cursor: pointer;
+ position: relative;
+ text-decoration: none;
+ display: flex;
+ align-items: center;
+ transition: color $transitionDuration;
+
+ i {
+ font-size: 16px;
+ width: 2em;
+ text-align: center;
+ }
+
+ span {
+ margin-left: 0.5em;
+ }
+
+ .menuitem-toggle-icon {
+ margin-left: auto;
+ }
+
+ &:focus {
+ @include focused-inset();
+ }
+ }
+
+ &.active-menuitem {
+ > a {
+ .menuitem-toggle-icon {
+ @include icon-override('\e933');
+ }
+ }
+ }
+ }
+
+ > li {
+ > a {
+ padding: 1em;
+
+ span {
+ font-size: $fontSize;
+ }
+ }
+
+ &:last-child {
+ > a {
+ border-bottom: 1px solid $menuitemBorderColor;
+ }
+ }
+
+ ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+ padding-left: 1.5em;
+
+ li {
+ a {
+ cursor: pointer;
+ padding: 0.75em 1em;
+ border-top: 0 none;
+
+ span {
+ font-size: $submenuFontSize;
+ }
+ }
+
+ &:last-child {
+ padding-bottom: 1em;
+ }
+ }
+
+ &.layout-submenu-wrapper-enter-from,
+ &.layout-submenu-wrapper-leave-to {
+ max-height: 0;
+ }
+
+ &.layout-submenu-wrapper-enter-to,
+ &.layout-submenu-wrapper-leave-from {
+ max-height: 1000px;
+ }
+
+ &.layout-submenu-wrapper-leave-active {
+ overflow: hidden;
+ transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);
+ }
+
+ &.layout-submenu-wrapper-enter-active {
+ overflow: hidden;
+ transition: max-height 1s ease-in-out;
+ }
+ }
+ }
+}
+
+.layout-sidebar-light {
+ @include linear-gradient($menuBgColorFirst, $menuBgColorLast);
+
+ .layout-menu {
+ > li {
+ > a {
+ border-top: 1px solid $menuitemBorderColor;
+ }
+
+ &:last-child {
+ > a {
+ border-bottom: 1px solid $menuitemBorderColor;
+ }
+ }
+
+ ul {
+ background-color: $menuitemActiveBgColor;
+ }
+ }
+
+ li {
+ a {
+ color: $menuitemColor;
+
+ &.router-link-active {
+ color: $menuitemActiveColor;
+ }
+
+ &:hover {
+ color: $menuitemHoverColor;
+ }
+ }
+
+ &.active-menuitem {
+ > a {
+ background-color: $menuitemActiveBgColor;
+ color: $menuitemActiveColor;
+ }
+ }
+ }
+ }
+}
+
+.layout-sidebar-dark {
+ @include linear-gradient($menuDarkBgColorFirst, $menuDarkBgColorLast);
+
+ .layout-menu {
+ > li {
+ > a {
+ border-top: 1px solid $menuitemDarkBorderColor;
+ }
+
+ &:last-child {
+ > a {
+ border-bottom: 1px solid $menuitemDarkBorderColor;
+ }
+ }
+
+ ul {
+ background-color: $menuitemDarkActiveBgColor;
+ }
+ }
+
+ li {
+ a {
+ color: $menuitemDarkColor;
+
+ &.router-link-active {
+ color: $menuitemDarkActiveColor;
+ }
+
+ &:hover {
+ color: $menuitemDarkHoverColor;
+ }
+ }
+
+ &.active-menuitem {
+ > a {
+ background-color: $menuitemDarkActiveBgColor;
+ color: $menuitemDarkActiveColor;
+ }
+ }
+ }
+ }
+}
diff --git a/scss/sigma/sass/_mixins.scss b/scss/sigma/sass/_mixins.scss
new file mode 100644
index 00000000..e1a5fe01
--- /dev/null
+++ b/scss/sigma/sass/_mixins.scss
@@ -0,0 +1,43 @@
+@mixin icon-override($icon) {
+ &:before {
+ content: $icon;
+ }
+}
+
+@mixin linear-gradient($top, $bottom){
+ background: $top; /* Old browsers */
+ background: linear-gradient(to bottom, $top 0%,$bottom 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#000000',GradientType=0 ); /* IE6-9 */
+}
+
+@mixin linear-gradient-left($left, $right){
+ background: $left; /* Old browsers */
+ background: linear-gradient(to right, $left 0%,$right 100%); /* W3C */
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 ); /* IE6-9 */
+}
+
+@mixin opacity($opacity) {
+ opacity: $opacity;
+ $opacity-ie: $opacity * 100;
+ filter: alpha(opacity=$opacity-ie);
+}
+
+@mixin focused() {
+ outline: 0 none;
+ outline-offset: 0;
+ box-shadow: 0 0 0 0.2em $focusShadowColor;
+}
+
+@mixin focused-inset() {
+ outline: 0 none;
+ outline-offset: 0;
+ box-shadow: inset 0 0 0 0.2em $focusShadowColor;
+}
+
+@mixin clearfix {
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+}
diff --git a/scss/sigma/sass/_profile.scss b/scss/sigma/sass/_profile.scss
new file mode 100644
index 00000000..2886083a
--- /dev/null
+++ b/scss/sigma/sass/_profile.scss
@@ -0,0 +1,133 @@
+.layout-profile {
+ text-align: center;
+ padding: 20px 0;
+
+ img {
+ width: 56px;
+ margin: 10px;
+ border-radius: 56px;
+ background-color: #1e4620;
+ }
+
+ .layout-profile-link {
+ cursor: pointer;
+ display: block;
+ width: 100%;
+ margin-bottom: 0.75em;
+ transition: color $transitionDuration;
+
+ i {
+ display: inline-block;
+ font-size: 16px;
+ vertical-align: middle;
+ margin-left: 0.5em;
+ }
+ }
+
+ ul {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+
+ li {
+ button {
+ width: 100%;
+ padding: 1em;
+ border: 0 none;
+ border-radius: 0;
+ cursor: pointer;
+ transition: color $transitionDuration;
+
+ &:hover {
+ color: $menuitemHoverColor;
+ }
+
+ span {
+ margin-left: 0.25em;
+ vertical-align: middle;
+ }
+
+ i {
+ vertical-align: middle;
+ }
+ }
+ }
+
+ &.layout-submenu-wrapper-enter-from,
+ &.layout-submenu-wrapper-leave-to {
+ max-height: 0;
+ }
+
+ &.layout-submenu-wrapper-enter-to,
+ &.layout-submenu-wrapper-leave-from {
+ max-height: 1000px;
+ }
+
+ &.layout-submenu-wrapper-leave-active {
+ overflow: hidden;
+ transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);
+ }
+
+ &.layout-submenu-wrapper-enter-active {
+ overflow: hidden;
+ transition: max-height 1s ease-in-out;
+ }
+ }
+}
+
+.layout-sidebar .layout-profile {
+ padding: 0;
+ padding-bottom: 1rem;
+}
+
+.layout-sidebar-light {
+ .layout-profile {
+ .layout-profile-link {
+ color: $menuitemColor;
+
+ &:hover {
+ color: $menuitemHoverColor;
+ }
+ }
+
+ ul {
+ background-color: $menuitemActiveBgColor;
+
+ li {
+ button {
+ color: $menuitemColor;
+
+ &:hover {
+ color: $menuitemHoverColor;
+ }
+ }
+ }
+ }
+ }
+}
+
+.layout-sidebar-dark {
+ .layout-profile {
+ .layout-profile-link {
+ color: $menuitemDarkColor;
+
+ &:hover {
+ color: $menuitemDarkHoverColor;
+ }
+ }
+
+ ul {
+ background-color: $menuitemDarkActiveBgColor;
+
+ li {
+ button {
+ color: $menuitemDarkColor;
+
+ &:hover {
+ color: $menuitemDarkHoverColor;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/scss/sigma/sass/_responsive.scss b/scss/sigma/sass/_responsive.scss
new file mode 100644
index 00000000..be6204a3
--- /dev/null
+++ b/scss/sigma/sass/_responsive.scss
@@ -0,0 +1,97 @@
+@media (min-width: 1025px) {
+ .layout-wrapper {
+ &.layout-overlay {
+ .layout-topbar {
+ left: 0;
+ }
+
+ .layout-main, .layout-footer {
+ margin-left: 0;
+ }
+
+ &.layout-overlay-sidebar-active {
+ .layout-sidebar {
+ left: 0;
+ }
+
+ .layout-topbar {
+ left: 250px;
+ }
+ }
+
+ &.layout-mobile-sidebar-active {
+ .layout-sidebar {
+ left: 0;
+ }
+
+ .layout-topbar {
+ left: 250px;
+ }
+ }
+ }
+
+ &.layout-static {
+ .layout-topbar {
+ left: 250px;
+ }
+
+ .layout-main, .layout-footer {
+ margin-left: 250px;
+ }
+
+ &.layout-static-sidebar-inactive {
+ .layout-topbar {
+ left: 0;
+ }
+
+ .layout-main, .layout-footer {
+ margin-left: 0;
+ }
+ }
+ }
+ }
+}
+
+@media (max-width: 1024px) {
+ .layout-wrapper {
+ .layout-topbar {
+ left: 0;
+ }
+
+ .layout-main, .layout-footer {
+ margin-left: 0;
+ }
+
+ .layout-sidebar {
+ transition: left $transitionDuration;
+ left: -250px;
+ margin-top: 50px;
+ }
+
+ .layout-mask {
+ display: none;
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 50px;
+ left: 0;
+ z-index: 998;
+ background-color: $maskBgColor;
+ @include opacity(0.7);
+ }
+
+ &.layout-mobile-sidebar-active {
+ .layout-sidebar {
+ left: -0;
+ }
+
+ .layout-mask {
+ display: block;
+ }
+ }
+ }
+
+ .body-overflow-hidden {
+ overflow: hidden;
+ }
+}
diff --git a/scss/sigma/sass/_sidebar.scss b/scss/sigma/sass/_sidebar.scss
new file mode 100644
index 00000000..7d88534f
--- /dev/null
+++ b/scss/sigma/sass/_sidebar.scss
@@ -0,0 +1,32 @@
+.layout-sidebar {
+ position: fixed;
+ width: 250px;
+ height: 100%;
+ z-index: 999;
+ overflow-y: auto;
+ user-select: none;
+ transition: transform $transitionDuration;
+ box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.16);
+
+ &.layout-sidebar-enter-from,
+ &.layout-sidebar-leave-to {
+ transform: translateX(-100%);
+ }
+
+ .layout-logo {
+ text-align: center;
+ }
+
+ .menuitem-badge {
+ display: inline-block;
+ margin-left: 4px;
+ font-size: 10px;
+ width: 16px;
+ height: 16px;
+ line-height: 16px;
+ text-align: center;
+ color: $menuitemBadgeColor;
+ background-color: $menuitemBadgeBgColor;
+ border-radius: 50%;
+ }
+}
diff --git a/scss/sigma/sass/_splash.scss b/scss/sigma/sass/_splash.scss
new file mode 100644
index 00000000..df8f1b0c
--- /dev/null
+++ b/scss/sigma/sass/_splash.scss
@@ -0,0 +1,47 @@
+.splash-screen {
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);
+
+ .splash-container {
+ width: 40px;
+ height: 40px;
+ margin: 0px auto;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ margin-left: -20px;
+ margin-top: -20px;
+
+ }
+
+ .splash-double-bounce1, .splash-double-bounce2 {
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+ background-color: $topbarItemColor;
+ opacity: 0.6;
+ position: absolute;
+ top: 0;
+ left: 0;
+ animation: splash-bounce 2.0s infinite ease-in-out;
+ }
+
+ .splash-double-bounce2 {
+ animation-delay: -1.0s;
+ }
+
+ @-webkit-keyframes splash-bounce {
+ 0%, 100% { -webkit-transform: scale(0.0) }
+ 50% { -webkit-transform: scale(1.0) }
+ }
+
+ @keyframes splash-bounce {
+ 0%, 100% {
+ transform: scale(0.0);
+ } 50% {
+ transform: scale(1.0);
+ }
+ }
+}
diff --git a/scss/sigma/sass/_topbar.scss b/scss/sigma/sass/_topbar.scss
new file mode 100644
index 00000000..a1f392c2
--- /dev/null
+++ b/scss/sigma/sass/_topbar.scss
@@ -0,0 +1,127 @@
+.layout-topbar {
+ position: fixed;
+ height: 50px;
+ padding: 1em 2em 0em 2em;
+ color: #ffffff;
+ z-index: 999;
+ right: 0;
+ @include clearfix();
+ @include linear-gradient-left($topbarLeftBgColor,$topbarRightBgColor);
+ transition: left $transitionDuration;
+
+ .layout-topbar-icons {
+ float: right;
+ display: block;
+ animation-duration: .5s;
+
+ button {
+ position: relative;
+ color: $topbarItemColor;
+ margin-left: 20px;
+ display: inline-block;
+ text-decoration: none;
+ transition: color $transitionDuration;
+
+ &:hover {
+ color: $topbarItemHoverColor;
+ }
+
+ &:focus {
+ @include focused();
+ }
+
+ span {
+ &.layout-topbar-icon {
+ font-size: 1.5em;
+ }
+
+ &.layout-topbar-item-text {
+ font-size: 20px;
+ display: none;
+ }
+
+ &.layout-topbar-badge {
+ position: absolute;
+ font-size: 10px;
+ right: -5px;
+ top: -5px;
+ width: 16px;
+ height: 16px;
+ text-align: center;
+ line-height: 16px;
+ color: $topbarItemBadgeColor;
+ background-color: $topbarItemBadgeBgColor;
+ border-radius: 50%;
+ }
+ }
+ }
+
+ .layout-topbar-search {
+ padding: 0;
+ position: relative;
+ display: inline-block;
+ top: -4px;
+
+ input {
+ display: inline-block;
+ border: 0 none;
+ font-size: $fontSize;
+ background: transparent;
+ border-bottom: 2px solid $topbarSearchInputBorderBottomColor;
+ outline: 0 none;
+ box-shadow: none;
+ color: $topbarSearchInputColor;
+ width: 100px;
+ padding: 1px 20px 1px 1px;
+ margin: 0px;
+ border-radius: 2px;
+
+ &::-webkit-input-placeholder { color:$topbarSearchInputColor; opacity: .7; transition: opacity $transitionDuration;}
+ &:-moz-placeholder { color:$topbarSearchInputColor; opacity: .7; transition: opacity $transitionDuration;}
+ &::-moz-placeholder { color:$topbarSearchInputColor; opacity: .7; transition: opacity $transitionDuration;}
+ &:-ms-input-placeholder { color:$topbarSearchInputColor; opacity: .7; transition: opacity $transitionDuration;}
+ }
+
+ .layout-topbar-search-icon {
+ font-size: 18px;
+ position: absolute;
+ top: -1px;
+ right: 0px;
+ }
+
+ &:hover {
+ input {
+ border-bottom-color: $topbarItemHoverColor;
+ &::-webkit-input-placeholder { opacity: 1 }
+ &:-moz-placeholder {opacity: 1}
+ &::-moz-placeholder {opacity: 1}
+ &:-ms-input-placeholder {opacity: 1}
+ }
+
+ .layout-topbar-search-icon {
+ color: $topbarItemHoverColor;
+ }
+ }
+ }
+ }
+
+ .layout-menu-button {
+ cursor: pointer;
+ display: inline-block;
+ text-decoration: none;
+ color: $topbarItemColor;
+ transition: color $transitionDuration;
+
+ span {
+ font-size: 1.5em;
+ }
+
+ &:hover {
+ color: $topbarItemHoverColor;
+ }
+ }
+
+ button {
+ cursor: pointer;
+ }
+}
diff --git a/scss/sigma/sass/_typography.scss b/scss/sigma/sass/_typography.scss
new file mode 100644
index 00000000..c0eb1b49
--- /dev/null
+++ b/scss/sigma/sass/_typography.scss
@@ -0,0 +1,102 @@
+h1, h2, h3, h4, h5, h6 {
+ margin: 1.5rem 0 1rem 0;
+ font-family: inherit;
+ font-weight: normal;
+ line-height: 1.2;
+ color: inherit;
+
+ &:first-child {
+ margin-top: 0;
+ }
+}
+
+// Add classes to have a visual aid in displaying things bigger,
+// but not having the semantic meaning (screenreaders and stuff).
+h1, .h1 {
+ font-size: 2.5rem;
+}
+
+h2, .h2 {
+ font-size: 2rem;
+}
+
+h3, .h3 {
+ font-size: 1.75rem;
+}
+
+h4, .h4 {
+ font-size: 1.5rem;
+}
+
+h5, .h5 {
+ font-size: 1.25rem;
+}
+
+h6, .h6 {
+ font-size: 1rem;
+}
+
+mark {
+ background: #FFF8E1;
+ padding: .25rem .4rem;
+ border-radius: $borderRadius;
+ font-family: monospace;
+}
+
+blockquote {
+ margin: 1rem 0;
+ padding: 0 2rem;
+ border-left: 4px solid #90A4AE;
+}
+
+hr {
+ border-top: solid $dividerColor;
+ border-width: 1px 0 0 0;
+ margin: 1rem 0;
+}
+
+p {
+ margin: 0 0 1rem 0;
+ line-height: 1.5;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.theme-day {
+ .text-success
+ {
+ color: #2a602c;
+ }
+
+ .text-warning
+ {
+ color: #b08620;
+ }
+
+ .text-danger
+ {
+ color: #D32F2F;
+ }
+}
+.theme-night {
+ .text-success
+ {
+ color: #2a602c;
+ }
+
+ .text-warning
+ {
+ color: #b08620;
+ }
+
+ .text-danger
+ {
+ color: #D32F2F;
+ }
+}
+
+.text-small {
+ font-size: .85em;
+}
\ No newline at end of file
diff --git a/scss/sigma/sass/_utils.scss b/scss/sigma/sass/_utils.scss
new file mode 100644
index 00000000..a6c1f898
--- /dev/null
+++ b/scss/sigma/sass/_utils.scss
@@ -0,0 +1,26 @@
+/* Typography */
+.card {
+ background-color: #ffffff;
+ padding: 1em;
+ margin-bottom: 16px;
+ border-radius: $borderRadius;
+
+ &.card-w-title {
+ padding-bottom: 2em;
+ }
+}
+
+/* Code Highlight */
+.docs {
+ pre[class*="language-"] {
+ padding: 0 !important;
+ background: transparent;
+ overflow: visible;
+
+ > code {
+ border-left: 0 none;
+ box-shadow: none !important;
+ font-size: 14px;
+ }
+ }
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..993a7c85
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "include": [
+ "./js/**/*.js",
+ "./js/**/*.ts",
+ "./js/**/*.vue",
+ ],
+ "compilerOptions": {
+ "target": "esnext",
+ "module": "esnext",
+ // this enables stricter inference for data properties on `this`
+ "strict": true,
+ "jsx": "preserve",
+ "moduleResolution": "node",
+ "allowJs": true,
+ "sourceMap": true,
+ "outDir": "./obj",
+ },
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index f85adbfa..03ec85ee 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -338,7 +338,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/parser@npm:^7.14.5, @babel/parser@npm:^7.14.6, @babel/parser@npm:^7.14.7":
+"@babel/parser@npm:^7.12.0, @babel/parser@npm:^7.13.9, @babel/parser@npm:^7.14.5, @babel/parser@npm:^7.14.6, @babel/parser@npm:^7.14.7":
version: 7.14.7
resolution: "@babel/parser@npm:7.14.7"
bin:
@@ -1223,7 +1223,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/types@npm:^7.14.5, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
+"@babel/types@npm:^7.12.0, @babel/types@npm:^7.13.0, @babel/types@npm:^7.14.5, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3":
version: 7.14.5
resolution: "@babel/types@npm:7.14.5"
dependencies:
@@ -1361,6 +1361,76 @@ __metadata:
languageName: node
linkType: hard
+"@intlify/core-base@npm:9.1.6":
+ version: 9.1.6
+ resolution: "@intlify/core-base@npm:9.1.6"
+ dependencies:
+ "@intlify/devtools-if": 9.1.6
+ "@intlify/message-compiler": 9.1.6
+ "@intlify/message-resolver": 9.1.6
+ "@intlify/runtime": 9.1.6
+ "@intlify/shared": 9.1.6
+ "@intlify/vue-devtools": 9.1.6
+ checksum: e6ca1b638194135b0078b986a3e0fffd6bfeecc6e2b2f38858407479be0bbd228ff04d482450e6548f925e213497172d00e5f3cbbfb55badf3bdf2ea409ca6a7
+ languageName: node
+ linkType: hard
+
+"@intlify/devtools-if@npm:9.1.6":
+ version: 9.1.6
+ resolution: "@intlify/devtools-if@npm:9.1.6"
+ dependencies:
+ "@intlify/shared": 9.1.6
+ checksum: 24ba2e6a11cdf4e22f2cdc27b722c40dbc934ecb651e777e154d4ca9c2a8e677cd941d95c65ab6217ea2694367dbe71bec62b644a09225060af7d518eb8acf86
+ languageName: node
+ linkType: hard
+
+"@intlify/message-compiler@npm:9.1.6":
+ version: 9.1.6
+ resolution: "@intlify/message-compiler@npm:9.1.6"
+ dependencies:
+ "@intlify/message-resolver": 9.1.6
+ "@intlify/shared": 9.1.6
+ source-map: 0.6.1
+ checksum: 5080d962b80d94c90eef8bb29770c044f9e1c3cb094ef507c9e5859194ece19577f3c10cfae44dc682924fefe8d5f5651ef0d9bbe2692a75c5d522eed5830ed6
+ languageName: node
+ linkType: hard
+
+"@intlify/message-resolver@npm:9.1.6":
+ version: 9.1.6
+ resolution: "@intlify/message-resolver@npm:9.1.6"
+ checksum: ffd9a080be2f807ad598cc94e772dc1b4019688939bb86f3d44ca407f1e89510d766d3957f6c4bc879c94e0e9db0939a9c463e847ede99558f14bedc0dc1018b
+ languageName: node
+ linkType: hard
+
+"@intlify/runtime@npm:9.1.6":
+ version: 9.1.6
+ resolution: "@intlify/runtime@npm:9.1.6"
+ dependencies:
+ "@intlify/message-compiler": 9.1.6
+ "@intlify/message-resolver": 9.1.6
+ "@intlify/shared": 9.1.6
+ checksum: 8a3522d2f5f3f6884506b736708dee958b07b40b12a60e5d6e15c98e18f20819d32a0d222f2e5488d41ab63aad67fef5e54a222aac586bcd799bf5738674216f
+ languageName: node
+ linkType: hard
+
+"@intlify/shared@npm:9.1.6":
+ version: 9.1.6
+ resolution: "@intlify/shared@npm:9.1.6"
+ checksum: 286c38d788605bd53d319404cc19c0ebac247903a2328c2489e17d00c521d11cc2af77ef1bd8457bd5bb1d30af747e175051e2eb9f9c08f3909d550d70ea98ec
+ languageName: node
+ linkType: hard
+
+"@intlify/vue-devtools@npm:9.1.6":
+ version: 9.1.6
+ resolution: "@intlify/vue-devtools@npm:9.1.6"
+ dependencies:
+ "@intlify/message-resolver": 9.1.6
+ "@intlify/runtime": 9.1.6
+ "@intlify/shared": 9.1.6
+ checksum: 45c844f7b105f096ea5b29bd58c15bb5611a4256cc27af5f36b373ed791390f639ded2796318848600816dea33027468e3b8da6599cc0f58dd5250a63cabbe70
+ languageName: node
+ linkType: hard
+
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
@@ -1461,6 +1531,17 @@ __metadata:
languageName: node
linkType: hard
+"@rollup/plugin-json@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "@rollup/plugin-json@npm:4.1.0"
+ dependencies:
+ "@rollup/pluginutils": ^3.0.8
+ peerDependencies:
+ rollup: ^1.20.0 || ^2.0.0
+ checksum: 07bc6bc83d07aefd35278e4e1a125e65210061b3dcab50c0f01273c54f43a60a3e01c1a0fed451e35d592ef1cbc8288ec8148a6229cf8cca9cdbf11a6d2d7d1c
+ languageName: node
+ linkType: hard
+
"@rollup/plugin-node-resolve@npm:^13.0.0":
version: 13.0.0
resolution: "@rollup/plugin-node-resolve@npm:13.0.0"
@@ -1489,7 +1570,7 @@ __metadata:
languageName: node
linkType: hard
-"@rollup/pluginutils@npm:^3.1.0":
+"@rollup/pluginutils@npm:^3.0.8, @rollup/pluginutils@npm:^3.1.0":
version: 3.1.0
resolution: "@rollup/pluginutils@npm:3.1.0"
dependencies:
@@ -1502,7 +1583,7 @@ __metadata:
languageName: node
linkType: hard
-"@rollup/pluginutils@npm:^4.0.0":
+"@rollup/pluginutils@npm:^4.0.0, @rollup/pluginutils@npm:^4.1.0":
version: 4.1.0
resolution: "@rollup/pluginutils@npm:4.1.0"
dependencies:
@@ -1955,7 +2036,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/estree@npm:*":
+"@types/estree@npm:*, @types/estree@npm:^0.0.48":
version: 0.0.48
resolution: "@types/estree@npm:0.0.48"
checksum: 1f948e0a7730254ec77f543e4ac2c101f90147d21202d16b22b524e6e3e5d5a770d003fac3e218499d25f5db126f12c774bb16d8993114c7883496d358e1b7af
@@ -1997,6 +2078,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/json-schema@npm:^7.0.7":
+ version: 7.0.7
+ resolution: "@types/json-schema@npm:7.0.7"
+ checksum: b9d2c509fa4e0b82f58e73f5e6ab76c60ff1884ba41bb82f37fb1cece226d4a3e5a62fedf78a43da0005373a6713d9abe61c1e592906402c41c08ad6ab26d52b
+ languageName: node
+ linkType: hard
+
"@types/json5@npm:^0.0.29":
version: 0.0.29
resolution: "@types/json5@npm:0.0.29"
@@ -2047,6 +2135,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/luxon@npm:^1.27.0":
+ version: 1.27.0
+ resolution: "@types/luxon@npm:1.27.0"
+ checksum: ebce0d4c671086c18517784abd5e49e836024d32eddcf189e03ecc1ef4547dadd194895461b53ea34c230e9eaf38f2d2c87183322e3dbcd5e0d658c6f9938995
+ languageName: node
+ linkType: hard
+
"@types/minimatch@npm:^3.0.3":
version: 3.0.4
resolution: "@types/minimatch@npm:3.0.4"
@@ -2128,6 +2223,209 @@ __metadata:
languageName: node
linkType: hard
+"@typescript-eslint/eslint-plugin@npm:^4.28.1":
+ version: 4.28.1
+ resolution: "@typescript-eslint/eslint-plugin@npm:4.28.1"
+ dependencies:
+ "@typescript-eslint/experimental-utils": 4.28.1
+ "@typescript-eslint/scope-manager": 4.28.1
+ debug: ^4.3.1
+ functional-red-black-tree: ^1.0.1
+ regexpp: ^3.1.0
+ semver: ^7.3.5
+ tsutils: ^3.21.0
+ peerDependencies:
+ "@typescript-eslint/parser": ^4.0.0
+ eslint: ^5.0.0 || ^6.0.0 || ^7.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 79a794ff44794c3260d0b57f8b9a25e46e87a93eb151c2e2e1c8822c8fb373fe07207edf3c8cd6e21864142214e36d233fc5502d60a2a979eb16e02fce0d9fe6
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/experimental-utils@npm:4.28.1":
+ version: 4.28.1
+ resolution: "@typescript-eslint/experimental-utils@npm:4.28.1"
+ dependencies:
+ "@types/json-schema": ^7.0.7
+ "@typescript-eslint/scope-manager": 4.28.1
+ "@typescript-eslint/types": 4.28.1
+ "@typescript-eslint/typescript-estree": 4.28.1
+ eslint-scope: ^5.1.1
+ eslint-utils: ^3.0.0
+ peerDependencies:
+ eslint: "*"
+ checksum: 8e10696825812dee45dc7fd0292eefd527c59886b9fb922dd2da49201da6b1746d4b48abfdc32c33c1489a4eb7409df56c7371c76e5ea723c4e6d99457ec98a0
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/parser@npm:^4.28.1":
+ version: 4.28.1
+ resolution: "@typescript-eslint/parser@npm:4.28.1"
+ dependencies:
+ "@typescript-eslint/scope-manager": 4.28.1
+ "@typescript-eslint/types": 4.28.1
+ "@typescript-eslint/typescript-estree": 4.28.1
+ debug: ^4.3.1
+ peerDependencies:
+ eslint: ^5.0.0 || ^6.0.0 || ^7.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: ab7c7fef7477cd1506041cba0ba36ad003c74214f8a96836a742309cc471b12979b622edf98915b0fad45a257466b291ca9924ae5c7b38316a5fd23d1d634070
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/scope-manager@npm:4.28.1":
+ version: 4.28.1
+ resolution: "@typescript-eslint/scope-manager@npm:4.28.1"
+ dependencies:
+ "@typescript-eslint/types": 4.28.1
+ "@typescript-eslint/visitor-keys": 4.28.1
+ checksum: 2c2f4858f497bf01ba878fe5ec6181a1aa43a57750b52bef8b6e3c3ba65ea28f4209f4b794e8dec9b2f7b39c54a830d2004231bae2aa9e9b8d9a1623be4ce917
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/types@npm:4.28.1":
+ version: 4.28.1
+ resolution: "@typescript-eslint/types@npm:4.28.1"
+ checksum: 8748138865df0a167b6260158fcaa3fc26e3f442065168f762b63e64e7dff065a1175822df0e0ecd0d555cac2756472ae0de64b59ecbaee484be9c4c8409da90
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/typescript-estree@npm:4.28.1":
+ version: 4.28.1
+ resolution: "@typescript-eslint/typescript-estree@npm:4.28.1"
+ dependencies:
+ "@typescript-eslint/types": 4.28.1
+ "@typescript-eslint/visitor-keys": 4.28.1
+ debug: ^4.3.1
+ globby: ^11.0.3
+ is-glob: ^4.0.1
+ semver: ^7.3.5
+ tsutils: ^3.21.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 26dfe831a9d5b915c9c4e9c110c0c815ce3f8a9890e61ed46d187f967d3192047e793d7dc771f35cf6828a9f4b9ddf20f06b4f0418b3346fa11617facd1d1969
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/visitor-keys@npm:4.28.1":
+ version: 4.28.1
+ resolution: "@typescript-eslint/visitor-keys@npm:4.28.1"
+ dependencies:
+ "@typescript-eslint/types": 4.28.1
+ eslint-visitor-keys: ^2.0.0
+ checksum: 85c22a0374952a258cfbce3fb1802fc41545f4c97319a057c615b4c6c5cb9efa587e7574adc71d0fa7b35790b5d1d5e17580cc27d57f819627906acf292f810c
+ languageName: node
+ linkType: hard
+
+"@vue/compiler-core@npm:3.1.4":
+ version: 3.1.4
+ resolution: "@vue/compiler-core@npm:3.1.4"
+ dependencies:
+ "@babel/parser": ^7.12.0
+ "@babel/types": ^7.12.0
+ "@vue/shared": 3.1.4
+ estree-walker: ^2.0.1
+ source-map: ^0.6.1
+ checksum: 78b3eaa2811a5c1223c8fa848938d3b29d1ee0c91941058969b0d660be8ac114dc53857054e036dc7a12c35b757b7901182234fc34ab9e441c380266e5cb6917
+ languageName: node
+ linkType: hard
+
+"@vue/compiler-dom@npm:3.1.4":
+ version: 3.1.4
+ resolution: "@vue/compiler-dom@npm:3.1.4"
+ dependencies:
+ "@vue/compiler-core": 3.1.4
+ "@vue/shared": 3.1.4
+ checksum: 7904fdd56b8766b70ad14dcd8d656b522c629dd1a0873156baf9fb71c998b97c145e85d8707e52d97c69c2eac35f37d28fbf9fdc109ab088b86048f6d9a47951
+ languageName: node
+ linkType: hard
+
+"@vue/compiler-sfc@npm:^3.1.4":
+ version: 3.1.4
+ resolution: "@vue/compiler-sfc@npm:3.1.4"
+ dependencies:
+ "@babel/parser": ^7.13.9
+ "@babel/types": ^7.13.0
+ "@types/estree": ^0.0.48
+ "@vue/compiler-core": 3.1.4
+ "@vue/compiler-dom": 3.1.4
+ "@vue/compiler-ssr": 3.1.4
+ "@vue/shared": 3.1.4
+ consolidate: ^0.16.0
+ estree-walker: ^2.0.1
+ hash-sum: ^2.0.0
+ lru-cache: ^5.1.1
+ magic-string: ^0.25.7
+ merge-source-map: ^1.1.0
+ postcss: ^8.1.10
+ postcss-modules: ^4.0.0
+ postcss-selector-parser: ^6.0.4
+ source-map: ^0.6.1
+ peerDependencies:
+ vue: 3.1.4
+ checksum: 1200de53f0dec13159bc72dbbabc9e3a04160027fd9bfedf6bc1e240eccb2293c1de19bb30dff9c6b8c310a371bb56a72968b4f74cfb5078ca7749b45708bedf
+ languageName: node
+ linkType: hard
+
+"@vue/compiler-ssr@npm:3.1.4":
+ version: 3.1.4
+ resolution: "@vue/compiler-ssr@npm:3.1.4"
+ dependencies:
+ "@vue/compiler-dom": 3.1.4
+ "@vue/shared": 3.1.4
+ checksum: 8db0b0e3c3d7b53621947f0b4916457f121bed0108c75db474561c991fbde696bdd03c32a132a457941a9e821351dd49cf16a7fb99566168d8857db196858fbd
+ languageName: node
+ linkType: hard
+
+"@vue/devtools-api@npm:^6.0.0-beta.11, @vue/devtools-api@npm:^6.0.0-beta.14, @vue/devtools-api@npm:^6.0.0-beta.7":
+ version: 6.0.0-beta.15
+ resolution: "@vue/devtools-api@npm:6.0.0-beta.15"
+ checksum: 6e76f02a9aa34cd8712c4897569ebf69f6ddb387e44d5162a98a1b5dc4528c655689eade4453b88f2479ba75e58fb10aa7333c8bb6f4f6e0e9e91fe6f8b780eb
+ languageName: node
+ linkType: hard
+
+"@vue/reactivity@npm:3.1.4":
+ version: 3.1.4
+ resolution: "@vue/reactivity@npm:3.1.4"
+ dependencies:
+ "@vue/shared": 3.1.4
+ checksum: 6c82d4dbf269a701c4e14bcf74d86a53d7ac871d2ebc142aab6dce85d18b667b378f1e3911eb537e1537cc624841e5d516e84c8adc60f0892e4718c5113fac0b
+ languageName: node
+ linkType: hard
+
+"@vue/runtime-core@npm:3.1.4":
+ version: 3.1.4
+ resolution: "@vue/runtime-core@npm:3.1.4"
+ dependencies:
+ "@vue/reactivity": 3.1.4
+ "@vue/shared": 3.1.4
+ checksum: f2ed8ca9d47b71751505f5ad0010d2cb7e12abfad91f005d79a5bc2997c91b33bf0bf735d0cc7981c3dfc45e9ee2a54d0ebd38fce7c1448006df6c2a3ea836db
+ languageName: node
+ linkType: hard
+
+"@vue/runtime-dom@npm:3.1.4":
+ version: 3.1.4
+ resolution: "@vue/runtime-dom@npm:3.1.4"
+ dependencies:
+ "@vue/runtime-core": 3.1.4
+ "@vue/shared": 3.1.4
+ csstype: ^2.6.8
+ checksum: 53dfa4fa52a352ef27c081f15856460b134146512994585513a9d6925ebdf8e612e56e214dc746aa8ef6cd315c582ffc760bbfe7dcb5642eb77cd5fddd5cdd72
+ languageName: node
+ linkType: hard
+
+"@vue/shared@npm:3.1.4":
+ version: 3.1.4
+ resolution: "@vue/shared@npm:3.1.4"
+ checksum: 3fb7e5c171d447d7f2a75d045a6a780359200dad2ff7b62ff8d4f66588c871f32822a06c1cc7ff13ff2a3f50f5e872118ed8837a48c22415ac5e152e6cf9717e
+ languageName: node
+ linkType: hard
+
"@yarnpkg/core@npm:^2.4.0":
version: 2.4.0
resolution: "@yarnpkg/core@npm:2.4.0"
@@ -3276,6 +3574,13 @@ __metadata:
languageName: node
linkType: hard
+"bluebird@npm:^3.7.2":
+ version: 3.7.2
+ resolution: "bluebird@npm:3.7.2"
+ checksum: 4f2288662f3d4eadbb82d4daa4a7d7976a28fa3c7eb4102c9b4033b03e5be4574ba123ac52a7c103cde4cb7b2d2afc1dbe41817ca15a29ff21ecd258d0286047
+ languageName: node
+ linkType: hard
+
"boolbase@npm:^1.0.0, boolbase@npm:~1.0.0":
version: 1.0.0
resolution: "boolbase@npm:1.0.0"
@@ -3801,6 +4106,13 @@ __metadata:
languageName: node
linkType: hard
+"clone@npm:^2.1.1":
+ version: 2.1.2
+ resolution: "clone@npm:2.1.2"
+ checksum: 85232d66015d2d703dc59812e30049931d97c7815bf70569ae4fb7a66be257f46fcf47040e4e7050966ca195a9e615d59d73ba9e39fc37eedba1a76865f27ab1
+ languageName: node
+ linkType: hard
+
"coa@npm:^2.0.2":
version: 2.0.2
resolution: "coa@npm:2.0.2"
@@ -3901,6 +4213,20 @@ __metadata:
languageName: node
linkType: hard
+"commander@npm:^4.0.0":
+ version: 4.1.1
+ resolution: "commander@npm:4.1.1"
+ checksum: 448585071bf8fb4c0bf9dd52abaee43dea086f801334caec2c8e8c9f456f8abc224c1614ccbbdbf7da5ac2524d230f13cf1fc86c233cf8a041ebecea7df106e9
+ languageName: node
+ linkType: hard
+
+"commander@npm:^6.1.0":
+ version: 6.2.1
+ resolution: "commander@npm:6.2.1"
+ checksum: 47856aae6f194404122e359d8463e5e1a18f7cbab26722ce69f1379be8514bd49a160ef81a983d3d2091e3240022643354101d1276c797dcdd0b5bfc3c3f04a3
+ languageName: node
+ linkType: hard
+
"commander@npm:^7.1.0":
version: 7.2.0
resolution: "commander@npm:7.2.0"
@@ -3952,6 +4278,15 @@ __metadata:
languageName: node
linkType: hard
+"consolidate@npm:^0.16.0":
+ version: 0.16.0
+ resolution: "consolidate@npm:0.16.0"
+ dependencies:
+ bluebird: ^3.7.2
+ checksum: b75f222ef398c055a1ce17117d3803887db75aa076c3053b4aa1c3d9cded1191026b9848b5eefe492e2d7b1496844aef249a3a902e20b3034963a5b32ed3a105
+ languageName: node
+ linkType: hard
+
"contains-path@npm:^0.1.0":
version: 0.1.0
resolution: "contains-path@npm:0.1.0"
@@ -4315,6 +4650,13 @@ __metadata:
languageName: node
linkType: hard
+"csstype@npm:^2.6.8":
+ version: 2.6.17
+ resolution: "csstype@npm:2.6.17"
+ checksum: 82128d8c8b515a874eeb734f6ed3a32871180f37c7c5665951bfc9932415f6a15298d10fe7f973553f528a5c6cd478ad5a4bd55f213171b9e08ffe13d58fded7
+ languageName: node
+ linkType: hard
+
"cwise-compiler@npm:^1.1.2":
version: 1.1.3
resolution: "cwise-compiler@npm:1.1.3"
@@ -4508,6 +4850,20 @@ __metadata:
languageName: node
linkType: hard
+"deep-equal@npm:^1.0.1":
+ version: 1.1.1
+ resolution: "deep-equal@npm:1.1.1"
+ dependencies:
+ is-arguments: ^1.0.4
+ is-date-object: ^1.0.1
+ is-regex: ^1.0.4
+ object-is: ^1.0.1
+ object-keys: ^1.1.1
+ regexp.prototype.flags: ^1.2.0
+ checksum: cc6a0009ce73a10230758d50795211fb3ceb7eb7f2cf8baed1c4a4cb2a06dc28857ce11e641c95ca9abb5edc1f1e86a4bb6bcffaadf9fe9d310c102d346d043b
+ languageName: node
+ linkType: hard
+
"deep-extend@npm:^0.6.0":
version: 0.6.0
resolution: "deep-extend@npm:0.6.0"
@@ -4751,6 +5107,18 @@ __metadata:
languageName: node
linkType: hard
+"dot-object@npm:^2.1.4":
+ version: 2.1.4
+ resolution: "dot-object@npm:2.1.4"
+ dependencies:
+ commander: ^4.0.0
+ glob: ^7.1.5
+ bin:
+ dot-object: bin/dot-object
+ checksum: f0aa292dc8db8b2bd527cf9b7696b687d61d3564299d087d20774622c822232805d749ebdc6d8e9f5c004a6b86dd3d7d345e6803c46e2b338a6b1000f53045aa
+ languageName: node
+ linkType: hard
+
"dot-prop@npm:^5.2.0":
version: 5.3.0
resolution: "dot-prop@npm:5.3.0"
@@ -5190,6 +5558,17 @@ __metadata:
languageName: node
linkType: hard
+"eslint-utils@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "eslint-utils@npm:3.0.0"
+ dependencies:
+ eslint-visitor-keys: ^2.0.0
+ peerDependencies:
+ eslint: ">=5"
+ checksum: 035451529f016e28edd26e8951f15e28a6a4e58adff67bd0cb494879f360080750b9c779e46561369aec0657ac2b89dd8b0aa38476e8cdf50e635aa872fa27b6
+ languageName: node
+ linkType: hard
+
"eslint-visitor-keys@npm:^1.1.0, eslint-visitor-keys@npm:^1.3.0":
version: 1.3.0
resolution: "eslint-visitor-keys@npm:1.3.0"
@@ -5401,6 +5780,13 @@ __metadata:
languageName: node
linkType: hard
+"eventemitter3@npm:^2.0.3":
+ version: 2.0.3
+ resolution: "eventemitter3@npm:2.0.3"
+ checksum: ef4875784b1d5e175fb27718e06c73b11fc92a412f56dcb62def92c8bd9eecd533f5444c0e4a17de524da885b51c3fa2330996300f9b83d01ff85b0f5548d0d6
+ languageName: node
+ linkType: hard
+
"eventemitter3@npm:^4.0.4":
version: 4.0.7
resolution: "eventemitter3@npm:4.0.7"
@@ -5423,7 +5809,7 @@ __metadata:
languageName: node
linkType: hard
-"extend@npm:~3.0.2":
+"extend@npm:^3.0.2, extend@npm:~3.0.2":
version: 3.0.2
resolution: "extend@npm:3.0.2"
checksum: 1406da1f0c4b00b839497e4cdd0ec4303ce2ae349144b7c28064a5073c93ce8c08da4e8fb1bc5cb459ffcdff30a35fc0fe54344eb88320e70100c1baea6f195c
@@ -5462,6 +5848,13 @@ __metadata:
languageName: node
linkType: hard
+"fast-diff@npm:1.1.2":
+ version: 1.1.2
+ resolution: "fast-diff@npm:1.1.2"
+ checksum: da9aec22af75159330ade58076544cf7518f533c2b3c1a0932a28f768908425ab4b6262e51823d7b1fa335060151d3602ad60d09e25d6d5042a93c0e26a01070
+ languageName: node
+ linkType: hard
+
"fast-glob@npm:^3.1.1, fast-glob@npm:^3.2.2":
version: 3.2.6
resolution: "fast-glob@npm:3.2.6"
@@ -5534,6 +5927,17 @@ __metadata:
languageName: node
linkType: hard
+"find-cache-dir@npm:^3.3.1":
+ version: 3.3.1
+ resolution: "find-cache-dir@npm:3.3.1"
+ dependencies:
+ commondir: ^1.0.1
+ make-dir: ^3.0.2
+ pkg-dir: ^4.1.0
+ checksum: b1e23226ee89fba89646aa5f72d084c6d04bb64f6d523c9cb2d57a1b5280fcac39e92fd5be572e2fae8a83aa70bc5b797ce33a826b9a4b92373cc38e66d4aa64
+ languageName: node
+ linkType: hard
+
"find-parent-dir@npm:^0.3.0":
version: 0.3.1
resolution: "find-parent-dir@npm:0.3.1"
@@ -5559,6 +5963,16 @@ __metadata:
languageName: node
linkType: hard
+"find-up@npm:^4.0.0":
+ version: 4.1.0
+ resolution: "find-up@npm:4.1.0"
+ dependencies:
+ locate-path: ^5.0.0
+ path-exists: ^4.0.0
+ checksum: d612d28e02eaca6cd7128fc9bc9b456e2547a3f9875b2b2ae2dbdc6b8cec52bc2885efcb3ac6c18954e838f4c8e20565d196784b190e1d38565f9dc39aade722
+ languageName: node
+ linkType: hard
+
"flat-cache@npm:^2.0.1":
version: 2.0.1
resolution: "flat-cache@npm:2.0.1"
@@ -5643,6 +6057,17 @@ __metadata:
languageName: node
linkType: hard
+"fs-extra@npm:8.1.0":
+ version: 8.1.0
+ resolution: "fs-extra@npm:8.1.0"
+ dependencies:
+ graceful-fs: ^4.2.0
+ jsonfile: ^4.0.0
+ universalify: ^0.1.0
+ checksum: 056a96d4f55ab8728b021e251175a4a6440d1edb5845e6c2e8e010019bde3e63de188a0eb99386c21c71804ca1a571cd6e08f507971f10a2bc4f4f7667720fa4
+ languageName: node
+ linkType: hard
+
"fs-extra@npm:^9.0.0":
version: 9.1.0
resolution: "fs-extra@npm:9.1.0"
@@ -5855,7 +6280,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7":
+"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.5, glob@npm:^7.1.6, glob@npm:^7.1.7":
version: 7.1.7
resolution: "glob@npm:7.1.7"
dependencies:
@@ -5934,7 +6359,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"globby@npm:^11.0.0, globby@npm:^11.0.1":
+"globby@npm:^11.0.0, globby@npm:^11.0.1, globby@npm:^11.0.3":
version: 11.0.4
resolution: "globby@npm:11.0.4"
dependencies:
@@ -6018,8 +6443,13 @@ fsevents@~2.3.2:
"@rollup/plugin-babel": ^5.3.0
"@rollup/plugin-commonjs": ^19.0.0
"@rollup/plugin-eslint": ^8.0.1
+ "@rollup/plugin-json": ^4.1.0
"@rollup/plugin-node-resolve": ^13.0.0
"@rollup/plugin-replace": ^2.4.2
+ "@types/luxon": ^1.27.0
+ "@typescript-eslint/eslint-plugin": ^4.28.1
+ "@typescript-eslint/parser": ^4.28.1
+ "@vue/compiler-sfc": ^3.1.4
animate.css: ^3.7.2
autoprefixer: ^10.2.6
babel-core: ^6.26.3
@@ -6053,15 +6483,23 @@ fsevents@~2.3.2:
jquery: 3.5.1
jquery-lazy: ^1.7.11
jquery-serializejson: ^2.9.0
+ lodash: ^4.17.21
lodash.clonedeep: ^4.5.0
+ luxon: ^1.27.0
moment: ^2.27.0
node-sass-tilde-importer: ^1.0.2
nosleep.js: ^0.11.0
postcss: ^8.3.5
postcss-cli: ^8.3.1
postcss-import: ^14.0.2
+ primeflex: ^2.0.0
+ primeicons: ^4.1.0
+ primevue: "patch:primevue@3.5.1#./patches/primevue.diff"
+ quill: ^1.3.7
rollup: ^2.52.1
rollup-plugin-postcss: ^4.0.0
+ rollup-plugin-typescript2: ^0.30.0
+ rollup-plugin-vue: latest
sass: ^1.35.1
sprintf-js: ^1.1.2
standard: ^16.0.3
@@ -6072,8 +6510,16 @@ fsevents@~2.3.2:
timeago: ^1.6.7
timeago.js: ^4.0.2
toastr: ^2.1.4
+ tslib: ^2.3.0
+ typescript: ^4.3.5
uglify-js: ^3.13.10
uuid: ^8.3.2
+ vue: next
+ vue-eslint-parser: ^7.7.2
+ vue-i18n: next
+ vue-i18n-extract: ^1.2.3
+ vue-router: 4
+ vuex: next
languageName: unknown
linkType: soft
@@ -6170,6 +6616,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"hash-sum@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "hash-sum@npm:2.0.0"
+ checksum: 9d833f05e8b9cb318ff0154c3864b0d2aaf4bd675a4b65377fb4d12eed13505423deb45e85b484affd71da3d3c8b8fe30e83bf81ca9a1dd6f3523043d9281e34
+ languageName: node
+ linkType: hard
+
"hex-color-regex@npm:^1.1.0":
version: 1.1.0
resolution: "hex-color-regex@npm:1.1.0"
@@ -6505,6 +6958,15 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"is-arguments@npm:^1.0.4":
+ version: 1.1.0
+ resolution: "is-arguments@npm:1.1.0"
+ dependencies:
+ call-bind: ^1.0.0
+ checksum: 967bf47b472eba6c07685a0a2c59724c5a2f3ecc9183ebbf3d33989906e2353d0d669ca7e06b0482f31cc8e6f1785b4a2775cb9506acb48cadd0e1d5c5cf12ad
+ languageName: node
+ linkType: hard
+
"is-arrayish@npm:^0.2.1":
version: 0.2.1
resolution: "is-arrayish@npm:0.2.1"
@@ -6764,7 +7226,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"is-regex@npm:^1.1.3":
+"is-regex@npm:^1.0.4, is-regex@npm:^1.1.3":
version: 1.1.3
resolution: "is-regex@npm:1.1.3"
dependencies:
@@ -6825,6 +7287,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"is-valid-glob@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "is-valid-glob@npm:1.0.0"
+ checksum: 7d61129ee5051409cd8b1ba738d1ce7108a20b39f297671f2c07a1d2737fc13d0cc476261b9a5fa6491252e6dbf0bc7cef04444b14455e929b285fddc2f48895
+ languageName: node
+ linkType: hard
+
"is-wsl@npm:^2.1.1":
version: 2.2.0
resolution: "is-wsl@npm:2.2.0"
@@ -6934,7 +7403,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1":
+"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.0":
version: 3.14.1
resolution: "js-yaml@npm:3.14.1"
dependencies:
@@ -7098,6 +7567,18 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"jsonfile@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "jsonfile@npm:4.0.0"
+ dependencies:
+ graceful-fs: ^4.1.6
+ dependenciesMeta:
+ graceful-fs:
+ optional: true
+ checksum: a40b7b64da41c84b0dc7ad753737ba240bb0dc50a94be20ec0b73459707dede69a6f89eb44b4d29e6994ed93ddf8c9b6e57f6b1f09dd707567959880ad6cee7f
+ languageName: node
+ linkType: hard
+
"jsonfile@npm:^6.0.1":
version: 6.1.0
resolution: "jsonfile@npm:6.1.0"
@@ -7285,6 +7766,15 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"locate-path@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "locate-path@npm:5.0.0"
+ dependencies:
+ p-locate: ^4.1.0
+ checksum: c58f49d45c8672d0a290dea0ce41fcb27205b3f2d61452ba335ef3b42ad36c10c31b1f061b46d96dd4b81e9a00e8a2897bc124d75623b80a9f6d36b1e754a6b5
+ languageName: node
+ linkType: hard
+
"lodash.assign@npm:^4.2.0":
version: 4.2.0
resolution: "lodash.assign@npm:4.2.0"
@@ -7712,6 +8202,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"luxon@npm:^1.27.0":
+ version: 1.27.0
+ resolution: "luxon@npm:1.27.0"
+ checksum: c60f73b6b94bdd4e43c731133aa746388b907a26a5a426478c2520b263bec1dae4dc6e269a3410374789551309c65af5d245fae4cef61b72c3ad64a4c3e8b2b9
+ languageName: node
+ linkType: hard
+
"macos-release@npm:^2.2.0":
version: 2.5.0
resolution: "macos-release@npm:2.5.0"
@@ -7728,7 +8225,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"make-dir@npm:^3.0.0":
+"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2":
version: 3.1.0
resolution: "make-dir@npm:3.1.0"
dependencies:
@@ -7783,6 +8280,15 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"merge-source-map@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "merge-source-map@npm:1.1.0"
+ dependencies:
+ source-map: ^0.6.1
+ checksum: fc9701ad15e346905a52e5d2618730ec785e54c7938dd914885ccfea35ec1e34b3ea1a6a893952ad61d3884233bc6f79a0fe3ce20f00becd493b251f8e73aead
+ languageName: node
+ linkType: hard
+
"merge2@npm:^1.3.0":
version: 1.4.1
resolution: "merge2@npm:1.4.1"
@@ -8272,6 +8778,16 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"object-is@npm:^1.0.1":
+ version: 1.1.5
+ resolution: "object-is@npm:1.1.5"
+ dependencies:
+ call-bind: ^1.0.2
+ define-properties: ^1.1.3
+ checksum: 13084dbb7f89fa252763ad6779ebb87457c6adb295d3cd4073968a5a6b9a6cde5debeef5b2fba8ba5e20847bfc7965a6626269a62db85328c2d19ab7892ae1f4
+ languageName: node
+ linkType: hard
+
"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1":
version: 1.1.1
resolution: "object-keys@npm:1.1.1"
@@ -8492,6 +9008,15 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"p-locate@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "p-locate@npm:4.1.0"
+ dependencies:
+ p-limit: ^2.2.0
+ checksum: 57f9abef0b29f02ff88c0936a392c9a1fbdd08169e636e0d85b7407c108014d71578c0c6fe93fa49b5bf3857b20d6f16b96389e2b356f7f599d4d2150505844f
+ languageName: node
+ linkType: hard
+
"p-map@npm:2.1.0":
version: 2.1.0
resolution: "p-map@npm:2.1.0"
@@ -8567,6 +9092,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"parchment@npm:^1.1.4":
+ version: 1.1.4
+ resolution: "parchment@npm:1.1.4"
+ checksum: b36d4a8b6d6473ba78a74447980afd7566e578b054808c07dc564248e814c00b98177b615238bb4bc6cda7c25e0987325df89e6c40c6b8f83deb2b60960474a0
+ languageName: node
+ linkType: hard
+
"parent-module@npm:^1.0.0":
version: 1.0.1
resolution: "parent-module@npm:1.0.1"
@@ -8632,6 +9164,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"path-exists@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "path-exists@npm:4.0.0"
+ checksum: 6ab15000c5bea4f3e6e6b651983276e27ee42907ea29f5bd68f0d5c425c22f1664ab53c355099723f59b0bfd31aa52d29ea499e1843bf62543e045698f4c77b2
+ languageName: node
+ linkType: hard
+
"path-is-absolute@npm:^1.0.0, path-is-absolute@npm:^1.0.1":
version: 1.0.1
resolution: "path-is-absolute@npm:1.0.1"
@@ -8757,6 +9296,15 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"pkg-dir@npm:^4.1.0":
+ version: 4.2.0
+ resolution: "pkg-dir@npm:4.2.0"
+ dependencies:
+ find-up: ^4.0.0
+ checksum: 1956ebf3cf5cc36a5d20e93851fcadd5a786774eb08667078561e72e0ab8ace91fc36a028d5305f0bfe7c89f9bf51886e2a3c8cb2c2620accfa3feb8da3c256b
+ languageName: node
+ linkType: hard
+
"pkg-up@npm:^2.0.0":
version: 2.0.0
resolution: "pkg-up@npm:2.0.0"
@@ -9580,7 +10128,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"postcss@npm:^8.3.5":
+"postcss@npm:^8.1.10, postcss@npm:^8.3.5":
version: 8.3.5
resolution: "postcss@npm:8.3.5"
dependencies:
@@ -9619,6 +10167,34 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"primeflex@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "primeflex@npm:2.0.0"
+ checksum: 8b7f7af50cb7ba9c0b57f57a312d85bb134eb867026a0238cef76b6d801dfe66b29a4a58b5b93e811a097424503cc9f23a0bdd67dbfa9dae5510f54240139123
+ languageName: node
+ linkType: hard
+
+"primeicons@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "primeicons@npm:4.1.0"
+ checksum: 505e3d9bb5540977186562acf4433f3d88d6e96a7d768bb7cfb05e87f338bd133e2275711463630b2eea4a1a06c43f0fef123ba74c23f84474687c21f0350a60
+ languageName: node
+ linkType: hard
+
+primevue@3.5.1:
+ version: 3.5.1
+ resolution: "primevue@npm:3.5.1"
+ checksum: cfd8ad6a847fd15a1834ace6181ec8f35bc6f94bb0bb830d39178347861c8f12dd50ba98b2530662cba36882b5e0eedc79408e706f2c24652504b1f45ee665db
+ languageName: node
+ linkType: hard
+
+"primevue@patch:primevue@3.5.1#./patches/primevue.diff::locator=grocy%40workspace%3A.":
+ version: 3.5.1
+ resolution: "primevue@patch:primevue@npm%3A3.5.1#./patches/primevue.diff::version=3.5.1&hash=527256&locator=grocy%40workspace%3A."
+ checksum: 96c8c3de830330fff31faa535f42327425848906965185a6bb32e1a472c52358803c0beea19a530278b790f9e4a554e4fbbc3dc8663f6a9d5396f023ce5086db
+ languageName: node
+ linkType: hard
+
"private@npm:^0.1.6, private@npm:^0.1.8":
version: 0.1.8
resolution: "private@npm:0.1.8"
@@ -9824,6 +10400,31 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"quill-delta@npm:^3.6.2":
+ version: 3.6.3
+ resolution: "quill-delta@npm:3.6.3"
+ dependencies:
+ deep-equal: ^1.0.1
+ extend: ^3.0.2
+ fast-diff: 1.1.2
+ checksum: ac28eab2603326f835a4bc264d25ed462375dea032ca77ed1bded0a1d2f80d925582d9e5e602b22f0f9e62dc5df6a6709b750a365aaef466473ddd0a9eb5eb4a
+ languageName: node
+ linkType: hard
+
+"quill@npm:^1.3.7":
+ version: 1.3.7
+ resolution: "quill@npm:1.3.7"
+ dependencies:
+ clone: ^2.1.1
+ deep-equal: ^1.0.1
+ eventemitter3: ^2.0.3
+ extend: ^3.0.2
+ parchment: ^1.1.4
+ quill-delta: ^3.6.2
+ checksum: 866c28e58d739ab69c3abb0135fd4dcb3bb026e407add1eeac52cf52b11cad8b8afc5972e1326dbbcf5ca9a9f357dba3a1fed567046f061a54e81b1332347309
+ languageName: node
+ linkType: hard
+
"rc@npm:^1.2.8":
version: 1.2.8
resolution: "rc@npm:1.2.8"
@@ -9981,7 +10582,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"regexp.prototype.flags@npm:^1.3.1":
+"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.3.1":
version: 1.3.1
resolution: "regexp.prototype.flags@npm:1.3.1"
dependencies:
@@ -10156,7 +10757,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0":
+"resolve@1.20.0, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0":
version: 1.20.0
resolution: "resolve@npm:1.20.0"
dependencies:
@@ -10166,7 +10767,7 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"resolve@patch:resolve@^1.1.7#builtin, resolve@patch:resolve@^1.10.0#builtin, resolve@patch:resolve@^1.10.1#builtin, resolve@patch:resolve@^1.13.1#builtin, resolve@patch:resolve@^1.14.2#builtin, resolve@patch:resolve@^1.17.0#builtin, resolve@patch:resolve@^1.18.1#builtin, resolve@patch:resolve@^1.19.0#builtin, resolve@patch:resolve@^1.20.0#builtin":
+"resolve@patch:resolve@1.20.0#builtin, resolve@patch:resolve@^1.1.7#builtin, resolve@patch:resolve@^1.10.0#builtin, resolve@patch:resolve@^1.10.1#builtin, resolve@patch:resolve@^1.13.1#builtin, resolve@patch:resolve@^1.14.2#builtin, resolve@patch:resolve@^1.17.0#builtin, resolve@patch:resolve@^1.18.1#builtin, resolve@patch:resolve@^1.19.0#builtin, resolve@patch:resolve@^1.20.0#builtin":
version: 1.20.0
resolution: "resolve@patch:resolve@npm%3A1.20.0#builtin::version=1.20.0&hash=3388aa"
dependencies:
@@ -10302,6 +10903,35 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"rollup-plugin-typescript2@npm:^0.30.0":
+ version: 0.30.0
+ resolution: "rollup-plugin-typescript2@npm:0.30.0"
+ dependencies:
+ "@rollup/pluginutils": ^4.1.0
+ find-cache-dir: ^3.3.1
+ fs-extra: 8.1.0
+ resolve: 1.20.0
+ tslib: 2.1.0
+ peerDependencies:
+ rollup: ">=1.26.3"
+ typescript: ">=2.4.0"
+ checksum: 3bf7a4d398f53461d6486ddb92f3649e646a6d1f89340090bb242764e9ba09e97d48659ffa9135e3c8b898d9ed3bcca9269e0d6beaef4e44659ae06791f79bea
+ languageName: node
+ linkType: hard
+
+"rollup-plugin-vue@npm:latest":
+ version: 6.0.0
+ resolution: "rollup-plugin-vue@npm:6.0.0"
+ dependencies:
+ debug: ^4.1.1
+ hash-sum: ^2.0.0
+ rollup-pluginutils: ^2.8.2
+ peerDependencies:
+ "@vue/compiler-sfc": "*"
+ checksum: 3676295e80a5dce8540d9e4fe7ce56fbae92213b85d48d6d4a88b2fd834f54dcb5ff3f04ee70f6b60db8075ce16c4c1fd29de6381604daa6f36608366c01b841
+ languageName: node
+ linkType: hard
+
"rollup-pluginutils@npm:^2.8.2":
version: 2.8.2
resolution: "rollup-pluginutils@npm:2.8.2"
@@ -11033,6 +11663,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1":
+ version: 0.6.1
+ resolution: "source-map@npm:0.6.1"
+ checksum: 8647829a0611724114022be455ca1c8a2c8ae61df81c5b3667d9b398207226a1e21174fb7bbf0b4dbeb27ac358222afb5a14f1c74a62a62b8883b012e5eb1270
+ languageName: node
+ linkType: hard
+
"source-map@npm:^0.5.0, source-map@npm:^0.5.6, source-map@npm:^0.5.7":
version: 0.5.7
resolution: "source-map@npm:0.5.7"
@@ -11040,13 +11677,6 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"source-map@npm:^0.6.0, source-map@npm:^0.6.1":
- version: 0.6.1
- resolution: "source-map@npm:0.6.1"
- checksum: 8647829a0611724114022be455ca1c8a2c8ae61df81c5b3667d9b398207226a1e21174fb7bbf0b4dbeb27ac358222afb5a14f1c74a62a62b8883b012e5eb1270
- languageName: node
- linkType: hard
-
"sourcemap-codec@npm:^1.4.4":
version: 1.4.8
resolution: "sourcemap-codec@npm:1.4.8"
@@ -11811,20 +12441,38 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
-"tslib@npm:^1, tslib@npm:^1.10.0, tslib@npm:^1.11.2, tslib@npm:^1.13.0, tslib@npm:^1.9.0, tslib@npm:^1.9.3":
+"tslib@npm:2.1.0":
+ version: 2.1.0
+ resolution: "tslib@npm:2.1.0"
+ checksum: d8f5bdd067611651c6b846c2388f4dc8ba1f5af124e66105f5263d1ad56da17f4b8c6566887ca2f205c5a9758451871ceca87d5d06087af2dca1699c5e33db69
+ languageName: node
+ linkType: hard
+
+"tslib@npm:^1, tslib@npm:^1.10.0, tslib@npm:^1.11.2, tslib@npm:^1.13.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3":
version: 1.14.1
resolution: "tslib@npm:1.14.1"
checksum: f44fe7f216946b17d3e3074df3746372703cf24e9127b4c045511456e8e4bf25515fb0a1bb3937676cc305651c5d4fcb6377b0588a4c6a957e748c4c28905d17
languageName: node
linkType: hard
-"tslib@npm:^2.0.0, tslib@npm:^2.1.0":
+"tslib@npm:^2.0.0, tslib@npm:^2.1.0, tslib@npm:^2.3.0":
version: 2.3.0
resolution: "tslib@npm:2.3.0"
checksum: 7b4fc9feff0f704743c3760f5d8d708f6417fac6458159e63df3a6b1100f0736e3b99edb9fe370f274ad15160a1f49ff05cb49402534c818ff552c48e38c3e6e
languageName: node
linkType: hard
+"tsutils@npm:^3.21.0":
+ version: 3.21.0
+ resolution: "tsutils@npm:3.21.0"
+ dependencies:
+ tslib: ^1.8.1
+ peerDependencies:
+ typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ checksum: a10e746258ca9c8e5cdd5e363259b4e353a6729b432f1b30455b9d84ff3fd2f12a44fedafd13872518b0e951fa8cdf56a5b35908bc91d5bf5e7d342548427f2e
+ languageName: node
+ linkType: hard
+
"tunnel-agent@npm:^0.6.0":
version: 0.6.0
resolution: "tunnel-agent@npm:0.6.0"
@@ -11908,6 +12556,26 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+typescript@^4.3.5:
+ version: 4.3.5
+ resolution: "typescript@npm:4.3.5"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: d9a8e78d72dd19896e6bfa73ab2a0fcea6eca2700d1d6e7c33f67a970af54a3e0fed8f715a8c4e6a0ff7fc0995067b394b2003518ab0aa84cd396377e54b760c
+ languageName: node
+ linkType: hard
+
+"typescript@patch:typescript@^4.3.5#builtin":
+ version: 4.3.5
+ resolution: "typescript@patch:typescript@npm%3A4.3.5#builtin::version=4.3.5&hash=ddfc1b"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: 7f0b8343f71ecac18095be1476b398aca420ab60dc207cc1efe078f381eef5527b80a518297720257114cdbda65612f8839e4b63e85dc95e67ac5cbbade8bdf0
+ languageName: node
+ linkType: hard
+
"uglify-js@npm:^3.13.10":
version: 3.13.10
resolution: "uglify-js@npm:3.13.10"
@@ -12001,6 +12669,13 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"universalify@npm:^0.1.0":
+ version: 0.1.2
+ resolution: "universalify@npm:0.1.2"
+ checksum: 420fc6547357782c700d53e9a92506a8e95345b13e97684c8f9ab75237912ec2ebb6af8ac10d4f7406b7b6bd21c58f6c5c0811414fb0b4091b78b4743fa6806e
+ languageName: node
+ linkType: hard
+
"universalify@npm:^2.0.0":
version: 2.0.0
resolution: "universalify@npm:2.0.0"
@@ -12164,6 +12839,85 @@ fsevents@~2.3.2:
languageName: node
linkType: hard
+"vue-eslint-parser@npm:^7.7.2":
+ version: 7.7.2
+ resolution: "vue-eslint-parser@npm:7.7.2"
+ dependencies:
+ debug: ^4.1.1
+ eslint-scope: ^5.1.1
+ eslint-visitor-keys: ^1.1.0
+ espree: ^6.2.1
+ esquery: ^1.4.0
+ lodash: ^4.17.21
+ semver: ^6.3.0
+ peerDependencies:
+ eslint: ">=5.0.0"
+ checksum: 5a89f6b990a4a66cd585add662cb4985e3ea0fdc6a3007aa056322145a5c054aec7d2c271a2730be69636f5c60ef896fb51f0678f7760945c7a998282da2f1f8
+ languageName: node
+ linkType: hard
+
+"vue-i18n-extract@npm:^1.2.3":
+ version: 1.2.3
+ resolution: "vue-i18n-extract@npm:1.2.3"
+ dependencies:
+ commander: ^6.1.0
+ dot-object: ^2.1.4
+ glob: ^7.1.6
+ is-valid-glob: ^1.0.0
+ js-yaml: ^3.14.0
+ bin:
+ vue-i18n-extract: bin/vue-i18n-extract.js
+ checksum: cc9e5d29fa7aef220a539d8a23e6bcce59f63772ea9cd4aff163db835fd200fa563f1cceaf259a155f1cb0987c07563eb30f9f4ffe2f49cc3c81c7109bd654b2
+ languageName: node
+ linkType: hard
+
+"vue-i18n@npm:next":
+ version: 9.1.6
+ resolution: "vue-i18n@npm:9.1.6"
+ dependencies:
+ "@intlify/core-base": 9.1.6
+ "@intlify/shared": 9.1.6
+ "@intlify/vue-devtools": 9.1.6
+ "@vue/devtools-api": ^6.0.0-beta.7
+ peerDependencies:
+ vue: ^3.0.0
+ checksum: 6da7c84c88bbe2adbd013801d17434e68a1549ff87196b49bc5f08dea593a3cfd61fac3b2f74f93616200bf49d66dac7cd0cc5753a635e0b39753c4acd1930af
+ languageName: node
+ linkType: hard
+
+"vue-router@npm:4":
+ version: 4.0.10
+ resolution: "vue-router@npm:4.0.10"
+ dependencies:
+ "@vue/devtools-api": ^6.0.0-beta.14
+ peerDependencies:
+ vue: ^3.0.0
+ checksum: c6b43db0ef1fa5aa1f55d68fb675ab32fd48665fd96336bc136f900b4e525662a4f78f5f34c70ac912083322c7a173fac83e70db300a55d6dd8b4bbb17e753e1
+ languageName: node
+ linkType: hard
+
+"vue@npm:next":
+ version: 3.1.4
+ resolution: "vue@npm:3.1.4"
+ dependencies:
+ "@vue/compiler-dom": 3.1.4
+ "@vue/runtime-dom": 3.1.4
+ "@vue/shared": 3.1.4
+ checksum: 5b256d788c12cbd74ba3ca7a83456696cbacc2b7ef02e54a9f587c7bf5c42d7892e8d896aac96554056263c87f21e956a9636696bbd0843b05a92bc040fe3ffa
+ languageName: node
+ linkType: hard
+
+"vuex@npm:next":
+ version: 4.0.2
+ resolution: "vuex@npm:4.0.2"
+ dependencies:
+ "@vue/devtools-api": ^6.0.0-beta.11
+ peerDependencies:
+ vue: ^3.0.2
+ checksum: cb98e64928a9da876e4df12e0aaa92a70e93a391356c8a9458fd8380b8ed6a850991cc78888535a77724062d5ced38e5a2d0e50278abb56a8b9b076b173187c1
+ languageName: node
+ linkType: hard
+
"wcwidth@npm:^1.0.1":
version: 1.0.1
resolution: "wcwidth@npm:1.0.1"