Finished migration to use gettext (this now closes #161)

This commit is contained in:
Bernd Bestel
2019-05-02 20:20:18 +02:00
parent 5d3f248d94
commit 4912dd56d1
75 changed files with 2275 additions and 1581 deletions

View File

@@ -15,3 +15,8 @@
- New translations: (thanks all the translators)
- Swedish (demo available at https://demo-sv.grocy.info)
- Polish (demo available at https://demo-pl.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)
- Also applies to quantity units, n-plural forms can be entered on the quantity unit edit page
- It's not required to install the PHP gettext extension, on both, server and client, managed implementations of gettext are used ([oscarotero/Gettext](https://github.com/oscarotero/Gettext) & [oscarotero/gettext-translator](https://github.com/oscarotero/gettext-translator))

View File

@@ -40,7 +40,7 @@ class BaseController
{
return $localizationService->__n($number, $singularForm, $pluralForm);
});
$container->view->set('jsGettextTranslatorStrings', $localizationService->GetTranslationsForJavaScriptTranslator());
$container->view->set('GettextPo', $localizationService->GetPoAsJsonString());
$container->view->set('U', function($relativePath, $isResource = false) use($container)
{

View File

@@ -72,7 +72,7 @@ class RecipesController extends BaseController
if ($recipeId == 'new')
{
$newRecipe = $this->Database->recipes()->createRow(array(
'name' => $this->LocalizationService-Translator->__t('New recipe')
'name' => $this->LocalizationService->__t('New recipe')
));
$newRecipe->save();

View File

@@ -199,7 +199,9 @@ class StockController extends BaseController
{
return $this->AppContainer->view->render($response, 'quantityunitform', [
'mode' => 'create',
'userfields' => $this->UserfieldsService->GetFields('quantity_units')
'userfields' => $this->UserfieldsService->GetFields('quantity_units'),
'pluralCount' => $this->LocalizationService->GetPluralCount(),
'pluralRule' => $this->LocalizationService->GetPluralDefinition()
]);
}
else
@@ -207,7 +209,9 @@ class StockController extends BaseController
return $this->AppContainer->view->render($response, 'quantityunitform', [
'quantityunit' => $this->Database->quantity_units($args['quantityunitId']),
'mode' => 'edit',
'userfields' => $this->UserfieldsService->GetFields('quantity_units')
'userfields' => $this->UserfieldsService->GetFields('quantity_units'),
'pluralCount' => $this->LocalizationService->GetPluralCount(),
'pluralRule' => $this->LocalizationService->GetPluralDefinition()
]);
}
}

View File

@@ -32,7 +32,7 @@ class SystemApiController extends BaseApiController
{
$requestBody = $request->getParsedBody();
$this->LocalizationService->LogMissingLocalization(GROCY_CULTURE, $requestBody['text']);
$this->LocalizationService->CheckAndAddMissingTranslationToPot($requestBody['text']);
return $this->EmptyApiResponse($response);
}
catch (\Exception $ex)

View File

@@ -184,16 +184,6 @@ function GetUserDisplayName($user)
return $displayName;
}
function Pluralize($number, $singularForm, $pluralForm)
{
$text = $singularForm;
if ($number != 1 && $pluralForm !== null && !empty($pluralForm))
{
$text = $pluralForm;
}
return $text;
}
function IsValidFileName($fileName)
{
if(preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', $fileName))

View File

@@ -1,15 +1,19 @@
# Translators:
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/da\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"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:16+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:16+00:00\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/chore_types\n"
msgid "manually"

View File

@@ -1,15 +1,16 @@
#
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/da\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:42+0000\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"
"POT-Creation-Date: 2019-05-01T17:59:16+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:16+00:00\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/component_translations\n"
msgid "timeago_locale"

View File

@@ -35,40 +35,34 @@ msgid "Fridge"
msgstr "Køleskab"
msgid "Piece"
msgstr "Styk"
msgid "Pieces"
msgstr "Stykker"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr "Pakke"
msgid "Packs"
msgstr "Pakker"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr "Glas"
msgid "Glasses"
msgstr "Glas"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr "Beholder"
msgid "Tins"
msgstr "Beholdere"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr "Dåse"
msgid "Cans"
msgstr "Dåser"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr "Bundt"
msgid "Bunches"
msgstr "Bundt"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr "Vingummi bamser"
@@ -176,10 +170,9 @@ msgid "Demo User"
msgstr "Demo Bruger"
msgid "Gram"
msgstr "Gram"
msgid "Grams"
msgstr "Gram"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr "Mel"

View File

@@ -1,32 +1,53 @@
# Translators:
# dark159123 <r.j.hansen@protonmail.com>, 2019
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/da\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"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:16+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:16+00:00\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/strings\n"
msgid "Stock overview"
msgstr "Beholdnings oversigt"
msgid "%s products expiring within the next %s days"
msgstr "%s produkter der udløber inden for de næste %s dage"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr "%s produkter er allerede udløbede"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr "Beholdningen af %s produkter er under minimums antallet"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr "Produkt"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr "Mængde"
@@ -60,9 +81,6 @@ msgstr "Pligt overvågning"
msgid "Battery tracking"
msgstr "Batteri overvågning"
msgid "Products"
msgstr "Produkter"
msgid "Locations"
msgstr "Steder"
@@ -120,8 +138,10 @@ msgstr "Udløbet"
msgid "Barcode lookup is disabled"
msgstr "Stregkode opslag er slået fra"
msgid "will be added to the list of barcodes for the selected product on submit"
msgstr "Bliver tilføjet til stregkodelisten for det valgte produkt når du sender"
msgid ""
"will be added to the list of barcodes for the selected product on submit"
msgstr ""
"Bliver tilføjet til stregkodelisten for det valgte produkt når du sender"
msgid "New amount"
msgstr "Ny mængde"
@@ -249,7 +269,9 @@ msgstr "aldrig"
msgid "Add products that are below defined min. stock amount"
msgstr "Tilføj produkter der er under minimumsantallet"
msgid "For purchases this amount of days will be added to today for the best before date suggestion"
msgid ""
"For purchases this amount of days will be added to today for the best before"
" date suggestion"
msgstr ""
msgid "This means 1 %s purchased will be converted into %s %s in stock"
@@ -336,7 +358,9 @@ msgstr "Dette betyder %s bliver tilføjet til beholdningen"
msgid "This means %s will be removed from stock"
msgstr "Dette betyder at %s bliver fjernet fra beholdningen"
msgid "This means it is estimated that a new execution of this chore is tracked %s days after the last was tracked"
msgid ""
"This means it is estimated that a new execution of this chore is tracked %s "
"days after the last was tracked"
msgstr ""
msgid "Removed %s %s of %s from stock"
@@ -348,18 +372,6 @@ msgstr "Omkring Grocy"
msgid "Close"
msgstr "Luk"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s batterier skal oplades indenfor de næste %s dage"
msgid "%s batteries are overdue to be charged"
msgstr "%s batterier trænger til at blive opladt"
msgid "%s chores are due to be done within the next %s days"
msgstr "%s pligter skal udfyldes indenfor de næste %s dage"
msgid "%s chores are overdue to be done"
msgstr "%s pligter skulle have været gjort"
msgid "Released on"
msgstr ""
@@ -474,14 +486,15 @@ msgstr "Skal udfyldes"
msgid "Put missing products on shopping list"
msgstr "Sæt manglende produkter på en indkøbsliste"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Der er ikke nok i beholdningen. Der mangler %s ingredienser. "
msgid "Enough in stock"
msgstr "Der er nok i beholdningen"
msgid "Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr "Der er ikke nok i beholdningen. Der mangler %s ingredienser som allerede er på indkøbslisten"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr "Udvid til fuldskærm"
@@ -496,7 +509,9 @@ msgid "Recipe"
msgstr "Opskrift"
msgid "Not enough in stock, %s missing, %s already on shopping list"
msgstr "Der er ikke nok i beholdningen. Der mangler %s, %s er allerede i beholdningen"
msgstr ""
"Der er ikke nok i beholdningen. Der mangler %s, %s er allerede i "
"beholdningen"
msgid "Show notes"
msgstr "Vis noter"
@@ -504,8 +519,12 @@ msgstr "Vis noter"
msgid "Put missing amount on shopping list"
msgstr "Put manglende mængde på indkøbsliste"
msgid "Are you sure to put all missing ingredients for recipe \"%s\" on the shopping list?"
msgstr "Er du sikker på du vil sætte alle manglende ingredienser til \"%s\" på indkøbslisten?"
msgid ""
"Are you sure to put all missing ingredients for recipe \"%s\" on the "
"shopping list?"
msgstr ""
"Er du sikker på du vil sætte alle manglende ingredienser til \"%s\" på "
"indkøbslisten?"
msgid "Added for recipe %s"
msgstr "Tilføjet til opskriften %s"
@@ -585,42 +604,37 @@ msgstr ""
msgid "The price cannot be lower than %s"
msgstr ""
msgid "%s product expires within the next %s days"
msgstr ""
msgid "%s product is already expired"
msgstr ""
msgid "%s product is below defined min. stock amount"
msgstr ""
msgid "Unit"
msgstr ""
msgid "Units"
msgstr ""
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr ""
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr ""
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr ""
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr ""
msgid "%s unit was automatically added and will apply in addition to the amount entered here"
msgstr ""
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr ""
msgid "in plural form"
msgstr ""
msgid "Never expires"
msgstr ""
@@ -633,10 +647,14 @@ msgstr ""
msgid "Quantity unit"
msgstr ""
msgid "Only check if a single unit is in stock (a different quantity can then be used above)"
msgid ""
"Only check if a single unit is in stock (a different quantity can then be "
"used above)"
msgstr ""
msgid "Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?"
msgid ""
"Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients"
" marked with \"check only if a single unit is in stock\" will be ignored)?"
msgstr ""
msgid "Removed all ingredients of recipe \"%s\" from stock"
@@ -693,17 +711,15 @@ msgstr ""
msgid "Are you sure to delete task \"%s\"?"
msgstr ""
msgid "%s task is due to be done within the next %s days"
msgstr ""
msgid "%s tasks are due to be done within the next %s days"
msgstr ""
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr ""
msgid "%s tasks are overdue to be done"
msgstr ""
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr ""
@@ -798,7 +814,9 @@ msgstr ""
msgid "Image of product %s"
msgstr ""
msgid "This product cannot be deleted because it is in stock, please remove the stock amount first."
msgid ""
"This product cannot be deleted because it is in stock, please remove the "
"stock amount first."
msgstr ""
msgid "Delete not possible"
@@ -822,13 +840,16 @@ msgstr ""
msgid "Create equipment"
msgstr ""
msgid "If you don't select a file, the current instruction manual will not be altered"
msgid ""
"If you don't select a file, the current instruction manual will not be "
"altered"
msgstr ""
msgid "No instruction manual available"
msgstr ""
msgid "The current instruction manual will be deleted when you save the equipment"
msgid ""
"The current instruction manual will be deleted when you save the equipment"
msgstr ""
msgid "No picture available"
@@ -921,13 +942,17 @@ msgstr ""
msgid "Use a specific stock item"
msgstr ""
msgid "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\""
msgid ""
"The first item in this list would be picked by the default rule which is "
"\"First expiring first, then first in first out\""
msgstr ""
msgid "Mark %s %s of %s as open"
msgid "Mark %s of %s as open"
msgstr ""
msgid "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)"
msgid ""
"When a product was marked as opened, the best before date will be replaced "
"by today + this amount of days (a value of 0 disables this)"
msgstr ""
msgid "Default best before days after opened"
@@ -972,7 +997,9 @@ msgstr ""
msgid "Shopping list to stock workflow"
msgstr ""
msgid "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set"
msgid ""
"Automatically do the booking using the last price and the amount of the "
"shopping list item, if the product has \"Default best before days\" set"
msgstr ""
msgid "Skip"
@@ -993,7 +1020,11 @@ msgstr ""
msgid "Do not check against the shopping list when adding missing items to it"
msgstr ""
msgid "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list"
msgid ""
"By default the amount to be added to the shopping list is \"needed amount - "
"stock amount - shopping list amount\" - when this is enabled, it is only "
"checked against the stock amount, not against what is already on the "
"shopping list"
msgstr ""
msgid "Picture"
@@ -1014,7 +1045,9 @@ msgstr ""
msgid "Share/Integrate calendar (iCal)"
msgstr ""
msgid "Use the following (public) URL to share or integrate the calendar in iCal format"
msgid ""
"Use the following (public) URL to share or integrate the calendar in iCal "
"format"
msgstr ""
msgid "Allow partial units in stock"
@@ -1023,13 +1056,18 @@ msgstr ""
msgid "Enable tare weight handling"
msgstr ""
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"
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 ""
msgid "Tare weight"
msgstr ""
msgid "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated"
msgid ""
"Tare weight handling enabled - please weigh the whole container, the amount "
"to be posted will be automatically calculcated"
msgstr ""
msgid "You have to select a location"
@@ -1080,7 +1118,9 @@ msgstr ""
msgid "Type a new product name or barcode and hit TAB to start a workflow"
msgstr ""
msgid "This will be used as the default setting when adding this product as a recipe ingredient"
msgid ""
"This will be used as the default setting when adding this product as a "
"recipe ingredient"
msgstr ""
msgid "Add item"
@@ -1187,3 +1227,26 @@ msgstr ""
msgid "Edit userfield"
msgstr ""
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr ""
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,16 @@
#
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/da\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:43+0000\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"
"POT-Creation-Date: 2019-05-01T17:59:16+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:16+00:00\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/userfield_types\n"
msgid "text-single-line"

View File

@@ -35,40 +35,34 @@ msgid "Fridge"
msgstr "Kühlschrank"
msgid "Piece"
msgstr "Stück"
msgid "Pieces"
msgstr "Stücke"
msgid_plural "Pieces"
msgstr[0] "Stück"
msgstr[1] "Stücke"
msgid "Pack"
msgstr "Packung"
msgid "Packs"
msgstr "Packungen"
msgid_plural "Packs"
msgstr[0] "Packung"
msgstr[1] "Packungen"
msgid "Glass"
msgstr "Glas"
msgid "Glasses"
msgstr "Gläser"
msgid_plural "Glasses"
msgstr[0] "Glas"
msgstr[1] "Gläser"
msgid "Tin"
msgstr "Dose"
msgid "Tins"
msgstr "Dosen"
msgid_plural "Tins"
msgstr[0] "Dose"
msgstr[1] "Dosen"
msgid "Can"
msgstr "Becher"
msgid "Cans"
msgstr "Becher"
msgid_plural "Cans"
msgstr[0] "Becher"
msgstr[1] "Becher"
msgid "Bunch"
msgstr "Bund"
msgid "Bunches"
msgstr "Bunde"
msgid_plural "Bunches"
msgstr[0] "Bund"
msgstr[1] "Bunde"
msgid "Gummy bears"
msgstr "Gummibärchen"
@@ -176,10 +170,9 @@ msgid "Demo User"
msgstr "Demo Benutzer"
msgid "Gram"
msgstr "Gramm"
msgid "Grams"
msgstr "Gramm"
msgid_plural "Grams"
msgstr[0] "Gramm"
msgstr[1] "Gramm"
msgid "Flour"
msgstr "Mehl"
@@ -287,4 +280,4 @@ msgid "Swedish"
msgstr "Schwedisch"
msgid "Polish"
msgstr ""
msgstr "Polnisch"

View File

@@ -19,18 +19,34 @@ msgstr ""
msgid "Stock overview"
msgstr "Bestand"
msgid "%s products expiring within the next %s days"
msgstr "%s Produkte laufen innerhalb der nächsten %s Tage ab"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] "%s läuft ab"
msgstr[1] "%s Produkte laufen ab"
msgid "%s products are already expired"
msgstr "%s Produkte sind bereits abgelaufen"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] "innerhalb des nächsten Tages"
msgstr[1] "innerhalb der nächsten %s Tage"
msgid "%s products are below defined min. stock amount"
msgstr "%s Produkte sind unter Mindestbestand"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] "%s Produkt ist bereits abgelaufen"
msgstr[1] "%s Produkte sind bereits abgelaufen"
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] "%s Produkt ist unter Mindestbestand"
msgstr[1] "%s Produkte sind unter Mindestbestand"
msgid "Product"
msgstr "Produkt"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] "%s Produkt"
msgstr[1] "%s Produkte"
msgid "Amount"
msgstr "Menge"
@@ -64,9 +80,6 @@ msgstr "Hausarbeiten-Ausführung"
msgid "Battery tracking"
msgstr "Batterie-Ladezyklus"
msgid "Products"
msgstr "Produkte"
msgid "Locations"
msgstr "Standorte"
@@ -363,18 +376,6 @@ msgstr "Über grocy"
msgid "Close"
msgstr "Schließen"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s Batterien müssen in den nächsten %s Tagen geladen werden"
msgid "%s batteries are overdue to be charged"
msgstr "%s Batterien sind überfällig"
msgid "%s chores are due to be done within the next %s days"
msgstr "%s Hausarbeiten stehen in den nächsten %s Tagen an"
msgid "%s chores are overdue to be done"
msgstr "%s Hausarbeiten sind überfällig"
msgid "Released on"
msgstr "Veröffentlicht am"
@@ -489,15 +490,17 @@ msgstr "Bedarf im Bestand"
msgid "Put missing products on shopping list"
msgstr "Fehlende Produkte auf den Einkaufszettel setzen"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Nicht ausreichend im Bestand, %s Zutaten fehlen"
msgid "Enough in stock"
msgstr "Bestand reicht aus"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr ""
msgstr[0] ""
"Bestand nicht ausreichend, %s Zutat fehlt, steht aber bereits auf dem "
"Einkaufszettel"
msgstr[1] ""
"Bestand nicht ausreichend, %s Zutaten fehlen, stehen aber bereits auf dem "
"Einkaufszettel"
@@ -610,46 +613,37 @@ msgstr "in %s pro Einkaufsmengeneinheit"
msgid "The price cannot be lower than %s"
msgstr "Der Preis darf nicht niedriger als %s sein"
msgid "%s product expires within the next %s days"
msgstr "%s Produkt läuft innerhalb der nächsten %s Tage ab"
msgid "%s product is already expired"
msgstr "%s Produkt ist bereits abgelaufen"
msgid "%s product is below defined min. stock amount"
msgstr "%s Produkt ist unter Mindestbestand"
msgid "Unit"
msgstr "Einheit"
msgid "Units"
msgstr "Einheiten"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] "%s Einheit"
msgstr[1] "%s Einheiten"
msgid "%s chore is due to be done within the next %s days"
msgstr "%s Hausarbeit steht in den nächsten %s Tagen an"
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] "%s Hausarbeit steht an"
msgstr[1] "%s Hausarbeiten stehen an"
msgid "%s chore is overdue to be done"
msgstr "%s Hausarbeit ist überfällig"
msgid_plural "%s chores are overdue to be done"
msgstr[0] "%s Hausarbeit ist überfällig"
msgstr[1] "%s Hausarbeiten sind überfällig"
msgid "%s battery is due to be charged within the next %s days"
msgstr "%s Batterie muss in den nächsten %s Tagen geladen werden"
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] "%s Batterie muss geladen werden"
msgstr[1] "%s Batterien müssen geladen werden"
msgid "%s battery is overdue to be charged"
msgstr "%s Batterie ist überfällig"
msgid ""
"%s unit was automatically added and will apply in addition to the amount "
"entered here"
msgstr ""
"%s Einheit wurde automatisch hinzugefügt und gilt zusätzlich der hier "
"eingegebenen Menge"
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] "%s Batterie ist überfällig"
msgstr[1] "%s Batterien sind überfällig"
msgid "in singular form"
msgstr "in der Einzahl"
msgid "in plural form"
msgstr "in der Mehrzahl"
msgid "Never expires"
msgstr "Läuft nie ab"
@@ -735,17 +729,15 @@ msgstr "Aufgabe bearbeiten"
msgid "Are you sure to delete task \"%s\"?"
msgstr "Aufgabe \"%s\" wirklich löschen?"
msgid "%s task is due to be done within the next %s days"
msgstr "%s Aufgabe steht in den nächsten %s Tagen an"
msgid "%s tasks are due to be done within the next %s days"
msgstr "%s Aufgaben stehen in den nächsten %s Tagen an"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] "%s Aufgabe steht an"
msgstr[1] "%s Aufgaben stehen an"
msgid "%s task is overdue to be done"
msgstr "%s Aufgabe ist überfällig"
msgid "%s tasks are overdue to be done"
msgstr "%s Aufgaben sind überfällig"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] "%s Aufgabe ist überfällig"
msgstr[1] "%s Aufgaben sind überfällig"
msgid "Edit task category"
msgstr "Aufgabenkategorie bearbeiten"
@@ -981,8 +973,8 @@ msgstr ""
"Der erste Eintrag in dieser Liste würde von der Standardregel \"Zuerst "
"ablaufende zuerst, dann First In - First Out\" ausgewählt werden"
msgid "Mark %s %s of %s as open"
msgstr "%s %s von %s als geöffnet markieren"
msgid "Mark %s of %s as open"
msgstr "%s %s als geöffnet markieren"
msgid ""
"When a product was marked as opened, the best before date will be replaced "
@@ -1286,3 +1278,26 @@ msgstr "Dies ist erforderlich und darf nur Buchstaben und Zahlen enthalten"
msgid "Edit userfield"
msgstr "Benutzerfeld bearbeiten"
msgid "Plural forms"
msgstr "Pluralformen"
msgid "One plural form per line, the current language requires"
msgstr "Ein Pluralform pro Zeile, die aktuelle Sprache erfordert"
msgid "Plural count"
msgstr "Plural Anzahl"
msgid "Plural rule"
msgstr "Plural Regel"
msgid "in plural form"
msgstr "in der Mehrzahl"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] "Nicht ausreichend im Bestand, %s Zutat fehlt"
msgstr[1] "Nicht ausreichend im Bestand, %s Zutaten fehlen"
msgid "Consume %s of %s"
msgstr "Verbrauche %s %s"

