Compare commits

...

7 commits
v1.0.0 ... main

Author SHA1 Message Date
e9c483f885 feat: rilascio 1.2.0, il widget parla italiano, inglese, tedesco e francese e di default segue la lingua del sito, anche con WPML o Polylang
All checks were successful
Release su wordpress.org / rilascio (push) Successful in 45s
2026-09-29 16:53:51 +02:00
368682bd07 feat: rilascio 1.1.0, piu' categorie insieme, periodo dal/al, parola nel titolo e scelta del carattere nel blocco e nello shortcode
All checks were successful
Release su wordpress.org / rilascio (push) Successful in 35s
2026-09-29 16:11:42 +02:00
1b1dda3281 fix: la traduzione italiana segue i termini di WordPress, Aggiungi e Layout invece di Metti e Formato, e chiama identificativi i comuni come fa l'altra stringa 2026-09-21 16:51:10 +02:00
544d2835b7 chore: rilascio 1.0.1, tag della directory in italiano perche' comuni e Pro Loco cercano eventi e sagre, non events
All checks were successful
Release su wordpress.org / rilascio (push) Successful in 33s
2026-09-10 14:53:19 +02:00
72fa4f5ce0 feat: traduzione italiana completa del plugin e del readme, pronta da importare su translate.wordpress.org 2026-09-09 12:43:55 +02:00
06ac81bda6 feat: banner e screenshot della pagina wordpress.org, con le didascalie nel readme
All checks were successful
Immagini della pagina wordpress.org / immagini (push) Successful in 24s
2026-09-09 12:10:55 +02:00
4c643ef5ac ci: l'icona della pagina wordpress.org si aggiorna da sola, senza spacciarla per un rilascio
All checks were successful
Immagini della pagina wordpress.org / immagini (push) Successful in 21s
2026-09-09 11:59:30 +02:00
17 changed files with 525 additions and 99 deletions

View file

@ -0,0 +1,79 @@
name: Immagini della pagina wordpress.org
# Le immagini della pagina pubblica (icona, banner, screenshot) NON stanno
# dentro al plugin: stanno in `assets/` del repository SVN, che wordpress.org
# tratta a parte e senza versioni. Per questo hanno un giro loro: cambiare
# l'icona non deve costringere a inventare un rilascio.
#
# Cosa mettere in .wordpress-org/ (i nomi sono obbligatori):
# icon-256x256.png icona nella directory e nel pannello di WordPress
# icon-128x128.png stessa icona per gli schermi normali
# banner-1544x500.png testata della pagina, retina
# banner-772x250.png testata della pagina, schermi normali
# screenshot-1.png ... numerate, con le didascalie in `== Screenshots ==`
# del readme.txt, nello stesso ordine
#
# Secrets: gli stessi del rilascio (WPORG_SVN_PASSWORD).
on:
push:
branches: [main]
paths: ['.wordpress-org/**']
workflow_dispatch:
env:
SVN_URL: https://plugins.svn.wordpress.org/piazza-in-festa
jobs:
immagini:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Strumenti (svn, rsync)
run: |
set -e
apt-get update -qq
apt-get install -y --no-install-recommends subversion rsync ca-certificates
- name: Copia di lavoro SVN (solo assets)
run: |
set -e
svn co --depth immediates "$SVN_URL" svn
svn up --set-depth infinity svn/assets
- name: Allinea le immagini
run: |
set -e
if [ -z "$(ls -A .wordpress-org 2>/dev/null)" ]; then
echo "Non c'e' niente in .wordpress-org/, non tocco la pagina." >&2
exit 1
fi
rsync -a --delete --exclude '.svn' .wordpress-org/ svn/assets/
cd svn
svn status | sed -n 's/^![[:space:]]*//p' | while IFS= read -r morto; do
svn rm --force "$morto"
done
svn add --force assets
svn status
- name: Pubblica
env:
SVN_USER: ${{ vars.WPORG_SVN_USERNAME || 'thisloke' }}
SVN_PASS: ${{ secrets.WPORG_SVN_PASSWORD }}
run: |
set -e
cd svn
# Senza modifiche non si commita: un `svn ci` a vuoto non fa danni ma
# sporca la cronologia della directory con revisioni inutili.
if [ -z "$(svn status)" ]; then
echo "Le immagini su wordpress.org sono gia' queste, niente da fare."
exit 0
fi
svn ci \
-m "Aggiorna le immagini della pagina" \
--username "$SVN_USER" \
--password "$SVN_PASS" \
--non-interactive --no-auth-cache --trust-server-cert

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

