mirror of
https://github.com/grocy/grocy.git
synced 2025-09-18 18:46:51 +00:00
Compare commits
132 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
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 | ||
|
86f5667039 |
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
|
||||
|
2
app.php
2
app.php
@@ -38,7 +38,7 @@ 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)
|
||||
|
@@ -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)
|
||||
|
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 barcocdes 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 an 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 behaviour)
|
||||
- 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 behaviour 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 cnoversion 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 an recipe by a product name)
|
||||
- Fixed a problem where the meal plan did not load when a recipe, which was already added to a 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 filterd 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 no menus and the sidebar 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 tranlsations)
|
||||
- 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)!
|
@@ -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,11 +14,12 @@
|
||||
# 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,
|
||||
@@ -26,6 +27,9 @@ Setting('CULTURE', 'en');
|
||||
# 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
|
||||
@@ -42,15 +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
|
||||
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
|
||||
@@ -95,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
|
||||
@@ -110,3 +117,14 @@ 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);
|
||||
|
||||
|
||||
# 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);
|
||||
}
|
||||
|
||||
$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();
|
||||
|
@@ -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,7 +51,32 @@ class FilesApiController extends BaseApiController
|
||||
throw new \Exception('Invalid 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))
|
||||
{
|
||||
|
@@ -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'])
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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,79 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function AddItemToShoppingList(\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->AddProductToShoppingList($productId, $amount, $listId);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function RemoveItemFromShoppingList(\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 +448,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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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()
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -262,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,64 @@ 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';
|
||||
}
|
||||
|
||||
return '/about';
|
||||
}
|
||||
|
||||
public function About(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'about', [
|
||||
@@ -39,23 +97,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');
|
||||
}
|
||||
}
|
||||
|
@@ -2,11 +2,8 @@
|
||||
"openapi": "3.0.0",
|
||||
"info": {
|
||||
"title": "grocy REST API",
|
||||
"description": "Authentication is done via API keys (header *GROCY-API-KEY*), which you can manage [here](PlaceHolderManageApiKeysUrl).<br>Additionally requests from within the frontend are also valid (via session cookie).",
|
||||
"description": "Authentication is done via API keys (header *GROCY-API-KEY* or same named query parameter), which you can manage [here](PlaceHolderManageApiKeysUrl).<br>Additionally requests from within the frontend are also valid (via session cookie).",
|
||||
"version": "xxx",
|
||||
"contact": {
|
||||
"email": "bernd@berrnd.de"
|
||||
},
|
||||
"license": {
|
||||
"name": "grocy.info",
|
||||
"url": "https://grocy.info"
|
||||
@@ -452,6 +449,81 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/objects/{entity}/search/{searchString}": {
|
||||
"get": {
|
||||
"summary": "Returns all objects of the given entity where the field \"name\" contains the search string (so only works for entities which have that field)",
|
||||
"tags": [
|
||||
"Generic entity interactions"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "entity",
|
||||
"required": true,
|
||||
"description": "A valid entity name",
|
||||
"schema": {
|
||||
"$ref": "#/components/internalSchemas/ExposedEntity"
|
||||
}
|
||||
},
|
||||
{
|
||||
"in": "path",
|
||||
"name": "searchString",
|
||||
"required": true,
|
||||
"description": "The search string",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "An entity object",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"oneOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/Product"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/Chore"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/Battery"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/Location"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/QuantityUnit"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/ShoppingListItem"
|
||||
},
|
||||
{
|
||||
"$ref": "#/components/schemas/StockEntry"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/userfields/{entity}/{objectId}": {
|
||||
"get": {
|
||||
"summary": "Returns all userfields with their values of the given object of the given entity",
|
||||
@@ -580,6 +652,37 @@
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "force_serve_as",
|
||||
"required": false,
|
||||
"description": "Force the file to be served as the given type",
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"picture"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "best_fit_height",
|
||||
"required": false,
|
||||
"description": "Only when using `force_serve_as` = `picture`: Downscale the picture to the given height while maintaining the aspect ratio",
|
||||
"schema": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
,
|
||||
{
|
||||
"in": "query",
|
||||
"name": "best_fit_width",
|
||||
"required": false,
|
||||
"description": "Only when using `force_serve_as` = `picture`: Downscale the picture to the given width while maintaining the aspect ratio",
|
||||
"schema": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
@@ -957,7 +1060,7 @@
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"in": "query",
|
||||
"name": "expiring_days",
|
||||
"required": false,
|
||||
"description": "The number of days in which products are considered expiring soon",
|
||||
@@ -1025,47 +1128,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/products/by-barcode/{barcode}": {
|
||||
"get": {
|
||||
"summary": "Returns details of the given product by its barcode",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "barcode",
|
||||
"required": true,
|
||||
"description": "Barcode",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A ProductDetailsResponse object",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ProductDetailsResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Unknown barcode)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/products/{productId}/entries": {
|
||||
"get": {
|
||||
"summary": "Returns all stock entries of the given product in order of next use (first expiring first, then first in first out)",
|
||||
@@ -1180,7 +1242,7 @@
|
||||
"properties": {
|
||||
"amount": {
|
||||
"type": "number",
|
||||
"format": "double",
|
||||
"format": "number",
|
||||
"description": "The amount to add - please note that when tare weight handling for the product is enabled, this needs to be the amount including the container weight (gross), the amount to be posted will be automatically calculated based on what is in stock and the defined tare weight"
|
||||
},
|
||||
"best_before_date": {
|
||||
@@ -1193,7 +1255,7 @@
|
||||
},
|
||||
"price": {
|
||||
"type": "number",
|
||||
"format": "double",
|
||||
"format": "number",
|
||||
"description": "The price per purchase quantity unit in configured currency"
|
||||
},
|
||||
"location_id": {
|
||||
@@ -1261,7 +1323,7 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"amount": {
|
||||
"type": "double",
|
||||
"type": "number",
|
||||
"description": "The amount to remove - please note that when tare weight handling for the product is enabled, this needs to be the amount including the container weight (gross), the amount to be posted will be automatically calculated based on what is in stock and the defined tare weight"
|
||||
},
|
||||
"transaction_type": {
|
||||
@@ -1354,7 +1416,7 @@
|
||||
},
|
||||
"price": {
|
||||
"type": "number",
|
||||
"format": "double",
|
||||
"format": "number",
|
||||
"description": "If omitted, the last price of the product is used (only applies to added products)"
|
||||
}
|
||||
}
|
||||
@@ -1411,7 +1473,344 @@
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"amount": {
|
||||
"type": "double",
|
||||
"type": "number",
|
||||
"description": "The amount to mark as opened"
|
||||
},
|
||||
"stock_entry_id": {
|
||||
"type": "string",
|
||||
"description": "A specific stock entry id to open, if used, the amount has to be 1"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
"amount": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "The operation was successful",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/StockLogEntry"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Not existing product, given amount > current unopened stock amount)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/products/by-barcode/{barcode}": {
|
||||
"get": {
|
||||
"summary": "Returns details of the given product by its barcode",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "barcode",
|
||||
"required": true,
|
||||
"description": "Barcode",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A ProductDetailsResponse object",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ProductDetailsResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Unknown barcode)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/products/by-barcode/{barcode}/add": {
|
||||
"post": {
|
||||
"summary": "Adds the given amount of the by its barcode given product to stock",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "barcode",
|
||||
"required": true,
|
||||
"description": "Barcode",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"amount": {
|
||||
"type": "number",
|
||||
"format": "number",
|
||||
"description": "The amount to add - please note that when tare weight handling for the product is enabled, this needs to be the amount including the container weight (gross), the amount to be posted will be automatically calculated based on what is in stock and the defined tare weight"
|
||||
},
|
||||
"best_before_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "The best before date of the product to add, when omitted, the current date is used"
|
||||
},
|
||||
"transaction_type": {
|
||||
"$ref": "#/components/internalSchemas/StockTransactionType"
|
||||
},
|
||||
"price": {
|
||||
"type": "number",
|
||||
"format": "number",
|
||||
"description": "The price per purchase quantity unit in configured currency"
|
||||
},
|
||||
"location_id": {
|
||||
"type": "number",
|
||||
"format": "integer",
|
||||
"description": "If omitted, the default location of the product is used"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
"amount": 1,
|
||||
"best_before_date": "2019-01-19",
|
||||
"transaction_type": "purchase",
|
||||
"price": "1.99"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "The operation was successful",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/StockLogEntry"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Not existing product, invalid transaction type)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/products/by-barcode/{barcode}/consume": {
|
||||
"post": {
|
||||
"summary": "Removes the given amount of the by its barcode given product from stock",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "barcode",
|
||||
"required": true,
|
||||
"description": "Barcode",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"amount": {
|
||||
"type": "number",
|
||||
"description": "The amount to remove - please note that when tare weight handling for the product is enabled, this needs to be the amount including the container weight (gross), the amount to be posted will be automatically calculated based on what is in stock and the defined tare weight"
|
||||
},
|
||||
"transaction_type": {
|
||||
"$ref": "#/components/internalSchemas/StockTransactionType"
|
||||
},
|
||||
"spoiled": {
|
||||
"type": "boolean",
|
||||
"description": "True when the given product was spoiled, defaults to false"
|
||||
},
|
||||
"stock_entry_id": {
|
||||
"type": "string",
|
||||
"description": "A specific stock entry id to consume, if used, the amount has to be 1"
|
||||
},
|
||||
"recipe_id": {
|
||||
"type": "number",
|
||||
"format": "integer",
|
||||
"description": "A valid recipe id for which this product was used (for statistical purposes only)"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
"amount": 1,
|
||||
"transaction_type": "consume",
|
||||
"spoiled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "The operation was successful",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/StockLogEntry"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Not existing product, invalid transaction type, given amount > current stock amount)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/products/by-barcode/{barcode}/inventory": {
|
||||
"post": {
|
||||
"summary": "Inventories the by its barcode given product (adds/removes based on the given new amount)",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "barcode",
|
||||
"required": true,
|
||||
"description": "Barcode",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"new_amount": {
|
||||
"type": "integer",
|
||||
"description": "The new current amount for the given product - please note that when tare weight handling for the product is enabled, this needs to be the amount including the container weight (gross), the amount to be posted will be automatically calculated based on what is in stock and the defined tare weight"
|
||||
},
|
||||
"best_before_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "The best before date which applies to added products"
|
||||
},
|
||||
"location_id": {
|
||||
"type": "number",
|
||||
"format": "integer",
|
||||
"description": "If omitted, the default location of the product is used (only applies to added products)"
|
||||
},
|
||||
"price": {
|
||||
"type": "number",
|
||||
"format": "number",
|
||||
"description": "If omitted, the last price of the product is used (only applies to added products)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "The operation was successful",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/StockLogEntry"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Not existing product)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/products/by-barcode/{barcode}/open": {
|
||||
"post": {
|
||||
"summary": "Marks the given amount of the by its barcode given product as opened",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "barcode",
|
||||
"required": true,
|
||||
"description": "Barcode",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"amount": {
|
||||
"type": "number",
|
||||
"description": "The amount to mark as opened"
|
||||
},
|
||||
"stock_entry_id": {
|
||||
@@ -1534,6 +1933,151 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/shoppinglist/add-product": {
|
||||
"post": {
|
||||
"summary": "Adds the given product to the given shopping list",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"product_id": {
|
||||
"type": "integer",
|
||||
"description": "A valid product id of the item on the shopping list"
|
||||
},
|
||||
"list_id": {
|
||||
"type": "integer",
|
||||
"description": "A valid shopping list id, when omitted, the default shopping list (with id 1) is used"
|
||||
},
|
||||
"product_amount": {
|
||||
"type": "integer",
|
||||
"description": "The amount of product units to add, when omitted, the default amount of 1 is used"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
"product_id": 3,
|
||||
"list_id": 2,
|
||||
"product_amount": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": "The operation was successful"
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Not existing shopping list, Invalid product id supplied)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/shoppinglist/remove-product": {
|
||||
"post": {
|
||||
"summary": "Removes the given product from the given shopping list, if it is on it",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"product_id": {
|
||||
"type": "integer",
|
||||
"description": "A valid product id of the item on the shopping list"
|
||||
},
|
||||
"list_id": {
|
||||
"type": "integer",
|
||||
"description": "A valid shopping list id, when omitted, the default shopping list (with id 1) is used"
|
||||
},
|
||||
"product_amount": {
|
||||
"type": "integer",
|
||||
"description": "The amount of product units to remove, when omitted, the default amount of 1 is used"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
"product_id": 3,
|
||||
"list_id": 2,
|
||||
"product_amount": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": "The operation was successful"
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Not existing shopping list, Invalid product id supplied)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/bookings/{bookingId}": {
|
||||
"get": {
|
||||
"summary": "Returns the given stock booking",
|
||||
"tags": [
|
||||
"Stock"
|
||||
],
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "bookingId",
|
||||
"required": true,
|
||||
"description": "A valid stock booking id",
|
||||
"schema": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "A StockLogEntry object",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/StockLogEntry"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful (possible errors are: Invalid stock booking id)",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/stock/bookings/{bookingId}/undo": {
|
||||
"post": {
|
||||
"summary": "Undoes a booking",
|
||||
@@ -1921,6 +2465,48 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/chores/executions/calculate-next-assignments": {
|
||||
"post": {
|
||||
"summary": "(Re)calculates all next user assignments of all chores",
|
||||
"tags": [
|
||||
"Chores"
|
||||
],
|
||||
"requestBody": {
|
||||
"required": false,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"chore_id": {
|
||||
"type": "integer",
|
||||
"description": "The chore id of the chore which next user assignment should be (re)calculated, when omitted, the next user assignments of all chores will (re)caluclated"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
"chore_id": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": "The operation was successful"
|
||||
},
|
||||
"400": {
|
||||
"description": "The operation was not successful",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/GenericErrorResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/batteries": {
|
||||
"get": {
|
||||
"summary": "Returns all batteries incl. the next estimated charge time per battery",
|
||||
@@ -2251,6 +2837,7 @@
|
||||
"batteries",
|
||||
"locations",
|
||||
"quantity_units",
|
||||
"quantity_unit_conversions",
|
||||
"shopping_list",
|
||||
"shopping_lists",
|
||||
"recipes",
|
||||
@@ -2262,6 +2849,8 @@
|
||||
"equipment",
|
||||
"api_keys",
|
||||
"userfields",
|
||||
"userentities",
|
||||
"userobjects",
|
||||
"meal_plan"
|
||||
]
|
||||
},
|
||||
@@ -2314,11 +2903,11 @@
|
||||
},
|
||||
"qu_factor_purchase_to_stock": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
"format": "number"
|
||||
},
|
||||
"tare_weight": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
"format": "number"
|
||||
},
|
||||
"barcode": {
|
||||
"type": "string",
|
||||
@@ -2440,7 +3029,7 @@
|
||||
"type": "integer"
|
||||
},
|
||||
"amount": {
|
||||
"type": "double"
|
||||
"type": "number"
|
||||
},
|
||||
"best_before_date": {
|
||||
"type": "string",
|
||||
@@ -2455,7 +3044,7 @@
|
||||
"description": "A unique id which references this stock entry during its lifetime"
|
||||
},
|
||||
"price": {
|
||||
"type": "double"
|
||||
"type": "number"
|
||||
},
|
||||
"open": {
|
||||
"type": "integer"
|
||||
@@ -2500,7 +3089,7 @@
|
||||
},
|
||||
"costs": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
"format": "number"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
@@ -2543,7 +3132,7 @@
|
||||
},
|
||||
"last_price": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
"format": "number"
|
||||
},
|
||||
"location": {
|
||||
"$ref": "#/components/schemas/Location"
|
||||
@@ -2554,7 +3143,7 @@
|
||||
},
|
||||
"spoil_rate_percent": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
"format": "number"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
@@ -2619,7 +3208,7 @@
|
||||
},
|
||||
"price": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
"format": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2640,7 +3229,7 @@
|
||||
},
|
||||
"qu_factor_purchase_to_stock": {
|
||||
"type": "number",
|
||||
"format": "double"
|
||||
"format": "number"
|
||||
},
|
||||
"barcode": {
|
||||
"type": "string",
|
||||
@@ -2673,6 +3262,9 @@
|
||||
"next_estimated_execution_time": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"next_execution_assigned_user": {
|
||||
"$ref": "#/components/schemas/UserDto"
|
||||
}
|
||||
},
|
||||
"example": {
|
||||
@@ -2839,7 +3431,7 @@
|
||||
"type": "string"
|
||||
},
|
||||
"amount": {
|
||||
"type": "double",
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"default": 0,
|
||||
"description": "The manual entered amount"
|
||||
@@ -2911,15 +3503,39 @@
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"manually",
|
||||
"dynamic-regular"
|
||||
"dynamic-regular",
|
||||
"daily",
|
||||
"weekly",
|
||||
"monthly"
|
||||
]
|
||||
},
|
||||
"period_config": {
|
||||
"type": "string"
|
||||
},
|
||||
"period_days": {
|
||||
"type": "integer"
|
||||
},
|
||||
"track_date_only": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"rollover": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"assignment_type": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"no-assignment",
|
||||
"who-least-did-first",
|
||||
"random",
|
||||
"in-alphabetical-order"
|
||||
]
|
||||
},
|
||||
"assignment_config": {
|
||||
"type": "string"
|
||||
},
|
||||
"next_execution_assigned_to_user_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"row_created_timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
@@ -2955,7 +3571,7 @@
|
||||
"type": "integer"
|
||||
},
|
||||
"amount": {
|
||||
"type": "double"
|
||||
"type": "number"
|
||||
},
|
||||
"best_before_date": {
|
||||
"type": "string",
|
||||
@@ -3003,12 +3619,25 @@
|
||||
"type": "integer"
|
||||
},
|
||||
"amount": {
|
||||
"type": "double"
|
||||
"type": "number"
|
||||
},
|
||||
"amount_aggregated": {
|
||||
"type": "number"
|
||||
},
|
||||
"amount_opened": {
|
||||
"type": "number"
|
||||
},
|
||||
"amount_opened_aggregated": {
|
||||
"type": "number"
|
||||
},
|
||||
"best_before_date": {
|
||||
"type": "string",
|
||||
"format": "date",
|
||||
"description": "The next best before date for this product"
|
||||
},
|
||||
"is_aggregated_amount": {
|
||||
"type": "boolean",
|
||||
"description": "Indicates wheter this product has sub-products or not / if the fields `amount_aggregated` and `amount_opened_aggregated` are filled"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3052,19 +3681,19 @@
|
||||
"expiring_products": {
|
||||
"type": "array",
|
||||
"items":{
|
||||
"$ref": "#/components/schemas/Product"
|
||||
"$ref": "#/components/schemas/CurrentStockResponse"
|
||||
}
|
||||
},
|
||||
"expired_products": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Product"
|
||||
"$ref": "#/components/schemas/CurrentStockResponse"
|
||||
}
|
||||
},
|
||||
"missing_products": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Product"
|
||||
"$ref": "#/components/schemas/CurrentStockResponse"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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')
|
||||
@@ -139,9 +149,20 @@ function Setting(string $name, $value)
|
||||
define('GROCY_' . $name, file_get_contents($settingOverrideFile));
|
||||
}
|
||||
elseif (getenv('GROCY_' . $name) !== false) // An environment variable with the same name and prefix GROCY_ overwrites the given setting
|
||||
{
|
||||
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
|
||||
{
|
||||
define('GROCY_' . $name, $value);
|
||||
@@ -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"
|
||||
|
@@ -281,3 +281,35 @@ 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"
|
||||
|
@@ -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"
|
||||
@@ -1394,3 +1394,279 @@ msgstr ""
|
||||
|
||||
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"
|
||||
|
@@ -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"
|
||||
|
@@ -277,3 +277,36 @@ 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 ""
|
||||
|
||||
|
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"
|
||||
|
@@ -278,3 +278,35 @@ 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 ""
|
||||
|
@@ -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"
|
||||
@@ -1326,3 +1326,253 @@ 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 ""
|
||||
|
@@ -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,7 +1,7 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||
# Ankue <ankue.spam@gmail.com>, 2019
|
||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -9,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: Ankue <ankue.spam@gmail.com>, 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"
|
||||
@@ -43,8 +43,8 @@ msgstr[1] "Piezas"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Paquetes"
|
||||
msgstr[1] "Paquetes"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
@@ -53,8 +53,8 @@ msgstr[1] "Vasos"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Envases"
|
||||
msgstr[1] "Envases"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
@@ -63,8 +63,8 @@ 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"
|
||||
@@ -283,3 +283,35 @@ 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 ""
|
||||
|
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"
|
@@ -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"
|
||||
@@ -162,7 +163,7 @@ msgid "Italian"
|
||||
msgstr "Italiano"
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr "Demo in lingue diverse"
|
||||
msgstr "Demo in lingua diversa"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr "Questo è il contenuto della nota dell'ingrediente della ricetta"
|
||||
@@ -172,14 +173,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 +198,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 +214,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 +262,57 @@ 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"
|
||||
|
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,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: 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/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 ""
|
@@ -1,6 +1,5 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Giel Janssens <gieljnssns@me.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -8,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: Giel Janssens <gieljnssns@me.com>, 2019\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 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"
|
||||
@@ -27,10 +26,25 @@ msgid "moment_locale"
|
||||
msgstr "nl"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr "nl-NL"
|
||||
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 ""
|
||||
|
@@ -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: 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: ta\n"
|
||||
"Language: no\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 ""
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Andreas Henden <chairman2s.ah@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: Andreas Henden <chairman2s.ah@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 "manuelt"
|
||||
|
||||
msgid "dynamic-regular"
|
||||
msgstr "Automatisk"
|
@@ -48,3 +48,6 @@ msgstr "nb-NO"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "nb"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "nb_NO"
|
||||
|
@@ -282,3 +282,29 @@ 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
|
||||
# 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"
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Andreas Henden <chairman2s.ah@gmail.com>, 2019
|
||||
# Marius Borø <blizzwave@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
@@ -18,17 +19,17 @@ msgstr ""
|
||||
"X-Domain: grocy/strings\n"
|
||||
|
||||
msgid "Stock overview"
|
||||
msgstr "Husholdning"
|
||||
msgstr "Beholdningsoversikt"
|
||||
|
||||
msgid "%s product expires"
|
||||
msgid_plural "%s products expiring"
|
||||
msgstr[0] "%s går ut på dato"
|
||||
msgstr[0] "%s produkt går ut på dato"
|
||||
msgstr[1] "%s produkter går ut på dato"
|
||||
|
||||
msgid "within the next day"
|
||||
msgid_plural "within the next %s days"
|
||||
msgstr[0] "innen neste dag"
|
||||
msgstr[1] "innen de %s dagene"
|
||||
msgstr[0] "i løpet av neste dag"
|
||||
msgstr[1] "i løpet av de %s neste dagene"
|
||||
|
||||
msgid "%s product is already expired"
|
||||
msgid_plural "%s products are already expired"
|
||||
@@ -37,8 +38,8 @@ msgstr[1] "%s produkter har gått ut på dato"
|
||||
|
||||
msgid "%s product is below defined min. stock amount"
|
||||
msgid_plural "%s products are below defined min. stock amount"
|
||||
msgstr[0] "%s produkt er under definert min. for husholdningen"
|
||||
msgstr[1] "%s produkter er under definert min. for husholdningen"
|
||||
msgstr[0] "%s produkt er under satt minimum for beholdningen"
|
||||
msgstr[1] "%s produkter er under satt minimum for beholdningen"
|
||||
|
||||
msgid "Product"
|
||||
msgstr "Produkt"
|
||||
@@ -49,19 +50,19 @@ msgstr[0] "%s Produkt"
|
||||
msgstr[1] "%s Produkter"
|
||||
|
||||
msgid "Amount"
|
||||
msgstr "Antall"
|
||||
msgstr "Mengde"
|
||||
|
||||
msgid "Next best before date"
|
||||
msgstr "Kommende best før dato"
|
||||
msgstr "Neste best før dato"
|
||||
|
||||
msgid "Logout"
|
||||
msgstr "Logg ut"
|
||||
|
||||
msgid "Chores overview"
|
||||
msgstr "Oversikt husarbeid"
|
||||
msgstr "Husarbeidsoversikt"
|
||||
|
||||
msgid "Batteries overview"
|
||||
msgstr "Oversikt batteri"
|
||||
msgstr "Batterioversikt"
|
||||
|
||||
msgid "Purchase"
|
||||
msgstr "Innkjøp"
|
||||
@@ -70,16 +71,16 @@ msgid "Consume"
|
||||
msgstr "Forbruk produkt"
|
||||
|
||||
msgid "Inventory"
|
||||
msgstr "Endre husholdning"
|
||||
msgstr "Beholdning"
|
||||
|
||||
msgid "Shopping list"
|
||||
msgstr "Handleliste"
|
||||
|
||||
msgid "Chore tracking"
|
||||
msgstr "Logge husarbeid"
|
||||
msgstr "Husarbeidsregistrering"
|
||||
|
||||
msgid "Battery tracking"
|
||||
msgstr "Batteri ladesyklus"
|
||||
msgstr "Batteriregistrering"
|
||||
|
||||
msgid "Locations"
|
||||
msgstr "Lokasjoner"
|
||||
@@ -97,10 +98,10 @@ msgid "Chore"
|
||||
msgstr "Husarbeid"
|
||||
|
||||
msgid "Next estimated tracking"
|
||||
msgstr "Neste handling"
|
||||
msgstr "Neste estimterte registrering"
|
||||
|
||||
msgid "Last tracked"
|
||||
msgstr "Sist logget"
|
||||
msgstr "Sist registert"
|
||||
|
||||
msgid "Battery"
|
||||
msgstr "Batteri"
|
||||
@@ -109,7 +110,7 @@ msgid "Last charged"
|
||||
msgstr "Sist ladet"
|
||||
|
||||
msgid "Next planned charge cycle"
|
||||
msgstr "Neste planlagte ladesyklus"
|
||||
msgstr "Neste planlagte oppladning"
|
||||
|
||||
msgid "Best before"
|
||||
msgstr "Best før"
|
||||
@@ -118,13 +119,13 @@ msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
msgid "Product overview"
|
||||
msgstr "Produkt oversikt"
|
||||
msgstr "Produktoversikt"
|
||||
|
||||
msgid "Stock quantity unit"
|
||||
msgstr "Forpakningstype i husholdningen"
|
||||
msgstr "Forpakningstype i beholdningen"
|
||||
|
||||
msgid "Stock amount"
|
||||
msgstr "Husholdning"
|
||||
msgstr "Standardmengde"
|
||||
|
||||
msgid "Last purchased"
|
||||
msgstr "Sist kjøpt"
|
||||
@@ -140,34 +141,34 @@ msgstr "Strekkodesøk deaktivert"
|
||||
|
||||
msgid ""
|
||||
"will be added to the list of barcodes for the selected product on submit"
|
||||
msgstr "Blir lagt til liste over strekkoder når produkt blir lagt inn."
|
||||
msgstr "Blir lagt til liste over strekkoder når produkt blir lagt inn"
|
||||
|
||||
msgid "New amount"
|
||||
msgstr "Nytt antall"
|
||||
msgstr "Ny mengde"
|
||||
|
||||
msgid "Note"
|
||||
msgstr "Info"
|
||||
|
||||
msgid "Tracked time"
|
||||
msgstr "Tid utført/ ladet"
|
||||
msgstr "Tid registrert"
|
||||
|
||||
msgid "Chore overview"
|
||||
msgstr "Oversikt husarbeid"
|
||||
msgstr "Husarbeidsoversikt"
|
||||
|
||||
msgid "Tracked count"
|
||||
msgstr "Antall utførelser/ ladninger"
|
||||
msgstr "Antall registrerte"
|
||||
|
||||
msgid "Battery overview"
|
||||
msgstr "Batteri oversikt"
|
||||
msgstr "Batterioversikt"
|
||||
|
||||
msgid "Charge cycles count"
|
||||
msgstr "Antall ladesykluser"
|
||||
msgstr "Antall oppladninger"
|
||||
|
||||
msgid "Create shopping list item"
|
||||
msgstr "Opprett handelisteoppføring"
|
||||
msgstr "Opprett punkt i handeliste"
|
||||
|
||||
msgid "Edit shopping list item"
|
||||
msgstr "Endre på handlelistoppføring"
|
||||
msgstr "Endre punkt i handleliste"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "Lagre"
|
||||
@@ -182,13 +183,13 @@ msgid "Location"
|
||||
msgstr "Lokasjon"
|
||||
|
||||
msgid "Min. stock amount"
|
||||
msgstr "Minimumsantall for husholdningen"
|
||||
msgstr "Min. beholdning"
|
||||
|
||||
msgid "QU purchase"
|
||||
msgstr "Forpakingsfaktor innkjøp"
|
||||
|
||||
msgid "QU stock"
|
||||
msgstr "Forpakingsfaktor husholdning"
|
||||
msgstr "Forpakingsfaktor beholdning"
|
||||
|
||||
msgid "QU factor"
|
||||
msgstr "Forpakingsfaktor"
|
||||
@@ -203,7 +204,7 @@ msgid "Barcode(s)"
|
||||
msgstr "Strekkode(r)"
|
||||
|
||||
msgid "Minimum stock amount"
|
||||
msgstr "Minimumsantall for husholdningen"
|
||||
msgstr "Minimumsbeholdning"
|
||||
|
||||
msgid "Default best before days"
|
||||
msgstr "Standard for antall dager best før"
|
||||
@@ -212,7 +213,7 @@ msgid "Quantity unit purchase"
|
||||
msgstr "Forpakning kjøpt"
|
||||
|
||||
msgid "Quantity unit stock"
|
||||
msgstr "Forpakning husholdning"
|
||||
msgstr "Forpakning beholdning"
|
||||
|
||||
msgid "Factor purchase to stock quantity unit"
|
||||
msgstr "Innkjøpsfaktor for forpakning"
|
||||
@@ -230,7 +231,7 @@ msgid "Period days"
|
||||
msgstr "Antall dager for gjentakelse"
|
||||
|
||||
msgid "Create chore"
|
||||
msgstr "Opprett husarbeid oppgave"
|
||||
msgstr "Opprett husarbeidsoppgave"
|
||||
|
||||
msgid "Used in"
|
||||
msgstr "Brukt"
|
||||
@@ -242,7 +243,7 @@ msgid "Edit battery"
|
||||
msgstr "Endre batteri"
|
||||
|
||||
msgid "Edit chore"
|
||||
msgstr "Endre husarbeid oppgave"
|
||||
msgstr "Endre husarbeidsoppgave"
|
||||
|
||||
msgid "Edit quantity unit"
|
||||
msgstr "Endre forpakning"
|
||||
@@ -266,7 +267,7 @@ msgid "never"
|
||||
msgstr "aldri"
|
||||
|
||||
msgid "Add products that are below defined min. stock amount"
|
||||
msgstr "Legg til produkt som er under minimumsnivå for husholdningen"
|
||||
msgstr "Legg til produkt som er under minimumsbeholdningen"
|
||||
|
||||
msgid ""
|
||||
"For purchases this amount of days will be added to today for the best before"
|
||||
@@ -275,7 +276,7 @@ msgstr "Når innkjøp gjøres vil dette bli brukt som antall dager \"best før\"
|
||||
|
||||
msgid "This means 1 %1$s purchased will be converted into %2$s %3$s in stock"
|
||||
msgstr ""
|
||||
"Dette betyr at %1$s innkjøp vil bli gjort om til %2$s %3$s i husholdningen"
|
||||
"Dette betyr at %1$s innkjøp vil bli gjort om til %2$s %3$s i beholdningen"
|
||||
|
||||
msgid "Login"
|
||||
msgstr "Logg inn"
|
||||
@@ -299,7 +300,7 @@ msgid "No"
|
||||
msgstr "Nei"
|
||||
|
||||
msgid "Are you sure to delete chore \"%s\"?"
|
||||
msgstr "Er du sikker på du ønsker å slette husarbeid oppgave \"%s\"?"
|
||||
msgstr "Er du sikker på du ønsker å slette husarbeidsoppgave \"%s\"?"
|
||||
|
||||
msgid "\"%s\" could not be resolved to a product, how do you want to proceed?"
|
||||
msgstr "\"%s\" kunne ikke bli tildelt et produkt, hvordan ønsker du å fortsette?"
|
||||
@@ -314,7 +315,7 @@ msgid "Add as new product"
|
||||
msgstr "Legg til som nytt produkt"
|
||||
|
||||
msgid "Add as barcode to existing product"
|
||||
msgstr "Legg til strekkode til allerede eksisterende produkt"
|
||||
msgstr "Legg til strekkode til eksisterende produkt"
|
||||
|
||||
msgid "Add as new product and prefill barcode"
|
||||
msgstr "Legg til som nytt produkt med forhåndsfylt strekkode"
|
||||
@@ -332,7 +333,7 @@ msgid "Manage API keys"
|
||||
msgstr "Administrer API-Keys"
|
||||
|
||||
msgid "REST API & data model documentation"
|
||||
msgstr "REST-API & Datamodell Dokumentasjon"
|
||||
msgstr "REST-API & datamodell-dokumentasjon"
|
||||
|
||||
msgid "API keys"
|
||||
msgstr "API-Keys"
|
||||
@@ -350,23 +351,21 @@ msgid "Created"
|
||||
msgstr "Opprettet"
|
||||
|
||||
msgid "This product is not in stock"
|
||||
msgstr "Dette produktet er ikke i husholdningen"
|
||||
msgstr "Dette produktet er ikke i beholdningen"
|
||||
|
||||
msgid "This means %s will be added to stock"
|
||||
msgstr "Dette betyr at %s vil bli lagt til i husholdningen"
|
||||
msgstr "Dette betyr at %s vil bli lagt til i beholdningen"
|
||||
|
||||
msgid "This means %s will be removed from stock"
|
||||
msgstr "Dette betyr at %s vil bli fjernet fra husholdningen"
|
||||
msgstr "Dette betyr at %s vil bli fjernet fra beholdningen"
|
||||
|
||||
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 ""
|
||||
"Dette betyr at det er estimert at den nye utførelsen av denne husarbeid "
|
||||
"oppgaven er logget %s dag etter den sist var logget"
|
||||
|
||||
msgid "Removed %1$s of %2$s from stock"
|
||||
msgstr "Fjernet %1$s %2$s fra husholdnigen"
|
||||
msgstr "Fjernet %1$s %2$s fra beholdningen"
|
||||
|
||||
msgid "About grocy"
|
||||
msgstr "Om Grocy"
|
||||
@@ -378,19 +377,19 @@ msgid "Released on"
|
||||
msgstr "Utgitt"
|
||||
|
||||
msgid "Added %1$s of %2$s to stock"
|
||||
msgstr "Lagt til %1$s %2$s i husholdningen"
|
||||
msgstr "Lagt til %1$s %2$s i beholdningen"
|
||||
|
||||
msgid "Stock amount of %1$s is now %2$s"
|
||||
msgstr "Husholdning av %1$s er nå %2$s"
|
||||
msgstr "Beholdning av %1$s er nå %2$s"
|
||||
|
||||
msgid "Tracked execution of chore %1$s on %2$s"
|
||||
msgstr "Utførte husarbeid oppgave \"%1$s\" den %2$s"
|
||||
msgstr "Registrerte husarbeidsoppgave \"%1$s\" den %2$s"
|
||||
|
||||
msgid "Tracked charge cycle of battery %1$s on %2$s"
|
||||
msgstr "Logget lading av batteri %1$s den %2$s"
|
||||
msgstr "Registrert lading av batteri %1$s den %2$s"
|
||||
|
||||
msgid "Consume all %s which are currently in stock"
|
||||
msgstr "Forbruk alle %s som er i husholdningen"
|
||||
msgstr "Forbruk alle %s i beholdningen"
|
||||
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
@@ -399,7 +398,7 @@ msgid "Track charge cycle of battery %s"
|
||||
msgstr "%s ladet"
|
||||
|
||||
msgid "Track execution of chore %s"
|
||||
msgstr "Utfør husarbeidsoppgave \"%s\""
|
||||
msgstr "Registrerte husarbeidsoppgave \"%s\""
|
||||
|
||||
msgid "Filter by location"
|
||||
msgstr "Filtrér etter lokasjon"
|
||||
@@ -426,13 +425,13 @@ msgid "A location is required"
|
||||
msgstr "En lokasjon kreves"
|
||||
|
||||
msgid "The amount cannot be lower than %s"
|
||||
msgstr "Antallet kan ikke være lavere enn %s"
|
||||
msgstr "Mengden kan ikke være lavere enn %s"
|
||||
|
||||
msgid "This cannot be negative"
|
||||
msgstr "Dette kan ikke være negativt"
|
||||
|
||||
msgid "A quantity unit is required"
|
||||
msgstr "Forpakning antall/størrelse kreves"
|
||||
msgstr "Forpakning mengde/størrelse kreves"
|
||||
|
||||
msgid "A period type is required"
|
||||
msgstr "En periodetype kreves"
|
||||
@@ -444,7 +443,7 @@ msgid "Settings"
|
||||
msgstr "Innstillinger"
|
||||
|
||||
msgid "This can only be before now"
|
||||
msgstr "Dette kan kun være før nå"
|
||||
msgstr "Dette kan kun være før nå tid"
|
||||
|
||||
msgid "Calendar"
|
||||
msgstr "Kalender"
|
||||
@@ -462,7 +461,7 @@ msgid "Ingredients list"
|
||||
msgstr "Liste over ingredienser"
|
||||
|
||||
msgid "Add recipe ingredient"
|
||||
msgstr "Legg ingrediens til oppskrift"
|
||||
msgstr "Legg til ingrediens i oppskrift"
|
||||
|
||||
msgid "Edit recipe ingredient"
|
||||
msgstr "Endre ingrediens i oppskrift"
|
||||
@@ -486,17 +485,16 @@ msgid "Put missing products on shopping list"
|
||||
msgstr "Legg manglende produkter til handlelisten"
|
||||
|
||||
msgid "Enough in stock"
|
||||
msgstr "Nok i husholdningen"
|
||||
msgstr "Nok i beholdningen"
|
||||
|
||||
msgid ""
|
||||
"Not enough in stock, %s ingredient missing but already on the shopping list"
|
||||
msgid_plural ""
|
||||
"Not enough in stock, %s ingredients missing but already on the shopping list"
|
||||
msgstr[0] ""
|
||||
"Ikke nok i husholdningen, %s ingrediens mangler, men den er på handlelisten."
|
||||
"Ikke nok i beholdningen, %s ingrediens mangler, men den er på handlelisten."
|
||||
msgstr[1] ""
|
||||
"Ikke nok i husholdningen, %s ingredienser mangler, men de er på "
|
||||
"handlelisten."
|
||||
"Ikke nok i beholdningen, %s ingredienser mangler, men de er på handlelisten."
|
||||
|
||||
msgid "Expand to fullscreen"
|
||||
msgstr "Full skjerm"
|
||||
@@ -511,7 +509,7 @@ msgid "Recipe"
|
||||
msgstr "Oppskrift"
|
||||
|
||||
msgid "Not enough in stock, %1$s missing, %2$s already on shopping list"
|
||||
msgstr "Ikke nok i husholdningen, mangler %1$s, er %2$s på handlelisten"
|
||||
msgstr "Ikke nok i beholdningen, mangler %1$s, er %2$s på handlelisten"
|
||||
|
||||
msgid "Show notes"
|
||||
msgstr "Vis notater"
|
||||
@@ -560,7 +558,7 @@ msgid "Confirm password"
|
||||
msgstr "Bekreft passord"
|
||||
|
||||
msgid "Passwords do not match"
|
||||
msgstr "Passord er ikke like"
|
||||
msgstr "Passordene er ikke like"
|
||||
|
||||
msgid "Change password"
|
||||
msgstr "Endre passord"
|
||||
@@ -614,23 +612,23 @@ msgstr[1] "%s Enheter"
|
||||
|
||||
msgid "%s chore is due to be done"
|
||||
msgid_plural "%s chores are due to be done"
|
||||
msgstr[0] "%s husarbeidsoppgave som må gjøre nå"
|
||||
msgstr[1] "%s husarbeidsoppgaver som må gjøre nå"
|
||||
msgstr[0] "%s husarbeidsoppgave som må gjøres nå"
|
||||
msgstr[1] "%s husarbeidsoppgaver som må gjøres nå"
|
||||
|
||||
msgid "%s chore is overdue to be done"
|
||||
msgid_plural "%s chores are overdue to be done"
|
||||
msgstr[0] "%s husarbeidsoppgave har gått over fristen"
|
||||
msgstr[1] "%s husarbeidsoppgaver har gått over fristen"
|
||||
msgstr[0] "%s husarbeidsoppgave har gått over fristen for utførelse"
|
||||
msgstr[1] "%s husarbeidsoppgaver har gått over fristen for utførelse"
|
||||
|
||||
msgid "%s battery is due to be charged"
|
||||
msgid_plural "%s batteries are due to be charged"
|
||||
msgstr[0] "%s batteri må lades nå"
|
||||
msgstr[1] "%s batterier må lades nå"
|
||||
msgstr[0] "%s batteri må lades"
|
||||
msgstr[1] "%s batterier må lades"
|
||||
|
||||
msgid "%s battery is overdue to be charged"
|
||||
msgid_plural "%s batteries are overdue to be charged"
|
||||
msgstr[0] "%s batteri er over fristen for å bli ladet"
|
||||
msgstr[1] "%s batterier er over fristen for å bli ladet"
|
||||
msgstr[0] "%s batteri har forfalt frist for å bli ladet"
|
||||
msgstr[1] "%s batterier har forfalt frist for å bli ladet"
|
||||
|
||||
msgid "in singular form"
|
||||
msgstr "I entall"
|
||||
@@ -642,7 +640,7 @@ msgid "This cannot be lower than %s"
|
||||
msgstr "Dette kan ikke være lavere enn %s"
|
||||
|
||||
msgid "-1 means that this product never expires"
|
||||
msgstr "Ved å skrive -1 vil produktet ikke gå ut på dato"
|
||||
msgstr "Ved å skrive \"-1\" vil produktet ikke gå ut på dato"
|
||||
|
||||
msgid "Quantity unit"
|
||||
msgstr "Forpakning"
|
||||
@@ -658,10 +656,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Er du sikker du ønsker å forbruke alle ingredienser for \"%s\" oppskriften? "
|
||||
"(Ingredienser merket med \"Ønsker du å bruke mindre/større enn normal "
|
||||
"forpakningsstørrelse??\" blir ignorert"
|
||||
"forpakningsstørrelse?\") blir ignorert"
|
||||
|
||||
msgid "Removed all ingredients of recipe \"%s\" from stock"
|
||||
msgstr "Fjern alle ingredienser for \"%s\" oppskriften fra husholdningen."
|
||||
msgstr "Fjern alle ingredienser for \"%s\" oppskriften fra beholdningen."
|
||||
|
||||
msgid "Consume all ingredients needed by this recipe"
|
||||
msgstr "Forbruk alle ingredienser for denne oppskriften"
|
||||
@@ -688,7 +686,7 @@ msgid "Due"
|
||||
msgstr "Forfall"
|
||||
|
||||
msgid "Assigned to"
|
||||
msgstr "Tildelt"
|
||||
msgstr " Tildelt til"
|
||||
|
||||
msgid "Mark task \"%s\" as completed"
|
||||
msgstr "Merk oppgave \"%s\" som ferdig"
|
||||
@@ -697,7 +695,7 @@ msgid "Uncategorized"
|
||||
msgstr "Mangler kategori"
|
||||
|
||||
msgid "Task categories"
|
||||
msgstr "Oppgave kategorier"
|
||||
msgstr "Oppgavekategorier"
|
||||
|
||||
msgid "Create task"
|
||||
msgstr "Opprett en oppgave"
|
||||
@@ -716,19 +714,19 @@ msgstr "Er du sikker du ønsker slette oppgave \"%s\"?"
|
||||
|
||||
msgid "%s task is due to be done"
|
||||
msgid_plural "%s tasks are due to be done"
|
||||
msgstr[0] "%s oppgave må gjøres nå"
|
||||
msgstr[1] "%s oppgaver må gjøres nå"
|
||||
msgstr[0] "%s oppgave må gjøres"
|
||||
msgstr[1] "%s oppgaver må gjøres"
|
||||
|
||||
msgid "%s task is overdue to be done"
|
||||
msgid_plural "%s tasks are overdue to be done"
|
||||
msgstr[0] "%s oppgave har gått over fristen"
|
||||
msgstr[1] "%s oppgaver har gått over fristen"
|
||||
msgstr[0] "%s oppgave har forfalt frist for å bli utført"
|
||||
msgstr[1] "%s oppgaver har forfalt frist for å bli utført"
|
||||
|
||||
msgid "Edit task category"
|
||||
msgstr "Endre oppgave kategori"
|
||||
msgstr "Endre oppgavekategori"
|
||||
|
||||
msgid "Create task category"
|
||||
msgstr "Opprett oppgave kategori"
|
||||
msgstr "Opprett oppgavekategori"
|
||||
|
||||
msgid "Product groups"
|
||||
msgstr "Produktgrupper"
|
||||
@@ -737,10 +735,10 @@ msgid "Ungrouped"
|
||||
msgstr "Mangler gruppe"
|
||||
|
||||
msgid "Create product group"
|
||||
msgstr "Opprett produkt gruppe"
|
||||
msgstr "Opprett produktgruppe"
|
||||
|
||||
msgid "Edit product group"
|
||||
msgstr "Endre produkt gruppe"
|
||||
msgstr "Endre produktgruppe"
|
||||
|
||||
msgid "Product group"
|
||||
msgstr "Produktgruppe"
|
||||
@@ -760,7 +758,7 @@ msgid "Filter by status"
|
||||
msgstr "Filtrér etter status"
|
||||
|
||||
msgid "Below min. stock amount"
|
||||
msgstr "Under under minimum husholdningsnivå"
|
||||
msgstr "Under under min. beholdningsmengde"
|
||||
|
||||
msgid "Expiring soon"
|
||||
msgstr "Går snart ut på dato"
|
||||
@@ -775,7 +773,7 @@ msgid "Overdue"
|
||||
msgstr "Forfalt"
|
||||
|
||||
msgid "View settings"
|
||||
msgstr "Se instillinger"
|
||||
msgstr "Se innstillinger"
|
||||
|
||||
msgid "Auto reload on external changes"
|
||||
msgstr "Automatisk fornying ved ekstern endring"
|
||||
@@ -824,7 +822,7 @@ msgid ""
|
||||
"stock amount first."
|
||||
msgstr ""
|
||||
"Dette produktet kan ikke slettes fordi det er gjenværende produkter i "
|
||||
"husholdningen"
|
||||
"beholdningen"
|
||||
|
||||
msgid "Delete not possible"
|
||||
msgstr "Ikke mulig å slette"
|
||||
@@ -892,19 +890,19 @@ msgid "Journal"
|
||||
msgstr "Logg"
|
||||
|
||||
msgid "Stock journal"
|
||||
msgstr "Husholdningslogg"
|
||||
msgstr "Beholdningslogg"
|
||||
|
||||
msgid "Filter by product"
|
||||
msgstr "Filtrér etter produkt"
|
||||
|
||||
msgid "Booking time"
|
||||
msgstr "Tid logget"
|
||||
msgstr "Tid registrert"
|
||||
|
||||
msgid "Booking type"
|
||||
msgstr "Booking type"
|
||||
msgstr "Registreringstype"
|
||||
|
||||
msgid "Undo booking"
|
||||
msgstr "Angre booking"
|
||||
msgstr "Angre registrering"
|
||||
|
||||
msgid "Undone on"
|
||||
msgstr "Angret den"
|
||||
@@ -928,7 +926,7 @@ msgid "Undo"
|
||||
msgstr "Angre"
|
||||
|
||||
msgid "Booking successfully undone"
|
||||
msgstr "Booking fjernet"
|
||||
msgstr "Registrering fjernet"
|
||||
|
||||
msgid "Charge cycle successfully undone"
|
||||
msgstr "Ladesyklus fjernet"
|
||||
@@ -937,16 +935,16 @@ msgid "This cannot be negative and must be an integral number"
|
||||
msgstr "Tallet kan ikke være negativ og må være et helt tall"
|
||||
|
||||
msgid "Disable stock fulfillment checking for this ingredient"
|
||||
msgstr "Ikke bruk husholdningsjekk for denne ingrediensen "
|
||||
msgstr "Ikke bruk beholdningsjekk for denne ingrediensen "
|
||||
|
||||
msgid "Add all list items to stock"
|
||||
msgstr "Legg alle produktene i listen til husholdningen"
|
||||
msgstr "Legg alle produktene i listen til beholdningen"
|
||||
|
||||
msgid "Add %1$s of %2$s to stock"
|
||||
msgstr "Legg til %1$s %2$s i husholdningen"
|
||||
msgstr "Legg til %1$s %2$s i beholdningen"
|
||||
|
||||
msgid "Adding shopping list item %1$s of %2$s"
|
||||
msgstr "Legger til handlelisteenhet %1$s av %2$s"
|
||||
msgstr "Legger til handleliste ting %1$s av %2$s"
|
||||
|
||||
msgid "Use a specific stock item"
|
||||
msgstr "Velg et bestemt produkt"
|
||||
@@ -955,8 +953,8 @@ msgid ""
|
||||
"The first item in this list would be picked by the default rule which is "
|
||||
"\"First expiring first, then first in first out\""
|
||||
msgstr ""
|
||||
"Første produkt på listen vil bli konsumert først i henhold til standard "
|
||||
"regelen. \"Går ut på dato først. Deretter først inn, først ut\"."
|
||||
"Første produkt på listen vil bli konsumert først i henhold til regel: \"Går "
|
||||
"ut på dato først. Deretter først inn, først ut\"."
|
||||
|
||||
msgid "Mark %1$s of %2$s as open"
|
||||
msgstr "Merk %1$s av %2$s som åpen"
|
||||
@@ -1005,17 +1003,17 @@ msgid "Show clock in header"
|
||||
msgstr "Vis klokken på toppen av siden"
|
||||
|
||||
msgid "Stock settings"
|
||||
msgstr "Husholdningsinnstillinger"
|
||||
msgstr "Beholdningsinnstillinger"
|
||||
|
||||
msgid "Shopping list to stock workflow"
|
||||
msgstr "Arbeidsflyt fra handleliste til husholding"
|
||||
msgstr "Arbeidsflyt fra handleliste til beholding"
|
||||
|
||||
msgid ""
|
||||
"Automatically do the booking using the last price and the amount of the "
|
||||
"shopping list item, if the product has \"Default best before days\" set"
|
||||
msgstr ""
|
||||
"Legg produkter automatisk til fra handlelisten. Dette vil bruke sist "
|
||||
"innkjøpspris og forutsetter at \"Standard for antall dager best før\" er "
|
||||
"Legg produkter automatisk til fra handlelisten. Dette vil bruke siste brukte"
|
||||
" innkjøpspris og forutsetter at \"Standard for antall dager best før\" er "
|
||||
"satt"
|
||||
|
||||
msgid "Skip"
|
||||
@@ -1044,9 +1042,9 @@ msgid ""
|
||||
"shopping list"
|
||||
msgstr ""
|
||||
"Som standard vil antallet som skal legges til handlelisten være slik "
|
||||
"\"nødvendig antall - husholdningsantall - handleliste antall\". Men når "
|
||||
"denne funksjonen er aktivert vil det være slik \"nødvendig antall - "
|
||||
"husholdningsantall\""
|
||||
"\"nødvendig antall - beholdningsantall - handleliste antall\". Men når denne"
|
||||
" funksjonen er aktivert vil det være slik \"nødvendig antall - "
|
||||
"beholdningsantall\""
|
||||
|
||||
msgid "Picture"
|
||||
msgstr "Bilde"
|
||||
@@ -1074,7 +1072,7 @@ msgstr ""
|
||||
"format"
|
||||
|
||||
msgid "Allow partial units in stock"
|
||||
msgstr "Tillat oppdelte enheter i husholdningen"
|
||||
msgstr "Tillat oppdelte enheter i beholdningen"
|
||||
|
||||
msgid "Enable tare weight handling"
|
||||
msgstr "Aktiver tara vekt funksjon"
|
||||
@@ -1085,9 +1083,9 @@ msgid ""
|
||||
"calculated based on what is in stock and the tare weight defined below"
|
||||
msgstr ""
|
||||
"Dette er nyttig f.eks med mel i en beholder. Ved innkjøp/ forbruk/ endring "
|
||||
"av husholdning veier du alltid hele beholderen. Gjenværende mengde vil så "
|
||||
"bli kalkulert i forhold til hva som er i husholdningen og tara vekten "
|
||||
"definert under"
|
||||
"av beholdning veier du alltid hele beholderen. Gjenværende mengde vil så bli"
|
||||
" kalkulert i forhold til hva som er i beholdningen og tara vekten definert "
|
||||
"under"
|
||||
|
||||
msgid "Tare weight"
|
||||
msgstr "Tara vekt"
|
||||
@@ -1112,10 +1110,10 @@ msgid "The current picture will be deleted when you save the recipe"
|
||||
msgstr "Nåværende bilde vil bli slettet når du larer oppskriften"
|
||||
|
||||
msgid "Show product details"
|
||||
msgstr "Vis produkt detaljer"
|
||||
msgstr "Vis produktdetaljer"
|
||||
|
||||
msgid "Stock journal for this product"
|
||||
msgstr "Husholdningslogg for dette produktet"
|
||||
msgstr "Beholdningslogg for dette produktet"
|
||||
|
||||
msgid "Show chore details"
|
||||
msgstr "Vis husarbeidarbeid detaljer"
|
||||
@@ -1144,11 +1142,11 @@ msgstr ""
|
||||
"denne?"
|
||||
|
||||
msgid "Product count"
|
||||
msgstr "Produkt telling"
|
||||
msgstr "Produkttelling"
|
||||
|
||||
msgid "Type a new product name or barcode and hit TAB to start a workflow"
|
||||
msgstr ""
|
||||
"Skriv inn et nytt produkt eller strekkode, og så trykk TAB for å starte "
|
||||
"Skriv inn et nytt produkt eller strekkode, trykk så TAB for å starte "
|
||||
"prosessen"
|
||||
|
||||
msgid ""
|
||||
@@ -1198,7 +1196,7 @@ msgid "Show less"
|
||||
msgstr "Vis mindre"
|
||||
|
||||
msgid "The amount must be between %1$s and %2$s"
|
||||
msgstr "Antallet må være mellom %1$s og %2$s"
|
||||
msgstr "Mengden må være mellom %1$s og %2$s"
|
||||
|
||||
msgid "Day of month"
|
||||
msgstr "Dag i måned"
|
||||
@@ -1280,42 +1278,42 @@ msgstr "I flertall"
|
||||
|
||||
msgid "Not enough in stock, %s ingredient missing"
|
||||
msgid_plural "Not enough in stock, %s ingredients missing"
|
||||
msgstr[0] "Ikke nok i husholdningen, %s ingrediens mangler"
|
||||
msgstr[1] "Ikke nok i husholdningen, %s ingredienser mangler"
|
||||
msgstr[0] "Ikke nok i beholdningen, %s ingrediens mangler"
|
||||
msgstr[1] "Ikke nok i beholdningen, %s ingredienser mangler"
|
||||
|
||||
msgid "The amount cannot be lower than %1$s or equal %2$s"
|
||||
msgstr "Antallet kan ikke være lavere enn %1$s eller lik %2$s"
|
||||
msgstr "Mengden kan ikke være lavere enn %1$s eller lik %2$s"
|
||||
|
||||
msgid "Not enough in stock, but already on the shopping list"
|
||||
msgstr "Ikke nok i husholdningen, men er på handelisten"
|
||||
msgstr "Ikke nok i beholdningen, men er på handelisten"
|
||||
|
||||
msgid "Not enough in stock"
|
||||
msgstr "Ikke nok i husholdningen"
|
||||
msgstr "Ikke nok i beholdningen"
|
||||
|
||||
msgid "Expiring soon days"
|
||||
msgstr "Går ut på dato snart dager"
|
||||
|
||||
msgid "Default amount for purchase"
|
||||
msgstr "Standard antall for innkjøp"
|
||||
msgstr "Standard mengde for innkjøp"
|
||||
|
||||
msgid "Default amount for consume"
|
||||
msgstr "Standard antall for forbruk"
|
||||
msgstr "Standard mengde for forbruk"
|
||||
|
||||
msgid "Variable amount"
|
||||
msgstr "Variabelt antall"
|
||||
msgstr "Variabel mengde"
|
||||
|
||||
msgid ""
|
||||
"When this is not empty, it will be shown instead of the amount entered above"
|
||||
" while the amount there will still be used for stock fulfillment checking"
|
||||
msgstr ""
|
||||
"Når denne ikke er tom, vil denne bli vist i stedet for antallet skrevet inn "
|
||||
"over, mens antallet der vil bli brukt for å sjekke husholdnigsantall."
|
||||
"over, mens antallet der vil bli brukt for å sjekke beholdnigsmengde."
|
||||
|
||||
msgid "Track date only"
|
||||
msgstr "Logg kun dato"
|
||||
msgstr "Registrer kun dato"
|
||||
|
||||
msgid "When enabled only the day of an execution is tracked, not the time"
|
||||
msgstr "Når dette er aktivert så vil kun dagen og ikke tiden bli logget"
|
||||
msgstr "Når aktivert vil kun dagen og ikke tiden bli registrert"
|
||||
|
||||
msgid "Consume %1$s of %2$s"
|
||||
msgstr "Forbruk %1$s av %2$s"
|
||||
@@ -1353,25 +1351,284 @@ msgid "Products"
|
||||
msgstr "Produkter"
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr ""
|
||||
msgstr "Merket oppgave %s som ferdig på %s"
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr ""
|
||||
msgstr "Registrering har flere registreringer under seg, angre er ikke mulig"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
msgstr "pr. servering"
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
msgstr "Aldri"
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
msgstr "I dag"
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
msgstr "Forbruk %1$s av %2$s som har gått ut på dato"
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
"Ikke alle ingrediensene i oppskriften \"%s\" er på lager, så ingenting er "
|
||||
"fjernet!"
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr "Angre oppgave \"%s\""
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr "Forfallsdato rollover"
|
||||
|
||||
msgid ""
|
||||
"When enabled the chore can never be overdue, the due date will shift forward"
|
||||
" each day when due"
|
||||
msgstr ""
|
||||
"Når aktiveret kan husoppgaven aldri forfalle, forfallsdatoen flyttes frem "
|
||||
"hver dag husoppgaven ikke utføres"
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr "Lokasjonsinnholdsark"
|
||||
|
||||
msgid "Print"
|
||||
msgstr "Skriv ut"
|
||||
|
||||
msgid "all locations"
|
||||
msgstr "Alle lokasjoner"
|
||||
|
||||
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 ""
|
||||
"Her kan du printe en side per lokasjon med nåværende beholding, for eksempel"
|
||||
" for å henge opp og notere forbruk av diverse produkt"
|
||||
|
||||
msgid "this location"
|
||||
msgstr "denne lokasjonen"
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr "Forbrukt mengde"
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr "Tidspunkt for utskrift"
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr "Er du sikker du ønsker å slette utstyr \"%s\"?"
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr "Hovedprodukt"
|
||||
|
||||
msgid ""
|
||||
"Not possible because this product is already used as a parent product in "
|
||||
"another product"
|
||||
msgstr ""
|
||||
"Ikke mulig da dette produktet brukes som hovedprodukt av et annet produkt"
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr "Standard konvertering"
|
||||
|
||||
msgid "Factor"
|
||||
msgstr "Faktor"
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr "1 %s er det samme som..."
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr "Opprett konvertering"
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr "Standard for forpakning"
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr "Konvertere fra"
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr "Konvertere til"
|
||||
|
||||
msgid ""
|
||||
"This cannot be lower than %1$s and must be a valid number with max. %2$s "
|
||||
"decimal places"
|
||||
msgstr ""
|
||||
"Dette kan ikke være lavere enn %1$s og må være et gyldig nummer med %2$s "
|
||||
"desimaler "
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr "Dette kan ikke være samme som %s"
|
||||
|
||||
msgid "This means 1 %1$s is the same as %2$s %3$s"
|
||||
msgstr "Dette betyr at 1 %1$s er det samme som %2$s%3$s"
|
||||
|
||||
msgid "QU conversions"
|
||||
msgstr "Forpakningskonvertering"
|
||||
|
||||
msgid "Product overrides"
|
||||
msgstr "Produktoverstyring"
|
||||
|
||||
msgid "Override for product"
|
||||
msgstr "Overstyr for product"
|
||||
|
||||
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 "Tildelt meg"
|
||||
|
||||
msgid "assigned to %s"
|
||||
msgstr "tildelt %s"
|
||||
|
||||
msgid "Filter by assignment"
|
||||
msgstr "Filtrér etter oppgave"
|
||||
|
||||
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 "Endre %s"
|
||||
|
||||
msgid "Create %s"
|
||||
msgstr "Opprett %s"
|
||||
|
||||
msgid "Are you sure to delete this userobject?"
|
||||
msgstr "Er du sikker på du ønsker å slette dette objektet?"
|
||||
|
||||
msgid "Icon CSS class"
|
||||
msgstr "Icon CSS class"
|
||||
|
||||
msgid "For example"
|
||||
msgstr "For eksempel"
|
||||
|
||||
msgid "Configure fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit plural form testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Result"
|
||||
msgstr "Resultat"
|
||||
|
||||
msgid "Test plural forms"
|
||||
msgstr "Test flertallsform"
|
||||
|
||||
msgid "Scan a barcode"
|
||||
msgstr "Skann strekkode"
|
||||
|
||||
msgid "Error while initializing the barcode scanning library"
|
||||
msgstr "Feil under oppstart av strekkodeleser "
|
||||
|
||||
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 ""
|
||||
|
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 ""
|
||||
|
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"
|
||||
|
@@ -295,3 +295,37 @@ 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 ""
|
||||
|
@@ -374,11 +374,9 @@ 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 дней после самого недавнего выполнения"
|
||||
|
||||
msgid "Removed %1$s of %2$s from stock"
|
||||
msgstr "Убрано %1$s из %2$s из запаса"
|
||||
@@ -1414,4 +1412,236 @@ 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 ""
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr ""
|
||||
|
||||
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 ""
|
||||
|
||||
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] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
|
||||
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 ""
|
||||
|
||||
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 ""
|
||||
|
@@ -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"
|
||||
@@ -1286,3 +1286,233 @@ 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 ""
|
||||
|
26
localization/sv_SE/chore_assignment_types.po
Normal file
26
localization/sv_SE/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: 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: sv_SE\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 ""
|
@@ -43,3 +43,6 @@ msgstr "sv-SE"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "sv"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "sv_SE"
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Mathias Fröjd <info@mcfrojd.com>, 2019
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Fredrik Hendeberg <fredrik@hendeberg.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: Mathias Fröjd <info@mcfrojd.com>, 2019\n"
|
||||
"Last-Translator: Fredrik Hendeberg <fredrik@hendeberg.com>, 2019\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"
|
||||
@@ -37,33 +38,33 @@ msgstr "Kylskåp"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Bit"
|
||||
msgstr[1] "Bitar"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Förpackning"
|
||||
msgstr[1] "Förpackningar"
|
||||
|
||||
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] "Burk"
|
||||
msgstr[1] "Burkar"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Burk"
|
||||
msgstr[1] "Burkar"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Knippa"
|
||||
msgstr[1] "Knippor"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Gummibjörnar"
|
||||
@@ -172,8 +173,8 @@ msgstr "Demo-användare"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gram"
|
||||
msgstr[1] "Gram"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Mjöl"
|
||||
@@ -263,22 +264,48 @@ msgid "Turkish"
|
||||
msgstr "Turkiska"
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr "Spansk"
|
||||
msgstr "Spanska"
|
||||
|
||||
msgid "Russian"
|
||||
msgstr "Ryska"
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr "Det som händer den 5: e varje månad"
|
||||
msgstr "Saken som händer den 5:e varje månad"
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr "Saker som händer dagligen"
|
||||
msgstr "Saken som händer dagligen"
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr "Saker som händer på måndagar och onsdagar"
|
||||
msgstr "Saken som händer på måndagar och onsdagar"
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr "Swedish"
|
||||
msgstr "Svenska"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polermedel"
|
||||
msgstr "Polska"
|
||||
|
||||
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,32 +0,0 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ta\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/component_translations\n"
|
||||
|
||||
msgid "timeago_locale"
|
||||
msgstr ""
|
||||
|
||||
msgid "timeago_nan"
|
||||
msgstr ""
|
||||
|
||||
msgid "moment_locale"
|
||||
msgstr ""
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr ""
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr ""
|
@@ -1,280 +0,0 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ta\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/demo_data\n"
|
||||
|
||||
msgid "Cookies"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pantry"
|
||||
msgstr ""
|
||||
|
||||
msgid "Candy cupboard"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tinned food cupboard"
|
||||
msgstr ""
|
||||
|
||||
msgid "Fridge"
|
||||
msgstr ""
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr ""
|
||||
|
||||
msgid "Crisps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Eggs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Noodles"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pickles"
|
||||
msgstr ""
|
||||
|
||||
msgid "Gulash soup"
|
||||
msgstr ""
|
||||
|
||||
msgid "Yogurt"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cheese"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cold cuts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Paprika"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cucumber"
|
||||
msgstr ""
|
||||
|
||||
msgid "Radish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tomato"
|
||||
msgstr ""
|
||||
|
||||
msgid "Changed towels in the bathroom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cleaned the kitchen floor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Warranty ends"
|
||||
msgstr ""
|
||||
|
||||
msgid "TV remote control"
|
||||
msgstr ""
|
||||
|
||||
msgid "Alarm clock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Heat remote control"
|
||||
msgstr ""
|
||||
|
||||
msgid "Lawn mowed in the garden"
|
||||
msgstr ""
|
||||
|
||||
msgid "Some good snacks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pizza dough"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sieved tomatoes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Salami"
|
||||
msgstr ""
|
||||
|
||||
msgid "Toast"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minced meat"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pizza"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spaghetti bolognese"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sandwiches"
|
||||
msgstr ""
|
||||
|
||||
msgid "English"
|
||||
msgstr ""
|
||||
|
||||
msgid "German"
|
||||
msgstr ""
|
||||
|
||||
msgid "Italian"
|
||||
msgstr ""
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr ""
|
||||
|
||||
msgid "Demo User"
|
||||
msgstr ""
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Flour"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pancakes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sugar"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
msgid "Life"
|
||||
msgstr ""
|
||||
|
||||
msgid "Projects"
|
||||
msgstr ""
|
||||
|
||||
msgid "Repair the garage door"
|
||||
msgstr ""
|
||||
|
||||
msgid "Fork and improve grocy"
|
||||
msgstr ""
|
||||
|
||||
msgid "Find a solution for what to do when I forget the door keys"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sweets"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bakery products"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tinned food"
|
||||
msgstr ""
|
||||
|
||||
msgid "Butchery products"
|
||||
msgstr ""
|
||||
|
||||
msgid "Vegetables/Fruits"
|
||||
msgstr ""
|
||||
|
||||
msgid "Refrigerated products"
|
||||
msgstr ""
|
||||
|
||||
msgid "Coffee machine"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dishwasher"
|
||||
msgstr ""
|
||||
|
||||
msgid "Liter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Liters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottle"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottles"
|
||||
msgstr ""
|
||||
|
||||
msgid "Milk"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chocolate sauce"
|
||||
msgstr ""
|
||||
|
||||
msgid "Milliliters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Milliliter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Topping"
|
||||
msgstr ""
|
||||
|
||||
msgid "French"
|
||||
msgstr ""
|
||||
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr ""
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr ""
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr ""
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Polish"
|
||||
msgstr ""
|
File diff suppressed because it is too large
Load Diff
@@ -1,35 +0,0 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:43+0000\n"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ta\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/userfield_types\n"
|
||||
|
||||
msgid "text-single-line"
|
||||
msgstr ""
|
||||
|
||||
msgid "text-multi-line"
|
||||
msgstr ""
|
||||
|
||||
msgid "number-integral"
|
||||
msgstr ""
|
||||
|
||||
msgid "number-decimal"
|
||||
msgstr ""
|
||||
|
||||
msgid "date"
|
||||
msgstr ""
|
||||
|
||||
msgid "datetime"
|
||||
msgstr ""
|
||||
|
||||
msgid "checkbox"
|
||||
msgstr ""
|
26
localization/tr/chore_assignment_types.po
Normal file
26
localization/tr/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: Turkish (https://www.transifex.com/grocy/teams/93189/tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: tr\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 ""
|
@@ -44,3 +44,6 @@ msgstr "tr-TR"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "tr"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "tr_TR"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user