mirror of
https://github.com/grocy/grocy.git
synced 2025-10-18 11:22:37 +00:00
Compare commits
167 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 | ||
|
001d5c5d1d | ||
|
b4d2e2a20a | ||
|
914dde4609 | ||
|
1eb1aa8b11 | ||
|
09b23847b5 | ||
|
8c205941c7 | ||
|
b24683f954 | ||
|
e4d26bb8fd | ||
|
c6c10c87e4 | ||
|
df529c3c0b | ||
|
482a520062 | ||
|
ddef58e2a9 | ||
|
d34c7b0a87 | ||
|
b76e51ba41 | ||
|
67cfd0ba5f | ||
|
3fcede0b7c | ||
|
0c0e8c6957 | ||
|
86f5667039 | ||
|
a01a80578c | ||
|
7a51fb77b0 | ||
|
511c95070e | ||
|
eec6270cb7 | ||
|
7c7c5db28c | ||
|
6b98fa85d3 | ||
|
825be63b93 | ||
|
a56f8be19e | ||
|
f736c4de44 | ||
|
56217804b7 | ||
|
43710b5062 | ||
|
b1adaa24cf | ||
|
9e7d62b62d | ||
|
9f2481a6a8 | ||
|
2b77bc6ae6 | ||
|
91116ee768 | ||
|
167e57ef3f | ||
|
3321bcd683 |
@@ -1,3 +1,4 @@
|
||||
pushd ..
|
||||
tx pull --all --minimum-perc=90
|
||||
tx pull --language en_GB
|
||||
popd
|
||||
|
12
.tx/config
12
.tx/config
@@ -1,9 +1,15 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[grocy.chore_types]
|
||||
file_filter = localization/<lang>/chore_types.po
|
||||
source_file = localization/chore_types.pot
|
||||
[grocy.chore_period_types]
|
||||
file_filter = localization/<lang>/chore_period_types.po
|
||||
source_file = localization/chore_period_types.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[grocy.chore_assignment_types]
|
||||
file_filter = localization/<lang>/chore_assignment_types.po
|
||||
source_file = localization/chore_assignment_types.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
|
30
README.md
30
README.md
@@ -8,17 +8,18 @@ ERP beyond your fridge
|
||||
## Getting in touch
|
||||
There is the [r/grocy subreddit](https://www.reddit.com/r/grocy) to connect with other grocy users. If you've found something that does not work or if you have an idea for an improvement or new things which you would find useful, feel free to open an issue in the [issue tracker](https://github.com/grocy/grocy/issues) here.
|
||||
|
||||
## Community contributions
|
||||
See the website for a list of community contributed Add-ons / Tools: [https://grocy.info/#addons](https://grocy.info/#addons)
|
||||
|
||||
## Motivation
|
||||
A household needs to be managed. I did this so far (almost 10 years) with my first self written software (a C# windows forms application) and with a bunch of Excel sheets. The software is a pain to use and Excel is Excel. So I searched for and tried different things for a (very) long time, nothing 100 % fitted, so this is my aim for a "complete household management"-thing. ERP your fridge!
|
||||
|
||||
## How to install
|
||||
> **NEW**
|
||||
>
|
||||
> There is now grocy-desktop if you want to run grocy without a webserver just like a normal (windows) desktop application.
|
||||
> Checkout grocy-desktop, if you want to run grocy without a webserver just like a normal (windows) desktop application.
|
||||
>
|
||||
> See https://github.com/grocy/grocy-desktop or directly download the [latest release](https://releases.grocy.info/latest-desktop) - the installation is nothing more than just clicking 2 times "next"...
|
||||
|
||||
Just unpack the [latest release](https://releases.grocy.info/latest) on your PHP (SQLite (3.8.3 or higher) extension required, currently only tested with PHP 7.2) enabled webserver (webservers root should point to the `public` directory), copy `config-dist.php` to `data/config.php`, edit it to your needs, ensure that the `data` directory is writable and you're ready to go, (to make writable `chown -R www-data:www-data data/`). Default login is user `admin` with password `admin`, please change the password immediately (see user menu).
|
||||
Just unpack the [latest release](https://releases.grocy.info/latest) on your PHP (SQLite (3.8.3 or higher) extension required, currently only tested with PHP 7.3) enabled webserver (webservers root should point to the `public` directory), copy `config-dist.php` to `data/config.php`, edit it to your needs, ensure that the `data` directory is writable and you're ready to go, (to make it writable, maybe use `chown -R www-data:www-data data/`). Default login is user `admin` with password `admin`, please change the password immediately (see user menu).
|
||||
|
||||
Alternatively clone this repository and install Composer and Yarn dependencies manually.
|
||||
|
||||
@@ -26,31 +27,34 @@ If you use nginx as your webserver, please include `try_files $uri /index.php;`
|
||||
|
||||
If, however, your webserver does not support URL rewriting, set `DISABLE_URL_REWRITING` in `data/config.php` (`Setting('DISABLE_URL_REWRITING', true);`).
|
||||
|
||||
See the website for further installation guides and troubleshooting help: https://grocy.info/links
|
||||
|
||||
## How to run using Docker
|
||||
|
||||
See [grocy/grocy-docker](https://github.com/grocy/grocy-docker) for instructions.
|
||||
See [grocy/grocy-docker](https://github.com/grocy/grocy-docker) or [linuxserver/docker-grocy](https://github.com/linuxserver/docker-grocy) for instructions.
|
||||
|
||||
## How to update
|
||||
Just overwrite everything with the latest release while keeping the `data` directory, check `config-dist.php` for new configuration options and add them to your `data/config.php` (the default from values `config-dist.php` will be used for not in `data/config.php` defined settings). Just to be sure, please empty `data/viewcache`.
|
||||
Just overwrite everything with the latest release while keeping the `data` directory, check `config-dist.php` for new configuration options and add them to your `data/config.php` where appropriate (the default values from `config-dist.php` will be used for not in `data/config.php` defined settings). Just to be sure, please empty `data/viewcache`.
|
||||
|
||||
If you run grocy on Linux, there is also `update.sh` (remember to make the script executable, `chmod +x update.sh` and ensure that you have `unzip` installed) which does exactly this and additionally creates a backup (`.tgz` archive) of the current installation in `data/backups` (backups older than 60 days will be deleted during the update).
|
||||
If you run grocy on Linux, there is also `update.sh` (remember to make the script executable (`chmod +x update.sh`) and ensure that you have `unzip` installed) which does exactly this and additionally creates a backup (`.tgz` archive) of the current installation in `data/backups` (backups older than 60 days will be deleted during the update).
|
||||
|
||||
## Localization
|
||||
grocy is fully localizable - the default language is English (integrated into code), a German localization is always maintained by me.
|
||||
You can easily help translating grocy at https://www.transifex.com/grocy/grocy, if your language is incomplete or not available yet.
|
||||
(Language can be changed in `data/config.php`, e. g. `Setting('CULTURE', 'it');`)
|
||||
|
||||
### Maintaining your own localization
|
||||
As the German translation will always be the most complete one, for maintaining your localization it would be easiest when you compare your localization with the German one with a diff tool of your choice.
|
||||
The [pre-release demo](https://demo-prerelease.grocy.info) is available for any translation which is at least 80 % complete and will pull the translations from Transifex 10 minutes past every hour, so you can have a kind of instant preview of your contributed translations. Thank you!
|
||||
|
||||
## Things worth to know
|
||||
|
||||
### REST API & data model documentation
|
||||
See the integrated Swagger UI instance on [/api](https://demo-en.grocy.info/api).
|
||||
See the integrated Swagger UI instance on [/api](https://demo.grocy.info/api).
|
||||
|
||||
### Barcode readers
|
||||
### Barcode readers & camera scanning
|
||||
Some fields also allow to select a value by scanning a barcode. It works best when your barcode reader prefixes every barcode with a letter which is normally not part of a item name (I use a `$`) and sends a `TAB` after a scan.
|
||||
|
||||
Additionally it's also possible to use your device camera to scan a barcode by using the camera button on the right side of the corresponding field (powered by [QuaggaJS](https://github.com/serratus/quaggaJS), totally offline / client-side camera stream processing). Quick video demo: https://www.youtube.com/watch?v=Y5YH6IJFnfc
|
||||
|
||||
### Input shorthands for date fields
|
||||
For (productivity) reasons all date (and time) input fields use the ISO-8601 format regardless of localization.
|
||||
The following shorthands are available:
|
||||
@@ -91,10 +95,10 @@ When the file `embedded.txt` exists, it must contain a valid and writable path w
|
||||
|
||||
In embedded mode, settings can be overridden by text files in `data/settingoverrides`, the file name must be `<SettingName>.txt` (e. g. `BASE_URL.txt`) and the content must be the setting value (normally one single line).
|
||||
|
||||
## Contributing
|
||||
## Contributing / Say thanks
|
||||
Any help is more than appreciated. Feel free to pick any open unassigned issue and submit a pull request, but please leave a short comment or assign the issue yourself, to avoid working on the same thing.
|
||||
|
||||
New ideas are also very welcome, feel free to open an issue to discuss them.
|
||||
See https://grocy.info/#say-thanks for more ideas if you just want to say thanks.
|
||||
|
||||
## Screenshots
|
||||
#### Dashboard
|
||||
|
11
app.php
11
app.php
@@ -38,7 +38,16 @@ require_once __DIR__ . '/vendor/autoload.php';
|
||||
|
||||
// Load config files
|
||||
require_once GROCY_DATAPATH . '/config.php';
|
||||
require_once __DIR__ . '/config-dist.php'; //For not in own config defined values we use the default ones
|
||||
require_once __DIR__ . '/config-dist.php'; // For not in own config defined values we use the default ones
|
||||
|
||||
// Definitions for disabled authentication mode
|
||||
if (GROCY_DISABLE_AUTH === true)
|
||||
{
|
||||
if (!defined('GROCY_USER_ID'))
|
||||
{
|
||||
define('GROCY_USER_ID', 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Setup base application
|
||||
$appContainer = new \Slim\Container([
|
||||
|
@@ -1 +1 @@
|
||||
- Documented the REST API and data model, see the integrated instance of Swagger UI at [/api](https://demo-en.grocy.info/api)
|
||||
- Documented the REST API and data model, see the integrated instance of Swagger UI at [/api](https://demo.grocy.info/api)
|
||||
|
@@ -1,3 +1,3 @@
|
||||
- Upgraded Bootstrap and some other dependencies (grocy now looks even better!)
|
||||
- Added Italian translation (thanks @davidoskky)
|
||||
- => Demo for this language available at: https://demo-it.grocy.info
|
||||
- => Demo for this language available at: https://it.demo.grocy.info
|
||||
|
@@ -2,4 +2,4 @@ This was released shortly after the last release to fix a small regression bug,
|
||||
|
||||
- Upgraded Bootstrap and some other dependencies (grocy now looks even better!)
|
||||
- Added Italian translation (thanks @davidoskky)
|
||||
- => Demo for this language available at: https://demo-it.grocy.info
|
||||
- => Demo for this language available at: https://it.demo.grocy.info
|
||||
|
@@ -1,8 +1,8 @@
|
||||
- New feature: **Recipes**
|
||||
- Organize a list of products, amounts and a description into recipes and see at a glance if everything needed is in stock or put the missing things with one click on the shopping list
|
||||
- Try it live on the demo page: => https://demo-en.grocy.info/recipes
|
||||
- Try it live on the demo page: => https://demo.grocy.info/recipes
|
||||
- Added norwegian translation (thanks @BlizzWave)
|
||||
- Demo available at: => https://demo-no.grocy.info
|
||||
- Demo available at: => https://no.demo.grocy.info
|
||||
- A lot of small UI improvements
|
||||
- Columns in tables can now be reordered
|
||||
- Show a calendar on the shopping list page (useful, at least for me)
|
||||
|
@@ -9,7 +9,7 @@
|
||||
- New feature: Calendar
|
||||
- Shows all upcoming product expirations, due chores, due tasks and due battery charge cycles
|
||||
- New translation: French (thanks all the translators)
|
||||
- As for all languages, a demo is available at: https://demo-fr.grocy.info
|
||||
- As for all languages, a demo is available at: https://fr.demo.grocy.info
|
||||
- Small other improvements
|
||||
- Allow fraction numbers for recipe ingredients when not checked against stock and add an option to not check stock for a recipe position
|
||||
- The current time can now be shown in the header (see the settings menu next to the user icon)
|
||||
|
@@ -1,4 +1,4 @@
|
||||
- Breaking change: The API has been completely reworked, please review [the documentation](https://demo-en.grocy.info/api) before updating when you are using the API
|
||||
- Breaking change: The API has been completely reworked, please review [the documentation](https://demo.grocy.info/api) before updating when you are using the API
|
||||
- New feature: Tare weight handling
|
||||
- An option per product
|
||||
- Imagine this: You have flour in jars, the jar weighs 500 grams, currently there are 1000 grams in stock, the new weight including the jar is 1100 grams - grocy can now calculate the used amount on consume/purchase/inventory automatically, you only have to enter the weighed amount including the jar (demo product to showcase this "Flour")
|
||||
@@ -9,13 +9,13 @@
|
||||
- A new option per recipe to not check against the amount already on the shopping list when putting all missing ingredients on it (by default, only the amount not already on the shopping list is added, when this is enabled, always the whole missing amount will be put on the shopping list)
|
||||
- On consume, there can now be tracked for which recipe it was, this is also tracked automatically when using the "Consume all ingredients needed by this recipe" button (for future statistical purposes)
|
||||
- Recipes can now have pictures
|
||||
- New "gallery view" for recipes (demo available at https://demo-en.grocy.info/recipes?tab=gallery)
|
||||
- New "gallery view" for recipes (demo available at https://demo.grocy.info/recipes?tab=gallery)
|
||||
- Stock improvements
|
||||
- It is now optionally possible to have partial units in stock (option per product)
|
||||
- On purchase, a different location can now be assigned (imagine you have two freezers, by default you store your pizza there, but sometimes there)
|
||||
- New translations: (thanks all the translators)
|
||||
- Spanish (demo available at https://demo-es.grocy.info)
|
||||
- Turkish (demo available at https://demo-tr.grocy.info)
|
||||
- Spanish (demo available at https://es.demo.grocy.info)
|
||||
- Turkish (demo available at https://tr.demo.grocy.info)
|
||||
- Other improvements
|
||||
- The calendar can now be shared/integrated in iCal format (button in the header on the calendar page)
|
||||
- Added feature flags to hide/disable certain parts of grocy when you don't use them (for example hide "Chores" and all related UI elements, when you don't use it, see `config-dist.php`)
|
||||
|
@@ -7,4 +7,4 @@
|
||||
- The changelog is now included as markdown files (in `/changelog` directory, one file per release with a filename in format `<ReleaseNumber>_<Version>_<ReleaseDateIso>.md`) and shown in the about dialog
|
||||
- Please review your `CURRENCY` setting in `data/config.php`, see also `config-dist.php` - this should be the ISO 4217 code of the currency to properly work with the JS `toLocaleString` function
|
||||
- New translation: (thanks all the translators)
|
||||
- Russian (demo available at https://demo-ru.grocy.info)
|
||||
- Russian (demo available at https://ru.demo.grocy.info)
|
||||
|
@@ -21,8 +21,8 @@
|
||||
- Recipe improvements
|
||||
- It's now possible to enter a "variable amount" (e. g. if a recipe needs "1 - 2 cups"), the original amount is still used for stock fulfillment checking (if enabled for that recipe ingredient)
|
||||
- New translations: (thanks all the translators)
|
||||
- Swedish (demo available at https://demo-sv.grocy.info)
|
||||
- Polish (demo available at https://demo-pl.grocy.info)
|
||||
- Swedish (demo available at https://sv.demo.grocy.info)
|
||||
- Polish (demo available at https://pl.demo.grocy.info)
|
||||
- Internal improvement: Localizations are now handled via gettext, both on server and client side
|
||||
- Mainly to properly handle languages with more than 2 plural forms
|
||||
- This involved some string changes which results in a needed (re)translation of about 20 strings (excluding demo data)
|
||||
|
11
changelog/49_2.4.2_2019-06-09.md
Normal file
11
changelog/49_2.4.2_2019-06-09.md
Normal file
@@ -0,0 +1,11 @@
|
||||
- Fixed that deleting meal plan entries did not work
|
||||
- Fixed a problem that the user settings were not properly initialized for the frontend JS part when not logged only (so potentially affected only the login page)
|
||||
- Fixed an issue that the shopping list did not load when a plural translation for a quantity unit was missing
|
||||
- Fixed that tooltips were visible forever when consuming all products on the stock overview page
|
||||
- Fixed that login did not work when "Stay logged in permanently" was set and grocy runs on a 32-bit system (thanks @matejdro)
|
||||
- Fixed page reloads when "Auto reload on external changes" is enabled and there is unsaved form data (the detection did not work for forms in modal dialogs, e. g. when adding a entry to the meal plan)
|
||||
- Fixed (again) that the product picker did not work properly when the product name contains single quotes
|
||||
- Fixed that a entered barcode on the product edit page was only saved when "adding" it to the barcodes list by pressing `TAB` (is now automatically added to the list also when just leaving the field)
|
||||
- Improved that errors/messages from the API are shown properly when undoing a stock booking is not possible (stock journal page)
|
||||
- Improved night mode CSS (done by @BlizzWave, thanks!)
|
||||
- A new localization for `en_GB` is now always included - nothing is really translated there, it's only about component "translations" that e. g. the first day of the week is correct for calendars
|
16
changelog/50_2.4.3_2019-07-06.md
Normal file
16
changelog/50_2.4.3_2019-07-06.md
Normal file
@@ -0,0 +1,16 @@
|
||||
- Fixed the messed up message/toast after consuming a product from the stock overview page
|
||||
- Fixed that "Track date only" chores were always tracked today, regardless of the given date
|
||||
- Fixed that the "week costs" were wrong after removing a meal plan entry
|
||||
- Fixed wrong recipes costs calculation with nested recipes when the base recipe servings are > 1 (also affected the meal plan when adding such a recipe there)
|
||||
- Fixed consuming recipes did not consume ingredients of the nested recipes
|
||||
- Improved recipes API - added new endpoints to get stock fulfillment information (thanks @Aerex)
|
||||
- Improved date display for products that never expires (instead of "2999-12-31" now just "Never" will be shown)
|
||||
- Improved date display for dates of today and no time (instead of the hours since midnight now just "Today" will be shown)
|
||||
- Improved shopping list handling
|
||||
- Items can now be switched between lists (there is a shopping list dropdown on the item edit page)
|
||||
- Items can now be marked as "done" (new check mark button per item, when clicked, the item will be displayed greyed out, when clicked again the item will be displayed normally again)
|
||||
- Improved that products can now also be consumed as spoiled from the stock overview page (option in the more/context menu per line)
|
||||
- Added a "consume this recipe"-button to the meal plan (and also a button to consume all recipes for a whole week)
|
||||
- Added the possibility to undo a task (new button per task, only visible when task is already completed) and also a corresponding API endpoint
|
||||
- Added a new `config.php` setting `DISABLE_AUTH` to be able to disable authentication / the login screen, defaults to `false`
|
||||
- Added a new `config.php` setting `CALENDAR_FIRST_DAY_OF_WEEK` to be able to change the first day of a week used for calendar views (meal plan for example) in the frontend, defaults to locale default
|
6
changelog/51_2.4.4_2019-07-07.md
Normal file
6
changelog/51_2.4.4_2019-07-07.md
Normal file
@@ -0,0 +1,6 @@
|
||||
- Fixed that price data (last price & chart) was not taken from inventory correction bookings, only purchases
|
||||
- Fixed weekly chores were scheduled on the same day after execution
|
||||
- Fixed that undone chores were also included in "Last tracked"
|
||||
- Fixed the date-time-picker width was too narrow sometimes
|
||||
- Improved that execution dates of "Track date only" chores will never display the time part
|
||||
- Improved date display for products that never expire (again, there was a display problem after consuming an item on the stock overview page)
|
107
changelog/52_2.5.0_2019-09-22.md
Normal file
107
changelog/52_2.5.0_2019-09-22.md
Normal file
@@ -0,0 +1,107 @@
|
||||
### New feature: Custom entities / objects / lists
|
||||
- Custom entities are based on Userfields and can be used to add any custom lists you want to have in grocy
|
||||
- They can have an own menu entry in the sidebar
|
||||
- => See "Manage master data" -> "Userentities" or try it on the demo: https://demo.grocy.info/userobjects/exampleuserentity
|
||||
|
||||
### New feature: Use the device camera for barcode scanning
|
||||
- Available on any barcode-enabled field (so currently only for picking products) - a new camera button at the right of side the text field
|
||||
- Implemented using [QuaggaJS](https://github.com/serratus/quaggaJS) - camera stream processing happens totally offline / client-side
|
||||
- Please note due to browser security restrictions, this only works when serving grocy via a secure connection (`https://`)
|
||||
- There is also a `config.php` setting `DISABLE_BROWSER_BARCODE_CAMERA_SCANNING` to disable this, if you don't need it at all (defaults to `false`)
|
||||
- I you have problems that 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,13 +14,22 @@
|
||||
# The settings defined here below
|
||||
|
||||
|
||||
# Either "production", "dev" or "prerelease"
|
||||
# Either "production", "dev", "demo" or "prerelease"
|
||||
# ("demo" and "prerelease" is reserved to be used only on the offical demo instances)
|
||||
Setting('MODE', 'production');
|
||||
|
||||
# Either "en" or "de" or the filename (without extension) of
|
||||
# one of the other available localization files in the "/localization" directory
|
||||
# Either "en" or "de" or the directory name of
|
||||
# one of the other available localization folders in the "/localization" directory
|
||||
Setting('CULTURE', 'en');
|
||||
|
||||
# This is used to define the first day of a week for calendar views in the frontend,
|
||||
# leave empty to use the locale default
|
||||
# Needs to be a number where Sunday = 0, Monday = 1 and so forth
|
||||
Setting('CALENDAR_FIRST_DAY_OF_WEEK', '');
|
||||
|
||||
# If calendars should show week numbers
|
||||
Setting('CALENDAR_SHOW_WEEK_OF_YEAR', true);
|
||||
|
||||
# To keep it simple: grocy does not handle any currency conversions,
|
||||
# this here is used to format all money values,
|
||||
# so doesn't matter really matter, but should be the
|
||||
@@ -37,11 +46,20 @@ Setting('BASE_URL', '/');
|
||||
# see /data/plugins/DemoBarcodeLookupPlugin.php for an example implementation
|
||||
Setting('STOCK_BARCODE_LOOKUP_PLUGIN', 'DemoBarcodeLookupPlugin');
|
||||
|
||||
# If, however, your webserver does not support URL rewriting,
|
||||
# set this to true
|
||||
# If, however, your webserver does not support URL rewriting, set this to true
|
||||
Setting('DISABLE_URL_REWRITING', false);
|
||||
|
||||
# Specify an custom homepage if desired - by default the homepage will be set to the stock overview,
|
||||
# this needs to be one of the following values:
|
||||
# stock, shoppinglist, recipes, chores, tasks, batteries, equipment, calendar
|
||||
Setting('ENTRY_PAGE', 'stock');
|
||||
|
||||
# Set this to true if you want to disable authentication / the login screen,
|
||||
# places where user context is needed will then use the default (first existing) user
|
||||
Setting('DISABLE_AUTH', false);
|
||||
|
||||
# Set this to true if you want to disable the ability to scan a barcode via the device camera (Browser API)
|
||||
Setting('DISABLE_BROWSER_BARCODE_CAMERA_SCANNING', false);
|
||||
|
||||
|
||||
# Default user settings
|
||||
@@ -86,8 +104,6 @@ DefaultUserSetting('show_clock_in_header', false);
|
||||
DefaultUserSetting('shopping_list_to_stock_workflow_auto_submit_when_prefilled', false);
|
||||
|
||||
|
||||
|
||||
|
||||
# Feature flags
|
||||
# grocy was initially about "stock management for your household", many other things
|
||||
# came and still come by, because they are useful - here you can disable the parts
|
||||
@@ -101,3 +117,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);
|
||||
}
|
||||
$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();
|
||||
@@ -71,6 +62,10 @@ class BaseController
|
||||
{
|
||||
$container->view->set('userSettings', $usersService->GetUserSettings(GROCY_USER_ID));
|
||||
}
|
||||
else
|
||||
{
|
||||
$container->view->set('userSettings', null);
|
||||
}
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
|
@@ -21,7 +21,7 @@ class ChoresApiController extends BaseApiController
|
||||
try
|
||||
{
|
||||
$trackedTime = date('Y-m-d H:i:s');
|
||||
if (array_key_exists('tracked_time', $requestBody) && IsIsoDateTime($requestBody['tracked_time']))
|
||||
if (array_key_exists('tracked_time', $requestBody) && (IsIsoDateTime($requestBody['tracked_time']) || IsIsoDate($requestBody['tracked_time'])))
|
||||
{
|
||||
$trackedTime = $requestBody['tracked_time'];
|
||||
}
|
||||
@@ -70,4 +70,37 @@ class ChoresApiController extends BaseApiController
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function CalculateNextExecutionAssignments(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
|
||||
$choreId = null;
|
||||
if (array_key_exists('chore_id', $requestBody) && !empty($requestBody['chore_id']) && is_numeric($requestBody['chore_id']))
|
||||
{
|
||||
$choreId = intval($requestBody['chore_id']);
|
||||
}
|
||||
|
||||
if ($choreId === null)
|
||||
{
|
||||
$chores = $this->Database->chores();
|
||||
foreach ($chores as $chore)
|
||||
{
|
||||
$this->ChoresService->CalculateNextExecutionAssignment($chore->id);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->ChoresService->CalculateNextExecutionAssignment($choreId);
|
||||
}
|
||||
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,8 @@ class ChoresController extends BaseController
|
||||
'currentChores' => $this->ChoresService->GetCurrent(),
|
||||
'nextXDays' => $nextXDays,
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores'),
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('chores')
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('chores'),
|
||||
'users' => $usersService->GetUsersAsDto()
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -60,21 +61,30 @@ class ChoresController extends BaseController
|
||||
|
||||
public function ChoreEditForm(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$usersService = new UsersService();
|
||||
$users = $usersService->GetUsersAsDto();
|
||||
|
||||
if ($args['choreId'] == 'new')
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'choreform', [
|
||||
'periodTypes' => GetClassConstants('\Grocy\Services\ChoresService'),
|
||||
'periodTypes' => GetClassConstants('\Grocy\Services\ChoresService', 'CHORE_PERIOD_TYPE_'),
|
||||
'mode' => 'create',
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores')
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores'),
|
||||
'assignmentTypes' => GetClassConstants('\Grocy\Services\ChoresService', 'CHORE_ASSIGNMENT_TYPE_'),
|
||||
'users' => $users,
|
||||
'products' => $this->Database->products()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'choreform', [
|
||||
'chore' => $this->Database->chores($args['choreId']),
|
||||
'periodTypes' => GetClassConstants('\Grocy\Services\ChoresService'),
|
||||
'periodTypes' => GetClassConstants('\Grocy\Services\ChoresService', 'CHORE_PERIOD_TYPE_'),
|
||||
'mode' => 'edit',
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores')
|
||||
'userfields' => $this->UserfieldsService->GetFields('chores'),
|
||||
'assignmentTypes' => GetClassConstants('\Grocy\Services\ChoresService', 'CHORE_ASSIGNMENT_TYPE_'),
|
||||
'users' => $users,
|
||||
'products' => $this->Database->products()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@@ -51,7 +51,32 @@ class FilesApiController extends BaseApiController
|
||||
throw new \Exception('Invalid filename');
|
||||
}
|
||||
|
||||
$filePath = $this->FilesService->GetFilePath($args['group'], $fileName);
|
||||
$forceServeAs = null;
|
||||
if (isset($request->getQueryParams()['force_serve_as']) && !empty($request->getQueryParams()['force_serve_as']))
|
||||
{
|
||||
$forceServeAs = $request->getQueryParams()['force_serve_as'];
|
||||
}
|
||||
|
||||
if ($forceServeAs == FilesService::FILE_SERVE_TYPE_PICTURE)
|
||||
{
|
||||
$bestFitHeight = null;
|
||||
if (isset($request->getQueryParams()['best_fit_height']) && !empty($request->getQueryParams()['best_fit_height']) && is_numeric($request->getQueryParams()['best_fit_height']))
|
||||
{
|
||||
$bestFitHeight = $request->getQueryParams()['best_fit_height'];
|
||||
}
|
||||
|
||||
$bestFitWidth = null;
|
||||
if (isset($request->getQueryParams()['best_fit_width']) && !empty($request->getQueryParams()['best_fit_width']) && is_numeric($request->getQueryParams()['best_fit_width']))
|
||||
{
|
||||
$bestFitWidth = $request->getQueryParams()['best_fit_width'];
|
||||
}
|
||||
|
||||
$filePath = $this->FilesService->DownscaleImage($args['group'], $fileName, $bestFitHeight, $bestFitWidth);
|
||||
}
|
||||
else
|
||||
{
|
||||
$filePath = $this->FilesService->GetFilePath($args['group'], $fileName);
|
||||
}
|
||||
|
||||
if (file_exists($filePath))
|
||||
{
|
||||
|
@@ -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'])
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -30,7 +30,7 @@ class LoginController extends BaseController
|
||||
if ($user !== null && password_verify($inputPassword, $user->password))
|
||||
{
|
||||
$sessionKey = $this->SessionService->CreateSession($user->id, $stayLoggedInPermanently);
|
||||
setcookie($this->SessionCookieName, $sessionKey, intval(time() + 31220640000)); // Cookie expires in 999 years, but session validity is up to SessionService
|
||||
setcookie($this->SessionCookieName, $sessionKey, PHP_INT_SIZE == 4 ? PHP_INT_MAX : PHP_INT_MAX>>32); // Cookie expires never, but session validity is up to SessionService
|
||||
|
||||
if (password_needs_rehash($user->password, PASSWORD_DEFAULT))
|
||||
{
|
||||
|
@@ -1,43 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace Grocy\Controllers;
|
||||
|
||||
use \Grocy\Services\RecipesService;
|
||||
|
||||
class RecipesApiController extends BaseApiController
|
||||
{
|
||||
public function __construct(\Slim\Container $container)
|
||||
{
|
||||
parent::__construct($container);
|
||||
$this->RecipesService = new RecipesService();
|
||||
}
|
||||
|
||||
protected $RecipesService;
|
||||
|
||||
public function AddNotFulfilledProductsToShoppingList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
$excludedProductIds = null;
|
||||
|
||||
if ($requestBody !== null && array_key_exists('excludedProductIds', $requestBody))
|
||||
{
|
||||
$excludedProductIds = $requestBody['excludedProductIds'];
|
||||
}
|
||||
|
||||
$this->RecipesService->AddNotFulfilledProductsToShoppingList($args['recipeId'], $excludedProductIds);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
|
||||
public function ConsumeRecipe(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->RecipesService->ConsumeRecipe($args['recipeId']);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
|
||||
namespace Grocy\Controllers;
|
||||
|
||||
use \Grocy\Services\RecipesService;
|
||||
|
||||
class RecipesApiController extends BaseApiController
|
||||
{
|
||||
public function __construct(\Slim\Container $container)
|
||||
{
|
||||
parent::__construct($container);
|
||||
$this->RecipesService = new RecipesService();
|
||||
}
|
||||
|
||||
protected $RecipesService;
|
||||
|
||||
public function AddNotFulfilledProductsToShoppingList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
$excludedProductIds = null;
|
||||
|
||||
if ($requestBody !== null && array_key_exists('excludedProductIds', $requestBody))
|
||||
{
|
||||
$excludedProductIds = $requestBody['excludedProductIds'];
|
||||
}
|
||||
|
||||
$this->RecipesService->AddNotFulfilledProductsToShoppingList($args['recipeId'], $excludedProductIds);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
|
||||
public function ConsumeRecipe(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->RecipesService->ConsumeRecipe($args['recipeId']);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function GetRecipeFulfillment(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(!isset($args['recipeId']))
|
||||
{
|
||||
return $this->ApiResponse($this->RecipesService->GetRecipesResolved());
|
||||
}
|
||||
|
||||
$recipeResolved = FindObjectInArrayByPropertyValue($this->RecipesService->GetRecipesResolved(), 'recipe_id', $args['recipeId']);
|
||||
if(!$recipeResolved)
|
||||
{
|
||||
throw new \Exception('Recipe does not exist');
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->ApiResponse($recipeResolved);
|
||||
}
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -63,13 +63,15 @@ class RecipesController extends BaseController
|
||||
'selectedRecipe' => $selectedRecipe,
|
||||
'selectedRecipePositionsResolved' => $selectedRecipePositionsResolved,
|
||||
'products' => $this->Database->products(),
|
||||
'quantityunits' => $this->Database->quantity_units(),
|
||||
'quantityUnits' => $this->Database->quantity_units(),
|
||||
'selectedRecipeSubRecipes' => $selectedRecipeSubRecipes,
|
||||
'selectedRecipeSubRecipesPositions' => $selectedRecipeSubRecipesPositions,
|
||||
'includedRecipeIdsAbsolute' => $includedRecipeIdsAbsolute,
|
||||
'selectedRecipeTotalCosts' => FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $selectedRecipe->id)->costs,
|
||||
'selectedRecipeTotalCalories' => FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $selectedRecipe->id)->calories,
|
||||
'userfields' => $this->UserfieldsService->GetFields('recipes'),
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('recipes')
|
||||
'userfieldValues' => $this->UserfieldsService->GetAllValues('recipes'),
|
||||
'quantityUnitConversionsResolved' => $this->Database->quantity_unit_conversions_resolved()
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -96,7 +98,8 @@ class RecipesController extends BaseController
|
||||
'recipesResolved' => $this->RecipesService->GetRecipesResolved(),
|
||||
'recipes' => $this->Database->recipes()->where('type', RecipesService::RECIPE_TYPE_NORMAL)->orderBy('name'),
|
||||
'recipeNestings' => $this->Database->recipes_nestings()->where('recipe_id', $recipeId),
|
||||
'userfields' => $this->UserfieldsService->GetFields('recipes')
|
||||
'userfields' => $this->UserfieldsService->GetFields('recipes'),
|
||||
'quantityUnitConversionsResolved' => $this->Database->quantity_unit_conversions_resolved()
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -107,8 +110,10 @@ class RecipesController extends BaseController
|
||||
return $this->AppContainer->view->render($response, 'recipeposform', [
|
||||
'mode' => 'create',
|
||||
'recipe' => $this->Database->recipes($args['recipeId']),
|
||||
'recipePos' => new \stdClass(),
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name')
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'quantityUnitConversionsResolved' => $this->Database->quantity_unit_conversions_resolved()
|
||||
]);
|
||||
}
|
||||
else
|
||||
@@ -118,7 +123,8 @@ class RecipesController extends BaseController
|
||||
'recipe' => $this->Database->recipes($args['recipeId']),
|
||||
'recipePos' => $this->Database->recipes_pos($args['recipePosId']),
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name')
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'quantityUnitConversionsResolved' => $this->Database->quantity_unit_conversions_resolved()
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -130,12 +136,19 @@ class RecipesController extends BaseController
|
||||
$events = array();
|
||||
foreach($this->Database->meal_plan() as $mealPlanEntry)
|
||||
{
|
||||
$recipe = FindObjectInArrayByPropertyValue($recipes, 'id', $mealPlanEntry['recipe_id']);
|
||||
$title = '';
|
||||
if ($recipe !== null)
|
||||
{
|
||||
$title = $recipe->name;
|
||||
}
|
||||
|
||||
$events[] = array(
|
||||
'id' => $mealPlanEntry['id'],
|
||||
'title' => FindObjectInArrayByPropertyValue($recipes, 'id', $mealPlanEntry['recipe_id'])->name,
|
||||
'title' => $title,
|
||||
'start' => $mealPlanEntry['day'],
|
||||
'date_format' => 'date',
|
||||
'recipe' => json_encode(FindObjectInArrayByPropertyValue($recipes, 'id', $mealPlanEntry['recipe_id'])),
|
||||
'recipe' => json_encode($recipe),
|
||||
'mealPlanEntry' => json_encode($mealPlanEntry)
|
||||
);
|
||||
}
|
||||
|
@@ -67,7 +67,7 @@ class StockApiController extends BaseApiController
|
||||
throw new \Exception('An amount is required');
|
||||
}
|
||||
|
||||
$bestBeforeDate = date('Y-m-d');
|
||||
$bestBeforeDate = null;
|
||||
if (array_key_exists('best_before_date', $requestBody) && IsIsoDate($requestBody['best_before_date']))
|
||||
{
|
||||
$bestBeforeDate = $requestBody['best_before_date'];
|
||||
@@ -100,6 +100,19 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function AddProductByBarcode(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$args['productId'] = $this->StockService->GetProductIdFromBarcode($args['barcode']);
|
||||
return $this->AddProduct($request, $response, $args);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function ConsumeProduct(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
@@ -149,6 +162,19 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function ConsumeProductByBarcode(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$args['productId'] = $this->StockService->GetProductIdFromBarcode($args['barcode']);
|
||||
return $this->ConsumeProduct($request, $response, $args);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function InventoryProduct(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
@@ -165,7 +191,7 @@ class StockApiController extends BaseApiController
|
||||
throw new \Exception('An new amount is required');
|
||||
}
|
||||
|
||||
$bestBeforeDate = date('Y-m-d');
|
||||
$bestBeforeDate = null;
|
||||
if (array_key_exists('best_before_date', $requestBody) && IsIsoDate($requestBody['best_before_date']))
|
||||
{
|
||||
$bestBeforeDate = $requestBody['best_before_date'];
|
||||
@@ -192,6 +218,19 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function InventoryProductByBarcode(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$args['productId'] = $this->StockService->GetProductIdFromBarcode($args['barcode']);
|
||||
return $this->InventoryProduct($request, $response, $args);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function OpenProduct(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$requestBody = $request->getParsedBody();
|
||||
@@ -223,6 +262,19 @@ class StockApiController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
public function OpenProductByBarcode(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$args['productId'] = $this->StockService->GetProductIdFromBarcode($args['barcode']);
|
||||
return $this->OpenProduct($request, $response, $args);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function CurrentStock(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->ApiResponse($this->StockService->GetCurrentStock());
|
||||
@@ -288,6 +340,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()
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -222,6 +235,7 @@ class StockController extends BaseController
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'shoppinglistitemform', [
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'shoppingLists' => $this->Database->shopping_lists()->orderBy('name'),
|
||||
'mode' => 'create'
|
||||
]);
|
||||
}
|
||||
@@ -230,6 +244,7 @@ class StockController extends BaseController
|
||||
return $this->AppContainer->view->render($response, 'shoppinglistitemform', [
|
||||
'listItem' => $this->Database->shopping_list($args['itemId']),
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'shoppingLists' => $this->Database->shopping_lists()->orderBy('name'),
|
||||
'mode' => 'edit'
|
||||
]);
|
||||
}
|
||||
@@ -260,4 +275,58 @@ class StockController extends BaseController
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
|
||||
public function LocationContentSheet(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'locationcontentsheet', [
|
||||
'products' => $this->Database->products()->orderBy('name'),
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'locations' => $this->Database->locations()->orderBy('name'),
|
||||
'currentStockLocationContent' => $this->StockService->GetCurrentStockLocationContent()
|
||||
]);
|
||||
}
|
||||
|
||||
public function QuantityUnitConversionEditForm(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
$product = null;
|
||||
if (isset($request->getQueryParams()['product']))
|
||||
{
|
||||
$product = $this->Database->products($request->getQueryParams()['product']);
|
||||
}
|
||||
|
||||
$defaultQuUnit = null;
|
||||
if (isset($request->getQueryParams()['qu-unit']))
|
||||
{
|
||||
$defaultQuUnit = $this->Database->quantity_units($request->getQueryParams()['qu-unit']);
|
||||
}
|
||||
|
||||
if ($args['quConversionId'] == 'new')
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'quantityunitconversionform', [
|
||||
'mode' => 'create',
|
||||
'userfields' => $this->UserfieldsService->GetFields('quantity_unit_conversions'),
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'product' => $product,
|
||||
'defaultQuUnit' => $defaultQuUnit
|
||||
]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'quantityunitconversionform', [
|
||||
'quConversion' => $this->Database->quantity_unit_conversions($args['quConversionId']),
|
||||
'mode' => 'edit',
|
||||
'userfields' => $this->UserfieldsService->GetFields('quantity_unit_conversions'),
|
||||
'quantityunits' => $this->Database->quantity_units()->orderBy('name'),
|
||||
'product' => $product,
|
||||
'defaultQuUnit' => $defaultQuUnit
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function QuantityUnitPluralFormTesting(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
return $this->AppContainer->view->render($response, 'quantityunitpluraltesting', [
|
||||
'quantityUnits' => $this->Database->quantity_units()->orderBy('name')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@@ -8,14 +8,14 @@ use \Grocy\Services\DemoDataGeneratorService;
|
||||
|
||||
class SystemController extends BaseController
|
||||
{
|
||||
protected $ApplicationService;
|
||||
|
||||
public function __construct(\Slim\Container $container)
|
||||
{
|
||||
parent::__construct($container);
|
||||
$this->ApplicationService = new ApplicationService();
|
||||
}
|
||||
|
||||
protected $ApplicationService;
|
||||
|
||||
public function Root(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
// Schema migration is done here
|
||||
@@ -31,6 +31,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');
|
||||
}
|
||||
}
|
||||
|
@@ -39,4 +39,17 @@ class TasksApiController extends BaseApiController
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function UndoTask(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
|
||||
{
|
||||
try
|
||||
{
|
||||
$this->TasksService->UndoTask($args['taskId']);
|
||||
return $this->EmptyApiResponse($response);
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
return $this->GenericErrorResponse($response, $ex->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -88,10 +88,20 @@ function SumArrayValue($array, $propertyName)
|
||||
return $sum;
|
||||
}
|
||||
|
||||
function GetClassConstants($className)
|
||||
function GetClassConstants($className, $prefix = null)
|
||||
{
|
||||
$r = new ReflectionClass($className);
|
||||
return $r->getConstants();
|
||||
$constants = $r->getConstants();
|
||||
|
||||
if ($prefix === null)
|
||||
{
|
||||
return $constants;
|
||||
}
|
||||
else
|
||||
{
|
||||
$matchingKeys = preg_grep('!^' . $prefix . '!', array_keys($constants));
|
||||
return array_intersect_key($constants, array_flip($matchingKeys));
|
||||
}
|
||||
}
|
||||
|
||||
function RandomString($length, $allowedChars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
|
||||
@@ -140,7 +150,18 @@ function Setting(string $name, $value)
|
||||
}
|
||||
elseif (getenv('GROCY_' . $name) !== false) // An environment variable with the same name and prefix GROCY_ overwrites the given setting
|
||||
{
|
||||
define('GROCY_' . $name, getenv('GROCY_' . $name));
|
||||
if (strtolower(getenv('GROCY_' . $name)) === "true")
|
||||
{
|
||||
define('GROCY_' . $name, true);
|
||||
}
|
||||
elseif (strtolower(getenv('GROCY_' . $name)) === "false")
|
||||
{
|
||||
define('GROCY_' . $name, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
define('GROCY_' . $name, getenv('GROCY_' . $name));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -163,7 +184,7 @@ function DefaultUserSetting(string $name, $value)
|
||||
function GetUserDisplayName($user)
|
||||
{
|
||||
$displayName = '';
|
||||
|
||||
|
||||
if (empty($user->first_name) && !empty($user->last_name))
|
||||
{
|
||||
$displayName = $user->last_name;
|
||||
@@ -193,3 +214,25 @@ function IsValidFileName($fileName)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function IsJsonString($text)
|
||||
{
|
||||
json_decode($text);
|
||||
return (json_last_error() == JSON_ERROR_NONE);
|
||||
}
|
||||
|
||||
function string_starts_with($haystack, $needle)
|
||||
{
|
||||
return (substr($haystack, 0, strlen($needle)) === $needle);
|
||||
}
|
||||
|
||||
function string_ends_with($haystack, $needle)
|
||||
{
|
||||
$length = strlen($needle);
|
||||
if ($length == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return (substr($haystack, -$length) === $needle);
|
||||
}
|
||||
|
25
localization/chore_assignment_types.pot
Normal file
25
localization/chore_assignment_types.pot
Normal file
@@ -0,0 +1,25 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: Translation migration from old PHP array files\n"
|
||||
"Language-Team: http://www.transifex.com/grocy/grocy/language/en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"Language: en\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr ""
|
||||
|
||||
msgid "random"
|
||||
msgstr ""
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr ""
|
@@ -29,3 +29,6 @@ msgstr ""
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr ""
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr ""
|
||||
|
29
localization/da/chore_assignment_types.po
Normal file
29
localization/da/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Last-Translator: Troels Siggaard <troels@siggaard.com>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "ingen-tildeling"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "hvem-mindst-gjorde-først"
|
||||
|
||||
msgid "random"
|
||||
msgstr "tilfældig"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "i-alfabetisk-rækkefølge"
|
@@ -1,5 +1,5 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Last-Translator: Troels Siggaard <troels@siggaard.com>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,16 +17,16 @@ msgstr ""
|
||||
"X-Domain: grocy/chore_types\n"
|
||||
|
||||
msgid "manually"
|
||||
msgstr "Manuelt"
|
||||
msgstr "manuelt"
|
||||
|
||||
msgid "dynamic-regular"
|
||||
msgstr ""
|
||||
msgstr "gentagende-dynamisk"
|
||||
|
||||
msgid "daily"
|
||||
msgstr ""
|
||||
msgstr "daglig"
|
||||
|
||||
msgid "weekly"
|
||||
msgstr ""
|
||||
msgstr "ugentlig"
|
||||
|
||||
msgid "monthly"
|
||||
msgstr ""
|
||||
msgstr "månedlig"
|
@@ -1,3 +1,5 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -5,6 +7,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -14,19 +17,39 @@ msgstr ""
|
||||
"X-Domain: grocy/component_translations\n"
|
||||
|
||||
msgid "timeago_locale"
|
||||
msgstr ""
|
||||
msgstr "da"
|
||||
|
||||
msgid "timeago_nan"
|
||||
msgstr ""
|
||||
msgstr "for NaN år"
|
||||
|
||||
msgid "moment_locale"
|
||||
msgstr ""
|
||||
msgstr "da"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\n"
|
||||
"\"sProcessing\": \"Henter...\",\n"
|
||||
"\"sLengthMenu\": \"Vis _MENU_ linjer\",\n"
|
||||
"\"sZeroRecords\": \"Ingen linjer matcher søgningen\",\n"
|
||||
"\"sInfo\": \"Viser _START_ til _END_ af _TOTAL_ linjer\",\n"
|
||||
"\"sInfoEmpty\": \"Viser 0 til 0 af 0 linjer\",\n"
|
||||
"\"sInfoFiltered\": \"(filtreret fra _MAX_ linjer)\",\n"
|
||||
"\"sInfoPostFix\": \"\",\n"
|
||||
"\"sSearch\": \"Søg:\",\n"
|
||||
"\"sUrl\": \"\",\n"
|
||||
"\"oPaginate\": {\n"
|
||||
"\"sFirst\": \"Første\",\n"
|
||||
"\"sPrevious\": \"Forrige\",\n"
|
||||
"\"sNext\": \"Næste\",\n"
|
||||
"\"sLast\": \"Sidste\"\n"
|
||||
"}\n"
|
||||
"}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr ""
|
||||
msgstr "da-DK"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr ""
|
||||
msgstr "da"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "da_DK"
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# dark159123 <r.j.hansen@protonmail.com>, 2019
|
||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +8,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Last-Translator: dark159123 <r.j.hansen@protonmail.com>, 2019\n"
|
||||
"Last-Translator: Troels Siggaard <troels@siggaard.com>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -20,13 +21,13 @@ msgid "Cookies"
|
||||
msgstr "Småkager"
|
||||
|
||||
msgid "Chocolate"
|
||||
msgstr "chokolade"
|
||||
msgstr "Chokolade"
|
||||
|
||||
msgid "Pantry"
|
||||
msgstr "Spisekammer"
|
||||
|
||||
msgid "Candy cupboard"
|
||||
msgstr "Slik skuffe"
|
||||
msgstr "Slikskuffe"
|
||||
|
||||
msgid "Tinned food cupboard"
|
||||
msgstr "Dåsemadsskab"
|
||||
@@ -36,36 +37,36 @@ msgstr "Køleskab"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Styk"
|
||||
msgstr[1] "Stykker"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pakke"
|
||||
msgstr[1] "Pakker"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Glas"
|
||||
msgstr[1] "Glas"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Dåse"
|
||||
msgstr[1] "Dåser"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Dåse"
|
||||
msgstr[1] "Dåser"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Klase"
|
||||
msgstr[1] "Klaser"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Vingummi bamser"
|
||||
msgstr "Vingummibamser"
|
||||
|
||||
msgid "Crisps"
|
||||
msgstr "Chips"
|
||||
@@ -113,22 +114,22 @@ msgid "Warranty ends"
|
||||
msgstr "Reklamationsret udløber"
|
||||
|
||||
msgid "TV remote control"
|
||||
msgstr "Fjernbetjening"
|
||||
msgstr "Fjernbetjening til TV'et"
|
||||
|
||||
msgid "Alarm clock"
|
||||
msgstr "Vægge ur"
|
||||
msgstr "Væggeur"
|
||||
|
||||
msgid "Heat remote control"
|
||||
msgstr "Varmefjernbetjening"
|
||||
msgstr "Fjernbetjening til varme"
|
||||
|
||||
msgid "Lawn mowed in the garden"
|
||||
msgstr "Græs slået"
|
||||
msgstr "Græsset blev slået i haven"
|
||||
|
||||
msgid "Some good snacks"
|
||||
msgstr "Nogle gode snacks"
|
||||
|
||||
msgid "Pizza dough"
|
||||
msgstr "Pizza dej"
|
||||
msgstr "Pizzadej"
|
||||
|
||||
msgid "Sieved tomatoes"
|
||||
msgstr "Sigtede tomater"
|
||||
@@ -149,7 +150,7 @@ msgid "Spaghetti bolognese"
|
||||
msgstr "Spaghetti bolognese"
|
||||
|
||||
msgid "Sandwiches"
|
||||
msgstr "Sandwiches"
|
||||
msgstr "Sandwich"
|
||||
|
||||
msgid "English"
|
||||
msgstr "Engelsk"
|
||||
@@ -158,21 +159,21 @@ msgid "German"
|
||||
msgstr "Tysk"
|
||||
|
||||
msgid "Italian"
|
||||
msgstr "Italiænsk"
|
||||
msgstr "Italiensk"
|
||||
|
||||
msgid "Demo in different language"
|
||||
msgstr "Demo i et andet sprog"
|
||||
msgstr "Demo på et andet sprog"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr "Dette er indholdet af opskrift ingrediensens notefelt"
|
||||
msgstr "Dette er indholdet af opskrift-ingrediensens notefeltet"
|
||||
|
||||
msgid "Demo User"
|
||||
msgstr "Demo Bruger"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gram"
|
||||
msgstr[1] "Gram"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Mel"
|
||||
@@ -187,25 +188,25 @@ msgid "Home"
|
||||
msgstr "Hjem"
|
||||
|
||||
msgid "Life"
|
||||
msgstr "Liv"
|
||||
msgstr "Livet"
|
||||
|
||||
msgid "Projects"
|
||||
msgstr "Projekter"
|
||||
|
||||
msgid "Repair the garage door"
|
||||
msgstr "Reparér garagedøren"
|
||||
msgstr "Reparer garagedøren"
|
||||
|
||||
msgid "Fork and improve grocy"
|
||||
msgstr "Fork og forbedre grocy"
|
||||
|
||||
msgid "Find a solution for what to do when I forget the door keys"
|
||||
msgstr "Find en løsning for når jeg glemmer husnøglen"
|
||||
msgstr "Find en løsning på hvad jeg gør, når jeg glemmer nøglen til huset"
|
||||
|
||||
msgid "Sweets"
|
||||
msgstr "Slik"
|
||||
|
||||
msgid "Bakery products"
|
||||
msgstr "Bageriprodukter"
|
||||
msgstr "Bagværk"
|
||||
|
||||
msgid "Tinned food"
|
||||
msgstr "Dåsemad"
|
||||
@@ -217,13 +218,13 @@ msgid "Vegetables/Fruits"
|
||||
msgstr "Frugt og grønt"
|
||||
|
||||
msgid "Refrigerated products"
|
||||
msgstr "Nedkølede produkter"
|
||||
msgstr "Køleskabsprodukter"
|
||||
|
||||
msgid "Coffee machine"
|
||||
msgstr "Kaffemaskine"
|
||||
|
||||
msgid "Dishwasher"
|
||||
msgstr "Opvasker"
|
||||
msgstr "Opvaskemaskine"
|
||||
|
||||
msgid "Liter"
|
||||
msgstr "Liter"
|
||||
@@ -259,25 +260,51 @@ msgid "French"
|
||||
msgstr "Fransk"
|
||||
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
msgstr "Tyrkisk"
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
msgstr "Spansk"
|
||||
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
msgstr "Russisk"
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr ""
|
||||
msgstr "Det der sker hver den 5. i måneden"
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr ""
|
||||
msgstr "Det der sker dagligt"
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr ""
|
||||
msgstr "Det der sker på mandage og onsdage"
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
msgstr "Svensk"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polsk"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Example userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is an example user entity..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Custom field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Example field value..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Waffle rolls"
|
||||
msgstr ""
|
||||
|
@@ -1,5 +1,5 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Troels Siggaard <troels@siggaard.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Last-Translator: Troels Siggaard <troels@siggaard.com>, 2019\n"
|
||||
"Language-Team: Danish (https://www.transifex.com/grocy/teams/93189/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,13 +17,13 @@ msgstr ""
|
||||
"X-Domain: grocy/stock_transaction_types\n"
|
||||
|
||||
msgid "purchase"
|
||||
msgstr "Køb"
|
||||
msgstr "køb"
|
||||
|
||||
msgid "consume"
|
||||
msgstr "Brug"
|
||||
msgstr "forbrug"
|
||||
|
||||
msgid "inventory-correction"
|
||||
msgstr "Beholdningsrettelse"
|
||||
msgstr "beholdningsrettelse"
|
||||
|
||||
msgid "product-opened"
|
||||
msgstr "Produkt åbnet"
|
||||
msgstr "produkt-åbnet"
|
||||
|
29
localization/de/chore_assignment_types.po
Normal file
29
localization/de/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Language-Team: German (https://www.transifex.com/grocy/teams/93189/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "Niemandem zuweisen"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "Wer es am seltensten gemacht hat zuerst"
|
||||
|
||||
msgid "random"
|
||||
msgstr "Zufällig"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "In alphabetischer Reihenfolge"
|
@@ -52,3 +52,6 @@ msgstr "de-DE"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "de"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "de_DE"
|
||||
|
@@ -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"
|
||||
@@ -670,7 +670,7 @@ msgstr ""
|
||||
|
||||
msgid "Removed all ingredients of recipe \"%s\" from stock"
|
||||
msgstr ""
|
||||
"Alle Zutaten, die vom Rezept \"%s\" benötigt werden, wurdem aus dem Bestand "
|
||||
"Alle Zutaten, die vom Rezept \"%s\" benötigt werden, wurden aus dem Bestand "
|
||||
"entfernt"
|
||||
|
||||
msgid "Consume all ingredients needed by this recipe"
|
||||
@@ -1366,3 +1366,307 @@ msgstr "Aufgaben \"bald fällig\" Tage"
|
||||
|
||||
msgid "Products"
|
||||
msgstr "Produkte"
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr "Aufgabe %s als erledigt markiert am %s"
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr ""
|
||||
"Die Buchung hat nachfolgende abhängige Buchungen, rückgängig machen nicht "
|
||||
"möglich"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr "pro Portion"
|
||||
|
||||
msgid "Never"
|
||||
msgstr "Nie"
|
||||
|
||||
msgid "Today"
|
||||
msgstr "Heute"
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr "Verbrauche %1$s %2$s als verdorben"
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
"Nicht alle Zutaten, die vom Rezept \"%s\" benötigt werden, sind vorrätig, es"
|
||||
" wurde nichts aus dem Bestand entfernt"
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr "Aufgabe \"%s\" rückgängig machen"
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr "Fälligkeit hinausschieben"
|
||||
|
||||
msgid ""
|
||||
"When enabled the chore can never be overdue, the due date will shift forward"
|
||||
" each day when due"
|
||||
msgstr ""
|
||||
"Wenn gewählt, kann die Hausarbeit nie überfällig werden - das "
|
||||
"Fälligkeitsdatum wird jeden Tag ab Fälligkeit einen Tag vorgeschoben"
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr "Standort-Inhaltsblatt"
|
||||
|
||||
msgid "Print"
|
||||
msgstr "Drucken"
|
||||
|
||||
msgid "all locations"
|
||||
msgstr "alle Standorte"
|
||||
|
||||
msgid ""
|
||||
"Here you can print a page per location with the current stock, maybe to hang"
|
||||
" it there and note the consumed things on it."
|
||||
msgstr ""
|
||||
"Hier kannst du eine Seite pro Standort mit dem aktuellen Bestand drucken, "
|
||||
"gedacht um diese am entsprechenden Platz aufzuhängen, damit die verbauchten "
|
||||
"Dinge darauf vermerkt werden können."
|
||||
|
||||
msgid "this location"
|
||||
msgstr "diesen Standort"
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr "Verbrauchte Menge"
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr "Druckzeitpunkt"
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr "Ausstattung \"%s\" wirklich löschen?"
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr "Übergeordnetes Produkt"
|
||||
|
||||
msgid ""
|
||||
"Not possible because this product is already used as a parent product in "
|
||||
"another product"
|
||||
msgstr ""
|
||||
"Nicht möglich, da dieses Produkt bereits als übergeordnetes Produkt eines "
|
||||
"anderen Produkts verwendet wird"
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr "Standardumrechnungen"
|
||||
|
||||
msgid "Factor"
|
||||
msgstr "Faktor"
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr "1 %s ist identisch mit..."
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr "ME-Umrechnung erstellen"
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr "Standard für ME"
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr "ME von"
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr "ME nach"
|
||||
|
||||
msgid ""
|
||||
"This cannot be lower than %1$s and must be a valid number with max. %2$s "
|
||||
"decimal places"
|
||||
msgstr ""
|
||||
"Diese darf nicht niedriger sein als %1$s und muss eine gültige Zahl mit max."
|
||||
" %2$s Nachkommastellen sein"
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr "Dies darf nicht gleich sein wie %s"
|
||||
|
||||
msgid "This means 1 %1$s is the same as %2$s %3$s"
|
||||
msgstr "Das bedeutet 1 %1$s entsprechen %2$s %3$s"
|
||||
|
||||
msgid "QU conversions"
|
||||
msgstr "ME-Umrechnungen"
|
||||
|
||||
msgid "Product overrides"
|
||||
msgstr "Produktübersteuerung"
|
||||
|
||||
msgid "Override for product"
|
||||
msgstr "Übersteuerung für Produkt"
|
||||
|
||||
msgid "This equals %1$s %2$s in stock"
|
||||
msgstr "Dies entspricht %1$s %2$s im Bestand"
|
||||
|
||||
msgid "Edit QU conversion"
|
||||
msgstr "ME-Umrechnung bearbeiten"
|
||||
|
||||
msgid "An assignment type is required"
|
||||
msgstr "Ein Zuweisungstyp ist erforderlich"
|
||||
|
||||
msgid "Assignment type"
|
||||
msgstr "Zuweisungstyp"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit 1 Tage nach der "
|
||||
"letzten Ausführung geplant wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution, but only for the weekdays selected below"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit 1 Tage nach der "
|
||||
"letzten Ausführung geplant wird, aber nur für unten ausgewählten Wochentage"
|
||||
|
||||
msgid "This means the next execution of this chore is not scheduled"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit nicht geplant wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled on the below "
|
||||
"selected day of each month"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass eine erneute Ausführung der Hausarbeit jeden Monat an dem"
|
||||
" unten ausgewählt Tag geplant wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will not be assigned to anyone"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass die nächste Ausführung der Hausarbeit niemandem "
|
||||
"zugewiesen wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the one who "
|
||||
"executed it least"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass die nächste Ausführung der Hausarbeit demjenigen "
|
||||
"zugewiesen wird, der diese am wenigsten häufig ausgeführt hat"
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned randomly"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass die nächste Ausführung der Hausarbeit zufällig jemanden "
|
||||
"zugewiesen wird"
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the next one"
|
||||
" in alphabetical order"
|
||||
msgstr ""
|
||||
"Das bedeutet, dass die nächste Ausführung der Hausarbeit dem nächsten in "
|
||||
"alphabetischer Reihenfolge zugewiesen wird"
|
||||
|
||||
msgid "Assign to"
|
||||
msgstr "Zuweisen an"
|
||||
|
||||
msgid "This assignment type requires that at least one is assigned"
|
||||
msgstr ""
|
||||
"Diese Zuordnungsart setzt voraus, dass mindestens eine Person zugeordnet ist"
|
||||
|
||||
msgid "%s chore is assigned to me"
|
||||
msgid_plural "%s chores are assigned to me"
|
||||
msgstr[0] "%s ist mir zugewiesen"
|
||||
msgstr[1] "%s Hausarbeiten sind mir zugewiesen"
|
||||
|
||||
msgid "Assigned to me"
|
||||
msgstr "Mir zugewiesen"
|
||||
|
||||
msgid "assigned to %s"
|
||||
msgstr "zugewiesen an %s"
|
||||
|
||||
msgid "Filter by assignment"
|
||||
msgstr "Nach Zuweisung filtern"
|
||||
|
||||
msgid "Consume product on chore execution"
|
||||
msgstr "Ein Produkt bei Hausarbeit-Ausführung verbrauchen"
|
||||
|
||||
msgid "Are you sure to delete user field \"%s\"?"
|
||||
msgstr "Benutzerfeld \"%s\" wirklich löschen?"
|
||||
|
||||
msgid "Userentities"
|
||||
msgstr "Benutzerentitäten"
|
||||
|
||||
msgid "Create userentity"
|
||||
msgstr "Benutzerentität erstellen"
|
||||
|
||||
msgid "Show in sidebar menu"
|
||||
msgstr "Im Seitenleisten-Menü anzeigen"
|
||||
|
||||
msgid "Edit userentity"
|
||||
msgstr "Benutzerentität bearbeiten"
|
||||
|
||||
msgid "Edit %s"
|
||||
msgstr "%s bearbeiten"
|
||||
|
||||
msgid "Create %s"
|
||||
msgstr "%s erstellen"
|
||||
|
||||
msgid "Are you sure to delete this userobject?"
|
||||
msgstr "Dieses Benutzerobject wirklich löschen?"
|
||||
|
||||
msgid "Icon CSS class"
|
||||
msgstr "Icon CSS-Klasse"
|
||||
|
||||
msgid "For example"
|
||||
msgstr "Zum Beispiel"
|
||||
|
||||
msgid "Configure fields"
|
||||
msgstr "Felder konfigurieren"
|
||||
|
||||
msgid "Quantity unit plural form testing"
|
||||
msgstr "ME Pluralformen testen"
|
||||
|
||||
msgid "Result"
|
||||
msgstr "Ergebnis"
|
||||
|
||||
msgid "Test plural forms"
|
||||
msgstr "Pluralformen testen"
|
||||
|
||||
msgid "Scan a barcode"
|
||||
msgstr "Scanne einen Barcode"
|
||||
|
||||
msgid "Error while initializing the barcode scanning library"
|
||||
msgstr "Fehler beim Initialisieren der Barcode-Scan-Komponenten"
|
||||
|
||||
msgid ""
|
||||
"The resulting price of this ingredient will be multiplied by this factor"
|
||||
msgstr ""
|
||||
"Der resultierende Preis dieser Zutat wird mit diesem Faktor multipliziert"
|
||||
|
||||
msgid "Price factor"
|
||||
msgstr "Preisfaktor"
|
||||
|
||||
msgid "Do you find grocy useful?"
|
||||
msgstr "Findest du grocy nützlich?"
|
||||
|
||||
msgid "Say thanks"
|
||||
msgstr "Sag Danke"
|
||||
|
||||
msgid "Search for recipes containing this product"
|
||||
msgstr "Suche nach Rezepten, die dieses Produkt enthalten"
|
||||
|
||||
msgid "Add to shopping list"
|
||||
msgstr "Zum Einkaufszettel hinzufügen"
|
||||
|
||||
msgid "Added %1$s of %2$s to the shopping list \"%3$s\""
|
||||
msgstr "%1$s %2$s dem Einkauszettel \"%3$s\" hinzugefügt"
|
||||
|
||||
msgid "Output"
|
||||
msgstr "Ausgabe"
|
||||
|
||||
msgid "Energy (kcal)"
|
||||
msgstr "Energie (kcal)"
|
||||
|
||||
msgid "Per stock quantity unit"
|
||||
msgstr "Pro Bestandsmengeneinheit"
|
||||
|
||||
msgid "Barcode scanner testing"
|
||||
msgstr "Barcodescanner testen"
|
||||
|
||||
msgid "Expected barcode"
|
||||
msgstr "Erwarteter Barcode"
|
||||
|
||||
msgid "Scan field"
|
||||
msgstr "Scanfeld"
|
||||
|
||||
msgid "Scanned barcodes"
|
||||
msgstr "Gescannte Barcodes"
|
||||
|
||||
msgid "Hit"
|
||||
msgstr "Erfolgreich"
|
||||
|
||||
msgid "Miss"
|
||||
msgstr "Fehler"
|
||||
|
@@ -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 ""
|
@@ -5,11 +5,11 @@ 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"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\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: ta\n"
|
||||
"Language: en_GB\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_types\n"
|
||||
|
48
localization/en_GB/component_translations.po
Normal file
48
localization/en_GB/component_translations.po
Normal file
@@ -0,0 +1,48 @@
|
||||
# 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-05-01 17:42+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\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/component_translations\n"
|
||||
|
||||
msgid "timeago_locale"
|
||||
msgstr "en"
|
||||
|
||||
msgid "timeago_nan"
|
||||
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"
|
@@ -5,11 +5,11 @@ 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"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\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: ta\n"
|
||||
"Language: en_GB\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/demo_data\n"
|
||||
|
||||
@@ -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 ""
|
@@ -5,11 +5,11 @@ 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"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\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: ta\n"
|
||||
"Language: en_GB\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/stock_transaction_types\n"
|
||||
|
@@ -5,11 +5,11 @@ 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"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\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: ta\n"
|
||||
"Language: en_GB\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/strings\n"
|
||||
|
||||
@@ -269,7 +269,7 @@ msgid ""
|
||||
" date suggestion"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means 1 %s purchased will be converted into %s %s in stock"
|
||||
msgid "This means 1 %1$s purchased will be converted into %2$s %3$s in stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Login"
|
||||
@@ -354,11 +354,11 @@ 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 %s %s of %s from stock"
|
||||
msgid "Removed %1$s of %2$s from stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "About grocy"
|
||||
@@ -370,19 +370,16 @@ msgstr ""
|
||||
msgid "Released on"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %s %s of %s"
|
||||
msgid "Added %1$s of %2$s to stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Added %s %s of %s to stock"
|
||||
msgid "Stock amount of %1$s is now %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stock amount of %s is now %s %s"
|
||||
msgid "Tracked execution of chore %1$s on %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tracked execution of chore %s on %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tracked charge cycle of battery %s on %s"
|
||||
msgid "Tracked charge cycle of battery %1$s on %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume all %s which are currently in stock"
|
||||
@@ -503,7 +500,7 @@ msgstr ""
|
||||
msgid "Recipe"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not enough in stock, %s missing, %s already on shopping list"
|
||||
msgid "Not enough in stock, %1$s missing, %2$s already on shopping list"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show notes"
|
||||
@@ -924,10 +921,10 @@ msgstr ""
|
||||
msgid "Add all list items to stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add %s %s of %s to stock"
|
||||
msgid "Add %1$s of %2$s to stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Adding shopping list item %s of %s"
|
||||
msgid "Adding shopping list item %1$s of %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Use a specific stock item"
|
||||
@@ -938,7 +935,7 @@ msgid ""
|
||||
"\"First expiring first, then first in first out\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Mark %s of %s as open"
|
||||
msgid "Mark %1$s of %2$s as open"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
@@ -949,13 +946,13 @@ msgstr ""
|
||||
msgid "Default best before days after opened"
|
||||
msgstr ""
|
||||
|
||||
msgid "Marked %s %s of %s as opened"
|
||||
msgid "Marked %1$s of %2$s as opened"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mark as opened"
|
||||
msgstr ""
|
||||
|
||||
msgid "Expires on %s; Bought on %s"
|
||||
msgid "Expires on %1$s; Bought on %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not opened"
|
||||
@@ -1097,7 +1094,7 @@ msgstr ""
|
||||
msgid "Changelog"
|
||||
msgstr ""
|
||||
|
||||
msgid "will be multiplied a factor of %s to get %s"
|
||||
msgid "will be multiplied a factor of %1$s to get %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "The given date is earlier than today, are you sure?"
|
||||
@@ -1153,7 +1150,7 @@ msgstr ""
|
||||
msgid "Show less"
|
||||
msgstr ""
|
||||
|
||||
msgid "The amount must be between %s and %s"
|
||||
msgid "The amount must be between %1$s and %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Day of month"
|
||||
@@ -1239,5 +1236,343 @@ msgid_plural "Not enough in stock, %s ingredients missing"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Consume %s of %s"
|
||||
msgid "The amount cannot be lower than %1$s or equal %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not enough in stock, but already on the shopping list"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not enough in stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Expiring soon days"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default amount for purchase"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default amount for consume"
|
||||
msgstr ""
|
||||
|
||||
msgid "Variable amount"
|
||||
msgstr ""
|
||||
|
||||
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 ""
|
||||
|
||||
msgid "Track date only"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled only the day of an execution is tracked, not the time"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Meal plan"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add recipe to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "%s serving"
|
||||
msgid_plural "%s servings"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Week costs"
|
||||
msgstr ""
|
||||
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
msgid "A predefined list of values, one per line"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chores due soon days"
|
||||
msgstr ""
|
||||
|
||||
msgid "Batteries due to be charged soon days"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tasks due soon days"
|
||||
msgstr ""
|
||||
|
||||
msgid "Products"
|
||||
msgstr ""
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr ""
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"When enabled the chore can never be overdue, the due date will shift forward"
|
||||
" each day when due"
|
||||
msgstr ""
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
msgid "all locations"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Here you can print a page per location with the current stock, maybe to hang"
|
||||
" it there and note the consumed things on it."
|
||||
msgstr ""
|
||||
|
||||
msgid "this location"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr ""
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Not possible because this product is already used as a parent product in "
|
||||
"another product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This cannot be lower than %1$s and must be a valid number with max. %2$s "
|
||||
"decimal places"
|
||||
msgstr ""
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means 1 %1$s is the same as %2$s %3$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "QU conversions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Product overrides"
|
||||
msgstr ""
|
||||
|
||||
msgid "Override for product"
|
||||
msgstr ""
|
||||
|
||||
msgid "This equals %1$s %2$s in stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit QU conversion"
|
||||
msgstr ""
|
||||
|
||||
msgid "An assignment type is required"
|
||||
msgstr ""
|
||||
|
||||
msgid "Assignment type"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled 1 day after the "
|
||||
"last execution, but only for the weekdays selected below"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is not scheduled"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore is scheduled on the below "
|
||||
"selected day of each month"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will not be assigned to anyone"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the one who "
|
||||
"executed it least"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned randomly"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"This means the next execution of this chore will be assigned to the next one"
|
||||
" in alphabetical order"
|
||||
msgstr ""
|
||||
|
||||
msgid "Assign to"
|
||||
msgstr ""
|
||||
|
||||
msgid "This assignment type requires that at least one is assigned"
|
||||
msgstr ""
|
||||
|
||||
msgid "%s chore is assigned to me"
|
||||
msgid_plural "%s chores are assigned to me"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Assigned to me"
|
||||
msgstr ""
|
||||
|
||||
msgid "assigned to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter by assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume product on chore execution"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete user field \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Userentities"
|
||||
msgstr ""
|
||||
|
||||
msgid "Create userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show in sidebar menu"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Create %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete this userobject?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Icon CSS class"
|
||||
msgstr ""
|
||||
|
||||
msgid "For example"
|
||||
msgstr ""
|
||||
|
||||
msgid "Configure fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit plural form testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Result"
|
||||
msgstr ""
|
||||
|
||||
msgid "Test plural forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scan a barcode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error while initializing the barcode scanning library"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"The resulting price of this ingredient will be multiplied by this factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Price factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do you find grocy useful?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Say thanks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Search for recipes containing this product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add to shopping list"
|
||||
msgstr ""
|
||||
|
||||
msgid "Added %1$s of %2$s to the shopping list \"%3$s\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Energy (kcal)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per stock quantity unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Barcode scanner testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Expected barcode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scan field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scanned barcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miss"
|
||||
msgstr ""
|
@@ -5,11 +5,11 @@ 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"
|
||||
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\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: ta\n"
|
||||
"Language: en_GB\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/userfield_types\n"
|
||||
|
||||
@@ -33,3 +33,12 @@ msgstr ""
|
||||
|
||||
msgid "checkbox"
|
||||
msgstr ""
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr ""
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr ""
|
||||
|
||||
msgid "link"
|
||||
msgstr ""
|
29
localization/es/chore_assignment_types.po
Normal file
29
localization/es/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Last-Translator: Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019\n"
|
||||
"Language-Team: Spanish (https://www.transifex.com/grocy/teams/93189/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "sin-asignar"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "quien-menos-primero"
|
||||
|
||||
msgid "random"
|
||||
msgstr "al-azar"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "orden-alfabético"
|
@@ -43,3 +43,6 @@ msgstr "es-ES"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "es"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "es_ES"
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Ankue <ankue.spam@gmail.com>, 2019
|
||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
@@ -37,33 +38,33 @@ msgstr "Nevera"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pieza"
|
||||
msgstr[1] "Piezas"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Paquetes"
|
||||
msgstr[1] "Paquetes"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Vaso"
|
||||
msgstr[1] "Vasos"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Envases"
|
||||
msgstr[1] "Envases"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Lata"
|
||||
msgstr[1] "Latas"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Puñados"
|
||||
msgstr[1] "Puñados"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Ositos"
|
||||
@@ -172,8 +173,8 @@ msgstr "Usuario de demostración"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gramo"
|
||||
msgstr[1] "Gramos"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Harina"
|
||||
@@ -281,4 +282,36 @@ msgid "Swedish"
|
||||
msgstr "Sueco"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polaco"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr "Chocolate con leche"
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr "Chocolate negro"
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] "Lonchas"
|
||||
msgstr[1] "Lonchas"
|
||||
|
||||
msgid "Example userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is an example user entity..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Custom field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Example field value..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Waffle rolls"
|
||||
msgstr ""
|
||||
|
||||
msgid "Danish"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dutch"
|
||||
msgstr ""
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +8,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:43+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Last-Translator: Fernando Sánchez <fernando.l.sanchez@gmail.com>, 2019\n"
|
||||
"Language-Team: Spanish (https://www.transifex.com/grocy/teams/93189/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -36,3 +37,12 @@ msgstr "Fecha y hora"
|
||||
|
||||
msgid "checkbox"
|
||||
msgstr "Casilla de verificación"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "lista-predefinida"
|
||||
|
||||
msgid "preset-checklist"
|
||||
msgstr "casillas-predefinidas"
|
||||
|
||||
msgid "link"
|
||||
msgstr "enlace"
|
||||
|
29
localization/fr/chore_assignment_types.po
Normal file
29
localization/fr/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Mathieu Fortin <mathieugfortin@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Last-Translator: Mathieu Fortin <mathieugfortin@gmail.com>, 2019\n"
|
||||
"Language-Team: French (https://www.transifex.com/grocy/teams/93189/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "pas-assigné"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "moins-fait-fait-le-suivant"
|
||||
|
||||
msgid "random"
|
||||
msgstr "aléatoire"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "ordre-alphabétique"
|
@@ -27,23 +27,22 @@ msgstr "fr"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\"sProcessing\":\"Traitement en "
|
||||
"cours...\",\"sSearch\":\"Rechercher :\",\"sLengthMenu\":\"Afficher "
|
||||
"_MENU_ éléments\",\"sInfo\":\"Affichage de "
|
||||
"l'élément _START_ à _END_ sur _TOTAL_ "
|
||||
"éléments\",\"sInfoEmpty\":\"Affichage de "
|
||||
"l'élément 0 à 0 sur 0 "
|
||||
"élément\",\"sInfoFiltered\":\"(filtré de _MAX_ "
|
||||
"éléments au "
|
||||
"total)\",\"sInfoPostFix\":\"\",\"sLoadingRecords\":\"Chargement en "
|
||||
"cours...\",\"sZeroRecords\":\"Aucun élément à "
|
||||
"afficher\",\"sEmptyTable\":\"Aucune donnée disponible dans le "
|
||||
"tableau\",\"oPaginate\":{\"sFirst\":\"Premier\",\"sPrevious\":\"Précédent\",\"sNext\":\"Suivant\",\"sLast\":\"Dernier\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
"{\"sProcessing\":\"Traitement en cours...\",\"sSearch\":\"Rechercher "
|
||||
":\",\"sLengthMenu\":\"Afficher _MENU_ éléments\",\"sInfo\":\"Affichage de "
|
||||
"l'élément _START_ à _END_ sur _TOTAL_ éléments\",\"sInfoEmpty\":\"Affichage "
|
||||
"de l'élément 0 à 0 sur 0 élément\",\"sInfoFiltered\":\"(filtré de _MAX_ "
|
||||
"éléments au total)\",\"sInfoPostFix\":\"\",\"sLoadingRecords\":\"Chargement "
|
||||
"en cours...\",\"sZeroRecords\":\"Aucun élément à "
|
||||
"afficher\",\"sEmptyTable\":\"Aucune donnée disponible dans le "
|
||||
"tableau\",\"oPaginate\":{\"sFirst\":\"Premier\",\"sPrevious\":\"Précédent\",\"sNext\":\"Suivant\",\"sLast\":\"Dernier\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
" activer pour trier la colonne par ordre croissant\",\"sSortDescending\":\":"
|
||||
" activer pour trier la colonne par ordre décroissant\"}}"
|
||||
" activer pour trier la colonne par ordre décroissant\"}}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "fr-FR"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "fr"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "fr_FR"
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Translators:
|
||||
# Cedric Octave <transifex@octvcdrc.fr>, 2019
|
||||
# bigoudo, 2019
|
||||
# Matthieu K, 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: bigoudo, 2019\n"
|
||||
"Last-Translator: Matthieu K, 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"
|
||||
@@ -37,36 +38,36 @@ msgstr "Réfrigérateur"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Unité"
|
||||
msgstr[1] "Unités"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pack"
|
||||
msgstr[1] "Packs"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Verre"
|
||||
msgstr[1] "Verres"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Boîte de conserve"
|
||||
msgstr[1] "Boîtes de conserve"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Canette"
|
||||
msgstr[1] "Canettes"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Lot"
|
||||
msgstr[1] "Lots"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Oursons en gélatine"
|
||||
msgstr "Bonbons Oursons"
|
||||
|
||||
msgid "Crisps"
|
||||
msgstr "Chips"
|
||||
@@ -81,7 +82,7 @@ msgid "Pickles"
|
||||
msgstr "Cornichons"
|
||||
|
||||
msgid "Gulash soup"
|
||||
msgstr "Soupe de goulache"
|
||||
msgstr "Minestrone"
|
||||
|
||||
msgid "Yogurt"
|
||||
msgstr "Yaourt"
|
||||
@@ -93,7 +94,7 @@ msgid "Cold cuts"
|
||||
msgstr "Charcuterie"
|
||||
|
||||
msgid "Paprika"
|
||||
msgstr "Paprika"
|
||||
msgstr "Piment d'Espelette"
|
||||
|
||||
msgid "Cucumber"
|
||||
msgstr "Concombre"
|
||||
@@ -105,7 +106,7 @@ msgid "Tomato"
|
||||
msgstr "Tomate"
|
||||
|
||||
msgid "Changed towels in the bathroom"
|
||||
msgstr "Changement des serviettes dans la salle de bain"
|
||||
msgstr "Lessive des serviettes de la salle de bain"
|
||||
|
||||
msgid "Cleaned the kitchen floor"
|
||||
msgstr "Nettoyage du sol de la cuisine"
|
||||
@@ -172,8 +173,8 @@ msgstr "Utilisateur de démonstration"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gramme"
|
||||
msgstr[1] "Grammes"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Farine"
|
||||
@@ -262,25 +263,51 @@ msgid "French"
|
||||
msgstr "Français"
|
||||
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
msgstr "Turque"
|
||||
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
msgstr "Espagnol"
|
||||
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
msgstr "Russe"
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr ""
|
||||
msgstr "La chose qui se répète le 5 de chaque mois"
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr ""
|
||||
msgstr "La chose qui se répète chaque jour"
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr ""
|
||||
msgstr "La chose qui se répète les Lundis et Mercredis"
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
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 ""
|
||||
|
@@ -1,7 +1,11 @@
|
||||
# Translators:
|
||||
# Cedric Octave <transifex@octvcdrc.fr>, 2019
|
||||
# bigoudo, 2019
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Alex Deneuvillers <alex.deneuvillers@gmail.com>, 2019
|
||||
# Cedric Octave <transifex@octvcdrc.fr>, 2019
|
||||
# Hydreliox Hydreliox <hydreliox@gmail.com>, 2019
|
||||
# Matthieu K, 2019
|
||||
# Mathieu Fortin <mathieugfortin@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -9,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: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Last-Translator: Mathieu Fortin <mathieugfortin@gmail.com>, 2019\n"
|
||||
"Language-Team: French (https://www.transifex.com/grocy/teams/93189/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -23,52 +27,52 @@ msgstr "Aperçu du stock"
|
||||
|
||||
msgid "%s product expires"
|
||||
msgid_plural "%s products expiring"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s produit périmé"
|
||||
msgstr[1] "%s produits périmés"
|
||||
|
||||
msgid "within the next day"
|
||||
msgid_plural "within the next %s days"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "d'ici demain"
|
||||
msgstr[1] "d'ici %s jours"
|
||||
|
||||
msgid "%s product is already expired"
|
||||
msgid_plural "%s products are already expired"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s produit est déjà périmé"
|
||||
msgstr[1] "%s produits sont déjà périmés"
|
||||
|
||||
msgid "%s product is below defined min. stock amount"
|
||||
msgid_plural "%s products are below defined min. stock amount"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s produit est en quantité inférieure à la limite définie"
|
||||
msgstr[1] "%s produits sont en quantité inférieure à la limite définie"
|
||||
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
msgid "%s Product"
|
||||
msgid_plural "%s Products"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s Produit"
|
||||
msgstr[1] "%s Produits"
|
||||
|
||||
msgid "Amount"
|
||||
msgstr "Quantité"
|
||||
|
||||
msgid "Next best before date"
|
||||
msgstr "Prochaine date de péremption"
|
||||
msgstr "Prochaine DLUO/DLC"
|
||||
|
||||
msgid "Logout"
|
||||
msgstr "Se déconnecter"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
msgid "Chores overview"
|
||||
msgstr "Aperçu des corvées"
|
||||
|
||||
msgid "Batteries overview"
|
||||
msgstr "Batteries"
|
||||
msgstr "Piles"
|
||||
|
||||
msgid "Purchase"
|
||||
msgstr "Achat"
|
||||
|
||||
msgid "Consume"
|
||||
msgstr "Consommation"
|
||||
msgstr "Consommer"
|
||||
|
||||
msgid "Inventory"
|
||||
msgstr "Inventaire"
|
||||
@@ -80,7 +84,7 @@ msgid "Chore tracking"
|
||||
msgstr "Suivi des corvées"
|
||||
|
||||
msgid "Battery tracking"
|
||||
msgstr "Suivi des batteries"
|
||||
msgstr "Suivi des piles"
|
||||
|
||||
msgid "Locations"
|
||||
msgstr "Emplacements"
|
||||
@@ -113,7 +117,7 @@ msgid "Next planned charge cycle"
|
||||
msgstr "Prochaine charge planifiée"
|
||||
|
||||
msgid "Best before"
|
||||
msgstr "Date d'expiration"
|
||||
msgstr "DLUO / DLC"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Ok"
|
||||
@@ -142,13 +146,14 @@ msgstr "La recherche par code barres est désactivée"
|
||||
msgid ""
|
||||
"will be added to the list of barcodes for the selected product on submit"
|
||||
msgstr ""
|
||||
"sera ajouté à la liste des codes barres du produit sélectionné à l'envoi"
|
||||
"sera ajouté à la liste des codes-barres pour le produit sélectionné après "
|
||||
"avoir cliqué sur le bouton"
|
||||
|
||||
msgid "New amount"
|
||||
msgstr "Nouvelle quantité"
|
||||
|
||||
msgid "Note"
|
||||
msgstr "Note"
|
||||
msgstr "Remarques"
|
||||
|
||||
msgid "Tracked time"
|
||||
msgstr "Réalisé le"
|
||||
@@ -276,8 +281,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"A l'achat, ce nombre de jours sera ajouté à la date de péremption suggérée"
|
||||
|
||||
msgid "This means 1 %s purchased will be converted into %s %s in stock"
|
||||
msgstr "1 %s acheté sera converti en %s %s dans le stock"
|
||||
msgid "This means 1 %1$s purchased will be converted into %2$s %3$s in stock"
|
||||
msgstr "Signifie qu'après l'achat d'1 %1$s vous aurez %2$s %3$s dans le stock"
|
||||
|
||||
msgid "Login"
|
||||
msgstr "Se connecter"
|
||||
@@ -369,8 +374,8 @@ msgstr ""
|
||||
"La prochaine exécution de cette corvée sera programmée %s jours après sa "
|
||||
"dernière exécution"
|
||||
|
||||
msgid "Removed %s %s of %s from stock"
|
||||
msgstr "%s %s de %s supprimés du stock"
|
||||
msgid "Removed %1$s of %2$s from stock"
|
||||
msgstr "%1$senlevé du stock de%2$s "
|
||||
|
||||
msgid "About grocy"
|
||||
msgstr "À propos de grocy"
|
||||
@@ -381,20 +386,17 @@ msgstr "Fermer"
|
||||
msgid "Released on"
|
||||
msgstr "Date de sortie"
|
||||
|
||||
msgid "Consume %s %s of %s"
|
||||
msgstr "Consommer %s %s de %s"
|
||||
msgid "Added %1$s of %2$s to stock"
|
||||
msgstr "Ajouté %1$s de %2$s au stock"
|
||||
|
||||
msgid "Added %s %s of %s to stock"
|
||||
msgstr "%s %s de %s ajoutés au stock"
|
||||
msgid "Stock amount of %1$s is now %2$s"
|
||||
msgstr "La quantité en stock de %1$s est maintenant de %2$s"
|
||||
|
||||
msgid "Stock amount of %s is now %s %s"
|
||||
msgstr "La quantité en stock de %s est maintenant de %s %s"
|
||||
msgid "Tracked execution of chore %1$s on %2$s"
|
||||
msgstr "Suivi de la corvée%1$s sur %2$s"
|
||||
|
||||
msgid "Tracked execution of chore %s on %s"
|
||||
msgstr "La corvée \"%s\" a été réalisée le %s"
|
||||
|
||||
msgid "Tracked charge cycle of battery %s on %s"
|
||||
msgstr "La batterie \"%s\" a été rechargée le %s"
|
||||
msgid "Tracked charge cycle of battery %1$s on %2$s"
|
||||
msgstr "Suivi de la recharge des piles%1$s sur %2$s"
|
||||
|
||||
msgid "Consume all %s which are currently in stock"
|
||||
msgstr "Consommer tous les %s actuellement en stock"
|
||||
@@ -445,7 +447,7 @@ msgid "A period type is required"
|
||||
msgstr "Un type de période est requis"
|
||||
|
||||
msgid "A best before date is required"
|
||||
msgstr ""
|
||||
msgstr "Une date \"À consommer de préférence\" est requise"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Paramètres"
|
||||
@@ -481,7 +483,7 @@ msgid "Are you sure to delete recipe ingredient \"%s\"?"
|
||||
msgstr "Voulez-vous vraiment supprimer l'ingrédient \"%s\" de la recette ?"
|
||||
|
||||
msgid "Are you sure to empty shopping list \"%s\"?"
|
||||
msgstr ""
|
||||
msgstr "Voulez-vous vraiment vider la liste de courses ?"
|
||||
|
||||
msgid "Clear list"
|
||||
msgstr "Vider la liste"
|
||||
@@ -500,7 +502,11 @@ msgid ""
|
||||
msgid_plural ""
|
||||
"Not enough in stock, %s ingredients missing but already on the shopping list"
|
||||
msgstr[0] ""
|
||||
"Pas assez en stock, %s ingrédient manquant mais déjà ajouté à la liste de "
|
||||
"courses"
|
||||
msgstr[1] ""
|
||||
"Pas assez en stock, %s ingrédients manquants mais déjà ajoutés à la liste de"
|
||||
" courses"
|
||||
|
||||
msgid "Expand to fullscreen"
|
||||
msgstr "Mettre en plein écran"
|
||||
@@ -514,8 +520,8 @@ msgstr "Préparation"
|
||||
msgid "Recipe"
|
||||
msgstr "Recette"
|
||||
|
||||
msgid "Not enough in stock, %s missing, %s already on shopping list"
|
||||
msgstr "Pas assez en stock, %s manquant et %s déjà dans la liste de courses"
|
||||
msgid "Not enough in stock, %1$s missing, %2$s already on shopping list"
|
||||
msgstr "Pas assez en stock, %1$s manque, %2$s déjà dans la liste de courses"
|
||||
|
||||
msgid "Show notes"
|
||||
msgstr "Afficher les notes"
|
||||
@@ -615,28 +621,28 @@ msgstr "Unité"
|
||||
|
||||
msgid "%s Unit"
|
||||
msgid_plural "%s Units"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s unité"
|
||||
msgstr[1] "%s unités"
|
||||
|
||||
msgid "%s chore is due to be done"
|
||||
msgid_plural "%s chores are due to be done"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s corvée reste à faire"
|
||||
msgstr[1] "%s corvées restent à faire"
|
||||
|
||||
msgid "%s chore is overdue to be done"
|
||||
msgid_plural "%s chores are overdue to be done"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s corvée n'a pas été réalisée à temps"
|
||||
msgstr[1] "%s corvées n'ont pas été réalisées à temps"
|
||||
|
||||
msgid "%s battery is due to be charged"
|
||||
msgid_plural "%s batteries are due to be charged"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s pile doit être rechargée"
|
||||
msgstr[1] "%s piles doivent être rechargées"
|
||||
|
||||
msgid "%s battery is overdue to be charged"
|
||||
msgid_plural "%s batteries are overdue to be charged"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s pile aurait dû être chargée"
|
||||
msgstr[1] "%s piles auraient dû être rechargées"
|
||||
|
||||
msgid "in singular form"
|
||||
msgstr "Au singulier"
|
||||
@@ -724,13 +730,13 @@ msgstr "Voulez-vous vraiment supprimer la tâche \"%s\" ?"
|
||||
|
||||
msgid "%s task is due to be done"
|
||||
msgid_plural "%s tasks are due to be done"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s tâche est due"
|
||||
msgstr[1] "%s tâches sont dues"
|
||||
|
||||
msgid "%s task is overdue to be done"
|
||||
msgid_plural "%s tasks are overdue to be done"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "%s tâche en retard"
|
||||
msgstr[1] "%s tâches en retard"
|
||||
|
||||
msgid "Edit task category"
|
||||
msgstr "Modifier la catégorie de tâche"
|
||||
@@ -949,11 +955,11 @@ msgstr "Désactiver la vérification du stock pour cet ingrédient"
|
||||
msgid "Add all list items to stock"
|
||||
msgstr "Ajouter toute la liste dans le stock"
|
||||
|
||||
msgid "Add %s %s of %s to stock"
|
||||
msgstr "Ajouter %s %s de %s au stock"
|
||||
msgid "Add %1$s of %2$s to stock"
|
||||
msgstr "Ajouter %1$s de %2$s au stock"
|
||||
|
||||
msgid "Adding shopping list item %s of %s"
|
||||
msgstr "Ajout du produit %s sur %s de la liste de courses"
|
||||
msgid "Adding shopping list item %1$s of %2$s"
|
||||
msgstr "Ajout :%1$s de %2$s à la liste de courses"
|
||||
|
||||
msgid "Use a specific stock item"
|
||||
msgstr "Utiliser un objet spécifique du stock"
|
||||
@@ -966,8 +972,8 @@ msgstr ""
|
||||
"qui est \"Le premier arrivant à péremption en premier, puis premier entré "
|
||||
"premier sorti\""
|
||||
|
||||
msgid "Mark %s of %s as open"
|
||||
msgstr ""
|
||||
msgid "Mark %1$s of %2$s as open"
|
||||
msgstr "Indiquer%1$s de %2$s comme ouvert"
|
||||
|
||||
msgid ""
|
||||
"When a product was marked as opened, the best before date will be replaced "
|
||||
@@ -980,14 +986,14 @@ msgstr ""
|
||||
msgid "Default best before days after opened"
|
||||
msgstr "Date de péremption en jours par défaut après ouverture"
|
||||
|
||||
msgid "Marked %s %s of %s as opened"
|
||||
msgstr "%s %s de %s indiqués comme ouverts"
|
||||
msgid "Marked %1$s of %2$s as opened"
|
||||
msgstr "Indiqué%1$s de %2$s comme ouvert"
|
||||
|
||||
msgid "Mark as opened"
|
||||
msgstr "Indiquer comme ouvert"
|
||||
|
||||
msgid "Expires on %s; Bought on %s"
|
||||
msgstr "Périme le %s; Acheté le %s"
|
||||
msgid "Expires on %1$s; Bought on %2$s"
|
||||
msgstr "Se périmera le%1$s; Acheté le %2$s"
|
||||
|
||||
msgid "Not opened"
|
||||
msgstr "Non ouvert"
|
||||
@@ -1031,19 +1037,19 @@ msgid "Skip"
|
||||
msgstr "Passer"
|
||||
|
||||
msgid "Servings"
|
||||
msgstr ""
|
||||
msgstr "Parts / Portions"
|
||||
|
||||
msgid "Costs"
|
||||
msgstr ""
|
||||
msgstr "Coûts"
|
||||
|
||||
msgid "Based on the prices of the last purchase per product"
|
||||
msgstr ""
|
||||
msgstr "Basé sur les prix du dernier achat du produit"
|
||||
|
||||
msgid "The ingredients listed here result in this amount of servings"
|
||||
msgstr ""
|
||||
msgstr "Les ingrédients mentionnés ici correspondent à ce nombre de portions"
|
||||
|
||||
msgid "Do not check against the shopping list when adding missing items to it"
|
||||
msgstr ""
|
||||
msgstr "Désactiver la fonction d'ajout automatique à la liste de courses"
|
||||
|
||||
msgid ""
|
||||
"By default the amount to be added to the shopping list is \"needed amount - "
|
||||
@@ -1051,227 +1057,335 @@ msgid ""
|
||||
"checked against the stock amount, not against what is already on the "
|
||||
"shopping list"
|
||||
msgstr ""
|
||||
"Par défaut, la quantité ajoutée à la liste d'achats est \"qté nécessaire - "
|
||||
"qté en stock - qté sur la liste de courses\", lorsque cette fonction est "
|
||||
"activée, la comparaison s'effectuera par rapport au stock et non à la "
|
||||
"quantité déjà présente sur la liste de course."
|
||||
|
||||
msgid "Picture"
|
||||
msgstr ""
|
||||
msgstr "Photo"
|
||||
|
||||
msgid "Uncheck ingredients to not put them on the shopping list"
|
||||
msgstr ""
|
||||
"Pas assez en stock, %s ingrédients manquants mais déjà dans la liste de "
|
||||
"courses"
|
||||
|
||||
msgid "This is for statistical purposes only"
|
||||
msgstr ""
|
||||
msgstr "À des fins statistiques uniquement"
|
||||
|
||||
msgid "You have to select a recipe"
|
||||
msgstr ""
|
||||
msgstr "Vous devez sélectionner une recette"
|
||||
|
||||
msgid "Key type"
|
||||
msgstr ""
|
||||
msgstr "Type d'attribut"
|
||||
|
||||
msgid "Share/Integrate calendar (iCal)"
|
||||
msgstr ""
|
||||
msgstr "Partage du calendrier (iCal)"
|
||||
|
||||
msgid ""
|
||||
"Use the following (public) URL to share or integrate the calendar in iCal "
|
||||
"format"
|
||||
msgstr ""
|
||||
"Utilisez cette URL (publique) pour partager ou intégrer le calendrier au "
|
||||
"format iCal."
|
||||
|
||||
msgid "Allow partial units in stock"
|
||||
msgstr ""
|
||||
msgstr "Unités avec décimale"
|
||||
|
||||
msgid "Enable tare weight handling"
|
||||
msgstr ""
|
||||
msgstr "Activer la pesée"
|
||||
|
||||
msgid ""
|
||||
"This is useful e.g. for flour in jars - on purchase/consume/inventory you "
|
||||
"always weigh the whole jar, the amount to be posted is then automatically "
|
||||
"calculated based on what is in stock and the tare weight defined below"
|
||||
msgstr ""
|
||||
"Lors de l'utilisation d'un récipient hermétique, vous pouvez définir ici la "
|
||||
"\"tare\" ou \"poids à vide\". Le calcul du \"poids net\" s'effectuera "
|
||||
"automatiquement à partir du \"poids brut\" que vous aurez constaté."
|
||||
|
||||
msgid "Tare weight"
|
||||
msgstr ""
|
||||
msgstr "Tare"
|
||||
|
||||
msgid ""
|
||||
"Tare weight handling enabled - please weigh the whole container, the amount "
|
||||
"to be posted will be automatically calculcated"
|
||||
msgstr ""
|
||||
"Mode pesée activé, veuillez saisir le poids total sans tenir compte du "
|
||||
"récipient, appelé aussi \"poids brut\"."
|
||||
|
||||
msgid "You have to select a location"
|
||||
msgstr ""
|
||||
msgstr "Vous devez sélectionner un endroit"
|
||||
|
||||
msgid "List"
|
||||
msgstr ""
|
||||
msgstr "Liste"
|
||||
|
||||
msgid "Gallery"
|
||||
msgstr ""
|
||||
msgstr "Gallerie"
|
||||
|
||||
msgid "The current picture will be deleted when you save the recipe"
|
||||
msgstr ""
|
||||
msgstr "La photo actuelle sera supprimée lors de la sauvegarde de la recette."
|
||||
|
||||
msgid "Show product details"
|
||||
msgstr ""
|
||||
msgstr "Voir les détails du produit"
|
||||
|
||||
msgid "Stock journal for this product"
|
||||
msgstr ""
|
||||
msgstr "Journal du stock"
|
||||
|
||||
msgid "Show chore details"
|
||||
msgstr ""
|
||||
msgstr "Voir les détails de la corvée"
|
||||
|
||||
msgid "Journal for this chore"
|
||||
msgstr ""
|
||||
msgstr "Journal de la corvée"
|
||||
|
||||
msgid "Show battery details"
|
||||
msgstr ""
|
||||
msgstr "Voir les détails"
|
||||
|
||||
msgid "Journal for this battery"
|
||||
msgstr ""
|
||||
msgstr "Journal individuel"
|
||||
|
||||
msgid "System info"
|
||||
msgstr ""
|
||||
msgstr "Informations système"
|
||||
|
||||
msgid "Changelog"
|
||||
msgstr ""
|
||||
msgstr "Journalisation"
|
||||
|
||||
msgid "will be multiplied a factor of %s to get %s"
|
||||
msgstr ""
|
||||
msgid "will be multiplied a factor of %1$s to get %2$s"
|
||||
msgstr "sera multiplié par %1$s pour obtenir %2$s"
|
||||
|
||||
msgid "The given date is earlier than today, are you sure?"
|
||||
msgstr ""
|
||||
msgstr "La date saisie est antérieure à aujourd'hui, êtes-vous sûr?"
|
||||
|
||||
msgid "Product count"
|
||||
msgstr ""
|
||||
msgstr "Nombre de produits"
|
||||
|
||||
msgid "Type a new product name or barcode and hit TAB to start a workflow"
|
||||
msgstr ""
|
||||
"Tapez un nouveau nom de produit ou un nouveau code-barres et appuyez sur la "
|
||||
"touche de tabulation pour lancer un flux de travail."
|
||||
|
||||
msgid ""
|
||||
"This will be used as the default setting when adding this product as a "
|
||||
"recipe ingredient"
|
||||
msgstr ""
|
||||
"Ce paramétrage sera utilisé par défaut quand ce produit sera ajouté en tant "
|
||||
"qu'ingrédient dans une recette"
|
||||
|
||||
msgid "Add item"
|
||||
msgstr ""
|
||||
msgstr "Ajouter item"
|
||||
|
||||
msgid "Selected shopping list"
|
||||
msgstr ""
|
||||
msgstr "Liste de courses sélectionnée"
|
||||
|
||||
msgid "New shopping list"
|
||||
msgstr ""
|
||||
msgstr "Nouvelle liste de courses"
|
||||
|
||||
msgid "Delete shopping list"
|
||||
msgstr ""
|
||||
msgstr "Supprimer liste de courses"
|
||||
|
||||
msgid "Chores settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres des corvées"
|
||||
|
||||
msgid "Batteries settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres des batteries"
|
||||
|
||||
msgid "Tasks settings"
|
||||
msgstr ""
|
||||
msgstr "Paramètres des tâches"
|
||||
|
||||
msgid "Create shopping list"
|
||||
msgstr ""
|
||||
msgstr "Créer liste de courses"
|
||||
|
||||
msgid "Are you sure to delete shopping list \"%s\"?"
|
||||
msgstr ""
|
||||
msgstr "Voulez-vous vraiment vider la liste de courses \"%s\" ?"
|
||||
|
||||
msgid "Average shelf life"
|
||||
msgstr ""
|
||||
msgstr "Durée moyenne de conservation "
|
||||
|
||||
msgid "Spoil rate"
|
||||
msgstr ""
|
||||
msgstr "Taux de gâte"
|
||||
|
||||
msgid "Show more"
|
||||
msgstr ""
|
||||
msgstr "Afficher plus"
|
||||
|
||||
msgid "Show less"
|
||||
msgstr ""
|
||||
msgstr "Afficher moins"
|
||||
|
||||
msgid "The amount must be between %s and %s"
|
||||
msgstr ""
|
||||
msgid "The amount must be between %1$s and %2$s"
|
||||
msgstr "La quantité doit se situer entre %1$s et %2$s"
|
||||
|
||||
msgid "Day of month"
|
||||
msgstr ""
|
||||
msgstr "Jour du mois"
|
||||
|
||||
msgid "Monday"
|
||||
msgstr ""
|
||||
msgstr "Lundi"
|
||||
|
||||
msgid "Tuesday"
|
||||
msgstr ""
|
||||
msgstr "Mardi"
|
||||
|
||||
msgid "Wednesday"
|
||||
msgstr ""
|
||||
msgstr "Mercredi"
|
||||
|
||||
msgid "Thursday"
|
||||
msgstr ""
|
||||
msgstr "Jeudi"
|
||||
|
||||
msgid "Friday"
|
||||
msgstr ""
|
||||
msgstr "Vendredi"
|
||||
|
||||
msgid "Saturday"
|
||||
msgstr ""
|
||||
msgstr "Samedi"
|
||||
|
||||
msgid "Sunday"
|
||||
msgstr ""
|
||||
msgstr "Dimanche"
|
||||
|
||||
msgid "Configure userfields"
|
||||
msgstr ""
|
||||
msgstr "Configurer les attributs personalisés"
|
||||
|
||||
msgid "Userfields"
|
||||
msgstr ""
|
||||
msgstr "Attributs personalisés"
|
||||
|
||||
msgid "Filter by entity"
|
||||
msgstr ""
|
||||
msgstr "Filtrer par entité"
|
||||
|
||||
msgid "Entity"
|
||||
msgstr ""
|
||||
msgstr "Élément"
|
||||
|
||||
msgid "Caption"
|
||||
msgstr ""
|
||||
msgstr "Titre"
|
||||
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "Type"
|
||||
|
||||
msgid "Create userfield"
|
||||
msgstr ""
|
||||
msgstr "Ajouter un attribut personalisé"
|
||||
|
||||
msgid "A entity is required"
|
||||
msgstr ""
|
||||
msgstr "Vous n'avez pas défini d'élément"
|
||||
|
||||
msgid "A caption is required"
|
||||
msgstr ""
|
||||
msgstr "Vous n'avez pas défini de titre"
|
||||
|
||||
msgid "A type is required"
|
||||
msgstr ""
|
||||
msgstr "Vous n'avez pas défini de type"
|
||||
|
||||
msgid "Show as column in tables"
|
||||
msgstr ""
|
||||
msgstr "Affichage des valeurs dans une colonne"
|
||||
|
||||
msgid "This is required and can only contain letters and numbers"
|
||||
msgstr ""
|
||||
msgstr "Obligatoire, ne peut contenir que des lettres et des chiffres"
|
||||
|
||||
msgid "Edit userfield"
|
||||
msgstr ""
|
||||
msgstr "Configurer l'attribut personalisé"
|
||||
|
||||
msgid "Plural forms"
|
||||
msgstr ""
|
||||
msgstr "Forme plurielle"
|
||||
|
||||
msgid "One plural form per line, the current language requires"
|
||||
msgstr ""
|
||||
msgstr "Une forme plurielle par ligne, la langue actuelle nécessite"
|
||||
|
||||
msgid "Plural count"
|
||||
msgstr ""
|
||||
msgstr "Nombre de pluriel"
|
||||
|
||||
msgid "Plural rule"
|
||||
msgstr ""
|
||||
msgstr "Règle pour la forme plurielle"
|
||||
|
||||
msgid "in plural form"
|
||||
msgstr "Au pluriel"
|
||||
|
||||
msgid "Not enough in stock, %s ingredient missing"
|
||||
msgid_plural "Not enough in stock, %s ingredients missing"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pas assez en stock, il vous manque %s ingrédient"
|
||||
msgstr[1] "Pas assez en stock, il vous manque %s ingrédients"
|
||||
|
||||
msgid "Consume %s of %s"
|
||||
msgid "The amount cannot be lower than %1$s or equal %2$s"
|
||||
msgstr "La quantité ne peut être inférieure à%1$s ou égale à %2$s"
|
||||
|
||||
msgid "Not enough in stock, but already on the shopping list"
|
||||
msgstr "Pas assez en stock, mais déjà sur la liste de courses."
|
||||
|
||||
msgid "Not enough in stock"
|
||||
msgstr "Pas assez en stock"
|
||||
|
||||
msgid "Expiring soon days"
|
||||
msgstr "Jours avant péremption"
|
||||
|
||||
msgid "Default amount for purchase"
|
||||
msgstr "Quantité ajoutée par défaut lors d'un achat"
|
||||
|
||||
msgid "Default amount for consume"
|
||||
msgstr "Quantité retirée par défaut lors de la consommation"
|
||||
|
||||
msgid "Variable amount"
|
||||
msgstr "Quantité variable"
|
||||
|
||||
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 ""
|
||||
"Lorsque ce champs n'est pas vide, la valeur sera affichée à la place de "
|
||||
"celle saisie ci-dessus mais la valeur initiale restera utilsée pour la "
|
||||
"vérification des quantité minimales du stock."
|
||||
|
||||
msgid "Track date only"
|
||||
msgstr "Suivre uniquement les dates"
|
||||
|
||||
msgid "When enabled only the day of an execution is tracked, not the time"
|
||||
msgstr "Lorsque activé, seul le jour d'une exécution est suivi, pas l'heure"
|
||||
|
||||
msgid "Consume %1$s of %2$s"
|
||||
msgstr "Consommer %1$s de %2$s"
|
||||
|
||||
msgid "Meal plan"
|
||||
msgstr "Prévisions des menus"
|
||||
|
||||
msgid "Add recipe to %s"
|
||||
msgstr "Ajouter la recette à %s"
|
||||
|
||||
msgid "%s serving"
|
||||
msgid_plural "%s servings"
|
||||
msgstr[0] "%s part / portion"
|
||||
msgstr[1] "%s parts / portions"
|
||||
|
||||
msgid "Week costs"
|
||||
msgstr "Budget hebo"
|
||||
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
msgid "A predefined list of values, one per line"
|
||||
msgstr "Liste prédéfinie, une valeur par ligne"
|
||||
|
||||
msgid "Chores due soon days"
|
||||
msgstr "Corvée à réaliser jours"
|
||||
|
||||
msgid "Batteries due to be charged soon days"
|
||||
msgstr "piles doivent être rechargées jours"
|
||||
|
||||
msgid "Tasks due soon days"
|
||||
msgstr "Tâches à réaliser bientôt jours"
|
||||
|
||||
msgid "Products"
|
||||
msgstr "Produits"
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr "La réservation a des dépendances, impossible de revenir en arrière"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr ""
|
||||
|
29
localization/it/chore_assignment_types.po
Normal file
29
localization/it/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Antonino Ursino <ninus_@libero.it>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Last-Translator: Antonino Ursino <ninus_@libero.it>, 2019\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/grocy/teams/93189/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "nessun-incarico"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "Gli-ultimi-saranno-i-primi"
|
||||
|
||||
msgid "random"
|
||||
msgstr "casuale"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "in-ordine-alfabetico"
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Matteo Piotto <matteo.piotto@welaika.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +8,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Last-Translator: Matteo Piotto <matteo.piotto@welaika.com>, 2019\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/grocy/teams/93189/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -23,10 +24,10 @@ msgid "dynamic-regular"
|
||||
msgstr "Regolatore dinamico"
|
||||
|
||||
msgid "daily"
|
||||
msgstr ""
|
||||
msgstr "Giornalmente"
|
||||
|
||||
msgid "weekly"
|
||||
msgstr ""
|
||||
msgstr "Settimanalmente"
|
||||
|
||||
msgid "monthly"
|
||||
msgstr ""
|
||||
msgstr "Mensilmente"
|
@@ -20,25 +20,48 @@ msgid "timeago_locale"
|
||||
msgstr "it"
|
||||
|
||||
msgid "timeago_nan"
|
||||
msgstr "NaN anni fa"
|
||||
msgstr "NaN anni"
|
||||
|
||||
msgid "moment_locale"
|
||||
msgstr "it"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\"sEmptyTable\":\"Nessun dato disponibile\",\"sInfo\":\"Mostrando da "
|
||||
"_START_ a _END_ di _TOTAL_ voci\",\"sInfoEmpty\":\"Mostrando da 0 a 0 di 0 "
|
||||
"voci\",\"sInfoFiltered\":\"(Filtrato da _MAX_ voci "
|
||||
"totali)\",\"sInfoPostFix\":\"\",\"sInfoThousands\":\",\",\"sLengthMenu\":\"Mostra"
|
||||
" _MENU_ "
|
||||
"voci\",\"sLoadingRecords\":\"Caricando...\",\"sProcessing\":\"Calcolando...\",\"sSearch\":\"Cerca:\",\"sZeroRecords\":\"Nessun"
|
||||
" risultato "
|
||||
"trovato\",\"oPaginate\":{\"sFirst\":\"Prima\",\"sLast\":\"Ultima\",\"sNext\":\"Prossima\",\"sPrevious\":\"Precedente\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
" ordine crescente\",\"sSortDescending\":\": ordine decrescente\"}}"
|
||||
"{\n"
|
||||
"\"sProcessing\": \"Traitement en cours...\",\n"
|
||||
"\"sSearch\": \"Rechercher :\",\n"
|
||||
"\"sLengthMenu\": \"Afficher _MENU_ éléments\",\n"
|
||||
"\"sInfo\": \"Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments\",\n"
|
||||
"\"sInfoEmpty\": \"Affichage de l'élément 0 à 0 sur 0 élément\",\n"
|
||||
"\"sInfoFiltered\": \"(filtré de _MAX_ éléments au total)\",\n"
|
||||
"\"sInfoPostFix\": \"\",\n"
|
||||
"\"sLoadingRecords\": \"Chargement en cours...\",\n"
|
||||
"\"sZeroRecords\": \"Aucun élément à afficher\",\n"
|
||||
"\"sEmptyTable\": \"Aucune donnée disponible dans le tableau\",\n"
|
||||
"\"oPaginate\": {\n"
|
||||
"\"sFirst\": \"Premier\",\n"
|
||||
"\"sPrevious\": \"Précédent\",\n"
|
||||
"\"sNext\": \"Suivant\",\n"
|
||||
"\"sLast\": \"Dernier\"\n"
|
||||
"},\n"
|
||||
"\"oAria\": {\n"
|
||||
"\"sSortAscending\": \": activer pour trier la colonne par ordre croissant\",\n"
|
||||
"\"sSortDescending\": \": activer pour trier la colonne par ordre décroissant\"\n"
|
||||
"},\n"
|
||||
"\"select\": {\n"
|
||||
"\"rows\": {\n"
|
||||
"_: \"%d lignes séléctionnées\",\n"
|
||||
"0: \"Aucune ligne séléctionnée\",\n"
|
||||
"1: \"1 ligne séléctionnée\"\n"
|
||||
"} \n"
|
||||
"}\n"
|
||||
"}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "it-IT"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "fr"
|
||||
msgstr "it"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "it_IT"
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# Translators:
|
||||
# Sergio Zampello <seriotv88@gmail.com>, 2019
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Antonino Ursino <ninus_@libero.it>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -8,7 +9,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Last-Translator: Antonino Ursino <ninus_@libero.it>, 2019\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/grocy/teams/93189/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -24,49 +25,49 @@ msgid "Chocolate"
|
||||
msgstr "Cioccolato"
|
||||
|
||||
msgid "Pantry"
|
||||
msgstr "Vorratskammer"
|
||||
msgstr "Dispensa"
|
||||
|
||||
msgid "Candy cupboard"
|
||||
msgstr "Süßigkeitenschrank"
|
||||
msgstr "Credenza delle caramelle"
|
||||
|
||||
msgid "Tinned food cupboard"
|
||||
msgstr "Konservenschrank"
|
||||
msgstr "Credenza del cibo in scatola"
|
||||
|
||||
msgid "Fridge"
|
||||
msgstr "Kühlschrank"
|
||||
msgstr "Frigorifero"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pezzo"
|
||||
msgstr[1] "Pezzi"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Pacco"
|
||||
msgstr[1] "Pacchi"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Bicchiere"
|
||||
msgstr[1] "Bicchieri"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Lattina"
|
||||
msgstr[1] "Lattine"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Barattolo"
|
||||
msgstr[1] "Barattoli"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Grappolo"
|
||||
msgstr[1] "Grappoli"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Caramelle"
|
||||
msgstr "Orsetti gommosi"
|
||||
|
||||
msgid "Crisps"
|
||||
msgstr "Patatine"
|
||||
@@ -75,46 +76,46 @@ msgid "Eggs"
|
||||
msgstr "Uova"
|
||||
|
||||
msgid "Noodles"
|
||||
msgstr "Spaghetti"
|
||||
msgstr "Tagliatelle"
|
||||
|
||||
msgid "Pickles"
|
||||
msgstr "Marmellata"
|
||||
msgstr "Sottaceti"
|
||||
|
||||
msgid "Gulash soup"
|
||||
msgstr "Dado"
|
||||
msgstr "Zuppa di Gulash"
|
||||
|
||||
msgid "Yogurt"
|
||||
msgstr "Yogurt"
|
||||
|
||||
msgid "Cheese"
|
||||
msgstr "Parmigiano"
|
||||
msgstr "Formaggio"
|
||||
|
||||
msgid "Cold cuts"
|
||||
msgstr "Pancetta"
|
||||
msgstr "Salumi"
|
||||
|
||||
msgid "Paprika"
|
||||
msgstr "Pepe"
|
||||
msgstr "Paprica"
|
||||
|
||||
msgid "Cucumber"
|
||||
msgstr "Zucchine"
|
||||
msgstr "Cetriolo"
|
||||
|
||||
msgid "Radish"
|
||||
msgstr "Radicchio"
|
||||
msgstr "Ravanello"
|
||||
|
||||
msgid "Tomato"
|
||||
msgstr "Pomodori"
|
||||
msgstr "Pomodoro"
|
||||
|
||||
msgid "Changed towels in the bathroom"
|
||||
msgstr "Cambiare asciugamani in bagno"
|
||||
msgstr "Cambiati asciugamani in bagno"
|
||||
|
||||
msgid "Cleaned the kitchen floor"
|
||||
msgstr "Pulire la cucina"
|
||||
msgstr "Pulito il pavimento della cucina"
|
||||
|
||||
msgid "Warranty ends"
|
||||
msgstr "Scadenza dalla garanzia"
|
||||
|
||||
msgid "TV remote control"
|
||||
msgstr "Telecomando"
|
||||
msgstr "Telecomando TV"
|
||||
|
||||
msgid "Alarm clock"
|
||||
msgstr "Sveglia"
|
||||
@@ -150,7 +151,7 @@ msgid "Spaghetti bolognese"
|
||||
msgstr "Spaghetti alla bolognese"
|
||||
|
||||
msgid "Sandwiches"
|
||||
msgstr "Sandwiches"
|
||||
msgstr "Panini"
|
||||
|
||||
msgid "English"
|
||||
msgstr "Inglese"
|
||||
@@ -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"
|
||||
|
26
localization/nl/chore_assignment_types.po
Normal file
26
localization/nl/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: 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: nl\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 ""
|
@@ -27,9 +27,24 @@ msgstr "nl"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr ""
|
||||
"{\"sProcessing\":\"Bezig...\",\"sLengthMenu\":\"_MENU_ resultaten "
|
||||
"weergeven\",\"sZeroRecords\":\"Geen resultaten "
|
||||
"gevonden\",\"sInfo\":\"_START_ tot _END_ van _TOTAL_ "
|
||||
"resultaten\",\"sInfoEmpty\":\"Geen resultaten om weer te "
|
||||
"geven\",\"sInfoFiltered\":\" (gefilterd uit _MAX_ "
|
||||
"resultaten)\",\"sInfoPostFix\":\"\",\"sSearch\":\"Zoeken:\",\"sEmptyTable\":\"Geen"
|
||||
" resultaten aanwezig in de "
|
||||
"tabel\",\"sInfoThousands\":\".\",\"sLoadingRecords\":\"Een moment geduld aub"
|
||||
" - bezig met "
|
||||
"laden...\",\"oPaginate\":{\"sFirst\":\"Eerste\",\"sLast\":\"Laatste\",\"sNext\":\"Volgende\",\"sPrevious\":\"Vorige\"},\"oAria\":{\"sSortAscending\":\":"
|
||||
" activeer om kolom oplopend te sorteren\",\"sSortDescending\":\": activeer "
|
||||
"om kolom aflopend te sorteren\"}}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "nl-NL"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "nl"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "nl_NL"
|
||||
|
@@ -3,6 +3,9 @@
|
||||
# Adriaan Peeters <apeeters@lashout.net>, 2019
|
||||
# Grocy NL, 2019
|
||||
# Seppe <van.winkel.seppe@me.com>, 2019
|
||||
# Engelbert Mercelis <engelbertmercelis@gmail.com>, 2019
|
||||
# Niels Tholenaar <info@123quality.nl>, 2019
|
||||
# Frank Klaassen <frank@frankklaassen.nl>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -10,7 +13,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Last-Translator: Seppe <van.winkel.seppe@me.com>, 2019\n"
|
||||
"Last-Translator: Frank Klaassen <frank@frankklaassen.nl>, 2019\n"
|
||||
"Language-Team: Dutch (https://www.transifex.com/grocy/teams/93189/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -39,33 +42,33 @@ msgstr "Koelkast"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Stuk"
|
||||
msgstr[1] "Stuks"
|
||||
|
||||
msgid "Pack"
|
||||
msgid_plural "Packs"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "pak"
|
||||
msgstr[1] "pakken"
|
||||
|
||||
msgid "Glass"
|
||||
msgid_plural "Glasses"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Glas"
|
||||
msgstr[1] "Glazen"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Blikje"
|
||||
msgstr[1] "Blikjes"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Blik"
|
||||
msgstr[1] "Blikken"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Bos"
|
||||
msgstr[1] "Bossen"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Gombeertjes"
|
||||
@@ -110,37 +113,37 @@ msgid "Changed towels in the bathroom"
|
||||
msgstr "Handdoeken verwisseld in badkamer"
|
||||
|
||||
msgid "Cleaned the kitchen floor"
|
||||
msgstr ""
|
||||
msgstr "De keukenvloer schoongemaakt"
|
||||
|
||||
msgid "Warranty ends"
|
||||
msgstr "Garantie eindigt"
|
||||
|
||||
msgid "TV remote control"
|
||||
msgstr ""
|
||||
msgstr "Afstandsbediening"
|
||||
|
||||
msgid "Alarm clock"
|
||||
msgstr ""
|
||||
msgstr "Wekker"
|
||||
|
||||
msgid "Heat remote control"
|
||||
msgstr ""
|
||||
msgstr "Afstandsbediening verwarming"
|
||||
|
||||
msgid "Lawn mowed in the garden"
|
||||
msgstr ""
|
||||
msgstr "Gazon gemaaid in de tuin"
|
||||
|
||||
msgid "Some good snacks"
|
||||
msgstr ""
|
||||
msgstr "Enkele goede hapjes"
|
||||
|
||||
msgid "Pizza dough"
|
||||
msgstr "Pizzadeeg"
|
||||
|
||||
msgid "Sieved tomatoes"
|
||||
msgstr ""
|
||||
msgstr "Gezeefde tomaten"
|
||||
|
||||
msgid "Salami"
|
||||
msgstr "Salami"
|
||||
|
||||
msgid "Toast"
|
||||
msgstr ""
|
||||
msgstr "Geroosterd brood"
|
||||
|
||||
msgid "Minced meat"
|
||||
msgstr "Gehakt"
|
||||
@@ -167,15 +170,15 @@ msgid "Demo in different language"
|
||||
msgstr "Demo in een andere taal"
|
||||
|
||||
msgid "This is the note content of the recipe ingredient"
|
||||
msgstr ""
|
||||
msgstr "Dit is de inhoud van de opmerking van het recept-ingrediënt"
|
||||
|
||||
msgid "Demo User"
|
||||
msgstr "Demo Gebruiker"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gram"
|
||||
msgstr[1] "Grams"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Bloem"
|
||||
@@ -187,40 +190,40 @@ msgid "Sugar"
|
||||
msgstr "Suiker"
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
msgstr "Thuis"
|
||||
|
||||
msgid "Life"
|
||||
msgstr ""
|
||||
msgstr "Leven"
|
||||
|
||||
msgid "Projects"
|
||||
msgstr ""
|
||||
msgstr "Projecten"
|
||||
|
||||
msgid "Repair the garage door"
|
||||
msgstr "Herstel de garagepoort"
|
||||
|
||||
msgid "Fork and improve grocy"
|
||||
msgstr ""
|
||||
msgstr "Fork en verbeter grocy"
|
||||
|
||||
msgid "Find a solution for what to do when I forget the door keys"
|
||||
msgstr ""
|
||||
msgstr "Zoek een oplossing voor wat te doen als ik de deursleutels vergeet"
|
||||
|
||||
msgid "Sweets"
|
||||
msgstr "Snoep"
|
||||
|
||||
msgid "Bakery products"
|
||||
msgstr ""
|
||||
msgstr "Bakkerijproducten"
|
||||
|
||||
msgid "Tinned food"
|
||||
msgstr ""
|
||||
msgstr "Ingeblikt voedsel"
|
||||
|
||||
msgid "Butchery products"
|
||||
msgstr ""
|
||||
msgstr "Slagerij producten"
|
||||
|
||||
msgid "Vegetables/Fruits"
|
||||
msgstr "Groenten/Fruit"
|
||||
|
||||
msgid "Refrigerated products"
|
||||
msgstr ""
|
||||
msgstr "Gekoelde producten"
|
||||
|
||||
msgid "Coffee machine"
|
||||
msgstr "Koffiemachine"
|
||||
@@ -232,7 +235,7 @@ msgid "Liter"
|
||||
msgstr "Liter"
|
||||
|
||||
msgid "Liters"
|
||||
msgstr ""
|
||||
msgstr "Liters"
|
||||
|
||||
msgid "Bottle"
|
||||
msgstr "Fles"
|
||||
@@ -253,10 +256,10 @@ msgid "Milliliter"
|
||||
msgstr "Milliliter"
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
msgstr "Onderkant"
|
||||
|
||||
msgid "Topping"
|
||||
msgstr ""
|
||||
msgstr "Beleg"
|
||||
|
||||
msgid "French"
|
||||
msgstr "Frans"
|
||||
@@ -268,19 +271,45 @@ msgid "Spanish"
|
||||
msgstr "Spaans"
|
||||
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
msgstr "Russisch"
|
||||
|
||||
msgid "The thing which happens on the 5th of every month"
|
||||
msgstr ""
|
||||
msgstr "Het ding dat op de 5e van elke maand gebeurt"
|
||||
|
||||
msgid "The thing which happens daily"
|
||||
msgstr ""
|
||||
msgstr "Het ding dat dagelijks gebeurt"
|
||||
|
||||
msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr ""
|
||||
msgstr "Het ding dat op maandag en woensdag gebeurt"
|
||||
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
msgstr "Zweeds"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Pools"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Example userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is an example user entity..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Custom field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Example field value..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Waffle rolls"
|
||||
msgstr ""
|
||||
|
@@ -1,5 +1,6 @@
|
||||
# Translators:
|
||||
# Bernd Bestel <bernd@berrnd.de>, 2019
|
||||
# Mitchel Nijkamp <mitchelnijkamp1@msn.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: Mitchel Nijkamp <mitchelnijkamp1@msn.com>, 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"
|
||||
@@ -36,3 +37,6 @@ msgstr "Datum en tijd"
|
||||
|
||||
msgid "checkbox"
|
||||
msgstr "Checkbox"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "vooringestelde lijst"
|
||||
|
26
localization/no/chore_assignment_types.po
Normal file
26
localization/no/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: Norwegian (https://www.transifex.com/grocy/teams/93189/no/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: no\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr ""
|
||||
|
||||
msgid "random"
|
||||
msgstr ""
|
||||
|
||||
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"
|
||||
|
@@ -37,33 +37,33 @@ msgstr "Kjøleskapet"
|
||||
|
||||
msgid "Piece"
|
||||
msgid_plural "Pieces"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Del"
|
||||
msgstr[1] "Deler"
|
||||
|
||||
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] "Glass"
|
||||
msgstr[1] "Glass"
|
||||
|
||||
msgid "Tin"
|
||||
msgid_plural "Tins"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Boks"
|
||||
msgstr[1] "Bokser"
|
||||
|
||||
msgid "Can"
|
||||
msgid_plural "Cans"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Boks"
|
||||
msgstr[1] "Bokser"
|
||||
|
||||
msgid "Bunch"
|
||||
msgid_plural "Bunches"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Bunt"
|
||||
msgstr[1] "Bunter"
|
||||
|
||||
msgid "Gummy bears"
|
||||
msgstr "Vingummibjørner"
|
||||
@@ -172,8 +172,8 @@ msgstr "Demo Bruker"
|
||||
|
||||
msgid "Gram"
|
||||
msgid_plural "Grams"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[0] "Gram"
|
||||
msgstr[1] "Gram"
|
||||
|
||||
msgid "Flour"
|
||||
msgstr "Mel"
|
||||
@@ -278,7 +278,33 @@ msgid "The thing which happens on Mondays and Wednesdays"
|
||||
msgstr "Husarbeid som skjer på mandager og onsdager"
|
||||
|
||||
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
|
||||
# Marius Borø <blizzwave@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
@@ -7,7 +7,7 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
|
||||
"Last-Translator: Bernd Bestel <bernd@berrnd.de>, 2019\n"
|
||||
"Last-Translator: Marius Borø <blizzwave@gmail.com>, 2019\n"
|
||||
"Language-Team: Norwegian (https://www.transifex.com/grocy/teams/93189/no/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,13 +17,13 @@ msgstr ""
|
||||
"X-Domain: grocy/stock_transaction_types\n"
|
||||
|
||||
msgid "purchase"
|
||||
msgstr "Innkjøp"
|
||||
msgstr "innkjøp"
|
||||
|
||||
msgid "consume"
|
||||
msgstr "Forbruk produkt"
|
||||
msgstr "forbruk"
|
||||
|
||||
msgid "inventory-correction"
|
||||
msgstr "Korreksjon av husholdningsantall "
|
||||
msgstr "beholdningsantall korreksjon"
|
||||
|
||||
msgid "product-opened"
|
||||
msgstr "Produkt åpnet"
|
||||
msgstr "produkt åpnet"
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,5 @@
|
||||
# Translators:
|
||||
# Marius Borø <blizzwave@gmail.com>, 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: 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"
|
||||
@@ -14,22 +17,25 @@ msgstr ""
|
||||
"X-Domain: grocy/userfield_types\n"
|
||||
|
||||
msgid "text-single-line"
|
||||
msgstr ""
|
||||
msgstr "text-single-line"
|
||||
|
||||
msgid "text-multi-line"
|
||||
msgstr ""
|
||||
msgstr "text-multi-line"
|
||||
|
||||
msgid "number-integral"
|
||||
msgstr ""
|
||||
msgstr "number-integral"
|
||||
|
||||
msgid "number-decimal"
|
||||
msgstr ""
|
||||
msgstr "number-decimal"
|
||||
|
||||
msgid "date"
|
||||
msgstr ""
|
||||
msgstr "date"
|
||||
|
||||
msgid "datetime"
|
||||
msgstr ""
|
||||
msgstr "datetime"
|
||||
|
||||
msgid "checkbox"
|
||||
msgstr ""
|
||||
msgstr "checkbox"
|
||||
|
||||
msgid "preset-list"
|
||||
msgstr "preset-list"
|
||||
|
26
localization/pl/chore_assignment_types.po
Normal file
26
localization/pl/chore_assignment_types.po
Normal file
@@ -0,0 +1,26 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Language-Team: Polish (https://www.transifex.com/grocy/teams/93189/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr ""
|
||||
|
||||
msgid "random"
|
||||
msgstr ""
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr ""
|
@@ -43,3 +43,6 @@ msgstr "pl-PL"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "pl"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "pl_PL"
|
||||
|
@@ -296,3 +296,31 @@ msgstr "Szwedzki"
|
||||
|
||||
msgid "Polish"
|
||||
msgstr "Polski"
|
||||
|
||||
msgid "Milk Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dark Chocolate"
|
||||
msgstr ""
|
||||
|
||||
msgid "Slice"
|
||||
msgid_plural "Slices"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
|
||||
msgid "Example userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "This is an example user entity..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Custom field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Example field value..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Waffle rolls"
|
||||
msgstr ""
|
||||
|
@@ -1387,3 +1387,27 @@ msgstr "Dni \"blisko terminu wykonania zadania\""
|
||||
|
||||
msgid "Products"
|
||||
msgstr "Produkty"
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr "Oznaczono zadanie %s jako wykonane dnia %s "
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr "Rezerwacja ma kolejne zależne rezerwacje, nie można jej cofnąć"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr ""
|
||||
|
29
localization/ru/chore_assignment_types.po
Normal file
29
localization/ru/chore_assignment_types.po
Normal file
@@ -0,0 +1,29 @@
|
||||
# Translators:
|
||||
# Pavel Pletenev <cpp.create@gmail.com>, 2019
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
|
||||
"PO-Revision-Date: 2019-09-17 10:45+0000\n"
|
||||
"Last-Translator: Pavel Pletenev <cpp.create@gmail.com>, 2019\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/grocy/teams/93189/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
"X-Domain: grocy/chore_assignment_types\n"
|
||||
|
||||
msgid "no-assignment"
|
||||
msgstr "без-назначения"
|
||||
|
||||
msgid "who-least-did-first"
|
||||
msgstr "кто-меньше-сделал-сначала"
|
||||
|
||||
msgid "random"
|
||||
msgstr "случайно"
|
||||
|
||||
msgid "in-alphabetical-order"
|
||||
msgstr "по-алфавиту"
|
@@ -26,10 +26,35 @@ msgid "moment_locale"
|
||||
msgstr "ru"
|
||||
|
||||
msgid "datatables_localization"
|
||||
msgstr "{}"
|
||||
msgstr ""
|
||||
"{\n"
|
||||
"\"processing\": \"Подождите...\",\n"
|
||||
"\"search\": \"Поиск:\",\n"
|
||||
"\"lengthMenu\": \"Показать _MENU_ записей\",\n"
|
||||
"\"info\": \"Записи с _START_ до _END_ из _TOTAL_ записей\",\n"
|
||||
"\"infoEmpty\": \"Записи с 0 до 0 из 0 записей\",\n"
|
||||
"\"infoFiltered\": \"(отфильтровано из _MAX_ записей)\",\n"
|
||||
"\"infoPostFix\": \"\",\n"
|
||||
"\"loadingRecords\": \"Загрузка записей...\",\n"
|
||||
"\"zeroRecords\": \"Записи отсутствуют.\",\n"
|
||||
"\"emptyTable\": \"В таблице отсутствуют данные\",\n"
|
||||
"\"paginate\": {\n"
|
||||
"\"first\": \"Первая\",\n"
|
||||
"\"previous\": \"Предыдущая\",\n"
|
||||
"\"next\": \"Следующая\",\n"
|
||||
"\"last\": \"Последняя\"\n"
|
||||
"},\n"
|
||||
"\"aria\": {\n"
|
||||
"\"sortAscending\": \": активировать для сортировки столбца по возрастанию\",\n"
|
||||
"\"sortDescending\": \": активировать для сортировки столбца по убыванию\"\n"
|
||||
"}\n"
|
||||
"}"
|
||||
|
||||
msgid "summernote_locale"
|
||||
msgstr "ru-RU"
|
||||
|
||||
msgid "fullcalendar_locale"
|
||||
msgstr "ru"
|
||||
|
||||
msgid "bootstrap-select_locale"
|
||||
msgstr "ru_RU"
|
||||
|
@@ -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 из запаса"
|
||||
@@ -1391,3 +1389,259 @@ msgstr "Критерий для \"подходит срок задач\" в дн
|
||||
|
||||
msgid "Products"
|
||||
msgstr "Продукты"
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr "Пометить задачу \"%s\" как выполненную %s"
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr "У данного действия есть зависимые действия, отмена невозможна"
|
||||
|
||||
msgid "per serving"
|
||||
msgstr "на порцию"
|
||||
|
||||
msgid "Never"
|
||||
msgstr "Никогда"
|
||||
|
||||
msgid "Today"
|
||||
msgstr "Сегодня"
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr "Употребить %1$s %2$s как испорченное"
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr "Не все ингредиенты рецепта \"%s\" есть в запасе, ничего не изъято"
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr "Отменить задачу \"%s\""
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr "Переносить срок выполнения"
|
||||
|
||||
msgid ""
|
||||
"When enabled the chore can never be overdue, the due date will shift forward"
|
||||
" each day when due"
|
||||
msgstr ""
|
||||
"Когда данная опция включена, срок выполнения работы по дому никогда не будет"
|
||||
" проходить - срок будет сдвигаться вперёд каждый день при его окончании"
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr "Лист содержимого места хранения"
|
||||
|
||||
msgid "Print"
|
||||
msgstr "Печать"
|
||||
|
||||
msgid "all locations"
|
||||
msgstr "все места хранения"
|
||||
|
||||
msgid ""
|
||||
"Here you can print a page per location with the current stock, maybe to hang"
|
||||
" it there and note the consumed things on it."
|
||||
msgstr ""
|
||||
"Здесь вы можете напечатать список запасов для мест хранения на отдельных "
|
||||
"страницах, чтобы, например, повесить его где-то и отмечать употреблённые "
|
||||
"продукты на нём."
|
||||
|
||||
msgid "this location"
|
||||
msgstr "это место хранения"
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr "Употреблённое количество"
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr "Время печати"
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr "Вы уверены, что нужно удалить оборудование \"%s\"?"
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr "Родительский продукт"
|
||||
|
||||
msgid ""
|
||||
"Not possible because this product is already used as a parent product in "
|
||||
"another product"
|
||||
msgstr ""
|
||||
"Невозможно, так как этот продукт уже является родительским продуктом у "
|
||||
"другого продукта"
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr "Преобразование по умолчанию"
|
||||
|
||||
msgid "Factor"
|
||||
msgstr "Коэффициент"
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr "1 %s - то же, что ..."
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr "Создать преобразования ЕИ"
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr "Умолчание для ЕИ"
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr "Начальная единица измерения"
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr "Конечная единица измерения"
|
||||
|
||||
msgid ""
|
||||
"This cannot be lower than %1$s and must be a valid number with max. %2$s "
|
||||
"decimal places"
|
||||
msgstr ""
|
||||
|
||||
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"
|
||||
@@ -1262,3 +1262,257 @@ msgstr ""
|
||||
|
||||
msgid "Products"
|
||||
msgstr ""
|
||||
|
||||
msgid "Marked task %s as completed on %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Booking has subsequent dependent bookings, undo not possible"
|
||||
msgstr ""
|
||||
|
||||
msgid "per serving"
|
||||
msgstr ""
|
||||
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume %1$s of %2$s as spoiled"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not all ingredients of recipe \"%s\" are in stock, nothing removed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Undo task \"%s\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Due date rollover"
|
||||
msgstr ""
|
||||
|
||||
msgid "When enabled the chore can never be overdue, the due date will shift forward each day when due"
|
||||
msgstr ""
|
||||
|
||||
msgid "Location Content Sheet"
|
||||
msgstr ""
|
||||
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
msgid "all locations"
|
||||
msgstr ""
|
||||
|
||||
msgid "Here you can print a page per location with the current stock, maybe to hang it there and note the consumed things on it."
|
||||
msgstr ""
|
||||
|
||||
msgid "this location"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consumend amount"
|
||||
msgstr ""
|
||||
|
||||
msgid "Time of printing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete equipment \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Parent product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Not possible because this product is already used as a parent product in another product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default conversions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "1 %s is the same as..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Create QU conversion"
|
||||
msgstr ""
|
||||
|
||||
msgid "Default for QU"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit from"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit to"
|
||||
msgstr ""
|
||||
|
||||
msgid "This cannot be lower than %1$s and must be a valid number with max. %2$s decimal places"
|
||||
msgstr ""
|
||||
|
||||
msgid "This cannot be equal to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means 1 %1$s is the same as %2$s %3$s"
|
||||
msgstr ""
|
||||
|
||||
msgid "QU conversions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Product overrides"
|
||||
msgstr ""
|
||||
|
||||
msgid "Override for product"
|
||||
msgstr ""
|
||||
|
||||
msgid "This equals %1$s %2$s in stock"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit QU conversion"
|
||||
msgstr ""
|
||||
|
||||
msgid "An assignment type is required"
|
||||
msgstr ""
|
||||
|
||||
msgid "Assignment type"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is scheduled 1 day after the last execution"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is scheduled 1 day after the last execution, but only for the weekdays selected below"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is not scheduled"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore is scheduled on the below selected day of each month"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will not be assigned to anyone"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned to the one who executed it least"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned randomly"
|
||||
msgstr ""
|
||||
|
||||
msgid "This means the next execution of this chore will be assigned to the next one in alphabetical order"
|
||||
msgstr ""
|
||||
|
||||
msgid "Assign to"
|
||||
msgstr ""
|
||||
|
||||
msgid "This assignment type requires that at least one is assigned"
|
||||
msgstr ""
|
||||
|
||||
msgid "%s chore is assigned to me"
|
||||
msgid_plural "%s chores are assigned to me"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "Assigned to me"
|
||||
msgstr ""
|
||||
|
||||
msgid "assigned to %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter by assignment"
|
||||
msgstr ""
|
||||
|
||||
msgid "Consume product on chore execution"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete user field \"%s\"?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Userentities"
|
||||
msgstr ""
|
||||
|
||||
msgid "Create userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "Show in sidebar menu"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit userentity"
|
||||
msgstr ""
|
||||
|
||||
msgid "Edit %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Create %s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Are you sure to delete this userobject?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Icon CSS class"
|
||||
msgstr ""
|
||||
|
||||
msgid "For example"
|
||||
msgstr ""
|
||||
|
||||
msgid "Configure fields"
|
||||
msgstr ""
|
||||
|
||||
msgid "Quantity unit plural form testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Result"
|
||||
msgstr ""
|
||||
|
||||
msgid "Test plural forms"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scan a barcode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Error while initializing the barcode scanning library"
|
||||
msgstr ""
|
||||
|
||||
msgid "The resulting price of this ingredient will be multiplied by this factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Price factor"
|
||||
msgstr ""
|
||||
|
||||
msgid "Do you find grocy useful?"
|
||||
msgstr ""
|
||||
|
||||
msgid "Say thanks"
|
||||
msgstr ""
|
||||
|
||||
msgid "Search for recipes containing this product"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add to shopping list"
|
||||
msgstr ""
|
||||
|
||||
msgid "Added %1$s of %2$s to the shopping list \"%3$s\""
|
||||
msgstr ""
|
||||
|
||||
msgid "Output"
|
||||
msgstr ""
|
||||
|
||||
msgid "Energy (kcal)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Per stock quantity unit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Barcode scanner testing"
|
||||
msgstr ""
|
||||
|
||||
msgid "Expected barcode"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scan field"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scanned barcodes"
|
||||
msgstr ""
|
||||
|
||||
msgid "Hit"
|
||||
msgstr ""
|
||||
|
||||
msgid "Miss"
|
||||
msgstr ""
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user