View file

@ -2,7 +2,7 @@
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 3,
"name": "piazza-in-festa/eventi",
"version": "1.0.0",
"version": "1.2.0",
"title": "Piazza in Festa",
"category": "widgets",
"icon": "calendar-alt",
@ -22,7 +22,12 @@
"tema": { "type": "string", "default": "chiaro" },
"colore": { "type": "string", "default": "" },
"titolo": { "type": "string", "default": "" },
"altezza": { "type": "string", "default": "320" }
"altezza": { "type": "string", "default": "320" },
"dal": { "type": "string", "default": "" },
"al": { "type": "string", "default": "" },
"cerca": { "type": "string", "default": "" },
"font": { "type": "string", "default": "" },
"lingua": { "type": "string", "default": "" }
},
"editorScript": "file:./index.js"
}

View file

@ -18,5 +18,5 @@ return array(
'wp-i18n',
'wp-server-side-render',
),
'version' => '1.0.0',
'version' => '1.0.1',
);

View file

@ -99,6 +99,17 @@
set({ categoria: v });
}
}),
campo(
'cerca',
__('Word in the title', 'piazza-in-festa'),
__('Optional, at least 3 letters, for instance: natale.', 'piazza-in-festa')
),
campo(
'dal',
__('Starting from', 'piazza-in-festa'),
__('Optional. Only events that start in the period, format YYYY-MM-DD.', 'piazza-in-festa')
),
campo('al', __('Until', 'piazza-in-festa'), __('Optional, format YYYY-MM-DD.', 'piazza-in-festa')),
campo('limite', __('How many events', 'piazza-in-festa'), __('From 1 to 20.', 'piazza-in-festa')),
el(SelectControl, {
label: __('Layout', 'piazza-in-festa'),
@ -132,6 +143,37 @@
}
}),
campo('colore', __('Accent colour', 'piazza-in-festa'), __('Hex code, for instance #b4315a.', 'piazza-in-festa')),
el(SelectControl, {
label: __('Language', 'piazza-in-festa'),
help: __('Event texts are shown translated when a translation is available.', 'piazza-in-festa'),
value: a.lingua,
options: [
{ label: __('Same as the site', 'piazza-in-festa'), value: '' },
{ label: 'Italiano', value: 'it' },
{ label: 'English', value: 'en' },
{ label: 'Deutsch', value: 'de' },
{ label: 'Français', value: 'fr' }
],
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
onChange: function (v) {
set({ lingua: v });
}
}),
el(SelectControl, {
label: __('Font', 'piazza-in-festa'),
value: a.font,
options: [
{ label: __('Visitor device font', 'piazza-in-festa'), value: '' },
{ label: 'Helvetica / Arial', value: 'helvetica' },
{ label: 'Georgia', value: 'serif' }
],
__next40pxDefaultSize: true,
__nextHasNoMarginBottom: true,
onChange: function (v) {
set({ font: v });
}
}),
campo('titolo', __('Heading', 'piazza-in-festa'), __('Leave it empty for no heading.', 'piazza-in-festa')),
campo('altezza', __('Starting height (px)', 'piazza-in-festa'), __('It adapts by itself once loaded.', 'piazza-in-festa'))
)

View file