View File

@@ -31,40 +31,34 @@ msgid "Fridge"
msgstr ""
msgid "Piece"
msgstr ""
msgid "Pieces"
msgstr ""
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr ""
msgid "Packs"
msgstr ""
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr ""
msgid "Glasses"
msgstr ""
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr ""
msgid "Tins"
msgstr ""
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr ""
msgid "Cans"
msgstr ""
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr ""
msgid "Bunches"
msgstr ""
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr ""
@@ -172,10 +166,9 @@ msgid "Demo User"
msgstr ""
msgid "Gram"
msgstr ""
msgid "Grams"
msgstr ""
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr ""

View File

@@ -36,40 +36,34 @@ msgid "Fridge"
msgstr "Nevera"
msgid "Piece"
msgstr "Pieza"
msgid "Pieces"
msgstr "Piezas"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr "Pack"
msgid "Packs"
msgstr "Packs"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr "Vaso"
msgid "Glasses"
msgstr "Vasos"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr "Envase"
msgid "Tins"
msgstr "Envases"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr "Lata"
msgid "Cans"
msgstr "Latas"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr "Puñado"
msgid "Bunches"
msgstr "Puñados"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr "Ositos"
@@ -177,10 +171,9 @@ msgid "Demo User"
msgstr "Usuario de demostración"
msgid "Gram"
msgstr "Gramo"
msgid "Grams"
msgstr "Gramos"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr "Harina"

View File

@@ -20,18 +20,34 @@ msgstr ""
msgid "Stock overview"
msgstr "Resumen de stock"
msgid "%s products expiring within the next %s days"
msgstr "%s productos caducan en los próximos %s días"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr "%s productos ya han caducado"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s productos están por debajo del mínimo de stock definido"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr "Producto"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr "Cantidad"
@@ -65,9 +81,6 @@ msgstr "Seguimiento de tareas del hogar"
msgid "Battery tracking"
msgstr "Seguimiento de pilas"
msgid "Products"
msgstr "Productos"
msgid "Locations"
msgstr "Lugares"
@@ -364,19 +377,6 @@ msgstr "Sobre grocy"
msgid "Close"
msgstr "Cerrar"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s pilas están pendientes de carga en los siguientes %s días"
msgid "%s batteries are overdue to be charged"
msgstr "%s pilas han pasado su fecha de carga prevista"
msgid "%s chores are due to be done within the next %s days"
msgstr ""
"%s tareas del hogar están pendientes de suceder en los siguientes %s días"
msgid "%s chores are overdue to be done"
msgstr "%s tareas del hogar están vencidas"
msgid "Released on"
msgstr "Publicado el"
@@ -491,17 +491,15 @@ msgstr "Requerimientos completos"
msgid "Put missing products on shopping list"
msgstr "Añadir productos faltantes a la lista de la compra"
msgid "Not enough in stock, %s ingredients missing"
msgstr "No hay suficiente stock, faltan %s ingredientes"
msgid "Enough in stock"
msgstr "Suficiente stock"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr ""
"No hay suficiente stock, faltan %s ingredientes, pero están en la lista de "
"la compra"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr "Pantalla completa"
@@ -612,46 +610,37 @@ msgstr "en %s por unidad de compra"
msgid "The price cannot be lower than %s"
msgstr "El precio no puede ser menor que %s"
msgid "%s product expires within the next %s days"
msgstr "%s producto caduca en los próximos %s días"
msgid "%s product is already expired"
msgstr "%s producto está ya caducado"
msgid "%s product is below defined min. stock amount"
msgstr "%s producto está por debajo de la min. cantidad de stock"
msgid "Unit"
msgstr "Unidad"
msgid "Units"
msgstr "Unidades"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr "%s tarea del hogar vence en los próximos %s días"
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr "%s tarea del hogar está vencida"
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr "%s pila debe ser cargada en los próximos %s días"
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr "%s pila ha vencido para ser cargada"
msgid ""
"%s unit was automatically added and will apply in addition to the amount "
"entered here"
msgstr ""
"%s unidad se ha añadido automáticamente y se aplicará además de la cantidad "
"indicada aquí"
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr "en singular"
msgid "in plural form"
msgstr "en plural"
msgid "Never expires"
msgstr "Nunca caduca"
@@ -733,17 +722,15 @@ msgstr "Editar tarea"
msgid "Are you sure to delete task \"%s\"?"
msgstr "¿Estás seguro de borrar la tarea \"%s\"?"
msgid "%s task is due to be done within the next %s days"
msgstr "%s tarea vence en los próximos %s días"
msgid "%s tasks are due to be done within the next %s days"
msgstr "%s tareas vencen en los próximos %s días"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr "%s tarea está vencida"
msgid "%s tasks are overdue to be done"
msgstr "%s tareas están vencidas"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr "Editar categoría de tarea"
@@ -976,8 +963,8 @@ msgstr ""
"El primer elemento de esta lista sería elegido por la regla \"primero lo "
"primero a caducar, luego primero en llegar, primero en salir\""
msgid "Mark %s %s of %s as open"
msgstr "Marcar %s %s de %s como abierto"
msgid "Mark %s of %s as open"
msgstr ""
msgid ""
"When a product was marked as opened, the best before date will be replaced "
@@ -1277,3 +1264,26 @@ msgstr "Es necesario y sólo puede contener letras y números"
msgid "Edit userfield"
msgstr "Editar campo de usuario"
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr "en plural"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,19 @@
# Translators:
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/fr\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: 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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Domain: grocy/chore_types\n"
msgid "manually"

View File

@@ -36,40 +36,34 @@ msgid "Fridge"
msgstr "Réfrigérateur"
msgid "Piece"
msgstr "Pièce"
msgid "Pieces"
msgstr "Pièces"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr "Pack"
msgid "Packs"
msgstr "Packs"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr "Verre"
msgid "Glasses"
msgstr "Verres"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr "Pot"
msgid "Tins"
msgstr "Pots"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr "Canette"
msgid "Cans"
msgstr "Canettes"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr "Brunch"
msgid "Bunches"
msgstr "Brunchs"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr "Oursons en gélatine"
@@ -177,10 +171,9 @@ msgid "Demo User"
msgstr "Utilisateur de démonstration"
msgid "Gram"
msgstr "Gramme"
msgid "Grams"
msgstr "Grammes"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr "Farine"

View File

@@ -1,32 +1,54 @@
# Translators:
# Cedric Octave <transifex@octvcdrc.fr>, 2019
# bigoudo, 2019
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/fr\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: 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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Domain: grocy/strings\n"
msgid "Stock overview"
msgstr "Aperçu du stock"
msgid "%s products expiring within the next %s days"
msgstr "%s produits se périment dans les %s jours"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr "%s produits sont périmés"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s produits sont sous le seuil de stock minimum"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr "Produit"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr "Quantité"
@@ -60,9 +82,6 @@ msgstr "Suivi des corvées"
msgid "Battery tracking"
msgstr "Suivi des batteries"
msgid "Products"
msgstr "Produits"
msgid "Locations"
msgstr "Emplacements"
@@ -120,8 +139,10 @@ msgstr "Périmé"
msgid "Barcode lookup is disabled"
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"
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"
msgid "New amount"
msgstr "Nouvelle quantité"
@@ -249,8 +270,11 @@ msgstr "jamais"
msgid "Add products that are below defined min. stock amount"
msgstr "Ajouter les produits qui sont en dessous du seuil de stock minimum"
msgid "For purchases this amount of days will be added to today for the best before date suggestion"
msgstr "A l'achat, ce nombre de jours sera ajouté à la date de péremption suggérée"
msgid ""
"For purchases this amount of days will be added to today for the best before"
" date suggestion"
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"
@@ -280,7 +304,9 @@ msgid "Are you sure to delete chore \"%s\"?"
msgstr "Voulez-vous vraiment supprimer la corvée \"%s\" ?"
msgid "\"%s\" could not be resolved to a product, how do you want to proceed?"
msgstr "\"%s\" n'a pas été retrouvé en tant que produit, comment voulez-vous procéder ?"
msgstr ""
"\"%s\" n'a pas été retrouvé en tant que produit, comment voulez-vous "
"procéder ?"
msgid "Create or assign product"
msgstr "Créer ou assigner à un produit"
@@ -336,8 +362,12 @@ msgstr "%s sera ajouté au stock"
msgid "This means %s will be removed from stock"
msgstr "%s sera supprimé du stock"
msgid "This means it is estimated that a new execution of this chore is tracked %s days after the last was tracked"
msgstr "La prochaine exécution de cette corvée sera programmée %s jours après sa dernière exécution"
msgid ""
"This means it is estimated that a new execution of this chore is tracked %s "
"days after the last was tracked"
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"
@@ -348,18 +378,6 @@ msgstr "À propos de grocy"
msgid "Close"
msgstr "Fermer"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s batteries doivent être rechargées dans les %s prochains jours"
msgid "%s batteries are overdue to be charged"
msgstr "%s batteries n'ont pas été rechargées à temps"
msgid "%s chores are due to be done within the next %s days"
msgstr "%s corvées doivent être réalisées dans les %s prochains jours"
msgid "%s chores are overdue to be done"
msgstr "%s corvées n'ont pas été réalisées à temps"
msgid "Released on"
msgstr "Date de sortie"
@@ -474,14 +492,15 @@ msgstr "Prérequis remplis"
msgid "Put missing products on shopping list"
msgstr "Ajouter les produits manquants dans la liste de courses"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Pas assez en stock, %s ingrédients manquants"
msgid "Enough in stock"
msgstr "Il y en a assez en stock"
msgid "Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr "Pas assez en stock, %s ingrédients manquants mais déjà dans la liste de courses"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr "Mettre en plein écran"
@@ -504,8 +523,12 @@ msgstr "Afficher les notes"
msgid "Put missing amount on shopping list"
msgstr "Ajouter la quantité manquante dans la liste de courses"
msgid "Are you sure to put all missing ingredients for recipe \"%s\" on the shopping list?"
msgstr "Voulez-vous vraiment ajouter tous les ingrédients manquants de la recette \"%s\" dans la liste de courses ?"
msgid ""
"Are you sure to put all missing ingredients for recipe \"%s\" on the "
"shopping list?"
msgstr ""
"Voulez-vous vraiment ajouter tous les ingrédients manquants de la recette "
"\"%s\" dans la liste de courses ?"
msgid "Added for recipe %s"
msgstr "Ajoutés pour la recette %s"
@@ -562,7 +585,9 @@ msgid "Chores journal"
msgstr "Journal des corvées"
msgid "0 means suggestions for the next charge cycle are disabled"
msgstr "0 implique que les suggestions du prochain cycle de charge seront désactivées"
msgstr ""
"0 implique que les suggestions du prochain cycle de charge seront "
"désactivées"
msgid "Charge cycle interval (days)"
msgstr "Intervalle du cycle de charge (jours)"
@@ -585,42 +610,37 @@ msgstr "en %s par quantité achetée (au format d'achat)"
msgid "The price cannot be lower than %s"
msgstr "Le prix ne peut être inférieur à %s"
msgid "%s product expires within the next %s days"
msgstr "%s produit se périme dans les %s prochains jours"
msgid "%s product is already expired"
msgstr "%s produit est périmé"
msgid "%s product is below defined min. stock amount"
msgstr "%s produit est sous le seuil de stock minimum"
msgid "Unit"
msgstr "Unité"
msgid "Units"
msgstr "Unités"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr "%s corvée doit être réalisée dans les %s prochains jours"
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr "%s corvée n'a pas été réalisée à temps"
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr "%s batterie doit être rechargée dans les %s prochains jours"
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr "%s batterie n'a pas été rechargée à temps"
msgid "%s unit was automatically added and will apply in addition to the amount entered here"
msgstr "%s unité a automatiquement été ajoutée et sera appliquée en plus à la quantité entrée ici"
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr "Au singulier"
msgid "in plural form"
msgstr "Au pluriel"
msgid "Never expires"
msgstr "Ne périme jamais"
@@ -633,11 +653,20 @@ msgstr "-1 implique que ce produit ne périme jamais"
msgid "Quantity unit"
msgstr "Format"
msgid "Only check if a single unit is in stock (a different quantity can then be used above)"
msgstr "Vérifier uniquement si une unité est en stock (une quantité différente peut alors être utilisée au dessus)"
msgid ""
"Only check if a single unit is in stock (a different quantity can then be "
"used above)"
msgstr ""
"Vérifier uniquement si une unité est en stock (une quantité différente peut "
"alors être utilisée au dessus)"
msgid "Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?"
msgstr "Voulez-vous vraiment consommer tous les ingrédients requis par la recette \"%s\" (les ingrédients avec l'option \"Vérifier uniquement si une unité est en stock\" seront ignorés) ?"
msgid ""
"Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients"
" marked with \"check only if a single unit is in stock\" will be ignored)?"
msgstr ""
"Voulez-vous vraiment consommer tous les ingrédients requis par la recette "
"\"%s\" (les ingrédients avec l'option \"Vérifier uniquement si une unité est"
" en stock\" seront ignorés) ?"
msgid "Removed all ingredients of recipe \"%s\" from stock"
msgstr "Enlever tous les ingrédients de la recette \"%s\" du stock"
@@ -693,17 +722,15 @@ msgstr "Modifier la tâche"
msgid "Are you sure to delete task \"%s\"?"
msgstr "Voulez-vous vraiment supprimer la tâche \"%s\" ?"
msgid "%s task is due to be done within the next %s days"
msgstr "%s tâche doit être réalisée dans les %s prochains jours"
msgid "%s tasks are due to be done within the next %s days"
msgstr "%s tâches doivent être réalisées dans les %s prochains jours"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr "%s tâche n'a pas été réalisée à temps"
msgid "%s tasks are overdue to be done"
msgstr "%s tâches n'ont pas été réalisées à temps"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr "Modifier la catégorie de tâche"
@@ -798,8 +825,12 @@ msgstr "Sélectionner un fichier"
msgid "Image of product %s"
msgstr "Photo du produit %s"
msgid "This product cannot be deleted because it is in stock, please remove the stock amount first."
msgstr "Ce produit ne peut être supprimé puisqu'il est en stock. Merci d'enlever la quantité en stock avant."
msgid ""
"This product cannot be deleted because it is in stock, please remove the "
"stock amount first."
msgstr ""
"Ce produit ne peut être supprimé puisqu'il est en stock. Merci d'enlever la "
"quantité en stock avant."
msgid "Delete not possible"
msgstr "Impossible de supprimer"
@@ -822,14 +853,20 @@ msgstr "Modifier un équipement"
msgid "Create equipment"
msgstr "Créer un équipement"
msgid "If you don't select a file, the current instruction manual will not be altered"
msgstr "Si vous ne sélectionnez pas de fichier, le manuel actuel ne sera pas modifié"
msgid ""
"If you don't select a file, the current instruction manual will not be "
"altered"
msgstr ""
"Si vous ne sélectionnez pas de fichier, le manuel actuel ne sera pas modifié"
msgid "No instruction manual available"
msgstr "Aucun manuel d'utilisation disponible"
msgid "The current instruction manual will be deleted when you save the equipment"
msgstr "Le manuel d'utilisation actuel sera supprimé lors de la sauvegarde de cet équipement"
msgid ""
"The current instruction manual will be deleted when you save the equipment"
msgstr ""
"Le manuel d'utilisation actuel sera supprimé lors de la sauvegarde de cet "
"équipement"
msgid "No picture available"
msgstr "Aucune photo disponible"
@@ -921,14 +958,24 @@ msgstr "Ajout du produit %s sur %s de la liste de courses"
msgid "Use a specific stock item"
msgstr "Utiliser un objet spécifique du stock"
msgid "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\""
msgstr "Le premier élément de cette liste sera sélectionné par la règle par défaut qui est \"Le premier arrivant à péremption en premier, puis premier entré premier sorti\""
msgid ""
"The first item in this list would be picked by the default rule which is "
"\"First expiring first, then first in first out\""
msgstr ""
"Le premier élément de cette liste sera sélectionné par la règle par défaut "
"qui est \"Le premier arrivant à péremption en premier, puis premier entré "
"premier sorti\""
msgid "Mark %s %s of %s as open"
msgstr "Indiquer %s %s de %s comme ouvert"
msgid "Mark %s of %s as open"
msgstr ""
msgid "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)"
msgstr "Quand un produit est marqué comme ouvert, la date de péremption sera remplacée par la date du jour + ce nombre de jours (une valeur de 0 désactive ce changement)"
msgid ""
"When a product was marked as opened, the best before date will be replaced "
"by today + this amount of days (a value of 0 disables this)"
msgstr ""
"Quand un produit est marqué comme ouvert, la date de péremption sera "
"remplacée par la date du jour + ce nombre de jours (une valeur de 0 "
"désactive ce changement)"
msgid "Default best before days after opened"
msgstr "Date de péremption en jours par défaut après ouverture"
@@ -972,8 +1019,13 @@ msgstr "Paramètres du stock"
msgid "Shopping list to stock workflow"
msgstr "Transition de la liste de courses vers le stock"
msgid "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set"
msgstr "Réaliser automatiquement les achats en utilisant le dernier prix connu et la quantité indiquée dans la liste, si le premier a une date de péremption par défaut renseignée"
msgid ""
"Automatically do the booking using the last price and the amount of the "
"shopping list item, if the product has \"Default best before days\" set"
msgstr ""
"Réaliser automatiquement les achats en utilisant le dernier prix connu et la"
" quantité indiquée dans la liste, si le premier a une date de péremption par"
" défaut renseignée"
msgid "Skip"
msgstr "Passer"
@@ -993,7 +1045,11 @@ msgstr ""
msgid "Do not check against the shopping list when adding missing items to it"
msgstr ""
msgid "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list"
msgid ""
"By default the amount to be added to the shopping list is \"needed amount - "
"stock amount - shopping list amount\" - when this is enabled, it is only "
"checked against the stock amount, not against what is already on the "
"shopping list"
msgstr ""
msgid "Picture"
@@ -1014,7 +1070,9 @@ msgstr ""
msgid "Share/Integrate calendar (iCal)"
msgstr ""
msgid "Use the following (public) URL to share or integrate the calendar in iCal format"
msgid ""
"Use the following (public) URL to share or integrate the calendar in iCal "
"format"
msgstr ""
msgid "Allow partial units in stock"
@@ -1023,13 +1081,18 @@ msgstr ""
msgid "Enable tare weight handling"
msgstr ""
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"
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 ""
msgid "Tare weight"
msgstr ""
msgid "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated"
msgid ""
"Tare weight handling enabled - please weigh the whole container, the amount "
"to be posted will be automatically calculcated"
msgstr ""
msgid "You have to select a location"
@@ -1080,7 +1143,9 @@ msgstr ""
msgid "Type a new product name or barcode and hit TAB to start a workflow"
msgstr ""
msgid "This will be used as the default setting when adding this product as a recipe ingredient"
msgid ""
"This will be used as the default setting when adding this product as a "
"recipe ingredient"
msgstr ""
msgid "Add item"
@@ -1187,3 +1252,26 @@ msgstr ""
msgid "Edit userfield"
msgstr ""
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
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] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,16 @@
#
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/fr\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:43+0000\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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Domain: grocy/userfield_types\n"
msgid "text-single-line"

View File

@@ -1,15 +1,19 @@
# Translators:
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/it\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: 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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/chore_types\n"
msgid "manually"

View File

@@ -36,40 +36,34 @@ msgid "Fridge"
msgstr "Kühlschrank"
msgid "Piece"
msgstr "Pezzo"
msgid "Pieces"
msgstr "Pezzi"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr "Pacco"
msgid "Packs"
msgstr "Pacchi"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr "Bicchiere"
msgid "Glasses"
msgstr "Bicchieri"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr "Scatola"
msgid "Tins"
msgstr "Scatole"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr "Lattina"
msgid "Cans"
msgstr "Lattine"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr "Cespo"
msgid "Bunches"
msgstr "Cespi"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr "Caramelle"
@@ -177,10 +171,9 @@ msgid "Demo User"
msgstr "Utente Demo"
msgid "Gram"
msgstr "Grammo"
msgid "Grams"
msgstr "Grammi"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr "Farina"

View File

