mirror of
https://github.com/grocy/grocy.git
synced 2026-03-28 07:39:25 +01:00
Compare commits
81 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f32d0bb28d | ||
|
|
23af6adcee | ||
|
|
7581ad8d1b | ||
|
|
a324d430e0 | ||
|
|
68bd83e104 | ||
|
|
95d490d6ff | ||
|
|
634bae4930 | ||
|
|
b5284a80c9 | ||
|
|
eb5332f0da | ||
|
|
a5ea20afc6 | ||
|
|
c70a7efd15 | ||
|
|
1463a8d21b | ||
|
|
9fe398c4bf | ||
|
|
541cf6599f | ||
|
|
29033a28a9 | ||
|
|
487631397c | ||
|
|
cf7df4bdf8 | ||
|
|
471f21e992 | ||
|
|
2a124a3d47 | ||
|
|
bf96ff5b92 | ||
|
|
b1e3ef7881 | ||
|
|
68b4abfac4 | ||
|
|
1934256f29 | ||
|
|
8129b6b60b | ||
|
|
5bb016dfa5 | ||
|
|
23ccd05719 | ||
|
|
4c5fbffd25 | ||
|
|
8509645985 | ||
|
|
7de98db143 | ||
|
|
31185beac5 | ||
|
|
c8ee47f935 | ||
|
|
4148f8e88e | ||
|
|
ba2cb6ce08 | ||
|
|
6b18b0a7be | ||
|
|
ad0447497c | ||
|
|
3e4f200475 | ||
|
|
8560becb83 | ||
|
|
d6f3595684 | ||
|
|
8de5700310 | ||
|
|
21aa5eab21 | ||
|
|
b5c9cbccf5 | ||
|
|
de7ad6b115 | ||
|
|
a3f66b664b | ||
|
|
4364f07899 | ||
|
|
d26f24a28b | ||
|
|
e786433273 | ||
|
|
03ab765ccd | ||
|
|
b2ba1de9e3 | ||
|
|
89b8a9c1a9 | ||
|
|
541318e964 | ||
|
|
d1a8900f98 | ||
|
|
6ca87a9a49 | ||
|
|
2a3e23ded4 | ||
|
|
46253c455f | ||
|
|
63dcfcde47 | ||
|
|
54cd5a004d | ||
|
|
c11bbba214 | ||
|
|
fdddc9295d | ||
|
|
1d6e545710 | ||
|
|
57438409c4 | ||
|
|
72453eac0a | ||
|
|
27b79841fc | ||
|
|
2b994fd2ee | ||
|
|
ce5be6645e | ||
|
|
b7c4011e80 | ||
|
|
ebcc9a422e | ||
|
|
6a7436dbf0 | ||
|
|
bf353d9622 | ||
|
|
2690e535e3 | ||
|
|
98769aea11 | ||
|
|
9c60fdec5a | ||
|
|
d37c98e5f0 | ||
|
|
a1dea994c9 | ||
|
|
11fdf5929a | ||
|
|
56d8c2f13a | ||
|
|
aa88046ca4 | ||
|
|
a35db9f1d3 | ||
|
|
c8ac094bf4 | ||
|
|
a177e2a185 | ||
|
|
1f5263ef22 | ||
|
|
d747a6c86a |
|
|
@ -10,7 +10,7 @@ for /f "tokens=*" %%a in ('jq .Version versiontemp.json --raw-output') do set ve
|
||||||
del versiontemp.json
|
del versiontemp.json
|
||||||
|
|
||||||
del "%releasePath%\grocy_%version%.zip"
|
del "%releasePath%\grocy_%version%.zip"
|
||||||
7za a -r "%releasePath%\grocy_%version%.zip" "%projectPath%\*" -xr!.* -xr!build.bat -xr!composer.json -xr!composer.lock -xr!package.json -xr!yarn.lock -xr!docs
|
7za a -r "%releasePath%\grocy_%version%.zip" "%projectPath%\*" -xr!.* -xr!build.bat -xr!composer.json -xr!composer.lock -xr!package.json -xr!yarn.lock -xr!docs -xr!test -x!public\packages\@fortawesome\fontawesome-free\js -x!public\packages\@fortawesome\fontawesome-free\less -x!public\packages\@fortawesome\fontawesome-free\metadata -x!public\packages\@fortawesome\fontawesome-free\scss -x!public\packages\@fortawesome\fontawesome-free\sprites -x!public\packages\@fortawesome\fontawesome-free\svgs
|
||||||
7za a "%releasePath%\grocy_%version%.zip" "%projectPath%\public\.htaccess"
|
7za a "%releasePath%\grocy_%version%.zip" "%projectPath%\public\.htaccess"
|
||||||
7za rn "%releasePath%\grocy_%version%.zip" .htaccess public\.htaccess
|
7za rn "%releasePath%\grocy_%version%.zip" .htaccess public\.htaccess
|
||||||
7za d "%releasePath%\grocy_%version%.zip" data\*.* data\storage data\viewcache\* changelog\__TEMPLATE.md
|
7za d "%releasePath%\grocy_%version%.zip" data\*.* data\storage data\viewcache\* changelog\__TEMPLATE.md
|
||||||
|
|
|
||||||
|
|
@ -15,5 +15,5 @@ if ($adminUserRow == null)
|
||||||
}
|
}
|
||||||
|
|
||||||
$adminUserRow->update([
|
$adminUserRow->update([
|
||||||
'password' => password_hash('admin', PASSWORD_DEFAULT)
|
'password' => password_hash('admin', PASSWORD_ARGON2ID)
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
pushd ..
|
pushd ..
|
||||||
|
set COMPOSER_FUND=0
|
||||||
call composer install
|
call composer install
|
||||||
call yarn install
|
call yarn install
|
||||||
popd
|
popd
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
pushd ..
|
pushd ..
|
||||||
|
set COMPOSER_FUND=0
|
||||||
call composer update
|
call composer update
|
||||||
call yarn upgrade
|
call yarn upgrade
|
||||||
popd
|
popd
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
indent_style = tab
|
|
||||||
indent_size = 4
|
|
||||||
charset = utf-8
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
insert_final_newline = true
|
|
||||||
14
.github/CONTRIBUTING.md
vendored
Normal file
14
.github/CONTRIBUTING.md
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
## Help & Usage Questions
|
||||||
|
→ [r/grocy on Reddit](https://www.reddit.com/r/grocy)
|
||||||
|
|
||||||
|
## Bug Reports & Feature Requests
|
||||||
|
→ [Issue Tracker](https://github.com/grocy/grocy/issues/new/choose)
|
||||||
|
|
||||||
|
## Say thanks
|
||||||
|
→ <https://grocy.info/#say-thanks>
|
||||||
|
|
||||||
|
## Translations
|
||||||
|
→ [Transifex](https://explore.transifex.com/grocy/grocy/)
|
||||||
|
|
||||||
|
## Pull Requests
|
||||||
|
This project does not accept code contributions.
|
||||||
7
.github/ISSUE_TEMPLATE/bug-report.md
vendored
7
.github/ISSUE_TEMPLATE/bug-report.md
vendored
|
|
@ -1,7 +1,6 @@
|
||||||
---
|
---
|
||||||
name: Bug Report
|
name: Bug Report
|
||||||
about: If you've found something that does not work, please report it to help improve
|
about: If you've found something that does not work, please report it to help improve Grocy
|
||||||
Grocy
|
|
||||||
title: 'Bug: '
|
title: 'Bug: '
|
||||||
labels: bug
|
labels: bug
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
@ -13,8 +12,8 @@ Please make sure to:
|
||||||
|
|
||||||
- Describe the bug as detailed as possible by providing the exact steps how to reproduce it
|
- Describe the bug as detailed as possible by providing the exact steps how to reproduce it
|
||||||
- Attach screenshots where useful
|
- Attach screenshots where useful
|
||||||
- Check if the problem was maybe already reported or fixed by searching open and closed issues here
|
- Check if the problem was maybe already reported or fixed by searching open and also already closed requests here
|
||||||
- Keep it to one topic per issue
|
- Keep it to one topic per request
|
||||||
|
|
||||||
Please also try to reproduce the problem on the pre-release demo: => https://demo-prerelease.grocy.info
|
Please also try to reproduce the problem on the pre-release demo: => https://demo-prerelease.grocy.info
|
||||||
- Use a private demo instance to make your example persistent
|
- Use a private demo instance to make your example persistent
|
||||||
|
|
|
||||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Questions / Help
|
- name: Help & Usage Questions
|
||||||
url: https://www.reddit.com/r/grocy
|
url: https://www.reddit.com/r/grocy
|
||||||
about: Please use the r/grocy subreddit for general help and usage questions
|
about: Please use the r/grocy subreddit for general help and usage questions
|
||||||
|
|
|
||||||
5
.github/ISSUE_TEMPLATE/feature-request.md
vendored
5
.github/ISSUE_TEMPLATE/feature-request.md
vendored
|
|
@ -1,7 +1,6 @@
|
||||||
---
|
---
|
||||||
name: Feature Request
|
name: Feature Request
|
||||||
about: Ideas for improvements or new things which you would find useful are always
|
about: Ideas for improvements or new things which you would find useful are always welcome
|
||||||
welcome
|
|
||||||
title: 'Feature Request: '
|
title: 'Feature Request: '
|
||||||
labels: enhancement
|
labels: enhancement
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
@ -12,6 +11,6 @@ assignees: ''
|
||||||
Please make sure to:
|
Please make sure to:
|
||||||
|
|
||||||
- Describe what you would find useful as detailed as possible
|
- Describe what you would find useful as detailed as possible
|
||||||
- Check if your idea was maybe already requested by searching open requests here
|
- Check if your idea was maybe already requested by searching open and also already closed requests here
|
||||||
- Keep it to one topic per request
|
- Keep it to one topic per request
|
||||||
-->
|
-->
|
||||||
|
|
|
||||||
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
This project does not accept code contributions.
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,5 +1,4 @@
|
||||||
embedded.txt
|
embedded.txt
|
||||||
.DS_Store
|
|
||||||
/.release
|
/.release
|
||||||
/packages
|
/packages
|
||||||
/public/packages
|
/public/packages
|
||||||
|
|
|
||||||
15
.vscode/settings.json
vendored
15
.vscode/settings.json
vendored
|
|
@ -1,16 +1,3 @@
|
||||||
{
|
{
|
||||||
"phpserver.relativePath": "public",
|
"phpserver.relativePath": "public"
|
||||||
"editor.formatOnType": true,
|
|
||||||
"editor.formatOnPaste": true,
|
|
||||||
"editor.formatOnSave": true,
|
|
||||||
"editor.insertSpaces": false,
|
|
||||||
"javascript.format.placeOpenBraceOnNewLineForControlBlocks": true,
|
|
||||||
"javascript.format.placeOpenBraceOnNewLineForFunctions": true,
|
|
||||||
"javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
|
|
||||||
"javascript.preferences.quoteStyle": "double",
|
|
||||||
"blade.format.enable": true,
|
|
||||||
"html.format.wrapAttributes": "force",
|
|
||||||
"html.format.wrapLineLength": 0,
|
|
||||||
"php-cs-fixer.formatHtml": true,
|
|
||||||
"php-cs-fixer.autoFixBySemicolon": true
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2017 Bernd Bestel
|
Copyright (c) 2017-2026 Bernd Bestel (<https://berrnd.de>)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
50
README.md
50
README.md
|
|
@ -20,7 +20,7 @@ See the website. → <https://grocy.info>
|
||||||
|
|
||||||
## Questions / Help / Bug Reports / Feature Requests
|
## Questions / Help / Bug Reports / Feature Requests
|
||||||
|
|
||||||
- General help and usage questions → [r/grocy subreddit](https://www.reddit.com/r/grocy)
|
- General help and usage questions → [r/grocy on Reddit](https://www.reddit.com/r/grocy)
|
||||||
- Bug Reports and Feature Requests → [Issue Tracker](https://github.com/grocy/grocy/issues/new/choose)
|
- Bug Reports and Feature Requests → [Issue Tracker](https://github.com/grocy/grocy/issues/new/choose)
|
||||||
|
|
||||||
_Please don't send me private messages or call me regarding anything Grocy. I check the issue tracker and the subreddit pretty much daily, but don't provide any support beyond that._
|
_Please don't send me private messages or call me regarding anything Grocy. I check the issue tracker and the subreddit pretty much daily, but don't provide any support beyond that._
|
||||||
|
|
@ -33,7 +33,7 @@ See the website for a list of community contributed Add-ons / Tools. → [htt
|
||||||
|
|
||||||
> Checkout [Grocy Desktop](https://github.com/grocy/grocy-desktop), if you want to run Grocy without having to manage a webserver just like a normal (Windows) desktop application.
|
> Checkout [Grocy Desktop](https://github.com/grocy/grocy-desktop), if you want to run Grocy without having to manage a webserver just like a normal (Windows) desktop application.
|
||||||
>
|
>
|
||||||
> Directly download the [latest release](https://releases.grocy.info/latest-desktop) - the installation is nothing more than just clicking 2 times "next".
|
> Directly download the [latest release](https://releases.grocy.info/latest-desktop) (also [available via the Microsoft Store](https://apps.microsoft.com/detail/9NWB1TRNNKSF)) - the installation is nothing more than just clicking 2 times "next".
|
||||||
|
|
||||||
Grocy is technically a pretty simple PHP application, so the basic notes to get it running are:
|
Grocy is technically a pretty simple PHP application, so the basic notes to get it running are:
|
||||||
- Unpack the [latest release](https://releases.grocy.info/latest)
|
- Unpack the [latest release](https://releases.grocy.info/latest)
|
||||||
|
|
@ -50,21 +50,20 @@ See the website for more installation guides and troubleshooting help. → [h
|
||||||
|
|
||||||
### Platform support
|
### Platform support
|
||||||
|
|
||||||
- PHP 8.2 or 8.3 (with SQLite 3.34.0+)
|
- PHP 8.5 (with SQLite 3.40+)
|
||||||
- Required PHP extensions: `fileinfo`, `pdo_sqlite`, `gd`, `ctype`, `intl`, `zlib`, `mbstring`
|
- Required PHP extensions: `fileinfo`, `pdo_sqlite`, `gd`, `ctype`, `intl`, `zlib`, `mbstring`
|
||||||
- _Recommendation: Benchmark tests showed that e.g. unit conversion handling is up to 5 times faster when using a more recent (3.39.4+) SQLite version._
|
|
||||||
- Recent Firefox, Chrome or Edge
|
- Recent Firefox, Chrome or Edge
|
||||||
|
|
||||||
## How to run using Docker
|
## How to run using Docker
|
||||||
|
|
||||||
See [grocy/grocy-docker](https://github.com/grocy/grocy-docker) or [linuxserver/docker-grocy](https://github.com/linuxserver/docker-grocy) for instructions.
|
→ https://hub.docker.com/r/linuxserver/grocy
|
||||||
|
|
||||||
## How to update
|
## How to update
|
||||||
|
|
||||||
- Overwrite everything with the [latest release](https://releases.grocy.info/latest) while keeping the `data` directory
|
- Overwrite everything with the [latest release](https://releases.grocy.info/latest) while keeping the `data` directory
|
||||||
- Check `config-dist.php` for new configuration options and add them to your `data/config.php` where appropriate (the default values from `config-dist.php` will be used for not in `data/config.php` defined settings)
|
- Check `config-dist.php` for new configuration options and add them to your `data/config.php` where appropriate (the default values from `config-dist.php` will be used for not in `data/config.php` defined settings)
|
||||||
|
|
||||||
If you run Grocy on Linux, there is also `update.sh` (remember to make the script executable (`chmod +x update.sh`) and ensure that you have `unzip` installed) which does exactly this and additionally creates a backup (`.tgz` archive) of the current installation in `data/backups` (backups older than 60 days will be deleted during the update).
|
If you run Grocy on Linux, there is also `update.sh` (remember to make the script executable via `chmod +x update.sh` and ensure that you have `unzip` installed) which does exactly this and additionally creates a backup (`.tgz` archive) of the current installation in `data/backups` (backups older than 60 days will be deleted during the update).
|
||||||
|
|
||||||
## Localization
|
## Localization
|
||||||
|
|
||||||
|
|
@ -78,7 +77,7 @@ The [pre-release demo](https://demo-prerelease.grocy.info) is available for any
|
||||||
|
|
||||||
Also any translation which once reached a completion level of 70 % ([`strings` resource](https://app.transifex.com/grocy/grocy/strings/)) will be included in releases.
|
Also any translation which once reached a completion level of 70 % ([`strings` resource](https://app.transifex.com/grocy/grocy/strings/)) will be included in releases.
|
||||||
|
|
||||||
_RTL languages are unfortunately not yet supported._
|
_RTL languages are not yet supported._
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
|
|
@ -94,22 +93,32 @@ The web frontend uses exactly this API for pretty much everything. So everything
|
||||||
|
|
||||||
### Barcode readers & camera scanning
|
### Barcode readers & camera scanning
|
||||||
|
|
||||||
Some fields (with a barcode icon above) also allow to select a value by scanning a barcode. It works best when your barcode reader prefixes every barcode with a letter which is normally not part of a item name (I use a `$`) and sends a `TAB` after a scan.
|
Some fields (with a barcode icon) also allow to select a value by scanning a barcode. It works best when your barcode reader prefixes every barcode with a letter which is normally not part of a item name (I use a `$`) and sends a `TAB` after a scan.
|
||||||
|
|
||||||
Additionally it's also possible to use your device camera to scan a barcode by using the camera button on the right side of the corresponding input field (powered by [Quagga2](https://github.com/ericblade/quagga2), totally offline / client-side camera stream processing, please note due to browser security restrictions, this only works when serving Grocy via a secure connection (`https://`)). [Here](https://www.youtube.com/watch?v=veezFX4X1JU) and [there](https://www.youtube.com/watch?v=Y5YH6IJFnfc) are quick video demos of that.
|
Additionally it's also possible to use your device camera to scan a barcode by using the camera button on the right side of the corresponding input field (powered by [ZXing](https://github.com/zxing-js/library), totally offline / client-side camera stream processing. Please note due to browser security restrictions, this only works when serving Grocy via a secure connection (`https://`)). [Here](https://www.youtube.com/watch?v=veezFX4X1JU) and [there](https://www.youtube.com/watch?v=Y5YH6IJFnfc) are quick video demos of that.
|
||||||
|
|
||||||
_My personal recommendation: Use a USB barcode laser scanner. They are cheap and work 1000 % better, faster, under any lighting condition and from any angle._
|
_My personal recommendation: Use a USB barcode laser scanner. They are cheap and work 1000% better, faster, under any lighting condition and from any angle._
|
||||||
|
|
||||||
|
### Barcode lookup via external services
|
||||||
|
|
||||||
|
Products can be directly added to the database via looking them up against external services by a barcode.
|
||||||
|
|
||||||
|
This can be done in-place using the product picker workflow "External barcode lookup" (the workflow dialog is displayed when entering something unknown in any product input field) Quick video demo: <https://www.youtube.com/watch?v=-moXPA-VvGc>
|
||||||
|
|
||||||
|
A plugin for [Open Food Facts](https://world.openfoodfacts.org/) is included and used by default (see the `data/config.php` option `STOCK_BARCODE_LOOKUP_PLUGIN`).
|
||||||
|
|
||||||
|
See that plugin or `plugins/DemoBarcodeLookupPlugin.php` for a commented example implementation if you want to build a plugin.
|
||||||
|
|
||||||
### Input shorthands for date fields
|
### Input shorthands for date fields
|
||||||
|
|
||||||
For (productivity) reasons all date (and time) input (and display) fields use the ISO-8601 format regardless of localization.
|
For (productivity) reasons all date (and time) input (and display) fields use the ISO-8601 format regardless of localization.
|
||||||
The following shorthands are available:
|
The following shorthands are available:
|
||||||
- `MMDD` gets expanded to the given day on the current year, if > today, or to the given day next year, if < today, in proper notation
|
- `MMDD` gets expanded to the given day on the current year, if > today, or to the given day next year, if < today, in proper notation
|
||||||
- Example: `0517` will be converted to `2025-05-17`
|
- Example: `0517` will be converted to `2026-05-17`
|
||||||
- `YYYYMMDD` gets expanded to the proper ISO-8601 notation
|
- `YYYYMMDD` gets expanded to the proper ISO-8601 notation
|
||||||
- Example: `20250417` will be converted to `2025-04-17`
|
- Example: `20260417` will be converted to `2026-04-17`
|
||||||
- `YYYYMMe` or `YYYYMM+` gets expanded to the end of the given month in the given year in proper notation
|
- `YYYYMMe` or `YYYYMM+` gets expanded to the end of the given month in the given year in proper notation
|
||||||
- Example: `202507e` will be converted to `2025-07-31`
|
- Example: `202607e` will be converted to `2026-07-31`
|
||||||
- `[+/-]n[d/m/y]` gets expanded to a date relative to today, while adding (**+**) or subtracting (**-**) the **n**umber of **d**ays/**m**onths/**y**ears, in proper notation
|
- `[+/-]n[d/m/y]` gets expanded to a date relative to today, while adding (**+**) or subtracting (**-**) the **n**umber of **d**ays/**m**onths/**y**ears, in proper notation
|
||||||
- Example: `+1m` will be converted to the same day next month
|
- Example: `+1m` will be converted to the same day next month
|
||||||
- `x` gets expanded to `2999-12-31` (which is an alias for "never overdue")
|
- `x` gets expanded to `2999-12-31` (which is an alias for "never overdue")
|
||||||
|
|
@ -123,15 +132,12 @@ The following shorthands are available:
|
||||||
Wherever a button contains a bold highlighted letter, this is a shortcut key.
|
Wherever a button contains a bold highlighted letter, this is a shortcut key.
|
||||||
Example: Button "**P** Add as new product" can be "pressed" by using the `P` key on your keyboard.
|
Example: Button "**P** Add as new product" can be "pressed" by using the `P` key on your keyboard.
|
||||||
|
|
||||||
### Barcode lookup via external services
|
### Installable web app (PWA)
|
||||||
|
|
||||||
Products can be directly added to the database via looking them up against external services by a barcode.
|
Grocy's web frontend is responsive and an "installable web app" ([PWA](https://en.wikipedia.org/wiki/Progressive_web_app), without providing any offline usage capabilities), that provides a pretty native mobile app-like experience without the need for additional tools.
|
||||||
|
|
||||||
This can be done in-place using the product picker workflow "External barcode lookup" (the workflow dialog is displayed when entering something unknown in any product input field) Quick video demo: <https://www.youtube.com/watch?v=-moXPA-VvGc>
|
- Quick video demo on Android/Firefox: <https://www.youtube.com/watch?v=L38drVZfwHs>
|
||||||
|
- Quick video demo on Android/Chrome: <https://www.youtube.com/watch?v=rjLdXUFDNuk>
|
||||||
A plugin for [Open Food Facts](https://world.openfoodfacts.org/) is included and used by default (see the `data/config.php` option `STOCK_BARCODE_LOOKUP_PLUGIN`).
|
|
||||||
|
|
||||||
See that plugin or `plugins/DemoBarcodeLookupPlugin.php` for a commented example implementation if you want to build a plugin.
|
|
||||||
|
|
||||||
### Database migrations
|
### Database migrations
|
||||||
|
|
||||||
|
|
@ -160,11 +166,11 @@ In embedded mode, settings can be overridden by text files in `data/settingoverr
|
||||||
|
|
||||||
## Contributing / Say Thanks
|
## Contributing / Say Thanks
|
||||||
|
|
||||||
Any help is welcome, feel free to contribute anything which comes to your mind or see <https://grocy.info/#say-thanks> if you just want to say thanks.
|
See <https://grocy.info/#say-thanks> if you just want to say thanks or [Contributing](https://github.com/grocy/grocy?tab=contributing-ov-file#contributing-ov-file) for anything else.
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
|
||||||
There is none. The progress of a specific bug/enhancement is always tracked in the corresponding issue, at least by commit comment references.
|
There is none. The progress of a specific bug/enhancement is always tracked in the corresponding request, at least by commit comment references.
|
||||||
|
|
||||||
[Milestones](https://github.com/grocy/grocy/milestones) are used to indicate in which version the corresponding request was done (`vNEXT` means it's currently planned to do that for the next release).
|
[Milestones](https://github.com/grocy/grocy/milestones) are used to indicate in which version the corresponding request was done (`vNEXT` means it's currently planned to do that for the next release).
|
||||||
|
|
||||||
|
|
|
||||||
9
app.php
9
app.php
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
use Grocy\Controllers\ExceptionController;
|
use Grocy\Controllers\ExceptionController;
|
||||||
use Grocy\Helpers\UrlManager;
|
use Grocy\Helpers\UrlManager;
|
||||||
|
use Grocy\Helpers\SlimBladeView;
|
||||||
use Grocy\Middleware\LocaleMiddleware;
|
use Grocy\Middleware\LocaleMiddleware;
|
||||||
use Grocy\Middleware\CorsMiddleware;
|
use Grocy\Middleware\CorsMiddleware;
|
||||||
use Psr\Container\ContainerInterface as Container;
|
use Psr\Container\ContainerInterface as Container;
|
||||||
use Slim\Factory\AppFactory;
|
use Slim\Factory\AppFactory;
|
||||||
use Slim\Views\Blade;
|
|
||||||
|
|
||||||
// Load composer dependencies
|
// Load composer dependencies
|
||||||
require_once __DIR__ . '/packages/autoload.php';
|
require_once __DIR__ . '/packages/autoload.php';
|
||||||
|
|
@ -14,7 +14,6 @@ require_once __DIR__ . '/packages/autoload.php';
|
||||||
// Load config files
|
// Load config files
|
||||||
require_once GROCY_DATAPATH . '/config.php';
|
require_once GROCY_DATAPATH . '/config.php';
|
||||||
require_once __DIR__ . '/config-dist.php'; // For not in own config defined values we use the default ones
|
require_once __DIR__ . '/config-dist.php'; // For not in own config defined values we use the default ones
|
||||||
require_once __DIR__ . '/helpers/ConfigurationValidator.php';
|
|
||||||
|
|
||||||
// Error reporting definitions
|
// Error reporting definitions
|
||||||
if (GROCY_MODE === 'dev')
|
if (GROCY_MODE === 'dev')
|
||||||
|
|
@ -44,9 +43,9 @@ if (GROCY_DISABLE_AUTH === true)
|
||||||
// Check if any invalid entries in config.php have been made
|
// Check if any invalid entries in config.php have been made
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
(new ConfigurationValidator())->validateConfig();
|
(new Grocy\Helpers\ConfigurationValidator())->validateConfig();
|
||||||
}
|
}
|
||||||
catch (EInvalidConfig $ex)
|
catch (\Grocy\Helpers\EInvalidConfig $ex)
|
||||||
{
|
{
|
||||||
exit('Invalid setting in config.php: ' . $ex->getMessage());
|
exit('Invalid setting in config.php: ' . $ex->getMessage());
|
||||||
}
|
}
|
||||||
|
|
@ -85,7 +84,7 @@ $app = AppFactory::create();
|
||||||
$container = $app->getContainer();
|
$container = $app->getContainer();
|
||||||
$container->set('view', function (Container $container)
|
$container->set('view', function (Container $container)
|
||||||
{
|
{
|
||||||
return new Blade(__DIR__ . '/views', GROCY_DATAPATH . '/viewcache');
|
return new SlimBladeView(__DIR__ . '/views', GROCY_DATAPATH . '/viewcache');
|
||||||
});
|
});
|
||||||
|
|
||||||
$container->set('UrlManager', function (Container $container)
|
$container->set('UrlManager', function (Container $container)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
- New related project: **grocy-desktop**
|
- New related project: **Grocy Desktop**
|
||||||
- => https://github.com/grocy/grocy-desktop
|
- => https://github.com/grocy/grocy-desktop
|
||||||
- Run Grocy without a webserver just like a normal (Windows) desktop application
|
- Run Grocy without a webserver just like a normal (Windows) desktop application
|
||||||
- New "embedded mode" for Grocy to help running in "desktop application mode" [see README](https://github.com/grocy/grocy#embedded-mode)
|
- New "embedded mode" for Grocy to help running in "desktop application mode" [see README](https://github.com/grocy/grocy#embedded-mode)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,5 @@
|
||||||
- Some other small CSS fixes (context menus were not fully displayed when the parent container was to small, improved padding for text inputs)
|
- Some other small CSS fixes (context menus were not fully displayed when the parent container was to small, improved padding for text inputs)
|
||||||
- As always: Updated translations (thanks all the translators)
|
- As always: Updated translations (thanks all the translators)
|
||||||
|
|
||||||
### Self promotion
|
### Other
|
||||||
[grocy-desktop](https://github.com/grocy/grocy-desktop) is now also available through the Microsoft Store
|
- [Grocy Desktop](https://github.com/grocy/grocy-desktop) is now also available through the Microsoft Store: https://apps.microsoft.com/detail/9NWB1TRNNKSF
|
||||||
|
|
||||||
<a href="//www.microsoft.com/store/apps/9nwb1trnnksf?cid=storebadge&ocid=badge"><img src="https://assets.windowsphone.com/85864462-9c82-451e-9355-a3d5f874397a/English_get-it-from-MS_InvariantCulture_Default.png" alt="Get it from Microsoft" width="150px" /></a>
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
- New product option "Auto reprint stock entry label"
|
- New product option "Auto reprint stock entry label"
|
||||||
- When enabled, auto-changing the due date of a stock entry (by opening/freezing/thawing and having corresponding default due days set) will reprint its label (only server side label printer WebHooks are supported)
|
- When enabled, auto-changing the due date of a stock entry (by opening/freezing/thawing and having corresponding default due days set) will reprint its label (only server side label printer WebHooks are supported)
|
||||||
- Defaults to disabled, so no changed behavior when not configured
|
- Defaults to disabled, so no changed behavior when not configured
|
||||||
- Added a new option "Reprint stock entry label" on the stock entry edit page (will print the correspondind stock entry label on save)
|
- Added a new option "Reprint stock entry label" on the stock entry edit page (will print the corresponding stock entry label on save)
|
||||||
- This option will be automatically set on changing the entry's due date
|
- This option will be automatically set on changing the entry's due date
|
||||||
- The product option "Quick consume amount" (the amount used for the "quick consume/open buttons" on the stock overview page) has been split into another option "Quick open amount", to be able to set different amounts for consume and open (defaults to the "Quick consume amount" per product, so no changed behavior when not configured)
|
- The product option "Quick consume amount" (the amount used for the "quick consume/open buttons" on the stock overview page) has been split into another option "Quick open amount", to be able to set different amounts for consume and open (defaults to the "Quick consume amount" per product, so no changed behavior when not configured)
|
||||||
- Changed that for the product's average and last price (and for the price history chart) stock transactions with an empty or `0` price are ignored
|
- Changed that for the product's average and last price (and for the price history chart) stock transactions with an empty or `0` price are ignored
|
||||||
|
|
|
||||||
21
changelog/78_4.4.1_2025-01-31.md
Normal file
21
changelog/78_4.4.1_2025-01-31.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
### Stock
|
||||||
|
|
||||||
|
- Fixed that the built-in Open Food Facts external barcode lookup plugin used the staging environment of the Open Food Facts API instead of the production one
|
||||||
|
- Fixed that the product group filter on the products page (master data) didn't work when the selected product group contained special characters
|
||||||
|
- Fixed that the product filter on the stock journal summary page didn't work when the selected product contained special characters
|
||||||
|
|
||||||
|
### Shopping list
|
||||||
|
|
||||||
|
- Optimized that non-number amounts are now prevented on database level (was infamously a problem when using specific community contributed alternative clients)
|
||||||
|
|
||||||
|
### Tasks
|
||||||
|
|
||||||
|
- Fixed that set table filters were not applied after editing or adding a task
|
||||||
|
|
||||||
|
### Userfields
|
||||||
|
|
||||||
|
- Fixed that saving Userfields of type "Select list (multiple items can be selected)" did not work
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Optimized that when navigating between form input fields via the keyboard (`TAB`) there was an unwanted delay at some places
|
||||||
28
changelog/79_4.4.2_2025-02-28.md
Normal file
28
changelog/79_4.4.2_2025-02-28.md
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
### Stock
|
||||||
|
|
||||||
|
- Optimized that the built-in Open Food Facts external barcode lookup plugin now uses the localized product name (if provided by the Open Food Facts API, based on the set Grocy language of the current user)
|
||||||
|
- Fixed that the product filter on the stock entires page didn't work when the product column was reordered / not the second one
|
||||||
|
|
||||||
|
### Shopping list
|
||||||
|
|
||||||
|
- When the shopping list setting (top right corner settings menu) "Round up quantity amounts to the nearest whole number" is enabled, the "Last price (Total)" of each shopping list item and the total value of the shopping list are now also scaled up accordingly
|
||||||
|
- The print options (show header, layout type etc.) are now saved (as user settings, so global defaults can also defined in `config.php` as usual)
|
||||||
|
|
||||||
|
### Userfields
|
||||||
|
|
||||||
|
- Fixed that saving Userfields of type "Link (with title)" did not work
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Fixed that most dialogs didn't work when hosting Grocy "embedded" in an `iframe` (affecting e.g. the [Home Assistant Add-on](https://github.com/hassio-addons/addon-grocy))
|
||||||
|
|
||||||
|
### API
|
||||||
|
|
||||||
|
- Exposed the `permission_hierarchy` entity (read only, => `GET /objects/permission_hierarchy`) to provide a permission name / id mapping
|
||||||
|
|
||||||
|
### Other
|
||||||
|
- A quick reminder about official native Grocy app experiences:
|
||||||
|
- Grocy's web frontend is responsive and an "installable web app" ([PWA](https://en.wikipedia.org/wiki/Progressive_web_app), without providing any offline usage capabilities), that provides a pretty native mobile app-like experience without the need for additional tools
|
||||||
|
- => Quick video demo on Android/Firefox: https://www.youtube.com/watch?v=L38drVZfwHs
|
||||||
|
- => Quick video demo on Android/Chrome: https://www.youtube.com/watch?v=rjLdXUFDNuk
|
||||||
|
- [Grocy Desktop](https://github.com/grocy/grocy-desktop) is a way to run Grocy without having to manage a webserver, just like a normal (Windows) desktop application - available as a [classic `.msi` installation package](https://releases.grocy.info/latest-desktop) or as a [Microsoft Store App](https://apps.microsoft.com/detail/9NWB1TRNNKSF)
|
||||||
16
changelog/80_4.5.0_2025-03-28.md
Normal file
16
changelog/80_4.5.0_2025-03-28.md
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
### Stock
|
||||||
|
|
||||||
|
- Optimizations in the built-in Open Food Facts external barcode lookup plugin:
|
||||||
|
- A provided but empty localized product name is now ignored
|
||||||
|
- Non-ASCII characters in product names are now ignored (e.g. line breaks caused problems)
|
||||||
|
- Optimized that when an external barcode lookup plugin returned an image URL with query parameters, an invalid picture (file name) was added to the created product
|
||||||
|
- Added a new column "Default store" on the stock overview page (hidden by default)
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Optimized that the default font of the web frontend is now also used for non-latin characters
|
||||||
|
- Label printer WebHooks now include a new property/field `details` (that's the full product/chore/battery/etc. object)
|
||||||
|
- And also `stock_entry` (containing the full stock entry object) when printing a stock entry label
|
||||||
|
- The component used (so far [Quagga2](https://github.com/ericblade/quagga2)) that powers the camera barcode scanner was replaced by [ZXing](https://github.com/zxing-js/library) which should perform overall better and it also supports 2D barcodes (QRCode/DataMatrix) (thanks @gergof)
|
||||||
|
- New translations: (thanks all the translators)
|
||||||
|
- Bulgarian (demo available at <https://bg.demo.grocy.info>)
|
||||||
36
changelog/81_4.6.0_2026-03-06.md
Normal file
36
changelog/81_4.6.0_2026-03-06.md
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
> ⚠️ PHP 8.5 (with SQLite 3.40+) is from now on the only supported runtime version.
|
||||||
|
|
||||||
|
### Stock
|
||||||
|
|
||||||
|
- Optimized product definition quantity unit handling:
|
||||||
|
- As long as a product was not once in stock, the product options "Default quantity unit purchase", "Default quantity unit consume" and "Quantity unit for prices" can now be changed to any other unit
|
||||||
|
- When necessary (means when no default quantity unit conversions apply), "1:1" product specific quantity unit conversion between the product's QU stock and the corresponding other unit will now be created automatically after editing a product (like already done when initially creating a product with different unit definitions)
|
||||||
|
- For convenience, when changing a product's QU stock and when all other unit properties ("Default quantity unit purchase" etc.) are the same, they will now be changed in tandem (like already done when creating a new product and initially setting the product's QU stock)
|
||||||
|
- (This should drastically improve the workflow of completing a product setup looked up via an external barcode lookup plugin)
|
||||||
|
- Optimized the line plot markers color of the price history chart (product card) (thanks @DeepCoreSystem)
|
||||||
|
- External barcode lookup plugin optimizations:
|
||||||
|
- When an image URL without a file extension is returned, the file extension is now determined by the Content-Type header (if any) (thanks @jordy-u for the idea)
|
||||||
|
- Data URLs for images are now supported (`data:image/png;base64,xxxx`) (thanks @GammaC0de)
|
||||||
|
- Fixed that German Umlauts and other special characters were removed from product names when looking up a barcode via the built-in Open Food Facts external barcode lookup plugin
|
||||||
|
- Fixed that when using/scanning a barcode on the purchase page with a note attached (which prefills the note field) and when manually selecting another product afterwards, the note of the previously used barcode was incorrectly prefilled again
|
||||||
|
- Fixed that the "next input focus handling" (jumping to the next input after entering a value) didn't work at some places (e.g. after entering a purchased date on the purchase page)
|
||||||
|
- Fixed that changing the stock setting "Due soon days" wasn't saved/applied
|
||||||
|
- Fixed that "Reprint stock entry label" on the stock entry edit page didn't actually print the corresponding label
|
||||||
|
|
||||||
|
### Shopping list
|
||||||
|
|
||||||
|
- An amount of `0` is now allowed for shopping list items (just a convenience optimization, it was already possible to leave the amount field empty which implicitly resulted in an amount of `0`)
|
||||||
|
- Fixed that the "Add all list items to stock" workflow closed the dialog after every item instead only after the last one was added
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- Fixed that changing the chore setting "Due soon days" wasn't saved/applied
|
||||||
|
|
||||||
|
### Userfields
|
||||||
|
|
||||||
|
- Fixed that the corresponding form was broken when using a `%` in an Userfield caption (only affected numeric and date-time Userfields)
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- Added a workaround for different SQL errors when running Grocy on FreeBSD and SQLite 3.41+
|
||||||
|
- Fixed that the date input shorthand `[+/-]n[d/m/y]` didn't work when the value length was >= 4 (e.g. `+10d`)
|
||||||
|
|
@ -1,25 +1,30 @@
|
||||||
{
|
{
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.2",
|
"php": "8.5.*",
|
||||||
"slim/slim": "^4.0",
|
|
||||||
"slim/psr7": "^1.0",
|
|
||||||
"slim/http": "^1.0",
|
|
||||||
"php-di/php-di": "^7.0.3",
|
|
||||||
"berrnd/slim-blade-view": "^1.0.0",
|
|
||||||
"morris/lessql": "dev-php82",
|
|
||||||
"gettext/gettext": "^4.8.10",
|
|
||||||
"eluceo/ical": "^2.2.0",
|
"eluceo/ical": "^2.2.0",
|
||||||
"erusev/parsedown": "^1.7",
|
"erusev/parsedown": "^1.7",
|
||||||
"gumlet/php-image-resize": "^2.0",
|
|
||||||
"ezyang/htmlpurifier": "^4.13",
|
"ezyang/htmlpurifier": "^4.13",
|
||||||
"interficieis/php-barcode": "^2.0.2",
|
"gettext/gettext": "dev-4.x-fork",
|
||||||
|
"gumlet/php-image-resize": "^2.0",
|
||||||
"guzzlehttp/guzzle": "^7.0",
|
"guzzlehttp/guzzle": "^7.0",
|
||||||
"mike42/escpos-php": "^4.0"
|
"interficieis/php-barcode": "^2.0.2",
|
||||||
|
"mike42/escpos-php": "^4.0",
|
||||||
|
"morris/lessql": "dev-master-fork",
|
||||||
|
"php-di/php-di": "^7.0.3",
|
||||||
|
"slim/http": "^1.0",
|
||||||
|
"slim/psr7": "^1.0",
|
||||||
|
"slim/slim": "^4.0",
|
||||||
|
"webman/blade": "^1.5",
|
||||||
|
"ramsey/uuid": "^4.9"
|
||||||
},
|
},
|
||||||
"repositories": [
|
"repositories": [
|
||||||
{
|
{
|
||||||
"type": "vcs",
|
"type": "vcs",
|
||||||
"url": "https://github.com/berrnd/lessql"
|
"url": "https://github.com/berrnd/lessql"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "vcs",
|
||||||
|
"url": "https://github.com/berrnd/php-gettext"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
|
|
||||||
1289
composer.lock
generated
1289
composer.lock
generated
File diff suppressed because it is too large
Load Diff
|
|
@ -103,14 +103,14 @@ Setting('LDAP_UID_ATTR', ''); // Windows AD: "sAMAccountName", OpenLDAP: "uid",
|
||||||
Setting('DEFAULT_PERMISSIONS', ['ADMIN']);
|
Setting('DEFAULT_PERMISSIONS', ['ADMIN']);
|
||||||
|
|
||||||
// "1D" (=> Code128) or "2D" (=> DataMatrix)
|
// "1D" (=> Code128) or "2D" (=> DataMatrix)
|
||||||
Setting('GROCYCODE_TYPE', '1D');
|
Setting('GROCYCODE_TYPE', '2D');
|
||||||
|
|
||||||
|
|
||||||
// Label printer settings
|
// Label printer settings
|
||||||
Setting('LABEL_PRINTER_WEBHOOK', ''); // The URI that Grocy will POST to when asked to print a label
|
Setting('LABEL_PRINTER_WEBHOOK', ''); // The URI that Grocy will POST to when asked to print a label
|
||||||
Setting('LABEL_PRINTER_RUN_SERVER', true); // Whether the webhook will be called server- or client-side
|
Setting('LABEL_PRINTER_RUN_SERVER', true); // Whether the webhook will be called server- or client-side
|
||||||
Setting('LABEL_PRINTER_PARAMS', ['font_family' => 'Source Sans Pro (Regular)']); // Additional parameters supplied to the webhook
|
Setting('LABEL_PRINTER_PARAMS', ['font_family' => 'Source Sans Pro (Regular)']); // Additional parameters supplied to the webhook
|
||||||
Setting('LABEL_PRINTER_HOOK_JSON', false); // TRUE to use JSON or FALSE to use normal POST request variables
|
Setting('LABEL_PRINTER_HOOK_JSON', true); // TRUE to use JSON or FALSE to use normal POST request variables
|
||||||
|
|
||||||
|
|
||||||
// Thermal printer options
|
// Thermal printer options
|
||||||
|
|
@ -202,6 +202,9 @@ DefaultUserSetting('shopping_list_show_calendar', false); // When enabled, a sma
|
||||||
DefaultUserSetting('shopping_list_round_up', false); // When enabled, all quantity amounts on the shopping list are always displayed rounded up to the nearest whole number
|
DefaultUserSetting('shopping_list_round_up', false); // When enabled, all quantity amounts on the shopping list are always displayed rounded up to the nearest whole number
|
||||||
DefaultUserSetting('shopping_list_auto_add_below_min_stock_amount', false); // If products should be automatically added to the shopping list when they are below their min. stock amount
|
DefaultUserSetting('shopping_list_auto_add_below_min_stock_amount', false); // If products should be automatically added to the shopping list when they are below their min. stock amount
|
||||||
DefaultUserSetting('shopping_list_auto_add_below_min_stock_amount_list_id', 1); // When the above setting is enabled, the id of the shopping list to which the products will be added
|
DefaultUserSetting('shopping_list_auto_add_below_min_stock_amount_list_id', 1); // When the above setting is enabled, the id of the shopping list to which the products will be added
|
||||||
|
DefaultUserSetting('shopping_list_print_show_header', true); // Default for the shopping list print option "Show header"
|
||||||
|
DefaultUserSetting('shopping_list_print_group_by_product_group', true); // Default for the shopping list print option "Group by product group"
|
||||||
|
DefaultUserSetting('shopping_list_print_layout_type', 'table'); // Default for the shopping list print option "Layout type" (table or list)
|
||||||
|
|
||||||
// Recipe settings
|
// Recipe settings
|
||||||
DefaultUserSetting('recipe_ingredients_group_by_product_group', false); // Group recipe ingredients by their product group
|
DefaultUserSetting('recipe_ingredients_group_by_product_group', false); // Group recipe ingredients by their product group
|
||||||
|
|
@ -224,13 +227,3 @@ DefaultUserSetting('calendar_color_tasks', '#28a745'); // The event color (hex c
|
||||||
DefaultUserSetting('calendar_color_chores', '#ffc107'); // The event color (hex code) for due chores
|
DefaultUserSetting('calendar_color_chores', '#ffc107'); // The event color (hex code) for due chores
|
||||||
DefaultUserSetting('calendar_color_batteries', '#17a2b8'); // The event color (hex code) for due battery charge cycles
|
DefaultUserSetting('calendar_color_batteries', '#17a2b8'); // The event color (hex code) for due battery charge cycles
|
||||||
DefaultUserSetting('calendar_color_meal_plan', '#6c757d'); // The event color (hex code) for meal plan items
|
DefaultUserSetting('calendar_color_meal_plan', '#6c757d'); // The event color (hex code) for meal plan items
|
||||||
|
|
||||||
// Component configuration for Quagga2
|
|
||||||
// See https://github.com/ericblade/quagga2#configobject for details
|
|
||||||
// Below is a generic good configuration,
|
|
||||||
// For an iPhone 7 Plus, halfsample = true, patchsize = small, frequency = 5 yields very good results
|
|
||||||
DefaultUserSetting('quagga2_numofworkers', 4);
|
|
||||||
DefaultUserSetting('quagga2_halfsample', false);
|
|
||||||
DefaultUserSetting('quagga2_patchsize', 'medium');
|
|
||||||
DefaultUserSetting('quagga2_frequency', 10);
|
|
||||||
DefaultUserSetting('quagga2_debug', false);
|
|
||||||
|
|
|
||||||
|
|
@ -69,11 +69,12 @@ class BatteriesApiController extends BaseApiController
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$battery = $this->getDatabase()->batteries()->where('id', $args['batteryId'])->fetch();
|
$batteryDetails = (object)$this->getBatteriesService()->GetBatteryDetails($args['batteryId']);
|
||||||
|
|
||||||
$webhookData = array_merge([
|
$webhookData = array_merge([
|
||||||
'battery' => $battery->name,
|
'battery' => $batteryDetails->battery->name,
|
||||||
'grocycode' => (string)(new Grocycode(Grocycode::BATTERY, $args['batteryId'])),
|
'grocycode' => (string)(new Grocycode(Grocycode::BATTERY, $args['batteryId'])),
|
||||||
|
'details' => $batteryDetails,
|
||||||
], GROCY_LABEL_PRINTER_PARAMS);
|
], GROCY_LABEL_PRINTER_PARAMS);
|
||||||
|
|
||||||
if (GROCY_LABEL_PRINTER_RUN_SERVER)
|
if (GROCY_LABEL_PRINTER_RUN_SERVER)
|
||||||
|
|
|
||||||
|
|
@ -120,11 +120,12 @@ class ChoresApiController extends BaseApiController
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$chore = $this->getDatabase()->chores()->where('id', $args['choreId'])->fetch();
|
$choreDetails = (object)$this->getChoresService()->GetChoreDetails($args['choreId']);
|
||||||
|
|
||||||
$webhookData = array_merge([
|
$webhookData = array_merge([
|
||||||
'chore' => $chore->name,
|
'chore' => $choreDetails->chore->name,
|
||||||
'grocycode' => (string)(new Grocycode(Grocycode::CHORE, $args['choreId'])),
|
'grocycode' => (string)(new Grocycode(Grocycode::CHORE, $args['choreId'])),
|
||||||
|
'details' => $choreDetails,
|
||||||
], GROCY_LABEL_PRINTER_PARAMS);
|
], GROCY_LABEL_PRINTER_PARAMS);
|
||||||
|
|
||||||
if (GROCY_LABEL_PRINTER_RUN_SERVER)
|
if (GROCY_LABEL_PRINTER_RUN_SERVER)
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,7 @@ class RecipesApiController extends BaseApiController
|
||||||
$webhookData = array_merge([
|
$webhookData = array_merge([
|
||||||
'recipe' => $recipe->name,
|
'recipe' => $recipe->name,
|
||||||
'grocycode' => (string)(new Grocycode(Grocycode::RECIPE, $args['recipeId'])),
|
'grocycode' => (string)(new Grocycode(Grocycode::RECIPE, $args['recipeId'])),
|
||||||
|
'details' => $recipe
|
||||||
], GROCY_LABEL_PRINTER_PARAMS);
|
], GROCY_LABEL_PRINTER_PARAMS);
|
||||||
|
|
||||||
if (GROCY_LABEL_PRINTER_RUN_SERVER)
|
if (GROCY_LABEL_PRINTER_RUN_SERVER)
|
||||||
|
|
|
||||||
|
|
@ -672,11 +672,12 @@ class StockApiController extends BaseApiController
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$product = $this->getDatabase()->products()->where('id', $args['productId'])->fetch();
|
$productDetails = (object)$this->getStockService()->GetProductDetails($args['productId']);
|
||||||
|
|
||||||
$webhookData = array_merge([
|
$webhookData = array_merge([
|
||||||
'product' => $product->name,
|
'product' => $productDetails->product->name,
|
||||||
'grocycode' => (string)(new Grocycode(Grocycode::PRODUCT, $product->id)),
|
'grocycode' => (string)(new Grocycode(Grocycode::PRODUCT, $productDetails->product->id)),
|
||||||
|
'details' => $productDetails,
|
||||||
], GROCY_LABEL_PRINTER_PARAMS);
|
], GROCY_LABEL_PRINTER_PARAMS);
|
||||||
|
|
||||||
if (GROCY_LABEL_PRINTER_RUN_SERVER)
|
if (GROCY_LABEL_PRINTER_RUN_SERVER)
|
||||||
|
|
@ -697,11 +698,13 @@ class StockApiController extends BaseApiController
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$stockEntry = $this->getDatabase()->stock()->where('id', $args['entryId'])->fetch();
|
$stockEntry = $this->getDatabase()->stock()->where('id', $args['entryId'])->fetch();
|
||||||
$product = $this->getDatabase()->products()->where('id', $stockEntry->product_id)->fetch();
|
$productDetails = (object)$this->getStockService()->GetProductDetails($stockEntry->product_id);
|
||||||
|
|
||||||
$webhookData = array_merge([
|
$webhookData = array_merge([
|
||||||
'product' => $product->name,
|
'product' => $productDetails->product->name,
|
||||||
'grocycode' => (string)(new Grocycode(Grocycode::PRODUCT, $stockEntry->product_id, [$stockEntry->stock_id])),
|
'grocycode' => (string)(new Grocycode(Grocycode::PRODUCT, $stockEntry->product_id, [$stockEntry->stock_id])),
|
||||||
|
'details' => $productDetails,
|
||||||
|
'stock_entry' => $stockEntry,
|
||||||
], GROCY_LABEL_PRINTER_PARAMS);
|
], GROCY_LABEL_PRINTER_PARAMS);
|
||||||
|
|
||||||
if (GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING)
|
if (GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING)
|
||||||
|
|
|
||||||
|
|
@ -195,12 +195,13 @@ class StockController extends BaseController
|
||||||
{
|
{
|
||||||
if ($args['productId'] == 'new')
|
if ($args['productId'] == 'new')
|
||||||
{
|
{
|
||||||
|
$quantityunits = $this->getDatabase()->quantity_units()->where('active = 1')->orderBy('name', 'COLLATE NOCASE');
|
||||||
|
|
||||||
return $this->renderPage($response, 'productform', [
|
return $this->renderPage($response, 'productform', [
|
||||||
'locations' => $this->getDatabase()->locations()->where('active = 1')->orderBy('name'),
|
'locations' => $this->getDatabase()->locations()->where('active = 1')->orderBy('name'),
|
||||||
'barcodes' => $this->getDatabase()->product_barcodes()->orderBy('barcode'),
|
'barcodes' => $this->getDatabase()->product_barcodes()->orderBy('barcode'),
|
||||||
'quantityunits' => $this->getDatabase()->quantity_units()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'quantityunitsAll' => $quantityunits,
|
||||||
'quantityunitsStock' => $this->getDatabase()->quantity_units()->orderBy('name', 'COLLATE NOCASE'),
|
'quantityunitsReferenced' => $quantityunits,
|
||||||
'referencedQuantityunits' => $this->getDatabase()->quantity_units()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
|
||||||
'shoppinglocations' => $this->getDatabase()->shopping_locations()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'shoppinglocations' => $this->getDatabase()->shopping_locations()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'productgroups' => $this->getDatabase()->product_groups()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'productgroups' => $this->getDatabase()->product_groups()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'userfields' => $this->getUserfieldsService()->GetFields('products'),
|
'userfields' => $this->getUserfieldsService()->GetFields('products'),
|
||||||
|
|
@ -217,9 +218,8 @@ class StockController extends BaseController
|
||||||
'product' => $product,
|
'product' => $product,
|
||||||
'locations' => $this->getDatabase()->locations()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'locations' => $this->getDatabase()->locations()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'barcodes' => $this->getDatabase()->product_barcodes()->orderBy('barcode'),
|
'barcodes' => $this->getDatabase()->product_barcodes()->orderBy('barcode'),
|
||||||
'quantityunits' => $this->getDatabase()->quantity_units()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'quantityunitsAll' => $this->getDatabase()->quantity_units()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'quantityunitsStock' => $this->getDatabase()->quantity_units()->where('id IN (SELECT to_qu_id FROM cache__quantity_unit_conversions_resolved WHERE product_id = :1) OR NOT EXISTS(SELECT 1 FROM stock_log WHERE product_id = :1)', $product->id)->orderBy('name', 'COLLATE NOCASE'),
|
'quantityunitsReferenced' => $this->getDatabase()->quantity_units()->where('id IN (SELECT to_qu_id FROM cache__quantity_unit_conversions_resolved WHERE product_id = :1) OR NOT EXISTS(SELECT 1 FROM stock_log WHERE product_id = :1)', $product->id)->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'referencedQuantityunits' => $this->getDatabase()->quantity_units()->where('active = 1')->where('id IN (SELECT to_qu_id FROM cache__quantity_unit_conversions_resolved WHERE product_id = :1)', $product->id)->orderBy('name', 'COLLATE NOCASE'),
|
|
||||||
'shoppinglocations' => $this->getDatabase()->shopping_locations()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'shoppinglocations' => $this->getDatabase()->shopping_locations()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'productgroups' => $this->getDatabase()->product_groups()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
'productgroups' => $this->getDatabase()->product_groups()->where('active = 1')->orderBy('name', 'COLLATE NOCASE'),
|
||||||
'userfields' => $this->getUserfieldsService()->GetFields('products'),
|
'userfields' => $this->getUserfieldsService()->GetFields('products'),
|
||||||
|
|
|
||||||
|
|
@ -1063,6 +1063,7 @@
|
||||||
"/users/{userId}/permissions": {
|
"/users/{userId}/permissions": {
|
||||||
"get": {
|
"get": {
|
||||||
"summary": "Returns the assigned permissions of the given user",
|
"summary": "Returns the assigned permissions of the given user",
|
||||||
|
"description": "See \"GET /objects/permission_hierarchy\" for a permission name / id mapping",
|
||||||
"tags": [
|
"tags": [
|
||||||
"User management"
|
"User management"
|
||||||
],
|
],
|
||||||
|
|
@ -1113,6 +1114,7 @@
|
||||||
},
|
},
|
||||||
"post": {
|
"post": {
|
||||||
"summary": "Adds a permission to the given user",
|
"summary": "Adds a permission to the given user",
|
||||||
|
"description": "See \"GET /objects/permission_hierarchy\" for a permission name / id mapping",
|
||||||
"tags": [
|
"tags": [
|
||||||
"User management"
|
"User management"
|
||||||
],
|
],
|
||||||
|
|
@ -1161,6 +1163,7 @@
|
||||||
},
|
},
|
||||||
"put": {
|
"put": {
|
||||||
"summary": "Replaces the assigned permissions of the given user",
|
"summary": "Replaces the assigned permissions of the given user",
|
||||||
|
"description": "See \"GET /objects/permission_hierarchy\" for a permission name / id mapping",
|
||||||
"tags": [
|
"tags": [
|
||||||
"User management"
|
"User management"
|
||||||
],
|
],
|
||||||
|
|
@ -1614,10 +1617,7 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "array",
|
"$ref": "#/components/schemas/CurrentVolatilStockResponse"
|
||||||
"items": {
|
|
||||||
"$ref": "#/components/schemas/CurrentVolatilStockResponse"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5906,7 +5906,8 @@
|
||||||
"quantity_unit_conversions_resolved",
|
"quantity_unit_conversions_resolved",
|
||||||
"recipes_pos_resolved",
|
"recipes_pos_resolved",
|
||||||
"battery_charge_cycles",
|
"battery_charge_cycles",
|
||||||
"product_barcodes_view"
|
"product_barcodes_view",
|
||||||
|
"permission_hierarchy"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ExposedEntityNoListing": {
|
"ExposedEntityNoListing": {
|
||||||
|
|
@ -5928,7 +5929,8 @@
|
||||||
"quantity_unit_conversions_resolved",
|
"quantity_unit_conversions_resolved",
|
||||||
"recipes_pos_resolved",
|
"recipes_pos_resolved",
|
||||||
"battery_charge_cycles",
|
"battery_charge_cycles",
|
||||||
"product_barcodes_view"
|
"product_barcodes_view",
|
||||||
|
"permission_hierarchy"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ExposedEntityNoDelete": {
|
"ExposedEntityNoDelete": {
|
||||||
|
|
@ -5943,7 +5945,8 @@
|
||||||
"quantity_unit_conversions_resolved",
|
"quantity_unit_conversions_resolved",
|
||||||
"recipes_pos_resolved",
|
"recipes_pos_resolved",
|
||||||
"battery_charge_cycles",
|
"battery_charge_cycles",
|
||||||
"product_barcodes_view"
|
"product_barcodes_view",
|
||||||
|
"permission_hierarchy"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ExposedEntityEditRequiresAdmin": {
|
"ExposedEntityEditRequiresAdmin": {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
class EInvalidConfig extends Exception
|
namespace Grocy\Helpers;
|
||||||
|
|
||||||
|
class EInvalidConfig extends \Exception
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
class ERequirementNotMet extends Exception
|
namespace Grocy\Helpers;
|
||||||
|
|
||||||
|
class ERequirementNotMet extends \Exception
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -10,8 +12,8 @@ const REQUIRED_PHP_EXTENSIONS = ['fileinfo', 'pdo_sqlite', 'gd', 'ctype', 'intl'
|
||||||
'filter', 'iconv', 'tokenizer', 'json'
|
'filter', 'iconv', 'tokenizer', 'json'
|
||||||
];
|
];
|
||||||
|
|
||||||
const REQUIRED_PHP_VERSION = '8.2.0';
|
const REQUIRED_PHP_VERSION = '8.5.0';
|
||||||
const REQUIRED_SQLITE_VERSION = '3.34.0';
|
const REQUIRED_SQLITE_VERSION = '3.40.0';
|
||||||
|
|
||||||
class PrerequisiteChecker
|
class PrerequisiteChecker
|
||||||
{
|
{
|
||||||
|
|
@ -81,7 +83,7 @@ class PrerequisiteChecker
|
||||||
|
|
||||||
private function getSqlVersionAsString()
|
private function getSqlVersionAsString()
|
||||||
{
|
{
|
||||||
$dbh = new PDO('sqlite::memory:');
|
$dbh = new \PDO('sqlite::memory:');
|
||||||
return $dbh->query('select sqlite_version()')->fetch()[0];
|
return $dbh->query('select sqlite_version()')->fetch()[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
34
helpers/SlimBladeView.php
Normal file
34
helpers/SlimBladeView.php
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Grocy\Helpers;
|
||||||
|
|
||||||
|
use Jenssegers\Blade\Blade;
|
||||||
|
use Psr\Http\Message\ResponseInterface;
|
||||||
|
|
||||||
|
class SlimBladeView
|
||||||
|
{
|
||||||
|
public function __construct(string $viewPaths, string $cachePath)
|
||||||
|
{
|
||||||
|
$this->ViewPaths = $viewPaths;
|
||||||
|
$this->CachePath = $cachePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected $ViewPaths;
|
||||||
|
protected $CachePath;
|
||||||
|
protected $ViewData = [];
|
||||||
|
|
||||||
|
public function render(ResponseInterface $response, string $template, array $data = [])
|
||||||
|
{
|
||||||
|
$data = array_merge($this->ViewData, $data);
|
||||||
|
$renderer = new Blade($this->ViewPaths, $this->CachePath, null);
|
||||||
|
$output = $renderer->make($template, $data)->render();
|
||||||
|
|
||||||
|
$response->getBody()->write($output);
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function set(string $key, mixed $value)
|
||||||
|
{
|
||||||
|
$this->ViewData[$key] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -265,9 +265,9 @@ function require_frontend_packages(array $packages)
|
||||||
|
|
||||||
function EmptyFolder($folderPath)
|
function EmptyFolder($folderPath)
|
||||||
{
|
{
|
||||||
foreach(glob("{$folderPath}/*") as $item)
|
foreach (glob("{$folderPath}/*") as $item)
|
||||||
{
|
{
|
||||||
if(is_dir($item))
|
if (is_dir($item))
|
||||||
{
|
{
|
||||||
EmptyFolder($item);
|
EmptyFolder($item);
|
||||||
rmdir($item);
|
rmdir($item);
|
||||||
|
|
|
||||||
31
localization/bg_BG/chore_assignment_types.po
Normal file
31
localization/bg_BG/chore_assignment_types.po
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Translators:
|
||||||
|
# Plamen Stoyanov <fireto@gmail.com>, 2020
|
||||||
|
# Dwight Schrute <rvelitchkov@gmail.com>, 2020
|
||||||
|
# Mihail Andreev, 2020
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
|
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||||
|
"Last-Translator: Mihail Andreev, 2020\n"
|
||||||
|
"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/grocy/teams/93189/bg_BG/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: bg_BG\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Domain: grocy/chore_assignment_types\n"
|
||||||
|
|
||||||
|
msgid "no-assignment"
|
||||||
|
msgstr "не-разпределен"
|
||||||
|
|
||||||
|
msgid "who-least-did-first"
|
||||||
|
msgstr "пръв-последния-направил"
|
||||||
|
|
||||||
|
msgid "random"
|
||||||
|
msgstr "случаен"
|
||||||
|
|
||||||
|
msgid "in-alphabetical-order"
|
||||||
|
msgstr "по-азбучен-ред"
|
||||||
39
localization/bg_BG/chore_period_types.po
Normal file
39
localization/bg_BG/chore_period_types.po
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Translators:
|
||||||
|
# Plamen Stoyanov <fireto@gmail.com>, 2020
|
||||||
|
# Svetoslav Slavkov <contact@sslavkov.eu>, 2023
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
|
"Last-Translator: Svetoslav Slavkov <contact@sslavkov.eu>, 2023\n"
|
||||||
|
"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/grocy/teams/93189/bg_BG/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: bg_BG\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Domain: grocy/chore_types\n"
|
||||||
|
|
||||||
|
msgid "manually"
|
||||||
|
msgstr "Ръчно"
|
||||||
|
|
||||||
|
msgid "daily"
|
||||||
|
msgstr "Ежедневно"
|
||||||
|
|
||||||
|
msgid "weekly"
|
||||||
|
msgstr "Ежеседмично"
|
||||||
|
|
||||||
|
msgid "monthly"
|
||||||
|
msgstr "Ежемесечно"
|
||||||
|
|
||||||
|
msgid "yearly"
|
||||||
|
msgstr "Ежегодно"
|
||||||
|
|
||||||
|
msgid "hourly"
|
||||||
|
msgstr "почасово"
|
||||||
|
|
||||||
|
msgid "adaptive"
|
||||||
|
msgstr "адаптивен"
|
||||||
84
localization/bg_BG/component_translations.po
Normal file
84
localization/bg_BG/component_translations.po
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# Translators:
|
||||||
|
# Bernd Bestel <bernd@berrnd.de>, 2025
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
|
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2025\n"
|
||||||
|
"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/grocy/teams/93189/bg_BG/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: bg_BG\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Domain: grocy/component_translations\n"
|
||||||
|
|
||||||
|
msgid "moment_locale"
|
||||||
|
msgstr "bg"
|
||||||
|
|
||||||
|
msgid "datatables_localization"
|
||||||
|
msgstr ""
|
||||||
|
"{\"processing\":\"Обработка на резултатите...\",\"lengthMenu\":\"Показване "
|
||||||
|
"на _MENU_ резултата\",\"zeroRecords\":\"Няма намерени "
|
||||||
|
"резултати\",\"info\":\"Показване на резултати от _START_ до _END_ от общо "
|
||||||
|
"_TOTAL_\",\"infoEmpty\":\"Показване на резултати от 0 до 0 от общо "
|
||||||
|
"0\",\"infoFiltered\":\"(филтрирани от общо _MAX_ "
|
||||||
|
"резултата)\",\"search\":\"Търсене:\",\"paginate\":{\"first\":\"Първа\",\"previous\":\"Предишна\",\"next\":\"Следваща\",\"last\":\"Последна\"},\"aria\":{\"sortAscending\":\"сортирай"
|
||||||
|
" възходящо\",\"sortDescending\":\"сортирай "
|
||||||
|
"низходящо\"},\"autoFill\":{\"cancel\":\"Oткажи\",\"fill\":\"Попълни всички "
|
||||||
|
"клетки с <i>%d<i></i></i>\",\"fillHorizontal\":\"Попълни хоризонтални "
|
||||||
|
"клетки\",\"fillVertical\":\"Попълни вертикални "
|
||||||
|
"клетки\"},\"searchBuilder\":{\"add\":\"Добави\",\"deleteTitle\":\"Изтрий "
|
||||||
|
"критериите за търсене\",\"clearAll\":\"Изчисти "
|
||||||
|
"всичко\",\"condition\":\"Правило\",\"conditions\":{\"array\":{\"contains\":\"Съдържа\",\"empty\":\"Празно\",\"equals\":\"Еднакво"
|
||||||
|
" с\",\"not\":\"Различно от\",\"notEmpty\":\"Не е "
|
||||||
|
"празно\",\"without\":\"Без\"},\"date\":{\"after\":\"След\",\"before\":\"Преди\",\"between\":\"Между\",\"empty\":\"Празно\",\"equals\":\"Равна"
|
||||||
|
" на\",\"not\":\"Различна от\",\"notBetween\":\"Не е "
|
||||||
|
"между\",\"notEmpty\":\"Не е "
|
||||||
|
"празно\"},\"number\":{\"between\":\"Между\",\"empty\":\"Празно\",\"equals\":\"Равно\",\"gt\":\"Над\",\"gte\":\"Над"
|
||||||
|
" или равно\",\"lt\":\"Под\",\"lte\":\"Под или равно\",\"not\":\"Различно "
|
||||||
|
"от\",\"notBetween\":\"Не е между\",\"notEmpty\":\"Не е "
|
||||||
|
"празно\"},\"string\":{\"contains\":\"Съдържа\",\"empty\":\"Празно\",\"endsWith\":\"Завършва"
|
||||||
|
" с\",\"equals\":\"Еднакво с\",\"not\":\"Различно от\",\"notEmpty\":\"Не е "
|
||||||
|
"празно\",\"startsWith\":\"Започва "
|
||||||
|
"с\"}},\"data\":\"Поле\",\"logicAnd\":\"И\",\"logicOr\":\"Или\",\"value\":\"Стойност\"},\"searchPanes\":{\"clearMessage\":\"Изтрий"
|
||||||
|
" всички\",\"emptyPanes\":\"Няма "
|
||||||
|
"SearchPanes\",\"loadMessage\":\"Зареждане...\",\"title\":\"Активни филтри - "
|
||||||
|
"%d\"},\"buttons\":{\"collection\":\"Колекция\",\"colvis\":\"Показване/Скриване"
|
||||||
|
" на колони\",\"colvisRestore\":\"Показване на всички "
|
||||||
|
"колони\",\"copy\":\"Копиране\",\"copyKeys\":\"Натисни <i>ctrl или u2318 + C "
|
||||||
|
"за да копираш данните от таблицата.<br /> За да отмените, щракнете върху "
|
||||||
|
"това съобщение или натиснете "
|
||||||
|
"<i>escape</i>.</i>\",\"copySuccess\":{\"1\":\"Копиран един "
|
||||||
|
"ред\",\"_\":\"Копирани %ds реда\"},\"copyTitle\":\"Копиране в "
|
||||||
|
"буфера\",\"pageLength\":{\"_\":\"Покажи %d реда\",\"-1\":\"Покажи всички "
|
||||||
|
"редове\"},\"print\":\"Принтиране\"},\"datetime\":{\"hours\":\"Часове\",\"minutes\":\"Минути\",\"months\":{\"0\":\"Януари\",\"1\":\"Февруари\",\"2\":\"Март\",\"3\":\"Април\",\"4\":\"Май\",\"5\":\"Юни\",\"6\":\"Юли\",\"7\":\"Август\",\"8\":\"Септември\",\"9\":\"Октомври\",\"10\":\"Ноември\",\"11\":\"Декември\"},\"next\":\"Напред\",\"previous\":\"Назад\",\"seconds\":\"Секунди\",\"weekdays\":[\"Нед\",\"Пон\",\"Вт\",\"Ср\",\"Четв\",\"Пет\",\"Съб\"]},\"editor\":{\"close\":\"Затвори\",\"create\":{\"button\":\"Нов"
|
||||||
|
" запис\",\"submit\":\"Създай\",\"title\":\"Създай нов "
|
||||||
|
"запис\"},\"edit\":{\"button\":\"Промени\",\"submit\":\"Промени\",\"title\":\"Промени"
|
||||||
|
" запис\"},\"error\":{\"system\":\"Грешка в "
|
||||||
|
"системата!\"},\"multi\":{\"info\":\"Избраните елементи съдържат различни "
|
||||||
|
"стойности за това поле. За да редактирате и зададете всички елементи за това"
|
||||||
|
" поле на една и съща стойност, щракнете или докоснете тук, в противен случай"
|
||||||
|
" те ще запазят своите индивидуални стойности.\",\"noMulti\":\"Това полеможе "
|
||||||
|
"да се редактира индивидуално, но не е част от група.\",\"restore\":\"Отмяна "
|
||||||
|
"на промените\",\"title\":\"Множество "
|
||||||
|
"стойности\"},\"remove\":{\"button\":\"Изтрий\",\"confirm\":{\"1\":\"Сигурни "
|
||||||
|
"ли сте, че искате да изтриете 1 ред?\",\"_\":\"Сигурни ли сте, че искате да "
|
||||||
|
"изтриете %d реда?\"},\"submit\":\"Изтрий\",\"title\":\"Изтрий "
|
||||||
|
"запис\"}},\"emptyTable\":\"Няма налични данни в "
|
||||||
|
"таблицата\",\"loadingRecords\":\"Зареждане...\",\"select\":{\"cells\":{\"1\":\"%d"
|
||||||
|
" избрана клетка\",\"_\":\"%d избрани клетки\"},\"columns\":{\"1\":\"%d "
|
||||||
|
"избрана колона\",\"_\":\"%d избрани колони\"},\"rows\":{\"1\":\"%d избран "
|
||||||
|
"ред\",\"_\":\"%d избрани реда\"}}}"
|
||||||
|
|
||||||
|
msgid "summernote_locale"
|
||||||
|
msgstr "bg-BG"
|
||||||
|
|
||||||
|
msgid "fullcalendar_locale"
|
||||||
|
msgstr "bg"
|
||||||
|
|
||||||
|
msgid "bootstrap-select_locale"
|
||||||
|
msgstr "bg_BG"
|
||||||
417
localization/bg_BG/demo_data.po
Normal file
417
localization/bg_BG/demo_data.po
Normal file
|
|
@ -0,0 +1,417 @@
|
||||||
|
# Translators:
|
||||||
|
# Plamen Stoyanov <fireto@gmail.com>, 2020
|
||||||
|
# Mihail Andreev, 2020
|
||||||
|
# Steliyan Stoyanov, 2025
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
|
"Last-Translator: Steliyan Stoyanov, 2025\n"
|
||||||
|
"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/grocy/teams/93189/bg_BG/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: bg_BG\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Domain: grocy/demo_data\n"
|
||||||
|
|
||||||
|
msgid "Cookies"
|
||||||
|
msgstr "Бисквити"
|
||||||
|
|
||||||
|
msgid "Chocolate"
|
||||||
|
msgstr "Шоколад"
|
||||||
|
|
||||||
|
msgid "Pantry"
|
||||||
|
msgstr "Килер"
|
||||||
|
|
||||||
|
msgid "Candy cupboard"
|
||||||
|
msgstr "Шкаф за бонбони"
|
||||||
|
|
||||||
|
msgid "Tinned food cupboard"
|
||||||
|
msgstr "Шкаф за консерви"
|
||||||
|
|
||||||
|
msgid "Fridge"
|
||||||
|
msgstr "Хладилник"
|
||||||
|
|
||||||
|
msgid "Piece"
|
||||||
|
msgid_plural "Pieces"
|
||||||
|
msgstr[0] "Брой"
|
||||||
|
msgstr[1] "Броя"
|
||||||
|
|
||||||
|
msgid "Pack"
|
||||||
|
msgid_plural "Packs"
|
||||||
|
msgstr[0] "Опаковка"
|
||||||
|
msgstr[1] "Опаковки"
|
||||||
|
|
||||||
|
msgid "Glass"
|
||||||
|
msgid_plural "Glasses"
|
||||||
|
msgstr[0] "Чаша"
|
||||||
|
msgstr[1] "Чаши"
|
||||||
|
|
||||||
|
msgid "Tin"
|
||||||
|
msgid_plural "Tins"
|
||||||
|
msgstr[0] "Консерва"
|
||||||
|
msgstr[1] "Консерви"
|
||||||
|
|
||||||
|
msgid "Can"
|
||||||
|
msgid_plural "Cans"
|
||||||
|
msgstr[0] "Кен"
|
||||||
|
msgstr[1] "Кена"
|
||||||
|
|
||||||
|
msgid "Bunch"
|
||||||
|
msgid_plural "Bunches"
|
||||||
|
msgstr[0] "Куп"
|
||||||
|
msgstr[1] "Куп"
|
||||||
|
|
||||||
|
msgid "Gummy bears"
|
||||||
|
msgstr "Гумени мечета"
|
||||||
|
|
||||||
|
msgid "Crisps"
|
||||||
|
msgstr "Чипс"
|
||||||
|
|
||||||
|
msgid "Eggs"
|
||||||
|
msgstr "Яйца"
|
||||||
|
|
||||||
|
msgid "Noodles"
|
||||||
|
msgstr "Юфка"
|
||||||
|
|
||||||
|
msgid "Pickles"
|
||||||
|
msgstr "Туршия"
|
||||||
|
|
||||||
|
msgid "Gulash soup"
|
||||||
|
msgstr "Супа гулаш"
|
||||||
|
|
||||||
|
msgid "Yogurt"
|
||||||
|
msgstr "Кисело мляко"
|
||||||
|
|
||||||
|
msgid "Cheese"
|
||||||
|
msgstr "Сирене"
|
||||||
|
|
||||||
|
msgid "Cold cuts"
|
||||||
|
msgstr "Сухи мезета"
|
||||||
|
|
||||||
|
msgid "Paprika"
|
||||||
|
msgstr "Пипер"
|
||||||
|
|
||||||
|
msgid "Cucumber"
|
||||||
|
msgstr "Краставица"
|
||||||
|
|
||||||
|
msgid "Radish"
|
||||||
|
msgstr "Ряпа"
|
||||||
|
|
||||||
|
msgid "Tomato"
|
||||||
|
msgstr "Домати"
|
||||||
|
|
||||||
|
msgid "Change towels in the bathroom"
|
||||||
|
msgstr "Смени кърпите в банята"
|
||||||
|
|
||||||
|
msgid "Mop the kitchen floor"
|
||||||
|
msgstr "Избършете пода в кухнята"
|
||||||
|
|
||||||
|
msgid "Warranty ends"
|
||||||
|
msgstr "Край на гаранцията"
|
||||||
|
|
||||||
|
msgid "TV remote control"
|
||||||
|
msgstr "Дистанционно за телевизор"
|
||||||
|
|
||||||
|
msgid "Alarm clock"
|
||||||
|
msgstr "Будилник"
|
||||||
|
|
||||||
|
msgid "Heat remote control"
|
||||||
|
msgstr "Дистанционно за термостат"
|
||||||
|
|
||||||
|
msgid "Take out the trash"
|
||||||
|
msgstr "Изхвърлете боклука"
|
||||||
|
|
||||||
|
msgid "Some good snacks"
|
||||||
|
msgstr "Хубави закуски"
|
||||||
|
|
||||||
|
msgid "Pizza dough"
|
||||||
|
msgstr "Тесто за пица"
|
||||||
|
|
||||||
|
msgid "Sieved tomatoes"
|
||||||
|
msgstr "Пасирани домати"
|
||||||
|
|
||||||
|
msgid "Salami"
|
||||||
|
msgstr "Салам"
|
||||||
|
|
||||||
|
msgid "Toast"
|
||||||
|
msgstr "Хляб за тост"
|
||||||
|
|
||||||
|
msgid "Minced meat"
|
||||||
|
msgstr "Кайма"
|
||||||
|
|
||||||
|
msgid "Pizza"
|
||||||
|
msgstr "Пица"
|
||||||
|
|
||||||
|
msgid "Spaghetti bolognese"
|
||||||
|
msgstr "Спагети болонезе"
|
||||||
|
|
||||||
|
msgid "Sandwiches"
|
||||||
|
msgstr "Сандвичи"
|
||||||
|
|
||||||
|
msgid "English"
|
||||||
|
msgstr "Английски"
|
||||||
|
|
||||||
|
msgid "German"
|
||||||
|
msgstr "Немски"
|
||||||
|
|
||||||
|
msgid "Italian"
|
||||||
|
msgstr "Италиански"
|
||||||
|
|
||||||
|
msgid "This is the note content of the recipe ingredient"
|
||||||
|
msgstr "Това е съдържанието на бележката за съставката на рецептата"
|
||||||
|
|
||||||
|
msgid "Demo User"
|
||||||
|
msgstr "Демо потребител"
|
||||||
|
|
||||||
|
msgid "Gram"
|
||||||
|
msgid_plural "Grams"
|
||||||
|
msgstr[0] "Грам"
|
||||||
|
msgstr[1] "Грама"
|
||||||
|
|
||||||
|
msgid "Flour"
|
||||||
|
msgstr "Брашно"
|
||||||
|
|
||||||
|
msgid "Pancakes"
|
||||||
|
msgstr "Палачинки"
|
||||||
|
|
||||||
|
msgid "Sugar"
|
||||||
|
msgstr "Захар"
|
||||||
|
|
||||||
|
msgid "Sweets"
|
||||||
|
msgstr "Сладкиши"
|
||||||
|
|
||||||
|
msgid "Bakery products"
|
||||||
|
msgstr "Хлебни продукти"
|
||||||
|
|
||||||
|
msgid "Tinned food"
|
||||||
|
msgstr "Консерва"
|
||||||
|
|
||||||
|
msgid "Butchery products"
|
||||||
|
msgstr "Месни продукти"
|
||||||
|
|
||||||
|
msgid "Vegetables/Fruits"
|
||||||
|
msgstr "Зеленчуци/Плодове"
|
||||||
|
|
||||||
|
msgid "Refrigerated products"
|
||||||
|
msgstr "Охладени продукти"
|
||||||
|
|
||||||
|
msgid "Coffee machine"
|
||||||
|
msgstr "Кафе машина"
|
||||||
|
|
||||||
|
msgid "Dishwasher"
|
||||||
|
msgstr "Съдомиялна"
|
||||||
|
|
||||||
|
msgid "Liter"
|
||||||
|
msgstr "Литър"
|
||||||
|
|
||||||
|
msgid "Liters"
|
||||||
|
msgstr "Литри"
|
||||||
|
|
||||||
|
msgid "Bottle"
|
||||||
|
msgstr "Бутилка"
|
||||||
|
|
||||||
|
msgid "Bottles"
|
||||||
|
msgstr "Бутилки"
|
||||||
|
|
||||||
|
msgid "Milk"
|
||||||
|
msgstr "Мляко"
|
||||||
|
|
||||||
|
msgid "Chocolate sauce"
|
||||||
|
msgstr "Шоколадов сос"
|
||||||
|
|
||||||
|
msgid "Milliliters"
|
||||||
|
msgstr "Милилитри"
|
||||||
|
|
||||||
|
msgid "Milliliter"
|
||||||
|
msgstr "Милилитър"
|
||||||
|
|
||||||
|
msgid "Bottom"
|
||||||
|
msgstr "Дъно"
|
||||||
|
|
||||||
|
msgid "Topping"
|
||||||
|
msgstr "Топинг"
|
||||||
|
|
||||||
|
msgid "French"
|
||||||
|
msgstr "Френски"
|
||||||
|
|
||||||
|
msgid "Turkish"
|
||||||
|
msgstr "Турски"
|
||||||
|
|
||||||
|
msgid "Spanish"
|
||||||
|
msgstr "Испански"
|
||||||
|
|
||||||
|
msgid "Russian"
|
||||||
|
msgstr "Руски"
|
||||||
|
|
||||||
|
msgid "Vacuum the living room floor"
|
||||||
|
msgstr "Почистете пода с прахосмукачка в хола"
|
||||||
|
|
||||||
|
msgid "Clean the litter box"
|
||||||
|
msgstr "Почистете кутията за отпадъци"
|
||||||
|
|
||||||
|
msgid "Change the bed sheets"
|
||||||
|
msgstr "Смени чаршафите"
|
||||||
|
|
||||||
|
msgid "Swedish"
|
||||||
|
msgstr "Шведски"
|
||||||
|
|
||||||
|
msgid "Polish"
|
||||||
|
msgstr "Полски"
|
||||||
|
|
||||||
|
msgid "Milk Chocolate"
|
||||||
|
msgstr "Млечен шоколад"
|
||||||
|
|
||||||
|
msgid "Dark Chocolate"
|
||||||
|
msgstr "Тъмен шоколад"
|
||||||
|
|
||||||
|
msgid "Slice"
|
||||||
|
msgid_plural "Slices"
|
||||||
|
msgstr[0] "Резън"
|
||||||
|
msgstr[1] "Резъни"
|
||||||
|
|
||||||
|
msgid "Example userentity"
|
||||||
|
msgstr "Пример за ползване"
|
||||||
|
|
||||||
|
msgid "This is an example user entity..."
|
||||||
|
msgstr "Това е примерен потребителски запис..."
|
||||||
|
|
||||||
|
msgid "Custom field"
|
||||||
|
msgstr "Персонализирано поле"
|
||||||
|
|
||||||
|
msgid "Example field value..."
|
||||||
|
msgstr "Примерна стойност на полето..."
|
||||||
|
|
||||||
|
msgid "Waffle rolls"
|
||||||
|
msgstr "Вафлени рула"
|
||||||
|
|
||||||
|
msgid "Danish"
|
||||||
|
msgstr "Датски"
|
||||||
|
|
||||||
|
msgid "Dutch"
|
||||||
|
msgstr "Холандски"
|
||||||
|
|
||||||
|
msgid "Norwegian"
|
||||||
|
msgstr "Норвежки"
|
||||||
|
|
||||||
|
msgid "Demo"
|
||||||
|
msgstr "Демонстрация"
|
||||||
|
|
||||||
|
msgid "Stable version"
|
||||||
|
msgstr "Стабилна версия"
|
||||||
|
|
||||||
|
msgid "Preview version"
|
||||||
|
msgstr "Предварителна версия"
|
||||||
|
|
||||||
|
msgid "current release"
|
||||||
|
msgstr "текущо издание"
|
||||||
|
|
||||||
|
msgid "not yet released"
|
||||||
|
msgstr "още не издадено"
|
||||||
|
|
||||||
|
msgid "Portuguese (Brazil)"
|
||||||
|
msgstr "Португалски (Бразилия)"
|
||||||
|
|
||||||
|
msgid "This is a note"
|
||||||
|
msgstr "Това е бележка"
|
||||||
|
|
||||||
|
msgid "Freezer"
|
||||||
|
msgstr "Фризер"
|
||||||
|
|
||||||
|
msgid "Hungarian"
|
||||||
|
msgstr "Унгарски"
|
||||||
|
|
||||||
|
msgid "Slovak"
|
||||||
|
msgstr "Словашки"
|
||||||
|
|
||||||
|
msgid "Czech"
|
||||||
|
msgstr "Чехия"
|
||||||
|
|
||||||
|
msgid "Portuguese (Portugal)"
|
||||||
|
msgstr "Португалски (Португалия)"
|
||||||
|
|
||||||
|
# Use a in your country well known supermarket name
|
||||||
|
msgid "DemoSupermarket1"
|
||||||
|
msgstr "ДемоСупермаркет1"
|
||||||
|
|
||||||
|
# Use a in your country well known supermarket name
|
||||||
|
msgid "DemoSupermarket2"
|
||||||
|
msgstr "ТестовСупермаркет2"
|
||||||
|
|
||||||
|
msgid "Japanese"
|
||||||
|
msgstr "Японски"
|
||||||
|
|
||||||
|
msgid "Chinese (Taiwan)"
|
||||||
|
msgstr "Китайски (Тайван)"
|
||||||
|
|
||||||
|
msgid "Greek"
|
||||||
|
msgstr "гръцки"
|
||||||
|
|
||||||
|
msgid "Korean"
|
||||||
|
msgstr "корейски"
|
||||||
|
|
||||||
|
msgid "Chinese (China)"
|
||||||
|
msgstr "Китайски (China)"
|
||||||
|
|
||||||
|
msgid "Hebrew (Israel)"
|
||||||
|
msgstr "Иврит (Israel)"
|
||||||
|
|
||||||
|
msgid "Tamil"
|
||||||
|
msgstr "Тамилски"
|
||||||
|
|
||||||
|
msgid "Finnish"
|
||||||
|
msgstr "Финландски"
|
||||||
|
|
||||||
|
msgid "Breakfast"
|
||||||
|
msgstr "Закуска"
|
||||||
|
|
||||||
|
msgid "Lunch"
|
||||||
|
msgstr "Обяд"
|
||||||
|
|
||||||
|
msgid "Dinner"
|
||||||
|
msgstr "Вечеря"
|
||||||
|
|
||||||
|
msgid "Catalan"
|
||||||
|
msgstr "Каталонски"
|
||||||
|
|
||||||
|
msgid "Slovenian"
|
||||||
|
msgstr "Словенски"
|
||||||
|
|
||||||
|
msgid "Lithuanian"
|
||||||
|
msgstr "Литовски"
|
||||||
|
|
||||||
|
msgid "Ukrainian"
|
||||||
|
msgstr "Украински"
|
||||||
|
|
||||||
|
msgid "Kilogram"
|
||||||
|
msgid_plural "Kilograms"
|
||||||
|
msgstr[0] "килограм"
|
||||||
|
msgstr[1] "Килограми"
|
||||||
|
|
||||||
|
msgid "Romanian"
|
||||||
|
msgstr "Румънски"
|
||||||
|
|
||||||
|
msgid "Pint"
|
||||||
|
msgstr "Закачено"
|
||||||
|
|
||||||
|
msgid "Beverages"
|
||||||
|
msgstr "Напитки"
|
||||||
|
|
||||||
|
msgid "Ice Cream"
|
||||||
|
msgstr "Сладолед"
|
||||||
|
|
||||||
|
msgid "Soda"
|
||||||
|
msgstr "Газирана вода"
|
||||||
|
|
||||||
|
msgid "Beer"
|
||||||
|
msgstr "Бира"
|
||||||
|
|
||||||
|
msgid "Estonian"
|
||||||
|
msgstr "Естонски"
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr ""
|
||||||
150
localization/bg_BG/locales.po
Normal file
150
localization/bg_BG/locales.po
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
# Translators:
|
||||||
|
# Mihail Andreev, 2020
|
||||||
|
# N T, 2025
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
|
"PO-Revision-Date: 2020-08-31 19:11+0000\n"
|
||||||
|
"Last-Translator: N T, 2025\n"
|
||||||
|
"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/grocy/teams/93189/bg_BG/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: bg_BG\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Domain: grocy/locales\n"
|
||||||
|
|
||||||
|
# Czech
|
||||||
|
msgid "cs"
|
||||||
|
msgstr "cs"
|
||||||
|
|
||||||
|
# Danish
|
||||||
|
msgid "da"
|
||||||
|
msgstr "da"
|
||||||
|
|
||||||
|
# German
|
||||||
|
msgid "de"
|
||||||
|
msgstr "de"
|
||||||
|
|
||||||
|
# Greek
|
||||||
|
msgid "el_GR"
|
||||||
|
msgstr "el_GR"
|
||||||
|
|
||||||
|
# English
|
||||||
|
msgid "en"
|
||||||
|
msgstr "en"
|
||||||
|
|
||||||
|
# English (Great Britain)
|
||||||
|
msgid "en_GB"
|
||||||
|
msgstr "en_GB"
|
||||||
|
|
||||||
|
# Spanish
|
||||||
|
msgid "es"
|
||||||
|
msgstr "es"
|
||||||
|
|
||||||
|
# French
|
||||||
|
msgid "fr"
|
||||||
|
msgstr "fr"
|
||||||
|
|
||||||
|
# Hungarian
|
||||||
|
msgid "hu"
|
||||||
|
msgstr "hu"
|
||||||
|
|
||||||
|
# Italian
|
||||||
|
msgid "it"
|
||||||
|
msgstr "it"
|
||||||
|
|
||||||
|
# Japanese
|
||||||
|
msgid "ja"
|
||||||
|
msgstr "ja"
|
||||||
|
|
||||||
|
# Korean
|
||||||
|
msgid "ko_KR"
|
||||||
|
msgstr "ko_KR"
|
||||||
|
|
||||||
|
# Dutch
|
||||||
|
msgid "nl"
|
||||||
|
msgstr "nl"
|
||||||
|
|
||||||
|
# Norwegian
|
||||||
|
msgid "no"
|
||||||
|
msgstr "no"
|
||||||
|
|
||||||
|
# Polish
|
||||||
|
msgid "pl"
|
||||||
|
msgstr "pl"
|
||||||
|
|
||||||
|
# Portuguese (Brazil)
|
||||||
|
msgid "pt_BR"
|
||||||
|
msgstr "pt_BR"
|
||||||
|
|
||||||
|
# Portuguese (Portugal)
|
||||||
|
msgid "pt_PT"
|
||||||
|
msgstr "pt_PT"
|
||||||
|
|
||||||
|
# Russian
|
||||||
|
msgid "ru"
|
||||||
|
msgstr "ru"
|
||||||
|
|
||||||
|
# Slovak
|
||||||
|
msgid "sk_SK"
|
||||||
|
msgstr "sk_SK"
|
||||||
|
|
||||||
|
# Slovenian
|
||||||
|
msgid "sl"
|
||||||
|
msgstr "sl"
|
||||||
|
|
||||||
|
# Swedish
|
||||||
|
msgid "sv_SE"
|
||||||
|
msgstr "sv_SE"
|
||||||
|
|
||||||
|
# Turkish
|
||||||
|
msgid "tr"
|
||||||
|
msgstr "tr"
|
||||||
|
|
||||||
|
# Chinese (Taiwan)
|
||||||
|
msgid "zh_TW"
|
||||||
|
msgstr "zh_TW"
|
||||||
|
|
||||||
|
# Chinese (China)
|
||||||
|
msgid "zh_CN"
|
||||||
|
msgstr "zh_CN"
|
||||||
|
|
||||||
|
# Hebrew (Israel)
|
||||||
|
msgid "he_IL"
|
||||||
|
msgstr "he_IL"
|
||||||
|
|
||||||
|
# Tamil
|
||||||
|
msgid "ta"
|
||||||
|
msgstr "ta"
|
||||||
|
|
||||||
|
# Finnish
|
||||||
|
msgid "fi"
|
||||||
|
msgstr "fi"
|
||||||
|
|
||||||
|
# Catalan
|
||||||
|
msgid "ca"
|
||||||
|
msgstr "ca"
|
||||||
|
|
||||||
|
# Lithuanian
|
||||||
|
msgid "lt"
|
||||||
|
msgstr "lt"
|
||||||
|
|
||||||
|
# Ukrainian
|
||||||
|
msgid "uk"
|
||||||
|
msgstr "uk"
|
||||||
|
|
||||||
|
# Romanian
|
||||||
|
msgid "ro_RO"
|
||||||
|
msgstr "ro_RO"
|
||||||
|
|
||||||
|
# Estonian
|
||||||
|
msgid "et_EE"
|
||||||
|
msgstr "et_EE"
|
||||||
|
|
||||||
|
# Bulgarian
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr ""
|
||||||
137
localization/bg_BG/permissions.po
Normal file
137
localization/bg_BG/permissions.po
Normal file
|
|
@ -0,0 +1,137 @@
|
||||||
|
# Translators:
|
||||||
|
# Mihail Andreev, 2020
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
|
"PO-Revision-Date: 2020-08-29 16:33+0000\n"
|
||||||
|
"Last-Translator: Mihail Andreev, 2020\n"
|
||||||
|
"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/grocy/teams/93189/bg_BG/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: bg_BG\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Domain: grocy/permissions\n"
|
||||||
|
|
||||||
|
# All permissions
|
||||||
|
msgid "ADMIN"
|
||||||
|
msgstr "ADMIN"
|
||||||
|
|
||||||
|
# Create users
|
||||||
|
msgid "USERS_CREATE"
|
||||||
|
msgstr "USERS_CREATE"
|
||||||
|
|
||||||
|
# Edit users (including passwords)
|
||||||
|
msgid "USERS_EDIT"
|
||||||
|
msgstr "USERS_EDIT"
|
||||||
|
|
||||||
|
# Show users
|
||||||
|
msgid "USERS_READ"
|
||||||
|
msgstr "USERS_READ"
|
||||||
|
|
||||||
|
# Edit own user data / change own password
|
||||||
|
msgid "USERS_EDIT_SELF"
|
||||||
|
msgstr "USERS_EDIT_SELF"
|
||||||
|
|
||||||
|
# Undo charge cycle
|
||||||
|
msgid "BATTERIES_UNDO_CHARGE_CYCLE"
|
||||||
|
msgstr "BATTERIES_UNDO_CHARGE_CYCLE"
|
||||||
|
|
||||||
|
# Track charge cycle
|
||||||
|
msgid "BATTERIES_TRACK_CHARGE_CYCLE"
|
||||||
|
msgstr "BATTERIES_TRACK_CHARGE_CYCLE"
|
||||||
|
|
||||||
|
# Track execution
|
||||||
|
msgid "CHORE_TRACK_EXECUTION"
|
||||||
|
msgstr "CHORE_TRACK_EXECUTION"
|
||||||
|
|
||||||
|
# Undo execution
|
||||||
|
msgid "CHORE_UNDO_EXECUTION"
|
||||||
|
msgstr "CHORE_UNDO_EXECUTION"
|
||||||
|
|
||||||
|
# Edit master data
|
||||||
|
msgid "MASTER_DATA_EDIT"
|
||||||
|
msgstr "MASTER_DATA_EDIT"
|
||||||
|
|
||||||
|
# Undo execution
|
||||||
|
msgid "TASKS_UNDO_EXECUTION"
|
||||||
|
msgstr "TASKS_UNDO_EXECUTION"
|
||||||
|
|
||||||
|
# Mark completed
|
||||||
|
msgid "TASKS_MARK_COMPLETED"
|
||||||
|
msgstr "TASKS_MARK_COMPLETED"
|
||||||
|
|
||||||
|
# Edit stock entries
|
||||||
|
msgid "STOCK_EDIT"
|
||||||
|
msgstr "STOCK_EDIT"
|
||||||
|
|
||||||
|
# Transfer
|
||||||
|
msgid "STOCK_TRANSFER"
|
||||||
|
msgstr "STOCK_TRANSFER"
|
||||||
|
|
||||||
|
# Inventory
|
||||||
|
msgid "STOCK_INVENTORY"
|
||||||
|
msgstr "STOCK_INVENTORY"
|
||||||
|
|
||||||
|
# Consume
|
||||||
|
msgid "STOCK_CONSUME"
|
||||||
|
msgstr "STOCK_CONSUME"
|
||||||
|
|
||||||
|
# Open products
|
||||||
|
msgid "STOCK_OPEN"
|
||||||
|
msgstr "STOCK_OPEN"
|
||||||
|
|
||||||
|
# Purchase
|
||||||
|
msgid "STOCK_PURCHASE"
|
||||||
|
msgstr "STOCK_PURCHASE"
|
||||||
|
|
||||||
|
# Add items
|
||||||
|
msgid "SHOPPINGLIST_ITEMS_ADD"
|
||||||
|
msgstr "SHOPPINGLIST_ITEMS_ADD"
|
||||||
|
|
||||||
|
# Remove items
|
||||||
|
msgid "SHOPPINGLIST_ITEMS_DELETE"
|
||||||
|
msgstr "SHOPPINGLIST_ITEMS_DELETE"
|
||||||
|
|
||||||
|
# User management
|
||||||
|
msgid "USERS"
|
||||||
|
msgstr "USERS"
|
||||||
|
|
||||||
|
# Stock
|
||||||
|
msgid "STOCK"
|
||||||
|
msgstr "STOCK"
|
||||||
|
|
||||||
|
# Shopping list
|
||||||
|
msgid "SHOPPINGLIST"
|
||||||
|
msgstr "SHOPPINGLIST"
|
||||||
|
|
||||||
|
# Chores
|
||||||
|
msgid "CHORES"
|
||||||
|
msgstr "CHORES"
|
||||||
|
|
||||||
|
# Batteries
|
||||||
|
msgid "BATTERIES"
|
||||||
|
msgstr "BATTERIES"
|
||||||
|
|
||||||
|
# Tasks
|
||||||
|
msgid "TASKS"
|
||||||
|
msgstr "TASKS"
|
||||||
|
|
||||||
|
# Recipes
|
||||||
|
msgid "RECIPES"
|
||||||
|
msgstr "RECIPES"
|
||||||
|
|
||||||
|
# Equipment
|
||||||
|
msgid "EQUIPMENT"
|
||||||
|
msgstr "EQUIPMENT"
|
||||||
|
|
||||||
|
# Calendar
|
||||||
|
msgid "CALENDAR"
|
||||||
|
msgstr "CALENDAR"
|
||||||
|
|
||||||
|
# Meal plan
|
||||||
|
msgid "RECIPES_MEALPLAN"
|
||||||
|
msgstr "RECIPES_MEALPLAN"
|
||||||
45
localization/bg_BG/stock_transaction_types.po
Normal file
45
localization/bg_BG/stock_transaction_types.po
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
# Translators:
|
||||||
|
# Plamen Stoyanov <fireto@gmail.com>, 2020
|
||||||
|
# Mihail Andreev, 2020
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
|
"Last-Translator: Mihail Andreev, 2020\n"
|
||||||
|
"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/grocy/teams/93189/bg_BG/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: bg_BG\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Domain: grocy/stock_transaction_types\n"
|
||||||
|
|
||||||
|
msgid "purchase"
|
||||||
|
msgstr "покупка"
|
||||||
|
|
||||||
|
msgid "transfer_from"
|
||||||
|
msgstr "прехвърли_от"
|
||||||
|
|
||||||
|
msgid "transfer_to"
|
||||||
|
msgstr "прехвъли_към"
|
||||||
|
|
||||||
|
msgid "consume"
|
||||||
|
msgstr "консумирай"
|
||||||
|
|
||||||
|
msgid "inventory-correction"
|
||||||
|
msgstr "корекция-инвентаризация"
|
||||||
|
|
||||||
|
msgid "product-opened"
|
||||||
|
msgstr "отворен-продукт"
|
||||||
|
|
||||||
|
msgid "stock-edit-old"
|
||||||
|
msgstr "наличност-промяна-стар"
|
||||||
|
|
||||||
|
msgid "stock-edit-new"
|
||||||
|
msgstr "наличност-промяна-нов"
|
||||||
|
|
||||||
|
msgid "self-production"
|
||||||
|
msgstr "домашна-продукция"
|
||||||
2839
localization/bg_BG/strings.po
Normal file
2839
localization/bg_BG/strings.po
Normal file
File diff suppressed because it is too large
Load Diff
75
localization/bg_BG/userfield_types.po
Normal file
75
localization/bg_BG/userfield_types.po
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
# Translators:
|
||||||
|
# Plamen Stoyanov <fireto@gmail.com>, 2020
|
||||||
|
# Mihail Andreev, 2020
|
||||||
|
# Steliyan Stoyanov, 2025
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: \n"
|
||||||
|
"Report-Msgid-Bugs-To: \n"
|
||||||
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
|
"PO-Revision-Date: 2019-05-01 17:43+0000\n"
|
||||||
|
"Last-Translator: Steliyan Stoyanov, 2025\n"
|
||||||
|
"Language-Team: Bulgarian (Bulgaria) (https://app.transifex.com/grocy/teams/93189/bg_BG/)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Language: bg_BG\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Domain: grocy/userfield_types\n"
|
||||||
|
|
||||||
|
# Text (single line)
|
||||||
|
msgid "text-single-line"
|
||||||
|
msgstr "текст-един-ред"
|
||||||
|
|
||||||
|
# Text (multi line)
|
||||||
|
msgid "text-multi-line"
|
||||||
|
msgstr "текст-няколко-реда"
|
||||||
|
|
||||||
|
# Number (integral)
|
||||||
|
msgid "number-integral"
|
||||||
|
msgstr "Число"
|
||||||
|
|
||||||
|
# Number (decimal)
|
||||||
|
msgid "number-decimal"
|
||||||
|
msgstr "число-цяло"
|
||||||
|
|
||||||
|
# Number (currency)
|
||||||
|
msgid "number-currency"
|
||||||
|
msgstr "Валута число"
|
||||||
|
|
||||||
|
# Date (without time)
|
||||||
|
msgid "date"
|
||||||
|
msgstr "дата"
|
||||||
|
|
||||||
|
# Date & time
|
||||||
|
msgid "datetime"
|
||||||
|
msgstr "момент"
|
||||||
|
|
||||||
|
# Checkbox
|
||||||
|
msgid "checkbox"
|
||||||
|
msgstr "чекбокс"
|
||||||
|
|
||||||
|
# Select list (a single item can be selected)
|
||||||
|
msgid "preset-list"
|
||||||
|
msgstr "предварително зададен списък"
|
||||||
|
|
||||||
|
# Select list (multiple items can be selected)
|
||||||
|
msgid "preset-checklist"
|
||||||
|
msgstr "предварително зададен избираем списък"
|
||||||
|
|
||||||
|
# Link
|
||||||
|
msgid "link"
|
||||||
|
msgstr "връзка"
|
||||||
|
|
||||||
|
# Link (with title)
|
||||||
|
msgid "link-with-title"
|
||||||
|
msgstr "Връзка със заглавие"
|
||||||
|
|
||||||
|
# File
|
||||||
|
msgid "file"
|
||||||
|
msgstr "файл"
|
||||||
|
|
||||||
|
# Image
|
||||||
|
msgid "image"
|
||||||
|
msgstr "изображение"
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# gimy16 <gimy16@hotmail.com>, 2021
|
# gimy16 <gimy16@hotmail.com>, 2021
|
||||||
# Carles Riera <blauigris@gmail.com>, 2022
|
# Carles Riera <blauigris@gmail.com>, 2022
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Joan Rodas <joanrc93@gmail.com>, 2020
|
# Joan Rodas <joanrc93@gmail.com>, 2020
|
||||||
# Martí Gombau, 2023
|
# Martí Gombau, 2023
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2022
|
# Bernd Bestel <bernd@berrnd.de>, 2022
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Joan Rodas <joanrc93@gmail.com>, 2020
|
# Joan Rodas <joanrc93@gmail.com>, 2020
|
||||||
# gimy16 <gimy16@hotmail.com>, 2021
|
# gimy16 <gimy16@hotmail.com>, 2021
|
||||||
|
|
@ -414,3 +413,6 @@ msgstr "Cervesa"
|
||||||
|
|
||||||
msgid "Estonian"
|
msgid "Estonian"
|
||||||
msgstr "Estonià"
|
msgstr "Estonià"
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Martí Gombau, 2023
|
# Martí Gombau, 2023
|
||||||
# Auri, 2024
|
# Auri, 2024
|
||||||
|
|
@ -145,3 +144,7 @@ msgstr "ro_RO"
|
||||||
# Estonian
|
# Estonian
|
||||||
msgid "et_EE"
|
msgid "et_EE"
|
||||||
msgstr "et_EE"
|
msgstr "et_EE"
|
||||||
|
|
||||||
|
# Bulgarian
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# gimy16 <gimy16@hotmail.com>, 2021
|
# gimy16 <gimy16@hotmail.com>, 2021
|
||||||
# Martí Gombau, 2023
|
# Martí Gombau, 2023
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# gimy16 <gimy16@hotmail.com>, 2021
|
# gimy16 <gimy16@hotmail.com>, 2021
|
||||||
# Auri, 2024
|
# Auri, 2024
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Joan Rodas <joanrc93@gmail.com>, 2020
|
# Joan Rodas <joanrc93@gmail.com>, 2020
|
||||||
# Carles Riera <blauigris@gmail.com>, 2021
|
# Carles Riera <blauigris@gmail.com>, 2021
|
||||||
|
|
@ -365,9 +364,6 @@ msgstr "Sobre Grocy"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Tancar"
|
msgstr "Tancar"
|
||||||
|
|
||||||
msgid "Released on"
|
|
||||||
msgstr "Publicat el"
|
|
||||||
|
|
||||||
msgid "Added %1$s of %2$s to stock"
|
msgid "Added %1$s of %2$s to stock"
|
||||||
msgstr "%1$s de %2$s afegits a l'inventari"
|
msgstr "%1$s de %2$s afegits a l'inventari"
|
||||||
|
|
||||||
|
|
@ -2771,3 +2767,8 @@ msgstr ""
|
||||||
|
|
||||||
msgid "List actions"
|
msgid "List actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"After this product was once in stock and when the desired quantity unit "
|
||||||
|
"cannot be selected here, first create a corresponding unit conversion"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# gimy16 <gimy16@hotmail.com>, 2021
|
# gimy16 <gimy16@hotmail.com>, 2021
|
||||||
# Roger Solé Vilajuliu, 2024
|
# Roger Solé Vilajuliu, 2024
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Radim Kabeláč <radim.ekk@gmail.com>, 2020
|
# Radim Kabeláč <radim.ekk@gmail.com>, 2020
|
||||||
# Pavel Paseka, 2022
|
# Pavel Paseka, 2022
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Tomas Reznicek <tomas.reznicek@gmail.com>, 2019
|
# Tomas Reznicek <tomas.reznicek@gmail.com>, 2019
|
||||||
# Michal Petříček <michal@petricek.org>, 2019
|
# Michal Petříček <michal@petricek.org>, 2019
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Tomas Reznicek <tomas.reznicek@gmail.com>, 2019
|
# Tomas Reznicek <tomas.reznicek@gmail.com>, 2019
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2020
|
# Bernd Bestel <bernd@berrnd.de>, 2020
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Michal Petříček <michal@petricek.org>, 2019
|
# Michal Petříček <michal@petricek.org>, 2019
|
||||||
# Ondřej Suk <ondra.suk.55@gmail.com>, 2020
|
# Ondřej Suk <ondra.suk.55@gmail.com>, 2020
|
||||||
|
|
@ -432,3 +431,6 @@ msgstr "Pivo"
|
||||||
|
|
||||||
msgid "Estonian"
|
msgid "Estonian"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Radim Kabeláč <radim.ekk@gmail.com>, 2020
|
# Radim Kabeláč <radim.ekk@gmail.com>, 2020
|
||||||
# Jarda Tesar <intossh@gmail.com>, 2021
|
# Jarda Tesar <intossh@gmail.com>, 2021
|
||||||
|
|
@ -146,3 +145,7 @@ msgstr "Rumunština"
|
||||||
# Estonian
|
# Estonian
|
||||||
msgid "et_EE"
|
msgid "et_EE"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
# Bulgarian
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Pavel Paseka, 2022
|
# Pavel Paseka, 2022
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Pavel Paseka, 2022
|
# Pavel Paseka, 2022
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Tomas Reznicek <tomas.reznicek@gmail.com>, 2019
|
# Tomas Reznicek <tomas.reznicek@gmail.com>, 2019
|
||||||
# Michal Petříček <michal@petricek.org>, 2019
|
# Michal Petříček <michal@petricek.org>, 2019
|
||||||
|
|
@ -8,7 +7,7 @@
|
||||||
# Radim Kabeláč <radim.ekk@gmail.com>, 2020
|
# Radim Kabeláč <radim.ekk@gmail.com>, 2020
|
||||||
# Jaroslav Lichtblau <l10n@lichtblau.cz>, 2020
|
# Jaroslav Lichtblau <l10n@lichtblau.cz>, 2020
|
||||||
# Jarda Tesar <intossh@gmail.com>, 2021
|
# Jarda Tesar <intossh@gmail.com>, 2021
|
||||||
# Pavel Paseka, 2024
|
# Pavel Paseka, 2026
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -16,7 +15,7 @@ msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
"Last-Translator: Pavel Paseka, 2024\n"
|
"Last-Translator: Pavel Paseka, 2026\n"
|
||||||
"Language-Team: Czech (https://app.transifex.com/grocy/teams/93189/cs/)\n"
|
"Language-Team: Czech (https://app.transifex.com/grocy/teams/93189/cs/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|
@ -298,7 +297,7 @@ msgid "Invalid credentials, please try again"
|
||||||
msgstr "Nesprávné jméno nebo heslo, zkuste to ještě jednou"
|
msgstr "Nesprávné jméno nebo heslo, zkuste to ještě jednou"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete battery \"%s\"?"
|
msgid "Are you sure you want to delete battery \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit baterii „%s“?"
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Ano"
|
msgstr "Ano"
|
||||||
|
|
@ -307,7 +306,7 @@ msgid "No"
|
||||||
msgstr "Ne"
|
msgstr "Ne"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete chore \"%s\"?"
|
msgid "Are you sure you want to delete chore \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit povinnost „%s“?"
|
||||||
|
|
||||||
msgid "\"%s\" could not be resolved to a product, how do you want to proceed?"
|
msgid "\"%s\" could not be resolved to a product, how do you want to proceed?"
|
||||||
msgstr "Žádný uložený produkt se nejmenuje „%s“. Jak chcete pokračovat?"
|
msgstr "Žádný uložený produkt se nejmenuje „%s“. Jak chcete pokračovat?"
|
||||||
|
|
@ -328,16 +327,16 @@ msgid "Add as new product and prefill barcode"
|
||||||
msgstr "Přidat jako nový produkt a předvyplnit čárový kód"
|
msgstr "Přidat jako nový produkt a předvyplnit čárový kód"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete quantity unit \"%s\"?"
|
msgid "Are you sure you want to delete quantity unit \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit jednotku množství „%s“?"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete product \"%s\"?"
|
msgid "Are you sure you want to delete product \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit produkt „%s“?"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete location \"%s\"?"
|
msgid "Are you sure you want to delete location \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit umístění „%s“?"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete store \"%s\"?"
|
msgid "Are you sure you want to delete store \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit obchod „%s“?"
|
||||||
|
|
||||||
msgid "Manage API keys"
|
msgid "Manage API keys"
|
||||||
msgstr "Spravovat API klíče"
|
msgstr "Spravovat API klíče"
|
||||||
|
|
@ -378,9 +377,6 @@ msgstr "Co je Grocy"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Zavřít"
|
msgstr "Zavřít"
|
||||||
|
|
||||||
msgid "Released on"
|
|
||||||
msgstr "Vydaná"
|
|
||||||
|
|
||||||
msgid "Added %1$s of %2$s to stock"
|
msgid "Added %1$s of %2$s to stock"
|
||||||
msgstr "Zásoba se zvýšila o %1$s produktu %2$s"
|
msgstr "Zásoba se zvýšila o %1$s produktu %2$s"
|
||||||
|
|
||||||
|
|
@ -454,13 +450,13 @@ msgid "Edit recipe ingredient"
|
||||||
msgstr "Upravit ingredienci"
|
msgstr "Upravit ingredienci"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete recipe \"%s\"?"
|
msgid "Are you sure you want to delete recipe \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit recept „%s“?"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete recipe ingredient \"%s\"?"
|
msgid "Are you sure you want to delete recipe ingredient \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit ingredienci „%s“?"
|
||||||
|
|
||||||
msgid "Are you sure you want to empty shopping list \"%s\"?"
|
msgid "Are you sure you want to empty shopping list \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Vyprázdnit nákupní seznam „%s“?"
|
||||||
|
|
||||||
msgid "Clear list"
|
msgid "Clear list"
|
||||||
msgstr "Vyprázdnit seznam"
|
msgstr "Vyprázdnit seznam"
|
||||||
|
|
@ -508,6 +504,8 @@ msgid ""
|
||||||
"Are you sure you want to put all missing ingredients for recipe \"%s\" on "
|
"Are you sure you want to put all missing ingredients for recipe \"%s\" on "
|
||||||
"the shopping list?"
|
"the shopping list?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Chcete přidat všechny chybějící ingredience z receptu „%s“ do nákupního "
|
||||||
|
"seznamu?"
|
||||||
|
|
||||||
msgid "Manage users"
|
msgid "Manage users"
|
||||||
msgstr "Spravovat uživatele"
|
msgstr "Spravovat uživatele"
|
||||||
|
|
@ -519,7 +517,7 @@ msgid "Users"
|
||||||
msgstr "Uživatelé"
|
msgstr "Uživatelé"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete user \"%s\"?"
|
msgid "Are you sure you want to delete user \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit uživatele „%s“?"
|
||||||
|
|
||||||
msgid "Create user"
|
msgid "Create user"
|
||||||
msgstr "Vytvořit uživatele"
|
msgstr "Vytvořit uživatele"
|
||||||
|
|
@ -627,9 +625,12 @@ msgid ""
|
||||||
"(ingredients marked with \"only check if any amount is in stock\" will be "
|
"(ingredients marked with \"only check if any amount is in stock\" will be "
|
||||||
"ignored)?"
|
"ignored)?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Přejete se spotřebovat všechny ingredience receptu „%s“? Ingredience "
|
||||||
|
"označené „Zkontrolovat pouze zda je v zásobě jakékoliv množství“ budou "
|
||||||
|
"ignorovány."
|
||||||
|
|
||||||
msgid "Removed all in stock ingredients needed by recipe \"%s\" from stock"
|
msgid "Removed all in stock ingredients needed by recipe \"%s\" from stock"
|
||||||
msgstr ""
|
msgstr "Všechny ingredience z receptu „%s“ byly odebrány ze zásob"
|
||||||
|
|
||||||
msgid "Consume all ingredients needed by this recipe"
|
msgid "Consume all ingredients needed by this recipe"
|
||||||
msgstr "Spotřebovat všechny ingredience použité v tomto receptu"
|
msgstr "Spotřebovat všechny ingredience použité v tomto receptu"
|
||||||
|
|
@ -680,7 +681,7 @@ msgid "Edit task"
|
||||||
msgstr "Upravit úkol"
|
msgstr "Upravit úkol"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete task \"%s\"?"
|
msgid "Are you sure you want to delete task \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit úkol „%s“?"
|
||||||
|
|
||||||
msgid "%s task is due to be done"
|
msgid "%s task is due to be done"
|
||||||
msgid_plural "%s tasks are due to be done"
|
msgid_plural "%s tasks are due to be done"
|
||||||
|
|
@ -718,7 +719,7 @@ msgid "Product group"
|
||||||
msgstr "Skupina produktů"
|
msgstr "Skupina produktů"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete product group \"%s\"?"
|
msgid "Are you sure you want to delete product group \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit skupinu produktů „%s“?"
|
||||||
|
|
||||||
msgid "Stay logged in permanently"
|
msgid "Stay logged in permanently"
|
||||||
msgstr "Zůstat přihlášen"
|
msgstr "Zůstat přihlášen"
|
||||||
|
|
@ -890,10 +891,10 @@ msgstr "Neotevřené"
|
||||||
|
|
||||||
msgid "Opened"
|
msgid "Opened"
|
||||||
msgid_plural "Opened"
|
msgid_plural "Opened"
|
||||||
msgstr[0] ""
|
msgstr[0] "Otevřeno"
|
||||||
msgstr[1] ""
|
msgstr[1] "Otevřené"
|
||||||
msgstr[2] ""
|
msgstr[2] "Otevřených"
|
||||||
msgstr[3] ""
|
msgstr[3] "Otevřených"
|
||||||
|
|
||||||
msgid "%s opened"
|
msgid "%s opened"
|
||||||
msgstr "%s otevřen"
|
msgstr "%s otevřen"
|
||||||
|
|
@ -1060,7 +1061,7 @@ msgid "Create shopping list"
|
||||||
msgstr "Vytvořit nákupní seznam"
|
msgstr "Vytvořit nákupní seznam"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete shopping list \"%s\"?"
|
msgid "Are you sure you want to delete shopping list \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Smazat nákupní seznam „%s?"
|
||||||
|
|
||||||
msgid "Average shelf life"
|
msgid "Average shelf life"
|
||||||
msgstr "Průměrná doba uskladnění"
|
msgstr "Průměrná doba uskladnění"
|
||||||
|
|
@ -1270,7 +1271,7 @@ msgid "Time of printing"
|
||||||
msgstr "Čas tisku"
|
msgstr "Čas tisku"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete equipment \"%s\"?"
|
msgid "Are you sure you want to delete equipment \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit zařízení „%s“?"
|
||||||
|
|
||||||
msgid "Parent product"
|
msgid "Parent product"
|
||||||
msgstr "Nadřazený produkt"
|
msgstr "Nadřazený produkt"
|
||||||
|
|
@ -1450,7 +1451,7 @@ msgid "Consume product on chore execution"
|
||||||
msgstr "Spotřebovat produkt při splnění povinnosti"
|
msgstr "Spotřebovat produkt při splnění povinnosti"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete user field \"%s\"?"
|
msgid "Are you sure you want to delete user field \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit sloupec „%s“?"
|
||||||
|
|
||||||
msgid "Userentities"
|
msgid "Userentities"
|
||||||
msgstr "Uživatelské tabulky"
|
msgstr "Uživatelské tabulky"
|
||||||
|
|
@ -1471,7 +1472,7 @@ msgid "Create %s"
|
||||||
msgstr "Vytvořit %s"
|
msgstr "Vytvořit %s"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete this userobject?"
|
msgid "Are you sure you want to delete this userobject?"
|
||||||
msgstr ""
|
msgstr "Odstranit položku definovanou uživatelem?"
|
||||||
|
|
||||||
msgid "Icon CSS class"
|
msgid "Icon CSS class"
|
||||||
msgstr "CSS třída ikony"
|
msgstr "CSS třída ikony"
|
||||||
|
|
@ -1507,7 +1508,7 @@ msgid "Price factor"
|
||||||
msgstr "Násobek ceny ingredience"
|
msgstr "Násobek ceny ingredience"
|
||||||
|
|
||||||
msgid "Do you find Grocy useful?"
|
msgid "Do you find Grocy useful?"
|
||||||
msgstr "Je pro vás Grocy užitečný?"
|
msgstr "Je pro vás Grocy užitečné?"
|
||||||
|
|
||||||
msgid "Say thanks"
|
msgid "Say thanks"
|
||||||
msgstr "Poděkujte za aplikaci"
|
msgstr "Poděkujte za aplikaci"
|
||||||
|
|
@ -1563,7 +1564,7 @@ msgstr ""
|
||||||
"chybět, ale pouze tento produkt."
|
"chybět, ale pouze tento produkt."
|
||||||
|
|
||||||
msgid "Are you sure you want to remove this conversion?"
|
msgid "Are you sure you want to remove this conversion?"
|
||||||
msgstr ""
|
msgstr "Odstranit tento převod?"
|
||||||
|
|
||||||
msgid "Unit price"
|
msgid "Unit price"
|
||||||
msgstr "Cena za jednotku"
|
msgstr "Cena za jednotku"
|
||||||
|
|
@ -1581,7 +1582,7 @@ msgid "Clear"
|
||||||
msgstr "Vymazat"
|
msgstr "Vymazat"
|
||||||
|
|
||||||
msgid "Are you sure you want to remove the included recipe \"%s\"?"
|
msgid "Are you sure you want to remove the included recipe \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit dílčí recept „%s“?"
|
||||||
|
|
||||||
msgid "Period interval"
|
msgid "Period interval"
|
||||||
msgstr "Interval opakování"
|
msgstr "Interval opakování"
|
||||||
|
|
@ -1678,7 +1679,7 @@ msgid "Booking does not exist or was already undone"
|
||||||
msgstr "Tato akce neexistuje nebo již byla vrácena zpět"
|
msgstr "Tato akce neexistuje nebo již byla vrácena zpět"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete API key \"%s\"?"
|
msgid "Are you sure you want to delete API key \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit API klíč „%s“?"
|
||||||
|
|
||||||
msgid "Add note"
|
msgid "Add note"
|
||||||
msgstr "Přidat poznámku"
|
msgstr "Přidat poznámku"
|
||||||
|
|
@ -1734,7 +1735,7 @@ msgid "Frozen"
|
||||||
msgstr "Zmraženo"
|
msgstr "Zmraženo"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete userentity \"%s\"?"
|
msgid "Are you sure you want to delete userentity \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit uživatelský sloupec tabulky „%s“?"
|
||||||
|
|
||||||
msgid "Shopping list settings"
|
msgid "Shopping list settings"
|
||||||
msgstr "Nastavení nákupního seznamu"
|
msgstr "Nastavení nákupního seznamu"
|
||||||
|
|
@ -1831,6 +1832,10 @@ msgid ""
|
||||||
"due first, then first in first out) for in stock ingredients and on the last"
|
"due first, then first in first out) for in stock ingredients and on the last"
|
||||||
" price for missing ones"
|
" price for missing ones"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Základem ceny je cena produktu v zásobě podle výchozího pořadí spotřeby "
|
||||||
|
"produktů. Tedy nejprve se spotřebují otevřené, pak ty s nejbližším datem "
|
||||||
|
"spotřeby a nakonec podle pravidla „dříve nakoupený – dříve spotřebovaný“. "
|
||||||
|
"Pro chybějící produkty je použita cena z posledního nákupu."
|
||||||
|
|
||||||
msgid "Clear filter"
|
msgid "Clear filter"
|
||||||
msgstr "Smazat filtr"
|
msgstr "Smazat filtr"
|
||||||
|
|
@ -2001,7 +2006,7 @@ msgstr ""
|
||||||
"produktu dříve, než nejbližší datum spotřeby produktu v zásobě."
|
"produktu dříve, než nejbližší datum spotřeby produktu v zásobě."
|
||||||
|
|
||||||
msgid "This is due earlier than already in stock items"
|
msgid "This is due earlier than already in stock items"
|
||||||
msgstr ""
|
msgstr "Datum min. trvanlivosti je dříve, než u produktů v zásobě"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"When enabled, after changing/scanning a product and if all fields could be "
|
"When enabled, after changing/scanning a product and if all fields could be "
|
||||||
|
|
@ -2032,7 +2037,7 @@ msgid "Copy"
|
||||||
msgstr "Kopírovat"
|
msgstr "Kopírovat"
|
||||||
|
|
||||||
msgid "Are you sure you want to remove this barcode?"
|
msgid "Are you sure you want to remove this barcode?"
|
||||||
msgstr ""
|
msgstr "Odstranit tento čárový kód?"
|
||||||
|
|
||||||
msgid "Due date type"
|
msgid "Due date type"
|
||||||
msgstr "Typ trvanlivosti produktu"
|
msgstr "Typ trvanlivosti produktu"
|
||||||
|
|
@ -2230,7 +2235,7 @@ msgid "Reset"
|
||||||
msgstr "Resetovat"
|
msgstr "Resetovat"
|
||||||
|
|
||||||
msgid "Are you sure you want to reset the table options?"
|
msgid "Are you sure you want to reset the table options?"
|
||||||
msgstr ""
|
msgstr "Uvést sloupce tabulky do výchozího stavu?"
|
||||||
|
|
||||||
msgid "Hide/view columns"
|
msgid "Hide/view columns"
|
||||||
msgstr "Zobrazit/skrýt sloupce"
|
msgstr "Zobrazit/skrýt sloupce"
|
||||||
|
|
@ -2300,6 +2305,8 @@ msgid ""
|
||||||
"below their min. stock amount - enable this to hide this product there "
|
"below their min. stock amount - enable this to hide this product there "
|
||||||
"always"
|
"always"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Stránka Přehledu zásob zobrazuje všechny produkty, které jsou v zásobě nebo "
|
||||||
|
"pod jejich minimálním stavem. Zaškrtnutím se v něm produkt nikdy neobjeví."
|
||||||
|
|
||||||
msgid "Print options"
|
msgid "Print options"
|
||||||
msgstr "Nastavení tisku"
|
msgstr "Nastavení tisku"
|
||||||
|
|
@ -2373,7 +2380,7 @@ msgid "Only done items"
|
||||||
msgstr "vybrané produkty"
|
msgstr "vybrané produkty"
|
||||||
|
|
||||||
msgid "Show only in stock products"
|
msgid "Show only in stock products"
|
||||||
msgstr ""
|
msgstr "Zobrazit produkty se zásobou"
|
||||||
|
|
||||||
msgid "Product description"
|
msgid "Product description"
|
||||||
msgstr "Popis produktu"
|
msgstr "Popis produktu"
|
||||||
|
|
@ -2395,7 +2402,7 @@ msgid "When enabled, then this field must be filled on the destination form"
|
||||||
msgstr "Použijete-li tento údaj ve formuláři, bude povinný"
|
msgstr "Použijete-li tento údaj ve formuláři, bude povinný"
|
||||||
|
|
||||||
msgid "In stock products"
|
msgid "In stock products"
|
||||||
msgstr ""
|
msgstr "produkty se zásobou"
|
||||||
|
|
||||||
msgid "Timestamp"
|
msgid "Timestamp"
|
||||||
msgstr "Čas zápisu"
|
msgstr "Čas zápisu"
|
||||||
|
|
@ -2486,13 +2493,13 @@ msgid "Edit meal plan section"
|
||||||
msgstr "Upravit část dne v jídelníčku"
|
msgstr "Upravit část dne v jídelníčku"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete meal plan section \"%s\"?"
|
msgid "Are you sure you want to delete meal plan section \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Odstranit rozdělení dne s názvem: %s?"
|
||||||
|
|
||||||
msgid "Section"
|
msgid "Section"
|
||||||
msgstr "Část dne v jídelníčku"
|
msgstr "Část dne v jídelníčku"
|
||||||
|
|
||||||
msgid "Are you sure you want to empty the shopping list?"
|
msgid "Are you sure you want to empty the shopping list?"
|
||||||
msgstr ""
|
msgstr "Vyprázdnit nákupní seznam?"
|
||||||
|
|
||||||
msgid "This is the default which will be prefilled on purchase"
|
msgid "This is the default which will be prefilled on purchase"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -2802,7 +2809,7 @@ msgid "Stock report"
|
||||||
msgstr "Přehled zásob"
|
msgstr "Přehled zásob"
|
||||||
|
|
||||||
msgid "Out of stock products"
|
msgid "Out of stock products"
|
||||||
msgstr ""
|
msgstr "Produkty bez zásoby"
|
||||||
|
|
||||||
msgid "Quantity unit for prices"
|
msgid "Quantity unit for prices"
|
||||||
msgstr "Měrná jednotka pro ceny"
|
msgstr "Měrná jednotka pro ceny"
|
||||||
|
|
@ -2820,7 +2827,7 @@ msgstr[2] "Vytiskne se %1$s nálepek"
|
||||||
msgstr[3] "Vytiskne se %1$s nálepek"
|
msgstr[3] "Vytiskne se %1$s nálepek"
|
||||||
|
|
||||||
msgid "External barcode lookup"
|
msgid "External barcode lookup"
|
||||||
msgstr ""
|
msgstr "Čtení čárového kódu modulem aplikace"
|
||||||
|
|
||||||
msgid "Error while executing the barcode lookup plugin"
|
msgid "Error while executing the barcode lookup plugin"
|
||||||
msgstr "Vyhodnocení doplňkovým modulem se nezdařilo"
|
msgstr "Vyhodnocení doplňkovým modulem se nezdařilo"
|
||||||
|
|
@ -2833,47 +2840,62 @@ msgstr "Změnit barvy"
|
||||||
|
|
||||||
msgid "Swap track next schedule / track now buttons"
|
msgid "Swap track next schedule / track now buttons"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Změna funkce zeleného tlačítka: Zaznamenat splnění naplánované povinnosti "
|
||||||
|
"NEBO Zaznamenat splnění povinnosti právě teď."
|
||||||
|
|
||||||
msgid "Scheduled tracking time"
|
msgid "Scheduled tracking time"
|
||||||
msgstr ""
|
msgstr "Naplánované splnění povinnosti"
|
||||||
|
|
||||||
msgid "Time of tracking"
|
msgid "Time of tracking"
|
||||||
msgstr ""
|
msgstr "Plnění povinností"
|
||||||
|
|
||||||
msgid "Show all out of stock products"
|
msgid "Show all out of stock products"
|
||||||
msgstr ""
|
msgstr "Zobrazit produkty bez zásoby"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"By default the stock overview page lists all products which are currently in"
|
"By default the stock overview page lists all products which are currently in"
|
||||||
" stock or below their min. stock amount - when this is enabled, all (active)"
|
" stock or below their min. stock amount - when this is enabled, all (active)"
|
||||||
" products are always shown"
|
" products are always shown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Stránka Přehledu zásob zobrazuje všechny produkty, které jsou v zásobě nebo "
|
||||||
|
"pod jejich minimálním stavem. Zaškrtnutím se zobrazí všechny (aktivní) "
|
||||||
|
"produkty."
|
||||||
|
|
||||||
msgid "No price information is available for at least one ingredient"
|
msgid "No price information is available for at least one ingredient"
|
||||||
msgstr ""
|
msgstr "U nejméně jedné ingredience chybí informace o ceně"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"For ingredients that are only partially in stock, the in stock amount will "
|
"For ingredients that are only partially in stock, the in stock amount will "
|
||||||
"be consumed."
|
"be consumed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"U ingrediencí, kde není v zásobě celé jejich množství se spotřebuje jejich "
|
||||||
|
"aktuální zásoba."
|
||||||
|
|
||||||
msgid "Can't be opened"
|
msgid "Can't be opened"
|
||||||
msgstr ""
|
msgstr "Tento produkt nelze „otevřít“."
|
||||||
|
|
||||||
msgid "Default purchase price type"
|
msgid "Default purchase price type"
|
||||||
msgstr ""
|
msgstr "Výchozí druh ceny"
|
||||||
|
|
||||||
msgid "This will be used as the default price type selection on purchase"
|
msgid "This will be used as the default price type selection on purchase"
|
||||||
msgstr ""
|
msgstr "Toto bude použito jako výchozí druh ceny při nákupu"
|
||||||
|
|
||||||
msgid "Unspecified"
|
msgid "Unspecified"
|
||||||
msgstr ""
|
msgstr "Neurčené"
|
||||||
|
|
||||||
msgid "Round up quantity amounts to the nearest whole number"
|
msgid "Round up quantity amounts to the nearest whole number"
|
||||||
msgstr ""
|
msgstr "Zaokrouhlete množství na (nejbližší) celé číslo"
|
||||||
|
|
||||||
msgid "Stock actions"
|
msgid "Stock actions"
|
||||||
msgstr ""
|
msgstr "Operace se zásobami"
|
||||||
|
|
||||||
msgid "List actions"
|
msgid "List actions"
|
||||||
|
msgstr "Operace se seznamem"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"After this product was once in stock and when the desired quantity unit "
|
||||||
|
"cannot be selected here, first create a corresponding unit conversion"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Pokud byl tento produkt alespoň jednou v zásobě a není na výběr jednotka "
|
||||||
|
"množství, kterou byste potřebovali, vytvořte si vhodnou konverzi stávající "
|
||||||
|
"množstevní jednotky."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Tomas Reznicek <tomas.reznicek@gmail.com>, 2019
|
# Tomas Reznicek <tomas.reznicek@gmail.com>, 2019
|
||||||
# Michal Franc, 2020
|
# Michal Franc, 2020
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||||
# klavslund <klavslund@gmail.com>, 2021
|
# klavslund <klavslund@gmail.com>, 2021
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||||
# Rasmus Bojsen <rasmus@bojsen.cn>, 2019
|
# Rasmus Bojsen <rasmus@bojsen.cn>, 2019
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# dark159123 <r.j.hansen@protonmail.com>, 2019
|
# dark159123 <r.j.hansen@protonmail.com>, 2019
|
||||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||||
|
|
@ -419,3 +418,6 @@ msgstr "Øl"
|
||||||
|
|
||||||
msgid "Estonian"
|
msgid "Estonian"
|
||||||
msgstr "Estisk"
|
msgstr "Estisk"
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# klavslund <klavslund@gmail.com>, 2021
|
# klavslund <klavslund@gmail.com>, 2021
|
||||||
# Brian Moos Lindberg <brian@blueeel.dk>, 2022
|
# Brian Moos Lindberg <brian@blueeel.dk>, 2022
|
||||||
|
|
@ -147,3 +146,7 @@ msgstr "ro_RO"
|
||||||
# Estonian
|
# Estonian
|
||||||
msgid "et_EE"
|
msgid "et_EE"
|
||||||
msgstr "et_EE"
|
msgstr "et_EE"
|
||||||
|
|
||||||
|
# Bulgarian
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Mihai Marinescu <mihai@marinescu.dk>, 2020
|
# Mihai Marinescu <mihai@marinescu.dk>, 2020
|
||||||
# klavslund <klavslund@gmail.com>, 2021
|
# klavslund <klavslund@gmail.com>, 2021
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||||
# Brian Moos Lindberg <brian@blueeel.dk>, 2019
|
# Brian Moos Lindberg <brian@blueeel.dk>, 2019
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# dark159123 <r.j.hansen@protonmail.com>, 2019
|
# dark159123 <r.j.hansen@protonmail.com>, 2019
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||||
|
|
@ -12,6 +11,7 @@
|
||||||
# hskdk <henrik@skjaerbaek.net>, 2023
|
# hskdk <henrik@skjaerbaek.net>, 2023
|
||||||
# G Momsen, 2024
|
# G Momsen, 2024
|
||||||
# Brian Moos Lindberg <brian@blueeel.dk>, 2024
|
# Brian Moos Lindberg <brian@blueeel.dk>, 2024
|
||||||
|
# eurosite, 2025
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -19,7 +19,7 @@ msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
"Last-Translator: Brian Moos Lindberg <brian@blueeel.dk>, 2024\n"
|
"Last-Translator: eurosite, 2025\n"
|
||||||
"Language-Team: Danish (https://app.transifex.com/grocy/teams/93189/da/)\n"
|
"Language-Team: Danish (https://app.transifex.com/grocy/teams/93189/da/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|
@ -288,7 +288,7 @@ msgid "Invalid credentials, please try again"
|
||||||
msgstr "Ugyldig brugernavn og/eller adgangskode, prøv igen"
|
msgstr "Ugyldig brugernavn og/eller adgangskode, prøv igen"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete battery \"%s\"?"
|
msgid "Are you sure you want to delete battery \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Er du sikker på du vil slette batteri \"%s\"?"
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Ja"
|
msgstr "Ja"
|
||||||
|
|
@ -321,13 +321,13 @@ msgid "Are you sure you want to delete quantity unit \"%s\"?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Are you sure you want to delete product \"%s\"?"
|
msgid "Are you sure you want to delete product \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Er du sikker på du vil slette varen \"%s\"?"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete location \"%s\"?"
|
msgid "Are you sure you want to delete location \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Er du sikker på du vil slette placeringen \"%s\"?"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete store \"%s\"?"
|
msgid "Are you sure you want to delete store \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Er du sikker på du vil slette butikken \"%s\"?"
|
||||||
|
|
||||||
msgid "Manage API keys"
|
msgid "Manage API keys"
|
||||||
msgstr "Administrer API nøgler"
|
msgstr "Administrer API nøgler"
|
||||||
|
|
@ -368,9 +368,6 @@ msgstr "Om Grocy"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Luk"
|
msgstr "Luk"
|
||||||
|
|
||||||
msgid "Released on"
|
|
||||||
msgstr "Udgivet den"
|
|
||||||
|
|
||||||
msgid "Added %1$s of %2$s to stock"
|
msgid "Added %1$s of %2$s to stock"
|
||||||
msgstr "Tilføjet %1$s af %2$s til beholdningen"
|
msgstr "Tilføjet %1$s af %2$s til beholdningen"
|
||||||
|
|
||||||
|
|
@ -444,13 +441,13 @@ msgid "Edit recipe ingredient"
|
||||||
msgstr "Rediger ingrediens til opskrift"
|
msgstr "Rediger ingrediens til opskrift"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete recipe \"%s\"?"
|
msgid "Are you sure you want to delete recipe \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Er du sikker på du vil slette opskriften \"%s\"?"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete recipe ingredient \"%s\"?"
|
msgid "Are you sure you want to delete recipe ingredient \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Er du sikker på du vil slette ingrediensen \"%s\" fra opskriften?"
|
||||||
|
|
||||||
msgid "Are you sure you want to empty shopping list \"%s\"?"
|
msgid "Are you sure you want to empty shopping list \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Er du sikker på at du vil tømme indkøbslisten \"%s\"?"
|
||||||
|
|
||||||
msgid "Clear list"
|
msgid "Clear list"
|
||||||
msgstr "Ryd indkøbslisten"
|
msgstr "Ryd indkøbslisten"
|
||||||
|
|
@ -500,6 +497,8 @@ msgid ""
|
||||||
"Are you sure you want to put all missing ingredients for recipe \"%s\" on "
|
"Are you sure you want to put all missing ingredients for recipe \"%s\" on "
|
||||||
"the shopping list?"
|
"the shopping list?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Er du sikker på du vil sætte alle manglende ingredienser til \"%s\" på "
|
||||||
|
"indkøbslisten?"
|
||||||
|
|
||||||
msgid "Manage users"
|
msgid "Manage users"
|
||||||
msgstr "Administrer brugere"
|
msgstr "Administrer brugere"
|
||||||
|
|
@ -511,7 +510,7 @@ msgid "Users"
|
||||||
msgstr "Brugere"
|
msgstr "Brugere"
|
||||||
|
|
||||||
msgid "Are you sure you want to delete user \"%s\"?"
|
msgid "Are you sure you want to delete user \"%s\"?"
|
||||||
msgstr ""
|
msgstr "Er du sikker på du vil slette brugeren \"%s\"?"
|
||||||
|
|
||||||
msgid "Create user"
|
msgid "Create user"
|
||||||
msgstr "Opret bruger"
|
msgstr "Opret bruger"
|
||||||
|
|
@ -611,7 +610,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Removed all in stock ingredients needed by recipe \"%s\" from stock"
|
msgid "Removed all in stock ingredients needed by recipe \"%s\" from stock"
|
||||||
msgstr ""
|
msgstr "Fjernede alle ingredienser til opskrift \"%s\" fra beholdningen"
|
||||||
|
|
||||||
msgid "Consume all ingredients needed by this recipe"
|
msgid "Consume all ingredients needed by this recipe"
|
||||||
msgstr "Forbrug alle nødvendige ingredienser til denne opskrift"
|
msgstr "Forbrug alle nødvendige ingredienser til denne opskrift"
|
||||||
|
|
@ -2770,3 +2769,8 @@ msgstr ""
|
||||||
|
|
||||||
msgid "List actions"
|
msgid "List actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"After this product was once in stock and when the desired quantity unit "
|
||||||
|
"cannot be selected here, first create a corresponding unit conversion"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Brian Moos Lindberg <brian@blueeel.dk>, 2019
|
# Brian Moos Lindberg <brian@blueeel.dk>, 2019
|
||||||
# Mihai Marinescu <mihai@marinescu.dk>, 2020
|
# Mihai Marinescu <mihai@marinescu.dk>, 2020
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2021
|
# Bernd Bestel <bernd@berrnd.de>, 2021
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2022
|
# Bernd Bestel <bernd@berrnd.de>, 2022
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2023
|
# Bernd Bestel <bernd@berrnd.de>, 2025
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -8,7 +7,7 @@ msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2023\n"
|
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2025\n"
|
||||||
"Language-Team: German (https://app.transifex.com/grocy/teams/93189/de/)\n"
|
"Language-Team: German (https://app.transifex.com/grocy/teams/93189/de/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|
@ -411,3 +410,6 @@ msgstr "Bier"
|
||||||
|
|
||||||
msgid "Estonian"
|
msgid "Estonian"
|
||||||
msgstr "Estnisch"
|
msgstr "Estnisch"
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr "Bulgarisch"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2025
|
# Bernd Bestel <bernd@berrnd.de>, 2025
|
||||||
#
|
#
|
||||||
|
|
@ -144,3 +143,7 @@ msgstr "Rumänisch"
|
||||||
# Estonian
|
# Estonian
|
||||||
msgid "et_EE"
|
msgid "et_EE"
|
||||||
msgstr "Estnisch"
|
msgstr "Estnisch"
|
||||||
|
|
||||||
|
# Bulgarian
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr "Bulgarisch"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# @RubenKelevra <ruben@freifunk-nrw.de>, 2021
|
# @RubenKelevra <ruben@freifunk-nrw.de>, 2021
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2021
|
# Bernd Bestel <bernd@berrnd.de>, 2021
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2020
|
# Bernd Bestel <bernd@berrnd.de>, 2020
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Luca RHK <luca@rhk-in.de>, 2020
|
# Luca RHK <luca@rhk-in.de>, 2020
|
||||||
# Tobias Wolter <mumpfpuffel@gmail.com>, 2020
|
# Tobias Wolter <mumpfpuffel@gmail.com>, 2020
|
||||||
# @RubenKelevra <ruben@freifunk-nrw.de>, 2021
|
# @RubenKelevra <ruben@freifunk-nrw.de>, 2021
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2025
|
# Bernd Bestel <bernd@berrnd.de>, 2026
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -11,7 +10,7 @@ msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2025\n"
|
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2026\n"
|
||||||
"Language-Team: German (https://app.transifex.com/grocy/teams/93189/de/)\n"
|
"Language-Team: German (https://app.transifex.com/grocy/teams/93189/de/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|
@ -364,9 +363,6 @@ msgstr "Über Grocy"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Schließen"
|
msgstr "Schließen"
|
||||||
|
|
||||||
msgid "Released on"
|
|
||||||
msgstr "Veröffentlicht am"
|
|
||||||
|
|
||||||
msgid "Added %1$s of %2$s to stock"
|
msgid "Added %1$s of %2$s to stock"
|
||||||
msgstr "%1$s %2$s dem Bestand hinzugefügt"
|
msgstr "%1$s %2$s dem Bestand hinzugefügt"
|
||||||
|
|
||||||
|
|
@ -2854,3 +2850,11 @@ msgstr "Bestandsaktionen"
|
||||||
|
|
||||||
msgid "List actions"
|
msgid "List actions"
|
||||||
msgstr "Listenaktionen"
|
msgstr "Listenaktionen"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"After this product was once in stock and when the desired quantity unit "
|
||||||
|
"cannot be selected here, first create a corresponding unit conversion"
|
||||||
|
msgstr ""
|
||||||
|
"Wenn dieses Produkt schon einmal im Bestand war und die gewünschte "
|
||||||
|
"Mengeneinheit hier nicht ausgewählt werden kann, erstelle zunächst eine "
|
||||||
|
"entsprechende ME-Umrechnung"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2023
|
# Bernd Bestel <bernd@berrnd.de>, 2023
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -406,3 +406,6 @@ msgstr ""
|
||||||
|
|
||||||
msgid "Estonian"
|
msgid "Estonian"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Dionysios Gkotsis <bloodsak4@yahoo.gr>, 2020
|
# Dionysios Gkotsis <bloodsak4@yahoo.gr>, 2020
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# datablitz7 <plant7@gmail.com>, 2019
|
# datablitz7 <plant7@gmail.com>, 2019
|
||||||
# emmker kats, 2022
|
# emmker kats, 2022
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2020
|
# Bernd Bestel <bernd@berrnd.de>, 2020
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# datablitz7 <plant7@gmail.com>, 2019
|
# datablitz7 <plant7@gmail.com>, 2019
|
||||||
# ByteGet, 2020
|
# ByteGet, 2020
|
||||||
|
|
@ -414,3 +413,6 @@ msgstr ""
|
||||||
|
|
||||||
msgid "Estonian"
|
msgid "Estonian"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# ByteGet, 2020
|
# ByteGet, 2020
|
||||||
# Thodoris Kalatzis <teo.kal@hotmail.com>, 2021
|
# Thodoris Kalatzis <teo.kal@hotmail.com>, 2021
|
||||||
|
|
@ -145,3 +144,7 @@ msgstr ""
|
||||||
# Estonian
|
# Estonian
|
||||||
msgid "et_EE"
|
msgid "et_EE"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
# Bulgarian
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# datablitz7 <plant7@gmail.com>, 2020
|
# datablitz7 <plant7@gmail.com>, 2020
|
||||||
# ByteGet, 2020
|
# ByteGet, 2020
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Dionysios Gkotsis <bloodsak4@yahoo.gr>, 2020
|
# Dionysios Gkotsis <bloodsak4@yahoo.gr>, 2020
|
||||||
# ByteGet, 2020
|
# ByteGet, 2020
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Stathis Stamoulis <sstamoulis2010@gmail.com>, 2020
|
# Stathis Stamoulis <sstamoulis2010@gmail.com>, 2020
|
||||||
# Dionysios Gkotsis <bloodsak4@yahoo.gr>, 2020
|
# Dionysios Gkotsis <bloodsak4@yahoo.gr>, 2020
|
||||||
|
|
@ -371,9 +370,6 @@ msgstr ""
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Κλείσε"
|
msgstr "Κλείσε"
|
||||||
|
|
||||||
msgid "Released on"
|
|
||||||
msgstr "Κυκλοφόρησε στις"
|
|
||||||
|
|
||||||
msgid "Added %1$s of %2$s to stock"
|
msgid "Added %1$s of %2$s to stock"
|
||||||
msgstr "Προστέθηκε %1$s από %2$s στο απόθεμα"
|
msgstr "Προστέθηκε %1$s από %2$s στο απόθεμα"
|
||||||
|
|
||||||
|
|
@ -2710,3 +2706,8 @@ msgstr ""
|
||||||
|
|
||||||
msgid "List actions"
|
msgid "List actions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"After this product was once in stock and when the desired quantity unit "
|
||||||
|
"cannot be selected here, first create a corresponding unit conversion"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Dionysios Gkotsis <bloodsak4@yahoo.gr>, 2020
|
# Dionysios Gkotsis <bloodsak4@yahoo.gr>, 2020
|
||||||
# ByteGet, 2020
|
# ByteGet, 2020
|
||||||
|
|
|
||||||
|
|
@ -107,3 +107,6 @@ msgstr "Romanian"
|
||||||
|
|
||||||
msgid "et_EE"
|
msgid "et_EE"
|
||||||
msgstr "Estonian"
|
msgstr "Estonian"
|
||||||
|
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr "Bulgarian"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Jonathan Adams <jonathan@connockadams.uk>, 2020
|
# Jonathan Adams <jonathan@connockadams.uk>, 2020
|
||||||
# duck. <me@duck.me.uk>, 2020
|
# duck. <me@duck.me.uk>, 2020
|
||||||
|
|
@ -6,7 +5,7 @@
|
||||||
# Chris H <cjh861@outlook.com>, 2021
|
# Chris H <cjh861@outlook.com>, 2021
|
||||||
# David Knapman <dai.knapz@gmail.com>, 2021
|
# David Knapman <dai.knapz@gmail.com>, 2021
|
||||||
# Johnnie Blows, 2022
|
# Johnnie Blows, 2022
|
||||||
# Andi Chandler <andi@gowling.com>, 2023
|
# Andi Chandler <andi@gowling.com>, 2025
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -14,7 +13,7 @@ msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
"Last-Translator: Andi Chandler <andi@gowling.com>, 2023\n"
|
"Last-Translator: Andi Chandler <andi@gowling.com>, 2025\n"
|
||||||
"Language-Team: English (United Kingdom) (https://app.transifex.com/grocy/teams/93189/en_GB/)\n"
|
"Language-Team: English (United Kingdom) (https://app.transifex.com/grocy/teams/93189/en_GB/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|
@ -417,3 +416,6 @@ msgstr "Beer"
|
||||||
|
|
||||||
msgid "Estonian"
|
msgid "Estonian"
|
||||||
msgstr "Estonian"
|
msgstr "Estonian"
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr "Bulgarian"
|
||||||
|
|
|
||||||
|
|
@ -107,3 +107,6 @@ msgstr "Romanian"
|
||||||
|
|
||||||
msgid "et_EE"
|
msgid "et_EE"
|
||||||
msgstr "Estonian"
|
msgstr "Estonian"
|
||||||
|
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr "Bulgarian"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Jonathan Adams <jonathan@connockadams.uk>, 2020
|
# Jonathan Adams <jonathan@connockadams.uk>, 2020
|
||||||
# Ben Fayers <ben.fayers@gmail.com>, 2020
|
# Ben Fayers <ben.fayers@gmail.com>, 2020
|
||||||
|
|
@ -6,7 +5,7 @@
|
||||||
# John Coles <john@johncoles.com>, 2020
|
# John Coles <john@johncoles.com>, 2020
|
||||||
# w ralb <g.frcy.trnsfx@barlowhome.org>, 2021
|
# w ralb <g.frcy.trnsfx@barlowhome.org>, 2021
|
||||||
# George Aston, 2024
|
# George Aston, 2024
|
||||||
# Andi Chandler <andi@gowling.com>, 2025
|
# Andi Chandler <andi@gowling.com>, 2026
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -14,7 +13,7 @@ msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||||
"Last-Translator: Andi Chandler <andi@gowling.com>, 2025\n"
|
"Last-Translator: Andi Chandler <andi@gowling.com>, 2026\n"
|
||||||
"Language-Team: English (United Kingdom) (https://app.transifex.com/grocy/teams/93189/en_GB/)\n"
|
"Language-Team: English (United Kingdom) (https://app.transifex.com/grocy/teams/93189/en_GB/)\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|
@ -364,9 +363,6 @@ msgstr "About Grocy"
|
||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr "Close"
|
msgstr "Close"
|
||||||
|
|
||||||
msgid "Released on"
|
|
||||||
msgstr "Released on"
|
|
||||||
|
|
||||||
msgid "Added %1$s of %2$s to stock"
|
msgid "Added %1$s of %2$s to stock"
|
||||||
msgstr "Added %1$s of %2$s to stock"
|
msgstr "Added %1$s of %2$s to stock"
|
||||||
|
|
||||||
|
|
@ -2801,3 +2797,10 @@ msgstr "Stock actions"
|
||||||
|
|
||||||
msgid "List actions"
|
msgid "List actions"
|
||||||
msgstr "List actions"
|
msgstr "List actions"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"After this product was once in stock and when the desired quantity unit "
|
||||||
|
"cannot be selected here, first create a corresponding unit conversion"
|
||||||
|
msgstr ""
|
||||||
|
"After this product was once in stock, and when the desired quantity unit "
|
||||||
|
"cannot be selected here, first create a corresponding unit conversion"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Alberto Martin <ami232@gmail.com>, 2021
|
# Alberto Martin <ami232@gmail.com>, 2021
|
||||||
# GRBaset, 2022
|
# GRBaset, 2022
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# GRBaset, 2023
|
# GRBaset, 2023
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||||
# José Rugel <joserugel@gmail.com>, 2020
|
# José Rugel <joserugel@gmail.com>, 2020
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Ankue <ankue.spam@gmail.com>, 2019
|
# Ankue <ankue.spam@gmail.com>, 2019
|
||||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||||
|
|
@ -429,3 +428,6 @@ msgstr "Cerveza"
|
||||||
|
|
||||||
msgid "Estonian"
|
msgid "Estonian"
|
||||||
msgstr "Estonio"
|
msgstr "Estonio"
|
||||||
|
|
||||||
|
msgid "Bulgarian"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Alberto Martin <ami232@gmail.com>, 2021
|
# Alberto Martin <ami232@gmail.com>, 2021
|
||||||
# Jose Manuel Ruiz, 2023
|
# Jose Manuel Ruiz, 2023
|
||||||
|
|
@ -146,3 +145,7 @@ msgstr "Rumano (Rumanía)"
|
||||||
# Estonian
|
# Estonian
|
||||||
msgid "et_EE"
|
msgid "et_EE"
|
||||||
msgstr "Estonio"
|
msgstr "Estonio"
|
||||||
|
|
||||||
|
# Bulgarian
|
||||||
|
msgid "bg_BG"
|
||||||
|
msgstr ""
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
#
|
|
||||||
# Translators:
|
# Translators:
|
||||||
# Enrique Lapenta <enriquelap20@gmail.com>, 2020
|
# Enrique Lapenta <enriquelap20@gmail.com>, 2020
|
||||||
# Alberto Martin <ami232@gmail.com>, 2021
|
# Alberto Martin <ami232@gmail.com>, 2021
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user