@ -25,6 +25,11 @@ function pinfesta_defaults() {
'colore' => '',
'titolo' => '',
'altezza' => '320',
'dal' => '',
'al' => '',
'cerca' => '',
'font' => '',
'lingua' => '',
);
}
@ -97,8 +102,63 @@ function pinfesta_build_url( $args ) {
$query['regione'] = sanitize_text_field( $args['regione'] );
}
if ( in_array( $args['categoria'], pinfesta_categorie(), true ) ) {
$query['categoria'] = $args['categoria'];
// One category or several, comma separated. Unknown ones are dropped, so a
// typo widens the widget instead of emptying it.
$categorie = array();
foreach ( explode( ',', (string) $args['categoria'] ) as $item ) {
$item = trim( $item );
if ( in_array( $item, pinfesta_categorie(), true ) ) {
$categorie[] = $item;
}
}
if ( $categorie ) {
$query['categoria'] = implode( ',', array_unique( $categorie ) );
}
// Period: only events that start between these two dates (YYYY-MM-DD), for
// a page about Christmas or the summer. Anything that is not a date is
// ignored.
foreach ( array( 'dal', 'al' ) as $chiave_data ) {
$data = trim( (string) $args[ $chiave_data ] );
if ( preg_match( '/^\d{4}-\d{2}-\d{2}$/', $data ) ) {
$query[ $chiave_data ] = $data;
}
}
// A word in the title, for instance "natale" inside the markets.
$cerca = sanitize_text_field( $args['cerca'] );
if ( mb_strlen( $cerca ) >= 3 ) {
$query['cerca'] = mb_substr( $cerca, 0, 40 );
}
// Language of the widget: event texts (when translated), labels and links.
// Empty means "follow the site": the current locale, which multilingual
// plugins such as WPML or Polylang switch page by page. The service speaks
// Italian, English, German and French; any other language gets English,
// which a foreign visitor reads better than Italian.
$lingua = sanitize_key( (string) $args['lingua'] );
if ( '' === $lingua ) {
$lingua = substr( function_exists( 'determine_locale' ) ? determine_locale() : get_locale(), 0, 2 );
}
if ( ! in_array( $lingua, array( 'it', 'en', 'de', 'fr' ), true ) ) {
$lingua = 'en';
}
if ( 'it' !== $lingua ) {
$query['lingua'] = $lingua;
}
// The widget lives in an iframe and cannot inherit the site's font: the
// service offers a few safe stacks to pick from.
if ( in_array( $args['font'], array( 'helvetica', 'serif' ), true ) ) {
$query['font'] = $args['font'];
}
$limite = absint( $args['limite'] );

View file

@ -7,7 +7,9 @@
* read there is what you write here.
*
* [piazza-in-festa comuni="alba,barolo,la-morra" limite="5"]
* [piazza-in-festa regione="Piemonte" categoria="sagra_enogastronomica"]
* [piazza-in-festa regione="Piemonte" categoria="sagra_enogastronomica,mercatini"]
* [piazza-in-festa regione="Veneto" categoria="mercatini" cerca="natale" dal="2026-11-01" al="2027-01-06"]
* [piazza-in-festa comuni="alba" lingua="en"] (default: the language of the site)
*
* @package PiazzaInFesta
*/

View file

@ -1,138 +1,185 @@
# Traduzione italiana di Piazza in Festa.
# This file is distributed under the GPL-2.0-or-later.
msgid ""
msgstr ""
"Project-Id-Version: Piazza in Festa 1.0.0\n"
"Report-Msgid-Bugs-To: https://piazzainfesta.it/contatti\n"
"Project-Id-Version: Piazza in Festa 1.0.1\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it_IT\n"
"Language: it\n"
"PO-Revision-Date: 2026-09-21 12:00+0200\n"
"Last-Translator: thisloke\n"
"Language-Team: Italiano\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Domain: piazza-in-festa\n"
#: piazza-in-festa.php
msgid "Settings"
msgstr "Impostazioni"
#: includes/render.php
msgid "Piazza in Festa: set at least one town or a region."
msgstr "Piazza in Festa: indica almeno un comune o una regione."
#: includes/render.php
msgid "Upcoming local events"
msgstr "Eventi in arrivo in zona"
#: includes/settings.php
msgid "Service key"
msgstr "Chiave del servizio"
#: includes/settings.php
msgid "Optional. Leave it empty and the widget works anyway, with a small credit line at the bottom."
msgstr "Facoltativa. Lasciala vuota e il widget funziona lo stesso, con una riga piccola in fondo che dice da dove arrivano gli eventi."
#: includes/settings.php
#. Plugin Name of the plugin
#. Author of the plugin
msgid "Piazza in Festa"
msgstr "Piazza in Festa"
#: includes/settings.php
#. Plugin URI of the plugin
msgid "https://piazzainfesta.it/widget"
msgstr "https://piazzainfesta.it/widget"
#. Description of the plugin
msgid "Show the upcoming local events of the Italian towns you follow: village feasts, concerts, fairs, exhibitions. Shortcode and block, updated daily."
msgstr "Mostra i prossimi eventi dei comuni italiani che segui: sagre, concerti, fiere, mostre. Shortcode e blocco, aggiornati ogni giorno."
#. Author URI of the plugin
msgid "https://piazzainfesta.it"
msgstr "https://piazzainfesta.it"
msgid "Piazza in Festa: set at least one town or a region."
msgstr "Piazza in Festa: indica almeno un comune o una regione."
msgid "Upcoming local events"
msgstr "Prossimi eventi in zona"
msgid "Service key"
msgstr "Chiave del servizio"
msgid "Optional. Leave it empty and the widget works anyway, with a small credit line at the bottom."
msgstr "Facoltativa. Se la lasci vuota il widget funziona lo stesso, con una piccola firma in fondo."
msgid "Add the events with the block called Piazza in Festa, or with this shortcode:"
msgstr "Metti gli eventi con il blocco Piazza in Festa, oppure con questo shortcode:"
msgstr "Aggiungi gli eventi con il blocco Piazza in Festa, oppure con questo shortcode:"
#: includes/settings.php
#, php-format
msgid "Not sure about the identifiers of your towns? Build the widget here and copy the values: %s"
msgstr "Non sai come si scrivono i tuoi comuni? Costruisci il widget qui e copia i valori: %s"
msgstr "Non sei sicuro degli identificativi dei tuoi comuni? Costruisci il widget qui e copia i valori: %s"
msgid "Settings"
msgstr "Impostazioni"
#: blocks/eventi/index.js
msgid "All categories"
msgstr "Tutte le categorie"
#: blocks/eventi/index.js
msgid "No region"
msgstr "Nessuna regione"
#: blocks/eventi/index.js
msgid "Events to show"
msgstr "Quali eventi mostrare"
msgstr "Eventi da mostrare"
#: blocks/eventi/index.js
msgid "Towns"
msgstr "Comuni"
#: blocks/eventi/index.js
msgid "Comma separated identifiers, for instance: alba, barolo, la-morra"
msgstr "Identificativi separati da virgola, per esempio: alba, barolo, la-morra"
#: blocks/eventi/index.js
msgid "Or a whole region"
msgstr "Oppure una regione intera"
#: blocks/eventi/index.js
msgid "Category"
msgstr "Categoria"
#: blocks/eventi/index.js
msgid "How many events"
msgstr "Quanti eventi"
#: blocks/eventi/index.js
msgid "From 1 to 20."
msgstr "Da 1 a 20."
#: blocks/eventi/index.js
msgid "Look"
msgstr "Aspetto"
#: blocks/eventi/index.js
msgid "Theme"
msgstr "Tema"
#: blocks/eventi/index.js
msgid "Light"
msgstr "Chiaro"
#: blocks/eventi/index.js
msgid "Dark"
msgstr "Scuro"
#: blocks/eventi/index.js
msgid "Accent colour"
msgstr "Colore d'accento"
#: blocks/eventi/index.js
msgid "Hex code, for instance #b4315a."
msgstr "Codice esadecimale, per esempio #b4315a."
#: blocks/eventi/index.js
msgid "Heading"
msgstr "Titolo"
#: blocks/eventi/index.js
msgid "Leave it empty for no heading."
msgstr "Lascialo vuoto per non avere titolo."
#: blocks/eventi/index.js
msgid "Starting height (px)"
msgstr "Altezza iniziale (px)"
#: blocks/eventi/index.js
msgid "It adapts by itself once loaded."
msgstr "Si adatta da sola appena carica."
#: blocks/eventi/index.js
msgid "Piazza in Festa: set at least one town or a region in the block settings."
msgstr "Piazza in Festa: indica almeno un comune o una regione nelle impostazioni del blocco."
#: blocks/eventi/index.js
msgid "Layout"
msgstr "Aspetto"
msgstr "Layout"
#: blocks/eventi/index.js
msgid "List"
msgstr "Elenco"
#: blocks/eventi/index.js
msgid "Cards"
msgstr "Schede"
#: blocks/eventi/index.js
msgid "Carousel"
msgstr "Carosello"
msgid "Look"
msgstr "Aspetto"
msgid "Theme"
msgstr "Tema"
msgid "Light"
msgstr "Chiaro"
msgid "Dark"
msgstr "Scuro"
msgid "Accent colour"
msgstr "Colore di accento"
msgid "Hex code, for instance #b4315a."
msgstr "Codice esadecimale, per esempio #b4315a."
msgid "Heading"
msgstr "Titolo"
msgid "Leave it empty for no heading."
msgstr "Lascialo vuoto per non avere titolo."
msgid "Starting height (px)"
msgstr "Altezza iniziale (px)"
msgid "It adapts by itself once loaded."
msgstr "Si adatta da sola dopo il caricamento."
msgid "Piazza in Festa: set at least one town or a region in the block settings."
msgstr "Piazza in Festa: indica almeno un comune o una regione nelle impostazioni del blocco."
msgctxt "block title"
msgid "Piazza in Festa"
msgstr "Piazza in Festa"
msgctxt "block description"
msgid "Upcoming local events of the towns you follow."
msgstr "I prossimi eventi dei comuni che segui."
msgctxt "block keyword"
msgid "eventi"
msgstr "eventi"
msgctxt "block keyword"
msgid "events"
msgstr "eventi"
msgctxt "block keyword"
msgid "sagre"
msgstr "sagre"
msgctxt "block keyword"
msgid "calendar"
msgstr "calendario"
msgctxt "block keyword"
msgid "agenda"
msgstr "agenda"
msgid "Word in the title"
msgstr "Parola nel titolo"
msgid "Optional, at least 3 letters, for instance: natale."
msgstr "Facoltativa, almeno 3 lettere, per esempio: natale."
msgid "Starting from"
msgstr "Dal"
msgid "Optional. Only events that start in the period, format YYYY-MM-DD."
msgstr "Facoltativo. Solo gli eventi che iniziano nel periodo, formato AAAA-MM-GG."
msgid "Until"
msgstr "Al"
msgid "Optional, format YYYY-MM-DD."
msgstr "Facoltativo, formato AAAA-MM-GG."
msgid "Font"
msgstr "Carattere"
msgid "Visitor device font"
msgstr "Carattere del dispositivo del visitatore"
msgid "Language"
msgstr "Lingua"
msgid "Event texts are shown translated when a translation is available."
msgstr "I testi degli eventi compaiono tradotti quando c'è una traduzione."
msgid "Same as the site"
msgstr "Quella del sito"

172
languages/readme-it_IT.po Normal file
View file

@ -0,0 +1,172 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2026-09-09 12:00+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"Language: it\n"
"Project-Id-Version: Plugins - Piazza in Festa\n"
#. Short description.
#, gp-priority: high
msgid "Show the upcoming local events of the Italian towns you follow: village feasts, concerts, fairs, exhibitions. A block, a shortcode, updated daily."
msgstr "Mostra i prossimi eventi dei comuni italiani che segui: sagre, concerti, fiere, mostre. Un blocco, uno shortcode, aggiornato ogni giorno."
#. Plugin name.
#, gp-priority: high
msgid "Piazza in Festa"
msgstr "Piazza in Festa"
#. Found in faq paragraph.
msgid "You can set the theme (light or dark), the accent colour and the heading. The rest lives inside the frame, on purpose: that way your CSS cannot break the widget and the widget cannot break your layout."
msgstr "Puoi scegliere il tema (chiaro o scuro), il colore d'accento e il titolo. Il resto sta dentro al riquadro, ed è voluto: così il tuo CSS non può rompere il widget e il widget non può rompere la tua pagina."
#. Found in faq paragraph.
msgid "Yes, with a service key from Piazza in Festa, pasted in Settings > Piazza in Festa. Everything else in the plugin behaves the same either way."
msgstr "Sì, con una chiave del servizio di Piazza in Festa, incollata in Impostazioni > Piazza in Festa. Tutto il resto del plugin si comporta allo stesso modo, con o senza."
#. Found in faq paragraph.
msgid "No. The widget is an iframe loaded lazily by the browser: your pages are built and cached exactly as before, and your server never talks to ours."
msgstr "No. Il widget è un iframe che il browser carica solo quando serve: le tue pagine si costruiscono e si mettono in cache esattamente come prima, e il tuo server non parla mai con il nostro."
#. Found in faq paragraph.
msgid "Each event comes from a public document of a town, so the widget shows what has been published, not everything that happens. If you find a wrong or missing event, the page of the event on piazzainfesta.it has a link to report it."
msgstr "Ogni evento nasce da un documento pubblico di un comune, quindi il widget mostra quello che è stato pubblicato, non tutto quello che succede. Se trovi un evento sbagliato o mancante, la pagina dell'evento su piazzainfesta.it ha il link per segnalarlo."
#. Found in faq paragraph.
msgid "Up to twelve. For a wider area use <code>regione</code> instead, or place more than one widget."
msgstr "Fino a dodici. Per una zona più ampia usa <code>regione</code>, oppure metti più di un widget."
#. Found in faq paragraph.
msgid "All Italian towns, in every region. How many events a town has depends on how much it publishes: some publish a lot, some very little."
msgstr "Tutti i comuni italiani, in ogni regione. Quanti eventi ha un comune dipende da quanto pubblica: alcuni pubblicano molto, altri pochissimo."
#. Found in faq paragraph.
msgid "No. The plugin works right away, without registering anything."
msgstr "No. Il plugin funziona subito, senza registrare niente."
#. Found in faq header.
msgid "Can I style it like my site?"
msgstr "Posso adattarlo alla grafica del mio sito?"
#. Found in faq header.
msgid "Can I remove the credit line?"
msgstr "Posso togliere la riga con il credito?"
#. Found in faq header.
msgid "Does it slow my site down?"
msgstr "Rallenta il mio sito?"
#. Found in faq header.
msgid "The events are not the ones I expected"
msgstr "Gli eventi non sono quelli che mi aspettavo"
#. Found in faq header.
msgid "How many towns can one widget show?"
msgstr "Quanti comuni può mostrare un widget?"
#. Found in faq header.
msgid "Which towns are covered?"
msgstr "Quali comuni sono coperti?"
#. Found in faq header.
msgid "Do I need an account?"
msgstr "Serve un account?"
#. Found in installation paragraph.
msgid "The identifier of a town is the one you see in the address of its page on piazzainfesta.it: for La Morra it is <code>la-morra</code>. If you are not sure, build the widget at <a href=\"https://piazzainfesta.it/widget\">piazzainfesta.it/widget</a> and copy the values."
msgstr "L'identificativo di un comune è quello che vedi nell'indirizzo della sua pagina su piazzainfesta.it: per La Morra è <code>la-morra</code>. Se hai dubbi, costruisci il widget su <a href=\"https://piazzainfesta.it/widget\">piazzainfesta.it/widget</a> e copia i valori."
#. Found in installation list item.
msgid "In the block settings, type the identifiers of the towns you follow, separated by commas."
msgstr "Nelle impostazioni del blocco, scrivi gli identificativi dei comuni che segui, separati da virgola."
#. Found in installation list item.
msgid "Edit a page and add the block named <strong>Piazza in Festa</strong>, or write the shortcode <code>[piazza-in-festa comuni=\"alba,barolo\"]</code>."
msgstr "Apri una pagina e aggiungi il blocco <strong>Piazza in Festa</strong>, oppure scrivi lo shortcode <code>[piazza-in-festa comuni=\"alba,barolo\"]</code>."
#. Found in installation list item.
msgid "Install and activate the plugin."
msgstr "Installa e attiva il plugin."
#. Found in description paragraph.
msgid "As with any embedded content, that request reaches the service with the visitor's IP address and browser user agent. The plugin sends nothing from your server, stores nothing about your visitors, and sets no cookies of its own."
msgstr "Come per qualsiasi contenuto incorporato, quella richiesta arriva al servizio con l'indirizzo IP del visitatore e lo user agent del browser. Il plugin non manda niente dal tuo server, non conserva niente sui tuoi visitatori e non usa cookie propri."
#. Found in description paragraph.
msgid "When a visitor opens a page that contains the block or the shortcode, their browser loads a page from <code>https://piazzainfesta.it/embed</code> with the parameters you configured: the towns or the region, the categories, the optional period and word in the title, how many events to show, the language, and the appearance options (theme, colour, font, heading). If you saved a service key in the settings, the key is part of that address as well."
msgstr "Quando un visitatore apre una pagina che contiene il blocco o lo shortcode, il suo browser carica una pagina da <code>https://piazzainfesta.it/embed</code> con i parametri che hai configurato: i comuni o la regione, le categorie, l'eventuale periodo e la parola nel titolo, quanti eventi mostrare, la lingua e le opzioni di aspetto (tema, colore, carattere, titolo). Se hai salvato una chiave del servizio nelle impostazioni, anche la chiave fa parte di quell'indirizzo."
#. Found in description paragraph.
msgid "This plugin displays events served by <strong>Piazza in Festa</strong>, an external service run by the plugin author."
msgstr "Questo plugin mostra eventi serviti da <strong>Piazza in Festa</strong>, un servizio esterno gestito dall'autore del plugin."
#. Found in description paragraph.
msgid "The plugin is free and complete: every option described here works, with or without an account. The widget shows a small credit line at the bottom pointing back to Piazza in Festa. Site owners who prefer it without that line can ask the service for a key and paste it in the settings; that is an option of the service, not a feature locked inside this plugin."
msgstr "Il plugin è gratuito e completo: ogni opzione descritta qui funziona, con o senza account. Il widget mostra in fondo una riga piccola che rimanda a Piazza in Festa. Chi preferisce farne a meno può chiedere una chiave al servizio e incollarla nelle impostazioni; è un'opzione del servizio, non una funzione chiusa dentro al plugin."
#. Found in description paragraph.
msgid "Every event is reconstructed from a public document: an ordinance closing a street for the procession, a resolution granting patronage to the fair, an authorisation for the concert. Small towns included, the ones no manual calendar ever reaches. Titles and descriptions are written by AI systems reading those documents, so they can contain mistakes; each event links back to the town page where the original source is shown."
msgstr "Ogni evento è ricostruito da un documento pubblico: un'ordinanza che chiude una strada per la processione, una delibera che concede il patrocinio alla sagra, un'autorizzazione per il concerto. Compresi i comuni piccoli, quelli che nessun calendario compilato a mano raggiunge. Titoli e descrizioni sono scritti da sistemi di intelligenza artificiale che leggono quei documenti, quindi possono contenere errori; ogni evento rimanda alla pagina del comune, dove è mostrata la fonte originale."
#. Found in description paragraph.
msgid "You pick the towns you care about, or a whole region. The list updates by itself every day: nobody on your side has to type events in, and nothing is copied into your database."
msgstr "Scegli i comuni che ti interessano, o una regione intera. L'elenco si aggiorna da solo ogni giorno: da parte tua nessuno deve inserire eventi a mano, e nel tuo database non finisce niente."
#. Found in description paragraph.
msgid "Piazza in Festa collects the events of Italian towns from the notices that town halls and other public bodies are required to publish (the <em>albo pretorio</em>), and turns them into a readable calendar. This plugin puts that calendar on your site."
msgstr "Piazza in Festa raccoglie gli eventi dei comuni italiani dagli atti che i municipi e gli altri enti pubblici sono tenuti a pubblicare (l'<em>albo pretorio</em>), e li trasforma in un calendario leggibile. Questo plugin mette quel calendario sul tuo sito."
#. Found in description list item.
msgid "Privacy policy: <a href=\"https://piazzainfesta.it/privacy-policy\">piazzainfesta.it/privacy-policy</a>"
msgstr "Informativa sulla privacy: <a href=\"https://piazzainfesta.it/privacy-policy\">piazzainfesta.it/privacy-policy</a>"
#. Found in description list item.
msgid "Terms and conditions: <a href=\"https://piazzainfesta.it/termini-e-condizioni\">piazzainfesta.it/termini-e-condizioni</a>"
msgstr "Termini e condizioni: <a href=\"https://piazzainfesta.it/termini-e-condizioni\">piazzainfesta.it/termini-e-condizioni</a>"
#. Found in description list item.
msgid "Service: <a href=\"https://piazzainfesta.it\">Piazza in Festa</a>"
msgstr "Servizio: <a href=\"https://piazzainfesta.it\">Piazza in Festa</a>"
#. Found in description list item.
msgid "Nothing to maintain: no cron job, no cache to purge, no import."
msgstr "Niente da mantenere: nessun cron, nessuna cache da svuotare, nessuna importazione."
#. Found in description list item.
msgid "Light and dark theme, your own accent colour, your own heading."
msgstr "Tema chiaro e scuro, il tuo colore d'accento, il tuo titolo."
#. Found in description list item.
msgid "Filters by town, region and category, from village feasts to concerts, markets, exhibitions and sport."
msgstr "Filtri per comune, regione e categoria, dalle sagre ai concerti, ai mercati, alle mostre e allo sport."
#. Found in description list item.
msgid "A <strong>shortcode</strong>, <code>[piazza-in-festa comuni=\"alba,barolo,la-morra\" limite=\"5\"]</code>, for classic editor, widgets and page builders."
msgstr "Uno <strong>shortcode</strong>, <code>[piazza-in-festa comuni=\"alba,barolo,la-morra\" limite=\"5\"]</code>, per l'editor classico, i widget e i costruttori di pagine."
#. Found in description list item.
msgid "A <strong>block</strong> called Piazza in Festa, with a live preview while you edit."
msgstr "Un <strong>blocco</strong> che si chiama Piazza in Festa, con l'anteprima dal vivo mentre scrivi."
#. Found in description header.
msgid "External services"
msgstr "Servizi esterni"
#. Found in description header.
msgid "Free, and what is not"
msgstr "Gratis, e cosa non lo è"
#. Found in description header.
msgid "Where the events come from"
msgstr "Da dove arrivano gli eventi"
#. Found in description header.
msgid "What you get"
msgstr "Cosa ottieni"
#. Found in changelog list item.
#, gp-priority: low
msgid "First release: block, shortcode, filters by town, region and category, light and dark theme, accent colour, automatic height."
msgstr "Prima versione: blocco, shortcode, filtri per comune, regione e categoria, tema chiaro e scuro, colore d'accento, altezza automatica."

View file

@ -3,7 +3,7 @@
* Plugin Name: Piazza in Festa
* Plugin URI: https://piazzainfesta.it/widget
* Description: Show the upcoming local events of the Italian towns you follow: village feasts, concerts, fairs, exhibitions. Shortcode and block, updated daily.
* Version: 1.0.0
* Version: 1.2.0
* Requires at least: 6.5
* Requires PHP: 7.4
* Author: Piazza in Festa
@ -17,7 +17,7 @@
defined( 'ABSPATH' ) || exit;
define( 'PINFESTA_VERSION', '1.0.0' );
define( 'PINFESTA_VERSION', '1.2.0' );
define( 'PINFESTA_FILE', __FILE__ );
define( 'PINFESTA_DIR', plugin_dir_path( __FILE__ ) );
define( 'PINFESTA_URL', plugin_dir_url( __FILE__ ) );

View file

@ -1,10 +1,10 @@
=== Piazza in Festa ===
Contributors: thisloke
Tags: events, calendar, agenda, italy, local
Tags: eventi, sagre, comuni, pro loco, turismo
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
Stable tag: 1.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
@ -36,7 +36,7 @@ The plugin is free and complete: every option described here works, with or with
This plugin displays events served by **Piazza in Festa**, an external service run by the plugin author.
When a visitor opens a page that contains the block or the shortcode, their browser loads a page from `https://piazzainfesta.it/embed` with the parameters you configured: the towns or the region, the category, how many events to show, and the appearance options (theme, colour, heading). If you saved a service key in the settings, the key is part of that address as well.
When a visitor opens a page that contains the block or the shortcode, their browser loads a page from `https://piazzainfesta.it/embed` with the parameters you configured: the towns or the region, the categories, the optional period and word in the title, how many events to show, the language, and the appearance options (theme, colour, font, heading). If you saved a service key in the settings, the key is part of that address as well.
As with any embedded content, that request reaches the service with the visitor's IP address and browser user agent. The plugin sends nothing from your server, stores nothing about your visitors, and sets no cookies of its own.
@ -82,7 +82,26 @@ Yes, with a service key from Piazza in Festa, pasted in Settings > Piazza in Fes
You can set the theme (light or dark), the accent colour and the heading. The rest lives inside the frame, on purpose: that way your CSS cannot break the widget and the widget cannot break your layout.
== Screenshots ==
1. The cards layout: the next events of a few towns, with the poster of the event when the town published one.
2. The compact list, with a heading of your own, for a sidebar or a narrow column.
3. The carousel, a full width strip that scrolls sideways.
== Changelog ==
= 1.2.0 =
* The widget speaks Italian, English, German and French: event texts are translated when a translation is available, and labels and links follow. By default it follows the language of the site, including multilingual sites with WPML or Polylang.
= 1.1.0 =
* Several categories at once, comma separated in the shortcode.
* Period filter (`dal`, `al`): only events that start between two dates, for a page about Christmas or the summer.
* Word in the title (`cerca`), for instance "natale" inside the Christmas markets.
* Font choice for the widget: the visitor's device font, Helvetica or Georgia.
* The service now picks events by quality: posters and verified details first, no council notices, no months-long containers.
= 1.0.1 =
* Directory tags in Italian (eventi, sagre, comuni, pro loco, turismo), so that towns and Pro Loco can find the plugin. No code changes.
= 1.0.0 =
* First release: block, shortcode, filters by town, region and category, light and dark theme, accent colour, automatic height.