@@ -1,32 +1,53 @@
# Translators:
# Sergio Zampello <seriotv88@gmail.com>, 2019
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/it\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: 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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/strings\n"
msgid "Stock overview"
msgstr "Dispensa"
msgid "%s products expiring within the next %s days"
msgstr "%s prodotti scadranno tra %s giorni"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr "%s prodotti scaduti"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s prodotti sotto il limite minimo"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr "prodotto"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr "quantità"
@@ -60,9 +81,6 @@ msgstr "Dati abitudini"
msgid "Battery tracking"
msgstr "Dati batterie"
msgid "Products"
msgstr "Prodotti"
msgid "Locations"
msgstr "Posizioni"
@@ -120,7 +138,8 @@ msgstr "Scaduto"
msgid "Barcode lookup is disabled"
msgstr "I codici a barre sono disabilitati"
msgid "will be added to the list of barcodes for the selected product on submit"
msgid ""
"will be added to the list of barcodes for the selected product on submit"
msgstr "sarà aggiunto alla lista dei codici a barre per questo prodotto"
msgid "New amount"
@@ -249,8 +268,12 @@ msgstr "mai"
msgid "Add products that are below defined min. stock amount"
msgstr "Aggiungi prodotti sotti il limite minimo"
msgid "For purchases this amount of days will be added to today for the best before date suggestion"
msgstr "Questo numero di giorni verrà aggiunto alla data di acquisto per la data di scadenza"
msgid ""
"For purchases this amount of days will be added to today for the best before"
" date suggestion"
msgstr ""
"Questo numero di giorni verrà aggiunto alla data di acquisto per la data di "
"scadenza"
msgid "This means 1 %s purchased will be converted into %s %s in stock"
msgstr "Questo significa che 1 %s acquistato diventerà %s %s in dispensa"
@@ -336,7 +359,9 @@ msgstr "%s sarà aggiunto alla dispensa"
msgid "This means %s will be removed from stock"
msgstr "%s sarà rimosso dalla dispensa"
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 it is estimated that a new execution of this chore is tracked %s "
"days after the last was tracked"
msgstr "L'esecuzione dell'abitudine è %s giorni dopo la precedente"
msgid "Removed %s %s of %s from stock"
@@ -348,18 +373,6 @@ msgstr "Riguardo grocy"
msgid "Close"
msgstr "Chiudi"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s batterie da ricaricare entro %s giorni"
msgid "%s batteries are overdue to be charged"
msgstr "%s batterie devono essere ricaricate"
msgid "%s chores are due to be done within the next %s days"
msgstr "%s abitudini da eseguire entro %s giorni"
msgid "%s chores are overdue to be done"
msgstr "%s abitudini da eseguire"
msgid "Released on"
msgstr "Rilasciato il"
@@ -474,14 +487,15 @@ msgstr "Requisiti soddisfatti"
msgid "Put missing products on shopping list"
msgstr "Metti i prodotti mancanti nella lista della spesa"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Non abbastanza in magazzino, mancano gli ingredienti # 1"
msgid "Enough in stock"
msgstr "Abbastanza in magazzino"
msgid "Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr "Non abbastanza in magazzino, mancano gli ingredienti # 1 ma sono già nella lista della spesa"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr "Espandi a schermo intero"
@@ -504,7 +518,9 @@ msgstr "x"
msgid "Put missing amount on shopping list"
msgstr "x"
msgid "Are you sure to put all missing ingredients for recipe \"%s\" on the shopping list?"
msgid ""
"Are you sure to put all missing ingredients for recipe \"%s\" on the "
"shopping list?"
msgstr "x"
msgid "Added for recipe %s"
@@ -585,42 +601,37 @@ msgstr "x"
msgid "The price cannot be lower than %s"
msgstr "x"
msgid "%s product expires within the next %s days"
msgstr "x"
msgid "%s product is already expired"
msgstr "x"
msgid "%s product is below defined min. stock amount"
msgstr "x"
msgid "Unit"
msgstr "x"
msgid "Units"
msgstr "x"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr "x"
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr "x"
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr "x"
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr "x"
msgid "%s unit was automatically added and will apply in addition to the amount entered here"
msgstr "x"
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr "x"
msgid "in plural form"
msgstr "x"
msgid "Never expires"
msgstr "x"
@@ -633,10 +644,14 @@ msgstr "x"
msgid "Quantity unit"
msgstr "x"
msgid "Only check if a single unit is in stock (a different quantity can then be used above)"
msgid ""
"Only check if a single unit is in stock (a different quantity can then be "
"used above)"
msgstr "x"
msgid "Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?"
msgid ""
"Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients"
" marked with \"check only if a single unit is in stock\" will be ignored)?"
msgstr "x"
msgid "Removed all ingredients of recipe \"%s\" from stock"
@@ -693,17 +708,15 @@ msgstr "x"
msgid "Are you sure to delete task \"%s\"?"
msgstr "x"
msgid "%s task is due to be done within the next %s days"
msgstr "x"
msgid "%s tasks are due to be done within the next %s days"
msgstr "x"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr "x"
msgid "%s tasks are overdue to be done"
msgstr "x"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr "x"
@@ -798,7 +811,9 @@ msgstr "x"
msgid "Image of product %s"
msgstr "x"
msgid "This product cannot be deleted because it is in stock, please remove the stock amount first."
msgid ""
"This product cannot be deleted because it is in stock, please remove the "
"stock amount first."
msgstr "x"
msgid "Delete not possible"
@@ -822,13 +837,16 @@ msgstr "x"
msgid "Create equipment"
msgstr "x"
msgid "If you don't select a file, the current instruction manual will not be altered"
msgid ""
"If you don't select a file, the current instruction manual will not be "
"altered"
msgstr "x"
msgid "No instruction manual available"
msgstr "x"
msgid "The current instruction manual will be deleted when you save the equipment"
msgid ""
"The current instruction manual will be deleted when you save the equipment"
msgstr "x"
msgid "No picture available"
@@ -921,13 +939,17 @@ msgstr ""
msgid "Use a specific stock item"
msgstr ""
msgid "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\""
msgid ""
"The first item in this list would be picked by the default rule which is "
"\"First expiring first, then first in first out\""
msgstr ""
msgid "Mark %s %s of %s as open"
msgid "Mark %s of %s as open"
msgstr ""
msgid "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)"
msgid ""
"When a product was marked as opened, the best before date will be replaced "
"by today + this amount of days (a value of 0 disables this)"
msgstr ""
msgid "Default best before days after opened"
@@ -972,7 +994,9 @@ msgstr ""
msgid "Shopping list to stock workflow"
msgstr ""
msgid "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set"
msgid ""
"Automatically do the booking using the last price and the amount of the "
"shopping list item, if the product has \"Default best before days\" set"
msgstr ""
msgid "Skip"
@@ -993,7 +1017,11 @@ msgstr ""
msgid "Do not check against the shopping list when adding missing items to it"
msgstr ""
msgid "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list"
msgid ""
"By default the amount to be added to the shopping list is \"needed amount - "
"stock amount - shopping list amount\" - when this is enabled, it is only "
"checked against the stock amount, not against what is already on the "
"shopping list"
msgstr ""
msgid "Picture"
@@ -1014,7 +1042,9 @@ msgstr ""
msgid "Share/Integrate calendar (iCal)"
msgstr ""
msgid "Use the following (public) URL to share or integrate the calendar in iCal format"
msgid ""
"Use the following (public) URL to share or integrate the calendar in iCal "
"format"
msgstr ""
msgid "Allow partial units in stock"
@@ -1023,13 +1053,18 @@ msgstr ""
msgid "Enable tare weight handling"
msgstr ""
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"
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 ""
msgid "Tare weight"
msgstr ""
msgid "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated"
msgid ""
"Tare weight handling enabled - please weigh the whole container, the amount "
"to be posted will be automatically calculcated"
msgstr ""
msgid "You have to select a location"
@@ -1080,7 +1115,9 @@ msgstr ""
msgid "Type a new product name or barcode and hit TAB to start a workflow"
msgstr ""
msgid "This will be used as the default setting when adding this product as a recipe ingredient"
msgid ""
"This will be used as the default setting when adding this product as a "
"recipe ingredient"
msgstr ""
msgid "Add item"
@@ -1187,3 +1224,26 @@ msgstr ""
msgid "Edit userfield"
msgstr ""
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr "x"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,16 @@
#
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/it\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:43+0000\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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/userfield_types\n"
msgid "text-single-line"

View File

@@ -1,15 +1,19 @@
# Translators:
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/nl\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: 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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/component_translations\n"
msgid "timeago_locale"

View File

@@ -1,15 +1,22 @@
# Translators:
# Llewy <carlvanoene@gmail.com>, 2019
# Adriaan Peeters <apeeters@lashout.net>, 2019
# Grocy NL, 2019
# Seppe <van.winkel.seppe@me.com>, 2019
#
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/nl\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"
"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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/demo_data\n"
msgid "Cookies"
@@ -31,40 +38,34 @@ msgid "Fridge"
msgstr "Koelkast"
msgid "Piece"
msgstr "Stuk"
msgid "Pieces"
msgstr "Stukken"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr "Pak"
msgid "Packs"
msgstr "Pakken"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr "Glas"
msgid "Glasses"
msgstr "Glazen"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr "Blik"
msgid "Tins"
msgstr "Blikken"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr "Blik"
msgid "Cans"
msgstr "Blikken"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr "Bundel"
msgid "Bunches"
msgstr "Bundels"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr "Gombeertjes"
@@ -172,10 +173,9 @@ msgid "Demo User"
msgstr "Demo Gebruiker"
msgid "Gram"
msgstr "Gram"
msgid "Grams"
msgstr "Gram"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr "Bloem"

View File

@@ -1,32 +1,57 @@
# Translators:
# Llewy <carlvanoene@gmail.com>, 2019
# Tarik Faik <filoor1@gmail.com>, 2019
# Adriaan Peeters <apeeters@lashout.net>, 2019
# Grocy NL, 2019
# Seppe <van.winkel.seppe@me.com>, 2019
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/nl\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: 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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/strings\n"
msgid "Stock overview"
msgstr "Voorraadoverzicht"
msgid "%s products expiring within the next %s days"
msgstr "%s producten vervallen binnen de volgende %s dagen"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr "%s producten zijn al verlopen"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s producten zijn onder gedefinieerde min. voorraad aantal"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr "Product"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr "Aantal"
@@ -60,9 +85,6 @@ msgstr "Klusjes volgen"
msgid "Battery tracking"
msgstr "Batterij volgen"
msgid "Products"
msgstr "Producten"
msgid "Locations"
msgstr "Locaties"
@@ -120,8 +142,11 @@ msgstr "Verspild"
msgid "Barcode lookup is disabled"
msgstr "Opzoeken op streepjescode is uitgeschakeld"
msgid "will be added to the list of barcodes for the selected product on submit"
msgstr "wordt toegevoegd aan de lijst van streepjescodes voor het geselecteerde product"
msgid ""
"will be added to the list of barcodes for the selected product on submit"
msgstr ""
"wordt toegevoegd aan de lijst van streepjescodes voor het geselecteerde "
"product"
msgid "New amount"
msgstr "Nieuwe aantal"
@@ -249,11 +274,16 @@ msgstr "nooit"
msgid "Add products that are below defined min. stock amount"
msgstr "Voeg producten toe die onder het gedefinieerde min. voorraad zijn"
msgid "For purchases this amount of days will be added to today for the best before date suggestion"
msgstr "Voor aankopen wordt dit aantal dagen toegevoegd aan vandaag voor de houdbaarheidsdatum suggestie"
msgid ""
"For purchases this amount of days will be added to today for the best before"
" date suggestion"
msgstr ""
"Voor aankopen wordt dit aantal dagen toegevoegd aan vandaag voor de "
"houdbaarheidsdatum suggestie"
msgid "This means 1 %s purchased will be converted into %s %s in stock"
msgstr "Dit betekent dat 1 %s aankoop geconverteerd zal worden in %s en %s voorraad"
msgstr ""
"Dit betekent dat 1 %s aankoop geconverteerd zal worden in %s en %s voorraad"
msgid "Login"
msgstr "Login"
@@ -336,7 +366,9 @@ msgstr "%s zal worden toegevoegd aan de voorraad"
msgid "This means %s will be removed from stock"
msgstr "%s zal worden verwijderd uit de voorraad"
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 it is estimated that a new execution of this chore is tracked %s "
"days after the last was tracked"
msgstr ""
msgid "Removed %s %s of %s from stock"
@@ -348,18 +380,6 @@ msgstr "Over grocy"
msgid "Close"
msgstr "Sluit"
msgid "%s batteries are due to be charged within the next %s days"
msgstr ""
msgid "%s batteries are overdue to be charged"
msgstr ""
msgid "%s chores are due to be done within the next %s days"
msgstr ""
msgid "%s chores are overdue to be done"
msgstr ""
msgid "Released on"
msgstr "Vrijgegeven op"
@@ -474,14 +494,15 @@ msgstr "Vereisten volbracht"
msgid "Put missing products on shopping list"
msgstr "Voeg ontbrekende producten toe aan boodschappenlijst"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Niet genoeg in voorraad, %s ingrediënten ontbreken"
msgid "Enough in stock"
msgstr "Genoeg in voorraad"
msgid "Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr "Niet genoeg in voorraad, %s ingrediënten ontbreken maar staan al op de boodschappenlijst"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr "Fullscreen"
@@ -504,8 +525,12 @@ msgstr "Toon notities"
msgid "Put missing amount on shopping list"
msgstr "Zet ontbrekende hoeveelheid op boodschappenlijst"
msgid "Are you sure to put all missing ingredients for recipe \"%s\" on the shopping list?"
msgstr "Ben je zeker dat je alle ontbrekende ingrediënten voor recept \"%s\" op de boodschappenlijst wilt zetten?"
msgid ""
"Are you sure to put all missing ingredients for recipe \"%s\" on the "
"shopping list?"
msgstr ""
"Ben je zeker dat je alle ontbrekende ingrediënten voor recept \"%s\" op de "
"boodschappenlijst wilt zetten?"
msgid "Added for recipe %s"
msgstr "Toegevoegd voor recept %s"
@@ -562,7 +587,8 @@ msgid "Chores journal"
msgstr "Klusjesdagboek"
msgid "0 means suggestions for the next charge cycle are disabled"
msgstr "0 betekent dat suggesties voor de volgende laadcyclus zijn uitgeschakeld"
msgstr ""
"0 betekent dat suggesties voor de volgende laadcyclus zijn uitgeschakeld"
msgid "Charge cycle interval (days)"
msgstr "Laadcyclusinterval (dagen)"
@@ -585,42 +611,37 @@ msgstr "in %s per aankoophoeveelheid"
msgid "The price cannot be lower than %s"
msgstr "Prijs kan niet lager zijn dan %s"
msgid "%s product expires within the next %s days"
msgstr "%s product vervalt in de komende %s dagen"
msgid "%s product is already expired"
msgstr "%s product is al vervallen"
msgid "%s product is below defined min. stock amount"
msgstr "%s product is onder min. voorraadhoeveelheid"
msgid "Unit"
msgstr "Eenheid"
msgid "Units"
msgstr "enheden"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr ""
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr ""
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr ""
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr ""
msgid "%s unit was automatically added and will apply in addition to the amount entered here"
msgstr ""
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr "In enkelvoud"
msgid "in plural form"
msgstr "In meervoud"
msgid "Never expires"
msgstr "Vervalt nooit"
@@ -633,10 +654,14 @@ msgstr "-1 wilt zeggen dat het product noot vervalt"
msgid "Quantity unit"
msgstr "Hoeveelheidseenheid"
msgid "Only check if a single unit is in stock (a different quantity can then be used above)"
msgid ""
"Only check if a single unit is in stock (a different quantity can then be "
"used above)"
msgstr ""
msgid "Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?"
msgid ""
"Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients"
" marked with \"check only if a single unit is in stock\" will be ignored)?"
msgstr ""
msgid "Removed all ingredients of recipe \"%s\" from stock"
@@ -693,17 +718,15 @@ msgstr "Bewerk taak"
msgid "Are you sure to delete task \"%s\"?"
msgstr ""
msgid "%s task is due to be done within the next %s days"
msgstr ""
msgid "%s tasks are due to be done within the next %s days"
msgstr ""
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr ""
msgid "%s tasks are overdue to be done"
msgstr ""
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr "Bewerk kluscategorie"
@@ -784,7 +807,8 @@ msgid "No file selected"
msgstr "Geen bestand geslecteerd"
msgid "If you don't select a file, the current picture will not be altered"
msgstr "De huidige afbeelding wordt niet gewijzigd als je geen bestand selecteerd"
msgstr ""
"De huidige afbeelding wordt niet gewijzigd als je geen bestand selecteerd"
msgid "Delete"
msgstr "Verwijder"
@@ -798,8 +822,12 @@ msgstr "Selecteer bestand"
msgid "Image of product %s"
msgstr "Afbeelding van product %s"
msgid "This product cannot be deleted because it is in stock, please remove the stock amount first."
msgstr "Dit product kan niet worden verwijdert want het is in voorraad, verwijder dit eerst uit je voorraad."
msgid ""
"This product cannot be deleted because it is in stock, please remove the "
"stock amount first."
msgstr ""
"Dit product kan niet worden verwijdert want het is in voorraad, verwijder "
"dit eerst uit je voorraad."
msgid "Delete not possible"
msgstr "Verwijderen niet mogelijk"
@@ -822,14 +850,21 @@ msgstr "Bewerk toestel"
msgid "Create equipment"
msgstr "Maak toestel"
msgid "If you don't select a file, the current instruction manual will not be altered"
msgstr "Wanneer je geen bestand kiest zal de huidige gebruikshandleiding niet gewijzigd worden"
msgid ""
"If you don't select a file, the current instruction manual will not be "
"altered"
msgstr ""
"Wanneer je geen bestand kiest zal de huidige gebruikshandleiding niet "
"gewijzigd worden"
msgid "No instruction manual available"
msgstr "Geen gebruikshandleiding beschikbaar"
msgid "The current instruction manual will be deleted when you save the equipment"
msgstr "De huidige gebruikshandleiding zal verwijderd worden wanneer je het toestel opslaat"
msgid ""
"The current instruction manual will be deleted when you save the equipment"
msgstr ""
"De huidige gebruikshandleiding zal verwijderd worden wanneer je het toestel "
"opslaat"
msgid "No picture available"
msgstr "Geen afbeelding beschikbaar"
@@ -921,13 +956,17 @@ msgstr ""
msgid "Use a specific stock item"
msgstr "Gebruik een specifiek voorraad item"
msgid "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\""
msgid ""
"The first item in this list would be picked by the default rule which is "
"\"First expiring first, then first in first out\""
msgstr ""
msgid "Mark %s %s of %s as open"
msgstr "Markeer %s %s van %s als open"
msgid "Mark %s of %s as open"
msgstr ""
msgid "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)"
msgid ""
"When a product was marked as opened, the best before date will be replaced "
"by today + this amount of days (a value of 0 disables this)"
msgstr ""
msgid "Default best before days after opened"
@@ -972,7 +1011,9 @@ msgstr "Voorraadinstellingen"
msgid "Shopping list to stock workflow"
msgstr ""
msgid "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set"
msgid ""
"Automatically do the booking using the last price and the amount of the "
"shopping list item, if the product has \"Default best before days\" set"
msgstr ""
msgid "Skip"
@@ -993,14 +1034,19 @@ msgstr ""
msgid "Do not check against the shopping list when adding missing items to it"
msgstr ""
msgid "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list"
msgid ""
"By default the amount to be added to the shopping list is \"needed amount - "
"stock amount - shopping list amount\" - when this is enabled, it is only "
"checked against the stock amount, not against what is already on the "
"shopping list"
msgstr ""
msgid "Picture"
msgstr "Afbeelding"
msgid "Uncheck ingredients to not put them on the shopping list"
msgstr "Zet het vinkje uit om ingrediënten niet op de boodschappenlijst te zetten"
msgstr ""
"Zet het vinkje uit om ingrediënten niet op de boodschappenlijst te zetten"
msgid "This is for statistical purposes only"
msgstr "Dit dient enkel voor statistische doeleinden"
@@ -1014,8 +1060,12 @@ msgstr "Sleutel type"
msgid "Share/Integrate calendar (iCal)"
msgstr "Deel/Integreer agenda (iCal)"
msgid "Use the following (public) URL to share or integrate the calendar in iCal format"
msgstr "Gebruik de volgende (publieke) URL om de agenda te delen of integreren in iCal formaat"
msgid ""
"Use the following (public) URL to share or integrate the calendar in iCal "
"format"
msgstr ""
"Gebruik de volgende (publieke) URL om de agenda te delen of integreren in "
"iCal formaat"
msgid "Allow partial units in stock"
msgstr "Sta gedeeltelijke eenheden in voorraad toe"
@@ -1023,13 +1073,18 @@ msgstr "Sta gedeeltelijke eenheden in voorraad toe"
msgid "Enable tare weight handling"
msgstr ""
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"
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 ""
msgid "Tare weight"
msgstr "Tarra gewicht"
msgid "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated"
msgid ""
"Tare weight handling enabled - please weigh the whole container, the amount "
"to be posted will be automatically calculcated"
msgstr ""
msgid "You have to select a location"
@@ -1042,7 +1097,8 @@ msgid "Gallery"
msgstr "Gallerij"
msgid "The current picture will be deleted when you save the recipe"
msgstr "De huidige afbeelding zal worden verwijderd wanneer je het recept opslaat."
msgstr ""
"De huidige afbeelding zal worden verwijderd wanneer je het recept opslaat."
msgid "Show product details"
msgstr "Toon product details"
@@ -1080,7 +1136,9 @@ msgstr "Productenteller"
msgid "Type a new product name or barcode and hit TAB to start a workflow"
msgstr ""
msgid "This will be used as the default setting when adding this product as a recipe ingredient"
msgid ""
"This will be used as the default setting when adding this product as a "
"recipe ingredient"
msgstr ""
msgid "Add item"
@@ -1187,3 +1245,26 @@ msgstr "Dit is verplicht en kan alleen cijfers en letters bevatten"
msgid "Edit userfield"
msgstr "Wijzig gebruikersveld"
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr "In meervoud"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -36,40 +36,34 @@ msgid "Fridge"
msgstr "Kjøleskapet"
msgid "Piece"
msgstr "Ett"
msgid "Pieces"
msgstr "Flere"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr "Pakke"
msgid "Packs"
msgstr "Pakker"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr "Glass"
msgid "Glasses"
msgstr "Glass"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr "Hermetikkboks"
msgid "Tins"
msgstr "Hermetikkbokser"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr "Boks"
msgid "Cans"
msgstr "Bokser"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr "Klase"
msgid "Bunches"
msgstr "Klaser"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr "Vingummibjørner"
@@ -177,10 +171,9 @@ msgid "Demo User"
msgstr "Demo Bruker"
msgid "Gram"
msgstr "Gram"
msgid "Grams"
msgstr "Gram"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr "Mel"

View File

