mirror of
https://github.com/grocy/grocy.git
synced 2025-09-16 09:51:30 +00:00
Compare commits
207 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
35b569c832 | ||
|
d81fe4777c | ||
|
95208f5582 | ||
|
dea2ffeaaf | ||
|
e548caabb1 | ||
|
2b0f5d8d84 | ||
|
e9f2edea75 | ||
|
1b9a3c7f57 | ||
|
2636456461 | ||
|
81f6b58fe4 | ||
|
9ba4585143 | ||
|
4aa575e0e8 | ||
|
765f908966 | ||
|
9527305311 | ||
|
9d52f82bc2 | ||
|
6522aca30e | ||
|
e59a35c6d1 | ||
|
cc2bf68f31 | ||
|
654d00dd67 | ||
|
cf2e6f1039 | ||
|
cf3217ada4 | ||
|
21503c26d2 | ||
|
7369603d78 | ||
|
41e93d2c50 | ||
|
b39866bda2 | ||
|
b8f9d09afc | ||
|
a2b6d9ae39 | ||
|
45d3c25b21 | ||
|
2809cc1454 | ||
|
02f30d141e | ||
|
c5927a10f3 | ||
|
828ab8eba0 | ||
|
75f8ecfad2 | ||
|
fd14083443 | ||
|
04808eaa66 | ||
|
53f0893f55 | ||
|
2eb3d8fe47 | ||
|
c0d79b1518 | ||
|
5351828e79 | ||
|
b0c7958891 | ||
|
f444d3e095 | ||
|
d8be254ff3 | ||
|
49b26bd375 | ||
|
50e829f270 | ||
|
3b29110500 | ||
|
e727a38071 | ||
|
099ac7e75a | ||
|
53c56cc1cb | ||
|
2a9f927a13 | ||
|
6bb9d2c51d | ||
|
ca719072c9 | ||
|
66f61ec1ad | ||
|
cc500c50ff | ||
|
eef844d42e | ||
|
e92843a9bf | ||
|
66571f662f | ||
|
e5aebad5d9 | ||
|
f3a1489abf | ||
|
6ca694226b | ||
|
5d5cfb1548 | ||
|
1a7be05e3f | ||
|
f7c4662e2b | ||
|
4c57bf8b9d | ||
|
e5530e2058 | ||
|
363dcf448e | ||
|
d16f3c2daf | ||
|
51e0154101 | ||
|
fc2a37d3fc | ||
|
c32ea087df | ||
|
4eabee3db7 | ||
|
95478cbb18 | ||
|
d8360993cc | ||
|
6e4117526b | ||
|
e4437f5db1 | ||
|
b57fd83cb8 | ||
|
327c1f4fb3 | ||
|
ab44566890 | ||
|
d2a841143e | ||
|
d580990b25 | ||
|
78b658e86e | ||
|
051cb816fe | ||
|
91c275e66b | ||
|
653098a81e | ||
|
c228126c3a | ||
|
1ae5f552d1 | ||
|
63d7f8f36d | ||
|
4754cc306a | ||
|
339a25d1e3 | ||
|
5a91c86b81 | ||
|
292b652437 | ||
|
399ebbe14a | ||
|
a95d6be4f4 | ||
|
ca9b8d068a | ||
|
58890f6bec | ||
|
9f8216378e | ||
|
d4c76aaa76 | ||
|
6ce4e6cb37 | ||
|
aa670adefc | ||
|
1d92e6a4ab | ||
|
e720311572 | ||
|
7c114cfec3 | ||
|
35a409f462 | ||
|
412653d67d | ||
|
58a69d650f | ||
|
a4d479d047 | ||
|
cbf1d1ca40 | ||
|
5e9a7fb7ca | ||
|
9f18b75526 | ||
|
346b589534 | ||
|
8f798a94d1 | ||
|
991706920f | ||
|
ce12202c86 | ||
|
ca470ed4ee | ||
|
2237e2f8f4 | ||
|
2522b3748c | ||
|
096fb7a116 | ||
|
918f84f568 | ||
|
d209c0bd22 | ||
|
ba089a3d79 | ||
|
3df44697bf | ||
|
e326e69d49 | ||
|
bbd8e8c1fa | ||
|
9b5f3ba7b8 | ||
|
0fa0138972 | ||
|
6aa278c19c | ||
|
3fd0f44fe4 | ||
|
0c27157db6 | ||
|
bbd5ce1dc4 | ||
|
0771d58fe7 | ||
|
db0c4f78bd | ||
|
ef8f6b6d42 | ||
|
4dd804003b | ||
|
182d063886 | ||
|
bc487b4867 | ||
|
b5b2f9c5b9 | ||
|
b5761ae544 | ||
|
597a9e3d21 | ||
|
1b19940aba | ||
|
74f9470769 | ||
|
3dcd513094 | ||
|
a799f2b43f | ||
|
c532a67884 | ||
|
6094096675 | ||
|
30d89f4529 | ||
|
a0a0e104b0 | ||
|
26ebeec74f | ||
|
a4454f825a | ||
|
6ec3872518 | ||
|
d4eb767f1b | ||
|
afa4165d1c | ||
|
f9036f0248 | ||
|
257dd644aa | ||
|
be4b5c81b2 | ||
|
f88ed1ee8a | ||
|
411aad2398 | ||
|
7004cf4400 | ||
|
28716ed96c | ||
|
d6e9dc1b59 | ||
|
19935276e9 | ||
|
fa326fdfda | ||
|
e6020432c6 | ||
|
12a2c0945e | ||
|
cc1c6a6442 | ||
|
c757ee3874 | ||
|
1e33975a96 | ||
|
1a23eaabf1 | ||
|
3dbce7547f | ||
|
0bb3e0ae28 | ||
|
8d4a2d0ff9 | ||
|
3234a97b3c | ||
|
b61d569247 | ||
|
0daf0aeb61 | ||
|
889f520afb | ||
|
c6420a74ba | ||
|
e3f53aaebd | ||
|
94e2ec5e15 | ||
|
0a61ea0fcf | ||
|
091145c62c | ||
|
197b83fee8 | ||
|
430286ae9e | ||
|
6e3407b157 | ||
|
13c432b0cf | ||
|
4822d9a4b8 | ||
|
52dd01f313 | ||
|
87976b86d9 | ||
|
84e6e253ea | ||
|
001d5c5d1d | ||
|
b4d2e2a20a | ||
|
914dde4609 | ||
|
1eb1aa8b11 | ||
|
09b23847b5 | ||
|
8c205941c7 | ||
|
b24683f954 | ||
|
e4d26bb8fd | ||
|
c6c10c87e4 | ||
|
df529c3c0b | ||
|
482a520062 | ||
|
ddef58e2a9 | ||
|
d34c7b0a87 | ||
|
b76e51ba41 | ||
|
67cfd0ba5f | ||
|
3fcede0b7c | ||
|
0c0e8c6957 | ||
|
86f5667039 | ||
|
a01a80578c | ||
|
7a51fb77b0 | ||
|
511c95070e |
12
.tx/config
12
.tx/config
@@ -1,9 +1,15 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[grocy.chore_types]
|
||||
file_filter = localization/<lang>/chore_types.po
|
||||
source_file = localization/chore_types.pot
|
||||
[grocy.chore_period_types]
|
||||
file_filter = localization/<lang>/chore_period_types.po
|
||||
source_file = localization/chore_period_types.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[grocy.chore_assignment_types]
|
||||
file_filter = localization/<lang>/chore_assignment_types.po
|
||||
source_file = localization/chore_assignment_types.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
|
30
README.md
30
README.md
@@ -8,17 +8,18 @@ ERP beyond your fridge
|
||||
## Getting in touch
|
||||
There is the [r/grocy subreddit](https://www.reddit.com/r/grocy) to connect with other grocy users. If you've found something that does not work or if you have an idea for an improvement or new things which you would find useful, feel free to open an issue in the [issue tracker](https://github.com/grocy/grocy/issues) here.
|
||||
|
||||
## Community contributions
|
||||
See the website for a list of community contributed Add-ons / Tools: [https://grocy.info/#addons](https://grocy.info/#addons)
|
||||
|
||||
## Motivation
|
||||
A household needs to be managed. I did this so far (almost 10 years) with my first self written software (a C# windows forms application) and with a bunch of Excel sheets. The software is a pain to use and Excel is Excel. So I searched for and tried different things for a (very) long time, nothing 100 % fitted, so this is my aim for a "complete household management"-thing. ERP your fridge!
|
||||
|
||||
## How to install
|
||||
> **NEW**
|
||||
>
|
||||
> There is now grocy-desktop if you want to run grocy without a webserver just like a normal (windows) desktop application.
|
||||
> Checkout grocy-desktop, if you want to run grocy without a webserver just like a normal (windows) desktop application.
|
||||
>
|
||||
> See https://github.com/grocy/grocy-desktop or directly download the [latest release](https://releases.grocy.info/latest-desktop) - the installation is nothing more than just clicking 2 times "next"...
|
||||
|
||||
Just unpack the [latest release](https://releases.grocy.info/latest) on your PHP (SQLite (3.8.3 or higher) extension required, currently only tested with PHP 7.2) enabled webserver (webservers root should point to the `public` directory), copy `config-dist.php` to `data/config.php`, edit it to your needs, ensure that the `data` directory is writable and you're ready to go, (to make writable `chown -R www-data:www-data data/`). Default login is user `admin` with password `admin`, please change the password immediately (see user menu).
|
||||
Just unpack the [latest release](https://releases.grocy.info/latest) on your PHP (SQLite (3.8.3 or higher) extension required, currently only tested with PHP 7.3) enabled webserver (webservers root should point to the `public` directory), copy `config-dist.php` to `data/config.php`, edit it to your needs, ensure that the `data` directory is writable and you're ready to go, (to make it writable, maybe use `chown -R www-data:www-data data/`). Default login is user `admin` with password `admin`, please change the password immediately (see user menu).
|
||||
|
||||
Alternatively clone this repository and install Composer and Yarn dependencies manually.
|
||||
|
||||
@@ -26,31 +27,34 @@ If you use nginx as your webserver, please include `try_files $uri /index.php;`
|
||||
|
||||
If, however, your webserver does not support URL rewriting, set `DISABLE_URL_REWRITING` in `data/config.php` (`Setting('DISABLE_URL_REWRITING', true);`).
|
||||
|
||||
See the website for further installation guides and troubleshooting help: https://grocy.info/links
|
||||
|
||||
## How to run using Docker
|
||||
|
||||
See [grocy/grocy-docker](https://github.com/grocy/grocy-docker) for instructions.
|
||||
See [grocy/grocy-docker](https://github.com/grocy/grocy-docker) or [linuxserver/docker-grocy](https://github.com/linuxserver/docker-grocy) for instructions.
|
||||
|
||||
## How to update
|
||||
Just overwrite everything with the latest release while keeping the `data` directory, check `config-dist.php` for new configuration options and add them to your `data/config.php` (the default from values `config-dist.php` will be used for not in `data/config.php` defined settings). Just to be sure, please empty `data/viewcache`.
|
||||
Just overwrite everything with the latest release 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). Just to be sure, please empty `data/viewcache`.
|
||||
|
||||
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 (`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
|
||||
grocy is fully localizable - the default language is English (integrated into code), a German localization is always maintained by me.
|
||||
You can easily help translating grocy at https://www.transifex.com/grocy/grocy, if your language is incomplete or not available yet.
|
||||
(Language can be changed in `data/config.php`, e. g. `Setting('CULTURE', 'it');`)
|
||||
|
||||
### Maintaining your own localization
|
||||
As the German translation will always be the most complete one, for maintaining your localization it would be easiest when you compare your localization with the German one with a diff tool of your choice.
|
||||
The [pre-release demo](https://demo-prerelease.grocy.info) is available for any translation which is at least 80 % complete and will pull the translations from Transifex 10 minutes past every hour, so you can have a kind of instant preview of your contributed translations. Thank you!
|
||||
|
||||
## Things worth to know
|
||||
|
||||
### REST API & data model documentation
|
||||
See the integrated Swagger UI instance on [/api](https://demo-en.grocy.info/api).
|
||||
See the integrated Swagger UI instance on [/api](https://demo.grocy.info/api).
|
||||
|
||||
### Barcode readers
|
||||
### Barcode readers & camera scanning
|
||||
Some fields 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 field (powered by [QuaggaJS](https://github.com/serratus/quaggaJS), totally offline / client-side camera stream processing). Quick video demo: https://www.youtube.com/watch?v=Y5YH6IJFnfc
|
||||
|
||||
### Input shorthands for date fields
|
||||
For (productivity) reasons all date (and time) input fields use the ISO-8601 format regardless of localization.
|
||||
The following shorthands are available:
|
||||
@@ -91,10 +95,10 @@ When the file `embedded.txt` exists, it must contain a valid and writable path w
|
||||
|
||||
In embedded mode, settings can be overridden by text files in `data/settingoverrides`, the file name must be `<SettingName>.txt` (e. g. `BASE_URL.txt`) and the content must be the setting value (normally one single line).
|
||||
|
||||
## Contributing
|
||||
## Contributing / Say thanks
|
||||
Any help is more than appreciated. Feel free to pick any open unassigned issue and submit a pull request, but please leave a short comment or assign the issue yourself, to avoid working on the same thing.
|
||||
|
||||
New ideas are also very welcome, feel free to open an issue to discuss them.
|
||||
See https://grocy.info/#say-thanks for more ideas if you just want to say thanks.
|
||||
|
||||
## Screenshots
|
||||
#### Dashboard
|
||||
|
11
app.php
11
app.php
@@ -38,7 +38,16 @@ require_once __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
// Load config files
|
||||
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
|
||||
|
||||
// Definitions for disabled authentication mode
|
||||
if (GROCY_DISABLE_AUTH === true)
|
||||
{
|
||||
if (!defined('GROCY_USER_ID'))
|
||||
{
|
||||
define('GROCY_USER_ID', 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Setup base application
|
||||
$appContainer = new \Slim\Container([
|
||||
|
@@ -1 +1 @@
|
||||
- Documented the REST API and data model, see the integrated instance of Swagger UI at [/api](https://demo-en.grocy.info/api)
|
||||
- Documented the REST API and data model, see the integrated instance of Swagger UI at [/api](https://demo.grocy.info/api)
|
||||
|
@@ -1,3 +1,3 @@
|
||||
- Upgraded Bootstrap and some other dependencies (grocy now looks even better!)
|
||||
- Added Italian translation (thanks @davidoskky)
|
||||
- => Demo for this language available at: https://demo-it.grocy.info
|
||||
- => Demo for this language available at: https://it.demo.grocy.info
|
||||
|
@@ -2,4 +2,4 @@ This was released shortly after the last release to fix a small regression bug,
|
||||
|
||||
- Upgraded Bootstrap and some other dependencies (grocy now looks even better!)
|
||||
- Added Italian translation (thanks @davidoskky)
|
||||
- => Demo for this language available at: https://demo-it.grocy.info
|
||||
- => Demo for this language available at: https://it.demo.grocy.info
|
||||
|
@@ -1,8 +1,8 @@
|
||||
- New feature: **Recipes**
|
||||
- Organize a list of products, amounts and a description into recipes and see at a glance if everything needed is in stock or put the missing things with one click on the shopping list
|
||||
- Try it live on the demo page: => https://demo-en.grocy.info/recipes
|
||||
- Try it live on the demo page: => https://demo.grocy.info/recipes
|
||||
- Added norwegian translation (thanks @BlizzWave)
|
||||
- Demo available at: => https://demo-no.grocy.info
|
||||
- Demo available at: => https://no.demo.grocy.info
|
||||
- A lot of small UI improvements
|
||||
- Columns in tables can now be reordered
|
||||
- Show a calendar on the shopping list page (useful, at least for me)
|
||||
|
@@ -9,7 +9,7 @@
|
||||
- New feature: Calendar
|
||||
- Shows all upcoming product expirations, due chores, due tasks and due battery charge cycles
|
||||
- New translation: French (thanks all the translators)
|
||||
- As for all languages, a demo is available at: https://demo-fr.grocy.info
|
||||
- As for all languages, a demo is available at: https://fr.demo.grocy.info
|
||||
- Small other improvements
|
||||
- Allow fraction numbers for recipe ingredients when not checked against stock and add an option to not check stock for a recipe position
|
||||
- The current time can now be shown in the header (see the settings menu next to the user icon)
|
||||
|
@@ -1,4 +1,4 @@
|
||||
- Breaking change: The API has been completely reworked, please review [the documentation](https://demo-en.grocy.info/api) before updating when you are using the API
|
||||
- Breaking change: The API has been completely reworked, please review [the documentation](https://demo.grocy.info/api) before updating when you are using the API
|
||||
- New feature: Tare weight handling
|
||||
- An option per product
|
||||
- Imagine this: You have flour in jars, the jar weighs 500 grams, currently there are 1000 grams in stock, the new weight including the jar is 1100 grams - grocy can now calculate the used amount on consume/purchase/inventory automatically, you only have to enter the weighed amount including the jar (demo product to showcase this "Flour")
|
||||
@@ -9,13 +9,13 @@
|
||||
- A new option per recipe to not check against the amount already on the shopping list when putting all missing ingredients on it (by default, only the amount not already on the shopping list is added, when this is enabled, always the whole missing amount will be put on the shopping list)
|
||||
- On consume, there can now be tracked for which recipe it was, this is also tracked automatically when using the "Consume all ingredients needed by this recipe" button (for future statistical purposes)
|
||||
- Recipes can now have pictures
|
||||
- New "gallery view" for recipes (demo available at https://demo-en.grocy.info/recipes?tab=gallery)
|
||||
- New "gallery view" for recipes (demo available at https://demo.grocy.info/recipes?tab=gallery)
|
||||
- Stock improvements
|
||||
- It is now optionally possible to have partial units in stock (option per product)
|
||||
- On purchase, a different location can now be assigned (imagine you have two freezers, by default you store your pizza there, but sometimes there)
|
||||
- New translations: (thanks all the translators)
|
||||
- Spanish (demo available at https://demo-es.grocy.info)
|
||||
- Turkish (demo available at https://demo-tr.grocy.info)
|
||||
- Spanish (demo available at https://es.demo.grocy.info)
|
||||
- Turkish (demo available at https://tr.demo.grocy.info)
|
||||
- Other improvements
|
||||
- The calendar can now be shared/integrated in iCal format (button in the header on the calendar page)
|
||||
- Added feature flags to hide/disable certain parts of grocy when you don't use them (for example hide "Chores" and all related UI elements, when you don't use it, see `config-dist.php`)
|
||||
|
@@ -7,4 +7,4 @@
|
||||
- The changelog is now included as markdown files (in `/changelog` directory, one file per release with a filename in format `<ReleaseNumber>_<Version>_<ReleaseDateIso>.md`) and shown in the about dialog
|
||||
- Please review your `CURRENCY` setting in `data/config.php`, see also `config-dist.php` - this should be the ISO 4217 code of the currency to properly work with the JS `toLocaleString` function
|
||||
- New translation: (thanks all the translators)
|
||||
- Russian (demo available at https://demo-ru.grocy.info)
|
||||
- Russian (demo available at https://ru.demo.grocy.info)
|
||||
|
@@ -21,8 +21,8 @@
|
||||
- Recipe improvements
|
||||
- It's now possible to enter a "variable amount" (e. g. if a recipe needs "1 - 2 cups"), the original amount is still used for stock fulfillment checking (if enabled for that recipe ingredient)
|
||||
- New translations: (thanks all the translators)
|
||||
- Swedish (demo available at https://demo-sv.grocy.info)
|
||||
- Polish (demo available at https://demo-pl.grocy.info)
|
||||
- Swedish (demo available at https://sv.demo.grocy.info)
|
||||
- Polish (demo available at https://pl.demo.grocy.info)
|
||||
- Internal improvement: Localizations are now handled via gettext, both on server and client side
|
||||
- Mainly to properly handle languages with more than 2 plural forms
|
||||
- This involved some string changes which results in a needed (re)translation of about 20 strings (excluding demo data)
|
||||
|
@@ -2,8 +2,8 @@
|
||||
- Fixed a problem that the user settings were not properly initialized for the frontend JS part when not logged only (so potentially affected only the login page)
|
||||
- Fixed an issue that the shopping list did not load when a plural translation for a quantity unit was missing
|
||||
- Fixed that tooltips were visible forever when consuming all products on the stock overview page
|
||||
- Fixed that login did not work when "Stay logged in permanently" was set on grocy runs on a 32-bit system (thanks @matejdro)
|
||||
- Fixed page reloads when "Auto reload on external changes" is enabled and there is unsaved form data (the detection did not work on forms in modal dialogs, e. g. when adding a entry to the meal plan)
|
||||
- Fixed that login did not work when "Stay logged in permanently" was set and grocy runs on a 32-bit system (thanks @matejdro)
|
||||
- Fixed page reloads when "Auto reload on external changes" is enabled and there is unsaved form data (the detection did not work for forms in modal dialogs, e. g. when adding a entry to the meal plan)
|
||||
- Fixed (again) that the product picker did not work properly when the product name contains single quotes
|
||||
- Fixed that a entered barcode on the product edit page was only saved when "adding" it to the barcodes list by pressing `TAB` (is now automatically added to the list also when just leaving the field)
|
||||
- Improved that errors/messages from the API are shown properly when undoing a stock booking is not possible (stock journal page)
|
||||
|
16
changelog/50_2.4.3_2019-07-06.md
Normal file
16
changelog/50_2.4.3_2019-07-06.md
Normal file
@@ -0,0 +1,16 @@
|
||||
- Fixed the messed up message/toast after consuming a product from the stock overview page
|
||||
- Fixed that "Track date only" chores were always tracked today, regardless of the given date
|
||||
- Fixed that the "week costs" were wrong after removing a meal plan entry
|
||||
- Fixed wrong recipes costs calculation with nested recipes when the base recipe servings are > 1 (also affected the meal plan when adding such a recipe there)
|
||||
- Fixed consuming recipes did not consume ingredients of the nested recipes
|
||||
- Improved recipes API - added new endpoints to get stock fulfillment information (thanks @Aerex)
|
||||
- Improved date display for products that never expires (instead of "2999-12-31" now just "Never" will be shown)
|
||||
- Improved date display for dates of today and no time (instead of the hours since midnight now just "Today" will be shown)
|
||||
- Improved shopping list handling
|
||||
- Items can now be switched between lists (there is a shopping list dropdown on the item edit page)
|
||||
- Items can now be marked as "done" (new check mark button per item, when clicked, the item will be displayed greyed out, when clicked again the item will be displayed normally again)
|
||||
- Improved that products can now also be consumed as spoiled from the stock overview page (option in the more/context menu per line)
|
||||
- Added a "consume this recipe"-button to the meal plan (and also a button to consume all recipes for a whole week)
|
||||
- Added the possibility to undo a task (new button per task, only visible when task is already completed) and also a corresponding API endpoint
|
||||
- Added a new `config.php` setting `DISABLE_AUTH` to be able to disable authentication / the login screen, defaults to `false`
|
||||
- Added a new `config.php` setting `CALENDAR_FIRST_DAY_OF_WEEK` to be able to change the first day of a week used for calendar views (meal plan for example) in the frontend, defaults to locale default
|
6
changelog/51_2.4.4_2019-07-07.md
Normal file
6
changelog/51_2.4.4_2019-07-07.md
Normal file
@@ -0,0 +1,6 @@
|
||||
- Fixed that price data (last price & chart) was not taken from inventory correction bookings, only purchases
|
||||
- Fixed weekly chores were scheduled on the same day after execution
|
||||
- Fixed that undone chores were also included in "Last tracked"
|
||||
- Fixed the date-time-picker width was too narrow sometimes
|
||||
- Improved that execution dates of "Track date only" chores will never display the time part
|
||||
- Improved date display for products that never expire (again, there was a display problem after consuming an item on the stock overview page)
|
107
changelog/52_2.5.0_2019-09-22.md
Normal file
107
changelog/52_2.5.0_2019-09-22.md
Normal file
@@ -0,0 +1,107 @@
|
||||
### New feature: Custom entities / objects / lists
|
||||
- Custom entities are based on Userfields and can be used to add any custom lists you want to have in grocy
|
||||
- They can have an own menu entry in the sidebar
|
||||
- => See "Manage master data" -> "Userentities" or try it on the demo: https://demo.grocy.info/userobjects/exampleuserentity
|
||||
|
||||
### New feature: Use the device camera for barcode scanning
|
||||
- Available on any barcode-enabled field (so currently only for picking products) - a new camera button at the right of side the text field
|
||||
- Implemented using [QuaggaJS](https://github.com/serratus/quaggaJS) - camera stream processing happens totally offline / client-side
|
||||
- Please note due to browser security restrictions, this only works when serving grocy via a secure connection (`https://`)
|
||||
- There is also a `config.php` setting `DISABLE_BROWSER_BARCODE_CAMERA_SCANNING` to disable this, if you don't need it at all (defaults to `false`)
|
||||
- I you have problems that barcodes are not recognized properly, there is a little "barcode scanner testing page" at [/barcodescannertesting](https://demo.grocy.info/barcodescannertesting)
|
||||
- => Quick video demo: https://www.youtube.com/watch?v=Y5YH6IJFnfc
|
||||
|
||||
### Stock improvements/fixes
|
||||
- Products can now have variations (nested products)
|
||||
- Define the parent product for a product on the product edit page (only one level is possible, means a product which is used as a parent product in another product, cannot have a parent product itself)
|
||||
- Parent and sub products can have stock (both are regular products, no difference from that side)
|
||||
- On the stock overview page, the aggregated amount is displayed next to the amount (sigma sign)
|
||||
- When a recipe needs a parent product, the need is also fulfilled when enough sub product(s) are in stock
|
||||
- Quantity units can now be linked (related measurements / unit conversion)
|
||||
- On the quantity unit edit page default conversion can be defined for each unit
|
||||
- Products "inherit" the default conversion and additionally can have their own / override the default ones
|
||||
- It's now possible to print a "Location Content Sheet" with the current stock per location - new button at the top of the stock overview page (thought to hang it at the location, note used amounts on paper and track it in grocy later)
|
||||
- Stock overview page improvements
|
||||
- Options in the more/context-menu to directly open the purchase/consume/inventory pages prefilled with the current product in a popup/dialog
|
||||
- Option in the more/context-menu to add the current product directly to a shopping list
|
||||
- Option in the more/context-menu to search for recipes containing the current product
|
||||
- It's now possible to undo stock bookings ("Undo"-button in the success message, like it was already possible on the purchase/consume/inventory pages)
|
||||
- Improved that on any stock changes the corresponding product table row is properly refreshed
|
||||
- New `config.php` setting `FEATURE_SETTING_STOCK_COUNT_OPENED_PRODUCTS_AGAINST_MINIMUM_STOCK_AMOUNT` to configure if opened products should be considered for minimum stock amounts (defaults to `true`, so opened products will now be considered missing by default - please change this setting if you want the old behavior)
|
||||
- The product description now can have formattings (HTML/WYSIWYG editor like for recipes)
|
||||
- Products now have a new field for calories (kcal, per stock quantity unit)
|
||||
- "Factor purchase to stock quantity unit" (product option) can now also be a decimal number when "Allow partial units in stock" is enabled
|
||||
- New "Sub feature flags" in `config.php` to disable some sub-features (hide the corresponding UI elements) if you don't need them (all new feature flags default to `true`, so no changed behavior when not configured)
|
||||
- `FEATURE_FLAG_STOCK_PRICE_TRACKING` to disable product price tracking
|
||||
- `FEATURE_FLAG_STOCK_LOCATION_TRACKING` to disable product location tracking
|
||||
- `FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING` to disable product best before date tracking
|
||||
- `FEATURE_FLAG_STOCK_PRODUCT_OPENED_TRACKING` to disable product opened tracking
|
||||
- Fixed/refined some things regarding purchase/consume/inventory of products with enabled tare weight handling (nothing was broken, but the success popups may not displayed the correct amount that was posted)
|
||||
- Fixed that "Spoil rate" and "Average shelf life" on the product card was wrong in most cases
|
||||
- When going to the product edit page, after saving the product, it will now always return to the previous page
|
||||
|
||||
### Shopping list improvements
|
||||
- Shopping lists now have a notes field (HTML/WYSIWYG editor, just to save some notes per shopping list)
|
||||
- Shopping lists can now be printed (new button next to the add/delete shopping list button)
|
||||
|
||||
### Recipe improvements
|
||||
- Based on the new linked quantity units, recipe ingredients can now use any product related unit, the amount is calculated according to the conversion factor of the unit relation
|
||||
- Based on the new calories field per product, the calories per recipe are now shown based on the selected servings (in the header, next to the costs)
|
||||
- New option "price factor" per recipe ingredient (defaults to `1`) - the resulting costs of the recipe ingredient will be multiplied by that factor
|
||||
- Use this for example for spices in combination with "Only check if a single unit is in stock" to not take the full price of a pack of pepper into account for a recipe
|
||||
- The search field on the recipe overview page now also searches for product names of recipe ingredients (means it's possible to search a recipe by a product name)
|
||||
- Fixed a problem where the meal plan did not load when a recipe, which was already added to the meal plan, was deleted
|
||||
|
||||
### Chores improvements
|
||||
- Chores can now be assigned to users
|
||||
- Option per chore, different "assignment types" like "Random", "Who least did first", etc.
|
||||
- On the chores overview page, the list can be filtered to only show chores assigned to the currently logged in user (or to any other user)
|
||||
- New option "Due date rollover" per chore which means the chore can never be overdue, the due date will shift forward each day when due
|
||||
- New option "Consume product on chore execution" per chore to automatically consume a product when a chore execution is tracked
|
||||
- When tracking an execution from the chores overview page, filters are re-applied afterwards (means when you have filtered the page to only show overdue chores and after the execution the chore is not overdue anymore, it will now be immediately hidden)
|
||||
|
||||
### Equipment improvements/fixes
|
||||
- Fixed that the delete button not always deleted the currently selected equipment item
|
||||
|
||||
### Userfield improvements/fixes
|
||||
- New Userfield type "Select list" for a list of predefined values where a single or also multiple values can then be selected on the entity object
|
||||
- New Userfield type "Link" - a single-line-textbox where the content will be rendered as a clickable link
|
||||
- Userfields of type "checkbox" are rendered as a checkmark in tables when checked (instead of "1" as till now)
|
||||
- Product Userfields are now also rendered on the shopping list (for items which have a product referenced)
|
||||
- Fixed that the Userfield type "Preset list" had always the caption "Product group" instead of the configured one (thanks @oncleben31)
|
||||
|
||||
### General & other improvements/fixes
|
||||
- Added a new `config.php` setting `CALENDAR_SHOW_WEEK_OF_YEAR` to configure if calendars should show week numbers (defaults to `true`)
|
||||
- Fixed that date/time pickers not considered the `config.php` setting `CALENDAR_FIRST_DAY_OF_WEEK`
|
||||
- Improved the handling which entry page to use with disabled feature flags (thanks @nielstholenaar)
|
||||
- Boolean settings provided via environment variables (so the strings `true` and `false`) are now parsed correctly (thanks @mduret)
|
||||
- All uploaded pictures (currently for products and recipes) are now automatically downscaled to the appropriate size when serving them to improve page load times (this requires the `php-gd` extension, if not installed, images will not be downscaled)
|
||||
- It's now possible to test plural forms of quantity units (button on the quantity unit edit page, only visible if the current language requires more than 2 plural forms)
|
||||
- On the login page the sidebar an all top-navbar menus is now hidden
|
||||
- New translations: (thanks all the translators)
|
||||
- Danish (demo available at https://da.demo.grocy.info)
|
||||
- Dutch (demo available at https://nl.demo.grocy.info)
|
||||
- Internal change for how the localizations for the demo instances are handled
|
||||
- For the pre-release demo now all currently supported languages are available (was already the case for the stable demo)
|
||||
- Additionally all language files which reached the completion limit of 80 % will now be automatically pulled from Transifex 10 minutes past every hour (to have a kind of instant preview of changed translations)
|
||||
- The URLs have changed, I'll try to keep all existing URLs redirecting properly for a long time
|
||||
- If you want to link to the demo, please only use https://demo.grocy.info (stable demo) or https://demo-prerelease.grocy.info (current master branch demo)
|
||||
|
||||
### API improvements & non-breaking changes
|
||||
- New endpoint `/objects/{entity}/search/{searchString}` to search for objects by name (contains search)
|
||||
- New endpoint `/stock/shoppinglist/add-product` to add a product to a shopping list (thanks @Forceu)
|
||||
- New endpoint `/stock/shoppinglist/remove-product` to remove a product from a shopping list (thanks @Forceu)
|
||||
- New endpoint `/chores/executions/calculate-next-assignments` to (re)calculate next user assignments for a single or all chores
|
||||
- New endpoint `/stock/products/by-barcode/{barcode}/add` to add a product to stock by its barcode
|
||||
- New endpoint `/stock/products/by-barcode/{barcode}/consume` to remove a product to stock by its barcode
|
||||
- New endpoint `/stock/products/by-barcode/{barcode}/inventory` to inventory a product by its barcode
|
||||
- New endpoint `/stock/products/by-barcode/{barcode}/open` to mark a product as opened by its barcode
|
||||
- New endpoint `/stock/bookings/{bookingId}` to retrieve a single stock booking
|
||||
- Endpoint `GET /files/{group}/{fileName}` can now also downscale pictures (see API documentation on [/api](https://demo.grocy.info/api))
|
||||
- When adding a product (through `stock/product/{productId}/add` or `stock/product/{productId}/inventory`) with omitted best before date and if the given product has "Default best before days" set, the best before date is calculated based on that (so far always today was used which is still the case when no date is supplied and also the product has no "Default best before days set) (thanks @Forceu)
|
||||
- Field `stock_amount` of endpoint `/stock/products/{productId}` now returns `0` instead of `null` when the given product is not in stock (thanks @Forceu)
|
||||
- Fixed that `/system/db-changed-time` always returned the current time (more or less) due to that that time is the database file modification time and the database is effectively changed on each request because of session information tracking - which now explicitly does not change the database file modification time, so this should work again to determine if any data changes happened
|
||||
- It's now also possible to provide the API key via a query parameter (same name as the header, so `GROCY-API-KEY`)
|
||||
|
||||
#### Say thanks
|
||||
Because there were some questions about that in the past: If grocy is useful for you, [say thanks](https://grocy.info/#say-thanks)!
|
37
changelog/53_2.5.1_2019-09-28.md
Normal file
37
changelog/53_2.5.1_2019-09-28.md
Normal file
@@ -0,0 +1,37 @@
|
||||
### Stock improvements/fixes
|
||||
- Fixed that barcode lookups now compare the whole barcode, not parts of it (e. g. when you have two products with the barcodes `$1` and `$10` and scan `$1` maybe the product of `$10` was found till now)
|
||||
- Fixed that the "X products are already expired" count on the stock overview page was wrong
|
||||
- Fixed that after product actions (consume/purchase/etc.) on the stock overview page the highlighting of the row was maybe wrong
|
||||
- After product actions (consume/purchase/etc.) on the stock overview page on a sub product, now also the parent product (row) is refreshed
|
||||
- It's now possible to accumulate min. stock amounts on parent product level (new option per product, means the sub product will never be "missing" then, only the parent product)
|
||||
- On the purchase page there is now an option to select that the price is the total price (for the whole amount) - below the price field, defaults to "Unit price" (as it was until now), when set to "Total price", the entered price will be divided by the amount before posting
|
||||
- "Average shelf life" on the product card now displays just "Unlimited" when the resulting value would be > 200 years (for products which never expire, as they have a best before date of 2999-12-31)
|
||||
|
||||
### Shopping list improvements
|
||||
- When adding a product to the shopping list from the new context/more menu from the stock overview page and if the product is already on the shopping list, the amount of that entry will be updated acccordingly instead of adding a new (double) shopping list item
|
||||
- Added a "clear" button above the new notes field on the shopping list page to quickly clear the notes field with one click
|
||||
|
||||
### Recipe improvements/fixes
|
||||
- Fixed a problem regarding quantity unit conversion handling for recipe ingredients of products with no unit relations, but only a different purchase/stock quantity unit
|
||||
- It's now possible to display a recipe directly from the meal plan (new "eye button") (thanks @kriddles)
|
||||
- Improved the responsiveness of the meal plan and calendar page by automatically switching to a day calendar view on smaller screens (thanks for the idea @kriddles)
|
||||
|
||||
### Chores improvements
|
||||
- There is now a new sub feature flag `FEATURE_FLAG_CHORES_ASSIGNMENTS` to disable chore assignments if you don't need them (defaults to `true`, so no changed behavior when not configured)
|
||||
|
||||
### Calendar improvements
|
||||
- The calendar now also contains all planned recipes from the meal plan on the corresponding day
|
||||
- Improved that dates in the iCal calendar export now include the server timezone
|
||||
|
||||
### Custom lists/fields improvements
|
||||
- Optimized the custom lists page that it can be printed properly (search field etc. is hidden when printing the page)
|
||||
|
||||
### General & other improvements/fixes
|
||||
- Fixed that the browser barcode scanner button was not clickable on iOS Safari & other small styles fixes/improvements for iOS Safari (thanks @DeeeeLAN)
|
||||
- It's now also possible to set the meal plan page as the default/entry page (`config.php` setting `ENTRY_PAGE`) (thanks @lwis)
|
||||
- Some UI detail-refinements
|
||||
- In the header of the product-/chore-/battery-card there is now also a button to directly jump to the journal of the current product/chore/battery
|
||||
|
||||
### API improvements/fixes
|
||||
- The API Endpoint `GET /files/{group}/{fileName}` now also returns a `Cache-Control` header (defaults fixed to 30 days) to further increase page load times
|
||||
- Fixed that the API endpoint `/stock/shoppinglist/add-product` failed when a product should be added which was not already on the shopping list (thanks @Forceu)
|
@@ -1,13 +1,14 @@
|
||||
{
|
||||
"require": {
|
||||
"php": ">=7.2",
|
||||
"slim/slim": "^3.12.1",
|
||||
"slim/slim": "^3.12.2",
|
||||
"morris/lessql": "^0.4.1",
|
||||
"rubellum/slim-blade-view": "^0.1.1",
|
||||
"tuupola/cors-middleware": "^0.9.4",
|
||||
"eluceo/ical": "^0.15.0",
|
||||
"tuupola/cors-middleware": "^1.0.0",
|
||||
"eluceo/ical": "^0.15.1",
|
||||
"erusev/parsedown": "^1.7.3",
|
||||
"gettext/gettext": "^4.6.2"
|
||||
"gettext/gettext": "^4.6.3",
|
||||
"gumlet/php-image-resize": "^1.9.2"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
394
composer.lock
generated
394
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "613590bc6e46e2b4542023617bd56778",
|
||||
"content-hash": "eff0f8f394573d15e26d8abd3788ed72",
|
||||
"packages": [
|
||||
{
|
||||
"name": "container-interop/container-interop",
|
||||
@@ -106,16 +106,16 @@
|
||||
},
|
||||
{
|
||||
"name": "eluceo/ical",
|
||||
"version": "0.15.0",
|
||||
"version": "0.15.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/markuspoerschke/iCal.git",
|
||||
"reference": "add0ca99aa1f77f134a2e8b071f2ebc22b115139"
|
||||
"reference": "bdd24747587f6f9b10770a7b873a13e273f85f39"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/add0ca99aa1f77f134a2e8b071f2ebc22b115139",
|
||||
"reference": "add0ca99aa1f77f134a2e8b071f2ebc22b115139",
|
||||
"url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/bdd24747587f6f9b10770a7b873a13e273f85f39",
|
||||
"reference": "bdd24747587f6f9b10770a7b873a13e273f85f39",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -153,7 +153,7 @@
|
||||
"ics",
|
||||
"php calendar"
|
||||
],
|
||||
"time": "2019-01-13T22:00:58+00:00"
|
||||
"time": "2019-08-06T20:33:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "erusev/parsedown",
|
||||
@@ -203,16 +203,16 @@
|
||||
},
|
||||
{
|
||||
"name": "gettext/gettext",
|
||||
"version": "v4.6.2",
|
||||
"version": "v4.6.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/oscarotero/Gettext.git",
|
||||
"reference": "93176b272d61fb58a9767be71c50d19149cb1e48"
|
||||
"reference": "70c6ff2fecd275e6ef9cdd542f55939a3d1904d6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/oscarotero/Gettext/zipball/93176b272d61fb58a9767be71c50d19149cb1e48",
|
||||
"reference": "93176b272d61fb58a9767be71c50d19149cb1e48",
|
||||
"url": "https://api.github.com/repos/oscarotero/Gettext/zipball/70c6ff2fecd275e6ef9cdd542f55939a3d1904d6",
|
||||
"reference": "70c6ff2fecd275e6ef9cdd542f55939a3d1904d6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -261,7 +261,7 @@
|
||||
"po",
|
||||
"translation"
|
||||
],
|
||||
"time": "2019-01-12T18:40:56+00:00"
|
||||
"time": "2019-07-15T12:56:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "gettext/languages",
|
||||
@@ -325,17 +325,72 @@
|
||||
"time": "2018-11-13T22:06:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/container",
|
||||
"version": "v5.8.15",
|
||||
"name": "gumlet/php-image-resize",
|
||||
"version": "1.9.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/container.git",
|
||||
"reference": "9405989993a48c2cd50ad1e5b2b08a33383c3807"
|
||||
"url": "https://github.com/gumlet/php-image-resize.git",
|
||||
"reference": "06339a9c1b167acd58173db226f57957a6617547"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/container/zipball/9405989993a48c2cd50ad1e5b2b08a33383c3807",
|
||||
"reference": "9405989993a48c2cd50ad1e5b2b08a33383c3807",
|
||||
"url": "https://api.github.com/repos/gumlet/php-image-resize/zipball/06339a9c1b167acd58173db226f57957a6617547",
|
||||
"reference": "06339a9c1b167acd58173db226f57957a6617547",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-fileinfo": "*",
|
||||
"ext-gd": "*",
|
||||
"php": ">=5.5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"apigen/apigen": "^4.1",
|
||||
"ext-exif": "*",
|
||||
"ext-gd": "*",
|
||||
"php-coveralls/php-coveralls": "^2.1",
|
||||
"phpunit/phpunit": "^4.8"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-exif": "Auto-rotate jpeg files"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Gumlet\\": "lib/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Aditya Patadia",
|
||||
"homepage": "http://aditya.patadia.org/"
|
||||
}
|
||||
],
|
||||
"description": "PHP class to re-size and scale images",
|
||||
"homepage": "https://github.com/gumlet/php-image-resize",
|
||||
"keywords": [
|
||||
"image",
|
||||
"php",
|
||||
"resize",
|
||||
"scale"
|
||||
],
|
||||
"time": "2019-01-01T13:53:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/container",
|
||||
"version": "v5.8.35",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/container.git",
|
||||
"reference": "b42e5ef939144b77f78130918da0ce2d9ee16574"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/container/zipball/b42e5ef939144b77f78130918da0ce2d9ee16574",
|
||||
"reference": "b42e5ef939144b77f78130918da0ce2d9ee16574",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -367,20 +422,20 @@
|
||||
],
|
||||
"description": "The Illuminate Container package.",
|
||||
"homepage": "https://laravel.com",
|
||||
"time": "2019-04-22T13:12:35+00:00"
|
||||
"time": "2019-08-20T02:00:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/contracts",
|
||||
"version": "v5.8.15",
|
||||
"version": "v5.8.35",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/contracts.git",
|
||||
"reference": "0b3cbe19051c9a8c247091cc0867d3b65250d093"
|
||||
"reference": "00fc6afee788fa07c311b0650ad276585f8aef96"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/contracts/zipball/0b3cbe19051c9a8c247091cc0867d3b65250d093",
|
||||
"reference": "0b3cbe19051c9a8c247091cc0867d3b65250d093",
|
||||
"url": "https://api.github.com/repos/illuminate/contracts/zipball/00fc6afee788fa07c311b0650ad276585f8aef96",
|
||||
"reference": "00fc6afee788fa07c311b0650ad276585f8aef96",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -411,11 +466,11 @@
|
||||
],
|
||||
"description": "The Illuminate Contracts package.",
|
||||
"homepage": "https://laravel.com",
|
||||
"time": "2019-04-21T18:51:09+00:00"
|
||||
"time": "2019-07-30T13:57:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/events",
|
||||
"version": "v5.8.15",
|
||||
"version": "v5.8.35",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/events.git",
|
||||
@@ -460,16 +515,16 @@
|
||||
},
|
||||
{
|
||||
"name": "illuminate/filesystem",
|
||||
"version": "v5.8.15",
|
||||
"version": "v5.8.35",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/filesystem.git",
|
||||
"reference": "e3c7302b147704420041c07aac538b9de67ebb8f"
|
||||
"reference": "494ba903402d64ec49c8d869ab61791db34b2288"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/filesystem/zipball/e3c7302b147704420041c07aac538b9de67ebb8f",
|
||||
"reference": "e3c7302b147704420041c07aac538b9de67ebb8f",
|
||||
"url": "https://api.github.com/repos/illuminate/filesystem/zipball/494ba903402d64ec49c8d869ab61791db34b2288",
|
||||
"reference": "494ba903402d64ec49c8d869ab61791db34b2288",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -508,20 +563,20 @@
|
||||
],
|
||||
"description": "The Illuminate Filesystem package.",
|
||||
"homepage": "https://laravel.com",
|
||||
"time": "2019-04-08T12:56:11+00:00"
|
||||
"time": "2019-08-14T13:38:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/support",
|
||||
"version": "v5.8.15",
|
||||
"version": "v5.8.35",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/support.git",
|
||||
"reference": "7fbf8d76946ee53587955b670bd8a47e3d48e854"
|
||||
"reference": "e63a495d3bf01654f70def1046fb925c4bb56506"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/support/zipball/7fbf8d76946ee53587955b670bd8a47e3d48e854",
|
||||
"reference": "7fbf8d76946ee53587955b670bd8a47e3d48e854",
|
||||
"url": "https://api.github.com/repos/illuminate/support/zipball/e63a495d3bf01654f70def1046fb925c4bb56506",
|
||||
"reference": "e63a495d3bf01654f70def1046fb925c4bb56506",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -569,20 +624,20 @@
|
||||
],
|
||||
"description": "The Illuminate Support package.",
|
||||
"homepage": "https://laravel.com",
|
||||
"time": "2019-04-25T14:06:24+00:00"
|
||||
"time": "2019-09-03T16:36:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/view",
|
||||
"version": "v5.8.15",
|
||||
"version": "v5.8.35",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/view.git",
|
||||
"reference": "a62ef6b6c4392a8bb5cf3af5f5076459525286c5"
|
||||
"reference": "c859919bc3be97a3f114377d5d812f047b8ea90d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/view/zipball/a62ef6b6c4392a8bb5cf3af5f5076459525286c5",
|
||||
"reference": "a62ef6b6c4392a8bb5cf3af5f5076459525286c5",
|
||||
"url": "https://api.github.com/repos/illuminate/view/zipball/c859919bc3be97a3f114377d5d812f047b8ea90d",
|
||||
"reference": "c859919bc3be97a3f114377d5d812f047b8ea90d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -618,7 +673,7 @@
|
||||
],
|
||||
"description": "The Illuminate View package.",
|
||||
"homepage": "https://laravel.com",
|
||||
"time": "2019-04-17T14:14:38+00:00"
|
||||
"time": "2019-06-20T13:13:59+00:00"
|
||||
},
|
||||
{
|
||||
"name": "morris/lessql",
|
||||
@@ -726,16 +781,16 @@
|
||||
},
|
||||
{
|
||||
"name": "nesbot/carbon",
|
||||
"version": "2.17.1",
|
||||
"version": "2.24.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/briannesbitt/Carbon.git",
|
||||
"reference": "96acbc0c03782e8115156dd4dd8b736267155066"
|
||||
"reference": "934459c5ac0658bc765ad1e53512c7c77adcac29"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/96acbc0c03782e8115156dd4dd8b736267155066",
|
||||
"reference": "96acbc0c03782e8115156dd4dd8b736267155066",
|
||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/934459c5ac0658bc765ad1e53512c7c77adcac29",
|
||||
"reference": "934459c5ac0658bc765ad1e53512c7c77adcac29",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -746,11 +801,14 @@
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
|
||||
"kylekatarnls/multi-tester": "^1.1",
|
||||
"phpmd/phpmd": "^2.6",
|
||||
"phpmd/phpmd": "dev-php-7.1-compatibility",
|
||||
"phpstan/phpstan": "^0.11",
|
||||
"phpunit/phpunit": "^7.5 || ^8.0",
|
||||
"squizlabs/php_codesniffer": "^3.4"
|
||||
},
|
||||
"bin": [
|
||||
"bin/carbon"
|
||||
],
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
@@ -773,16 +831,20 @@
|
||||
"name": "Brian Nesbitt",
|
||||
"email": "brian@nesbot.com",
|
||||
"homepage": "http://nesbot.com"
|
||||
},
|
||||
{
|
||||
"name": "kylekatarnls",
|
||||
"homepage": "http://github.com/kylekatarnls"
|
||||
}
|
||||
],
|
||||
"description": "A simple API extension for DateTime.",
|
||||
"description": "A API extension for DateTime that supports 281 different languages.",
|
||||
"homepage": "http://carbon.nesbot.com",
|
||||
"keywords": [
|
||||
"date",
|
||||
"datetime",
|
||||
"time"
|
||||
],
|
||||
"time": "2019-04-27T18:04:27+00:00"
|
||||
"time": "2019-08-31T16:37:55+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nikic/fast-route",
|
||||
@@ -1325,20 +1387,23 @@
|
||||
},
|
||||
{
|
||||
"name": "slim/slim",
|
||||
"version": "3.12.1",
|
||||
"version": "3.12.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/slimphp/Slim.git",
|
||||
"reference": "eaee12ef8d0750db62b8c548016d82fb33addb6b"
|
||||
"reference": "200c6143f15baa477601879b64ab2326847aac0b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/slimphp/Slim/zipball/eaee12ef8d0750db62b8c548016d82fb33addb6b",
|
||||
"reference": "eaee12ef8d0750db62b8c548016d82fb33addb6b",
|
||||
"url": "https://api.github.com/repos/slimphp/Slim/zipball/200c6143f15baa477601879b64ab2326847aac0b",
|
||||
"reference": "200c6143f15baa477601879b64ab2326847aac0b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"container-interop/container-interop": "^1.2",
|
||||
"ext-json": "*",
|
||||
"ext-libxml": "*",
|
||||
"ext-simplexml": "*",
|
||||
"nikic/fast-route": "^1.0",
|
||||
"php": ">=5.5.0",
|
||||
"pimple/pimple": "^3.0",
|
||||
@@ -1363,25 +1428,25 @@
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Rob Allen",
|
||||
"email": "rob@akrabat.com",
|
||||
"homepage": "http://akrabat.com"
|
||||
},
|
||||
{
|
||||
"name": "Josh Lockhart",
|
||||
"email": "hello@joshlockhart.com",
|
||||
"homepage": "https://joshlockhart.com"
|
||||
},
|
||||
{
|
||||
"name": "Gabriel Manricks",
|
||||
"email": "gmanricks@me.com",
|
||||
"homepage": "http://gabrielmanricks.com"
|
||||
},
|
||||
{
|
||||
"name": "Andrew Smith",
|
||||
"email": "a.smith@silentworks.co.uk",
|
||||
"homepage": "http://silentworks.co.uk"
|
||||
},
|
||||
{
|
||||
"name": "Rob Allen",
|
||||
"email": "rob@akrabat.com",
|
||||
"homepage": "http://akrabat.com"
|
||||
},
|
||||
{
|
||||
"name": "Gabriel Manricks",
|
||||
"email": "gmanricks@me.com",
|
||||
"homepage": "http://gabrielmanricks.com"
|
||||
}
|
||||
],
|
||||
"description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs",
|
||||
@@ -1392,91 +1457,20 @@
|
||||
"micro",
|
||||
"router"
|
||||
],
|
||||
"time": "2019-04-16T16:47:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/contracts",
|
||||
"version": "v1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/contracts.git",
|
||||
"reference": "d3636025e8253c6144358ec0a62773cae588395b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/contracts/zipball/d3636025e8253c6144358ec0a62773cae588395b",
|
||||
"reference": "d3636025e8253c6144358ec0a62773cae588395b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/cache": "^1.0",
|
||||
"psr/container": "^1.0",
|
||||
"symfony/polyfill-intl-idn": "^1.10"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/cache": "When using the Cache contracts",
|
||||
"psr/container": "When using the Service contracts",
|
||||
"symfony/cache-contracts-implementation": "",
|
||||
"symfony/event-dispatcher-implementation": "",
|
||||
"symfony/http-client-contracts-implementation": "",
|
||||
"symfony/service-contracts-implementation": "",
|
||||
"symfony/translation-contracts-implementation": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Contracts\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"**/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "A set of abstractions extracted out of the Symfony components",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"abstractions",
|
||||
"contracts",
|
||||
"decoupling",
|
||||
"interfaces",
|
||||
"interoperability",
|
||||
"standards"
|
||||
],
|
||||
"time": "2019-04-27T14:29:50+00:00"
|
||||
"time": "2019-08-20T18:46:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/debug",
|
||||
"version": "v4.2.8",
|
||||
"version": "v4.3.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/debug.git",
|
||||
"reference": "2d279b6bb1d582dd5740d4d3251ae8c18812ed37"
|
||||
"reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/debug/zipball/2d279b6bb1d582dd5740d4d3251ae8c18812ed37",
|
||||
"reference": "2d279b6bb1d582dd5740d4d3251ae8c18812ed37",
|
||||
"url": "https://api.github.com/repos/symfony/debug/zipball/afcdea44a2e399c1e4b52246ec8d54c715393ced",
|
||||
"reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1492,7 +1486,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.2-dev"
|
||||
"dev-master": "4.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1519,20 +1513,20 @@
|
||||
],
|
||||
"description": "Symfony Debug Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2019-04-11T11:27:41+00:00"
|
||||
"time": "2019-08-20T14:27:59+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v4.2.8",
|
||||
"version": "v4.3.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/finder.git",
|
||||
"reference": "e45135658bd6c14b61850bf131c4f09a55133f69"
|
||||
"reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/e45135658bd6c14b61850bf131c4f09a55133f69",
|
||||
"reference": "e45135658bd6c14b61850bf131c4f09a55133f69",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
|
||||
"reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1541,7 +1535,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.2-dev"
|
||||
"dev-master": "4.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1568,20 +1562,20 @@
|
||||
],
|
||||
"description": "Symfony Finder Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2019-04-06T13:51:08+00:00"
|
||||
"time": "2019-08-14T12:26:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.11.0",
|
||||
"version": "v1.12.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
|
||||
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
|
||||
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
|
||||
"reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1593,7 +1587,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.11-dev"
|
||||
"dev-master": "1.12-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1627,26 +1621,26 @@
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2019-02-06T07:57:58+00:00"
|
||||
"time": "2019-08-06T08:03:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation",
|
||||
"version": "v4.2.8",
|
||||
"version": "v4.3.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/translation.git",
|
||||
"reference": "181a426dd129cb496f12d7e7555f6d0b37a7615b"
|
||||
"reference": "28498169dd334095fa981827992f3a24d50fed0f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/translation/zipball/181a426dd129cb496f12d7e7555f6d0b37a7615b",
|
||||
"reference": "181a426dd129cb496f12d7e7555f6d0b37a7615b",
|
||||
"url": "https://api.github.com/repos/symfony/translation/zipball/28498169dd334095fa981827992f3a24d50fed0f",
|
||||
"reference": "28498169dd334095fa981827992f3a24d50fed0f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1.3",
|
||||
"symfony/contracts": "^1.0.2",
|
||||
"symfony/polyfill-mbstring": "~1.0"
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/translation-contracts": "^1.1.6"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/config": "<3.4",
|
||||
@@ -1654,7 +1648,7 @@
|
||||
"symfony/yaml": "<3.4"
|
||||
},
|
||||
"provide": {
|
||||
"symfony/translation-contracts-implementation": "1.0"
|
||||
"symfony/translation-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/log": "~1.0",
|
||||
@@ -1664,6 +1658,7 @@
|
||||
"symfony/finder": "~2.8|~3.0|~4.0",
|
||||
"symfony/http-kernel": "~3.4|~4.0",
|
||||
"symfony/intl": "~3.4|~4.0",
|
||||
"symfony/service-contracts": "^1.1.2",
|
||||
"symfony/var-dumper": "~3.4|~4.0",
|
||||
"symfony/yaml": "~3.4|~4.0"
|
||||
},
|
||||
@@ -1675,7 +1670,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.2-dev"
|
||||
"dev-master": "4.3-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@@ -1702,7 +1697,64 @@
|
||||
],
|
||||
"description": "Symfony Translation Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2019-05-01T12:55:36+00:00"
|
||||
"time": "2019-08-26T08:55:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation-contracts",
|
||||
"version": "v1.1.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/translation-contracts.git",
|
||||
"reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/325b17c24f3ee23cbecfa63ba809c6d89b5fa04a",
|
||||
"reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1.3"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/translation-implementation": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Contracts\\Translation\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Generic abstractions related to translation",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"abstractions",
|
||||
"contracts",
|
||||
"decoupling",
|
||||
"interfaces",
|
||||
"interoperability",
|
||||
"standards"
|
||||
],
|
||||
"time": "2019-08-02T12:15:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tuupola/callable-handler",
|
||||
@@ -1759,16 +1811,16 @@
|
||||
},
|
||||
{
|
||||
"name": "tuupola/cors-middleware",
|
||||
"version": "0.9.4",
|
||||
"version": "1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tuupola/cors-middleware.git",
|
||||
"reference": "1b6d9927d7a643659cd0eb7ebeb8675b26df0a05"
|
||||
"reference": "f8bee9b47729a36892c680c457ff824c04cfae70"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/tuupola/cors-middleware/zipball/1b6d9927d7a643659cd0eb7ebeb8675b26df0a05",
|
||||
"reference": "1b6d9927d7a643659cd0eb7ebeb8675b26df0a05",
|
||||
"url": "https://api.github.com/repos/tuupola/cors-middleware/zipball/f8bee9b47729a36892c680c457ff824c04cfae70",
|
||||
"reference": "f8bee9b47729a36892c680c457ff824c04cfae70",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1776,8 +1828,8 @@
|
||||
"php": "^7.1",
|
||||
"psr/http-message": "^1.0.1",
|
||||
"psr/http-server-middleware": "^1.0",
|
||||
"tuupola/callable-handler": "^0.3.0|^0.4.0|^1.0",
|
||||
"tuupola/http-factory": "^0.4.0|^1.0"
|
||||
"tuupola/callable-handler": "^1.0",
|
||||
"tuupola/http-factory": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"codedungeon/phpunit-result-printer": "^0.23.2",
|
||||
@@ -1814,20 +1866,20 @@
|
||||
"psr-15",
|
||||
"psr-7"
|
||||
],
|
||||
"time": "2019-03-24T08:53:13+00:00"
|
||||
"time": "2019-06-04T06:54:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "tuupola/http-factory",
|
||||
"version": "1.0.3",
|
||||
"version": "1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tuupola/http-factory.git",
|
||||
"reference": "1fd4eaafe3a6e0c26d288e3b3e17d777ea1991bf"
|
||||
"reference": "5fbde4c65a10d09a85652684a6e569542265a749"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/tuupola/http-factory/zipball/1fd4eaafe3a6e0c26d288e3b3e17d777ea1991bf",
|
||||
"reference": "1fd4eaafe3a6e0c26d288e3b3e17d777ea1991bf",
|
||||
"url": "https://api.github.com/repos/tuupola/http-factory/zipball/5fbde4c65a10d09a85652684a6e569542265a749",
|
||||
"reference": "5fbde4c65a10d09a85652684a6e569542265a749",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -1871,7 +1923,7 @@
|
||||
"psr-17",
|
||||
"psr-7"
|
||||
],
|
||||
"time": "2019-01-11T15:13:01+00:00"
|
||||
"time": "2019-08-07T07:10:58+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
|
@@ -14,13 +14,22 @@
|
||||
# The settings defined here below
|
||||
|
||||
|
||||
# Either "production", "dev" or "prerelease"
|
||||
# Either "production", "dev", "demo" or "prerelease"
|
||||
# ("demo" and "prerelease" is reserved to be used only on the offical demo instances)
|
||||
Setting('MODE', 'production');
|
||||
|
||||
# Either "en" or "de" or the filename (without extension) of
|
||||
# one of the other available localization files in the "/localization" directory
|
||||
# Either "en" or "de" or the directory name of
|
||||
# one of the other available localization folders in the "/localization" directory
|
||||
Setting('CULTURE', 'en');
|
||||
|
||||
# This is used to define the first day of a week for calendar views in the frontend,
|
||||
# leave empty to use the locale default
|
||||
# Needs to be a number where Sunday = 0, Monday = 1 and so forth
|
||||
Setting('CALENDAR_FIRST_DAY_OF_WEEK', '');
|
||||
|
||||
# If calendars should show week numbers
|
||||
Setting('CALENDAR_SHOW_WEEK_OF_YEAR', true);
|
||||
|
||||
# To keep it simple: grocy does not handle any currency conversions,
|
||||
# this here is used to format all money values,
|
||||
# so doesn't matter really matter, but should be the
|
||||
@@ -37,11 +46,20 @@ Setting('BASE_URL', '/');
|
||||
# see /data/plugins/DemoBarcodeLookupPlugin.php for an example implementation
|
||||
Setting('STOCK_BARCODE_LOOKUP_PLUGIN', 'DemoBarcodeLookupPlugin');
|
||||
|
||||
# If, however, your webserver does not support URL rewriting,
|
||||
# set this to true
|
||||
# If, however, your webserver does not support URL rewriting, set this to true
|
||||
Setting('DISABLE_URL_REWRITING', false);
|
||||
|
||||
# Specify an custom homepage if desired - by default the homepage will be set to the stock overview,
|
||||
# this needs to be one of the following values:
|
||||
# stock, shoppinglist, recipes, chores, tasks, batteries, equipment, calendar, mealplan
|
||||
Setting('ENTRY_PAGE', 'stock');
|
||||
|
||||
# Set this to true if you want to disable authentication / the login screen,
|
||||
# places where user context is needed will then use the default (first existing) user
|
||||
Setting('DISABLE_AUTH', false);
|
||||
|
||||
# Set this to true if you want to disable the ability to scan a barcode via the device camera (Browser API)
|
||||
Setting('DISABLE_BROWSER_BARCODE_CAMERA_SCANNING', false);
|
||||
|
||||
|
||||
# Default user settings
|
||||
@@ -86,8 +104,6 @@ DefaultUserSetting('show_clock_in_header', false);
|
||||
DefaultUserSetting('shopping_list_to_stock_workflow_auto_submit_when_prefilled', false);
|
||||
|
||||
|
||||
|
||||
|
||||
# Feature flags
|
||||
# grocy was initially about "stock management for your household", many other things
|
||||
# came and still come by, because they are useful - here you can disable the parts
|
||||
@@ -101,3 +117,15 @@ Setting('FEATURE_FLAG_TASKS', true);
|
||||
Setting('FEATURE_FLAG_BATTERIES', true);
|
||||
Setting('FEATURE_FLAG_EQUIPMENT', true);
|
||||
Setting('FEATURE_FLAG_CALENDAR', true);
|
||||
|
||||
|
||||
# Sub feature flags
|
||||
Setting('FEATURE_FLAG_STOCK_PRICE_TRACKING', true);
|
||||
Setting('FEATURE_FLAG_STOCK_LOCATION_TRACKING', true);
|
||||
Setting('FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING', true);
|
||||
Setting('FEATURE_FLAG_STOCK_PRODUCT_OPENED_TRACKING', true);
|
||||
Setting('FEATURE_FLAG_CHORES_ASSIGNMENTS', true);
|
||||
|
||||
|
||||
# Feature settings
|
||||
Setting('FEATURE_SETTING_STOCK_COUNT_OPENED_PRODUCTS_AGAINST_MINIMUM_STOCK_AMOUNT', true); // When set to false, opened products will not be considered for minimum stock amounts
|
||||
|
@@ -16,21 +16,10 @@ class BaseController
|
||||
$localizationService = new LocalizationService(GROCY_CULTURE);
|
||||
$this->LocalizationService = $localizationService;
|
||||
|
||||
if (GROCY_MODE === 'prerelease')
|
||||
{
|
||||
$commitHash = trim(exec('git log --pretty="%h" -n1 HEAD'));
|
||||
$commitDate = trim(exec('git log --date=iso --pretty="%cd" -n1 HEAD'));
|
||||
|
||||
$container->view->set('version', "pre-release-$commitHash");
|
||||
$container->view->set('releaseDate', \substr($commitDate, 0, 19));
|
||||
}
|
||||
else
|
||||
{
|
||||
$applicationService = new ApplicationService();
|
||||
$versionInfo = $applicationService->GetInstalledVersion();
|
||||
$container->view->set('version', $versionInfo->Version);
|
||||
$container->view->set('releaseDate', $versionInfo->ReleaseDate);
|
||||
}
|
||||
$applicationService = new ApplicationService();
|
||||
$versionInfo = $applicationService->GetInstalledVersion();
|
||||
$container->view->set('version', $versionInfo->Version);
|
||||
$container->view->set('releaseDate', $versionInfo->ReleaseDate);
|
||||
|
||||
$container->view->set('__t', function(string $text, ...$placeholderValues) use($localizationService)
|
||||
{
|
||||
@@ -64,6 +53,8 @@ class BaseController
|
||||
}
|
||||
$container->view->set('featureFlags', $constants);
|
||||
|
||||
$container->view->set('userentitiesForSidebar', $this->Database->userentities()->where('show_in_sidebar_menu = 1')->orderBy('name'));
|
||||
|
||||
try
|
||||
{
|
||||
$usersService = new UsersService();
|
||||
|
@@ -26,12 +26,20 @@ class CalendarApiController extends BaseApiController
|
||||
$events = $this->CalendarService->GetEvents();
|
||||
foreach($events as $event)
|
||||
{
|
||||
$date = new \DateTime($event['start']);
|
||||
$date->setTimezone(date_default_timezone_get());
|
||||
|
||||
if ($event['date_format'] === 'date')
|
||||
{
|
||||
$date->setTime(23, 59, 59);
|
||||
}
|
||||
|
||||
$vEvent = new \Eluceo\iCal\Component\Event();
|
||||
$vEvent->setDtStart(new \DateTime($event['start']))
|
||||
->setDtEnd(new \DateTime($event['start']))
|
||||
$vEvent->setDtStart($date)
|
||||
->setDtEnd($date)
|
||||
->setSummary($event['title'])
|
||||
->setNoTime($event['date_format'] === 'date')
|
||||
->setUseUtc(false);
|
||||
->setUseTimezone(true);
|
||||
|
||||
$vCalendar->addComponent($vEvent);
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ class ChoresApiController extends BaseApiController
|
||||
try
|
||||
{
|
||||
$trackedTime = date('Y-m-d H:i:s');
|
||||
if (array_key_exists('tracked_time', $requestBody) && IsIsoDateTime($requestBody['tracked_time']))
|
||||
if (array_key_exists('tracked_time', $requestBody) && (IsIsoDateTime($requestBody['tracked_time']) || IsIsoDate($requestBody['tracked_time'])))
|
||||
{
|
||||
$trackedTime = $requestBody['tracked_time'];
|
||||
}
|
||||
@@ -70,4 +70,37 @@ class ChoresApiController extends BaseApiController
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function CalculateNextExecutionAssignments(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
|
||||
$choreId = null;
|
||||
if (array_key_exists('chore_id', $requestBody) && !empty($requestBody['chore_id']) && is_numeric($requestBody['chore_id']))
|
||||
{
|
||||
$choreId = intval($requestBody['chore_id']);
|
||||
}
|
||||
|
||||
if ($choreId === null)
|
||||
{
|
||||
$chores = $this->Database->chores();
|
||||
foreach ($chores as $chore)
|
||||
{
|
||||
$this->ChoresService->CalculateNextExecutionAssignment($chore->id);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->ChoresService->CalculateNextExecutionAssignment($choreId);
|
||||
}
|
||||
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,8 @@ class ChoresController extends BaseController
|
||||
'currentChores' => $this->ChoresService->GetCurrent(),
|
||||
'nextXDays' => $nextXDays,
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores'),
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('chores')
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('chores'),
|
||||
'users' => $usersService->GetUsersAsDto()
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -60,21 +61,30 @@ class ChoresController extends BaseController
|
||||
|
||||
public function ChoreEditForm(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$usersService = new UsersService();
|
||||
$users = $usersService->GetUsersAsDto();
|
||||
|
||||
if ($args['choreId'] == 'new')
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'choreform', [
|
||||
'periodTypes' => GetClassConstants('\Grocy\Services\ChoresService'),
|
||||
'periodTypes' => GetClassConstants('\Grocy\Services\ChoresService', 'CHORE_PERIOD_TYPE_'),
|
||||
'mode' => 'create',
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores')
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores'),
|
||||
'assignmentTypes' => GetClassConstants('\Grocy\Services\ChoresService', 'CHORE_ASSIGNMENT_TYPE_'),
|
||||
'users' => $users,
|
||||
'products' => $this->Database->products()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'choreform', [
|
||||
'chore' => $this->Database->chores($args['choreId']),
|
||||
'periodTypes' => GetClassConstants('\Grocy\Services\ChoresService'),
|
||||
'periodTypes' => GetClassConstants('\Grocy\Services\ChoresService', 'CHORE_PERIOD_TYPE_'),
|
||||
'mode' => 'edit',
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores')
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores'),
|
||||
'assignmentTypes' => GetClassConstants('\Grocy\Services\ChoresService', 'CHORE_ASSIGNMENT_TYPE_'),
|
||||
'users' => $users,
|
||||
'products' => $this->Database->products()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@@ -51,11 +51,37 @@ class FilesApiController extends BaseApiController
|
||||
throw new \Exception('Invalid filename');
|
||||
}
|
||||
|
||||
$filePath = $this->FilesService->GetFilePath($args['group'], $fileName);
|
||||
$forceServeAs = null;
|
||||
if (isset($request->getQueryParams()['force_serve_as']) && !empty($request->getQueryParams()['force_serve_as']))
|
||||
{
|
||||
$forceServeAs = $request->getQueryParams()['force_serve_as'];
|
||||
}
|
||||
|
||||
if ($forceServeAs == FilesService::FILE_SERVE_TYPE_PICTURE)
|
||||
{
|
||||
$bestFitHeight = null;
|
||||
if (isset($request->getQueryParams()['best_fit_height']) && !empty($request->getQueryParams()['best_fit_height']) && is_numeric($request->getQueryParams()['best_fit_height']))
|
||||
{
|
||||
$bestFitHeight = $request->getQueryParams()['best_fit_height'];
|
||||
}
|
||||
|
||||
$bestFitWidth = null;
|
||||
if (isset($request->getQueryParams()['best_fit_width']) && !empty($request->getQueryParams()['best_fit_width']) && is_numeric($request->getQueryParams()['best_fit_width']))
|
||||
{
|
||||
$bestFitWidth = $request->getQueryParams()['best_fit_width'];
|
||||
}
|
||||
|
||||
$filePath = $this->FilesService->DownscaleImage($args['group'], $fileName, $bestFitHeight, $bestFitWidth);
|
||||
}
|
||||
else
|
||||
{
|
||||
$filePath = $this->FilesService->GetFilePath($args['group'], $fileName);
|
||||
}
|
||||
|
||||
if (file_exists($filePath))
|
||||
{
|
||||
$response->write(file_get_contents($filePath));
|
||||
$response = $response->withHeader('Cache-Control', 'max-age=2592000');
|
||||
$response = $response->withHeader('Content-Type', mime_content_type($filePath));
|
||||
return $response->withHeader('Content-Disposition', 'inline; filename="' . $fileName . '"');
|
||||
}
|
||||
|
@@ -113,6 +113,25 @@ class GenericEntityApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function SearchObjects(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
if ($this->IsValidEntity($args['entity']) && !$this->IsEntityWithPreventedListing($args['entity']))
|
||||
{
|
||||
try
|
||||
{
|
||||
return $this->ApiResponse($this->Database->{$args['entity']}()->where('name LIKE ?', '%' . $args['searchString'] . '%'));
|
||||
}
|
||||
catch (\PDOException $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, 'The given entity has no field "name"');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->GenericErrorResponse($response, 'Entity does not exist or is not exposed');
|
||||
}
|
||||
}
|
||||
|
||||
public function GetUserfields(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
|
@@ -22,6 +22,25 @@ class GenericEntityController extends BaseController
|
||||
]);
|
||||
}
|
||||
|
||||
public function UserentitiesList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'userentities', [
|
||||
'userentities' => $this->Database->userentities()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
|
||||
public function UserobjectsList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$userentity = $this->Database->userentities()->where('name = :1', $args['userentityName'])->fetch();
|
||||
|
||||
return $this->AppContainer->view->render($response, 'userobjects', [
|
||||
'userentity' => $userentity,
|
||||
'userobjects' => $this->Database->userobjects()->where('userentity_id = :1', $userentity->id),
|
||||
'userfields' => $this->UserfieldsService->GetFields('userentity-' . $args['userentityName']),
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('userentity-' . $args['userentityName'])
|
||||
]);
|
||||
}
|
||||
|
||||
public function UserfieldEditForm(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
if ($args['userfieldId'] == 'new')
|
||||
@@ -42,4 +61,44 @@ class GenericEntityController extends BaseController
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function UserentityEditForm(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
if ($args['userentityId'] == 'new')
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'userentityform', [
|
||||
'mode' => 'create'
|
||||
]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'userentityform', [
|
||||
'mode' => 'edit',
|
||||
'userentity' => $this->Database->userentities($args['userentityId'])
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function UserobjectEditForm(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$userentity = $this->Database->userentities()->where('name = :1', $args['userentityName'])->fetch();
|
||||
|
||||
if ($args['userobjectId'] == 'new')
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'userobjectform', [
|
||||
'userentity' => $userentity,
|
||||
'mode' => 'create',
|
||||
'userfields' => $this->UserfieldsService->GetFields('userentity-' . $args['userentityName'])
|
||||
]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'userobjectform', [
|
||||
'userentity' => $userentity,
|
||||
'mode' => 'edit',
|
||||
'userobject' => $this->Database->userobjects($args['userobjectId']),
|
||||
'userfields' => $this->UserfieldsService->GetFields('userentity-' . $args['userentityName'])
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,43 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Grocy\Controllers;
|
||||
|
||||
use \Grocy\Services\RecipesService;
|
||||
|
||||
class RecipesApiController extends BaseApiController
|
||||
{
|
||||
public function __construct(\Slim\Container $container)
|
||||
{
|
||||
parent::__construct($container);
|
||||
$this->RecipesService = new RecipesService();
|
||||
}
|
||||
|
||||
protected $RecipesService;
|
||||
|
||||
public function AddNotFulfilledProductsToShoppingList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
$excludedProductIds = null;
|
||||
|
||||
if ($requestBody !== null && array_key_exists('excludedProductIds', $requestBody))
|
||||
{
|
||||
$excludedProductIds = $requestBody['excludedProductIds'];
|
||||
}
|
||||
|
||||
$this->RecipesService->AddNotFulfilledProductsToShoppingList($args['recipeId'], $excludedProductIds);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
|
||||
public function ConsumeRecipe(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->RecipesService->ConsumeRecipe($args['recipeId']);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
namespace Grocy\Controllers;
|
||||
|
||||
use \Grocy\Services\RecipesService;
|
||||
|
||||
class RecipesApiController extends BaseApiController
|
||||
{
|
||||
public function __construct(\Slim\Container $container)
|
||||
{
|
||||
parent::__construct($container);
|
||||
$this->RecipesService = new RecipesService();
|
||||
}
|
||||
|
||||
protected $RecipesService;
|
||||
|
||||
public function AddNotFulfilledProductsToShoppingList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
$excludedProductIds = null;
|
||||
|
||||
if ($requestBody !== null && array_key_exists('excludedProductIds', $requestBody))
|
||||
{
|
||||
$excludedProductIds = $requestBody['excludedProductIds'];
|
||||
}
|
||||
|
||||
$this->RecipesService->AddNotFulfilledProductsToShoppingList($args['recipeId'], $excludedProductIds);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
|
||||
public function ConsumeRecipe(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->RecipesService->ConsumeRecipe($args['recipeId']);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function GetRecipeFulfillment(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(!isset($args['recipeId']))
|
||||
{
|
||||
return $this->ApiResponse($this->RecipesService->GetRecipesResolved());
|
||||
}
|
||||
|
||||
$recipeResolved = FindObjectInArrayByPropertyValue($this->RecipesService->GetRecipesResolved(), 'recipe_id', $args['recipeId']);
|
||||
if(!$recipeResolved)
|
||||
{
|
||||
throw new \Exception('Recipe does not exist');
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->ApiResponse($recipeResolved);
|
||||
}
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -63,13 +63,15 @@ class RecipesController extends BaseController
|
||||
'selectedRecipe' => $selectedRecipe,
|
||||
'selectedRecipePositionsResolved' => $selectedRecipePositionsResolved,
|
||||
'products' => $this->Database->products(),
|
||||
'quantityunits' => $this->Database->quantity_units(),
|
||||
'quantityUnits' => $this->Database->quantity_units(),
|
||||
'selectedRecipeSubRecipes' => $selectedRecipeSubRecipes,
|
||||
'selectedRecipeSubRecipesPositions' => $selectedRecipeSubRecipesPositions,
|
||||
'includedRecipeIdsAbsolute' => $includedRecipeIdsAbsolute,
|
||||
'selectedRecipeTotalCosts' => FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $selectedRecipe->id)->costs,
|
||||
'selectedRecipeTotalCalories' => FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $selectedRecipe->id)->calories,
|
||||
'userfields' => $this->UserfieldsService->GetFields('recipes'),
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('recipes')
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('recipes'),
|
||||
'quantityUnitConversionsResolved' => $this->Database->quantity_unit_conversions_resolved()
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -96,7 +98,8 @@ class RecipesController extends BaseController
|
||||
'recipesResolved' => $this->RecipesService->GetRecipesResolved(),
|
||||
'recipes' => $this->Database->recipes()->where('type', RecipesService::RECIPE_TYPE_NORMAL)->orderBy('name'),
|
||||
'recipeNestings' => $this->Database->recipes_nestings()->where('recipe_id', $recipeId),
|
||||
'userfields' => $this->UserfieldsService->GetFields('recipes')
|
||||
'userfields' => $this->UserfieldsService->GetFields('recipes'),
|
||||
'quantityUnitConversionsResolved' => $this->Database->quantity_unit_conversions_resolved()
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -107,8 +110,10 @@ class RecipesController extends BaseController
|
||||
return $this->AppContainer->view->render($response, 'recipeposform', [
|
||||
'mode' => 'create',
|
||||
'recipe' => $this->Database->recipes($args['recipeId']),
|
||||
'recipePos' => new \stdClass(),
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name')
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'quantityUnitConversionsResolved' => $this->Database->quantity_unit_conversions_resolved()
|
||||
]);
|
||||
}
|
||||
else
|
||||
@@ -118,7 +123,8 @@ class RecipesController extends BaseController
|
||||
'recipe' => $this->Database->recipes($args['recipeId']),
|
||||
'recipePos' => $this->Database->recipes_pos($args['recipePosId']),
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name')
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'quantityUnitConversionsResolved' => $this->Database->quantity_unit_conversions_resolved()
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -130,12 +136,19 @@ class RecipesController extends BaseController
|
||||
$events = array();
|
||||
foreach($this->Database->meal_plan() as $mealPlanEntry)
|
||||
{
|
||||
$recipe = FindObjectInArrayByPropertyValue($recipes, 'id', $mealPlanEntry['recipe_id']);
|
||||
$title = '';
|
||||
if ($recipe !== null)
|
||||
{
|
||||
$title = $recipe->name;
|
||||
}
|
||||
|
||||
$events[] = array(
|
||||
'id' => $mealPlanEntry['id'],
|
||||
'title' => FindObjectInArrayByPropertyValue($recipes, 'id', $mealPlanEntry['recipe_id'])->name,
|
||||
'title' => $title,
|
||||
'start' => $mealPlanEntry['day'],
|
||||
'date_format' => 'date',
|
||||
'recipe' => json_encode(FindObjectInArrayByPropertyValue($recipes, 'id', $mealPlanEntry['recipe_id'])),
|
||||
'recipe' => json_encode($recipe),
|
||||
'mealPlanEntry' => json_encode($mealPlanEntry)
|
||||
);
|
||||
}
|
||||
|
@@ -67,7 +67,7 @@ class StockApiController extends BaseApiController
|
||||
throw new \Exception('An amount is required');
|
||||
}
|
||||
|
||||
$bestBeforeDate = date('Y-m-d');
|
||||
$bestBeforeDate = null;
|
||||
if (array_key_exists('best_before_date', $requestBody) && IsIsoDate($requestBody['best_before_date']))
|
||||
{
|
||||
$bestBeforeDate = $requestBody['best_before_date'];
|
||||
@@ -100,6 +100,19 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function AddProductByBarcode(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$args['productId'] = $this->StockService->GetProductIdFromBarcode($args['barcode']);
|
||||
return $this->AddProduct($request, $response, $args);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function ConsumeProduct(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
@@ -149,6 +162,19 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function ConsumeProductByBarcode(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$args['productId'] = $this->StockService->GetProductIdFromBarcode($args['barcode']);
|
||||
return $this->ConsumeProduct($request, $response, $args);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function InventoryProduct(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
@@ -165,7 +191,7 @@ class StockApiController extends BaseApiController
|
||||
throw new \Exception('An new amount is required');
|
||||
}
|
||||
|
||||
$bestBeforeDate = date('Y-m-d');
|
||||
$bestBeforeDate = null;
|
||||
if (array_key_exists('best_before_date', $requestBody) && IsIsoDate($requestBody['best_before_date']))
|
||||
{
|
||||
$bestBeforeDate = $requestBody['best_before_date'];
|
||||
@@ -192,6 +218,19 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function InventoryProductByBarcode(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$args['productId'] = $this->StockService->GetProductIdFromBarcode($args['barcode']);
|
||||
return $this->InventoryProduct($request, $response, $args);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function OpenProduct(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
@@ -223,6 +262,19 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function OpenProductByBarcode(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$args['productId'] = $this->StockService->GetProductIdFromBarcode($args['barcode']);
|
||||
return $this->OpenProduct($request, $response, $args);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function CurrentStock(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->ApiResponse($this->StockService->GetCurrentStock());
|
||||
@@ -288,6 +340,84 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function AddProductToShoppingList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
|
||||
$listId = 1;
|
||||
$amount = 1;
|
||||
$productId = null;
|
||||
$note = null;
|
||||
if (array_key_exists('list_id', $requestBody) && !empty($requestBody['list_id']) && is_numeric($requestBody['list_id']))
|
||||
{
|
||||
$listId = intval($requestBody['list_id']);
|
||||
}
|
||||
if (array_key_exists('product_amount', $requestBody) && !empty($requestBody['product_amount']) && is_numeric($requestBody['product_amount']))
|
||||
{
|
||||
$amount = intval($requestBody['product_amount']);
|
||||
}
|
||||
if (array_key_exists('product_id', $requestBody) && !empty($requestBody['product_id']) && is_numeric($requestBody['product_id']))
|
||||
{
|
||||
$productId = intval($requestBody['product_id']);
|
||||
}
|
||||
if (array_key_exists('note', $requestBody) && !empty($requestBody['note']))
|
||||
{
|
||||
$note = $requestBody['note'];
|
||||
}
|
||||
|
||||
if ($productId == null)
|
||||
{
|
||||
throw new \Exception("No product id was supplied");
|
||||
}
|
||||
|
||||
$this->StockService->AddProductToShoppingList($productId, $amount, $note, $listId);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function RemoveProductFromShoppingList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
|
||||
$listId = 1;
|
||||
$amount = 1;
|
||||
$productId = null;
|
||||
if (array_key_exists('list_id', $requestBody) && !empty($requestBody['list_id']) && is_numeric($requestBody['list_id']))
|
||||
{
|
||||
$listId = intval($requestBody['list_id']);
|
||||
}
|
||||
if (array_key_exists('product_amount', $requestBody) && !empty($requestBody['product_amount']) && is_numeric($requestBody['product_amount']))
|
||||
{
|
||||
$amount = intval($requestBody['product_amount']);
|
||||
}
|
||||
if (array_key_exists('product_id', $requestBody) && !empty($requestBody['product_id']) && is_numeric($requestBody['product_id']))
|
||||
{
|
||||
$productId = intval($requestBody['product_id']);
|
||||
}
|
||||
|
||||
if ($productId == null)
|
||||
{
|
||||
throw new \Exception("No product id was supplied");
|
||||
}
|
||||
|
||||
$this->StockService->RemoveProductFromShoppingList($productId, $amount, $listId);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function ExternalBarcodeLookup(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
@@ -323,4 +453,23 @@ class StockApiController extends BaseApiController
|
||||
{
|
||||
return $this->ApiResponse($this->StockService->GetProductStockEntries($args['productId']));
|
||||
}
|
||||
|
||||
public function StockBooking(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$stockLogRow = $this->Database->stock_log($args['bookingId']);
|
||||
|
||||
if ($stockLogRow === null)
|
||||
{
|
||||
throw new \Exception('Stock booking does not exist');
|
||||
}
|
||||
|
||||
return $this->ApiResponse($stockLogRow);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,7 @@ class StockController extends BaseController
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'locations' => $this->Database->locations()->orderBy('name'),
|
||||
'currentStock' => $this->StockService->GetCurrentStock(),
|
||||
'currentStock' => $this->StockService->GetCurrentStock(true),
|
||||
'currentStockLocations' => $this->StockService->GetCurrentStockLocations(),
|
||||
'missingProducts' => $this->StockService->GetMissingProducts(),
|
||||
'nextXDays' => $nextXDays,
|
||||
@@ -77,7 +77,9 @@ class StockController extends BaseController
|
||||
'missingProducts' => $this->StockService->GetMissingProducts(),
|
||||
'productGroups' => $this->Database->product_groups()->orderBy('name'),
|
||||
'shoppingLists' => $this->Database->shopping_lists()->orderBy('name'),
|
||||
'selectedShoppingListId' => $listId
|
||||
'selectedShoppingListId' => $listId,
|
||||
'userfields' => $this->UserfieldsService->GetFields('products'),
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('products')
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -139,18 +141,25 @@ class StockController extends BaseController
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'productgroups' => $this->Database->product_groups()->orderBy('name'),
|
||||
'userfields' => $this->UserfieldsService->GetFields('products'),
|
||||
'products' => $this->Database->products()->where('parent_product_id IS NULL')->orderBy('name'),
|
||||
'isSubProductOfOthers' => false,
|
||||
'mode' => 'create'
|
||||
]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$product = $this->Database->products($args['productId']);
|
||||
|
||||
return $this->AppContainer->view->render($response, 'productform', [
|
||||
'product' => $this->Database->products($args['productId']),
|
||||
'product' => $product,
|
||||
'locations' => $this->Database->locations()->orderBy('name'),
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'productgroups' => $this->Database->product_groups()->orderBy('name'),
|
||||
'userfields' => $this->UserfieldsService->GetFields('products'),
|
||||
'mode' => 'edit'
|
||||
'products' => $this->Database->products()->where('id != :1 AND parent_product_id IS NULL', $product->id)->orderBy('name'),
|
||||
'isSubProductOfOthers' => $this->Database->products()->where('parent_product_id = :1', $product->id)->count() !== 0,
|
||||
'mode' => 'edit',
|
||||
'quConversions' => $this->Database->quantity_unit_conversions()
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -206,12 +215,16 @@ class StockController extends BaseController
|
||||
}
|
||||
else
|
||||
{
|
||||
$quantityUnit = $this->Database->quantity_units($args['quantityunitId']);
|
||||
|
||||
return $this->AppContainer->view->render($response, 'quantityunitform', [
|
||||
'quantityunit' => $this->Database->quantity_units($args['quantityunitId']),
|
||||
'quantityUnit' => $quantityUnit,
|
||||
'mode' => 'edit',
|
||||
'userfields' => $this->UserfieldsService->GetFields('quantity_units'),
|
||||
'pluralCount' => $this->LocalizationService->GetPluralCount(),
|
||||
'pluralRule' => $this->LocalizationService->GetPluralDefinition()
|
||||
'pluralRule' => $this->LocalizationService->GetPluralDefinition(),
|
||||
'defaultQuConversions' => $this->Database->quantity_unit_conversions()->where('from_qu_id = :1 AND product_id IS NULL', $quantityUnit->id),
|
||||
'quantityUnits' => $this->Database->quantity_units()
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -222,6 +235,7 @@ class StockController extends BaseController
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'shoppinglistitemform', [
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'shoppingLists' => $this->Database->shopping_lists()->orderBy('name'),
|
||||
'mode' => 'create'
|
||||
]);
|
||||
}
|
||||
@@ -230,6 +244,7 @@ class StockController extends BaseController
|
||||
return $this->AppContainer->view->render($response, 'shoppinglistitemform', [
|
||||
'listItem' => $this->Database->shopping_list($args['itemId']),
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'shoppingLists' => $this->Database->shopping_lists()->orderBy('name'),
|
||||
'mode' => 'edit'
|
||||
]);
|
||||
}
|
||||
@@ -260,4 +275,58 @@ class StockController extends BaseController
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
|
||||
public function LocationContentSheet(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'locationcontentsheet', [
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'locations' => $this->Database->locations()->orderBy('name'),
|
||||
'currentStockLocationContent' => $this->StockService->GetCurrentStockLocationContent()
|
||||
]);
|
||||
}
|
||||
|
||||
public function QuantityUnitConversionEditForm(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$product = null;
|
||||
if (isset($request->getQueryParams()['product']))
|
||||
{
|
||||
$product = $this->Database->products($request->getQueryParams()['product']);
|
||||
}
|
||||
|
||||
$defaultQuUnit = null;
|
||||
if (isset($request->getQueryParams()['qu-unit']))
|
||||
{
|
||||
$defaultQuUnit = $this->Database->quantity_units($request->getQueryParams()['qu-unit']);
|
||||
}
|
||||
|
||||
if ($args['quConversionId'] == 'new')
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'quantityunitconversionform', [
|
||||
'mode' => 'create',
|
||||
'userfields' => $this->UserfieldsService->GetFields('quantity_unit_conversions'),
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'product' => $product,
|
||||
'defaultQuUnit' => $defaultQuUnit
|
||||
]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'quantityunitconversionform', [
|
||||
'quConversion' => $this->Database->quantity_unit_conversions($args['quConversionId']),
|
||||
'mode' => 'edit',
|
||||
'userfields' => $this->UserfieldsService->GetFields('quantity_unit_conversions'),
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'product' => $product,
|
||||
'defaultQuUnit' => $defaultQuUnit
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function QuantityUnitPluralFormTesting(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'quantityunitpluraltesting', [
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@@ -8,14 +8,14 @@ use \Grocy\Services\DemoDataGeneratorService;
|
||||
|
||||
class SystemController extends BaseController
|
||||
{
|
||||
protected $ApplicationService;
|
||||
|
||||
public function __construct(\Slim\Container $container)
|
||||
{
|
||||
parent::__construct($container);
|
||||
$this->ApplicationService = new ApplicationService();
|
||||
}
|
||||
|
||||
protected $ApplicationService;
|
||||
|
||||
public function Root(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
// Schema migration is done here
|
||||
@@ -31,6 +31,69 @@ class SystemController extends BaseController
|
||||
return $response->withRedirect($this->AppContainer->UrlManager->ConstructUrl($this->GetEntryPageRelative()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the entry page of the application based on the value of the entry page setting.
|
||||
*
|
||||
* We fallback to the about page when no entry page is specified or
|
||||
* when the specified entry page has been disabled.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function GetEntryPageRelative()
|
||||
{
|
||||
if (defined('GROCY_ENTRY_PAGE')) {
|
||||
$entryPage = constant('GROCY_ENTRY_PAGE');
|
||||
} else {
|
||||
$entryPage = 'stock';
|
||||
}
|
||||
|
||||
// Stock
|
||||
if ($entryPage === 'stock' && constant('GROCY_FEATURE_FLAG_STOCK')) {
|
||||
return '/stockoverview';
|
||||
}
|
||||
|
||||
// Shoppinglist
|
||||
if ($entryPage === 'shoppinglist' && constant('GROCY_FEATURE_FLAG_SHOPPINGLIST')) {
|
||||
return '/shoppinglist';
|
||||
}
|
||||
|
||||
// Recipes
|
||||
if ($entryPage === 'recipes' && constant('GROCY_FEATURE_FLAG_RECIPES')) {
|
||||
return '/recipes';
|
||||
}
|
||||
|
||||
// Chores
|
||||
if ($entryPage === 'chores' && constant('GROCY_FEATURE_FLAG_CHORES')) {
|
||||
return '/choresoverview';
|
||||
}
|
||||
|
||||
// Tasks
|
||||
if ($entryPage === 'tasks' && constant('GROCY_FEATURE_FLAG_TASKS')) {
|
||||
return '/tasks';
|
||||
}
|
||||
|
||||
// Batteries
|
||||
if ($entryPage === 'batteries' && constant('GROCY_FEATURE_FLAG_BATTERIES')) {
|
||||
return '/batteriesoverview';
|
||||
}
|
||||
|
||||
if ($entryPage === 'equipment' && constant('GROCY_FEATURE_FLAG_EQUIPMENT')) {
|
||||
return '/equipment';
|
||||
}
|
||||
|
||||
// Calendar
|
||||
if ($entryPage === 'calendar' && constant('GROCY_FEATURE_FLAG_CALENDAR')) {
|
||||
return '/calendar';
|
||||
}
|
||||
|
||||
// Meal Plan
|
||||
if ($entryPage === 'mealplan' && constant('GROCY_FEATURE_FLAG_RECIPES')) {
|
||||
return '/mealplan';
|
||||
}
|
||||
|
||||
return '/about';
|
||||
}
|
||||
|
||||
public function About(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'about', [
|
||||
@@ -39,23 +102,8 @@ class SystemController extends BaseController
|
||||
]);
|
||||
}
|
||||
|
||||
private function GetEntryPageRelative()
|
||||
public function BarcodeScannerTesting(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$entryPage = '/stockoverview';
|
||||
|
||||
if (!GROCY_FEATURE_FLAG_STOCK)
|
||||
{
|
||||
$entryPage = '/choresoverview';
|
||||
}
|
||||
if (!GROCY_FEATURE_FLAG_CHORES)
|
||||
{
|
||||
$entryPage = '/batteriesoverview';
|
||||
}
|
||||
if (!GROCY_FEATURE_FLAG_BATTERIES)
|
||||
{
|
||||
$entryPage = '/equipment';
|
||||
}
|
||||
|
||||
return $entryPage;
|
||||
return $this->AppContainer->view->render($response, 'barcodescannertesting');
|
||||
}
|
||||
}
|
||||
|
@@ -39,4 +39,17 @@ class TasksApiController extends BaseApiController
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function UndoTask(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->TasksService->UndoTask($args['taskId']);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -88,10 +88,20 @@ function SumArrayValue($array, $propertyName)
|
||||
return $sum;
|
||||
}
|
||||
|
||||
function GetClassConstants($className)
|
||||
function GetClassConstants($className, $prefix = null)
|
||||
{
|
||||
$r = new ReflectionClass($className);
|
||||
return $r->getConstants();
|
||||
$constants = $r->getConstants();
|
||||
|
||||
if ($prefix === null)
|
||||
{
|
||||
return $constants;
|
||||
}
|
||||
else
|
||||
{
|
||||
$matchingKeys = preg_grep('!^' . $prefix . '!', array_keys($constants));
|
||||
return array_intersect_key($constants, array_flip($matchingKeys));
|
||||
}
|
||||
}
|
||||
|
||||
function RandomString($length, $allowedChars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
|
||||
@@ -140,7 +150,18 @@ function Setting(string $name, $value)
|
||||
}
|
||||
elseif (getenv('GROCY_' . $name) !== false) // An environment variable with the same name and prefix GROCY_ overwrites the given setting
|
||||
{
|
||||
define('GROCY_' . $name, getenv('GROCY_' . $name));
|
||||
if (strtolower(getenv('GROCY_' . $name)) === "true")
|
||||
{
|
||||
define('GROCY_' . $name, true);
|
||||
}
|
||||
elseif (strtolower(getenv('GROCY_' . $name)) === "false")
|
||||
{
|
||||
define('GROCY_' . $name, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
define('GROCY_' . $name, getenv('GROCY_' . $name));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -163,7 +184,7 @@ function DefaultUserSetting(string $name, $value)
|
||||
function GetUserDisplayName($user)
|
||||
{
|
||||
$displayName = '';
|
||||
|
||||
|
||||
if (empty($user->first_name) && !empty($user->last_name))
|
||||
{
|
||||
$displayName = $user->last_name;
|
||||
@@ -193,3 +214,25 @@ function IsValidFileName($fileName)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function IsJsonString($text)
|
||||
{
|
||||
json_decode($text);
|
||||
return (json_last_error() == JSON_ERROR_NONE);
|
||||
}
|
||||
|
||||
function string_starts_with($haystack, $needle)
|
||||
{
|
||||
return (substr($haystack, 0, strlen($needle)) === $needle);
|
||||
}
|
||||
|
||||
function string_ends_with($haystack, $needle)
|
||||
{
|
||||
$length = strlen($needle);
|
||||
if ($length == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return (substr($haystack, -$length) === $needle);
|
||||
}
|
||||
|
25
localization/chore_assignment_types.pot
Normal file
25
localization/chore_assignment_types.pot
Normal file
@@ -0,0 +1,25 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: Translation migration from old PHP array files\n"
|
||||
"Language-Team: http://www.transifex.com/grocy/grocy/language/en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"Language: en\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 ""
|
@@ -29,3 +29,6 @@ msgstr ""
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr ""
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr ""
|
||||
|
29
localization/da/chore_assignment_types.po
Normal file
29
localization/da/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||
#
|
||||
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: Troels Siggaard <troels@siggaard.com>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "ingen-tildeling"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "hvem-mindst-gjorde-først"
|
||||
|
||||
msgid "random"
|
||||
msgstr "tilfældig"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "i-alfabetisk-rækkefølge"
|
@@ -1,5 +1,5 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"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>, 2019\n"
|
||||
"Last-Translator: Troels Siggaard <troels@siggaard.com>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,16 +17,16 @@ msgstr ""
|
||||
"X-Domain: grocy/chore_types\n"
|
||||
|
||||
msgid "manually"
|
||||
msgstr "Manuelt"
|
||||
msgstr "manuelt"
|
||||
|
||||
msgid "dynamic-regular"
|
||||
msgstr ""
|
||||
msgstr "gentagende-dynamisk"
|
||||
|
||||
msgid "daily"
|
||||
msgstr ""
|
||||
msgstr "daglig"
|
||||
|
||||
msgid "weekly"
|
||||
msgstr ""
|
||||
msgstr "ugentlig"
|
||||
|
||||
msgid "monthly"
|
||||
msgstr ""
|
||||
msgstr "månedlig"
|
@@ -1,3 +1,5 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -5,6 +7,7 @@ msgstr ""
|
||||
"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>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -14,19 +17,39 @@ msgstr ""
|
||||
"X-Domain: grocy/component_translations\n"
|
||||
|
||||
msgid "timeago_locale"
|
||||
msgstr ""
|
||||
msgstr "da"
|
||||
|
||||
msgid "timeago_nan"
|
||||
msgstr ""
|
||||
msgstr "for NaN år"
|
||||
|
||||
msgid "moment_locale"
|
||||
msgstr ""
|
||||
msgstr "da"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\n"
|
||||
"\"sProcessing\": \"Henter...\",\n"
|
||||
"\"sLengthMenu\": \"Vis _MENU_ linjer\",\n"
|
||||
"\"sZeroRecords\": \"Ingen linjer matcher søgningen\",\n"
|
||||
"\"sInfo\": \"Viser _START_ til _END_ af _TOTAL_ linjer\",\n"
|
||||
"\"sInfoEmpty\": \"Viser 0 til 0 af 0 linjer\",\n"
|
||||
"\"sInfoFiltered\": \"(filtreret fra _MAX_ linjer)\",\n"
|
||||
"\"sInfoPostFix\": \"\",\n"
|
||||
"\"sSearch\": \"Søg:\",\n"
|
||||
"\"sUrl\": \"\",\n"
|
||||
"\"oPaginate\": {\n"
|
||||
"\"sFirst\": \"Første\",\n"
|
||||
"\"sPrevious\": \"Forrige\",\n"
|
||||
"\"sNext\": \"Næste\",\n"
|
||||
"\"sLast\": \"Sidste\"\n"
|
||||
"}\n"
|
||||
"}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr ""
|
||||
msgstr "da-DK"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr ""
|
||||
msgstr "da"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "da_DK"
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# dark159123 <r.j.hansen@protonmail.com>, 2019
|
||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +8,7 @@ msgstr ""
|
||||
"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: dark159123 <r.j.hansen@protonmail.com>, 2019\n"
|
||||
"Last-Translator: Troels Siggaard <troels@siggaard.com>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -20,13 +21,13 @@ msgid "Cookies"
|
||||
msgstr "Småkager"
|
||||
|
||||
msgid "Chocolate"
|
||||
msgstr "chokolade"
|
||||
msgstr "Chokolade"
|
||||
|
||||
msgid "Pantry"
|
||||
msgstr "Spisekammer"
|
||||
|
||||
msgid "Candy cupboard"
|
||||
msgstr "Slik skuffe"
|
||||
msgstr "Slikskuffe"
|
||||
|
||||
msgid "Tinned food cupboard"
|
||||
msgstr "Dåsemadsskab"
|
||||
@@ -36,36 +37,36 @@ msgstr "Køleskab"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Styk"
|
||||
msgstr[1] "Stykker"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pakke"
|
||||
msgstr[1] "Pakker"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Glas"
|
||||
msgstr[1] "Glas"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Dåse"
|
||||
msgstr[1] "Dåser"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Dåse"
|
||||
msgstr[1] "Dåser"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Klase"
|
||||
msgstr[1] "Klaser"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Vingummi bamser"
|
||||
msgstr "Vingummibamser"
|
||||
|
||||
msgid "Crisps"
|
||||
msgstr "Chips"
|
||||
@@ -113,22 +114,22 @@ msgid "Warranty ends"
|
||||
msgstr "Reklamationsret udløber"
|
||||
|
||||
msgid "TV remote control"
|
||||
msgstr "Fjernbetjening"
|
||||
msgstr "Fjernbetjening til TV'et"
|
||||
|
||||
msgid "Alarm clock"
|
||||
msgstr "Vægge ur"
|
||||
msgstr "Væggeur"
|
||||
|
||||
msgid "Heat remote control"
|
||||
msgstr "Varmefjernbetjening"
|
||||
msgstr "Fjernbetjening til varme"
|
||||
|
||||
msgid "Lawn mowed in the garden"
|
||||
msgstr "Græs slået"
|
||||
msgstr "Græsset blev slået i haven"
|
||||
|
||||
msgid "Some good snacks"
|
||||
msgstr "Nogle gode snacks"
|
||||
|
||||
msgid "Pizza dough"
|
||||
msgstr "Pizza dej"
|
||||
msgstr "Pizzadej"
|
||||
|
||||
msgid "Sieved tomatoes"
|
||||
msgstr "Sigtede tomater"
|
||||
@@ -149,7 +150,7 @@ msgid "Spaghetti bolognese"
|
||||
msgstr "Spaghetti bolognese"
|
||||
|
||||
msgid "Sandwiches"
|
||||
msgstr "Sandwiches"
|
||||
msgstr "Sandwich"
|
||||
|
||||
msgid "English"
|
||||
msgstr "Engelsk"
|
||||
@@ -158,21 +159,21 @@ msgid "German"
|
||||
msgstr "Tysk"
|
||||
|
||||
msgid "Italian"
|
||||
msgstr "Italiænsk"
|
||||
msgstr "Italiensk"
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr "Demo i et andet sprog"
|
||||
msgstr "Demo på et andet sprog"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr "Dette er indholdet af opskrift ingrediensens notefelt"
|
||||
msgstr "Dette er indholdet af opskrift-ingrediensens notefeltet"
|
||||
|
||||
msgid "Demo User"
|
||||
msgstr "Demo Bruger"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gram"
|
||||
msgstr[1] "Gram"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Mel"
|
||||
@@ -187,25 +188,25 @@ msgid "Home"
|
||||
msgstr "Hjem"
|
||||
|
||||
msgid "Life"
|
||||
msgstr "Liv"
|
||||
msgstr "Livet"
|
||||
|
||||
msgid "Projects"
|
||||
msgstr "Projekter"
|
||||
|
||||
msgid "Repair the garage door"
|
||||
msgstr "Reparér garagedøren"
|
||||
msgstr "Reparer garagedøren"
|
||||
|
||||
msgid "Fork and improve grocy"
|
||||
msgstr "Fork og forbedre grocy"
|
||||
|
||||
msgid "Find a solution for what to do when I forget the door keys"
|
||||
msgstr "Find en løsning for når jeg glemmer husnøglen"
|
||||
msgstr "Find en løsning på hvad jeg gør, når jeg glemmer nøglen til huset"
|
||||
|
||||
msgid "Sweets"
|
||||
msgstr "Slik"
|
||||
|
||||
msgid "Bakery products"
|
||||
msgstr "Bageriprodukter"
|
||||
msgstr "Bagværk"
|
||||
|
||||
msgid "Tinned food"
|
||||
msgstr "Dåsemad"
|
||||
@@ -217,13 +218,13 @@ msgid "Vegetables/Fruits"
|
||||
msgstr "Frugt og grønt"
|
||||
|
||||
msgid "Refrigerated products"
|
||||
msgstr "Nedkølede produkter"
|
||||
msgstr "Køleskabsprodukter"
|
||||
|
||||
msgid "Coffee machine"
|
||||
msgstr "Kaffemaskine"
|
||||
|
||||
msgid "Dishwasher"
|
||||
msgstr "Opvasker"
|
||||
msgstr "Opvaskemaskine"
|
||||
|
||||
msgid "Liter"
|
||||
msgstr "Liter"
|
||||
@@ -259,25 +260,51 @@ msgid "French"
|
||||
msgstr "Fransk"
|
||||
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
msgstr "Tyrkisk"
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
msgstr "Spansk"
|
||||
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
msgstr "Russisk"
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr ""
|
||||
msgstr "Det der sker hver den 5. i måneden"
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr ""
|
||||
msgstr "Det der sker dagligt"
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr ""
|
||||
msgstr "Det der sker på mandage og onsdage"
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
msgstr "Svensk"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polsk"
|
||||
|
||||
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 ""
|
||||
|
@@ -1,5 +1,5 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"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>, 2019\n"
|
||||
"Last-Translator: Troels Siggaard <troels@siggaard.com>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,13 +17,13 @@ msgstr ""
|
||||
"X-Domain: grocy/stock_transaction_types\n"
|
||||
|
||||
msgid "purchase"
|
||||
msgstr "Køb"
|
||||
msgstr "køb"
|
||||
|
||||
msgid "consume"
|
||||
msgstr "Brug"
|
||||
msgstr "forbrug"
|
||||
|
||||
msgid "inventory-correction"
|
||||
msgstr "Beholdningsrettelse"
|
||||
msgstr "beholdningsrettelse"
|
||||
|
||||
msgid "product-opened"
|
||||
msgstr "Produkt åbnet"
|
||||
msgstr "produkt-åbnet"
|
||||
|
29
localization/de/chore_assignment_types.po
Normal file
29
localization/de/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
#
|
||||
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: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Language-Team: German (https://www.transifex.com/grocy/teams/93189/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "Niemandem zuweisen"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "Wer es am seltensten gemacht hat zuerst"
|
||||
|
||||
msgid "random"
|
||||
msgstr "Zufällig"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "In alphabetischer Reihenfolge"
|
@@ -52,3 +52,6 @@ msgstr "de-DE"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "de"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "de_DE"
|
||||
|
@@ -160,9 +160,6 @@ msgstr "Deutsch"
|
||||
msgid "Italian"
|
||||
msgstr "Italienisch"
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr "Demo in anderer Sprache"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr "Dies ist der Inhalt der Notiz der Zutat"
|
||||
|
||||
@@ -281,3 +278,53 @@ msgstr "Schwedisch"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polnisch"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr "Milchschokolade"
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr "Zartbitterschokolade"
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] "Scheibe"
|
||||
msgstr[1] "Scheiben"
|
||||
|
||||
msgid "Example userentity"
|
||||
msgstr "Beispiel Benutzerentität"
|
||||
|
||||
msgid "This is an example user entity..."
|
||||
msgstr "Dies ist eine Beispiel-Benutzerentität"
|
||||
|
||||
msgid "Custom field"
|
||||
msgstr "Benutzerdefiniertes Feld"
|
||||
|
||||
msgid "Example field value..."
|
||||
msgstr "Beispiel Feldwert..."
|
||||
|
||||
msgid "Waffle rolls"
|
||||
msgstr "Waffelröllchen"
|
||||
|
||||
msgid "Danish"
|
||||
msgstr "Dänisch"
|
||||
|
||||
msgid "Dutch"
|
||||
msgstr "Niederländisch"
|
||||
|
||||
msgid "Norwegian"
|
||||
msgstr "Norwegisch"
|
||||
|
||||
msgid "Demo"
|
||||
msgstr "Demo"
|
||||
|
||||
msgid "Stable version"
|
||||
msgstr "Stabile Version"
|
||||
|
||||
msgid "Preview version"
|
||||
msgstr "Vorschauversion"
|
||||
|
||||
msgid "current release"
|
||||
msgstr "aktuelles Release"
|
||||
|
||||
msgid "not yet released"
|
||||
msgstr "noch nicht freigegeben"
|
||||
|
@@ -129,7 +129,7 @@ msgid "Last purchased"
|
||||
msgstr "Zuletzt gekauft"
|
||||
|
||||
msgid "Last used"
|
||||
msgstr "Zuletzt benutzt"
|
||||
msgstr "Zuletzt verbraucht"
|
||||
|
||||
msgid "Spoiled"
|
||||
msgstr "Verdorben"
|
||||
@@ -361,8 +361,8 @@ msgid "This means %s will be removed from stock"
|
||||
msgstr "Das bedeutet %s wird aus dem Bestand entfernt"
|
||||
|
||||
msgid ""
|
||||
"This means it is estimated that a new execution of this chore is tracked %s "
|
||||
"days after the last was tracked"
|
||||
"This means the next execution of this chore is scheduled %s days after the "
|
||||
"last execution"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit %s Tage nach der "
|
||||
"letzten Ausführung geplant wird"
|
||||
@@ -670,7 +670,7 @@ msgstr ""
|
||||
|
||||
msgid "Removed all ingredients of recipe \"%s\" from stock"
|
||||
msgstr ""
|
||||
"Alle Zutaten, die vom Rezept \"%s\" benötigt werden, wurdem aus dem Bestand "
|
||||
"Alle Zutaten, die vom Rezept \"%s\" benötigt werden, wurden aus dem Bestand "
|
||||
"entfernt"
|
||||
|
||||
msgid "Consume all ingredients needed by this recipe"
|
||||
@@ -847,16 +847,16 @@ msgid "Instruction manual"
|
||||
msgstr "Bedienungsanleitung"
|
||||
|
||||
msgid "The selected equipment has no instruction manual"
|
||||
msgstr "Das ausgewählte Gerät hat keine Bedienungsanleitung"
|
||||
msgstr "Die ausgewählte Ausstattung hat keine Bedienungsanleitung"
|
||||
|
||||
msgid "Notes"
|
||||
msgstr "Notizen"
|
||||
|
||||
msgid "Edit equipment"
|
||||
msgstr "Geräte bearbeiten"
|
||||
msgstr "Ausstattung bearbeiten"
|
||||
|
||||
msgid "Create equipment"
|
||||
msgstr "Geräte erstellen"
|
||||
msgstr "Ausstattung erstellen"
|
||||
|
||||
msgid ""
|
||||
"If you don't select a file, the current instruction manual will not be "
|
||||
@@ -871,7 +871,8 @@ msgstr "Keine Bedienungsanleitung vorhanden"
|
||||
msgid ""
|
||||
"The current instruction manual will be deleted when you save the equipment"
|
||||
msgstr ""
|
||||
"Die aktuelle Bedienungsanleitung wird beim Speichern des Geräts gelöscht"
|
||||
"Die aktuelle Bedienungsanleitung wird beim Speichern der Ausstattung "
|
||||
"gelöscht"
|
||||
|
||||
msgid "No picture available"
|
||||
msgstr "Kein Bild vorhanden"
|
||||
@@ -1374,3 +1375,332 @@ msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr ""
|
||||
"Die Buchung hat nachfolgende abhängige Buchungen, rückgängig machen nicht "
|
||||
"möglich"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr "pro Portion"
|
||||
|
||||
msgid "Never"
|
||||
msgstr "Nie"
|
||||
|
||||
msgid "Today"
|
||||
msgstr "Heute"
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr "Verbrauche %1$s %2$s als verdorben"
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
"Nicht alle Zutaten, die vom Rezept \"%s\" benötigt werden, sind vorrätig, es"
|
||||
" wurde nichts aus dem Bestand entfernt"
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr "Aufgabe \"%s\" rückgängig machen"
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr "Fälligkeit hinausschieben"
|
||||
|
||||
msgid ""
|
||||
"When enabled the chore can never be overdue, the due date will shift forward"
|
||||
" each day when due"
|
||||
msgstr ""
|
||||
"Wenn gewählt, kann die Hausarbeit nie überfällig werden - das "
|
||||
"Fälligkeitsdatum wird jeden Tag ab Fälligkeit einen Tag vorgeschoben"
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr "Standort-Inhaltsblatt"
|
||||
|
||||
msgid "Print"
|
||||
msgstr "Drucken"
|
||||
|
||||
msgid "all locations"
|
||||
msgstr "alle Standorte"
|
||||
|
||||
msgid ""
|
||||
"Here you can print a page per location with the current stock, maybe to hang"
|
||||
" it there and note the consumed things on it."
|
||||
msgstr ""
|
||||
"Hier kannst du eine Seite pro Standort mit dem aktuellen Bestand drucken, "
|
||||
"gedacht um diese am entsprechenden Platz aufzuhängen, damit die verbauchten "
|
||||
"Dinge darauf vermerkt werden können."
|
||||
|
||||
msgid "this location"
|
||||
msgstr "diesen Standort"
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr "Verbrauchte Menge"
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr "Druckzeitpunkt"
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr "Ausstattung \"%s\" wirklich löschen?"
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr "Übergeordnetes Produkt"
|
||||
|
||||
msgid ""
|
||||
"Not possible because this product is already used as a parent product in "
|
||||
"another product"
|
||||
msgstr ""
|
||||
"Nicht möglich, da dieses Produkt bereits als übergeordnetes Produkt eines "
|
||||
"anderen Produkts verwendet wird"
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr "Standardumrechnungen"
|
||||
|
||||
msgid "Factor"
|
||||
msgstr "Faktor"
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr "1 %s ist identisch mit..."
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr "ME-Umrechnung erstellen"
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr "Standard für ME"
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr "ME von"
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr "ME nach"
|
||||
|
||||
msgid ""
|
||||
"This cannot be lower than %1$s and must be a valid number with max. %2$s "
|
||||
"decimal places"
|
||||
msgstr ""
|
||||
"Diese darf nicht niedriger sein als %1$s und muss eine gültige Zahl mit max."
|
||||
" %2$s Nachkommastellen sein"
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr "Dies darf nicht gleich sein wie %s"
|
||||
|
||||
msgid "This means 1 %1$s is the same as %2$s %3$s"
|
||||
msgstr "Das bedeutet 1 %1$s entsprechen %2$s %3$s"
|
||||
|
||||
msgid "QU conversions"
|
||||
msgstr "ME-Umrechnungen"
|
||||
|
||||
msgid "Product overrides"
|
||||
msgstr "Produktübersteuerung"
|
||||
|
||||
msgid "Override for product"
|
||||
msgstr "Übersteuerung für Produkt"
|
||||
|
||||
msgid "This equals %1$s %2$s in stock"
|
||||
msgstr "Dies entspricht %1$s %2$s im Bestand"
|
||||
|
||||
msgid "Edit QU conversion"
|
||||
msgstr "ME-Umrechnung bearbeiten"
|
||||
|
||||
msgid "An assignment type is required"
|
||||
msgstr "Ein Zuweisungstyp ist erforderlich"
|
||||
|
||||
msgid "Assignment type"
|
||||
msgstr "Zuweisungstyp"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit 1 Tage nach der "
|
||||
"letzten Ausführung geplant wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution, but only for the weekdays selected below"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit 1 Tage nach der "
|
||||
"letzten Ausführung geplant wird, aber nur für unten ausgewählten Wochentage"
|
||||
|
||||
msgid "This means the next execution of this chore is not scheduled"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit nicht geplant wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled on the below "
|
||||
"selected day of each month"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit jeden Monat an dem"
|
||||
" unten ausgewählt Tag geplant wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will not be assigned to anyone"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass die nächste Ausführung der Hausarbeit niemandem "
|
||||
"zugewiesen wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the one who "
|
||||
"executed it least"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass die nächste Ausführung der Hausarbeit demjenigen "
|
||||
"zugewiesen wird, der diese am wenigsten häufig ausgeführt hat"
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned randomly"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass die nächste Ausführung der Hausarbeit zufällig jemanden "
|
||||
"zugewiesen wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the next one"
|
||||
" in alphabetical order"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass die nächste Ausführung der Hausarbeit dem nächsten in "
|
||||
"alphabetischer Reihenfolge zugewiesen wird"
|
||||
|
||||
msgid "Assign to"
|
||||
msgstr "Zuweisen an"
|
||||
|
||||
msgid "This assignment type requires that at least one is assigned"
|
||||
msgstr ""
|
||||
"Diese Zuordnungsart setzt voraus, dass mindestens eine Person zugeordnet ist"
|
||||
|
||||
msgid "%s chore is assigned to me"
|
||||
msgid_plural "%s chores are assigned to me"
|
||||
msgstr[0] "%s ist mir zugewiesen"
|
||||
msgstr[1] "%s Hausarbeiten sind mir zugewiesen"
|
||||
|
||||
msgid "Assigned to me"
|
||||
msgstr "Mir zugewiesen"
|
||||
|
||||
msgid "assigned to %s"
|
||||
msgstr "zugewiesen an %s"
|
||||
|
||||
msgid "Filter by assignment"
|
||||
msgstr "Nach Zuweisung filtern"
|
||||
|
||||
msgid "Consume product on chore execution"
|
||||
msgstr "Ein Produkt bei Hausarbeit-Ausführung verbrauchen"
|
||||
|
||||
msgid "Are you sure to delete user field \"%s\"?"
|
||||
msgstr "Benutzerfeld \"%s\" wirklich löschen?"
|
||||
|
||||
msgid "Userentities"
|
||||
msgstr "Benutzerentitäten"
|
||||
|
||||
msgid "Create userentity"
|
||||
msgstr "Benutzerentität erstellen"
|
||||
|
||||
msgid "Show in sidebar menu"
|
||||
msgstr "Im Seitenleisten-Menü anzeigen"
|
||||
|
||||
msgid "Edit userentity"
|
||||
msgstr "Benutzerentität bearbeiten"
|
||||
|
||||
msgid "Edit %s"
|
||||
msgstr "%s bearbeiten"
|
||||
|
||||
msgid "Create %s"
|
||||
msgstr "%s erstellen"
|
||||
|
||||
msgid "Are you sure to delete this userobject?"
|
||||
msgstr "Dieses Benutzerobject wirklich löschen?"
|
||||
|
||||
msgid "Icon CSS class"
|
||||
msgstr "Icon CSS-Klasse"
|
||||
|
||||
msgid "For example"
|
||||
msgstr "Zum Beispiel"
|
||||
|
||||
msgid "Configure fields"
|
||||
msgstr "Felder konfigurieren"
|
||||
|
||||
msgid "Quantity unit plural form testing"
|
||||
msgstr "ME Pluralformen testen"
|
||||
|
||||
msgid "Result"
|
||||
msgstr "Ergebnis"
|
||||
|
||||
msgid "Test plural forms"
|
||||
msgstr "Pluralformen testen"
|
||||
|
||||
msgid "Scan a barcode"
|
||||
msgstr "Scanne einen Barcode"
|
||||
|
||||
msgid "Error while initializing the barcode scanning library"
|
||||
msgstr "Fehler beim Initialisieren der Barcode-Scan-Komponenten"
|
||||
|
||||
msgid ""
|
||||
"The resulting price of this ingredient will be multiplied by this factor"
|
||||
msgstr ""
|
||||
"Der resultierende Preis dieser Zutat wird mit diesem Faktor multipliziert"
|
||||
|
||||
msgid "Price factor"
|
||||
msgstr "Preisfaktor"
|
||||
|
||||
msgid "Do you find grocy useful?"
|
||||
msgstr "Findest du grocy nützlich?"
|
||||
|
||||
msgid "Say thanks"
|
||||
msgstr "Sag Danke"
|
||||
|
||||
msgid "Search for recipes containing this product"
|
||||
msgstr "Suche nach Rezepten, die dieses Produkt enthalten"
|
||||
|
||||
msgid "Add to shopping list"
|
||||
msgstr "Zum Einkaufszettel hinzufügen"
|
||||
|
||||
msgid "Added %1$s of %2$s to the shopping list \"%3$s\""
|
||||
msgstr "%1$s %2$s dem Einkauszettel \"%3$s\" hinzugefügt"
|
||||
|
||||
msgid "Output"
|
||||
msgstr "Ausgabe"
|
||||
|
||||
msgid "Energy (kcal)"
|
||||
msgstr "Energie (kcal)"
|
||||
|
||||
msgid "Per stock quantity unit"
|
||||
msgstr "Pro Bestandsmengeneinheit"
|
||||
|
||||
msgid "Barcode scanner testing"
|
||||
msgstr "Barcodescanner testen"
|
||||
|
||||
msgid "Expected barcode"
|
||||
msgstr "Erwarteter Barcode"
|
||||
|
||||
msgid "Scan field"
|
||||
msgstr "Scanfeld"
|
||||
|
||||
msgid "Scanned barcodes"
|
||||
msgstr "Gescannte Barcodes"
|
||||
|
||||
msgid "Hit"
|
||||
msgstr "Erfolgreich"
|
||||
|
||||
msgid "Miss"
|
||||
msgstr "Fehler"
|
||||
|
||||
msgid "Display recipe"
|
||||
msgstr "Rezept anzeigen"
|
||||
|
||||
msgid "Accumulate sub products min. stock amount"
|
||||
msgstr "Mindestbestände von untergeordneten Produkten aufsummieren"
|
||||
|
||||
msgid ""
|
||||
"If enabled, the min. stock amount of sub products will be accumulated into "
|
||||
"this product, means the sub product will never be \"missing\", only this "
|
||||
"product"
|
||||
msgstr ""
|
||||
"Wenn aktiviert, werden die Mindestbestände von untergeordneten Produkten "
|
||||
"aufsummiert, heißt das untergeordnete Produkt wird nie \"fehlen\", nur "
|
||||
"dieses"
|
||||
|
||||
msgid "Are you sure to remove this conversion?"
|
||||
msgstr "Diese Umrechnung wirklich löschen?"
|
||||
|
||||
msgid "Unit price"
|
||||
msgstr "Einzelpreis"
|
||||
|
||||
msgid "Total price"
|
||||
msgstr "Gesamtpreis"
|
||||
|
||||
msgid "in %s and based on the purchase quantity unit"
|
||||
msgstr "In %s und bezogen auf die Einkaufsmengeneinheit"
|
||||
|
||||
msgid "Unlimited"
|
||||
msgstr "Unbegrenzt"
|
||||
|
||||
msgid "Clear"
|
||||
msgstr "Löschen"
|
||||
|
@@ -38,4 +38,10 @@ msgid "checkbox"
|
||||
msgstr "Kontrollkästchen"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "Auswahlliste (feste Werte)"
|
||||
msgstr "Auswahlliste (feste Werte, einzelner Wert kann ausgewählt werden)"
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr "Auswahlliste (feste Werte, mehrere Werte können ausgewählt werden)"
|
||||
|
||||
msgid "link"
|
||||
msgstr "Link"
|
||||
|
@@ -156,9 +156,6 @@ msgstr ""
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr ""
|
||||
|
||||
@@ -277,3 +274,54 @@ 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 ""
|
||||
|
||||
|
25
localization/en/chore_assignment_types.po
Normal file
25
localization/en/chore_assignment_types.po
Normal file
@@ -0,0 +1,25 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: Translation migration from old PHP array files\n"
|
||||
"Language-Team: http://www.transifex.com/grocy/grocy/language/en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"Language: en\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "No assignment"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "Who least did first"
|
||||
|
||||
msgid "random"
|
||||
msgstr "Random"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "In alphabetical order"
|
@@ -1,14 +1,15 @@
|
||||
#
|
||||
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-01T17:59:17+00:00\n"
|
||||
"Last-Translator: Translation migration from old PHP array files\n"
|
||||
"Language-Team: http://www.transifex.com/grocy/grocy/language/en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"Language: en\n"
|
||||
"X-Domain: grocy/chore_types\n"
|
||||
|
@@ -29,3 +29,6 @@ msgstr "x"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "x"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "x"
|
||||
|
@@ -32,3 +32,12 @@ msgstr "Date & time"
|
||||
|
||||
msgid "checkbox"
|
||||
msgstr "Checkbox"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "Select list (a single item can be selected)"
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr "Select list (multiple items can be selected)"
|
||||
|
||||
msgid "link"
|
||||
msgstr "Link"
|
||||
|
26
localization/en_GB/chore_assignment_types.po
Normal file
26
localization/en_GB/chore_assignment_types.po
Normal file
@@ -0,0 +1,26 @@
|
||||
#
|
||||
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"
|
||||
"Language-Team: English (United Kingdom) (https://www.transifex.com/grocy/teams/93189/en_GB/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: en_GB\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 ""
|
@@ -17,19 +17,32 @@ msgstr ""
|
||||
"X-Domain: grocy/component_translations\n"
|
||||
|
||||
msgid "timeago_locale"
|
||||
msgstr ""
|
||||
msgstr "en"
|
||||
|
||||
msgid "timeago_nan"
|
||||
msgstr ""
|
||||
msgstr "NaN years ago"
|
||||
|
||||
msgid "moment_locale"
|
||||
msgstr "en-gb"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\"sEmptyTable\":\"No data available in table\",\"sInfo\":\"Showing _START_ "
|
||||
"to _END_ of _TOTAL_ entries\",\"sInfoEmpty\":\"Showing 0 to 0 of 0 "
|
||||
"entries\",\"sInfoFiltered\":\"(filtered from _MAX_ total "
|
||||
"entries)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Show"
|
||||
" _MENU_ "
|
||||
"entries\",\"sLoadingRecords\":\"Loading...\",\"sProcessing\":\"Processing...\",\"sSearch\":\"Search:\",\"sZeroRecords\":\"No"
|
||||
" matching records "
|
||||
"found\",\"oPaginate\":{\"sFirst\":\"First\",\"sLast\":\"Last\",\"sNext\":\"Next\",\"sPrevious\":\"Previous\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
" activate to sort column ascending\",\"sSortDescending\":\": activate to "
|
||||
"sort column descending\"}}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "en-gb"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "en-gb"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "x"
|
||||
|
@@ -157,9 +157,6 @@ msgstr ""
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr ""
|
||||
|
||||
@@ -278,3 +275,53 @@ 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 ""
|
||||
|
@@ -354,8 +354,8 @@ msgid "This means %s will be removed from stock"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means it is estimated that a new execution of this chore is tracked %s "
|
||||
"days after the last was tracked"
|
||||
"This means the next execution of this chore is scheduled %s days after the "
|
||||
"last execution"
|
||||
msgstr ""
|
||||
|
||||
msgid "Removed %1$s of %2$s from stock"
|
||||
@@ -1308,3 +1308,301 @@ msgstr ""
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr ""
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"When enabled the chore can never be overdue, the due date will shift forward"
|
||||
" each day when due"
|
||||
msgstr ""
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
msgid "all locations"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Here you can print a page per location with the current stock, maybe to hang"
|
||||
" it there and note the consumed things on it."
|
||||
msgstr ""
|
||||
|
||||
msgid "this location"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr ""
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Not possible because this product is already used as a parent product in "
|
||||
"another product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This cannot be lower than %1$s and must be a valid number with max. %2$s "
|
||||
"decimal places"
|
||||
msgstr ""
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means 1 %1$s is the same as %2$s %3$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "QU conversions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Product overrides"
|
||||
msgstr ""
|
||||
|
||||
msgid "Override for product"
|
||||
msgstr ""
|
||||
|
||||
msgid "This equals %1$s %2$s in stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit QU conversion"
|
||||
msgstr ""
|
||||
|
||||
msgid "An assignment type is required"
|
||||
msgstr ""
|
||||
|
||||
msgid "Assignment type"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution, but only for the weekdays selected below"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is not scheduled"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled on the below "
|
||||
"selected day of each month"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will not be assigned to anyone"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the one who "
|
||||
"executed it least"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned randomly"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the next one"
|
||||
" in alphabetical order"
|
||||
msgstr ""
|
||||
|
||||
msgid "Assign to"
|
||||
msgstr ""
|
||||
|
||||
msgid "This assignment type requires that at least one is assigned"
|
||||
msgstr ""
|
||||
|
||||
msgid "%s chore is assigned to me"
|
||||
msgid_plural "%s chores are assigned to me"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Assigned to me"
|
||||
msgstr ""
|
||||
|
||||
msgid "assigned to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter by assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume product on chore execution"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete user field \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Userentities"
|
||||
msgstr ""
|
||||
|
||||
msgid "Create userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show in sidebar menu"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Create %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete this userobject?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Icon CSS class"
|
||||
msgstr ""
|
||||
|
||||
msgid "For example"
|
||||
msgstr ""
|
||||
|
||||
msgid "Configure fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit plural form testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Result"
|
||||
msgstr ""
|
||||
|
||||
msgid "Test plural forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scan a barcode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error while initializing the barcode scanning library"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The resulting price of this ingredient will be multiplied by this factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Price factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do you find grocy useful?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Say thanks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Search for recipes containing this product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add to shopping list"
|
||||
msgstr ""
|
||||
|
||||
msgid "Added %1$s of %2$s to the shopping list \"%3$s\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Energy (kcal)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per stock quantity unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Barcode scanner testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Expected barcode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scan field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scanned barcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miss"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display recipe"
|
||||
msgstr ""
|
||||
|
||||
msgid "Accumulate sub products min. stock amount"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"If enabled, the min. stock amount of sub products will be accumulated into "
|
||||
"this product, means the sub product will never be \"missing\", only this "
|
||||
"product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to remove this conversion?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unit price"
|
||||
msgstr ""
|
||||
|
||||
msgid "Total price"
|
||||
msgstr ""
|
||||
|
||||
msgid "in %s and based on the purchase quantity unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unlimited"
|
||||
msgstr ""
|
||||
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
@@ -36,3 +36,9 @@ msgstr ""
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr ""
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr ""
|
||||
|
||||
msgid "link"
|
||||
msgstr ""
|
||||
|
29
localization/es/chore_assignment_types.po
Normal file
29
localization/es/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||
#
|
||||
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: Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019\n"
|
||||
"Language-Team: Spanish (https://www.transifex.com/grocy/teams/93189/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "sin-asignar"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "quien-menos-primero"
|
||||
|
||||
msgid "random"
|
||||
msgstr "al-azar"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "orden-alfabético"
|
@@ -43,3 +43,6 @@ msgstr "es-ES"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "es"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "es_ES"
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Ankue <ankue.spam@gmail.com>, 2019
|
||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
@@ -37,33 +38,33 @@ msgstr "Nevera"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pieza"
|
||||
msgstr[1] "Piezas"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Paquetes"
|
||||
msgstr[1] "Paquetes"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Vaso"
|
||||
msgstr[1] "Vasos"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Envases"
|
||||
msgstr[1] "Envases"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Lata"
|
||||
msgstr[1] "Latas"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Puñados"
|
||||
msgstr[1] "Puñados"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Ositos"
|
||||
@@ -172,8 +173,8 @@ msgstr "Usuario de demostración"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gramo"
|
||||
msgstr[1] "Gramos"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Harina"
|
||||
@@ -281,4 +282,36 @@ msgid "Swedish"
|
||||
msgstr "Sueco"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polaco"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr "Chocolate con leche"
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr "Chocolate negro"
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] "Lonchas"
|
||||
msgstr[1] "Lonchas"
|
||||
|
||||
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 ""
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +8,7 @@ msgstr ""
|
||||
"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: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Last-Translator: Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019\n"
|
||||
"Language-Team: Spanish (https://www.transifex.com/grocy/teams/93189/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -36,3 +37,12 @@ msgstr "Fecha y hora"
|
||||
|
||||
msgid "checkbox"
|
||||
msgstr "Casilla de verificación"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "lista-predefinida"
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr "casillas-predefinidas"
|
||||
|
||||
msgid "link"
|
||||
msgstr "enlace"
|
||||
|
29
localization/fr/chore_assignment_types.po
Normal file
29
localization/fr/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Mathieu Fortin <mathieugfortin@gmail.com>, 2019
|
||||
#
|
||||
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: Mathieu Fortin <mathieugfortin@gmail.com>, 2019\n"
|
||||
"Language-Team: French (https://www.transifex.com/grocy/teams/93189/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "pas-assigné"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "moins-fait-fait-le-suivant"
|
||||
|
||||
msgid "random"
|
||||
msgstr "aléatoire"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "ordre-alphabétique"
|
@@ -27,23 +27,22 @@ msgstr "fr"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\"sProcessing\":\"Traitement en "
|
||||
"cours...\",\"sSearch\":\"Rechercher :\",\"sLengthMenu\":\"Afficher "
|
||||
"_MENU_ éléments\",\"sInfo\":\"Affichage de "
|
||||
"l'élément _START_ à _END_ sur _TOTAL_ "
|
||||
"éléments\",\"sInfoEmpty\":\"Affichage de "
|
||||
"l'élément 0 à 0 sur 0 "
|
||||
"élément\",\"sInfoFiltered\":\"(filtré de _MAX_ "
|
||||
"éléments au "
|
||||
"total)\",\"sInfoPostFix\":\"\",\"sLoadingRecords\":\"Chargement en "
|
||||
"cours...\",\"sZeroRecords\":\"Aucun élément à "
|
||||
"afficher\",\"sEmptyTable\":\"Aucune donnée disponible dans le "
|
||||
"tableau\",\"oPaginate\":{\"sFirst\":\"Premier\",\"sPrevious\":\"Précédent\",\"sNext\":\"Suivant\",\"sLast\":\"Dernier\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
"{\"sProcessing\":\"Traitement en cours...\",\"sSearch\":\"Rechercher "
|
||||
":\",\"sLengthMenu\":\"Afficher _MENU_ éléments\",\"sInfo\":\"Affichage de "
|
||||
"l'élément _START_ à _END_ sur _TOTAL_ éléments\",\"sInfoEmpty\":\"Affichage "
|
||||
"de l'élément 0 à 0 sur 0 élément\",\"sInfoFiltered\":\"(filtré de _MAX_ "
|
||||
"éléments au total)\",\"sInfoPostFix\":\"\",\"sLoadingRecords\":\"Chargement "
|
||||
"en cours...\",\"sZeroRecords\":\"Aucun élément à "
|
||||
"afficher\",\"sEmptyTable\":\"Aucune donnée disponible dans le "
|
||||
"tableau\",\"oPaginate\":{\"sFirst\":\"Premier\",\"sPrevious\":\"Précédent\",\"sNext\":\"Suivant\",\"sLast\":\"Dernier\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
" activer pour trier la colonne par ordre croissant\",\"sSortDescending\":\":"
|
||||
" activer pour trier la colonne par ordre décroissant\"}}"
|
||||
" activer pour trier la colonne par ordre décroissant\"}}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "fr-FR"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "fr"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "fr_FR"
|
||||
|
@@ -285,3 +285,29 @@ msgstr "Suèdois"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polonais"
|
||||
|
||||
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 ""
|
||||
|
@@ -5,6 +5,7 @@
|
||||
# Cedric Octave <transifex@octvcdrc.fr>, 2019
|
||||
# Hydreliox Hydreliox <hydreliox@gmail.com>, 2019
|
||||
# Matthieu K, 2019
|
||||
# Mathieu Fortin <mathieugfortin@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -12,7 +13,7 @@ msgstr ""
|
||||
"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: Matthieu K, 2019\n"
|
||||
"Last-Translator: Mathieu Fortin <mathieugfortin@gmail.com>, 2019\n"
|
||||
"Language-Team: French (https://www.transifex.com/grocy/teams/93189/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -1369,4 +1370,22 @@ msgid "Marked task %s as completed on %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr "La réservation a des dépendances, impossible de revenir en arrière"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr ""
|
||||
|
29
localization/it/chore_assignment_types.po
Normal file
29
localization/it/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Antonino Ursino <ninus_@libero.it>, 2019
|
||||
#
|
||||
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: Antonino Ursino <ninus_@libero.it>, 2019\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/grocy/teams/93189/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "nessun-incarico"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "Gli-ultimi-saranno-i-primi"
|
||||
|
||||
msgid "random"
|
||||
msgstr "casuale"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "in-ordine-alfabetico"
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Matteo Piotto <matteo.piotto@welaika.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +8,7 @@ msgstr ""
|
||||
"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>, 2019\n"
|
||||
"Last-Translator: Matteo Piotto <matteo.piotto@welaika.com>, 2019\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/grocy/teams/93189/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -23,10 +24,10 @@ msgid "dynamic-regular"
|
||||
msgstr "Regolatore dinamico"
|
||||
|
||||
msgid "daily"
|
||||
msgstr ""
|
||||
msgstr "Giornalmente"
|
||||
|
||||
msgid "weekly"
|
||||
msgstr ""
|
||||
msgstr "Settimanalmente"
|
||||
|
||||
msgid "monthly"
|
||||
msgstr ""
|
||||
msgstr "Mensilmente"
|
@@ -20,25 +20,48 @@ msgid "timeago_locale"
|
||||
msgstr "it"
|
||||
|
||||
msgid "timeago_nan"
|
||||
msgstr "NaN anni fa"
|
||||
msgstr "NaN anni"
|
||||
|
||||
msgid "moment_locale"
|
||||
msgstr "it"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\"sEmptyTable\":\"Nessun dato disponibile\",\"sInfo\":\"Mostrando da "
|
||||
"_START_ a _END_ di _TOTAL_ voci\",\"sInfoEmpty\":\"Mostrando da 0 a 0 di 0 "
|
||||
"voci\",\"sInfoFiltered\":\"(Filtrato da _MAX_ voci "
|
||||
"totali)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Mostra"
|
||||
" _MENU_ "
|
||||
"voci\",\"sLoadingRecords\":\"Caricando...\",\"sProcessing\":\"Calcolando...\",\"sSearch\":\"Cerca:\",\"sZeroRecords\":\"Nessun"
|
||||
" risultato "
|
||||
"trovato\",\"oPaginate\":{\"sFirst\":\"Prima\",\"sLast\":\"Ultima\",\"sNext\":\"Prossima\",\"sPrevious\":\"Precedente\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
" ordine crescente\",\"sSortDescending\":\": ordine decrescente\"}}"
|
||||
"{\n"
|
||||
"\"sProcessing\": \"Traitement en cours...\",\n"
|
||||
"\"sSearch\": \"Rechercher :\",\n"
|
||||
"\"sLengthMenu\": \"Afficher _MENU_ éléments\",\n"
|
||||
"\"sInfo\": \"Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments\",\n"
|
||||
"\"sInfoEmpty\": \"Affichage de l'élément 0 à 0 sur 0 élément\",\n"
|
||||
"\"sInfoFiltered\": \"(filtré de _MAX_ éléments au total)\",\n"
|
||||
"\"sInfoPostFix\": \"\",\n"
|
||||
"\"sLoadingRecords\": \"Chargement en cours...\",\n"
|
||||
"\"sZeroRecords\": \"Aucun élément à afficher\",\n"
|
||||
"\"sEmptyTable\": \"Aucune donnée disponible dans le tableau\",\n"
|
||||
"\"oPaginate\": {\n"
|
||||
"\"sFirst\": \"Premier\",\n"
|
||||
"\"sPrevious\": \"Précédent\",\n"
|
||||
"\"sNext\": \"Suivant\",\n"
|
||||
"\"sLast\": \"Dernier\"\n"
|
||||
"},\n"
|
||||
"\"oAria\": {\n"
|
||||
"\"sSortAscending\": \": activer pour trier la colonne par ordre croissant\",\n"
|
||||
"\"sSortDescending\": \": activer pour trier la colonne par ordre décroissant\"\n"
|
||||
"},\n"
|
||||
"\"select\": {\n"
|
||||
"\"rows\": {\n"
|
||||
"_: \"%d lignes séléctionnées\",\n"
|
||||
"0: \"Aucune ligne séléctionnée\",\n"
|
||||
"1: \"1 ligne séléctionnée\"\n"
|
||||
"} \n"
|
||||
"}\n"
|
||||
"}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "it-IT"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "fr"
|
||||
msgstr "it"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "it_IT"
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Translators:
|
||||
# Sergio Zampello <seriotv88@gmail.com>, 2019
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Antonino Ursino <ninus_@libero.it>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -8,7 +9,7 @@ msgstr ""
|
||||
"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>, 2019\n"
|
||||
"Last-Translator: Antonino Ursino <ninus_@libero.it>, 2019\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/grocy/teams/93189/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -24,49 +25,49 @@ msgid "Chocolate"
|
||||
msgstr "Cioccolato"
|
||||
|
||||
msgid "Pantry"
|
||||
msgstr "Vorratskammer"
|
||||
msgstr "Dispensa"
|
||||
|
||||
msgid "Candy cupboard"
|
||||
msgstr "Süßigkeitenschrank"
|
||||
msgstr "Credenza delle caramelle"
|
||||
|
||||
msgid "Tinned food cupboard"
|
||||
msgstr "Konservenschrank"
|
||||
msgstr "Credenza del cibo in scatola"
|
||||
|
||||
msgid "Fridge"
|
||||
msgstr "Kühlschrank"
|
||||
msgstr "Frigorifero"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pezzo"
|
||||
msgstr[1] "Pezzi"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pacco"
|
||||
msgstr[1] "Pacchi"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Bicchiere"
|
||||
msgstr[1] "Bicchieri"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Lattina"
|
||||
msgstr[1] "Lattine"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Barattolo"
|
||||
msgstr[1] "Barattoli"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Grappolo"
|
||||
msgstr[1] "Grappoli"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Caramelle"
|
||||
msgstr "Orsetti gommosi"
|
||||
|
||||
msgid "Crisps"
|
||||
msgstr "Patatine"
|
||||
@@ -75,46 +76,46 @@ msgid "Eggs"
|
||||
msgstr "Uova"
|
||||
|
||||
msgid "Noodles"
|
||||
msgstr "Spaghetti"
|
||||
msgstr "Tagliatelle"
|
||||
|
||||
msgid "Pickles"
|
||||
msgstr "Marmellata"
|
||||
msgstr "Sottaceti"
|
||||
|
||||
msgid "Gulash soup"
|
||||
msgstr "Dado"
|
||||
msgstr "Zuppa di Gulash"
|
||||
|
||||
msgid "Yogurt"
|
||||
msgstr "Yogurt"
|
||||
|
||||
msgid "Cheese"
|
||||
msgstr "Parmigiano"
|
||||
msgstr "Formaggio"
|
||||
|
||||
msgid "Cold cuts"
|
||||
msgstr "Pancetta"
|
||||
msgstr "Salumi"
|
||||
|
||||
msgid "Paprika"
|
||||
msgstr "Pepe"
|
||||
msgstr "Paprica"
|
||||
|
||||
msgid "Cucumber"
|
||||
msgstr "Zucchine"
|
||||
msgstr "Cetriolo"
|
||||
|
||||
msgid "Radish"
|
||||
msgstr "Radicchio"
|
||||
msgstr "Ravanello"
|
||||
|
||||
msgid "Tomato"
|
||||
msgstr "Pomodori"
|
||||
msgstr "Pomodoro"
|
||||
|
||||
msgid "Changed towels in the bathroom"
|
||||
msgstr "Cambiare asciugamani in bagno"
|
||||
msgstr "Cambiati asciugamani in bagno"
|
||||
|
||||
msgid "Cleaned the kitchen floor"
|
||||
msgstr "Pulire la cucina"
|
||||
msgstr "Pulito il pavimento della cucina"
|
||||
|
||||
msgid "Warranty ends"
|
||||
msgstr "Scadenza dalla garanzia"
|
||||
|
||||
msgid "TV remote control"
|
||||
msgstr "Telecomando"
|
||||
msgstr "Telecomando TV"
|
||||
|
||||
msgid "Alarm clock"
|
||||
msgstr "Sveglia"
|
||||
@@ -150,7 +151,7 @@ msgid "Spaghetti bolognese"
|
||||
msgstr "Spaghetti alla bolognese"
|
||||
|
||||
msgid "Sandwiches"
|
||||
msgstr "Sandwiches"
|
||||
msgstr "Panini"
|
||||
|
||||
msgid "English"
|
||||
msgstr "Inglese"
|
||||
@@ -161,9 +162,6 @@ msgstr "Tedesco"
|
||||
msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr "Demo in lingue diverse"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr "Questo è il contenuto della nota dell'ingrediente della ricetta"
|
||||
|
||||
@@ -172,14 +170,14 @@ msgstr "Utente Demo"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Grammo"
|
||||
msgstr[1] "Grammi"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Farina"
|
||||
|
||||
msgid "Pancakes"
|
||||
msgstr "Pancakes"
|
||||
msgstr "Frittella"
|
||||
|
||||
msgid "Sugar"
|
||||
msgstr "Zucchero"
|
||||
@@ -197,14 +195,14 @@ msgid "Repair the garage door"
|
||||
msgstr "Riparare la porta del garage"
|
||||
|
||||
msgid "Fork and improve grocy"
|
||||
msgstr "Forka e migliora grocy"
|
||||
msgstr "Modifica e migliora grocy"
|
||||
|
||||
msgid "Find a solution for what to do when I forget the door keys"
|
||||
msgstr ""
|
||||
"Trova una soluzione per cosa fare quando dimentico le chiavi della porta"
|
||||
|
||||
msgid "Sweets"
|
||||
msgstr "Dolci"
|
||||
msgstr "Dolciumi"
|
||||
|
||||
msgid "Bakery products"
|
||||
msgstr "Prodotti da forno"
|
||||
@@ -213,10 +211,10 @@ msgid "Tinned food"
|
||||
msgstr "Cibo in scatola"
|
||||
|
||||
msgid "Butchery products"
|
||||
msgstr "Prodotti della macelleria"
|
||||
msgstr "Prodotti di macelleria"
|
||||
|
||||
msgid "Vegetables/Fruits"
|
||||
msgstr "Verdura/Frutta"
|
||||
msgstr "Verdure/Frutti"
|
||||
|
||||
msgid "Refrigerated products"
|
||||
msgstr "Prodotti refrigerati"
|
||||
@@ -261,25 +259,75 @@ msgid "French"
|
||||
msgstr "Francese"
|
||||
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
msgstr "Turco"
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
msgstr "Spagnolo"
|
||||
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
msgstr "Russo"
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr ""
|
||||
msgstr "Quello che accade il 5 di ogni mese"
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr ""
|
||||
msgstr "Quello che accade ogni giorno"
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr ""
|
||||
msgstr "Quello che accade il lunedì e il mercoledì"
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
msgstr "Svedese"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr ""
|
||||
msgstr "Polacco"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr "Cioccolato al latte"
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr "Cioccolato fondente"
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] "Fetta"
|
||||
msgstr[1] "Fette"
|
||||
|
||||
msgid "Example userentity"
|
||||
msgstr "Esempio di entità utente"
|
||||
|
||||
msgid "This is an example user entity..."
|
||||
msgstr "Questo è un esempio di entità utente"
|
||||
|
||||
msgid "Custom field"
|
||||
msgstr "Campo personalizzato"
|
||||
|
||||
msgid "Example field value..."
|
||||
msgstr "Esempio di valore del campo ..."
|
||||
|
||||
msgid "Waffle rolls"
|
||||
msgstr "Rotoli di cialde"
|
||||
|
||||
msgid "Danish"
|
||||
msgstr "Danese"
|
||||
|
||||
msgid "Dutch"
|
||||
msgstr "Olandese"
|
||||
|
||||
msgid "Norwegian"
|
||||
msgstr "Norvegese"
|
||||
|
||||
msgid "Demo"
|
||||
msgstr "Dimostrazione"
|
||||
|
||||
msgid "Stable version"
|
||||
msgstr "Versione stabile"
|
||||
|
||||
msgid "Preview version"
|
||||
msgstr "Versione di anteprima"
|
||||
|
||||
msgid "current release"
|
||||
msgstr "versione attuale"
|
||||
|
||||
msgid "not yet released"
|
||||
msgstr "non ancora pubblicata"
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,5 @@
|
||||
# Translators:
|
||||
# Antonino Ursino <ninus_@libero.it>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -5,6 +7,7 @@ msgstr ""
|
||||
"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: Antonino Ursino <ninus_@libero.it>, 2019\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/grocy/teams/93189/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -14,22 +17,31 @@ msgstr ""
|
||||
"X-Domain: grocy/userfield_types\n"
|
||||
|
||||
msgid "text-single-line"
|
||||
msgstr ""
|
||||
msgstr "Testo singola riga"
|
||||
|
||||
msgid "text-multi-line"
|
||||
msgstr ""
|
||||
msgstr "Testo multi riga"
|
||||
|
||||
msgid "number-integral"
|
||||
msgstr ""
|
||||
msgstr "Numero intero"
|
||||
|
||||
msgid "number-decimal"
|
||||
msgstr ""
|
||||
msgstr "Numero decimale"
|
||||
|
||||
msgid "date"
|
||||
msgstr ""
|
||||
msgstr "Data"
|
||||
|
||||
msgid "datetime"
|
||||
msgstr ""
|
||||
msgstr "Ora"
|
||||
|
||||
msgid "checkbox"
|
||||
msgstr ""
|
||||
msgstr "Casella di controllo"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "Lista predefinita"
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr "Lista di controllo predefinita"
|
||||
|
||||
msgid "link"
|
||||
msgstr "collegamento"
|
||||
|
@@ -4,26 +4,23 @@ 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"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Language-Team: Dutch (https://www.transifex.com/grocy/teams/93189/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ta\n"
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_types\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "manually"
|
||||
msgid "no-assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "dynamic-regular"
|
||||
msgid "who-least-did-first"
|
||||
msgstr ""
|
||||
|
||||
msgid "daily"
|
||||
msgid "random"
|
||||
msgstr ""
|
||||
|
||||
msgid "weekly"
|
||||
msgstr ""
|
||||
|
||||
msgid "monthly"
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr ""
|
@@ -27,9 +27,24 @@ msgstr "nl"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\"sProcessing\":\"Bezig...\",\"sLengthMenu\":\"_MENU_ resultaten "
|
||||
"weergeven\",\"sZeroRecords\":\"Geen resultaten "
|
||||
"gevonden\",\"sInfo\":\"_START_ tot _END_ van _TOTAL_ "
|
||||
"resultaten\",\"sInfoEmpty\":\"Geen resultaten om weer te "
|
||||
"geven\",\"sInfoFiltered\":\" (gefilterd uit _MAX_ "
|
||||
"resultaten)\",\"sInfoPostFix\":\"\",\"sSearch\":\"Zoeken:\",\"sEmptyTable\":\"Geen"
|
||||
" resultaten aanwezig in de "
|
||||
"tabel\",\"sInfoThousands\":\".\",\"sLoadingRecords\":\"Een moment geduld aub"
|
||||
" - bezig met "
|
||||
"laden...\",\"oPaginate\":{\"sFirst\":\"Eerste\",\"sLast\":\"Laatste\",\"sNext\":\"Volgende\",\"sPrevious\":\"Vorige\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
" activeer om kolom oplopend te sorteren\",\"sSortDescending\":\": activeer "
|
||||
"om kolom aflopend te sorteren\"}}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "nl-NL"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "nl"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "nl_NL"
|
||||
|
@@ -3,6 +3,9 @@
|
||||
# Adriaan Peeters <apeeters@lashout.net>, 2019
|
||||
# Grocy NL, 2019
|
||||
# Seppe <van.winkel.seppe@me.com>, 2019
|
||||
# Engelbert Mercelis <engelbertmercelis@gmail.com>, 2019
|
||||
# Niels Tholenaar <info@123quality.nl>, 2019
|
||||
# Frank Klaassen <frank@frankklaassen.nl>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -10,7 +13,7 @@ msgstr ""
|
||||
"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: Seppe <van.winkel.seppe@me.com>, 2019\n"
|
||||
"Last-Translator: Frank Klaassen <frank@frankklaassen.nl>, 2019\n"
|
||||
"Language-Team: Dutch (https://www.transifex.com/grocy/teams/93189/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -39,33 +42,33 @@ msgstr "Koelkast"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Stuk"
|
||||
msgstr[1] "Stuks"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "pak"
|
||||
msgstr[1] "pakken"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Glas"
|
||||
msgstr[1] "Glazen"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Blikje"
|
||||
msgstr[1] "Blikjes"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Blik"
|
||||
msgstr[1] "Blikken"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Bos"
|
||||
msgstr[1] "Bossen"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Gombeertjes"
|
||||
@@ -110,37 +113,37 @@ msgid "Changed towels in the bathroom"
|
||||
msgstr "Handdoeken verwisseld in badkamer"
|
||||
|
||||
msgid "Cleaned the kitchen floor"
|
||||
msgstr ""
|
||||
msgstr "De keukenvloer schoongemaakt"
|
||||
|
||||
msgid "Warranty ends"
|
||||
msgstr "Garantie eindigt"
|
||||
|
||||
msgid "TV remote control"
|
||||
msgstr ""
|
||||
msgstr "Afstandsbediening"
|
||||
|
||||
msgid "Alarm clock"
|
||||
msgstr ""
|
||||
msgstr "Wekker"
|
||||
|
||||
msgid "Heat remote control"
|
||||
msgstr ""
|
||||
msgstr "Afstandsbediening verwarming"
|
||||
|
||||
msgid "Lawn mowed in the garden"
|
||||
msgstr ""
|
||||
msgstr "Gazon gemaaid in de tuin"
|
||||
|
||||
msgid "Some good snacks"
|
||||
msgstr ""
|
||||
msgstr "Enkele goede hapjes"
|
||||
|
||||
msgid "Pizza dough"
|
||||
msgstr "Pizzadeeg"
|
||||
|
||||
msgid "Sieved tomatoes"
|
||||
msgstr ""
|
||||
msgstr "Gezeefde tomaten"
|
||||
|
||||
msgid "Salami"
|
||||
msgstr "Salami"
|
||||
|
||||
msgid "Toast"
|
||||
msgstr ""
|
||||
msgstr "Geroosterd brood"
|
||||
|
||||
msgid "Minced meat"
|
||||
msgstr "Gehakt"
|
||||
@@ -167,15 +170,15 @@ msgid "Demo in different language"
|
||||
msgstr "Demo in een andere taal"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr ""
|
||||
msgstr "Dit is de inhoud van de opmerking van het recept-ingrediënt"
|
||||
|
||||
msgid "Demo User"
|
||||
msgstr "Demo Gebruiker"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gram"
|
||||
msgstr[1] "Grams"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Bloem"
|
||||
@@ -187,40 +190,40 @@ msgid "Sugar"
|
||||
msgstr "Suiker"
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
msgstr "Thuis"
|
||||
|
||||
msgid "Life"
|
||||
msgstr ""
|
||||
msgstr "Leven"
|
||||
|
||||
msgid "Projects"
|
||||
msgstr ""
|
||||
msgstr "Projecten"
|
||||
|
||||
msgid "Repair the garage door"
|
||||
msgstr "Herstel de garagepoort"
|
||||
|
||||
msgid "Fork and improve grocy"
|
||||
msgstr ""
|
||||
msgstr "Fork en verbeter grocy"
|
||||
|
||||
msgid "Find a solution for what to do when I forget the door keys"
|
||||
msgstr ""
|
||||
msgstr "Zoek een oplossing voor wat te doen als ik de deursleutels vergeet"
|
||||
|
||||
msgid "Sweets"
|
||||
msgstr "Snoep"
|
||||
|
||||
msgid "Bakery products"
|
||||
msgstr ""
|
||||
msgstr "Bakkerijproducten"
|
||||
|
||||
msgid "Tinned food"
|
||||
msgstr ""
|
||||
msgstr "Ingeblikt voedsel"
|
||||
|
||||
msgid "Butchery products"
|
||||
msgstr ""
|
||||
msgstr "Slagerij producten"
|
||||
|
||||
msgid "Vegetables/Fruits"
|
||||
msgstr "Groenten/Fruit"
|
||||
|
||||
msgid "Refrigerated products"
|
||||
msgstr ""
|
||||
msgstr "Gekoelde producten"
|
||||
|
||||
msgid "Coffee machine"
|
||||
msgstr "Koffiemachine"
|
||||
@@ -232,7 +235,7 @@ msgid "Liter"
|
||||
msgstr "Liter"
|
||||
|
||||
msgid "Liters"
|
||||
msgstr ""
|
||||
msgstr "Liters"
|
||||
|
||||
msgid "Bottle"
|
||||
msgstr "Fles"
|
||||
@@ -253,10 +256,10 @@ msgid "Milliliter"
|
||||
msgstr "Milliliter"
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
msgstr "Onderkant"
|
||||
|
||||
msgid "Topping"
|
||||
msgstr ""
|
||||
msgstr "Beleg"
|
||||
|
||||
msgid "French"
|
||||
msgstr "Frans"
|
||||
@@ -268,19 +271,45 @@ msgid "Spanish"
|
||||
msgstr "Spaans"
|
||||
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
msgstr "Russisch"
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr ""
|
||||
msgstr "Het ding dat op de 5e van elke maand gebeurt"
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr ""
|
||||
msgstr "Het ding dat dagelijks gebeurt"
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr ""
|
||||
msgstr "Het ding dat op maandag en woensdag gebeurt"
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
msgstr "Zweeds"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Pools"
|
||||
|
||||
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 ""
|
||||
|
29
localization/no/chore_assignment_types.po
Normal file
29
localization/no/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Marius Borø <blizzwave@gmail.com>, 2019
|
||||
#
|
||||
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: Marius Borø <blizzwave@gmail.com>, 2019\n"
|
||||
"Language-Team: Norwegian (https://www.transifex.com/grocy/teams/93189/no/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: no\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "Ingen tildeling"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr " Hvem gjorde minst først"
|
||||
|
||||
msgid "random"
|
||||
msgstr "Tilfeldig"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "I alfabetisk rekkefølge"
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Marius Borø <blizzwave@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +8,7 @@ msgstr ""
|
||||
"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>, 2019\n"
|
||||
"Last-Translator: Marius Borø <blizzwave@gmail.com>, 2019\n"
|
||||
"Language-Team: Norwegian (https://www.transifex.com/grocy/teams/93189/no/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,7 +18,7 @@ msgstr ""
|
||||
"X-Domain: grocy/chore_types\n"
|
||||
|
||||
msgid "manually"
|
||||
msgstr "Manuel"
|
||||
msgstr "Manuell"
|
||||
|
||||
msgid "dynamic-regular"
|
||||
msgstr "Automatisk"
|
@@ -48,3 +48,6 @@ msgstr "nb-NO"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "nb"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "nb_NO"
|
||||
|
@@ -161,9 +161,6 @@ msgstr "Tysk"
|
||||
msgid "Italian"
|
||||
msgstr "Italiensk"
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr "Demo i annet språk"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr "Dette er notisen for ingrediensen i oppskriften"
|
||||
|
||||
@@ -282,3 +279,53 @@ msgstr "Svensk"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polsk"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr "Melkesjokolade"
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr "Mørk sjokolade"
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] "Skrive"
|
||||
msgstr[1] "Skriver"
|
||||
|
||||
msgid "Example userentity"
|
||||
msgstr "Example userentity"
|
||||
|
||||
msgid "This is an example user entity..."
|
||||
msgstr "This is an example user entity..."
|
||||
|
||||
msgid "Custom field"
|
||||
msgstr "Custom field"
|
||||
|
||||
msgid "Example field value..."
|
||||
msgstr "Example field value..."
|
||||
|
||||
msgid "Waffle rolls"
|
||||
msgstr "Vaffelrull"
|
||||
|
||||
msgid "Danish"
|
||||
msgstr "Dansk"
|
||||
|
||||
msgid "Dutch"
|
||||
msgstr "Nederlandsk"
|
||||
|
||||
msgid "Norwegian"
|
||||
msgstr "Norsk"
|
||||
|
||||
msgid "Demo"
|
||||
msgstr "Demo"
|
||||
|
||||
msgid "Stable version"
|
||||
msgstr "Stabil versjon"
|
||||
|
||||
msgid "Preview version"
|
||||
msgstr "Under utvikling versjon"
|
||||
|
||||
msgid "current release"
|
||||
msgstr "Nåværende versjon"
|
||||
|
||||
msgid "not yet released"
|
||||
msgstr "enda ikke gitt ut"
|
||||
|
@@ -1,5 +1,5 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Marius Borø <blizzwave@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"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>, 2019\n"
|
||||
"Last-Translator: Marius Borø <blizzwave@gmail.com>, 2019\n"
|
||||
"Language-Team: Norwegian (https://www.transifex.com/grocy/teams/93189/no/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,13 +17,13 @@ msgstr ""
|
||||
"X-Domain: grocy/stock_transaction_types\n"
|
||||
|
||||
msgid "purchase"
|
||||
msgstr "Innkjøp"
|
||||
msgstr "innkjøp"
|
||||
|
||||
msgid "consume"
|
||||
msgstr "Forbruk produkt"
|
||||
msgstr "forbruk"
|
||||
|
||||
msgid "inventory-correction"
|
||||
msgstr "Korreksjon av husholdningsantall "
|
||||
msgstr "beholdningsantall korreksjon"
|
||||
|
||||
msgid "product-opened"
|
||||
msgstr "Produkt åpnet"
|
||||
msgstr "produkt åpnet"
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -39,3 +39,9 @@ msgstr "checkbox"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "preset-list"
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr "preset-checklist"
|
||||
|
||||
msgid "link"
|
||||
msgstr "link"
|
||||
|
26
localization/pl/chore_assignment_types.po
Normal file
26
localization/pl/chore_assignment_types.po
Normal file
@@ -0,0 +1,26 @@
|
||||
#
|
||||
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"
|
||||
"Language-Team: Polish (https://www.transifex.com/grocy/teams/93189/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\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 ""
|
@@ -43,3 +43,6 @@ msgstr "pl-PL"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "pl"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "pl_PL"
|
||||
|
@@ -296,3 +296,31 @@ msgstr "Szwedzki"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polski"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
|
||||
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 ""
|
||||
|
@@ -1387,3 +1387,27 @@ msgstr "Dni \"blisko terminu wykonania zadania\""
|
||||
|
||||
msgid "Products"
|
||||
msgstr "Produkty"
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr "Oznaczono zadanie %s jako wykonane dnia %s "
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr "Rezerwacja ma kolejne zależne rezerwacje, nie można jej cofnąć"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr ""
|
||||
|
29
localization/ru/chore_assignment_types.po
Normal file
29
localization/ru/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Pavel Pletenev <cpp.create@gmail.com>, 2019
|
||||
#
|
||||
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: Pavel Pletenev <cpp.create@gmail.com>, 2019\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/grocy/teams/93189/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\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 "по-алфавиту"
|
@@ -26,10 +26,35 @@ msgid "moment_locale"
|
||||
msgstr "ru"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr "{}"
|
||||
msgstr ""
|
||||
"{\n"
|
||||
"\"processing\": \"Подождите...\",\n"
|
||||
"\"search\": \"Поиск:\",\n"
|
||||
"\"lengthMenu\": \"Показать _MENU_ записей\",\n"
|
||||
"\"info\": \"Записи с _START_ до _END_ из _TOTAL_ записей\",\n"
|
||||
"\"infoEmpty\": \"Записи с 0 до 0 из 0 записей\",\n"
|
||||
"\"infoFiltered\": \"(отфильтровано из _MAX_ записей)\",\n"
|
||||
"\"infoPostFix\": \"\",\n"
|
||||
"\"loadingRecords\": \"Загрузка записей...\",\n"
|
||||
"\"zeroRecords\": \"Записи отсутствуют.\",\n"
|
||||
"\"emptyTable\": \"В таблице отсутствуют данные\",\n"
|
||||
"\"paginate\": {\n"
|
||||
"\"first\": \"Первая\",\n"
|
||||
"\"previous\": \"Предыдущая\",\n"
|
||||
"\"next\": \"Следующая\",\n"
|
||||
"\"last\": \"Последняя\"\n"
|
||||
"},\n"
|
||||
"\"aria\": {\n"
|
||||
"\"sortAscending\": \": активировать для сортировки столбца по возрастанию\",\n"
|
||||
"\"sortDescending\": \": активировать для сортировки столбца по убыванию\"\n"
|
||||
"}\n"
|
||||
"}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "ru-RU"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "ru"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "ru_RU"
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Pavel Pletenev <cpp.create@gmail.com>, 2019
|
||||
# cool guy <eut53770@bcaoo.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +8,7 @@ msgstr ""
|
||||
"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: Pavel Pletenev <cpp.create@gmail.com>, 2019\n"
|
||||
"Last-Translator: cool guy <eut53770@bcaoo.com>, 2019\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/grocy/teams/93189/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -89,7 +90,7 @@ msgid "Noodles"
|
||||
msgstr "Макароны"
|
||||
|
||||
msgid "Pickles"
|
||||
msgstr "Огурцы"
|
||||
msgstr "Соленья"
|
||||
|
||||
msgid "Gulash soup"
|
||||
msgstr "Суп-гуляш"
|
||||
@@ -116,16 +117,16 @@ msgid "Tomato"
|
||||
msgstr "Помидор"
|
||||
|
||||
msgid "Changed towels in the bathroom"
|
||||
msgstr "Сменены полотенца в ванной"
|
||||
msgstr "Полотенца в ванной поменяны"
|
||||
|
||||
msgid "Cleaned the kitchen floor"
|
||||
msgstr "Очищен пол на кухне"
|
||||
msgstr "Пол на кухне чист"
|
||||
|
||||
msgid "Warranty ends"
|
||||
msgstr "Гарантия заканчивается"
|
||||
|
||||
msgid "TV remote control"
|
||||
msgstr "Пульт ДУ"
|
||||
msgstr "Пульт для телевизора"
|
||||
|
||||
msgid "Alarm clock"
|
||||
msgstr "Часы с будильником"
|
||||
@@ -134,10 +135,10 @@ msgid "Heat remote control"
|
||||
msgstr "Пульт ДУ для печки"
|
||||
|
||||
msgid "Lawn mowed in the garden"
|
||||
msgstr "Пострижен газон в саду"
|
||||
msgstr "Газон в саду пострижен"
|
||||
|
||||
msgid "Some good snacks"
|
||||
msgstr "Немного хорошего перекуса"
|
||||
msgstr "Вкусные закуски"
|
||||
|
||||
msgid "Pizza dough"
|
||||
msgstr "Тесто для пиццы"
|
||||
@@ -161,7 +162,7 @@ msgid "Spaghetti bolognese"
|
||||
msgstr "Спагетти болоньезе"
|
||||
|
||||
msgid "Sandwiches"
|
||||
msgstr "Сендвичи"
|
||||
msgstr "Сэндвичи"
|
||||
|
||||
msgid "English"
|
||||
msgstr "Английски"
|
||||
@@ -172,9 +173,6 @@ msgstr "Немецкий"
|
||||
msgid "Italian"
|
||||
msgstr "Итальянский"
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr "Демо на другом языке"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr "Это тело заметки по игредиенту рецепта"
|
||||
|
||||
@@ -204,19 +202,19 @@ msgid "Life"
|
||||
msgstr "Жизнь"
|
||||
|
||||
msgid "Projects"
|
||||
msgstr "Проект"
|
||||
msgstr "Проекты"
|
||||
|
||||
msgid "Repair the garage door"
|
||||
msgstr "Починить дверь гаража"
|
||||
|
||||
msgid "Fork and improve grocy"
|
||||
msgstr "Отфоркнуть и улучшить grocy"
|
||||
msgstr "Форкнуть и сделать grocy лучше"
|
||||
|
||||
msgid "Find a solution for what to do when I forget the door keys"
|
||||
msgstr "Найти решение, что делать, когда я забываю ключи от двери"
|
||||
msgstr "Придумать что делать, когда я забываю ключи от двери"
|
||||
|
||||
msgid "Sweets"
|
||||
msgstr "Конфеты"
|
||||
msgstr "Сладости"
|
||||
|
||||
msgid "Bakery products"
|
||||
msgstr "Хлебобулочные изделия"
|
||||
@@ -228,7 +226,7 @@ msgid "Butchery products"
|
||||
msgstr "Мясные изделия"
|
||||
|
||||
msgid "Vegetables/Fruits"
|
||||
msgstr "Фрукт/овощи"
|
||||
msgstr "Фрукты/овощи"
|
||||
|
||||
msgid "Refrigerated products"
|
||||
msgstr "Замороженные продукты"
|
||||
@@ -258,10 +256,10 @@ msgid "Chocolate sauce"
|
||||
msgstr "Шоколадный соус"
|
||||
|
||||
msgid "Milliliters"
|
||||
msgstr "Милилитры"
|
||||
msgstr "Миллилитры"
|
||||
|
||||
msgid "Milliliter"
|
||||
msgstr "Милилитр"
|
||||
msgstr "Миллилитр"
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr "Низ"
|
||||
@@ -282,16 +280,68 @@ msgid "Russian"
|
||||
msgstr "Русский"
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr "Штука, которая происходит каждое 5 число каждого месяца"
|
||||
msgstr "Что-то, что происходит 5 числа каждого месяца"
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr "Штука, происходящая едедневно"
|
||||
msgstr "Что-то, что происходит каждый день"
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr "Штука, которая происходит по понедельникам и средам"
|
||||
msgstr "Что-то, что происходит по понедельникам и средам"
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr "Шведский"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Польский"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr "Молочный шоколад"
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr "Тёмный шоколад"
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] "Срез (Slice)"
|
||||
msgstr[1] "Среза (Slices)"
|
||||
msgstr[2] "Срезы (Slices)"
|
||||
msgstr[3] "Срезы (Slices)"
|
||||
|
||||
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 "Пока не выпущено"
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Pavel Pletenev <cpp.create@gmail.com>, 2019
|
||||
# cool guy <eut53770@bcaoo.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -8,7 +9,7 @@ msgstr ""
|
||||
"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: Pavel Pletenev <cpp.create@gmail.com>, 2019\n"
|
||||
"Last-Translator: cool guy <eut53770@bcaoo.com>, 2019\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/grocy/teams/93189/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -89,10 +90,10 @@ msgid "Chore tracking"
|
||||
msgstr "Выполнить работу по дому"
|
||||
|
||||
msgid "Battery tracking"
|
||||
msgstr "Отслеживание батарей"
|
||||
msgstr "Отслеживание аккумуляторов"
|
||||
|
||||
msgid "Locations"
|
||||
msgstr "Места хранения"
|
||||
msgstr "Места"
|
||||
|
||||
msgid "Quantity units"
|
||||
msgstr "Единицы измерения"
|
||||
@@ -157,7 +158,7 @@ msgid "New amount"
|
||||
msgstr "Новое количество"
|
||||
|
||||
msgid "Note"
|
||||
msgstr "Заметки"
|
||||
msgstr "Заметка"
|
||||
|
||||
msgid "Tracked time"
|
||||
msgstr "Время выполнения"
|
||||
@@ -338,7 +339,7 @@ msgid "Are you sure to delete quantity unit \"%s\"?"
|
||||
msgstr "Вы уверены, что нужно удалить единицу измерения \"%s\"?"
|
||||
|
||||
msgid "Are you sure to delete product \"%s\"?"
|
||||
msgstr "Вы уверены, что нужно удалить продукт \"%s\"?"
|
||||
msgstr "Вы уверены, что хотите удалить продукт %s?"
|
||||
|
||||
msgid "Are you sure to delete location \"%s\"?"
|
||||
msgstr "Вы уверены, что нужно удалить место хранения \"%s\"?"
|
||||
@@ -374,11 +375,11 @@ msgid "This means %s will be removed from stock"
|
||||
msgstr "Означает, что %s будет убран из запаса"
|
||||
|
||||
msgid ""
|
||||
"This means it is estimated that a new execution of this chore is tracked %s "
|
||||
"days after the last was tracked"
|
||||
"This means the next execution of this chore is scheduled %s days after the "
|
||||
"last execution"
|
||||
msgstr ""
|
||||
"Это означает, что следующее выполнение данной работы по дому будет назначено"
|
||||
" спустя %s дней после самого недавнего выполнения"
|
||||
"Это означает, что следующее выполнение этой работы будет назначено через %s "
|
||||
"дней от последнего выполнения"
|
||||
|
||||
msgid "Removed %1$s of %2$s from stock"
|
||||
msgstr "Убрано %1$s из %2$s из запаса"
|
||||
@@ -423,7 +424,7 @@ msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
msgid "Not logged in"
|
||||
msgstr "Нет входа в систему"
|
||||
msgstr "Вы не авторизованы"
|
||||
|
||||
msgid "You have to select a product"
|
||||
msgstr "Вам нужно выбрать продукт"
|
||||
@@ -611,7 +612,7 @@ msgid "Charge cycle interval (days)"
|
||||
msgstr "Цикл работы от 1 заряда (дней)"
|
||||
|
||||
msgid "Last price"
|
||||
msgstr "Последняя цена покупки"
|
||||
msgstr "Последняя цена"
|
||||
|
||||
msgid "Price history"
|
||||
msgstr "История цен"
|
||||
@@ -700,7 +701,7 @@ msgid "Removed all ingredients of recipe \"%s\" from stock"
|
||||
msgstr "Все ингредиенты рецепта \"%s\" убраны из запаса"
|
||||
|
||||
msgid "Consume all ingredients needed by this recipe"
|
||||
msgstr "Употребить все ингредиенты, необходимые данному рецепту"
|
||||
msgstr "Употребить все ингредиенты из этого рецепта"
|
||||
|
||||
msgid "Click to show technical details"
|
||||
msgstr "Нажмите, чтобы посмотреть технические детали"
|
||||
@@ -715,7 +716,7 @@ msgid "Tasks"
|
||||
msgstr "Задачи"
|
||||
|
||||
msgid "Show done tasks"
|
||||
msgstr "Показать законченные задачи"
|
||||
msgstr "Показать завершённые задачи"
|
||||
|
||||
msgid "Task"
|
||||
msgstr "Задача"
|
||||
@@ -1005,7 +1006,7 @@ msgstr ""
|
||||
"сегодня + это количество дней (значение 0 отключает этот функционал)"
|
||||
|
||||
msgid "Default best before days after opened"
|
||||
msgstr "Срок годности по умолчанию после открытия в днях"
|
||||
msgstr "Срок годности в днях по умолчанию после открытия"
|
||||
|
||||
msgid "Marked %1$s of %2$s as opened"
|
||||
msgstr "%2$s %1$s помечено открытым"
|
||||
@@ -1391,3 +1392,333 @@ msgstr "Критерий для \"подходит срок задач\" в дн
|
||||
|
||||
msgid "Products"
|
||||
msgstr "Продукты"
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr "Пометить задачу \"%s\" как выполненную %s"
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr "У данного действия есть зависимые действия, отмена невозможна"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr "на порцию"
|
||||
|
||||
msgid "Never"
|
||||
msgstr "Никогда"
|
||||
|
||||
msgid "Today"
|
||||
msgstr "Сегодня"
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr "Употребить %1$s %2$s как испорченное"
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr "Не все ингредиенты рецепта \"%s\" есть в запасе, ничего не изъято"
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr "Отменить задачу \"%s\""
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr "Переносить срок выполнения"
|
||||
|
||||
msgid ""
|
||||
"When enabled the chore can never be overdue, the due date will shift forward"
|
||||
" each day when due"
|
||||
msgstr ""
|
||||
"Когда данная опция включена, срок выполнения работы по дому никогда не будет"
|
||||
" проходить - срок будет сдвигаться вперёд каждый день при его окончании"
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr "Лист содержимого места хранения"
|
||||
|
||||
msgid "Print"
|
||||
msgstr "Печать"
|
||||
|
||||
msgid "all locations"
|
||||
msgstr "все места хранения"
|
||||
|
||||
msgid ""
|
||||
"Here you can print a page per location with the current stock, maybe to hang"
|
||||
" it there and note the consumed things on it."
|
||||
msgstr ""
|
||||
"Здесь вы можете напечатать список запасов для мест хранения на отдельных "
|
||||
"страницах, чтобы, например, повесить его где-то и отмечать употреблённые "
|
||||
"продукты на нём."
|
||||
|
||||
msgid "this location"
|
||||
msgstr "это место хранения"
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr "Употреблённое количество"
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr "Время печати"
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr "Вы уверены, что нужно удалить оборудование \"%s\"?"
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr "Родительский продукт"
|
||||
|
||||
msgid ""
|
||||
"Not possible because this product is already used as a parent product in "
|
||||
"another product"
|
||||
msgstr ""
|
||||
"Невозможно, так как этот продукт уже является родительским продуктом у "
|
||||
"другого продукта"
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr "Преобразование по умолчанию"
|
||||
|
||||
msgid "Factor"
|
||||
msgstr "Коэффициент"
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr "1 %s - то же, что ..."
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr "Создать преобразования ЕИ"
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr "Умолчание для ЕИ"
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr "Начальная единица измерения"
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr "Конечная единица измерения"
|
||||
|
||||
msgid ""
|
||||
"This cannot be lower than %1$s and must be a valid number with max. %2$s "
|
||||
"decimal places"
|
||||
msgstr ""
|
||||
"Не может быть ниже %1$s и должно быть числом с максимально %2$sзнаками после"
|
||||
" запятой"
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr "Не может быть равно %s"
|
||||
|
||||
msgid "This means 1 %1$s is the same as %2$s %3$s"
|
||||
msgstr "Означает, что 1 %1$s - это то же, что %2$s%3$s"
|
||||
|
||||
msgid "QU conversions"
|
||||
msgstr "Преобразование ЕИ"
|
||||
|
||||
msgid "Product overrides"
|
||||
msgstr "Переопределения продукта"
|
||||
|
||||
msgid "Override for product"
|
||||
msgstr "Переопределить продукт"
|
||||
|
||||
msgid "This equals %1$s %2$s in stock"
|
||||
msgstr "Равно %1$s%2$s в запасе"
|
||||
|
||||
msgid "Edit QU conversion"
|
||||
msgstr "Изменить преобразование ЕИ"
|
||||
|
||||
msgid "An assignment type is required"
|
||||
msgstr "Назначение необходимо"
|
||||
|
||||
msgid "Assignment type"
|
||||
msgstr "Типы назначения"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution"
|
||||
msgstr ""
|
||||
"Это означает, что следующее выполнение этой работы будет назначено через "
|
||||
"день от последнего выполнения "
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution, but only for the weekdays selected below"
|
||||
msgstr ""
|
||||
"Это означает, что следующее выполнение этой работы будет назначено через "
|
||||
"день от последнего выполнения, но только по дням недели, выбранным ниже"
|
||||
|
||||
msgid "This means the next execution of this chore is not scheduled"
|
||||
msgstr "Это означает, что следующее выполнение этой работы не будет назначено"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled on the below "
|
||||
"selected day of each month"
|
||||
msgstr ""
|
||||
"Это означает, что следующее выполнение этой работы будет назначено на "
|
||||
"выбранный ниже день каждого месяца"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will not be assigned to anyone"
|
||||
msgstr ""
|
||||
"Это означает, что следующее выполнение этой работы не будет назначено никому"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the one who "
|
||||
"executed it least"
|
||||
msgstr ""
|
||||
"Это означает, что следующее выполнение этой работы будет назначено тому, что"
|
||||
" выполнял её меньше"
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned randomly"
|
||||
msgstr ""
|
||||
"Это означает, что следующее выполнение этой работы будет назначено случайно"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the next one"
|
||||
" in alphabetical order"
|
||||
msgstr ""
|
||||
"Это означает, что следующее исполнение этой работы будет назначено в "
|
||||
"алфавитном порядке"
|
||||
|
||||
msgid "Assign to"
|
||||
msgstr "Назначить"
|
||||
|
||||
msgid "This assignment type requires that at least one is assigned"
|
||||
msgstr "Для этого типа назначения необходим как минимум один назначенный"
|
||||
|
||||
msgid "%s chore is assigned to me"
|
||||
msgid_plural "%s chores are assigned to me"
|
||||
msgstr[0] "%s работа назначена мне"
|
||||
msgstr[1] "%s работы назначены мне"
|
||||
msgstr[2] "%sработ назначены мне"
|
||||
msgstr[3] "%s работ назначены мне"
|
||||
|
||||
msgid "Assigned to me"
|
||||
msgstr "Назначено мне"
|
||||
|
||||
msgid "assigned to %s"
|
||||
msgstr "назначено %s"
|
||||
|
||||
msgid "Filter by assignment"
|
||||
msgstr "Отфильтровать по назначению"
|
||||
|
||||
msgid "Consume product on chore execution"
|
||||
msgstr "Употребить продукт по исполнению работы"
|
||||
|
||||
msgid "Are you sure to delete user field \"%s\"?"
|
||||
msgstr "Вы уверены, что нужно удалить пользовательское поле \"%s\"?"
|
||||
|
||||
msgid "Userentities"
|
||||
msgstr "Пользовательские сущности"
|
||||
|
||||
msgid "Create userentity"
|
||||
msgstr "Создать пользовательскую сущность"
|
||||
|
||||
msgid "Show in sidebar menu"
|
||||
msgstr "Показывать в меню слева"
|
||||
|
||||
msgid "Edit userentity"
|
||||
msgstr "Изменить пользовательскую сущность"
|
||||
|
||||
msgid "Edit %s"
|
||||
msgstr "Изменить %s"
|
||||
|
||||
msgid "Create %s"
|
||||
msgstr "Создать %s"
|
||||
|
||||
msgid "Are you sure to delete this userobject?"
|
||||
msgstr "Вы уверены, что нужно удалить эту пользовательский объект?"
|
||||
|
||||
msgid "Icon CSS class"
|
||||
msgstr "CSS класс иконок"
|
||||
|
||||
msgid "For example"
|
||||
msgstr "Например"
|
||||
|
||||
msgid "Configure fields"
|
||||
msgstr "Настроить пользовательские поля"
|
||||
|
||||
msgid "Quantity unit plural form testing"
|
||||
msgstr "Проверка множественных форм"
|
||||
|
||||
msgid "Result"
|
||||
msgstr "Результат"
|
||||
|
||||
msgid "Test plural forms"
|
||||
msgstr "Проба форм множественного числа"
|
||||
|
||||
msgid "Scan a barcode"
|
||||
msgstr "Отсканировать штрихкод"
|
||||
|
||||
msgid "Error while initializing the barcode scanning library"
|
||||
msgstr "Ошибка инициализации библиотеки сканирования штрихкодов"
|
||||
|
||||
msgid ""
|
||||
"The resulting price of this ingredient will be multiplied by this factor"
|
||||
msgstr "Полная цена этого ингредиента будет умножена на этот коэффициент"
|
||||
|
||||
msgid "Price factor"
|
||||
msgstr "Коэффициент цены"
|
||||
|
||||
msgid "Do you find grocy useful?"
|
||||
msgstr "Вы находите grocy полезным?"
|
||||
|
||||
msgid "Say thanks"
|
||||
msgstr "Сказать спасибо"
|
||||
|
||||
msgid "Search for recipes containing this product"
|
||||
msgstr "Искать рецепты, содержащие данный продукт"
|
||||
|
||||
msgid "Add to shopping list"
|
||||
msgstr "Добавить в список покупок"
|
||||
|
||||
msgid "Added %1$s of %2$s to the shopping list \"%3$s\""
|
||||
msgstr "Добавлено %1$s из %2$s в список покупок \"%3$s\""
|
||||
|
||||
msgid "Output"
|
||||
msgstr "Вывод"
|
||||
|
||||
msgid "Energy (kcal)"
|
||||
msgstr "Энергия (ккал)"
|
||||
|
||||
msgid "Per stock quantity unit"
|
||||
msgstr "На единицу измерения в запасе"
|
||||
|
||||
msgid "Barcode scanner testing"
|
||||
msgstr "Проверка сканера штрихкодов"
|
||||
|
||||
msgid "Expected barcode"
|
||||
msgstr "Ожидаемый штрихкод"
|
||||
|
||||
msgid "Scan field"
|
||||
msgstr "Сканировать поле"
|
||||
|
||||
msgid "Scanned barcodes"
|
||||
msgstr "Отсканированные штрихкоды"
|
||||
|
||||
msgid "Hit"
|
||||
msgstr "Правильно"
|
||||
|
||||
msgid "Miss"
|
||||
msgstr "Неправильно"
|
||||
|
||||
msgid "Display recipe"
|
||||
msgstr "Отобразить рецепт"
|
||||
|
||||
msgid "Accumulate sub products min. stock amount"
|
||||
msgstr "Собирать мин. заданные количества подпродуктов"
|
||||
|
||||
msgid ""
|
||||
"If enabled, the min. stock amount of sub products will be accumulated into "
|
||||
"this product, means the sub product will never be \"missing\", only this "
|
||||
"product"
|
||||
msgstr ""
|
||||
"Если включено, то мин. заданные кол-ва подпродуктов будут соединятся и "
|
||||
"отслеживаться в этом продукте. Это означает, что подпродукты никогда не "
|
||||
"будут \"отсутсвующими\", только этот продукт будет"
|
||||
|
||||
msgid "Are you sure to remove this conversion?"
|
||||
msgstr "Вы уверены, что нужно удалить это преобразование?"
|
||||
|
||||
msgid "Unit price"
|
||||
msgstr ""
|
||||
|
||||
msgid "Total price"
|
||||
msgstr ""
|
||||
|
||||
msgid "in %s and based on the purchase quantity unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unlimited"
|
||||
msgstr ""
|
||||
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
@@ -40,3 +40,9 @@ msgstr "Флажок"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "предопределённый-список"
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr "предопределённый-список-галочек"
|
||||
|
||||
msgid "link"
|
||||
msgstr "ссылка"
|
||||
|
@@ -349,7 +349,7 @@ msgstr ""
|
||||
msgid "This means %s will be removed from stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means it is estimated that a new execution of this chore is tracked %s days after the last was tracked"
|
||||
msgid "This means the next execution of this chore is scheduled %s days after the last execution"
|
||||
msgstr ""
|
||||
|
||||
msgid "Removed %1$s of %2$s from stock"
|
||||
@@ -1268,3 +1268,278 @@ msgstr ""
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr ""
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled the chore can never be overdue, the due date will shift forward each day when due"
|
||||
msgstr ""
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
msgid "all locations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it."
|
||||
msgstr ""
|
||||
|
||||
msgid "this location"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr ""
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not possible because this product is already used as a parent product in another product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr ""
|
||||
|
||||
msgid "This cannot be lower than %1$s and must be a valid number with max. %2$s decimal places"
|
||||
msgstr ""
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means 1 %1$s is the same as %2$s %3$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "QU conversions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Product overrides"
|
||||
msgstr ""
|
||||
|
||||
msgid "Override for product"
|
||||
msgstr ""
|
||||
|
||||
msgid "This equals %1$s %2$s in stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit QU conversion"
|
||||
msgstr ""
|
||||
|
||||
msgid "An assignment type is required"
|
||||
msgstr ""
|
||||
|
||||
msgid "Assignment type"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is scheduled 1 day after the last execution"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is not scheduled"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is scheduled on the below selected day of each month"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will not be assigned to anyone"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned to the one who executed it least"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned randomly"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned to the next one in alphabetical order"
|
||||
msgstr ""
|
||||
|
||||
msgid "Assign to"
|
||||
msgstr ""
|
||||
|
||||
msgid "This assignment type requires that at least one is assigned"
|
||||
msgstr ""
|
||||
|
||||
msgid "%s chore is assigned to me"
|
||||
msgid_plural "%s chores are assigned to me"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Assigned to me"
|
||||
msgstr ""
|
||||
|
||||
msgid "assigned to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter by assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume product on chore execution"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete user field \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Userentities"
|
||||
msgstr ""
|
||||
|
||||
msgid "Create userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show in sidebar menu"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Create %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete this userobject?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Icon CSS class"
|
||||
msgstr ""
|
||||
|
||||
msgid "For example"
|
||||
msgstr ""
|
||||
|
||||
msgid "Configure fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit plural form testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Result"
|
||||
msgstr ""
|
||||
|
||||
msgid "Test plural forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scan a barcode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error while initializing the barcode scanning library"
|
||||
msgstr ""
|
||||
|
||||
msgid "The resulting price of this ingredient will be multiplied by this factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Price factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do you find grocy useful?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Say thanks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Search for recipes containing this product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add to shopping list"
|
||||
msgstr ""
|
||||
|
||||
msgid "Added %1$s of %2$s to the shopping list \"%3$s\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Energy (kcal)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per stock quantity unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Barcode scanner testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Expected barcode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scan field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scanned barcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miss"
|
||||
msgstr ""
|
||||
|
||||
msgid "Display recipe"
|
||||
msgstr ""
|
||||
|
||||
msgid "Accumulate sub products min. stock amount"
|
||||
msgstr ""
|
||||
|
||||
msgid "If enabled, the min. stock amount of sub products will be accumulated into this product, means the sub product will never be \"missing\", only this product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to remove this conversion?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unit price"
|
||||
msgstr ""
|
||||
|
||||
msgid "Total price"
|
||||
msgstr ""
|
||||
|
||||
msgid "in %s and based on the purchase quantity unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unlimited"
|
||||
msgstr ""
|
||||
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
@@ -4,23 +4,23 @@ 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"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Language-Team: Swedish (Sweden) (https://www.transifex.com/grocy/teams/93189/sv_SE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ta\n"
|
||||
"Language: sv_SE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/stock_transaction_types\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "purchase"
|
||||
msgid "no-assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "consume"
|
||||
msgid "who-least-did-first"
|
||||
msgstr ""
|
||||
|
||||
msgid "inventory-correction"
|
||||
msgid "random"
|
||||
msgstr ""
|
||||
|
||||
msgid "product-opened"
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr ""
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user