Initial commit
55
404.html
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<title>404</title>
|
||||
<meta charset="UTF-8">
|
||||
<style>
|
||||
|
||||
*{
|
||||
transition: all 0.6s;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body{
|
||||
font-family: 'Lato', sans-serif;
|
||||
color: #888;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#main{
|
||||
display: table;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.fof{
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.fof h1{
|
||||
font-size: 50px;
|
||||
display: inline-block;
|
||||
padding-right: 12px;
|
||||
animation: type .5s alternate infinite;
|
||||
}
|
||||
|
||||
@keyframes type{
|
||||
from{box-shadow: inset -3px 0px 0px #888;}
|
||||
to{box-shadow: inset -3px 0px 0px transparent;}
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="main">
|
||||
<div class="fof">
|
||||
<h1>Error 404</h1>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
86
core/core.php
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
<?php
|
||||
|
||||
require('functions.php');
|
||||
|
||||
$parameters = $product . "/" . $year;
|
||||
$path = $year . "/" . $product;
|
||||
|
||||
$resource_url = resource_url();
|
||||
$canonical_url = current_url($lang, $parameters);
|
||||
|
||||
$data_path = "data/wine/" . $path . ".json";
|
||||
$img = $resource_url."img/" . $path . ".webp";
|
||||
|
||||
//JSON
|
||||
$data = json_decode(file_get_contents($data_path));
|
||||
$translation = json_decode(file_get_contents("data/translations.json"));
|
||||
|
||||
// DATA
|
||||
$product_name = $data->product;
|
||||
$parcel = $data->parcel;
|
||||
$region = $data->region;
|
||||
$winegrower = $data->winegrower;
|
||||
$capacity = $data->capacity;
|
||||
$alcohol = $data->alcohol;
|
||||
$energy = $data->energy;
|
||||
$energy_converted = floor(kcal2kj($energy));
|
||||
$fats = $data->fats;
|
||||
$saturated_fats = $data->saturated_fats;
|
||||
$carbohydrates = $data->carbohydrates;
|
||||
$sugar = $data->sugar;
|
||||
$proteins = $data->proteins;
|
||||
$salt = $data->salt;
|
||||
$color = $data->color;
|
||||
$composition = $data->composition;
|
||||
|
||||
// TRANSLATIONS
|
||||
$tr_lang = $translation->$lang->lang;
|
||||
$tr_ingredients = $translation->$lang->ingredients;
|
||||
$tr_nutrional = $translation->$lang->nutrional;
|
||||
$tr_capacity = $translation->$lang->capacity;
|
||||
$tr_energy = $translation->$lang->energy;
|
||||
$tr_fats = $translation->$lang->fats;
|
||||
$tr_saturated_fats = $translation->$lang->saturated_fats;
|
||||
$tr_carbohydrates = $translation->$lang->carbohydrates;
|
||||
$tr_sugar = $translation->$lang->sugar;
|
||||
$tr_proteins = $translation->$lang->proteins;
|
||||
$tr_salt = $translation->$lang->salt;
|
||||
$tr_color = $translation->$lang->$color;
|
||||
$tr_title = $translation->$lang->title;
|
||||
$tr_description = $translation->$lang->description;
|
||||
|
||||
// STRING BUILDERS
|
||||
$name = $product_name . " " . $year;
|
||||
$details = $tr_color . " / " . $capacity . "L / " . $alcohol . "% vol";
|
||||
$head_title = $name . " | " . $winegrower . " | " . $tr_title;
|
||||
$head_description = sprintf($tr_description, $name, $winegrower);
|
||||
|
||||
//INGREDIENTS
|
||||
$ingredients = "";
|
||||
$nb_components = 0;
|
||||
foreach ($composition as $component) {
|
||||
$ingredients .= translate_and_format($translation->$lang, $component);
|
||||
$sub_components = isset($component->components) ? $component->components : null;
|
||||
|
||||
if ($sub_components != null) {
|
||||
$ingredients .= ' (';
|
||||
|
||||
$nb_sub_components = 0;
|
||||
foreach ($sub_components as $sub_component) {
|
||||
$ingredients .= translate_and_format($translation->$lang, $sub_component);
|
||||
$nb_sub_components++;
|
||||
if($nb_sub_components < sizeof($sub_components)){
|
||||
$ingredients .= ', ';
|
||||
}
|
||||
}
|
||||
$ingredients .= ')';
|
||||
|
||||
}
|
||||
$nb_components++;
|
||||
if($nb_components < sizeof($composition)){
|
||||
$ingredients .= ', ';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
51
core/functions.php
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
function kcal2kj(int $kcal)
|
||||
{
|
||||
return $kcal * 4.1868;
|
||||
}
|
||||
|
||||
function is_https(){
|
||||
return !empty($_SERVER['HTTPS']) &&
|
||||
(strtolower($_SERVER['HTTPS']) == 'on' ||
|
||||
$_SERVER['HTTPS'] == '1');
|
||||
}
|
||||
|
||||
function base_url()
|
||||
{
|
||||
$protocol = is_https() ? 'https://' : 'http://';
|
||||
$server = $_SERVER['SERVER_NAME'];
|
||||
//$port = $_SERVER['SERVER_PORT'] ? ':'.$_SERVER['SERVER_PORT'] : '';
|
||||
return $protocol.$server;
|
||||
}
|
||||
|
||||
function resource_url()
|
||||
{
|
||||
return base_url() . dirname($_SERVER['PHP_SELF'])."/";;
|
||||
}
|
||||
|
||||
function current_url($lang, $parameters){
|
||||
return resource_url() . $lang . "/" . $parameters;
|
||||
}
|
||||
|
||||
{
|
||||
$protocol = is_https() ? 'https://' : 'http://';
|
||||
$server = $_SERVER['SERVER_NAME'];
|
||||
//$port = $_SERVER['SERVER_PORT'] ? ':'.$_SERVER['SERVER_PORT'] : '';
|
||||
return $protocol.$server;
|
||||
}
|
||||
|
||||
|
||||
function translate_and_format($translation, $ingredient)
|
||||
{
|
||||
$ingredient_id = $ingredient->id;
|
||||
$tranlated = $translation->$ingredient_id;
|
||||
|
||||
$is_allergen = isset($ingredient->allergen) ? $ingredient->allergen : false;
|
||||
if ($is_allergen) {
|
||||
$format = '<strong>%s</strong>';
|
||||
$tranlated = sprintf($format, $tranlated);
|
||||
}
|
||||
return $tranlated;
|
||||
}
|
||||
|
||||
?>
|
||||
132
core/layout.php
Executable file
|
|
@ -0,0 +1,132 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="<?= $lang ?>">
|
||||
<head>
|
||||
<title><?= $head_title ?></title>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="description" content="<?= $head_description ?>" />
|
||||
<meta name="msapplication-TileColor" content="#da532c" />
|
||||
<meta name="theme-color" content="#ffffff" />
|
||||
<link rel="canonical" href="<?= $canonical_url ?>" />
|
||||
<!--<link rel="icon" href="images/icons/favicon.ico">
|
||||
<link rel="icon" type="image/svg+xml" href="images/icons/favicon.svg">
|
||||
<link rel="icon" type="image/png" href="images/icons/favicon.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="images/icons/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="images/icons/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="images/icons/favicon-16x16.png">
|
||||
<link rel="mask-icon" href="images/icons/safari-pinned-tab.svg" color="#5bbad5">-->
|
||||
<link rel="stylesheet" type="text/css" href="<?= $resource_url ?>css/main.css" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="mega-menu">
|
||||
<ul class="mega-menu-main">
|
||||
<li class="lvl-0">
|
||||
<span class="lang">
|
||||
<a href="#"><?= $tr_lang ?></a>
|
||||
<img alt="lang" src="<?= $resource_url ?>icon/lang.svg" loading="lazy" />
|
||||
</span>
|
||||
<ul class="mega-menu-tab">
|
||||
<li class="lvl-1">
|
||||
<ul class="lvl-2">
|
||||
<li><a href="<?= current_url("bg", $parameters) ?>">български език</a></li>
|
||||
<li><a href="<?= current_url("cs", $parameters) ?>">Česky</a></li>
|
||||
<li><a href="<?= current_url("da", $parameters) ?>">Dansk</a></li>
|
||||
<li><a href="<?= current_url("de", $parameters) ?>">Deutsch</a></li>
|
||||
<li><a href="<?= current_url("el", $parameters) ?>">Ελληνικά</a></li>
|
||||
<li><a href="<?= current_url("en", $parameters) ?>">English</a></li>
|
||||
<li><a href="<?= current_url("es", $parameters) ?>">Español</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="lvl-1">
|
||||
<ul class="lvl-2">
|
||||
<li><a href="<?= current_url("et", $parameters) ?>">Eesti keel</a></li>
|
||||
<li><a href="<?= current_url("fi", $parameters) ?>">Suomen kieli</a></li>
|
||||
<li><a href="<?= current_url("fr", $parameters) ?>">Français</a></li>
|
||||
<li><a href="<?= current_url("ga", $parameters) ?>">Gaeilge</a></li>
|
||||
<li><a href="<?= current_url("hr", $parameters) ?>">Hrvatski</a></li>
|
||||
<li><a href="<?= current_url("hu", $parameters) ?>">Magyar</a></li>
|
||||
<li><a href="<?= current_url("it", $parameters) ?>">Italiano</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="lvl-1">
|
||||
<ul class="lvl-2">
|
||||
<li><a href="<?= current_url("lt", $parameters) ?>">Lietuvių kalba</a></li>
|
||||
<li><a href="<?= current_url("mt", $parameters) ?>">Malti</a></li>
|
||||
<li><a href="<?= current_url("pl", $parameters) ?>">Polski</a></li>
|
||||
<li><a href="<?= current_url("ro", $parameters) ?>">Română</a></li>
|
||||
<li><a href="<?= current_url("sk", $parameters) ?>">Slovenčina</a></li>
|
||||
<li><a href="<?= current_url("sl", $parameters) ?>">Slovenščina</a></li>
|
||||
<li><a href="<?= current_url("sv", $parameters) ?>">Svenska</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="content">
|
||||
<section class="main">
|
||||
<img src="<?= $img ?>" alt="<?= $name ?>" loading="lazy" />
|
||||
</section>
|
||||
|
||||
<section class="details">
|
||||
<div class="name">
|
||||
<h1><?= $name ?></h1>
|
||||
<p><?= $parcel ?></p>
|
||||
</div>
|
||||
<h2><?= $winegrower ?></h2>
|
||||
<h3><?= $details ?></h3>
|
||||
<p><?= $region ?></p>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="ingredients">
|
||||
<h4><?= $tr_ingredients ?></h4>
|
||||
<p><?= $ingredients ?></p>
|
||||
</section>
|
||||
|
||||
<section class="facts">
|
||||
<h4><?= $tr_nutrional ?></h4>
|
||||
<table>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><?= $tr_capacity ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $tr_energy ?></td>
|
||||
<td><?= $energy_converted ?>kJ - <?= $energy ?>kcal</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div><?= $tr_fats ?></div>
|
||||
<div class="marged"><?= $tr_saturated_fats ?></div>
|
||||
</td>
|
||||
<td>
|
||||
<div><?= $fats ?>g</div>
|
||||
<div><?= $saturated_fats ?>g</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div><?= $tr_carbohydrates ?></div>
|
||||
<div class="marged"><?= $tr_sugar ?></div>
|
||||
</td>
|
||||
<td>
|
||||
<div><?= $carbohydrates ?>g</div>
|
||||
<div><?= $sugar ?>g</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $tr_proteins ?></td>
|
||||
<td><?= $proteins ?>g</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><?= $tr_salt ?></td>
|
||||
<td><<?= $salt ?>g</td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
213
css/main.css
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
@font-face {
|
||||
font-family: Prociono;
|
||||
src: url('../font/Prociono.ttf');
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Prociono;
|
||||
}
|
||||
|
||||
.content {
|
||||
max-width: 900px;
|
||||
margin: 50px auto;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-gap: 10px;
|
||||
grid-auto-rows: minmax(50px, auto);
|
||||
}
|
||||
|
||||
section {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 22px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.main {
|
||||
grid-column: 1;
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.main > img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.details {
|
||||
grid-column: 2;
|
||||
grid-row: 1;
|
||||
margin-top: auto;
|
||||
margin-bottom: 35px;
|
||||
margin-left: 20px;
|
||||
letter-spacing: 0.35em;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.name {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.ingredients {
|
||||
grid-column: 1 / 3;
|
||||
grid-row: 2;
|
||||
}
|
||||
|
||||
.facts {
|
||||
grid-column: 1 / 3;
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
background-color: ButtonFace;
|
||||
}
|
||||
|
||||
td {
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
td > .marged {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
/*Nav*/
|
||||
|
||||
li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.lang {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-right: 100px;
|
||||
}
|
||||
|
||||
.lang img {
|
||||
width: 60px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.mega-menu a {
|
||||
display: block;
|
||||
color: grey;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.mega-menu a:hover {
|
||||
background: lightgrey;
|
||||
}
|
||||
|
||||
.mega-menu-main {
|
||||
display: flex;
|
||||
position: relative;
|
||||
background: white;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.lvl-0 > a {
|
||||
padding: 12px 25px;
|
||||
}
|
||||
|
||||
.lvl-0:hover > ul {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.mega-menu-tab {
|
||||
display: none;
|
||||
/*display: flex;*/
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.lvl-1 {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
margin: 0 15px;
|
||||
}
|
||||
|
||||
.lvl-1 h2 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.lvl-2 {
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.lvl-2 a {
|
||||
padding: 8px 0;
|
||||
}
|
||||
|
||||
@media(max-width:950px) {
|
||||
.content {
|
||||
max-width: 700px;
|
||||
}
|
||||
|
||||
.details {
|
||||
letter-spacing: 0.2em;
|
||||
}
|
||||
}
|
||||
|
||||
@media(max-width:750px) {
|
||||
.content {
|
||||
max-width: 600px;
|
||||
}
|
||||
|
||||
.details {
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
}
|
||||
|
||||
@media(max-width:650px) {
|
||||
.content {
|
||||
max-width: max-content;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.main {
|
||||
grid-column: 1 / 3;
|
||||
grid-row: 2;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.main > img {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.details {
|
||||
grid-column: 1 / 3;
|
||||
grid-row: 1;
|
||||
text-align: center;
|
||||
letter-spacing: 0.35em;
|
||||
}
|
||||
|
||||
.ingredients {
|
||||
grid-row: 3;
|
||||
}
|
||||
|
||||
.facts {
|
||||
grid-column: 1 / 3;
|
||||
grid-row: 4;
|
||||
}
|
||||
}
|
||||
|
||||
@media(max-width:500px) {
|
||||
|
||||
.details {
|
||||
letter-spacing: 0.2em;
|
||||
}
|
||||
}
|
||||
548
data/translations.json
Normal file
|
|
@ -0,0 +1,548 @@
|
|||
{
|
||||
"bg":{
|
||||
"lang": "български език",
|
||||
"ingredients":"Съставки",
|
||||
"nutrional":"Хранителни факти",
|
||||
"capacity":"За 100 g или 100 mL",
|
||||
"energy":"Енергия",
|
||||
"fats":"Мазнини",
|
||||
"saturated_fats":"От тях наситени мазнини",
|
||||
"carbohydrates":"Въглехидрати",
|
||||
"sugar":"Със захар",
|
||||
"proteins":"Протеини",
|
||||
"salt":"Сол",
|
||||
"red":"Червено вино",
|
||||
"white":"Бяло вино",
|
||||
"title":"Факти за бургундското вино",
|
||||
"description": "Хранителна информация за Pommard 2023, произведен от Domaine Pinte",
|
||||
"GR":"Грозде",
|
||||
"CGR":"концентрирана гроздова мъст",
|
||||
"AR":"регулатор на киселинността",
|
||||
"LT":"L-винена киселина",
|
||||
"GA":"арабска гума",
|
||||
"PS":"консервант",
|
||||
"STR":"сулфити",
|
||||
"SLR":"серен диоксид",
|
||||
"LZ":"лизозим"
|
||||
},
|
||||
"cs":{
|
||||
"lang": "Česky",
|
||||
"ingredients":"Složení",
|
||||
"nutrional":"Výživové údaje",
|
||||
"capacity":"Na 100 g nebo 100 ml",
|
||||
"energy":"Energie",
|
||||
"fats":"Tuk",
|
||||
"saturated_fats":"Z toho nasycené mastné kyseliny",
|
||||
"carbohydrates":"Sacharidy",
|
||||
"sugar":"S cukrem",
|
||||
"proteins":"Bílkoviny",
|
||||
"salt":"Sůl",
|
||||
"red":"Červené víno",
|
||||
"white":"Bílé víno",
|
||||
"title":"Burgundské víno Fakta",
|
||||
"description": "Výživové údaje o Pommardu 2023 z produkce Domaine Pinte",
|
||||
"GR":"Hrozny",
|
||||
"CGR":"zahuštěný hroznový mošt",
|
||||
"AR":"regulátor kyselosti",
|
||||
"LT":"kyselina L-vinná",
|
||||
"GA":"arabská guma",
|
||||
"PS":"konzervační látka",
|
||||
"STR":"siřičitany",
|
||||
"SLR":"oxid siřičitý",
|
||||
"LZ":"lysozym"
|
||||
},
|
||||
"da":{
|
||||
"lang": "Dansk",
|
||||
"ingredients":"Ingredienser",
|
||||
"nutrional":"Ernæringsmæssige fakta",
|
||||
"capacity":"For 100 g eller 100 ml",
|
||||
"energy":"Energi",
|
||||
"fats":"Fedt",
|
||||
"saturated_fats":"Heraf mættede fedtsyrer",
|
||||
"carbohydrates":"Kulhydrater",
|
||||
"sugar":"Med sukker",
|
||||
"proteins":"Proteiner",
|
||||
"salt":"Salt",
|
||||
"red":"Rødvin",
|
||||
"white":"Hvidvin",
|
||||
"title":"Fakta om Bourgogne-vin",
|
||||
"description": "Ernæringsmæssige fakta om Pommard 2023 produceret af Domaine Pinte ",
|
||||
"GR":"Druer",
|
||||
"CGR":"Koncentreret druemost",
|
||||
"AR":"surhedsregulerende middel",
|
||||
"LT":"L-vinsyre",
|
||||
"GA":"Arabisk gummi",
|
||||
"PS":"Konserveringsmiddel",
|
||||
"STR":"Sulfitter",
|
||||
"SLR":"Sulfitter",
|
||||
"LZ":"Lysozym"
|
||||
},
|
||||
"de":{
|
||||
"lang": "Deutsch",
|
||||
"ingredients":"Zutaten",
|
||||
"nutrional":"Nährwertangaben",
|
||||
"capacity":"Für 100g oder 100ml",
|
||||
"energy":"Energie",
|
||||
"fats":"Fett",
|
||||
"saturated_fats":"davon gesättigte Fettsäuren",
|
||||
"carbohydrates":"Kohlenhydrate",
|
||||
"sugar":"Mit Zucker",
|
||||
"proteins":"Proteine",
|
||||
"salt":"Salz",
|
||||
"red":"Rotwein",
|
||||
"white":"Weißwein",
|
||||
"title":"Burgunderwein Fakten",
|
||||
"description": "Nährwertangaben zum Pommard 2023 der Domaine Pinte",
|
||||
"GR":"Trauben",
|
||||
"CGR":"konzentrierter Traubenmost",
|
||||
"AR":"Säureregulator",
|
||||
"LT":"L-Weinsäure",
|
||||
"GA":"Gummiarabikum",
|
||||
"PS":"Konservierungsmittel",
|
||||
"STR":"Sulfite",
|
||||
"SLR":"Schwefeldioxid",
|
||||
"LZ":"Lysozym"
|
||||
},
|
||||
"el":{
|
||||
"lang": "Ελληνικά",
|
||||
"ingredients":"Συστατικά",
|
||||
"nutrional":"Διατροφικά στοιχεία",
|
||||
"capacity":"Για 100g ή 100ml",
|
||||
"energy":"Ενέργεια",
|
||||
"fats":"Λίπος",
|
||||
"saturated_fats":"εκ των οποίων κορεσμένα",
|
||||
"carbohydrates":"Υδατάνθρακες",
|
||||
"sugar":"Με ζάχαρη",
|
||||
"proteins":"Πρωτεΐνες",
|
||||
"salt":"Αλάτι",
|
||||
"red":"Κόκκινο κρασί",
|
||||
"white":"Λευκό κρασί",
|
||||
"title":"Στοιχεία για το κρασί της Βουργουνδίας",
|
||||
"description": "Διατροφικά στοιχεία για το Pommard 2023 που παράγεται από το Domaine Pinte",
|
||||
"GR":"Σταφύλια",
|
||||
"CGR":"συμπυκνωμένο γλεύκος σταφυλιών",
|
||||
"AR":"ρυθμιστής οξύτητας",
|
||||
"LT":"L- τρυγικό οξύ",
|
||||
"GA":"αραβικό κόμμι",
|
||||
"PS":"συντηρητικό",
|
||||
"STR":"θειώδη",
|
||||
"SLR":"διοξείδιο του θείου",
|
||||
"LZ":"λυσοζύμη"
|
||||
},
|
||||
"en":{
|
||||
"lang": "English",
|
||||
"ingredients":"Ingredients",
|
||||
"nutrional":"Nutritional facts",
|
||||
"capacity":"For 100g or 100ml",
|
||||
"energy":"Energy",
|
||||
"fats":"Fat",
|
||||
"saturated_fats":"Of which saturates",
|
||||
"carbohydrates":"Carbohydrates",
|
||||
"sugar":"With sugar",
|
||||
"proteins":"Proteins",
|
||||
"salt":"Salt",
|
||||
"red":"Red wine",
|
||||
"white":"White wine",
|
||||
"title":"Burgundy Wine Facts",
|
||||
"description": "Nutritional facts about Pommard 2023 produced by Domaine Pinte",
|
||||
"GR":"Grapes",
|
||||
"CGR":"concentrated grape must",
|
||||
"AR":"acidity regulator",
|
||||
"LT":"L-tartaric acid",
|
||||
"GA":"gum arabic",
|
||||
"PS":"preservative",
|
||||
"STR":"sulphites",
|
||||
"SLR":"sulphur dioxide",
|
||||
"LZ":"lysozyme"
|
||||
},
|
||||
"es":{
|
||||
"lang": "Español",
|
||||
"ingredients":"Ingredients",
|
||||
"nutrional":"Nutritional facts",
|
||||
"capacity":"For 100g or 100ml",
|
||||
"energy":"Energy",
|
||||
"fats":"Fat",
|
||||
"saturated_fats":"Of which saturates",
|
||||
"carbohydrates":"Carbohydrates",
|
||||
"sugar":"With sugar",
|
||||
"proteins":"Proteins",
|
||||
"salt":"Salt",
|
||||
"red":"Red wine",
|
||||
"white":"White wine",
|
||||
"title":"Burgundy Wine Facts",
|
||||
"description": "Información nutricional sobre el Pommard 2023 producido por Domaine Pinte ",
|
||||
"GR":"Uvas",
|
||||
"CGR":"mosto de uva concentrado",
|
||||
"AR":"regulador de la acidez",
|
||||
"LT":"ácido L-tartárico",
|
||||
"GA":"goma arábiga",
|
||||
"PS":"conservante",
|
||||
"STR":"sulfitos",
|
||||
"SLR":"dióxido de azufre",
|
||||
"LZ":"lisozima"
|
||||
},
|
||||
"et":{
|
||||
"lang": "Eesti keel",
|
||||
"ingredients":"Koostisosad",
|
||||
"nutrional":"Toitumisfaktid",
|
||||
"capacity":"100g või 100ml kohta",
|
||||
"energy":"Energia",
|
||||
"fats":"Rasv",
|
||||
"saturated_fats":"millest küllastunud rasvhappeid",
|
||||
"carbohydrates":"Süsivesikud",
|
||||
"sugar":"Suhkruga",
|
||||
"proteins":"Valgud",
|
||||
"salt":"Sool",
|
||||
"red":"Punane vein",
|
||||
"white":"Valge vein",
|
||||
"title":"Burgundia veini faktid",
|
||||
"description": "Domaine Pinte'i toodetud Pommard 2023 toitumisfaktid ",
|
||||
"GR":"Viinamarjad",
|
||||
"CGR":"kontsentreeritud viinamarjavirre",
|
||||
"AR":"happesuse regulaator",
|
||||
"LT":"L-viinhape",
|
||||
"GA":"kummiaraabikumi",
|
||||
"PS":"säilitusaine",
|
||||
"STR":"sulfitid",
|
||||
"SLR":"vääveldioksiid",
|
||||
"LZ":"lüsosüüm"
|
||||
},
|
||||
"fi":{
|
||||
"lang": "Suomen kieli",
|
||||
"ingredients":"Ingredientes",
|
||||
"nutrional":"Información nutricional",
|
||||
"capacity":"Para 100 g o 100 ml",
|
||||
"energy":"Energía",
|
||||
"fats":"Grasas",
|
||||
"saturated_fats":"De las cuales saturadas",
|
||||
"carbohydrates":"Hidratos de carbono",
|
||||
"sugar":"Con azúcar",
|
||||
"proteins":"Proteínas",
|
||||
"salt":"Sal",
|
||||
"red":"Vino tinto",
|
||||
"white":"Vino blanco",
|
||||
"title":"Datos sobre el vino de Borgoña",
|
||||
"description": "Domaine Pinte -viinin tuottaman Pommard 2023 -viinin ravitsemukselliset seikat",
|
||||
"GR":"Viinirypäleet",
|
||||
"CGR":"tiivistetty rypäleen puristemehu",
|
||||
"AR":"happamuuden säätelijä",
|
||||
"LT":"L-viinihappo",
|
||||
"GA":"arabikumi",
|
||||
"PS":"säilöntäaine",
|
||||
"STR":"sulfiitit",
|
||||
"SLR":"rikkidioksidi",
|
||||
"LZ":"lysotsyymi"
|
||||
},
|
||||
"fr":{
|
||||
"lang": "Français",
|
||||
"ingredients":"Ingrédients",
|
||||
"nutrional":"Valeurs nutritionnelles",
|
||||
"capacity":"Pour 100g ou 100 ml",
|
||||
"energy":"Énergie",
|
||||
"fats":"Matières grasses",
|
||||
"saturated_fats":"Dont acides gras saturés",
|
||||
"carbohydrates":"Glucides",
|
||||
"sugar":"Dont sucres",
|
||||
"proteins":"Protéines",
|
||||
"salt":"Sel",
|
||||
"red":"Vin rouge",
|
||||
"white":"Vin Blanc",
|
||||
"title":"Infos Vins Bourgogne",
|
||||
"description": "Informations nutritionnelles relatives au %s produit par le %s",
|
||||
"GR":"Raisins",
|
||||
"CGR":"moût de raisin concentré",
|
||||
"AR":"régulateur d'acidité",
|
||||
"LT":"acide L-tartrique",
|
||||
"GA":"gomme arabique",
|
||||
"PS":"conservateur",
|
||||
"STR":"sulfites",
|
||||
"SLR":"dioxyde de soufre",
|
||||
"LZ":"lysozyme"
|
||||
},
|
||||
"ga":{
|
||||
"lang": "Gaeilge",
|
||||
"ingredients":"Comhábhair",
|
||||
"nutrional":"Fíricí cothaitheacha",
|
||||
"capacity":"Le haghaidh 100g nó 100ml",
|
||||
"energy":"Fuinneamh",
|
||||
"fats":"Saill",
|
||||
"saturated_fats":"Mar atá sáitheán",
|
||||
"carbohydrates":"Carbaihiodráití",
|
||||
"sugar":"Le siúcra",
|
||||
"proteins":"Próitéiní",
|
||||
"salt":"Salann",
|
||||
"red":"Fíon dearg",
|
||||
"white":"Fíon bán",
|
||||
"title":"Fíricí Fíon Burgúine",
|
||||
"description": "Fíricí cothaitheacha faoi Pommard 2023 arna dtáirgeadh ag Domaine Pinte",
|
||||
"GR":"Fíonchaora",
|
||||
"CGR":"úrfhíon fíonchaor tiubhaithe",
|
||||
"AR":"rialtóir aigéadachta",
|
||||
"LT":"Aigéad L-tartarach",
|
||||
"GA":"guma Arabach",
|
||||
"PS":"leasaitheach",
|
||||
"STR":"suilfítí",
|
||||
"SLR":"dé-ocsaíd sulfair",
|
||||
"LZ":"lísisím"
|
||||
},
|
||||
"hr":{
|
||||
"lang": "Hrvatski",
|
||||
"ingredients":"Sastojci",
|
||||
"nutrional":"Nutritivne činjenice",
|
||||
"capacity":"Za 100g ili 100ml",
|
||||
"energy":"Energija",
|
||||
"fats":"Mast",
|
||||
"saturated_fats":"Od čega zasićene",
|
||||
"carbohydrates":"Ugljikohidrati",
|
||||
"sugar":"Sa šećerom",
|
||||
"proteins":"Proteini",
|
||||
"salt":"Sol",
|
||||
"red":"Crno vino",
|
||||
"white":"Bijelo vino",
|
||||
"title":"Činjenice o Burgundskom vinu",
|
||||
"description": "Nutritivne činjenice o Pommardu 2023. proizvođača Domaine Pinte",
|
||||
"GR":"Grožđe",
|
||||
"CGR":"koncentrirani mošt od grožđa",
|
||||
"AR":"regulator kiselosti",
|
||||
"LT":"L-vinska kiselina",
|
||||
"GA":"arapska guma",
|
||||
"PS":"konzervans",
|
||||
"STR":"sulfiti",
|
||||
"SLR":"sumporov dioksid",
|
||||
"LZ":"lizozim"
|
||||
},
|
||||
"hu":{
|
||||
"lang": "Magyar",
|
||||
"ingredients":"Összetevők",
|
||||
"nutrional":"Táplálkozási adatok",
|
||||
"capacity":"100g vagy 100ml",
|
||||
"energy":"Energia",
|
||||
"fats":"Zsír",
|
||||
"saturated_fats":"Ebből telített zsírsavak",
|
||||
"carbohydrates":"Szénhidrátok",
|
||||
"sugar":"Cukorral",
|
||||
"proteins":"Fehérjék",
|
||||
"salt":"Só",
|
||||
"red":"Vörösbor",
|
||||
"white":"Fehérbor",
|
||||
"title":"Burgundi bor tények",
|
||||
"description": "A Domaine Pinte által termelt Pommard 2023 tápértékadatai ",
|
||||
"GR":"Szőlő",
|
||||
"CGR":"sűrített szőlőmust",
|
||||
"AR":"savtartalom-szabályozó",
|
||||
"LT":"L-borkősav",
|
||||
"GA":"gumiarábikum",
|
||||
"PS":"tartósítószer",
|
||||
"STR":"szulfitok",
|
||||
"SLR":"kén-dioxid",
|
||||
"LZ":"lizozim"
|
||||
},
|
||||
"it":{
|
||||
"lang": "Italiano",
|
||||
"ingredients":"Ingredienti",
|
||||
"nutrional":"Dati nutrizionali",
|
||||
"capacity":"Per 100g o 100ml",
|
||||
"energy":"Energia",
|
||||
"fats":"Grassi",
|
||||
"saturated_fats":"Di cui saturi",
|
||||
"carbohydrates":"Carboidrati",
|
||||
"sugar":"Con zucchero",
|
||||
"proteins":"Proteine",
|
||||
"salt":"Il sale",
|
||||
"red":"Vino rosso",
|
||||
"white":"Vino bianco",
|
||||
"title":"Fatti sul vino di Borgogna",
|
||||
"description": "Informazioni nutrizionali sul Pommard 2023 prodotto da Domaine Pinte",
|
||||
"GR":"Uva",
|
||||
"CGR":"mosto d'uva concentrato",
|
||||
"AR":"regolatore di acidità",
|
||||
"LT":"acido L-tartarico",
|
||||
"GA":"gomma arabica",
|
||||
"PS":"conservante",
|
||||
"STR":"solfiti",
|
||||
"SLR":"anidride solforosa",
|
||||
"LZ":"lisozima"
|
||||
},
|
||||
"lt":{
|
||||
"lang": "Lietuvių kalba",
|
||||
"ingredients":"Sudedamosios dalys",
|
||||
"nutrional":"Maistingumo faktai",
|
||||
"capacity":"100 g arba 100 ml",
|
||||
"energy":"Energijos",
|
||||
"fats":"Riebalai",
|
||||
"saturated_fats":"Iš jų sočiųjų riebalų rūgščių",
|
||||
"carbohydrates":"Angliavandeniai",
|
||||
"sugar":"Su cukrumi",
|
||||
"proteins":"Baltymai",
|
||||
"salt":"Druska",
|
||||
"red":"Raudonasis vynas",
|
||||
"white":"Baltasis vynas",
|
||||
"title":"Burgundijos vyno faktai",
|
||||
"description": "Maistingumo faktai apie Domaine Pinte gaminamą Pommard 2023 ",
|
||||
"GR":"Vynuogės",
|
||||
"CGR":"koncentruota vynuogių misa",
|
||||
"AR":"rūgštingumą reguliuojanti medžiaga",
|
||||
"LT":"L-vyno rūgštis",
|
||||
"GA":"gumiarabikas",
|
||||
"PS":"konservantas",
|
||||
"STR":"sulfitai",
|
||||
"SLR":"sieros dioksidas",
|
||||
"LZ":"lizocimas"
|
||||
},
|
||||
"mt":{
|
||||
"lang": "Malti",
|
||||
"ingredients":"Ingredjenti",
|
||||
"nutrional":"Fatti nutrittivi",
|
||||
"capacity":"Għal 100g jew 100ml",
|
||||
"energy":"Enerġija",
|
||||
"fats":"Xaħam",
|
||||
"saturated_fats":"Li minnhom saturati",
|
||||
"carbohydrates":"Karboidrati",
|
||||
"sugar":"Biz-zokkor",
|
||||
"proteins":"Proteini",
|
||||
"salt":"Melħ",
|
||||
"red":"Inbid aħmar",
|
||||
"white":"Inbid abjad",
|
||||
"title":"Fatti dwar l-Inbid ta' Bourgogne",
|
||||
"description": "Fatti nutrittivi dwar Pommard 2023 prodott minn Domaine Pinte",
|
||||
"GR":"Għeneb",
|
||||
"CGR":"most tal-għeneb ikkonċentrat",
|
||||
"AR":"regolatur tal-aċidità",
|
||||
"LT":"L-aċidu tartariku",
|
||||
"GA":"gomma Għarbija",
|
||||
"PS":"preservattiv",
|
||||
"STR":"sulfiti",
|
||||
"SLR":"dijossidu tal-kubrit",
|
||||
"LZ":"liżożima"
|
||||
},
|
||||
"pl":{
|
||||
"lang": "Polski",
|
||||
"ingredients":"Składniki",
|
||||
"nutrional":"Wartości odżywcze",
|
||||
"capacity":"Dla 100g lub 100ml",
|
||||
"energy":"Energia",
|
||||
"fats":"Tłuszcz",
|
||||
"saturated_fats":"W tym kwasy tłuszczowe nasycone",
|
||||
"carbohydrates":"Węglowodany",
|
||||
"sugar":"Z cukrem",
|
||||
"proteins":"Białka",
|
||||
"salt":"Sól",
|
||||
"red":"Czerwone wino",
|
||||
"white":"Białe wino",
|
||||
"title":"Fakty na temat wina burgundzkiego",
|
||||
"description": "Wartości odżywcze Pommard 2023 produkowanego przez Domaine Pinte",
|
||||
"GR":"Winogrona",
|
||||
"CGR":"skoncentrowany moszcz winogronowy",
|
||||
"AR":"regulator kwasowości",
|
||||
"LT":"kwas L-winowy",
|
||||
"GA":"guma arabska",
|
||||
"PS":"konserwant",
|
||||
"STR":"siarczyny",
|
||||
"SLR":"dwutlenek siarki",
|
||||
"LZ":"lizozym"
|
||||
},
|
||||
"ro":{
|
||||
"lang": "Română",
|
||||
"ingredients":"Ingrediente",
|
||||
"nutrional":"Informații nutriționale",
|
||||
"capacity":"Pentru 100g sau 100ml",
|
||||
"energy":"Energie",
|
||||
"fats":"Grăsime",
|
||||
"saturated_fats":"Din care saturate",
|
||||
"carbohydrates":"Carbohidrați",
|
||||
"sugar":"Cu zahăr",
|
||||
"proteins":"Proteine",
|
||||
"salt":"Sare",
|
||||
"red":"Vin roșu",
|
||||
"white":"Vin alb",
|
||||
"title":"Vinul de Burgundia fapte",
|
||||
"description": "Informații nutriționale despre Pommard 2023 produs de Domaine Pinte",
|
||||
"GR":"Struguri",
|
||||
"CGR":"must de struguri concentrat",
|
||||
"AR":"regulator de aciditate",
|
||||
"LT":"acid L-tartric",
|
||||
"GA":"gumă arabică",
|
||||
"PS":"conservant",
|
||||
"STR":"sulfiți",
|
||||
"SLR":"dioxid de sulf",
|
||||
"LZ":"lizozimă"
|
||||
},
|
||||
"sk":{
|
||||
"lang": "Slovenčina",
|
||||
"ingredients":"Zložky",
|
||||
"nutrional":"Výživové údaje",
|
||||
"capacity":"Na 100 g alebo 100 ml",
|
||||
"energy":"Energia",
|
||||
"fats":"Tuk",
|
||||
"saturated_fats":"Z toho nasýtené mastné kyseliny",
|
||||
"carbohydrates":"Sacharidy",
|
||||
"sugar":"S cukrom",
|
||||
"proteins":"Bielkoviny",
|
||||
"salt":"Soľ",
|
||||
"red":"Červené víno",
|
||||
"white":"Biele víno",
|
||||
"title":"Burgundské víno Fakty",
|
||||
"description": "Nutričné fakty o Pommard 2023 od Domaine Pinte",
|
||||
"GR":"Hrozno",
|
||||
"CGR":"mzahustený hroznový mušt",
|
||||
"AR":"regulátor kyslosti",
|
||||
"LT":"kyselina L-vínna",
|
||||
"GA":"arabská guma",
|
||||
"PS":"konzervačný prostriedok",
|
||||
"STR":"siričitany",
|
||||
"SLR":"oxid siričitý",
|
||||
"LZ":"lyzozým"
|
||||
},
|
||||
"sl":{
|
||||
"lang": "Slovenščina",
|
||||
"ingredients":"Sestavine",
|
||||
"nutrional":"Prehranske vrednosti",
|
||||
"capacity":"Za 100 g ali 100 ml",
|
||||
"energy":"Energija",
|
||||
"fats":"Maščobe",
|
||||
"saturated_fats":"Od tega nasičene maščobe",
|
||||
"carbohydrates":"Ogljikovi hidrati",
|
||||
"sugar":"S sladkorjem",
|
||||
"proteins":"Beljakovine",
|
||||
"salt":"Sol",
|
||||
"red":"Rdeče vino",
|
||||
"white":"Belo vino",
|
||||
"title":"Dejstva o burgundskem vinu",
|
||||
"description": "Prehranska dejstva o Pommardu 2023, ki ga proizvaja Domaine Pinte",
|
||||
"GR":"Grozdje",
|
||||
"CGR":"zgoščen grozdni mošt",
|
||||
"AR":"regulator kislosti",
|
||||
"LT":"L-vinska kislina",
|
||||
"GA":"arabski gumi",
|
||||
"PS":"konzervans",
|
||||
"STR":"sulfiti",
|
||||
"SLR":"žveplov dioksid",
|
||||
"LZ":"lizocim"
|
||||
},
|
||||
"sv":{
|
||||
"lang": "Svenska",
|
||||
"ingredients":"Ingredienser",
|
||||
"nutrional":"Näringsvärde",
|
||||
"capacity":"För 100 g eller 100 ml",
|
||||
"energy":"Energi",
|
||||
"fats":"Fett",
|
||||
"saturated_fats":"Varav mättat fett",
|
||||
"carbohydrates":"Kolhydrater",
|
||||
"sugar":"Med socker",
|
||||
"proteins":"Proteiner",
|
||||
"salt":"Salt",
|
||||
"red":"Rött vin",
|
||||
"white":"Vitt vin",
|
||||
"title":"Fakta om vin från Bourgogne",
|
||||
"description": "Näringsfakta om Pommard 2023 producerad av Domaine Pinte ",
|
||||
"GR":"Druvor",
|
||||
"CGR":"koncentrerad druvmust",
|
||||
"AR":"Reglering av surhetsgrad",
|
||||
"LT":"L-vinsyra",
|
||||
"GA":"Arabiskt gummi",
|
||||
"PS":"konserveringsmedel",
|
||||
"STR":"sulfiter",
|
||||
"SLR":"svaveldioxid",
|
||||
"LZ":"lysozym"
|
||||
}
|
||||
}
|
||||
33
data/wine/2023/aloxe-corton.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Aloxe Corton",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
33
data/wine/2023/bourgogne-aligote.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Bourgogne Aligoté",
|
||||
"year": "2023",
|
||||
"color": "white",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
34
data/wine/2023/bourgogne-hautes-cote-de-beaune.json
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Bourgogne",
|
||||
"parcel": "Hautes-Côtes de Beaune",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
34
data/wine/2023/bourgogne-mont-battois.json
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Bourgogne",
|
||||
"parcel": "Mont Battois",
|
||||
"year": "2023",
|
||||
"color": "white",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
33
data/wine/2023/bourgogne.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Bourgogne",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
33
data/wine/2023/chorey-les-beaune.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Chorey les Beaune",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
33
data/wine/2023/cote-de-beaune-village.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Côte de Beaune Village",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
33
data/wine/2023/pernand-vergelesses.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Pernand Vergelesses",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
33
data/wine/2023/pommard.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Pommard",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
34
data/wine/2023/savigny-les-beaune-narbantons.json
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Savigny les Beaune",
|
||||
"parcel": "1er Cru Les Narbantons",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
34
data/wine/2023/savigny-les-beaune-vermots.json
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Savigny les Beaune",
|
||||
"parcel": "Les Vermots",
|
||||
"year": "2023",
|
||||
"color": "white",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
33
data/wine/2023/savigny-les-beaune.json
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"winegrower": "Domaine Pinte",
|
||||
"product": "Savigny les Beaune",
|
||||
"year": "2023",
|
||||
"color": "red",
|
||||
"capacity":0.75,
|
||||
"region": "Bourgogne / Côte de Beaune",
|
||||
"alcohol":13,
|
||||
"energy":67,
|
||||
"fats":0.0,
|
||||
"saturated_fats":0.0,
|
||||
"carbohydrates":3.8,
|
||||
"sugar":0.9,
|
||||
"proteins":0.1,
|
||||
"salt":0.1,
|
||||
"composition":[
|
||||
{"id":"GR", "allergen": false},
|
||||
{"id":"CGR", "allergen": false},
|
||||
{"id":"AR",
|
||||
"components":[
|
||||
{"id":"LT", "allergen": false},
|
||||
{"id":"GA", "allergen": false}
|
||||
]
|
||||
},
|
||||
{"id":"PS",
|
||||
"components":[
|
||||
{"id":"STR", "allergen": true},
|
||||
{"id":"SLR", "allergen": true},
|
||||
{"id":"LZ", "allergen": true}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
font/Prociono.ttf
Normal file
5
icon/lang.svg
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M304 416H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h280v320zm-120.676-72.622A12 12 0 0 0 194.839 352h22.863c8.22 0 14.007-8.078 11.362-15.861L171.61 167.085a12 12 0 0 0-11.362-8.139h-32.489a12.001 12.001 0 0 0-11.362 8.139L58.942 336.139C56.297 343.922 62.084 352 70.304 352h22.805a12 12 0 0 0 11.535-8.693l9.118-31.807h60.211l9.351 31.878zm-39.051-140.42s4.32 21.061 7.83 33.21l10.8 37.531h-38.07l11.07-37.531c3.51-12.15 7.83-33.21 7.83-33.21h.54zM616 416H336V96h280c13.255 0 24 10.745 24 24v272c0 13.255-10.745 24-24 24zm-36-228h-64v-16c0-6.627-5.373-12-12-12h-16c-6.627 0-12 5.373-12 12v16h-64c-6.627 0-12 5.373-12 12v16c0 6.627 5.373 12 12 12h114.106c-6.263 14.299-16.518 28.972-30.023 43.206-6.56-6.898-12.397-13.91-17.365-20.933-3.639-5.144-10.585-6.675-15.995-3.446l-7.28 4.346-6.498 3.879c-5.956 3.556-7.693 11.421-3.735 17.117 6.065 8.729 13.098 17.336 20.984 25.726-8.122 6.226-16.841 12.244-26.103 17.964-5.521 3.41-7.381 10.556-4.162 16.19l7.941 13.896c3.362 5.883 10.935 7.826 16.706 4.276 12.732-7.831 24.571-16.175 35.443-24.891 10.917 8.761 22.766 17.102 35.396 24.881 5.774 3.556 13.353 1.618 16.717-4.27l7.944-13.903c3.213-5.623 1.37-12.76-4.135-16.171a312.737 312.737 0 0 1-26.06-18.019c21.024-22.425 35.768-46.289 42.713-69.85H580c6.627 0 12-5.373 12-12v-16c0-6.625-5.373-11.998-12-11.998z"/></svg>
|
||||
<!--
|
||||
Font Awesome Free 5.2.0 by @fontawesome - https://fontawesome.com
|
||||
License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
-->
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
BIN
img/2023/aloxe-corton.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
img/2023/bourgogne-aligote.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
img/2023/bourgogne-hautes-cote-de-beaune.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
img/2023/bourgogne-mont-battois.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
img/2023/bourgogne.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
img/2023/chorey-les-beaune.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
img/2023/cote-de-beaune-village.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
img/2023/pernand-vergelesses.webp
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
img/2023/pommard.webp
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
img/2023/savigny-les-beaune-narbantons.webp
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
img/2023/savigny-les-beaune-vermots.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
img/2023/savigny-les-beaune.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
45
index.php
Executable file
|
|
@ -0,0 +1,45 @@
|
|||
<?php
|
||||
|
||||
//Get parameters
|
||||
$parameters = $_SERVER['REQUEST_URI'];
|
||||
$regex = '/^\/winapp\/((\w{2})\/)?([\w-]+)\/(\d{4})\/?$/m';
|
||||
preg_match_all($regex, $parameters, $matches, PREG_SET_ORDER, 0);
|
||||
|
||||
$isOK = true;
|
||||
|
||||
if (sizeof($matches) === 1 && sizeof($matches[0]) === 5) {
|
||||
//Init parameters
|
||||
$lang = $matches[0][2];
|
||||
$product = $matches[0][3];
|
||||
$year = $matches[0][4];
|
||||
|
||||
$acceptLang = ['bg', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'fi', 'fr',
|
||||
'ga', 'hr', 'hu', 'it', 'lt', 'lv', 'mt', 'pl', 'ro', 'sk',
|
||||
'sl', 'sv'];
|
||||
|
||||
if ($lang != null) {
|
||||
$isOK = in_array($lang, $acceptLang);
|
||||
} else {
|
||||
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
|
||||
}
|
||||
|
||||
if ($isOK) {
|
||||
require 'core/core.php';
|
||||
$lang = in_array($lang, $acceptLang) ? $lang : 'en';
|
||||
$isOK = file_exists(dirname(__FILE__) . "/" . $data_path);
|
||||
}
|
||||
} else {
|
||||
$isOK = false;
|
||||
}
|
||||
|
||||
if (!$isOK) {
|
||||
http_response_code(404);
|
||||
require '404.html';
|
||||
} else {
|
||||
require 'core/layout.php';
|
||||
}
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||