@@ -20,18 +20,34 @@ msgstr ""
msgid "Stock overview"
msgstr "Husholdning"
msgid "%s products expiring within the next %s days"
msgstr "%s produkt går ut på dato innen de neste %s dagene"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr "%s produkt har gått ut på dato"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s produkt under minimum husholdningsnivå"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr "Produkt"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr "Antall"
@@ -65,9 +81,6 @@ msgstr "Logge husarbeid"
msgid "Battery tracking"
msgstr "Batteri ladesyklus"
msgid "Products"
msgstr "Produkter"
msgid "Locations"
msgstr "Lokasjoner"
@@ -360,18 +373,6 @@ msgstr "Om Grocy"
msgid "Close"
msgstr "Lukk"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s batteri må lades innen de %s neste dagene"
msgid "%s batteries are overdue to be charged"
msgstr "%s batteri har gått over fristen for å bli ladet opp"
msgid "%s chores are due to be done within the next %s days"
msgstr "%s husarbeids oppgaver skal gjøres inne de %s neste dagene"
msgid "%s chores are overdue to be done"
msgstr "%s husarbeids oppgaver har gått over fristen for utførelse"
msgid "Released on"
msgstr "Utgitt"
@@ -486,17 +487,15 @@ msgstr "Har jeg alt jeg trenger for denne oppskriften?"
msgid "Put missing products on shopping list"
msgstr "Legg manglende produkter til handlelisten"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Ikke nok i husholdningen, %s ingrediens(er) mangler"
msgid "Enough in stock"
msgstr "Nok i husholdningen"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr ""
"Ikke nok i husholdningen, %s ingrediens(er) mangler, men denne/disse er på "
"handlelisten"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr "Full skjerm"
@@ -604,45 +603,37 @@ msgstr "I %s per kjøpt forpakning "
msgid "The price cannot be lower than %s"
msgstr "Prisen kan ikke være lavere enn %s"
msgid "%s product expires within the next %s days"
msgstr "%s produkt går ut på dato innen de %s neste dagene"
msgid "%s product is already expired"
msgstr "%s produkt er allerede gått ut på dato"
msgid "%s product is below defined min. stock amount"
msgstr "%s produkt er under minimums husholdningsnivå"
msgid "Unit"
msgstr "Enhet"
msgid "Units"
msgstr "Enheter"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr "%s husarbeid oppgave skal gjøres inne de %s neste dagene"
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr "%s husarbeid oppgave har gått over fristen for utførelse"
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr "%s Batteri må lades innen %s dager"
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr "%s Batteri har gått over fristen for å lades"
msgid ""
"%s unit was automatically added and will apply in addition to the amount "
"entered here"
msgstr ""
"%s enhet ble automatisk lagt til i tillegg til hva som blir skrevet inn her"
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr "I entall"
msgid "in plural form"
msgstr "I flertall"
msgid "Never expires"
msgstr "Går ikke ut på dato"
@@ -722,17 +713,15 @@ msgstr "Endre oppgave"
msgid "Are you sure to delete task \"%s\"?"
msgstr "Er du sikker du ønsker slette oppgave \"%s\"?"
msgid "%s task is due to be done within the next %s days"
msgstr "%s oppgave har utførelse forfall innen de neste %s dagene"
msgid "%s tasks are due to be done within the next %s days"
msgstr "%s oppgaver har utførelse forfall innen de neste %s dagene"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr "%s oppgave har forfalt utførelse dato"
msgid "%s tasks are overdue to be done"
msgstr "%s oppgaver har forfalt utførelse dato"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr "Endre oppgave kategori"
@@ -968,8 +957,8 @@ msgstr ""
"Første produkt på listen vil bli konsumert først i henhold til standard "
"regelen. \"Går ut på dato først. Deretter først inn, først ut\"."
msgid "Mark %s %s of %s as open"
msgstr "Merk %s %s av %s som åpnet"
msgid "Mark %s of %s as open"
msgstr ""
msgid ""
"When a product was marked as opened, the best before date will be replaced "
@@ -1268,3 +1257,26 @@ msgstr ""
msgid "Edit userfield"
msgstr ""
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr "I flertall"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,16 @@
#
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/no\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:43+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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: no\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/userfield_types\n"
msgid "text-single-line"

View File

@@ -1,6 +1,6 @@
# Translators:
# Maczuga <maczugapl@gmail.com>, 2019
# Marcin Redlica <marcin.redlica@gmail.com>, 2019
# Maczuga <maczugapl@gmail.com>, 2019
#
msgid ""
msgstr ""
@@ -8,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: Marcin Redlica <marcin.redlica@gmail.com>, 2019\n"
"Last-Translator: Maczuga <maczugapl@gmail.com>, 2019\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"
@@ -36,40 +36,46 @@ msgid "Fridge"
msgstr "Lodówka"
msgid "Piece"
msgstr "Kawałek"
msgid "Pieces"
msgstr "Kawałki/ów"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Pack"
msgstr "Paczka"
msgid "Packs"
msgstr "Paczek/ki"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Glass"
msgstr "Szklanka"
msgid "Glasses"
msgstr "Szklanki/ek"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Tin"
msgstr "Puszka"
msgid "Tins"
msgstr "Puszek/ki"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Can"
msgstr "Opakowanie"
msgid "Cans"
msgstr "Opakowań/nia"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Bunch"
msgstr "Pęczek"
msgid "Bunches"
msgstr "Pęczki/ów"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Gummy bears"
msgstr "Żelki"
@@ -177,10 +183,11 @@ msgid "Demo User"
msgstr "Użytkownik demonstracyjny"
msgid "Gram"
msgstr "Gram"
msgid "Grams"
msgstr "Gramy/ów"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Flour"
msgstr "Mąka"
@@ -288,4 +295,4 @@ msgid "Swedish"
msgstr "Szwedzki"
msgid "Polish"
msgstr ""
msgstr "Polski"

View File

@@ -23,18 +23,44 @@ msgstr ""
msgid "Stock overview"
msgstr "Przegląd zapasów"
msgid "%s products expiring within the next %s days"
msgstr "Ilość produktów, które będą przeterminowane w ciągu %s dni: %s"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s products are already expired"
msgstr "Przeterminowane produkty: %s"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s produktów są poniżej zdefiniowanej minimalnej ilości"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Product"
msgstr "Produkt"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Amount"
msgstr "Ilość"
@@ -68,9 +94,6 @@ msgstr "Wykonanie obowiązku"
msgid "Battery tracking"
msgstr "Sprawdzenie stanu baterii"
msgid "Products"
msgstr "Produkty"
msgid "Locations"
msgstr "Miejsca"
@@ -365,18 +388,6 @@ msgstr "O grocy"
msgid "Close"
msgstr "Zamknij"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "Ilość baterii do naładowania w ciągu %s dni: %s"
msgid "%s batteries are overdue to be charged"
msgstr "Baterie po terminie ładowania: %s"
msgid "%s chores are due to be done within the next %s days"
msgstr "Ilość obowiązków do wykonania w ciągu %s dni: %s"
msgid "%s chores are overdue to be done"
msgstr "Obowiązki niewykonane w terminie: %s"
msgid "Released on"
msgstr "Wydano dnia"
@@ -491,17 +502,17 @@ msgstr "Wymagania spełnione"
msgid "Put missing products on shopping list"
msgstr "Dodaj brakujące produkty do listy zakupów"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Za mało zapasów, brakuje %s składników"
msgid "Enough in stock"
msgstr "Dość na stanie"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr ""
"Za mało zapasów. Brakujące składniki, które znajdują się już na liście "
"zakupów: %s"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Expand to fullscreen"
msgstr "Pokaż w pełnym ekranie"
@@ -609,44 +620,47 @@ msgstr "w %s za zakup jednostki ilości"
msgid "The price cannot be lower than %s"
msgstr "Cena nie może być mniejsza niż %s"
msgid "%s product expires within the next %s days"
msgstr "Ilość produktów, które będą przeterminowane w ciągu %s dni: %s"
msgid "%s product is already expired"
msgstr "Przeterminowane produkty: %s"
msgid "%s product is below defined min. stock amount"
msgstr ""
msgid "Unit"
msgstr "Jednostka"
msgid "Units"
msgstr "Jednostki"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s chore is due to be done within the next %s days"
msgstr "Ilość obowiązków do wykonania w ciągu %s dni: %s"
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s chore is overdue to be done"
msgstr "Obowiązki niewykonane w terminie: %s"
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr "Ilość baterii do naładowania za %s dni: %s"
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s battery is overdue to be charged"
msgstr "Baterie po terminie ładowania: %s"
msgid ""
"%s unit was automatically added and will apply in addition to the amount "
"entered here"
msgstr ""
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "in singular form"
msgstr "w liczbie pojedynczej"
msgid "in plural form"
msgstr "w liczbie mnogiej"
msgid "Never expires"
msgstr "Brak terminu ważności"
@@ -728,17 +742,19 @@ msgstr "Edytuj zadanie"
msgid "Are you sure to delete task \"%s\"?"
msgstr "Czy jesteś pewien, że chcesz usunąć zadanie \"%s\"?"
msgid "%s task is due to be done within the next %s days"
msgstr "Ilość zadań do wykonania w ciągu %s dni: %s"
msgid "%s tasks are due to be done within the next %s days"
msgstr "Ilość zadań do wykonania w ciągu %s dni: %s"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s task is overdue to be done"
msgstr "Zadania niewykonane w terminie: %s"
msgid "%s tasks are overdue to be done"
msgstr "Zadania niewykonane w terminie: %s"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Edit task category"
msgstr "Edytuj kategorię zadania"
@@ -968,8 +984,8 @@ msgid ""
"\"First expiring first, then first in first out\""
msgstr ""
msgid "Mark %s %s of %s as open"
msgstr "%s - oznacz %s %s jako otwarte"
msgid "Mark %s of %s as open"
msgstr ""
msgid ""
"When a product was marked as opened, the best before date will be replaced "
@@ -1263,3 +1279,28 @@ msgstr "Pole jest wymagane i może zawierać jedynie litery i cyfry"
msgid "Edit userfield"
msgstr "Edytuj pole użytkownika"
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr "w liczbie mnogiej"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,19 @@
# Translators:
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/ru\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: 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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\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_types\n"
msgid "manually"

View File

@@ -1,15 +1,19 @@
# Translators:
# Pavel Pletenev <cpp.create@gmail.com>, 2019
#
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/ru\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
"Last-Translator: Pavel Pletenev <cpp.create@gmail.com>, 2019\n"
"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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\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/demo_data\n"
msgid "Cookies"
@@ -31,40 +35,46 @@ msgid "Fridge"
msgstr "Холодильник"
msgid "Piece"
msgstr "Штука"
msgid "Pieces"
msgstr "Штук(и)"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Pack"
msgstr "Упаковка"
msgid "Packs"
msgstr "Упаков(ки/ок)"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Glass"
msgstr "Стакан"
msgid "Glasses"
msgstr "Стакан(а/ов)"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Tin"
msgstr ""
msgid "Tins"
msgstr ""
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Can"
msgstr ""
msgid "Cans"
msgstr ""
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Bunch"
msgstr ""
msgid "Bunches"
msgstr ""
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Gummy bears"
msgstr ""
@@ -172,10 +182,11 @@ msgid "Demo User"
msgstr ""
msgid "Gram"
msgstr ""
msgid "Grams"
msgstr ""
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Flour"
msgstr ""

View File

@@ -1,32 +1,63 @@
# Translators:
# Pavel Pletenev <cpp.create@gmail.com>, 2019
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/ru\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: 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"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\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/strings\n"
msgid "Stock overview"
msgstr "Обзор склада"
msgid "%s products expiring within the next %s days"
msgstr "У %s продуктов заканчивается срок годности через %s дня (дней)"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s products are already expired"
msgstr "У %s продуктов закончился срок годности"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s продуктов имеются меньше мин. заданного кол-ва"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Product"
msgstr "Продукт"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Amount"
msgstr "Количество"
@@ -60,9 +91,6 @@ msgstr "Выполнить работу по дому"
msgid "Battery tracking"
msgstr "Отслеживание батарей"
msgid "Products"
msgstr "Продукты"
msgid "Locations"
msgstr "Места хранения"
@@ -120,8 +148,10 @@ msgstr "Испорчено"
msgid "Barcode lookup is disabled"
msgstr "Поиск по штрихкоду отключён"
msgid "will be added to the list of barcodes for the selected product on submit"
msgstr "будет добавлен к списку штрихкодов для выбранного продукта при сохранении"
msgid ""
"will be added to the list of barcodes for the selected product on submit"
msgstr ""
"будет добавлен к списку штрихкодов для выбранного продукта при сохранении"
msgid "New amount"
msgstr "Новое количество"
@@ -249,8 +279,12 @@ msgstr "никогда"
msgid "Add products that are below defined min. stock amount"
msgstr "Добавить продукты, которых меньше мин. заданного кол-ва"
msgid "For purchases this amount of days will be added to today for the best before date suggestion"
msgstr "Данное количество дней будет добавлено к предлагаемому сроку годности при покупке"
msgid ""
"For purchases this amount of days will be added to today for the best before"
" date suggestion"
msgstr ""
"Данное количество дней будет добавлено к предлагаемому сроку годности при "
"покупке"
msgid "This means 1 %s purchased will be converted into %s %s in stock"
msgstr "Означает, что 1 купленный %s будет пересчитан в %s %s в запасе"
@@ -280,7 +314,9 @@ msgid "Are you sure to delete chore \"%s\"?"
msgstr "Вы уверены, что нужно удалить работу по дому \"%s\"?"
msgid "\"%s\" could not be resolved to a product, how do you want to proceed?"
msgstr "\"%s\" не может быть преобразован к существующему продукту. Как вы хотите продолжить?"
msgstr ""
"\"%s\" не может быть преобразован к существующему продукту. Как вы хотите "
"продолжить?"
msgid "Create or assign product"
msgstr "Создать или назначить продукт"
@@ -336,8 +372,12 @@ msgstr "Означает, что %s будет добавлен в запас"
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"
msgstr "Это означает, что следующее выполнение данной работы по дому будет назначено спустя %s дней после самого недавнего выполнения"
msgid ""
"This means it is estimated that a new execution of this chore is tracked %s "
"days after the last was tracked"
msgstr ""
"Это означает, что следующее выполнение данной работы по дому будет назначено"
" спустя %s дней после самого недавнего выполнения"
msgid "Removed %s %s of %s from stock"
msgstr "Убрано %s %s из %s из запаса"
@@ -348,18 +388,6 @@ msgstr "О grocy"
msgid "Close"
msgstr "Закрыть"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s батарей нужно будет зарядить в ближайшие %s дня"
msgid "%s batteries are overdue to be charged"
msgstr "%s батарей нужно зарядить"
msgid "%s chores are due to be done within the next %s days"
msgstr "Срок исполнения %s работ по дому наступает в ближайшие %s дня (дней)"
msgid "%s chores are overdue to be done"
msgstr "У %s работ по дому уже подошёл срок выполнения"
msgid "Released on"
msgstr "Выпуск от"
@@ -474,14 +502,17 @@ msgstr "Требования выполнены"
msgid "Put missing products on shopping list"
msgstr "Добавить отсутствующие продукты в список покупок"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Запаса недостаточно, %s ингредиентов нет"
msgid "Enough in stock"
msgstr "Достаточно в запасе"
msgid "Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr "Запаса недостаточно, %s ингредиентов нет, но уже добавлены в список покупок"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Expand to fullscreen"
msgstr "Раскрыть на весь экран"
@@ -496,7 +527,8 @@ msgid "Recipe"
msgstr "Рецепт"
msgid "Not enough in stock, %s missing, %s already on shopping list"
msgstr "Запаса недостаточно, %s ингредиентов нет, %s уже добавлены в список покупок"
msgstr ""
"Запаса недостаточно, %s ингредиентов нет, %s уже добавлены в список покупок"
msgid "Show notes"
msgstr "Показать заметки"
@@ -504,8 +536,12 @@ msgstr "Показать заметки"
msgid "Put missing amount on shopping list"
msgstr "Добавить отсутствующее количество в список покупок"
msgid "Are you sure to put all missing ingredients for recipe \"%s\" on the shopping list?"
msgstr "Вы уверены, что нужно добавить все отсутствующие ингредиенты для рецепта \"%s\" в список покупок?"
msgid ""
"Are you sure to put all missing ingredients for recipe \"%s\" on the "
"shopping list?"
msgstr ""
"Вы уверены, что нужно добавить все отсутствующие ингредиенты для рецепта "
"\"%s\" в список покупок?"
msgid "Added for recipe %s"
msgstr "Добавлен рецепт %s"
@@ -585,42 +621,47 @@ msgstr "в %s на покупку единицы измерения"
msgid "The price cannot be lower than %s"
msgstr "Цена не может быть ниже %s"
msgid "%s product expires within the next %s days"
msgstr "У %s продукта закончится срок годности через %s дня(дней)"
msgid "%s product is already expired"
msgstr "У %s продукта уже закончился срок годности"
msgid "%s product is below defined min. stock amount"
msgstr "%s продукт имеется меньше мин. заданного кол-ва"
msgid "Unit"
msgstr "Ед.изм."
msgid "Units"
msgstr "Ед.изм."
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s chore is due to be done within the next %s days"
msgstr "Срок исполнения %s работы по дому наступает в ближайшие %s дня (дней) "
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s chore is overdue to be done"
msgstr "У %s работы по дому уже подошёл срок исполнения "
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr "%s батарею нужно будет зарядить в ближайшие %s дня "
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s battery is overdue to be charged"
msgstr "%s батарею нужно зарядить"
msgid "%s unit was automatically added and will apply in addition to the amount entered here"
msgstr ""
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "in singular form"
msgstr "в единственном числе"
msgid "in plural form"
msgstr "в множественном числе"
msgid "Never expires"
msgstr "Бесконечный срок годности"
@@ -633,10 +674,14 @@ msgstr "-1 означает, что у данного продукта беск
msgid "Quantity unit"
msgstr "Единица измерения"
msgid "Only check if a single unit is in stock (a different quantity can then be used above)"
msgid ""
"Only check if a single unit is in stock (a different quantity can then be "
"used above)"
msgstr ""
msgid "Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?"
msgid ""
"Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients"
" marked with \"check only if a single unit is in stock\" will be ignored)?"
msgstr ""
msgid "Removed all ingredients of recipe \"%s\" from stock"
@@ -693,17 +738,19 @@ msgstr "Изменить задачу"
msgid "Are you sure to delete task \"%s\"?"
msgstr "Вы уверены, что нужно удалить задачу \"%s\"?"
msgid "%s task is due to be done within the next %s days"
msgstr "У %s задачи заканчивается срок выполнения в ближайшие %s дня(дней)"
msgid "%s tasks are due to be done within the next %s days"
msgstr "У %s задач заканчивается срок выполнения в ближайшие %s дня (дней)"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "%s task is overdue to be done"
msgstr "У %s задачи вышел срок выполнения"
msgid "%s tasks are overdue to be done"
msgstr "У %s задач вышел срок выполнения"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Edit task category"
msgstr "Изменить категорию задач"
@@ -798,8 +845,12 @@ msgstr "Выбрать файл"
msgid "Image of product %s"
msgstr "Изображение продукта %s"
msgid "This product cannot be deleted because it is in stock, please remove the stock amount first."
msgstr "Данный продукт не может быть удалён, так как он ещё есть в запасе. Пожалуйста, сначала опустошите запас."
msgid ""
"This product cannot be deleted because it is in stock, please remove the "
"stock amount first."
msgstr ""
"Данный продукт не может быть удалён, так как он ещё есть в запасе. "
"Пожалуйста, сначала опустошите запас."
msgid "Delete not possible"
msgstr "Удаление невозможно"
@@ -822,15 +873,16 @@ msgstr "Изменить технику"
msgid "Create equipment"
msgstr "Создать технику"
msgid "If you don't select a file, the current instruction manual will not be altered"
msgid ""
"If you don't select a file, the current instruction manual will not be "
"altered"
msgstr "Если файл не выбран, то текущая инструкция не будет изменена"
msgid "No instruction manual available"
msgstr ""
"Нет доступной инструкции\n"
""
msgstr "Нет доступной инструкции\n"
msgid "The current instruction manual will be deleted when you save the equipment"
msgid ""
"The current instruction manual will be deleted when you save the equipment"
msgstr "Текущая инструкция будет удалена при сохранении техники"
msgid "No picture available"
@@ -923,13 +975,19 @@ msgstr "Добавляется элемент списка покупок %s и
msgid "Use a specific stock item"
msgstr "Использовать конкретный элемент из запаса"
msgid "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\""
msgstr "Первый элемент этого списка будет выбран по правилу \"Сначала с меньшим сроком годности, затем по дате поступления\""
msgid ""
"The first item in this list would be picked by the default rule which is "
"\"First expiring first, then first in first out\""
msgstr ""
"Первый элемент этого списка будет выбран по правилу \"Сначала с меньшим "
"сроком годности, затем по дате поступления\""
msgid "Mark %s %s of %s as open"
msgstr "Пометить %s %s %s как открытую"
msgid "Mark %s of %s as open"
msgstr ""
msgid "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)"
msgid ""
"When a product was marked as opened, the best before date will be replaced "
"by today + this amount of days (a value of 0 disables this)"
msgstr ""
msgid "Default best before days after opened"
@@ -974,7 +1032,9 @@ msgstr "Настройки запаса"
msgid "Shopping list to stock workflow"
msgstr ""
msgid "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set"
msgid ""
"Automatically do the booking using the last price and the amount of the "
"shopping list item, if the product has \"Default best before days\" set"
msgstr ""
msgid "Skip"
@@ -995,7 +1055,11 @@ msgstr ""
msgid "Do not check against the shopping list when adding missing items to it"
msgstr ""
msgid "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list"
msgid ""
"By default the amount to be added to the shopping list is \"needed amount - "
"stock amount - shopping list amount\" - when this is enabled, it is only "
"checked against the stock amount, not against what is already on the "
"shopping list"
msgstr ""
msgid "Picture"
@@ -1016,7 +1080,9 @@ msgstr ""
msgid "Share/Integrate calendar (iCal)"
msgstr ""
msgid "Use the following (public) URL to share or integrate the calendar in iCal format"
msgid ""
"Use the following (public) URL to share or integrate the calendar in iCal "
"format"
msgstr ""
msgid "Allow partial units in stock"
@@ -1025,14 +1091,25 @@ msgstr "Разрешить дробные количества в запасе"
msgid "Enable tare weight handling"
msgstr "Включить расчёт с учётом тары"
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 "Это удобно, например, для хранения муки в контейнере - при покупке/потреблении/инветаризации взвесьте весь контейнер, а настоящее количество будет автоматически рассчитано на основе объёма в запасе и веса тары ниже"
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 ""
"Это удобно, например, для хранения муки в контейнере - при "
"покупке/потреблении/инветаризации взвесьте весь контейнер, а настоящее "
"количество будет автоматически рассчитано на основе объёма в запасе и веса "
"тары ниже"
msgid "Tare weight"
msgstr "Вес тары"
msgid "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated"
msgstr "Включён расчёт с учётом тары - пожалуйста, взвесьте весь контейнер, изменения в количестве будут автоматически рассчитаны"
msgid ""
"Tare weight handling enabled - please weigh the whole container, the amount "
"to be posted will be automatically calculcated"
msgstr ""
"Включён расчёт с учётом тары - пожалуйста, взвесьте весь контейнер, "
"изменения в количестве будут автоматически рассчитаны"
msgid "You have to select a location"
msgstr "Вам нужно выбрать место хранения"
@@ -1082,7 +1159,9 @@ msgstr ""
msgid "Type a new product name or barcode and hit TAB to start a workflow"
msgstr ""
msgid "This will be used as the default setting when adding this product as a recipe ingredient"
msgid ""
"This will be used as the default setting when adding this product as a "
"recipe ingredient"
msgstr ""
msgid "Add item"
@@ -1189,3 +1268,28 @@ msgstr ""
msgid "Edit userfield"
msgstr ""
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr "в множественном числе"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
msgstr[3] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -15,18 +15,34 @@ msgstr ""
msgid "Stock overview"
msgstr ""
msgid "%s products expiring within the next %s days"
msgstr ""
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr ""
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr ""
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr ""
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr ""
@@ -60,9 +76,6 @@ msgstr ""
msgid "Battery tracking"
msgstr ""
msgid "Products"
msgstr ""
msgid "Locations"
msgstr ""
@@ -348,18 +361,6 @@ msgstr ""
msgid "Close"
msgstr ""
msgid "%s batteries are due to be charged within the next %s days"
msgstr ""
msgid "%s batteries are overdue to be charged"
msgstr ""
msgid "%s chores are due to be done within the next %s days"
msgstr ""
msgid "%s chores are overdue to be done"
msgstr ""
msgid "Released on"
msgstr ""
@@ -474,14 +475,13 @@ msgstr ""
msgid "Put missing products on shopping list"
msgstr ""
msgid "Not enough in stock, %s ingredients missing"
msgstr ""
msgid "Enough in stock"
msgstr ""
msgid "Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr ""
msgid "Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural "Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr ""
@@ -585,42 +585,37 @@ msgstr ""
msgid "The price cannot be lower than %s"
msgstr ""
msgid "%s product expires within the next %s days"
msgstr ""
msgid "%s product is already expired"
msgstr ""
msgid "%s product is below defined min. stock amount"
msgstr ""
msgid "Unit"
msgstr ""
msgid "Units"
msgstr ""
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr ""
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr ""
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr ""
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr ""
msgid "%s unit was automatically added and will apply in addition to the amount entered here"
msgstr ""
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr ""
msgid "in plural form"
msgstr ""
msgid "Never expires"
msgstr ""
@@ -693,17 +688,15 @@ msgstr ""
msgid "Are you sure to delete task \"%s\"?"
msgstr ""
msgid "%s task is due to be done within the next %s days"
msgstr ""
msgid "%s tasks are due to be done within the next %s days"
msgstr ""
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr ""
msgid "%s tasks are overdue to be done"
msgstr ""
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr ""
@@ -924,7 +917,7 @@ msgstr ""
msgid "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\""
msgstr ""
msgid "Mark %s %s of %s as open"
msgid "Mark %s of %s as open"
msgstr ""
msgid "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)"
@@ -1187,3 +1180,35 @@ msgstr ""
msgid "Edit userfield"
msgstr ""
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr ""
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""
msgid "Pieces"
msgstr ""
msgid "Packs"
msgstr ""
msgid "Products"
msgstr ""

View File

@@ -1,6 +1,6 @@
# Translators:
# Mathias Fröjd <info@mcfrojd.com>, 2019
# Bernd Bestel <bernd@berrnd.de>, 2019
# Mathias Fröjd <info@mcfrojd.com>, 2019
#
msgid ""
msgstr ""
@@ -8,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: Mathias Fröjd <info@mcfrojd.com>, 2019\n"
"Language-Team: Swedish (Sweden) (https://www.transifex.com/grocy/teams/93189/sv_SE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -36,40 +36,34 @@ msgid "Fridge"
msgstr "Kylskåp"
msgid "Piece"
msgstr "Bit"
msgid "Pieces"
msgstr "Bitar"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr "Förpackning"
msgid "Packs"
msgstr "Förpackningar"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr "Glas"
msgid "Glasses"
msgstr "Glasögon"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr "Burk"
msgid "Tins"
msgstr "Burkar"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr "Dos"
msgid "Cans"
msgstr "Dos"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr "Knippa"
msgid "Bunches"
msgstr "Klasar"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr "Gummibjörnar"
@@ -177,10 +171,9 @@ msgid "Demo User"
msgstr "Demo-användare"
msgid "Gram"
msgstr "Gram"
msgid "Grams"
msgstr "Gram"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr "Mjöl"
@@ -288,4 +281,4 @@ msgid "Swedish"
msgstr "Swedish"
msgid "Polish"
msgstr ""
msgstr "Polermedel"

View File

@@ -20,18 +20,34 @@ msgstr ""
msgid "Stock overview"
msgstr "Lageröversikt"
msgid "%s products expiring within the next %s days"
msgstr "%s produkter som löper ut inom %s dagar"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr "%s produkter är redan utgått"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s produkter är under definierade min. lagerbelopp"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr "Produkt"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr "Belopp"
@@ -65,9 +81,6 @@ msgstr "Sysslor spårning"
msgid "Battery tracking"
msgstr "Batterispårning"
msgid "Products"
msgstr "Produkter"
msgid "Locations"
msgstr "Platser"
@@ -364,18 +377,6 @@ msgstr "Om grocy"
msgid "Close"
msgstr "Stänga"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s batteri/er behöver laddas inom de närmaste 2 dagarna"
msgid "%s batteries are overdue to be charged"
msgstr "%s batteri/er behöver laddas nu"
msgid "%s chores are due to be done within the next %s days"
msgstr "%s syssla/or bör göras inom de närmaste 2 dagarna"
msgid "%s chores are overdue to be done"
msgstr "%s syssla/or borde ha utförts"
msgid "Released on"
msgstr "Släppt på"
@@ -490,16 +491,15 @@ msgstr "Krav uppfyllda"
msgid "Put missing products on shopping list"
msgstr "Sätt saknade produkter på inköpslista"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Inte tillräckligt i lager, saknas %s ingredienser"
msgid "Enough in stock"
msgstr "Tillräckligt i lager"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr ""
"Inte tillräckligt i lager, saknas %s ingredienser men redan på köpslistan"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr "Expandera till fullskärm"
@@ -607,46 +607,37 @@ msgstr "i %s per inköpskvantitetsenhet"
msgid "The price cannot be lower than %s"
msgstr "Priset kan inte vara lägre än %s"
msgid "%s product expires within the next %s days"
msgstr "%s produkt löper ut inom 2 dagar"
msgid "%s product is already expired"
msgstr "%s-produkten har redan gått ut"
msgid "%s product is below defined min. stock amount"
msgstr "%s produkten är under definierad min. lagerbelopp"
msgid "Unit"
msgstr "Enhet"
msgid "Units"
msgstr "Enheter"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr "%s syssla/or bör göras inom de närmaste 2 dagarna"
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr "%s syssla/or borde ha utförts"
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr "Batteri %s beror på att debiteras inom de närmaste 2 dagarna"
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr "%s batteriet är för sent för att laddas"
msgid ""
"%s unit was automatically added and will apply in addition to the amount "
"entered here"
msgstr ""
"%s-enhet läggs automatiskt till och kommer att gälla utöver det belopp som "
"anges här"
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr "i singular form"
msgid "in plural form"
msgstr "i plural form"
msgid "Never expires"
msgstr "Går aldrig ut"
@@ -728,17 +719,15 @@ msgstr "Redigera uppgiften"
msgid "Are you sure to delete task \"%s\"?"
msgstr "Är du säker på att ta bort uppgift \"%s\"?"
msgid "%s task is due to be done within the next %s days"
msgstr "%s uppgift beror på att ske inom de närmaste 2 dagarna"
msgid "%s tasks are due to be done within the next %s days"
msgstr "%s uppgifter beror på att ske inom de närmaste 2 dagarna"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr "%s uppgift är försenad att göra"
msgid "%s tasks are overdue to be done"
msgstr "%s uppgifter är försenade att göra"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr "Redigera uppgiftskategori"
@@ -973,8 +962,8 @@ msgstr ""
"Det första objektet i den här listan skulle plockas av standardregeln som är"
" \"Första utgången först, sedan först i första utgåvan\""
msgid "Mark %s %s of %s as open"
msgstr "Markera %s %s av %s såm öppnad"
msgid "Mark %s of %s as open"
msgstr ""
msgid ""
"When a product was marked as opened, the best before date will be replaced "
@@ -1273,3 +1262,26 @@ msgstr "This is required and can only contain letters and numbers"
msgid "Edit userfield"
msgstr "Edit userfield"
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr "i plural form"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,16 @@
#
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/ta\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: ta\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/chore_types\n"
msgid "manually"

View File

@@ -1,15 +1,16 @@
#
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/ta\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: ta\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/component_translations\n"
msgid "timeago_locale"

View File

@@ -1,15 +1,16 @@
#
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/ta\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: ta\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/demo_data\n"
msgid "Cookies"
@@ -31,40 +32,34 @@ msgid "Fridge"
msgstr ""
msgid "Piece"
msgstr ""
msgid "Pieces"
msgstr ""
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr ""
msgid "Packs"
msgstr ""
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr ""
msgid "Glasses"
msgstr ""
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr ""
msgid "Tins"
msgstr ""
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr ""
msgid "Cans"
msgstr ""
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr ""
msgid "Bunches"
msgstr ""
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr ""
@@ -172,10 +167,9 @@ msgid "Demo User"
msgstr ""
msgid "Gram"
msgstr ""
msgid "Grams"
msgstr ""
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr ""

View File

@@ -1,15 +1,16 @@
#
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/ta\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:17+00:00\n"
"Language: ta\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/stock_transaction_types\n"
msgid "purchase"

View File

@@ -1,32 +1,49 @@
#
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/ta\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:42+0000\n"
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:18+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:18+00:00\n"
"Language: ta\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/strings\n"
msgid "Stock overview"
msgstr ""
msgid "%s products expiring within the next %s days"
msgstr ""
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr ""
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr ""
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr ""
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr ""
@@ -60,9 +77,6 @@ msgstr ""
msgid "Battery tracking"
msgstr ""
msgid "Products"
msgstr ""
msgid "Locations"
msgstr ""
@@ -120,7 +134,8 @@ msgstr ""
msgid "Barcode lookup is disabled"
msgstr ""
msgid "will be added to the list of barcodes for the selected product on submit"
msgid ""
"will be added to the list of barcodes for the selected product on submit"
msgstr ""
msgid "New amount"
@@ -249,7 +264,9 @@ msgstr ""
msgid "Add products that are below defined min. stock amount"
msgstr ""
msgid "For purchases this amount of days will be added to today for the best before date suggestion"
msgid ""
"For purchases this amount of days will be added to today for the best before"
" date suggestion"
msgstr ""
msgid "This means 1 %s purchased will be converted into %s %s in stock"
@@ -336,7 +353,9 @@ 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 it is estimated that a new execution of this chore is tracked %s "
"days after the last was tracked"
msgstr ""
msgid "Removed %s %s of %s from stock"
@@ -348,18 +367,6 @@ msgstr ""
msgid "Close"
msgstr ""
msgid "%s batteries are due to be charged within the next %s days"
msgstr ""
msgid "%s batteries are overdue to be charged"
msgstr ""
msgid "%s chores are due to be done within the next %s days"
msgstr ""
msgid "%s chores are overdue to be done"
msgstr ""
msgid "Released on"
msgstr ""
@@ -474,14 +481,15 @@ msgstr ""
msgid "Put missing products on shopping list"
msgstr ""
msgid "Not enough in stock, %s ingredients missing"
msgstr ""
msgid "Enough in stock"
msgstr ""
msgid "Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr ""
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr ""
@@ -504,7 +512,9 @@ msgstr ""
msgid "Put missing amount on shopping list"
msgstr ""
msgid "Are you sure to put all missing ingredients for recipe \"%s\" on the shopping list?"
msgid ""
"Are you sure to put all missing ingredients for recipe \"%s\" on the "
"shopping list?"
msgstr ""
msgid "Added for recipe %s"
@@ -585,42 +595,37 @@ msgstr ""
msgid "The price cannot be lower than %s"
msgstr ""
msgid "%s product expires within the next %s days"
msgstr ""
msgid "%s product is already expired"
msgstr ""
msgid "%s product is below defined min. stock amount"
msgstr ""
msgid "Unit"
msgstr ""
msgid "Units"
msgstr ""
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr ""
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr ""
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr ""
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr ""
msgid "%s unit was automatically added and will apply in addition to the amount entered here"
msgstr ""
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr ""
msgid "in plural form"
msgstr ""
msgid "Never expires"
msgstr ""
@@ -633,10 +638,14 @@ msgstr ""
msgid "Quantity unit"
msgstr ""
msgid "Only check if a single unit is in stock (a different quantity can then be used above)"
msgid ""
"Only check if a single unit is in stock (a different quantity can then be "
"used above)"
msgstr ""
msgid "Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients marked with \"check only if a single unit is in stock\" will be ignored)?"
msgid ""
"Are you sure to consume all ingredients needed by recipe \"%s\" (ingredients"
" marked with \"check only if a single unit is in stock\" will be ignored)?"
msgstr ""
msgid "Removed all ingredients of recipe \"%s\" from stock"
@@ -693,17 +702,15 @@ msgstr ""
msgid "Are you sure to delete task \"%s\"?"
msgstr ""
msgid "%s task is due to be done within the next %s days"
msgstr ""
msgid "%s tasks are due to be done within the next %s days"
msgstr ""
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr ""
msgid "%s tasks are overdue to be done"
msgstr ""
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr ""
@@ -798,7 +805,9 @@ msgstr ""
msgid "Image of product %s"
msgstr ""
msgid "This product cannot be deleted because it is in stock, please remove the stock amount first."
msgid ""
"This product cannot be deleted because it is in stock, please remove the "
"stock amount first."
msgstr ""
msgid "Delete not possible"
@@ -822,13 +831,16 @@ msgstr ""
msgid "Create equipment"
msgstr ""
msgid "If you don't select a file, the current instruction manual will not be altered"
msgid ""
"If you don't select a file, the current instruction manual will not be "
"altered"
msgstr ""
msgid "No instruction manual available"
msgstr ""
msgid "The current instruction manual will be deleted when you save the equipment"
msgid ""
"The current instruction manual will be deleted when you save the equipment"
msgstr ""
msgid "No picture available"
@@ -921,13 +933,17 @@ msgstr ""
msgid "Use a specific stock item"
msgstr ""
msgid "The first item in this list would be picked by the default rule which is \"First expiring first, then first in first out\""
msgid ""
"The first item in this list would be picked by the default rule which is "
"\"First expiring first, then first in first out\""
msgstr ""
msgid "Mark %s %s of %s as open"
msgid "Mark %s of %s as open"
msgstr ""
msgid "When a product was marked as opened, the best before date will be replaced by today + this amount of days (a value of 0 disables this)"
msgid ""
"When a product was marked as opened, the best before date will be replaced "
"by today + this amount of days (a value of 0 disables this)"
msgstr ""
msgid "Default best before days after opened"
@@ -972,7 +988,9 @@ msgstr ""
msgid "Shopping list to stock workflow"
msgstr ""
msgid "Automatically do the booking using the last price and the amount of the shopping list item, if the product has \"Default best before days\" set"
msgid ""
"Automatically do the booking using the last price and the amount of the "
"shopping list item, if the product has \"Default best before days\" set"
msgstr ""
msgid "Skip"
@@ -993,7 +1011,11 @@ msgstr ""
msgid "Do not check against the shopping list when adding missing items to it"
msgstr ""
msgid "By default the amount to be added to the shopping list is \"needed amount - stock amount - shopping list amount\" - when this is enabled, it is only checked against the stock amount, not against what is already on the shopping list"
msgid ""
"By default the amount to be added to the shopping list is \"needed amount - "
"stock amount - shopping list amount\" - when this is enabled, it is only "
"checked against the stock amount, not against what is already on the "
"shopping list"
msgstr ""
msgid "Picture"
@@ -1014,7 +1036,9 @@ msgstr ""
msgid "Share/Integrate calendar (iCal)"
msgstr ""
msgid "Use the following (public) URL to share or integrate the calendar in iCal format"
msgid ""
"Use the following (public) URL to share or integrate the calendar in iCal "
"format"
msgstr ""
msgid "Allow partial units in stock"
@@ -1023,13 +1047,18 @@ msgstr ""
msgid "Enable tare weight handling"
msgstr ""
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"
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 ""
msgid "Tare weight"
msgstr ""
msgid "Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated"
msgid ""
"Tare weight handling enabled - please weigh the whole container, the amount "
"to be posted will be automatically calculcated"
msgstr ""
msgid "You have to select a location"
@@ -1080,7 +1109,9 @@ msgstr ""
msgid "Type a new product name or barcode and hit TAB to start a workflow"
msgstr ""
msgid "This will be used as the default setting when adding this product as a recipe ingredient"
msgid ""
"This will be used as the default setting when adding this product as a "
"recipe ingredient"
msgstr ""
msgid "Add item"
@@ -1187,3 +1218,26 @@ msgstr ""
msgid "Edit userfield"
msgstr ""
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr ""
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,16 @@
#
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/ta\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:43+0000\n"
"Language-Team: Tamil (https://www.transifex.com/grocy/teams/93189/ta/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:18+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:18+00:00\n"
"Language: ta\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: grocy/userfield_types\n"
msgid "text-single-line"

View File

@@ -1,15 +1,19 @@
# Translators:
# Bernd Bestel <bernd@berrnd.de>, 2019
#
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/tr\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: Turkish (https://www.transifex.com/grocy/teams/93189/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:18+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:18+00:00\n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Domain: grocy/chore_types\n"
msgid "manually"

View File

@@ -35,40 +35,34 @@ msgid "Fridge"
msgstr "Buzdolabı"
msgid "Piece"
msgstr "Tane"
msgid "Pieces"
msgstr "Tane"
msgid_plural "Pieces"
msgstr[0] ""
msgstr[1] ""
msgid "Pack"
msgstr "Paket"
msgid "Packs"
msgstr "Paket"
msgid_plural "Packs"
msgstr[0] ""
msgstr[1] ""
msgid "Glass"
msgstr "Bardak"
msgid "Glasses"
msgstr "Bardak"
msgid_plural "Glasses"
msgstr[0] ""
msgstr[1] ""
msgid "Tin"
msgstr "Teneke"
msgid "Tins"
msgstr "Teneke"
msgid_plural "Tins"
msgstr[0] ""
msgstr[1] ""
msgid "Can"
msgstr "Konserve"
msgid "Cans"
msgstr "Konserve"
msgid_plural "Cans"
msgstr[0] ""
msgstr[1] ""
msgid "Bunch"
msgstr "Demet"
msgid "Bunches"
msgstr "Demet"
msgid_plural "Bunches"
msgstr[0] ""
msgstr[1] ""
msgid "Gummy bears"
msgstr "Jelibon ayı"
@@ -176,10 +170,9 @@ msgid "Demo User"
msgstr "Demo Kullanıcısı"
msgid "Gram"
msgstr "Gram"
msgid "Grams"
msgstr "Gram"
msgid_plural "Grams"
msgstr[0] ""
msgstr[1] ""
msgid "Flour"
msgstr "Un"

View File

@@ -20,18 +20,34 @@ msgstr ""
msgid "Stock overview"
msgstr "Stoklara genel bakış"
msgid "%s products expiring within the next %s days"
msgstr "%s ürünün son kullanma tarihi %s gün içerisinde dolacak"
msgid "%s product expires"
msgid_plural "%s products expiring"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are already expired"
msgstr "%s ürünün son kullanma tarihi geçti"
msgid "within the next day"
msgid_plural "within the next %s days"
msgstr[0] ""
msgstr[1] ""
msgid "%s products are below defined min. stock amount"
msgstr "%s ürün belirlenen minimum stok miktarının altında"
msgid "%s product is already expired"
msgid_plural "%s products are already expired"
msgstr[0] ""
msgstr[1] ""
msgid "%s product is below defined min. stock amount"
msgid_plural "%s products are below defined min. stock amount"
msgstr[0] ""
msgstr[1] ""
msgid "Product"
msgstr "Ürün"
msgid "%s Product"
msgid_plural "%s Products"
msgstr[0] ""
msgstr[1] ""
msgid "Amount"
msgstr "Miktar"
@@ -65,9 +81,6 @@ msgstr "Ev işleri takibi"
msgid "Battery tracking"
msgstr "Pil takibi"
msgid "Products"
msgstr "Ürünler"
msgid "Locations"
msgstr "Lokasyonlar"
@@ -363,18 +376,6 @@ msgstr "grocy hakkında"
msgid "Close"
msgstr "Kapat"
msgid "%s batteries are due to be charged within the next %s days"
msgstr "%s pilin önümüzdeki %s gün içerisinde şarj olması bekleniyor"
msgid "%s batteries are overdue to be charged"
msgstr "%s pilin şarj etme zamanı geçti"
msgid "%s chores are due to be done within the next %s days"
msgstr "%s ev işi önümüzdeki %s gün içerisinde yapılacak"
msgid "%s chores are overdue to be done"
msgstr "%s ev işinin yapılma zamanı geçti"
msgid "Released on"
msgstr "Yayınlanma tarihi"
@@ -489,15 +490,15 @@ msgstr "Gereklilikler sağlandı"
msgid "Put missing products on shopping list"
msgstr "Eksik malzemeleri alışveriş listesine ekle"
msgid "Not enough in stock, %s ingredients missing"
msgstr "Stokta yeterince %s malzemesi yok"
msgid "Enough in stock"
msgstr "Stokta yeteri kadar var"
msgid ""
"Not enough in stock, %s ingredient missing but already on the shopping list"
msgid_plural ""
"Not enough in stock, %s ingredients missing but already on the shopping list"
msgstr "Stokta %s yok ancak alışveriş listesine eklenmiş"
msgstr[0] ""
msgstr[1] ""
msgid "Expand to fullscreen"
msgstr "Tam ekran yap"
@@ -605,46 +606,37 @@ msgstr "%s için her miktar birimini satın al"
msgid "The price cannot be lower than %s"
msgstr "Fiyat %s'den az olamaz"
msgid "%s product expires within the next %s days"
msgstr "%s ürünün son kullanma tarihi %s gün içerisinde dolacak"
msgid "%s product is already expired"
msgstr "%s ürünün son kullanma tarihi geçti"
msgid "%s product is below defined min. stock amount"
msgstr "%s ürün belirlenen min. stok miktarının altında"
msgid "Unit"
msgstr "Birim"
msgid "Units"
msgstr "Birimler"
msgid "%s Unit"
msgid_plural "%s Units"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is due to be done within the next %s days"
msgstr "%s ev işi önümüzdeki %s gün içerisinde yapılacak"
msgid "%s chore is due to be done"
msgid_plural "%s chores are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s chore is overdue to be done"
msgstr "%s ev işinin yapılma zamanı geçti"
msgid_plural "%s chores are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is due to be charged within the next %s days"
msgstr "%s pilin önümüzdeki %s gün içerisinde şarj olması bekleniyor"
msgid "%s battery is due to be charged"
msgid_plural "%s batteries are due to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "%s battery is overdue to be charged"
msgstr "%s pilin şarj etme zamanı geçti"
msgid ""
"%s unit was automatically added and will apply in addition to the amount "
"entered here"
msgstr ""
"%s birim otomatik olarak eklendi ve buraya girilen miktar haricinde "
"uygulanacak"
msgid_plural "%s batteries are overdue to be charged"
msgstr[0] ""
msgstr[1] ""
msgid "in singular form"
msgstr "tekil formda"
msgid "in plural form"
msgstr "çoğul formda"
msgid "Never expires"
msgstr "Son kullanma tarihi asla dolmuyor"
@@ -725,17 +717,15 @@ msgstr "Görevi düzenle"
msgid "Are you sure to delete task \"%s\"?"
msgstr "Görev \"%s\"'i silmek istediğine emin misin?"
msgid "%s task is due to be done within the next %s days"
msgstr "%s görev önümüzdeki %s gün içerisinde yapılacak"
msgid "%s tasks are due to be done within the next %s days"
msgstr "%s görev önümüzdeki %s gün içerisinde yapılacak"
msgid "%s task is due to be done"
msgid_plural "%s tasks are due to be done"
msgstr[0] ""
msgstr[1] ""
msgid "%s task is overdue to be done"
msgstr "%s görevin yapılma zamanı geçti"
msgid "%s tasks are overdue to be done"
msgstr "%s görevin yapılma zamanı geçti"
msgid_plural "%s tasks are overdue to be done"
msgstr[0] ""
msgstr[1] ""
msgid "Edit task category"
msgstr "Görev kategorisini düzenle"
@@ -969,8 +959,8 @@ msgstr ""
"Bu listedeki ilk madde ön tanımlı olarak \"Süresi ilk dolan ilk, ondan sonra"
" ilk giren ilk çıkar\" mantığıyla seçilecektir"
msgid "Mark %s %s of %s as open"
msgstr "%s'ün %s/%s'sini açık olarak işaretle"
msgid "Mark %s of %s as open"
msgstr ""
msgid ""
"When a product was marked as opened, the best before date will be replaced "
@@ -1270,3 +1260,26 @@ msgstr ""
msgid "Edit userfield"
msgstr ""
msgid "Plural forms"
msgstr ""
msgid "One plural form per line, the current language requires"
msgstr ""
msgid "Plural count"
msgstr ""
msgid "Plural rule"
msgstr ""
msgid "in plural form"
msgstr "çoğul formda"
msgid "Not enough in stock, %s ingredient missing"
msgid_plural "Not enough in stock, %s ingredients missing"
msgstr[0] ""
msgstr[1] ""
msgid "Consume %s of %s"
msgstr ""

View File

@@ -1,15 +1,16 @@
#
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/tr\n"
"POT-Creation-Date: 2019-05-01T17:59:17+00:00\n"
"PO-Revision-Date: 2019-05-01 17:43+0000\n"
"Language-Team: Turkish (https://www.transifex.com/grocy/teams/93189/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-01T17:59:18+00:00\n"
"PO-Revision-Date: 2019-05-01T17:59:18+00:00\n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Domain: grocy/userfield_types\n"
msgid "text-single-line"

View File

@@ -11,13 +11,13 @@ if ($db->quantity_units()->count() === 0)
{
// Create 2 default quantity units
$newRow = $db->quantity_units()->createRow(array(
'name' => $localizationService->Localize('Piece'),
'name_plural' => $localizationService->Localize('Pieces')
'name' => $localizationService->__n(1, 'Piece', 'Pieces'),
'name_plural' => $localizationService->__n(2, 'Piece', 'Pieces')
));
$newRow->save();
$newRow = $db->quantity_units()->createRow(array(
'name' => $localizationService->Localize('Pack'),
'name_plural' => $localizationService->Localize('Packs')
'name' => $localizationService->__n(1, 'Pack', 'Packs'),
'name_plural' => $localizationService->__n(2, 'Pack', 'Packs')
));
$newRow->save();
}
@@ -26,7 +26,7 @@ if ($db->locations()->count() === 0)
{
// Create a default location
$newRow = $db->locations()->createRow(array(
'name' => $localizationService->Localize('Fridge')
'name' => $localizationService->__t('Fridge')
));
$newRow->save();
}

View File

@@ -9,5 +9,5 @@ $db = $this->DatabaseService->GetDbConnection();
$defaultShoppingList = $this->Database->shopping_lists()->where('id = 1')->fetch();
$defaultShoppingList->update(array(
'name' => $localizationService->Localize('Shopping list')
'name' => $localizationService->__t('Shopping list')
));

2
migrations/0067.sql Normal file
View File

@@ -0,0 +1,2 @@
ALTER TABLE quantity_units
ADD plural_forms TEXT;

View File

@@ -1,12 +1,23 @@
//TODO: Missing translations should be automatically added to the source POT file
Grocy.Translator = new Translator(Grocy.JsGettextTranslatorStrings);
Grocy.Translator = new Translator(Grocy.GettextPo);
__t = function(text, ...placeholderValues)
{
if (Grocy.Mode === "dev")
{
var text2 = text;
Grocy.Api.Post('system/log-missing-localization', { "text": text2 });
}
return Grocy.Translator.__(text, ...placeholderValues)
}
__n = function(number, singularForm, pluralForm)
{
return Grocy.Translator.n__(singularForm, pluralForm, number)
if (Grocy.Mode === "dev")
{
var singularForm2 = singularForm;
Grocy.Api.Post('system/log-missing-localization', { "text": singularForm2 });
}
return Grocy.Translator.n__(singularForm, pluralForm, number, number)
}
U = function(relativePath)

View File

@@ -154,8 +154,8 @@ function RefreshStatistics()
}
});
$("#info-due-batteries").text(__n(dueCount, __t('%s battery is due to be charged within the next %s days', dueCount, nextXDays), __t('%s batteries are due to be charged within the next %s days', dueCount, nextXDays)));
$("#info-overdue-batteries").text(__n(overdueCount, __t('%s battery is overdue to be charged', overdueCount), __t('%s batteries are overdue to be charged', overdueCount)));
$("#info-due-batteries").text(__n(dueCount, '%s battery is due to be charged', '%s batteries are due to be charged') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-batteries").text(__n(overdueCount, '%s battery is overdue to be charged', '%s batteries are overdue to be charged'));
},
function(xhr)
{

View File

@@ -154,8 +154,8 @@ function RefreshStatistics()
}
});
$("#info-due-chores").text(__n(dueCount, __t('%s chore is due to be done within the next %s days', dueCount, nextXDays), __t('%s chores are due to be done within the next %s days', dueCount, nextXDays)));
$("#info-overdue-chores").text(__n(overdueCount, __t('%s chore is overdue to be done', overdueCount), __t('%s chores are overdue to be done', overdueCount)));
$("#info-due-chores").text(__n(dueCount, '%s chore is due to be done', '%s chores are due to be done') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-chores").text(__n(overdueCount, '%s chore is overdue to be done', '%s chores are overdue to be done'));
},
function(xhr)
{

View File

@@ -265,7 +265,7 @@ function RefreshStatistics()
result.forEach(element => {
amountSum += parseInt(element.amount);
});
$("#info-current-stock").text(result.length + " " + __n(result.length, __t('Product'), __t('Products')) + ", " + amountSum.toString() + " " + __n(amountSum, __t('Unit'), __t('Units')));
$("#info-current-stock").text(__n(result.length, '%s Product', '%s Products') + ", " + __n(amountSum, '%s Unit', '%s Units'));
},
function(xhr)
{
@@ -277,9 +277,9 @@ function RefreshStatistics()
Grocy.Api.Get('stock/volatile?expiring_days=' + nextXDays,
function(result)
{
$("#info-expiring-products").text(__n(result.expiring_products.length, __t('%s product expires within the next %s days', result.expiring_products.length, nextXDays), __t('%s products expiring within the next %s days', result.expiring_products.length, nextXDays)));
$("#info-expired-products").text(__n(result.expired_products.length, __t('%s product is already expired', result.expired_products.length), __t('%s products are already expired', result.expired_products.length)));
$("#info-missing-products").text(__n(result.missing_products.length, __t('%s product is below defined min. stock amount', result.missing_products.length), __t('%s products are below defined min. stock amount', result.missing_products.length)));
$("#info-expiring-products").text(__n(result.expiring_products.length, '%s product expires', '%s products expiring') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-expired-products").text(__n(result.expired_products.length, '%s product is already expired', '%s products are already expired'));
$("#info-missing-products").text(__n(result.missing_products.length, '%s product is below defined min. stock amount', '%s products are below defined min. stock amount'));
},
function(xhr)
{

View File

@@ -181,8 +181,8 @@ function RefreshStatistics()
}
});
$("#info-due-tasks").text(__n(dueCount, __t('%s task is due to be done within the next %s days', dueCount, nextXDays), __t('%s tasks are due to be done within the next %s days', dueCount, nextXDays)));
$("#info-overdue-tasks").text(__n(overdueCount, __t('%s task is overdue to be done', overdueCount), __t('%s tasks are overdue to be done', overdueCount)));
$("#info-due-tasks").text(__n(dueCount, '%s task is due to be done', '%s tasks are due to be done') + ' ' + __n(nextXDays, 'within the next day', 'within the next %s days'));
$("#info-overdue-tasks").text(__n(overdueCount, '%s task is overdue to be done', '%s tasks are overdue to be done'));
},
function(xhr)
{

View File

@@ -26,7 +26,7 @@ class CalendarService extends BaseService
public function GetEvents()
{
$products = $this->Database->products();
$titlePrefix = $this->LocalizationService-Translator->__t('Product expires') . ': ';
$titlePrefix = $this->LocalizationService->__t('Product expires') . ': ';
$stockEvents = array();
foreach($this->StockService->GetCurrentStock() as $currentStockEntry)
{
@@ -40,7 +40,7 @@ class CalendarService extends BaseService
}
}
$titlePrefix = $this->LocalizationService-Translator->__t('Task due') . ': ';
$titlePrefix = $this->LocalizationService->__t('Task due') . ': ';
$taskEvents = array();
foreach($this->TasksService->GetCurrent() as $currentTaskEntry)
{
@@ -52,7 +52,7 @@ class CalendarService extends BaseService
}
$chores = $this->Database->chores();
$titlePrefix = $this->LocalizationService-Translator->__t('Chore due') . ': ';
$titlePrefix = $this->LocalizationService->__t('Chore due') . ': ';
$choreEvents = array();
foreach($this->ChoresService->GetCurrent() as $currentChoreEntry)
{
@@ -64,7 +64,7 @@ class CalendarService extends BaseService
}
$batteries = $this->Database->batteries();
$titlePrefix = $this->LocalizationService-Translator->__t('Battery charge cycle due') . ': ';
$titlePrefix = $this->LocalizationService->__t('Battery charge cycle due') . ': ';
$batteryEvents = array();
foreach($this->BatteriesService->GetCurrent() as $currentBatteryEntry)
{

View File

@@ -6,10 +6,16 @@ use \Grocy\Services\LocalizationService;
class DemoDataGeneratorService extends BaseService
{
public function __construct()
{
parent::__construct();
$this->LocalizationService = new LocalizationService(GROCY_CULTURE);
}
protected $LocalizationService;
public function PopulateDemoData()
{
$localizationService = new LocalizationService(GROCY_CULTURE);
$rowCount = $this->DatabaseService->ExecuteDbQuery('SELECT COUNT(*) FROM migrations WHERE migration = -1')->fetchColumn();
if (intval($rowCount) === 0)
{
@@ -17,74 +23,74 @@ class DemoDataGeneratorService extends BaseService
$loremIpsumWithHtmlFormattings = "<h1>Lorem ipsum</h1><p>Lorem ipsum <b>dolor sit</b> amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur <span style=\"background-color: rgb(255, 255, 0);\">sadipscing elitr</span>, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p><ul><li>At vero eos et accusam et justo duo dolores et ea rebum.</li><li>Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</li></ul><h1>Lorem ipsum</h1><p>Lorem ipsum <b>dolor sit</b> amet, consetetur \r\nsadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et \r\ndolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et\r\n justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea \r\ntakimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit \r\namet, consetetur <span style=\"background-color: rgb(255, 255, 0);\">sadipscing elitr</span>,\r\n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna \r\naliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo \r\ndolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus \r\nest Lorem ipsum dolor sit amet.</p>";
$sql = "
UPDATE users SET username = '{$localizationService->LocalizeForSqlString('Demo User')}' WHERE id = 1;
INSERT INTO users (username, password) VALUES ('{$localizationService->LocalizeForSqlString('Demo User')} 2', 'x');
INSERT INTO users (username, password) VALUES ('{$localizationService->LocalizeForSqlString('Demo User')} 3', 'x');
INSERT INTO users (username, password) VALUES ('{$localizationService->LocalizeForSqlString('Demo User')} 4', 'x');
UPDATE users SET username = '{$this->__t_sql('Demo User')}' WHERE id = 1;
INSERT INTO users (username, password) VALUES ('{$this->__t_sql('Demo User')} 2', 'x');
INSERT INTO users (username, password) VALUES ('{$this->__t_sql('Demo User')} 3', 'x');
INSERT INTO users (username, password) VALUES ('{$this->__t_sql('Demo User')} 4', 'x');
INSERT INTO locations (name) VALUES ('{$localizationService->LocalizeForSqlString('Pantry')}'); --3
INSERT INTO locations (name) VALUES ('{$localizationService->LocalizeForSqlString('Candy cupboard')}'); --4
INSERT INTO locations (name) VALUES ('{$localizationService->LocalizeForSqlString('Tinned food cupboard')}'); --5
INSERT INTO locations (name) VALUES ('{$this->__t_sql('Pantry')}'); --3
INSERT INTO locations (name) VALUES ('{$this->__t_sql('Candy cupboard')}'); --4
INSERT INTO locations (name) VALUES ('{$this->__t_sql('Tinned food cupboard')}'); --5
INSERT INTO quantity_units (name, name_plural) VALUES ('{$localizationService->LocalizeForSqlString('Glass')}', '{$localizationService->LocalizeForSqlString('Glasses')}'); --4
INSERT INTO quantity_units (name, name_plural) VALUES ('{$localizationService->LocalizeForSqlString('Tin')}', '{$localizationService->LocalizeForSqlString('Tins')}'); --5
INSERT INTO quantity_units (name, name_plural) VALUES ('{$localizationService->LocalizeForSqlString('Can')}', '{$localizationService->LocalizeForSqlString('Cans')}'); --6
INSERT INTO quantity_units (name, name_plural) VALUES ('{$localizationService->LocalizeForSqlString('Bunch')}', '{$localizationService->LocalizeForSqlString('Bunches')}'); --7
INSERT INTO quantity_units (name, name_plural) VALUES ('{$localizationService->LocalizeForSqlString('Gram')}', '{$localizationService->LocalizeForSqlString('Grams')}'); --8
INSERT INTO quantity_units (name, name_plural) VALUES ('{$localizationService->LocalizeForSqlString('Liter')}', '{$localizationService->LocalizeForSqlString('Liters')}'); --9
INSERT INTO quantity_units (name, name_plural) VALUES ('{$localizationService->LocalizeForSqlString('Bottle')}', '{$localizationService->LocalizeForSqlString('Bottles')}'); --10
INSERT INTO quantity_units (name, name_plural) VALUES ('{$localizationService->LocalizeForSqlString('Milliliter')}', '{$localizationService->LocalizeForSqlString('Milliliters')}'); --11
INSERT INTO quantity_units (name, name_plural) VALUES ('{$this->__n_sql(1, 'Glass', 'Glasses')}', '{$this->__n_sql(2, 'Glass', 'Glasses')}'); --4
INSERT INTO quantity_units (name, name_plural) VALUES ('{$this->__n_sql(1, 'Tin', 'Tins')}', '{$this->__n_sql(2, 'Tin', 'Tins')}'); --5
INSERT INTO quantity_units (name, name_plural) VALUES ('{$this->__n_sql(1, 'Can', 'Cans')}', '{$this->__n_sql(2, 'Can', 'Cans')}'); --6
INSERT INTO quantity_units (name, name_plural) VALUES ('{$this->__n_sql(1, 'Bunch', 'Bunches')}', '{$this->__n_sql(2, 'Bunch', 'Bunches')}'); --7
INSERT INTO quantity_units (name, name_plural) VALUES ('{$this->__n_sql(1, 'Gram', 'Grams')}', '{$this->__n_sql(2, 'Gram', 'Grams')}'); --8
INSERT INTO quantity_units (name, name_plural) VALUES ('{$this->__n_sql(1, 'Liter', 'Liters')}', '{$this->__n_sql(2, 'Liter', 'Liters')}'); --9
INSERT INTO quantity_units (name, name_plural) VALUES ('{$this->__n_sql(1, 'Bottle', 'Bottles')}', '{$this->__n_sql(2, 'Bottle', 'Bottles')}'); --10
INSERT INTO quantity_units (name, name_plural) VALUES ('{$this->__n_sql(1, 'Milliliter', 'Milliliters')}', '{$this->__n_sql(2, 'Milliliter', 'Milliliters')}'); --11
INSERT INTO product_groups(name) VALUES ('01 {$localizationService->LocalizeForSqlString('Sweets')}'); --1
INSERT INTO product_groups(name) VALUES ('02 {$localizationService->LocalizeForSqlString('Bakery products')}'); --2
INSERT INTO product_groups(name) VALUES ('03 {$localizationService->LocalizeForSqlString('Tinned food')}'); --3
INSERT INTO product_groups(name) VALUES ('04 {$localizationService->LocalizeForSqlString('Butchery products')}'); --4
INSERT INTO product_groups(name) VALUES ('05 {$localizationService->LocalizeForSqlString('Vegetables/Fruits')}'); --5
INSERT INTO product_groups(name) VALUES ('06 {$localizationService->LocalizeForSqlString('Refrigerated products')}'); --6
INSERT INTO product_groups(name) VALUES ('01 {$this->__t_sql('Sweets')}'); --1
INSERT INTO product_groups(name) VALUES ('02 {$this->__t_sql('Bakery products')}'); --2
INSERT INTO product_groups(name) VALUES ('03 {$this->__t_sql('Tinned food')}'); --3
INSERT INTO product_groups(name) VALUES ('04 {$this->__t_sql('Butchery products')}'); --4
INSERT INTO product_groups(name) VALUES ('05 {$this->__t_sql('Vegetables/Fruits')}'); --5
INSERT INTO product_groups(name) VALUES ('06 {$this->__t_sql('Refrigerated products')}'); --6
DELETE FROM sqlite_sequence WHERE name = 'products'; --Just to keep IDs in order as mentioned here...
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, min_stock_amount, product_group_id, picture_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Cookies')}', 4, 3, 3, 1, 8, 1, 'cookies.jpg'); --1
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, min_stock_amount, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Chocolate')}', 4, 3, 3, 1, 8, 1); --2
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, min_stock_amount, product_group_id, picture_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Gummy bears')}', 4, 3, 3, 1, 8, 1, 'gummybears.jpg'); --3
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, min_stock_amount, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Crisps')}', 4, 3, 3, 1, 10, 1); --4
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Eggs')}', 2, 3, 2, 10, 5); --5
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Noodles')}', 3, 3, 3, 1, 6); --6
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Pickles')}', 5, 4, 4, 1, 3); --7
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Gulash soup')}', 5, 5, 5, 1, 3); --8
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Yogurt')}', 2, 6, 6, 1, 6); --9
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Cheese')}', 2, 3, 3, 1, 6); --10
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, description) VALUES ('{$localizationService->LocalizeForSqlString('Cold cuts')}', 2, 3, 3, 1, 6, '{$loremIpsum}'); --11
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, picture_file_name, default_best_before_days) VALUES ('{$localizationService->LocalizeForSqlString('Paprika')}', 2, 2, 2, 1, 5, 'paprika.jpg', 7); --12
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, picture_file_name, default_best_before_days) VALUES ('{$localizationService->LocalizeForSqlString('Cucumber')}', 2, 2, 2, 1, 5, 'cucumber.jpg', 7); --13
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, default_best_before_days) VALUES ('{$localizationService->LocalizeForSqlString('Radish')}', 2, 7, 7, 1, 5, 7); --14
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, picture_file_name, default_best_before_days) VALUES ('{$localizationService->LocalizeForSqlString('Tomato')}', 2, 2, 2, 1, 5, 'tomato.jpg', 7); --15
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Pizza dough')}', 2, 3, 3, 1, 6); --16
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Sieved tomatoes')}', 5, 5, 5, 1, 3); --17
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Salami')}', 2, 3, 3, 1, 6); --18
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Toast')}', 3, 5, 5, 1, 2); --19
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Minced meat')}', 2, 3, 3, 1, 4); --20
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, enable_tare_weight_handling, tare_weight) VALUES ('{$localizationService->LocalizeForSqlString('Flour')}', 3, 8, 8, 1, 3, 1, 500); --21
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Sugar')}', 3, 3, 3, 1, 3); --22
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$localizationService->LocalizeForSqlString('Milk')}', 2, 10, 10, 1, 6); --23
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, min_stock_amount, product_group_id, picture_file_name) VALUES ('{$this->__t_sql('Cookies')}', 4, 3, 3, 1, 8, 1, 'cookies.jpg'); --1
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, min_stock_amount, product_group_id) VALUES ('{$this->__t_sql('Chocolate')}', 4, 3, 3, 1, 8, 1); --2
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, min_stock_amount, product_group_id, picture_file_name) VALUES ('{$this->__t_sql('Gummy bears')}', 4, 3, 3, 1, 8, 1, 'gummybears.jpg'); --3
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, min_stock_amount, product_group_id) VALUES ('{$this->__t_sql('Crisps')}', 4, 3, 3, 1, 10, 1); --4
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Eggs')}', 2, 3, 2, 10, 5); --5
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Noodles')}', 3, 3, 3, 1, 6); --6
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Pickles')}', 5, 4, 4, 1, 3); --7
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Gulash soup')}', 5, 5, 5, 1, 3); --8
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Yogurt')}', 2, 6, 6, 1, 6); --9
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Cheese')}', 2, 3, 3, 1, 6); --10
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, description) VALUES ('{$this->__t_sql('Cold cuts')}', 2, 3, 3, 1, 6, '{$loremIpsum}'); --11
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, picture_file_name, default_best_before_days) VALUES ('{$this->__t_sql('Paprika')}', 2, 2, 2, 1, 5, 'paprika.jpg', 7); --12
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, picture_file_name, default_best_before_days) VALUES ('{$this->__t_sql('Cucumber')}', 2, 2, 2, 1, 5, 'cucumber.jpg', 7); --13
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, default_best_before_days) VALUES ('{$this->__t_sql('Radish')}', 2, 7, 7, 1, 5, 7); --14
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, picture_file_name, default_best_before_days) VALUES ('{$this->__t_sql('Tomato')}', 2, 2, 2, 1, 5, 'tomato.jpg', 7); --15
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Pizza dough')}', 2, 3, 3, 1, 6); --16
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Sieved tomatoes')}', 5, 5, 5, 1, 3); --17
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Salami')}', 2, 3, 3, 1, 6); --18
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Toast')}', 3, 5, 5, 1, 2); --19
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Minced meat')}', 2, 3, 3, 1, 4); --20
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id, enable_tare_weight_handling, tare_weight) VALUES ('{$this->__t_sql('Flour')}', 3, 8, 8, 1, 3, 1, 500); --21
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Sugar')}', 3, 3, 3, 1, 3); --22
INSERT INTO products (name, location_id, qu_id_purchase, qu_id_stock, qu_factor_purchase_to_stock, product_group_id) VALUES ('{$this->__t_sql('Milk')}', 2, 10, 10, 1, 6); --23
INSERT INTO shopping_list (note, amount) VALUES ('{$localizationService->LocalizeForSqlString('Some good snacks')}', 1);
INSERT INTO shopping_list (note, amount) VALUES ('{$this->__t_sql('Some good snacks')}', 1);
INSERT INTO shopping_list (product_id, amount) VALUES (20, 1);
INSERT INTO shopping_list (product_id, amount) VALUES (17, 1);
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Pizza')}', '{$loremIpsumWithHtmlFormattings}', 'pizza.jpg'); --1
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Spaghetti bolognese')}', '{$loremIpsumWithHtmlFormattings}', 'spaghetti.jpg'); --2
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Sandwiches')}', '{$loremIpsumWithHtmlFormattings}', 'sandwiches.jpg'); --3
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Pancakes')}', '{$loremIpsumWithHtmlFormattings}', 'pancakes.jpg'); --4
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Chocolate sauce')}', '{$loremIpsumWithHtmlFormattings}', 'chocolate_sauce.jpg'); --5
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Pancakes')} / {$localizationService->LocalizeForSqlString('Chocolate sauce')}', '{$loremIpsumWithHtmlFormattings}', 'pancakes_chocolate_sauce.jpg'); --6
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$this->__t_sql('Pizza')}', '{$loremIpsumWithHtmlFormattings}', 'pizza.jpg'); --1
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$this->__t_sql('Spaghetti bolognese')}', '{$loremIpsumWithHtmlFormattings}', 'spaghetti.jpg'); --2
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$this->__t_sql('Sandwiches')}', '{$loremIpsumWithHtmlFormattings}', 'sandwiches.jpg'); --3
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$this->__t_sql('Pancakes')}', '{$loremIpsumWithHtmlFormattings}', 'pancakes.jpg'); --4
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$this->__t_sql('Chocolate sauce')}', '{$loremIpsumWithHtmlFormattings}', 'chocolate_sauce.jpg'); --5
INSERT INTO recipes (name, description, picture_file_name) VALUES ('{$this->__t_sql('Pancakes')} / {$this->__t_sql('Chocolate sauce')}', '{$loremIpsumWithHtmlFormattings}', 'pancakes_chocolate_sauce.jpg'); --6
INSERT INTO recipes_pos (recipe_id, product_id, amount, ingredient_group) VALUES (1, 16, 1, '{$localizationService->LocalizeForSqlString('Bottom')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount, ingredient_group) VALUES (1, 17, 1, '{$localizationService->LocalizeForSqlString('Topping')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount, note, ingredient_group) VALUES (1, 18, 1, '{$localizationService->LocalizeForSqlString('This is the note content of the recipe ingredient')}', '{$localizationService->LocalizeForSqlString('Topping')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount, ingredient_group) VALUES (1, 10, 1, '{$localizationService->LocalizeForSqlString('Bottom')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount, ingredient_group) VALUES (1, 16, 1, '{$this->__t_sql('Bottom')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount, ingredient_group) VALUES (1, 17, 1, '{$this->__t_sql('Topping')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount, note, ingredient_group) VALUES (1, 18, 1, '{$this->__t_sql('This is the note content of the recipe ingredient')}', '{$this->__t_sql('Topping')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount, ingredient_group) VALUES (1, 10, 1, '{$this->__t_sql('Bottom')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount) VALUES (2, 6, 1);
INSERT INTO recipes_pos (recipe_id, product_id, amount) VALUES (2, 10, 1);
INSERT INTO recipes_pos (recipe_id, product_id, amount, note) VALUES (2, 17, 1, '{$localizationService->LocalizeForSqlString('This is the note content of the recipe ingredient')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount, note) VALUES (2, 17, 1, '{$this->__t_sql('This is the note content of the recipe ingredient')}');
INSERT INTO recipes_pos (recipe_id, product_id, amount) VALUES (2, 20, 1);
INSERT INTO recipes_pos (recipe_id, product_id, amount) VALUES (3, 10, 1);
INSERT INTO recipes_pos (recipe_id, product_id, amount) VALUES (3, 11, 1);
@@ -97,31 +103,31 @@ class DemoDataGeneratorService extends BaseService
INSERt INTO recipes_nestings(recipe_id, includes_recipe_id) VALUES (6, 4);
INSERt INTO recipes_nestings(recipe_id, includes_recipe_id) VALUES (6, 5);
INSERT INTO chores (name, period_type, period_days) VALUES ('{$localizationService->LocalizeForSqlString('Changed towels in the bathroom')}', 'manually', 5); --1
INSERT INTO chores (name, period_type, period_days) VALUES ('{$localizationService->LocalizeForSqlString('Cleaned the kitchen floor')}', 'dynamic-regular', 7); --2
INSERT INTO chores (name, period_type, period_days) VALUES ('{$localizationService->LocalizeForSqlString('Lawn mowed in the garden')}', 'dynamic-regular', 21); --3
INSERT INTO chores (name, period_type, period_days) VALUES ('{$localizationService->LocalizeForSqlString('The thing which happens on the 5th of every month')}', 'monthly', 5); --4
INSERT INTO chores (name, period_type) VALUES ('{$localizationService->LocalizeForSqlString('The thing which happens daily')}', 'daily'); --5
INSERT INTO chores (name, period_type, period_config) VALUES ('{$localizationService->LocalizeForSqlString('The thing which happens on Mondays and Wednesdays')}', 'weekly', 'monday,wednesday'); --6
INSERT INTO chores (name, period_type, period_days) VALUES ('{$this->__t_sql('Changed towels in the bathroom')}', 'manually', 5); --1
INSERT INTO chores (name, period_type, period_days) VALUES ('{$this->__t_sql('Cleaned the kitchen floor')}', 'dynamic-regular', 7); --2
INSERT INTO chores (name, period_type, period_days) VALUES ('{$this->__t_sql('Lawn mowed in the garden')}', 'dynamic-regular', 21); --3
INSERT INTO chores (name, period_type, period_days) VALUES ('{$this->__t_sql('The thing which happens on the 5th of every month')}', 'monthly', 5); --4
INSERT INTO chores (name, period_type) VALUES ('{$this->__t_sql('The thing which happens daily')}', 'daily'); --5
INSERT INTO chores (name, period_type, period_config) VALUES ('{$this->__t_sql('The thing which happens on Mondays and Wednesdays')}', 'weekly', 'monday,wednesday'); --6
INSERT INTO batteries (name, description, used_in) VALUES ('{$localizationService->LocalizeForSqlString('Battery')}1', '{$localizationService->LocalizeForSqlString('Warranty ends')} 2023', '{$localizationService->LocalizeForSqlString('TV remote control')}'); --1
INSERT INTO batteries (name, description, used_in) VALUES ('{$localizationService->LocalizeForSqlString('Battery')}2', '{$localizationService->LocalizeForSqlString('Warranty ends')} 2022', '{$localizationService->LocalizeForSqlString('Alarm clock')}'); --2
INSERT INTO batteries (name, description, used_in, charge_interval_days) VALUES ('{$localizationService->LocalizeForSqlString('Battery')}3', '{$localizationService->LocalizeForSqlString('Warranty ends')} 2022', '{$localizationService->LocalizeForSqlString('Heat remote control')}', 60); --3
INSERT INTO batteries (name, description, used_in, charge_interval_days) VALUES ('{$localizationService->LocalizeForSqlString('Battery')}4', '{$localizationService->LocalizeForSqlString('Warranty ends')} 2028', '{$localizationService->LocalizeForSqlString('Heat remote control')}', 60); --4
INSERT INTO batteries (name, description, used_in) VALUES ('{$this->__t_sql('Battery')}1', '{$this->__t_sql('Warranty ends')} 2023', '{$this->__t_sql('TV remote control')}'); --1
INSERT INTO batteries (name, description, used_in) VALUES ('{$this->__t_sql('Battery')}2', '{$this->__t_sql('Warranty ends')} 2022', '{$this->__t_sql('Alarm clock')}'); --2
INSERT INTO batteries (name, description, used_in, charge_interval_days) VALUES ('{$this->__t_sql('Battery')}3', '{$this->__t_sql('Warranty ends')} 2022', '{$this->__t_sql('Heat remote control')}', 60); --3
INSERT INTO batteries (name, description, used_in, charge_interval_days) VALUES ('{$this->__t_sql('Battery')}4', '{$this->__t_sql('Warranty ends')} 2028', '{$this->__t_sql('Heat remote control')}', 60); --4
INSERT INTO task_categories (name) VALUES ('{$localizationService->LocalizeForSqlString('Home')}'); --1
INSERT INTO task_categories (name) VALUES ('{$localizationService->LocalizeForSqlString('Life')}'); --2
INSERT INTO task_categories (name) VALUES ('{$localizationService->LocalizeForSqlString('Projects')}'); --3
INSERT INTO task_categories (name) VALUES ('{$this->__t_sql('Home')}'); --1
INSERT INTO task_categories (name) VALUES ('{$this->__t_sql('Life')}'); --2
INSERT INTO task_categories (name) VALUES ('{$this->__t_sql('Projects')}'); --3
INSERT INTO tasks (name, category_id, due_date, assigned_to_user_id) VALUES ('{$localizationService->LocalizeForSqlString('Repair the garage door')}', 1, date(datetime('now', 'localtime'), '+14 day'), 1);
INSERT INTO tasks (name, category_id, due_date, assigned_to_user_id) VALUES ('{$localizationService->LocalizeForSqlString('Fork and improve grocy')}', 3, date(datetime('now', 'localtime'), '+30 day'), 1);
INSERT INTO tasks (name, category_id, due_date, assigned_to_user_id) VALUES ('{$localizationService->LocalizeForSqlString('Task')}1', 2, date(datetime('now', 'localtime'), '-1 day'), 1);
INSERT INTO tasks (name, category_id, due_date, assigned_to_user_id) VALUES ('{$localizationService->LocalizeForSqlString('Task')}2', 2, date(datetime('now', 'localtime'), '-1 day'), 1);
INSERT INTO tasks (name, due_date, assigned_to_user_id) VALUES ('{$localizationService->LocalizeForSqlString('Find a solution for what to do when I forget the door keys')}', date(datetime('now', 'localtime'), '+3 day'), 1);
INSERT INTO tasks (name, due_date, assigned_to_user_id) VALUES ('{$localizationService->LocalizeForSqlString('Task')}3', date(datetime('now', 'localtime'), '+4 day'), 1);
INSERT INTO tasks (name, category_id, due_date, assigned_to_user_id) VALUES ('{$this->__t_sql('Repair the garage door')}', 1, date(datetime('now', 'localtime'), '+14 day'), 1);
INSERT INTO tasks (name, category_id, due_date, assigned_to_user_id) VALUES ('{$this->__t_sql('Fork and improve grocy')}', 3, date(datetime('now', 'localtime'), '+30 day'), 1);
INSERT INTO tasks (name, category_id, due_date, assigned_to_user_id) VALUES ('{$this->__t_sql('Task')}1', 2, date(datetime('now', 'localtime'), '-1 day'), 1);
INSERT INTO tasks (name, category_id, due_date, assigned_to_user_id) VALUES ('{$this->__t_sql('Task')}2', 2, date(datetime('now', 'localtime'), '-1 day'), 1);
INSERT INTO tasks (name, due_date, assigned_to_user_id) VALUES ('{$this->__t_sql('Find a solution for what to do when I forget the door keys')}', date(datetime('now', 'localtime'), '+3 day'), 1);
INSERT INTO tasks (name, due_date, assigned_to_user_id) VALUES ('{$this->__t_sql('Task')}3', date(datetime('now', 'localtime'), '+4 day'), 1);
INSERT INTO equipment (name, description, instruction_manual_file_name) VALUES ('{$localizationService->LocalizeForSqlString('Coffee machine')}', '{$loremIpsumWithHtmlFormattings}', 'loremipsum.pdf'); --1
INSERT INTO equipment (name, description) VALUES ('{$localizationService->LocalizeForSqlString('Dishwasher')}', '{$loremIpsumWithHtmlFormattings}'); --2
INSERT INTO equipment (name, description, instruction_manual_file_name) VALUES ('{$this->__t_sql('Coffee machine')}', '{$loremIpsumWithHtmlFormattings}', 'loremipsum.pdf'); --1
INSERT INTO equipment (name, description) VALUES ('{$this->__t_sql('Dishwasher')}', '{$loremIpsumWithHtmlFormattings}'); --2
INSERT INTO migrations (migration) VALUES (-1);
";
@@ -262,4 +268,16 @@ class DemoDataGeneratorService extends BaseService
{
return mt_rand(2 * 100, 25 * 100) / 100;
}
private function __t_sql(string $text)
{
$localizedText = $this->LocalizationService->__t($text, null);
return str_replace("'", "''", $localizedText);
}
private function __n_sql($number, string $singularForm, string $pluralForm)
{
$localizedText = $this->LocalizationService->__n($number, $singularForm, $pluralForm);
return str_replace("'", "''", $localizedText);
}
}

View File

@@ -2,58 +2,137 @@
namespace Grocy\Services;
use Gettext\Translations;
use Gettext\Translator;
use \Grocy\Services\DatabaseService;
use \Gettext\Translation;
use \Gettext\Translations;
use \Gettext\Translator;
class LocalizationService
{
public function __construct(string $culture)
{
$this->Culture = $culture;
$this->DatabaseService = new DatabaseService();
$this->Database = $this->DatabaseService->GetDbConnection();
$this->LoadLocalizations($culture);
}
protected $PotTranslation;
protected $PoTranslation;
public $Translator;
protected $DatabaseService;
protected $Database;
protected $Pot;
protected $PotMain;
protected $Po;
protected $PoUserStrings;
protected $Translator;
private function LoadLocalizations()
{
$culture = $this->Culture;
$this->PotTranslation = Translations::fromPoFile(__DIR__ . '/../localization/chore_types.pot');
$this->PotTranslation = $this->PotTranslation->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/component_translations.pot'));
$this->PotTranslation = $this->PotTranslation->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/demo_data.pot'));
$this->PotTranslation = $this->PotTranslation->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/stock_transaction_types.pot'));
$this->PotTranslation = $this->PotTranslation->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/strings.pot'));
$this->PotTranslation = $this->PotTranslation->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/userfield_types.pot'));
if (GROCY_MODE === 'dev')
{
$this->PotMain = Translations::fromPoFile(__DIR__ . '/../localization/strings.pot');
$this->PoTranslation = Translations::fromPoFile(__DIR__ . "/../localization/$culture/chore_types.po");
$this->PoTranslation = $this->PoTranslation->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/component_translations.po"));
$this->PoTranslation = $this->PoTranslation->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/demo_data.po"));
$this->PoTranslation = $this->PoTranslation->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/stock_transaction_types.po"));
$this->PoTranslation = $this->PoTranslation->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/strings.po"));
$this->PoTranslation = $this->PoTranslation->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/userfield_types.po"));
$this->Pot = Translations::fromPoFile(__DIR__ . '/../localization/chore_types.pot');
$this->Pot = $this->Pot->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/component_translations.pot'));
$this->Pot = $this->Pot->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/demo_data.pot'));
$this->Pot = $this->Pot->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/stock_transaction_types.pot'));
$this->Pot = $this->Pot->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/strings.pot'));
$this->Pot = $this->Pot->mergeWith(Translations::fromPoFile(__DIR__ . '/../localization/userfield_types.pot'));
}
$this->PoUserStrings = new Translations();
$this->PoUserStrings->setDomain('grocy/userstrings');
$this->Po = Translations::fromPoFile(__DIR__ . "/../localization/$culture/chore_types.po");
$this->Po = $this->Po->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/component_translations.po"));
$this->Po = $this->Po->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/demo_data.po"));
$this->Po = $this->Po->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/stock_transaction_types.po"));
$this->Po = $this->Po->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/strings.po"));
$this->Po = $this->Po->mergeWith(Translations::fromPoFile(__DIR__ . "/../localization/$culture/userfield_types.po"));
$quantityUnits = null;
try
{
$quantityUnits = $this->Database->quantity_units()->fetchAll();
}
catch (\Exception $ex)
{
// Happens when database is not initialised or migrated...
}
if ($quantityUnits !== null)
{
foreach ($quantityUnits as $quantityUnit)
{
$translation = new Translation('', $quantityUnit['name']);
$translation->setTranslation($quantityUnit['name']);
$translation->setPlural($quantityUnit['name_plural']);
$translation->setPluralTranslations(preg_split('/\r\n|\r|\n/', $quantityUnit['plural_forms']));
$this->PoUserStrings[] = $translation;
}
$this->Po = $this->Po->mergeWith($this->PoUserStrings);
}
$this->Translator = new Translator();
$this->Translator->loadTranslations($this->PoTranslation);
$this->Translator->register();
$this->Translator->loadTranslations($this->Po);
}
public function GetTranslationsForJavaScriptTranslator()
public function GetPoAsJsonString()
{
return $this->PoTranslation->toJsonString();
return $this->Po->toJsonString();
}
//TODO: Missing translations should be automatically added to the source POT file
public function GetPluralCount()
{
if ($this->Po->getHeader(Translations::HEADER_PLURAL) !== null)
{
return $this->Po->getPluralForms()[0];
}
else
{
return 2;
}
}
public function GetPluralDefinition()
{
if ($this->Po->getHeader(Translations::HEADER_PLURAL) !== null)
{
return $this->Po->getPluralForms()[1];
}
else
{
return '(n != 1)';
}
}
public function __t(string $text, ...$placeholderValues)
{
return __($text, ...$placeholderValues);
$this->CheckAndAddMissingTranslationToPot($text);
return vsprintf($this->Translator->gettext($text), ...$placeholderValues);
}
public function __n($number, $singularForm, $pluralForm)
public function __n($number, string $singularForm, string $pluralForm)
{
$this->CheckAndAddMissingTranslationToPot($singularForm);
return $this->Translator->ngettext($singularForm, $pluralForm, $number);
}
public function CheckAndAddMissingTranslationToPot(string $text)
{
if (GROCY_MODE === 'dev')
{
if ($this->Pot->find('', $text) === false && $this->PoUserStrings->find('', $text) === false)
{
$translation = new Translation('', $text);
$this->PotMain[] = $translation;
$this->PotMain->toPoFile(__DIR__ . '/../localization/strings.pot');
}
}
}
}

View File

@@ -48,7 +48,7 @@ class RecipesService extends BaseService
$shoppinglistRow = $this->Database->shopping_list()->createRow(array(
'product_id' => $recipePosition->product_id,
'amount' => $toOrderAmount,
'note' => $this->LocalizationService-Translator->__t('Added for recipe %s', $recipe->name)
'note' => $this->LocalizationService->__t('Added for recipe %s', $recipe->name)
));
$shoppinglistRow->save();
}

View File

@@ -36,7 +36,7 @@
<label for="period_type">{{ $__t('Period type') }}</label>
<select required class="form-control input-group-chore-period-type" id="period_type" name="period_type">
@foreach($periodTypes as $periodType)
<option @if($mode == 'edit' && $periodType == $chore->period_type) selected="selected" @endif value="{{ $periodType }}">{{ $__t$periodType) }}</option>
<option @if($mode == 'edit' && $periodType == $chore->period_type) selected="selected" @endif value="{{ $periodType }}">{{ $__t($periodType) }}</option>
@endforeach
</select>
<div class="invalid-feedback">{{ $__t('A period type is required') }}</div>

View File

@@ -57,7 +57,7 @@
{{ $chore->name }}
</td>
<td>
{{ $__t$chore->period_type) }}
{{ $__t($chore->period_type) }}
</td>
<td>
{{ $chore->description }}

View File

@@ -15,9 +15,9 @@
@php if(empty($additionalAttributes)) { $additionalAttributes = ''; } @endphp
<div class="form-group">
<label for="{{ $id }}">{{ $__t$label) }}
<label for="{{ $id }}">{{ $__t($label) }}
<span class="small text-muted">
@if(!empty($hint)){{ $__t$hint) }}@endif
@if(!empty($hint)){{ $__t($hint) }}@endif
<time id="datetimepicker-timeago" class="timeago timeago-contextual"></time>
</span>
</label>
@@ -40,7 +40,7 @@
@if(isset($shortcutValue) && isset($shortcutLabel))
<div class="form-check w-100">
<input class="form-check-input" type="checkbox" id="datetimepicker-shortcut" data-datetimepicker-shortcut-value="{{ $shortcutValue }}">
<label class="form-check-label" for="datetimepicker-shortcut">{{ $__t$shortcutLabel) }}</label>
<label class="form-check-label" for="datetimepicker-shortcut">{{ $__t($shortcutLabel) }}</label>
</div>
@endif
</div>

View File

@@ -17,7 +17,7 @@
@php if(!isset($noNameAttribute)) { $noNameAttribute = false; } @endphp
<div class="form-group {{ $additionalGroupCssClasses }}">
<label for="{{ $id }}">{{ $__t$label) }}&nbsp;&nbsp;<span id="{{ $hintId }}" class="small text-muted">{{ $hint }}</span>{!! $additionalHtmlContextHelp !!}</label>
<label for="{{ $id }}">{{ $__t($label) }}&nbsp;&nbsp;<span id="{{ $hintId }}" class="small text-muted">{{ $hint }}</span>{!! $additionalHtmlContextHelp !!}</label>
<div class="input-group">
<input {!! $additionalAttributes !!} type="number" class="form-control numberpicker {{ $additionalCssClasses }}" id="{{ $id }}" @if(!$noNameAttribute) name="{{ $id }}" @endif value="{{ $value }}" min="{{ $min }}" max="{{ $max }}" step="{{ $step }}" @if($isRequired) required @endif>
<div class="input-group-append">

View File

@@ -7,7 +7,7 @@
@php if(!isset($nextInputSelector)) { $nextInputSelector = ''; } @endphp
<div class="form-group" data-next-input-selector="{{ $nextInputSelector }}" data-prefill-by-username="{{ $prefillByUsername }}" data-prefill-by-user-id="{{ $prefillByUserId }}">
<label for="user_id">{{ $__t$label) }}</label>
<label for="user_id">{{ $__t($label) }}</label>
<select class="form-control user-combobox" id="user_id" name="user_id">
<option value=""></option>
@foreach($users as $user)

View File

@@ -52,7 +52,7 @@
Grocy.ActiveNav = '@yield('activeNav', '')';
Grocy.Culture = '{{ GROCY_CULTURE }}';
Grocy.Currency = '{{ GROCY_CURRENCY }}';
Grocy.JsGettextTranslatorStrings = {!! $jsGettextTranslatorStrings !!};
Grocy.GettextPo = {!! $GettextPo !!};
Grocy.UserSettings = {!! json_encode($userSettings) !!};
Grocy.FeatureFlags = {!! json_encode($featureFlags) !!};
</script>

View File

@@ -32,6 +32,18 @@
<input type="text" class="form-control" id="name_plural" name="name_plural" value="@if($mode == 'edit'){{ $quantityunit->name_plural }}@endif">
</div>
<div class="form-group">
<label for="plural_forms">
{{ $__t('Plural forms') }}<br>
<span class="small text-muted">
{{ $__t('One plural form per line, the current language requires') }}:<br>
{{ $__t('Plural count') }}: {{ $pluralCount }}<br>
{{ $__t('Plural rule') }}: {{ $pluralRule }}
</span>
</label>
<textarea class="form-control" rows="3" id="plural_forms" name="plural_forms">@if($mode == 'edit'){{ $quantityunit->plural_forms }}@endif</textarea>
</div>
<div class="form-group">
<label for="description">{{ $__t('Description') }}</label>
<textarea class="form-control" rows="2" id="description" name="description">@if($mode == 'edit'){{ $quantityunit->description }}@endif</textarea>

View File

@@ -128,7 +128,7 @@
{{ FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id)->name }}
</td>
<td>
@if($recipePosition->amount == round($recipePosition->amount)){{ round($recipePosition->amount) }}@else{{ $recipePosition->amount }}@endif {{ Pluralize($recipePosition->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', $recipePosition->qu_id)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', $recipePosition->qu_id)->name_plural) }}
@if($recipePosition->amount == round($recipePosition->amount)){{ round($recipePosition->amount) }}@else{{ $recipePosition->amount }}@endif {{ $__n($recipePosition->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', $recipePosition->qu_id)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', $recipePosition->qu_id)->name_plural) }}
</td>
<td class="fit-content">
<a class="btn btn-sm btn-info recipe-pos-show-note-button @if(empty($recipePosition->note)) disabled @endif" href="#" data-toggle="tooltip" data-placement="top" title="{{ $__t('Show notes') }}" data-recipe-pos-note="{{ $recipePosition->note }}">

View File

@@ -55,7 +55,7 @@
</td>
<td>
@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1)<i class="fas fa-check text-success"></i>@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1)<i class="fas fa-exclamation text-warning"></i>@else<i class="fas fa-times text-danger"></i>@endif
<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1){{ $__t('Enough in stock') }}@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1){{ $__t('Not enough in stock, %s ingredients missing but already on the shopping list', FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count) }}@else{{ $__t('Not enough in stock, %s ingredients missing', FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count) }}@endif</span>
<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled == 1){{ $__t('Enough in stock') }}@elseif(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->need_fulfilled_with_shopping_list == 1){{ $__n(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count, 'Not enough in stock, %s ingredient missing but already on the shopping list', 'Not enough in stock, %s ingredients missing but already on the shopping list') }}@else{{ $__n(FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count, 'Not enough in stock, %s ingredient missing', 'Not enough in stock, %s ingredients missing') }}@endif</span>
</td>
<td class="d-none">
{{ FindObjectInArrayByPropertyValue($recipesResolved, 'recipe_id', $recipe->id)->missing_products_count }}
@@ -165,7 +165,7 @@
<h5 class="mb-2 mt-2 ml-4"><strong>{{ $selectedRecipePosition->ingredient_group }}</strong></h5>
@endif
<li class="list-group-item">
@if($selectedRecipePosition->recipe_amount == round($selectedRecipePosition->recipe_amount, 2)){{ round($selectedRecipePosition->recipe_amount, 2) }}@else{{ $selectedRecipePosition->recipe_amount }}@endif {{ Pluralize($selectedRecipePosition->recipe_amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', $selectedRecipePosition->qu_id)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', $selectedRecipePosition->qu_id)->name_plural) }} {{ FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->name }}
@if($selectedRecipePosition->recipe_amount == round($selectedRecipePosition->recipe_amount, 2)){{ round($selectedRecipePosition->recipe_amount, 2) }}@else{{ $selectedRecipePosition->recipe_amount }}@endif {{ $__n($selectedRecipePosition->recipe_amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', $selectedRecipePosition->qu_id)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', $selectedRecipePosition->qu_id)->name_plural) }} {{ FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->name }}
@if($selectedRecipePosition->need_fulfilled == 1)<i class="fas fa-check text-success"></i>@elseif($selectedRecipePosition->need_fulfilled_with_shopping_list == 1)<i class="fas fa-exclamation text-warning"></i>@else<i class="fas fa-times text-danger"></i>@endif
<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($selectedRecipeSubRecipesPositions, 'recipe_pos_id', $selectedRecipePosition->id)->need_fulfilled == 1) {{ $__t('Enough in stock') }} @else {{ $__t('Not enough in stock, %s missing, %s already on shopping list', round(FindObjectInArrayByPropertyValue($selectedRecipeSubRecipesPositions, 'recipe_pos_id', $selectedRecipePosition->id)->missing_amount, 2), round(FindObjectInArrayByPropertyValue($selectedRecipeSubRecipesPositions, 'recipe_pos_id', $selectedRecipePosition->id)->amount_on_shopping_list, 2)) }} @endif</span>
@@ -201,7 +201,7 @@
<h5 class="mb-2 mt-2 ml-4"><strong>{{ $selectedRecipePosition->ingredient_group }}</strong></h5>
@endif
<li class="list-group-item">
@if($selectedRecipePosition->recipe_amount == round($selectedRecipePosition->recipe_amount, 2)){{ round($selectedRecipePosition->recipe_amount, 2) }}@else{{ $selectedRecipePosition->recipe_amount }}@endif {{ Pluralize($selectedRecipePosition->recipe_amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', $selectedRecipePosition->qu_id)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', $selectedRecipePosition->qu_id)->name_plural) }} {{ FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->name }}
@if($selectedRecipePosition->recipe_amount == round($selectedRecipePosition->recipe_amount, 2)){{ round($selectedRecipePosition->recipe_amount, 2) }}@else{{ $selectedRecipePosition->recipe_amount }}@endif {{ $__n($selectedRecipePosition->recipe_amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', $selectedRecipePosition->qu_id)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', $selectedRecipePosition->qu_id)->name_plural) }} {{ FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->name }}
@if($selectedRecipePosition->need_fulfilled == 1)<i class="fas fa-check text-success"></i>@elseif($selectedRecipePosition->need_fulfilled_with_shopping_list == 1)<i class="fas fa-exclamation text-warning"></i>@else<i class="fas fa-times text-danger"></i>@endif
<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipePositionsResolved, 'recipe_pos_id', $selectedRecipePosition->id)->need_fulfilled == 1) {{ $__t('Enough in stock') }} @else {{ $__t('Not enough in stock, %s missing, %s already on shopping list', round(FindObjectInArrayByPropertyValue($recipePositionsResolved, 'recipe_pos_id', $selectedRecipePosition->id)->missing_amount, 2), round(FindObjectInArrayByPropertyValue($recipePositionsResolved, 'recipe_pos_id', $selectedRecipePosition->id)->amount_on_shopping_list, 2)) }} @endif</span>

View File

@@ -33,7 +33,7 @@
<i class="fas fa-box"></i> {{ $__t('Add all list items to stock') }}
</a>
</h1>
<p data-status-filter="belowminstockamount" class="btn btn-lg btn-info status-filter-button responsive-button">{{ Pluralize(count($missingProducts), $__t('%s product is below defined min. stock amount', count($missingProducts)), $__t('%s products are below defined min. stock amount', count($missingProducts))) }}</p>
<p data-status-filter="belowminstockamount" class="btn btn-lg btn-info status-filter-button responsive-button">{{ $__n(count($missingProducts), $__t('%s product is below defined min. stock amount', count($missingProducts)), $__t('%s products are below defined min. stock amount', count($missingProducts))) }}</p>
</div>
</div>
@@ -93,7 +93,7 @@
<a class="btn btn-sm btn-danger shoppinglist-delete-button" href="#" data-shoppinglist-id="{{ $listItem->id }}">
<i class="fas fa-trash"></i>
</a>
<a class="btn btn-sm btn-primary @if(empty($listItem->product_id)) disabled @else shopping-list-stock-add-workflow-list-item-button @endif" href="{{ $U('/purchase?embedded&flow=shoppinglistitemtostock&product=') }}{{ $listItem->product_id }}&amount={{ $listItem->amount }}&listitemid={{ $listItem->id }}" @if(!empty($listItem->product_id)) data-toggle="tooltip" title="{{ $__t('Add %s %s of %s to stock', Pluralize($listItem->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name_plural), FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->name, $listItem->amount) }}" @endif>
<a class="btn btn-sm btn-primary @if(empty($listItem->product_id)) disabled @else shopping-list-stock-add-workflow-list-item-button @endif" href="{{ $U('/purchase?embedded&flow=shoppinglistitemtostock&product=') }}{{ $listItem->product_id }}&amount={{ $listItem->amount }}&listitemid={{ $listItem->id }}" @if(!empty($listItem->product_id)) data-toggle="tooltip" title="{{ $__t('Add %s %s of %s to stock', $__n($listItem->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name_plural), FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->name, $listItem->amount) }}" @endif>
<i class="fas fa-box"></i>
</a>
</td>
@@ -101,7 +101,7 @@
@if(!empty($listItem->product_id)) {{ FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->name }}<br>@endif<em>{!! nl2br($listItem->note) !!}</em>
</td>
<td>
{{ $listItem->amount }} @if(!empty($listItem->product_id)){{ Pluralize($listItem->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name_plural) }}@endif
{{ $listItem->amount }} @if(!empty($listItem->product_id)){{ $__n($listItem->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name_plural) }}@endif
</td>
<td class="d-none">
@if(!empty(FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->product_group_id)) {{ FindObjectInArrayByPropertyValue($productGroups, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->product_group_id)->name }} @else <span class="font-italic font-weight-light">{{ $__t('Ungrouped') }}</span> @endif

View File

@@ -56,14 +56,14 @@
@endif
</td>
<td>
{{ $stockLogEntry->amount }} {{ Pluralize($stockLogEntry->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $stockLogEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $stockLogEntry->product_id)->qu_id_stock)->name_plural) }}
{{ $stockLogEntry->amount }} {{ $__n($stockLogEntry->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $stockLogEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $stockLogEntry->product_id)->qu_id_stock)->name_plural) }}
</td>
<td>
{{ $stockLogEntry->row_created_timestamp }}
<time class="timeago timeago-contextual" datetime="{{ $stockLogEntry->row_created_timestamp }}"></time>
</td>
<td>
{{ $__t$stockLogEntry->transaction_type) }}
{{ $__t($stockLogEntry->transaction_type) }}
</td>
</tr>
@endforeach

View File

@@ -88,7 +88,7 @@
@foreach($currentStock as $currentStockEntry)
<tr id="product-{{ $currentStockEntry->product_id }}-row" class="@if($currentStockEntry->best_before_date < date('Y-m-d 23:59:59', strtotime('-1 days')) && $currentStockEntry->amount > 0) table-danger @elseif($currentStockEntry->best_before_date < date('Y-m-d 23:59:59', strtotime("+$nextXDays days")) && $currentStockEntry->amount > 0) table-warning @elseif (FindObjectInArrayByPropertyValue($missingProducts, 'id', $currentStockEntry->product_id) !== null) table-info @endif">
<td class="fit-content border-right">
<a class="btn btn-success btn-sm product-consume-button @if($currentStockEntry->amount < 1) disabled @endif" href="#" data-toggle="tooltip" data-placement="left" title="{{ $__t('Consume %s %s of %s', FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name, 1) }}"
<a class="btn btn-success btn-sm product-consume-button @if($currentStockEntry->amount < 1) disabled @endif" href="#" data-toggle="tooltip" data-placement="left" title="{{ $__t('Consume %s of %s', '1 ' . FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name) }}"
data-product-id="{{ $currentStockEntry->product_id }}"
data-product-name="{{ FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name }}"
data-product-qu-name="{{ FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name }}"
@@ -102,7 +102,7 @@
data-consume-amount="{{ $currentStockEntry->amount }}">
<i class="fas fa-utensils"></i> {{ $__t('All') }}
</a>
<a class="btn btn-success btn-sm product-open-button @if($currentStockEntry->amount < 1 || $currentStockEntry->amount == $currentStockEntry->amount_opened) disabled @endif" href="#" data-toggle="tooltip" data-placement="left" title="{{ $__t('Mark %s %s of %s as open', FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name, 1) }}"
<a class="btn btn-success btn-sm product-open-button @if($currentStockEntry->amount < 1 || $currentStockEntry->amount == $currentStockEntry->amount_opened) disabled @endif" href="#" data-toggle="tooltip" data-placement="left" title="{{ $__t('Mark %s of %s as open', '1 ' . FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name) }}"
data-product-id="{{ $currentStockEntry->product_id }}"
data-product-name="{{ FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name }}"
data-product-qu-name="{{ FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name }}">
@@ -129,7 +129,7 @@
{{ FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name }}
</td>
<td>
<span id="product-{{ $currentStockEntry->product_id }}-amount">{{ $currentStockEntry->amount }}</span> {{ Pluralize($currentStockEntry->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name_plural) }}
<span id="product-{{ $currentStockEntry->product_id }}-amount">{{ $currentStockEntry->amount }}</span> {{ $__n($currentStockEntry->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name_plural) }}
<span id="product-{{ $currentStockEntry->product_id }}-opened-amount" class="small font-italic">@if($currentStockEntry->amount_opened > 0){{ $__t('%s opened', $currentStockEntry->amount_opened) }}@endif</span>
</td>
<td>

View File

@@ -49,7 +49,7 @@
<select required class="form-control" id="type" name="type">
<option></option>
@foreach($userfieldTypes as $userfieldType)
<option @if($mode == 'edit' && $userfield->type == $userfieldType) selected="selected" @endif value="{{ $userfieldType }}">{{ $__t$userfieldType) }}</option>
<option @if($mode == 'edit' && $userfield->type == $userfieldType) selected="selected" @endif value="{{ $userfieldType }}">{{ $__t($userfieldType) }}</option>
@endforeach
</select>
<div class="invalid-feedback">{{ $__t('A type is required') }}</div>

View File

@@ -65,7 +65,7 @@
{{ $userfield->caption }}
</td>
<td>
{{ $__t$userfield->type) }}
{{ $__t($userfield->type) }}
</td>
</tr>
@endforeach

View File

@@ -11,9 +11,9 @@
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.8.1.tgz#cbafbfe8894c4e3e3c3a9da6774e249ac1f2da8b"
integrity sha512-GJtx6e55qLEOy2gPOsok2lohjpdWNGrYGtQx0FFT/++K4SYx+Z8LlPHdQBaFzKEwH5IbBB4fNgb//uyZjgYXoA==
"TagManager@https://github.com/max-favilli/tagmanager.git#3.0.2":
"TagManager@https://github.com/max-favilli/tagmanager.git#master":
version "3.0.1"
resolved "https://github.com/max-favilli/tagmanager.git#df9eb9935c8585a392dfc00602f890caf233fa94"
resolved "https://github.com/max-favilli/tagmanager.git#b43646ef2f2373facaf21c7acc5e3eea61188d76"
dependencies:
jquery "1"
@@ -195,6 +195,13 @@ fullcalendar@^3.10.0:
resolved "https://registry.yarnpkg.com/fullcalendar/-/fullcalendar-3.10.0.tgz#cc5e87d518fd6550e142816a31dd191664847919"
integrity sha512-0OtsHhmdYhtFmQwXzyo8VqHzYgamg+zVOoytv5N13gI+iF6CGjevpCi/yBaQs0O4wY3OAp8I688IxdNYe0iAvw==
gettext-translator@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/gettext-translator/-/gettext-translator-2.1.0.tgz#946047649b7df4ef00522787bb78792667e4de2f"
integrity sha512-RD9HifZKtlRtFScA0VWESzLKQxxRmaRU0IFg6cFZgMP0MMgzfHpWO7MipUyRbMxDFm8adbQqCcFLBV47tjT6Ug==
dependencies:
sprintf-js "^1.0.3"
jquery-serializejson@^2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/jquery-serializejson/-/jquery-serializejson-2.9.0.tgz#03e3764e3a4b42c1c5aae9f93d7f19320c5f35a6"
@@ -242,6 +249,11 @@ popper.js@^1.14.3:
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2"
integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==
sprintf-js@^1.0.3, sprintf-js@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
startbootstrap-sb-admin@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/startbootstrap-sb-admin/-/startbootstrap-sb-admin-4.0.0.tgz#cf141a260d031b36bdc013c68200a1c1ea6c9881"