Merge branch 'dev' of framagit.org:/les/gancio into feat/add_user_theme_view_controls

This commit is contained in:
sedum 2022-11-29 19:32:50 +01:00
commit 4993c6c1b9
31 changed files with 659 additions and 543 deletions

View file

@ -1,7 +1,7 @@
All notable changes to this project will be documented in this file.
### UNRELEASED
- new plugin system - fix #17
- new plugin system - fix #177
- new "publish on telegram" plugin: (thanks @fadelkon)
- i18n refactoring
- people can now choose the language displayed - fix #171
@ -12,6 +12,8 @@ All notable changes to this project will be documented in this file.
- Wordpress plugin now supports MU installation
- add nominatim / openstreetmap feature (thanks @sedum)
- improve event import
- new chinese translation
- new portuguese translation
- add Apple touch icon - fix #200
- improve navbar layout
- improve event layout

View file

@ -22,6 +22,7 @@ v-container
v-data-table(
v-if='announcements.length'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:header-props='{ sortIcon: mdiChevronDown }'
:headers='headers'
:items='announcements')
template(v-slot:item.actions='{ item }')
@ -35,21 +36,21 @@ import { mapActions } from 'vuex'
import cloneDeep from 'lodash/cloneDeep'
import Editor from '../Editor'
import Announcement from '../Announcement'
import { mdiPlus, mdiChevronRight, mdiChevronLeft } from '@mdi/js'
import { mdiPlus, mdiChevronRight, mdiChevronLeft, mdiChevronDown } from '@mdi/js'
export default {
components: { Editor, Announcement },
data() {
return {
mdiPlus, mdiChevronRight, mdiChevronLeft,
mdiPlus, mdiChevronRight, mdiChevronLeft, mdiChevronDown,
valid: false,
dialog: false,
editing: false,
announcements: [],
loading: false,
headers: [
{ value: 'title', text: 'Title' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'title', text: this.$t('common.title') },
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
],
announcement: { title: '', announcement: '' }
}

View file

@ -4,7 +4,7 @@ v-container
v-spacer
v-text-field(v-model='search'
:append-icon='mdiMagnify' outlined rounded
label='Search'
:label="$t('common.search')"
single-line hide-details)
v-card-subtitle(v-html="$t('admin.collections_description')")
@ -75,6 +75,7 @@ v-container
:headers='filterHeaders'
:items='filters'
:hide-default-footer='filters.length < 5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }')
template(v-slot:item.actions='{ item }')
v-btn(@click='removeFilter(item)' color='error' icon)
@ -94,6 +95,7 @@ v-container
:headers='collectionHeaders'
:items='collections'
:hide-default-footer='collections.length < 5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:search='search')
template(v-slot:item.filters='{ item }')
@ -108,12 +110,12 @@ v-container
<script>
import get from 'lodash/get'
import debounce from 'lodash/debounce'
import { mdiPencil, mdiChevronLeft, mdiChevronRight, mdiMagnify, mdiPlus, mdiTagMultiple, mdiMapMarker, mdiDeleteForever, mdiCloseCircle } from '@mdi/js'
import { mdiPencil, mdiChevronLeft, mdiChevronRight, mdiMagnify, mdiPlus, mdiTagMultiple, mdiMapMarker, mdiDeleteForever, mdiCloseCircle, mdiChevronDown } from '@mdi/js'
export default {
data() {
return {
mdiPencil, mdiChevronRight, mdiChevronLeft, mdiMagnify, mdiPlus, mdiTagMultiple, mdiMapMarker, mdiDeleteForever, mdiCloseCircle,
mdiPencil, mdiChevronRight, mdiChevronLeft, mdiMagnify, mdiPlus, mdiTagMultiple, mdiMapMarker, mdiDeleteForever, mdiCloseCircle, mdiChevronDown,
loading: false,
dialog: false,
valid: false,
@ -128,14 +130,14 @@ export default {
tagName: '',
placeName: '',
collectionHeaders: [
{ value: 'name', text: 'Name' },
{ value: 'filters', text: 'Filters' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'name', text: this.$t('common.name') },
{ value: 'filters', text: this.$t('common.filter') },
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
],
filterHeaders: [
{ value: 'tags', text: 'Tags' },
{ value: 'places', text: 'Places' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'tags', text: this.$t('common.tags') },
{ value: 'places', text: this.$t('common.places') },
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
]
}
},

View file

@ -5,6 +5,7 @@ v-container
v-card-text
v-data-table(
:hide-default-footer='unconfirmedEvents.length<10'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:items='unconfirmedEvents'
:headers='headers')
@ -17,7 +18,7 @@ v-container
color='error') {{$t('common.delete')}}
</template>
<script>
import { mdiChevronLeft, mdiChevronRight } from '@mdi/js'
import { mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'
export default {
props: {
@ -25,15 +26,15 @@ export default {
},
data () {
return {
mdiChevronLeft, mdiChevronRight,
mdiChevronLeft, mdiChevronRight, mdiChevronDown,
valid: false,
dialog: false,
editing: false,
headers: [
{ value: 'title', text: 'Title' },
{ value: 'place.name', text: 'Place' },
{ value: 'when', text: 'When' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'title', text: this.$t('common.title') },
{ value: 'place.name', text: this.$t('common.place') },
{ value: 'when', text: this.$t('common.when') },
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
]
}
},

View file

@ -68,6 +68,7 @@ v-container
v-if='settings.trusted_instances.length'
:hide-default-footer='settings.trusted_instances.length<10'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:header-props='{ sortIcon: mdiChevronDown }'
:headers='headers'
:items='settings.trusted_instances')
template(v-slot:item.actions="{item}")
@ -79,13 +80,13 @@ v-container
import { mapActions, mapState } from 'vuex'
import get from 'lodash/get'
import axios from 'axios'
import { mdiDeleteForever, mdiPlus, mdiChevronLeft, mdiChevronRight } from '@mdi/js'
import { mdiDeleteForever, mdiPlus, mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'
export default {
name: 'Federation',
data ({ $store, $options }) {
return {
mdiDeleteForever, mdiPlus, mdiChevronLeft, mdiChevronRight,
mdiDeleteForever, mdiPlus, mdiChevronLeft, mdiChevronRight, mdiChevronDown,
instance_url: '',
instance_name: $store.state.settings.instance_name,
instance_place: $store.state.settings.instance_place,

View file

@ -10,6 +10,7 @@ v-container
:items-per-page='5'
:search='instancesFilter'
:hide-default-footer='instances.length<5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
dense :headers='instancesHeader'
@click:row='instanceSelected')
@ -24,6 +25,7 @@ v-container
:search='usersFilter'
:hide-default-footer='users.length<5'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:header-props='{ sortIcon: mdiChevronDown }'
dense :headers='usersHeader')
template(v-slot:item.blocked="{ item }")
v-icon(@click='toggleUserBlock(item)' v-text='item.blocked ? mdiCheckboxIntermediate : mdiCheckboxBlankOutline')
@ -34,6 +36,7 @@ v-container
:headers='resourcesHeader'
:hide-default-footer='resources.length<10'
:items-per-page='10'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }')
template(v-slot:item.content='{ item }')
span(v-html='item.data.content')
@ -62,33 +65,33 @@ v-container
import { mapState, mapActions } from 'vuex'
import get from 'lodash/get'
import { mdiDelete, mdiEye, mdiEyeOff, mdiDotsVertical, mdiCheckboxIntermediate,
mdiCheckboxBlankOutline, mdiChevronLeft, mdiChevronRight } from '@mdi/js'
mdiCheckboxBlankOutline, mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'
export default {
name: 'Moderation',
data () {
return {
mdiDelete, mdiEye, mdiEyeOff, mdiDotsVertical, mdiCheckboxIntermediate,
mdiCheckboxBlankOutline, mdiChevronLeft, mdiChevronRight,
mdiCheckboxBlankOutline, mdiChevronLeft, mdiChevronRight, mdiChevronDown,
instances: [],
resources: [],
users: [],
usersHeader: [
{ value: 'object.preferredUsername', text: 'Name' },
{ value: 'blocked', text: 'Blocked' }
{ value: 'object.preferredUsername', text: this.$t('common.name') },
{ value: 'blocked', text: this.$t('admin.blocked') }
],
instancesHeader: [
{ value: 'domain', text: 'Domain' },
{ value: 'name', text: 'Name' },
{ value: 'blocked', text: 'Blocked' },
{ value: 'users', text: 'known users' }
{ value: 'domain', text: this.$t('admin.domain') },
{ value: 'name', text: this.$t('common.name') },
{ value: 'blocked', text: this.$t('admin.blocked') },
{ value: 'users', text: this.$t('admin.known_users') }
],
resourcesHeader: [
{ value: 'created', text: 'Created' },
{ value: 'event', text: 'Event' },
{ value: 'user', text: 'user' },
{ value: 'content', text: 'Content' },
{ value: 'actions', text: 'Actions' }
{ value: 'created', text: this.$t('admin.created_at') },
{ value: 'event', text: this.$t('common.event') },
{ value: 'user', text: this.$t('common.user') },
{ value: 'content', text: this.$t('common.content') },
{ value: 'actions', text: this.$t('common.actions') }
],
usersFilter: '',
instancesFilter: ''

View file

@ -4,7 +4,7 @@ v-container
v-spacer
v-text-field(v-model='search'
:append-icon='mdiMagnify' outlined rounded
label='Search'
:label="$t('common.search')"
single-line hide-details)
v-card-subtitle(v-html="$t('admin.place_description')")
@ -49,6 +49,7 @@ v-container
:headers='headers'
:items='places'
:hide-default-footer='places.length < 5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:search='search')
template(v-slot:item.map='{ item }')
@ -61,7 +62,7 @@ v-container
</template>
<script>
import { mdiPencil, mdiChevronLeft, mdiChevronRight, mdiMagnify, mdiEye, mdiMapSearch } from '@mdi/js'
import { mdiPencil, mdiChevronLeft, mdiChevronRight, mdiMagnify, mdiEye, mdiMapSearch, mdiChevronDown } from '@mdi/js'
import { mapState } from 'vuex'
import debounce from 'lodash/debounce'
import get from 'lodash/get'
@ -69,7 +70,7 @@ import get from 'lodash/get'
export default {
data() {
return {
mdiPencil, mdiChevronRight, mdiChevronLeft, mdiMagnify, mdiEye, mdiMapSearch,
mdiPencil, mdiChevronRight, mdiChevronLeft, mdiMagnify, mdiEye, mdiMapSearch, mdiChevronDown,
loading: false,
dialog: false,
valid: false,
@ -79,10 +80,10 @@ export default {
search: '',
place: { name: '', address: '', id: null },
headers: [
{ value: 'name', text: 'Name' },
{ value: 'address', text: 'Address' },
{ value: 'name', text: this.$t('common.name') },
{ value: 'address', text: this.$t('common.address') },
{ value: 'map', text: 'Map' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
]
}
},

View file

@ -4,7 +4,7 @@ v-container
v-spacer
v-text-field(v-model='search'
:append-icon='mdiMagnify' outlined rounded
label='Search'
:label="$t('common.search')"
single-line hide-details)
v-btn(color='primary' text @click='newUserDialog = true') <v-icon v-text='mdiPlus'></v-icon> {{$t('common.new_user')}}
@ -32,6 +32,7 @@ v-container
:headers='headers'
:items='users'
:hide-default-footer='users.length<5'
:header-props='{ sortIcon: mdiChevronDown }'
:footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
:search='search')
template(v-slot:item.is_active='{item}')
@ -49,7 +50,7 @@ v-container
<script>
import { mapState } from 'vuex'
import get from 'lodash/get'
import { mdiClose, mdiMagnify, mdiCheck, mdiPlus, mdiInformation, mdiChevronLeft, mdiChevronRight } from '@mdi/js'
import { mdiClose, mdiMagnify, mdiCheck, mdiPlus, mdiInformation, mdiChevronLeft, mdiChevronRight, mdiChevronDown } from '@mdi/js'
export default {
name: 'Users',
@ -58,7 +59,7 @@ export default {
},
data () {
return {
mdiClose, mdiMagnify, mdiCheck, mdiPlus, mdiInformation, mdiChevronLeft, mdiChevronRight,
mdiClose, mdiMagnify, mdiCheck, mdiPlus, mdiInformation, mdiChevronLeft, mdiChevronRight, mdiChevronDown,
newUserDialog: false,
valid: false,
new_user: {
@ -67,10 +68,10 @@ export default {
},
search: '',
headers: [
{ value: 'email', text: 'Email' },
{ value: 'description', text: 'Description' },
{ value: 'email', text: this.$t('common.email') },
{ value: 'description', text: this.$t('common.description') },
{ value: 'is_active', text: 'Active' },
{ value: 'actions', text: 'Actions', align: 'right' }
{ value: 'actions', text: this.$t('common.actions'), align: 'right' }
]
}
},

View file

@ -3,7 +3,7 @@ span
v-list(dense nav)
v-list-group(:append-icon='mdiChevronUp' :value='true')
template(v-slot:activator)
v-list-item.text-overline Admin actions
v-list-item.text-overline {{$t('common.admin_actions')}}
//- Hide / confirm event
v-list-item(@click='toggle(false)')
@ -29,7 +29,7 @@ span
template(v-if='event.parentId')
v-list-item.text-overline Recurring event actions <a href="https://gancio.org/">?</a>
v-list-item.text-overline(v-html="$t('common.recurring_event_actions')")
//- Pause / Start to generate recurring event
v-list-item(@click='toggle(true)')

View file

@ -93,7 +93,12 @@
"show_map": "Mostra el mapa",
"latitude": "Latitud",
"longitude": "Longitud",
"getting_there": "Com arribar"
"getting_there": "Com arribar",
"plugins": "Complements",
"home": "Inici",
"help_translate": "Ajuda amb la traducció",
"calendar": "Calendari",
"about": "Sobre aquesta agenda"
},
"login": {
"description": "Amb la sessió iniciada pots afegir activitats noves.",
@ -159,7 +164,7 @@
"from": "Des de les",
"image_too_big": "La imatge és massa gran! Max 4 MB",
"interact_with_me_at": "Interacciona amb mi a",
"follow_me_description": "Entre les diverses maneres d'estar al dia de les activitats que es publiquen aquí a {title},\n pots seguir-nos al compte <u>{account}</u> des de Mastodon o altres, i afegir recursos des d'allà. <br/> <br/>\nSi no has sentit mai sobre «Mastodon» o «Fedivers», recomanem fer un cop d'ull a <a href='https://equipamentslliures.cat/divulgacio/fediverse'>aquesta breu introducció al Fedivers</a>. <br/> <br/> Introdueix la teva instància a sota (ex: kolektiva.social o mastodont.cat)",
"follow_me_description": "Entre les diverses maneres d'estar al dia de les activitats que es publiquen aquí a {title},\npots seguir-nos al compte <u>{account}</u> des de Mastodon o altres, i afegir recursos des d'allà. <br/> <br/>\nSi no has sentit mai sobre «Mastodon» o «Fedivers», recomanem fer un cop d'ull a <a href='https://framatube.org/w/9dRFC6Ya11NCVeYKn8ZhiD'>aquest vídeo introductori</a> i llegir-ne més a <a href='https://fedi.cat/fediverse'>aquest portal en català</a>. <br/> <br/> Introdueix la teva instància a sota (ex: kolektiva.social, mastodont.cat, ...)",
"interact_with_me": "Segueix-nos al fedivers",
"remove_recurrent_confirmation": "Estàs segur/a d'esborrar aquesta activitat periòdica?\nNo s'esborraran les ocurrències antigues, només es deixaran de crear les futures.",
"ics": "ICS",
@ -172,7 +177,9 @@
"remove_media_confirmation": "Confirmeu l'eliminació de la imatge?",
"download_flyer": "Baixa el flyer",
"alt_text_description": "Descripció per a persones amb discapacitat visual",
"choose_focal_point": "Tria el punt focal"
"choose_focal_point": "Tria el punt focal",
"address_description": "Quina és l'adreça completa del lloc?",
"address_description_osm": "Quina és l'adreça completa del lloc? (gràcies a la comunitat d'<a href='http://osm.org/copyright'>OpenStreetMap</a>)"
},
"admin": {
"place_description": "En el cas que un lloc és incorrecte o l'adreça ha de canviar, pots arreglar-ho.<br/>Tingues en compte que totes les activitats passades i futures associades amb aquest lloc també canviaran d'adreça.",
@ -223,8 +230,8 @@
"enable_trusted_instances": "Mostra les instàncies amigues",
"trusted_instances_help": "Les instàncies amigues apareixen en la capçalera, a la barra de navegació superior",
"trusted_instances_label": "Etiqueta de navegació a instàncies amigues",
"trusted_instances_label_default": "Instàncies amigables",
"trusted_instances_label_help": "L'etiqueta per defecte és 'Instàncies amigables'",
"trusted_instances_label_default": "Instàncies amigues",
"trusted_instances_label_help": "L'etiqueta per defecte és 'Instàncies amigues'",
"add_trusted_instance": "Afegeix una instància amiga",
"instance_place_help": "L'etiqueta per mostrar al menú de les altres instàncies amigues",
"delete_trusted_instance_confirm": "Segur que vols eliminar aquest element del menú d'instàncies amigues?",
@ -249,7 +256,7 @@
"new_blob": "Nou blob",
"blobs_description": "Els blobs són agrupacions d'activitats per etiquetes i llocs. Es mostren a la pàgina principal",
"edit_blob": "Edita el blob",
"enable_admin_user_confirm": "N'estàs segur que vols donar drets d'administrador a {user}?",
"enable_admin_user_confirm": "N'estàs segur/a de donar drets d'administració a {user}?",
"smtp_port": "Port SMTP",
"smtp_use_sendmail": "Utilitza sendmail",
"new_collection": "Col·lecció nova",
@ -257,7 +264,13 @@
"disable_admin_user_confirm": "N'estàs segur de suprimir els permisos d'administrador de {usuari}?",
"collections_description": "Les col·leccions són agrupacions d'esdeveniments per etiquetes i llocs. Es mostraran a la pàgina d'inici",
"smtp_secure": "SMTP segur (TLS o STARTTLS)",
"sender_email": "Correu remitent"
"sender_email": "Correu remitent",
"hide_thumbs": "Amaga les miniatures dels cartells",
"hide_calendar": "Amaga el calendari",
"fallback_image": "Cartell per defecte",
"config_plugin": "Configura el complement",
"header_image": "Imatge de capçalera",
"default_images": "Cartell per defecte"
},
"auth": {
"not_confirmed": "Encara no s'ha confirmat…",

View file

@ -92,7 +92,12 @@
"show_map": "Karte anzeigen",
"latitude": "Breite",
"longitude": "Länge",
"getting_there": "Anreise"
"getting_there": "Anreise",
"calendar": "Kalender",
"home": "Startseite",
"about": "Über",
"plugins": "Plugins",
"help_translate": "Hilf beim Übersetzen mit"
},
"admin": {
"delete_footer_link_confirm": "Möchtest du diesen Link löschen?",
@ -124,7 +129,7 @@
"wrong_domain_warning": "Die \"baseurl\" die in config.json konfiguriert ist <b>({baseurl})</b> unterscheidet sich von derjenigen <b>({url})</b> die du besuchst",
"instance_place_help": "Diese Textzeile wird im Menü der anderen befreundeten Instanzen angezeigt",
"place_description": "Falls ein Ort falsch ist oder sich die Adresse ändert, kannst du ihn ändern.<br/>Bitte beachte, dass alle Veranstaltungen, die mit diesem Ort verbunden sind, die Adresse ändern (auch zurückliegende).",
"enable_admin_user_confirm": "Achte darauf, dass du der nutzenden Person {user} Admin-Rechte hinzufügst",
"enable_admin_user_confirm": "Achte darauf, dass du der nutzenden Person {user} Admin-Rechte hinzufügst?",
"trusted_instances_help": "Befreundete Instanzen werden in der Navigationsleiste oben auf der Seite angezeigt",
"trusted_instances_label": "Navigationsbezeichnung zu Friend-Instanzen",
"trusted_instances_label_default": "Freundliche Instanzen",
@ -173,7 +178,13 @@
"smtp_hostname": "SMTP-Hostname",
"smtp_description": "<ul><li>Der Admin erhält eine E-Mail, wenn ein anonymes Ereignis hinzugefügt wird (falls aktiviert).</li><li>Der Admin erhält E-Mails mit der Aufforderung zur Registrierung (falls aktiviert).</li><li>Die nutzenden Personen erhalten eine E-Mail zur Bestätigung der angeforderten Registrierung.</li><li>Die nutzenden Personen erhalten eine E-Mail mit der Anmeldebestätigung.</li><li>Nutzende Personen erhalten eine E-Mail-Benachrichtigung, wenn sie direkt vom Admin registriert werden.</li><li>Nutzende Personen erhalten eine E-Mail, um ihr Passwort zu ändern, wenn sie es vergessen haben</li></ul>",
"smtp_test_button": "Versenden einer Test-E-Mail",
"smtp_test_success": "Eine Test-E-Mail wurde an {admin_email} gesendet, überprüfe deine Mailbox"
"smtp_test_success": "Eine Test-E-Mail wurde an {admin_email} gesendet, überprüfe deine Mailbox",
"fallback_image": "Ersatzbild",
"header_image": "Bild der Überschrift",
"default_images": "Standard Bilder",
"config_plugin": "Plugin Konfiguration",
"hide_thumbs": "Vorschaubilder ausblenden",
"hide_calendar": "Kalender verstecken"
},
"settings": {
"update_confirm": "Willst du deine Änderung speichern?",
@ -242,7 +253,7 @@
"follow_me_description": "Eine Möglichkeit, über die hier auf {title} veröffentlichten Veranstaltungen auf dem Laufenden zu bleiben, besteht darin, dem Account <u>{account}</u> aus dem Fediverse zu folgen, zum Beispiel über Mastodon, und von dort aus eventuell Ressourcen für eine Veranstaltung hinzuzufügen.<br/><br/>\nWenn Du noch nie von Mastodon und dem Fediverse gehört hast, empfehlen wir dir, diesen Artikel <a href='https://www.savjee.be/videos/simply-explained/mastodon-and-fediverse-explained/'> zu lesen</a>.<br/><br/>Gib unten deine Instanz ein (z.B. mastodon.social)",
"media_description": "Du kannst (optional) einen Flyer hinzufügen",
"edit_recurrent": "Bearbeite eine sich wiederholende Veranstaltung :",
"show_recurrent": "regelmäßige Veranstaltungen",
"show_recurrent": "wiederkehrende Termine",
"show_past": "auch ältere Veranstaltungen",
"only_future": "nur zukünftige Veranstaltungen",
"recurrent_description": "Wähle die Häufigkeit und Tage aus",
@ -253,10 +264,10 @@
"recurrent_1w_days": "Jeden {days}",
"recurrent_2w_days": "Jeden zweiten {days} eine",
"recurrent_1m_days": "Der {days} in jedem Monat",
"recurrent_2m_days": "Jeder {days} im Monat",
"recurrent_2m_days": "Der {days} jeden zweiten Monat",
"recurrent_1m_ordinal": "Jeden {n} {days} im Monat",
"each_week": "Jede Woche",
"recurrent_2m_ordinal": "Jeden {n} {days} im Monat",
"recurrent_2m_ordinal": "Der {n} {days} jeden zweiten Monat",
"each_month": "Jeden Monat",
"due": "bis",
"from": "von",
@ -266,7 +277,9 @@
"download_flyer": "Lade den Flyer herunter",
"remove_media_confirmation": "Möchtest du das Bild löschen?",
"alt_text_description": "Beschreibung für Menschen mit Sehbehinderungen",
"choose_focal_point": "Auswahl des Schwerpunkts"
"choose_focal_point": "Auswahl des Schwerpunkts",
"address_description": "Was ist die Adresse?",
"address_description_osm": "Wo ist die Adresse? (<a href='http://osm.org/copyright'>OpenStreetMap</a> contributors)"
},
"register": {
"first_user": "Admin erstellt",

View file

@ -4,26 +4,26 @@
"content": "Recebemos o pedido de registo. Vamos confirmar assim que possível."
},
"confirm": {
"content": "Olá, sua conta em <a href='{{config.baseurl}}'>{{config.title}}</a> foi confirmada. Escreve-nos para {{config.admin_email}} para qualquer informação.",
"subject": "Agora podes começar a publicar eventos"
"content": "Olá, sua conta em <a href='{{config.baseurl}}'>{{config.title}}</a> foi confirmada. Escreva para {{config.admin_email}} para obter qualquer informação.",
"subject": "Você pode agora começar a publicar eventos"
},
"event_confirm": {
"content": "Podes confirmar este evento em <a href='{{url}}'>esta página</a>"
"content": "Você pode confirmar este evento <a href='{{url}}'>nesta página</a>"
},
"test": {
"subject": "Sua configuração SMTP está a funcionar",
"content": "Este é um e-mail de teste, se estiveres a ler isto, a tua configuração está a funcionar."
"subject": "Sua configuração SMTP está funcionando",
"content": "Este é um e-mail de teste, se estiver lendo isto, sua configuração está funcionando."
},
"user_confirm": {
"subject": "Agora podes começar a publicar eventos",
"subject": "Você pode agora começar a publicar eventos",
"content": "Olá, sua conta em <a href='{{config.baseurl}}'>{{config.title}}</a> foi criada. <a href='{{config.baseurl}}/user_confirm/{{user.recover_code}}'>Confirme e escolha uma senha.</a>."
},
"admin_register": {
"subject": "Novo registro",
"content": "{{user.email}} pediu o registro em {{config.title}}: <br/><pre>{{user.description}}</pre><br/> Confirme <a href='{{ config.baseurl}}/admin'>aqui</a>."
"content": "{{user.email}} pediu o registro em {{config.title}}: <br/><pre>{{user.description}}</pre><br/> Confirme <a href='{{config.baseurl}}/admin'>aqui</a>."
},
"recover": {
"subject": "Recuperação de senha",
"content": "Olá, pediste a recuperação da tua senha em {{config.title}}. <a href='{{config.baseurl}}/recover/{{user.recover_code}}'>Clique aqui</a> para confirmar."
"content": "Olá, você solicitou a recuperação de sua senha em {{config.title}}. <a href='{{config.baseurl}}/recover/{{user.recover_code}}'>Clique aqui</a> para confirmar."
}
}

View file

@ -94,7 +94,10 @@
"show_map": "Show map",
"calendar": "Calendar",
"home": "Home",
"about": "About"
"about": "About",
"content": "Content",
"admin_actions": "Admin actions",
"recurring_event_actions": "Recurring event actions"
},
"login": {
"description": "By logging in you can publish new events.",
@ -183,7 +186,7 @@
"disable_user_confirm": "Are you sure you want to disable {user}?",
"delete_user_confirm": "Are you sure you want to remove {user}?",
"disable_admin_user_confirm": "Are you sure to remove admin permissions from {user}?",
"enable_admin_user_confirm": "Are sure to add admin permissions to {user}",
"enable_admin_user_confirm": "Are you sure to add admin permissions to {user}?",
"user_remove_ok": "User removed",
"user_create_ok": "User created",
"event_remove_ok": "Event removed",
@ -261,7 +264,11 @@
"header_image": "Header image",
"hide_thumbs": "Hide thumbs",
"hide_calendar": "Hide calendar",
"default_images": "Default images"
"default_images": "Default images",
"blocked": "Blocked",
"domain": "Domain",
"known_users": "Known users",
"created_at": "Created at"
},
"auth": {
"not_confirmed": "Not confirmed yet…",

View file

@ -91,7 +91,14 @@
"show_map": "Mostrar mapa",
"latitude": "Latitud",
"longitude": "Longitud",
"getting_there": "Cómo llegar"
"getting_there": "Cómo llegar",
"collections": "Colecciones",
"plugins": "Complementos",
"home": "Página principal",
"about": "Sobre el sitio",
"close": "Cerrar",
"help_translate": "Ayuda a traducir",
"calendar": "Calendario"
},
"login": {
"description": "Entrando podrás publicar nuevos eventos.",
@ -106,7 +113,7 @@
"not_valid_code": "Mmmmm algo no salió bien..."
},
"export": {
"intro": "A diferencia de las plataformas del capitalismo, que hacen todo lo posible para mantener datos y usuarios dentro de ellas, creemos las informaciones, así como las personas, deben ser libres. Para ello, puedes mantenerte enterado sobre los eventos que te interesan como mejor te parezca, sin necesariamente tener que pasar por este sitio.",
"intro": "A diferencia de las plataformas antisociales, que hacen todo lo posible para mantener datos y usuarios dentro de ellas, creemos que la información, así como las personas, debe ser libre. Por este motivo, puedes mantenerte enterado sobre los eventos que te interesan como mejor te parezca, sin necesariamente tener que pasar por este sitio.",
"email_description": "Puedes recibir por mail los eventos que te interesan.",
"insert_your_address": "Casilla de correo",
"feed_description": "Para seguir las actualizaciones desde un ordenador o teléfono inteligente sin la necesidad de abrir periódicamente el sitio, el método recomendado es usar los feeds RSS.</p>\n\n<p>Con rss feeds, utilizas una aplicación especial para recibir actualizaciones de los sitios que más te interesan, como por ejemplo éste. Es una buena manera de seguir muchos sitios muy rápidamente, sin la necesidad de crear una cuenta u otras complicaciones.</p>\n\n<li>Si tienes Android, te sugerimos <a href=\"https://f-droid.org/es/packages/com.nononsenseapps.feeder/\">Feeder</a> o Feeder</li>\n<li>Para iPhone/iPad puedes usar <a href=\"https://itunes.apple.com/ua/app/feeds4u/id1038456442?mt=8\">Feed4U</a></li>\n<li>En el caso de un ordenador aconsejamos Feedbro, se instala como plugin <a href=\"https://addons.mozilla.org/es-ES/firefox/addon/feedbroreader/\">de Firefox </a>o <a href=\"https://chrome.google.com/webstore/detail/feedbro/mefgmmbdailogpfhfblcnnjfmnpnmdfa\">de Chrome</a> y funciona con todos los principales sistemas.</li>\n<br/>\nAgregando este link a tu lector de feed, estarás siempre actualizado/a.",
@ -114,7 +121,7 @@
"list_description": "Si tienes un sitio web y quieres mostrar una lista de eventos, puedes usar el siguiente código"
},
"register": {
"description": "Los movimientos sociales necesitan organizarse y autofinanciarse. <br/>\nEste es un regalo para ustedes, úsenlo solamente para eventos con fines no comerciales y obviamente antifascistas, antisexistas y antirracistas.\n<br/> Antes de que puedas publicar, <strong> debemos aprobar la cuenta </strong>. Como imaginarás, <strong> detrás de este sitio hay personas de carne y hueso</strong>, por esto te pedimos escribir algo para hacernos saber que tipos de eventos te gustaría publicar.",
"description": "Los movimientos sociales necesitan organizarse y autofinanciarse. <br/>\n<br/>Antes de que puedas publicar, <strong> debemos aprobar la cuenta </strong>. Como imaginarás, <strong> detrás de este sitio hay personas de carne y hueso</strong>, por esto te pedimos escribir algo para hacernos saber que tipos de eventos te gustaría publicar.",
"error": "Error: ",
"complete": "Confirmaremos el registro lo antes posible.",
"first_user": "Administrador creado y activado"
@ -152,7 +159,7 @@
"each_month": "Cada mes",
"due": "a las",
"from": "Desde las",
"image_too_big": "La imagén es demasiado grande! Tamaño máx 4M",
"image_too_big": "La imagen no puede ser mayor a 4 MB",
"interact_with_me_at": "Sígueme en el fediverso en",
"show_recurrent": "Eventos recurrentes",
"show_past": "eventos pasados",
@ -166,7 +173,13 @@
"import_description": "Puedes importar eventos de otras plataformas y otras instancias mediante formatos estandars (ics y h-event)",
"edit_recurrent": "Editar evento recurrente:",
"updated": "Evento actualizado",
"saved": "Evento guardado"
"saved": "Evento guardado",
"choose_focal_point": "Elige el punto central",
"address_description_osm": "¿Cuál es la dirección? (colaboradores de <a href='http://osm.org/copyright'>OpenStreetMap</a>)",
"address_description": "¿Cuál es la dirección?",
"alt_text_description": "Descripción para personas con baja visión",
"download_flyer": "Descargar folleto",
"remove_media_confirmation": "¿Confirmas la eliminación de la imagen?"
},
"admin": {
"place_description": "En el caso de que un lugar sea incorrecto o cambie de dirección, puedes cambiarlo. <br/> Todos los eventos presentes y pasados asociados con este lugar cambiarán de dirección.",
@ -238,7 +251,24 @@
"smtp_test_success": "Un correo de prueba se ha enviado a {admin_email}. Por favos, comprueba tu bandeja de entrada",
"smtp_test_button": "Enviar correo de prueba",
"admin_email": "Correo del administrador",
"smtp_description": "<ul><li>El administrador debería recibir un correo cuando son añadidos eventos anónimos (si está habilitado).</li><li>El administrador debería recibir un correo de petición de registro (si está habilitado).</li><li>El usuario debería recibir un correo de petición de registro.</li><li>El usuario debería recibir un correo de confirmación de registro.</li><li>El usuario debería recibir un correo de confirmación cuando el administrador le subscriba directamente.</li><li>El usuario debería recibir un correo para restaurar la contraseña cuando la haya olvidado.</li></ul>"
"smtp_description": "<ul><li>El administrador debería recibir un correo cuando son añadidos eventos anónimos (si está habilitado).</li><li>El administrador debería recibir un correo de petición de registro (si está habilitado).</li><li>El usuario debería recibir un correo de petición de registro.</li><li>El usuario debería recibir un correo de confirmación de registro.</li><li>El usuario debería recibir un correo de confirmación cuando el administrador le subscriba directamente.</li><li>El usuario debería recibir un correo para restaurar la contraseña cuando la haya olvidado.</li></ul>",
"disable_admin_user_confirm": "¿Estás seguro que quieres quitar los permisos de administrador de {user}?",
"enable_admin_user_confirm": "¿Estás seguro que quieres conceder permisos de administrador a {user}?",
"smtp_port": "Puerto SMTP",
"smtp_secure": "SMTP Seguro (TLS o STARTTLS)",
"edit_collection": "Editar colección",
"config_plugin": "Configuración de complemento",
"fallback_image": "Imagen por defecto",
"header_image": "Imagan de encabezado",
"hide_thumbs": "Esconder miniaturas",
"hide_calendar": "Esconder calendario",
"default_images": "Imágenes por defecto",
"sender_email": "Correo de remitente",
"event_remove_ok": "Evento eliminado",
"smtp_use_sendmail": "Usar sendmail",
"wrong_domain_warning": "El parámetro baseurl configurado en config.json <b>({baseurl})</b> difiere del que estás visitando <b>({url})</b>",
"new_collection": "Nueva colección",
"collections_description": "Las colecciones son agrupaciones de eventos por etiquetas y ubicaciones. Serán desplegadas en la página de inicio"
},
"auth": {
"not_confirmed": "Todavía no hemos confirmado este email…",
@ -284,6 +314,8 @@
"setup": {
"completed": "Configuración completada",
"start": "Inicio",
"completed_description": "<p>Puedes ingresar con el siguiente usuario:<br/><br/>Usuario: <b>{email}</b><br/>Contraseña: <b>{password}<b/></p>"
"completed_description": "<p>Puedes ingresar con el siguiente usuario:<br/><br/>Usuario: <b>{email}</b><br/>Contraseña: <b>{password}<b/></p>",
"copy_password_dialog": "Sí, ¡tienes que copiar la contraseña!",
"https_warning": "¡Si estás visitando a través de HTTP, recuerda cambiar el parámetro baseurl en config.json si cambias a HTTPS!"
}
}

View file

@ -89,7 +89,13 @@
"tags": "Etiketak",
"close": "Itxi",
"blobs": "Mordoak",
"collections": "Bildumak"
"collections": "Bildumak",
"plugins": "Pluginak",
"help_translate": "Lagundu itzultzen",
"show_map": "Erakutsi mapa",
"calendar": "Egutegia",
"home": "Etxea",
"about": "Honi buruz"
},
"login": {
"description": "Saioa hasten baduzu ekitaldi berriak sortu ahal izango dituzu.",
@ -166,7 +172,9 @@
"remove_media_confirmation": "Irudiaren ezabaketa baieztatzen duzu?",
"alt_text_description": "Ikusmen-urritasunak dituztenentzako deskripzioa",
"choose_focal_point": "Aukeratu arretagunea",
"download_flyer": "Deskargatu eskuorria"
"download_flyer": "Deskargatu eskuorria",
"address_description": "Zein da helbidea?",
"address_description_osm": "Zein da helbidea? (<a href='http://osm.org/copyright'>OpenStreetMap</a> kolaboratzaileak)"
},
"admin": {
"place_description": "Lekua edo helbidea oker badago, alda dezakezu.<br/>Leku honekin lotutako iraganeko eta etorkizuneko ekitaldien helbidea aldatuko da.",
@ -249,8 +257,15 @@
"edit_collection": "Editatu bilduma",
"disable_admin_user_confirm": "Ziur al zaude {user}(r)i administratzaile baimenak kendu nahi dizkiozula?",
"collections_description": "Bildumak, etiketen eta lekuen arabera multzokatutako ekitaldiak dira. Hasierako orrialdean bistaratuko dira",
"enable_admin_user_confirm": "Ziur zaude {user}-(r)i administratzaile baimenak gehitu nahi dizkiozula",
"new_collection": "Bilduma berria"
"enable_admin_user_confirm": "Ziur zaude {user}-(r)i administratzaile baimenak gehitu nahi dizkiozula?",
"new_collection": "Bilduma berria",
"allow_geolocation": "Baimendu ekitaldiak geokokatzea",
"hide_thumbs": "Ezkutatu iruditxoak",
"hide_calendar": "Ezkutatu egutegia",
"config_plugin": "Pluginaren konfigurazioa",
"fallback_image": "Lehenetsitako irudia",
"header_image": "Goiburuko irudia",
"default_images": "Lehenetsitako irudiak"
},
"auth": {
"not_confirmed": "Oraindik baieztatu gabe dago…",

View file

@ -9,6 +9,7 @@ module.exports = {
it: 'Italiano',
nb: 'Norwegian Bokmål',
pl: 'Polski',
pt: 'Português',
sk: 'Slovak',
zh: '中国'
}

View file

@ -1,303 +1,310 @@
{
"common": {
"add_event": "Aggiungi evento",
"next": "Continua",
"export": "Esporta",
"send": "Invia",
"where": "Dove",
"address": "Indirizzo",
"when": "Quando",
"what": "Cosa",
"media": "Media",
"login": "Entra",
"email": "E-mail",
"password": "Password",
"register": "Registrati",
"description": "Descrizione",
"remove": "Elimina",
"hide": "Nascondi",
"search": "Cerca",
"edit": "Modifica",
"info": "Info",
"confirm": "Conferma",
"admin": "Amministra",
"users": "Utenti",
"events": "Eventi",
"places": "Luoghi",
"settings": "Opzioni",
"actions": "Azioni",
"deactivate": "Disattiva",
"remove_admin": "Rimuovi Admin",
"activate": "Attiva",
"save": "Salva",
"preview": "Anteprima",
"logout": "Esci",
"share": "Esporta",
"name": "Nome",
"associate": "Associa",
"edit_event": "Modifica evento",
"related": "Memoria storica",
"add": "Aggiungi",
"logout_ok": "Uscita correttamente",
"copy": "Copia",
"recover_password": "Recupera password",
"new_password": "Nuova password",
"new_user": "Nuovo utente",
"ok": "OK",
"cancel": "Annulla",
"enable": "Abilita",
"disable": "Disabilita",
"me": "Tu",
"password_updated": "Password modificata.",
"activate_user": "Confermato",
"displayname": "Nome mostrato",
"federation": "Federazione",
"set_password": "Imposta password",
"copy_link": "Copia link",
"send_via_mail": "Invia e-mail",
"add_to_calendar": "Aggiungi al calendario",
"instances": "Istanze",
"copied": "Copiato",
"embed": "Incorpora",
"embed_title": "Mostra questo evento sul tuo sito web",
"embed_help": "Copiando il seguente codice sul tuo sito web l'evento verrà incluso come qui di lato",
"feed": "Feed RSS",
"feed_url_copied": "URL copiato, incollalo nel tuo lettore di Feed RSS",
"follow_me_title": "Segui gli aggiornamenti dal fediverso",
"follow": "Segui",
"n_resources": "nessuna risorsa|una risorsa|{n} risorse",
"resources": "Risorse",
"moderation": "Moderazione",
"authorize": "Autorizza",
"title": "Titolo",
"user": "Utente",
"filter": "Filtra",
"event": "Evento",
"pause": "Pausa",
"start": "Avvia",
"fediverse": "Fediverso",
"skip": "Salta",
"delete": "Elimina",
"announcements": "Annunci",
"url": "URL",
"place": "Luogo",
"tags": "Etichette",
"theme": "Tema",
"reset": "Reset",
"import": "Importa",
"max_events": "N. massimo eventi",
"label": "Etichetta",
"collections": "Bolle",
"help_translate": "Aiuta a tradurre",
"show_map": "Mostra mappa",
"latitude": "Latitudine",
"longitude": "Longitudine",
"getting_there": "Come arrivare",
"calendar": "Calendario",
"home": "Home",
"about": "Cos'è"
},
"login": {
"description": "Entrando puoi pubblicare nuovi eventi.",
"check_email": "Controlla la tua posta (anche lo spam).",
"not_registered": "Non sei registrata?",
"forgot_password": "Dimenticato la password?",
"error": "Errore durante il login, controlla i dati.",
"insert_email": "Inserisci l'indirizzo e-mail",
"ok": "Tutto rego"
},
"recover": {
"not_valid_code": "Mmmmm qualcosa è andato storto."
},
"export": {
"intro": "Contrariamente alle piattaforme del capitalismo, che fanno di tutto per tenere i dati e gli utenti al loro interno, crediamo che le informazioni, come le persone, debbano essere libere. Per questo puoi rimanere aggiornata sugli eventi che vuoi, come meglio credi, senza necessariamente passare da questo sito.",
"email_description": "Puoi ricevere via posta elettronica gli eventi che ti interessano.",
"insert_your_address": "Inserisci il tuo indirizzo e-mail",
"feed_description": "Per seguire gli aggiornamenti da computer o smartphone senza la necessità di aprire periodicamente il sito, il metodo consigliato è quello dei Feed RSS.</p>\n\n <p>Con i feed rss utilizzi un'apposita applicazione per ricevere aggiornamenti dai siti che più ti interessano. È un buon metodo per seguire anche molti siti in modo molto rapido, senza necessità di creare un account o altre complicazioni.</p>\n\n<li>Se hai Android, ti consigliamo <a href=\"https://f-droid.org/en/packages/net.frju.flym\">Flym</a> o Feeder</li>\n<li>Per iPhone/iPad puoi usare <a href=\"https://itunes.apple.com/ua/app/feeds4u/id1038456442?mt=8\">Feed4U</a></li>\n<li>Per il computer fisso/portatile consigliamo Brief, da installare all'interno <a href=\"https://addons.mozilla.org/it/firefox/addon/brief/\">di Firefox </a> e compatibile con tutti i principali sistemi operativi.</li>\n<br/>\nAggiungendo questo link al tuo lettore di feed, rimarrai aggiornata.",
"ical_description": "I computer e gli smartphone sono comunemente attrezzati con un'applicazione per gestire un calendario. A questi programmi solitamente è possibile far importare un calendario remoto.",
"list_description": "Se hai un sito web e vuoi mostrare una lista di eventi, puoi usare il seguente codice"
},
"register": {
"description": "I movimenti hanno bisogno di organizzarsi e autofinanziarsi. <br/>\nUsatelo solo per eventi non commerciali, antifascisti, antisessisti, antirazzisti. <br/>Prima di poter pubblicare <strong>dobbiamo approvare l'account</strong>, considera che <strong>dietro questo sito ci sono delle persone</strong> di carne e sangue, scrivici quindi due righe per farci capire che eventi vorresti pubblicare.",
"error": "Errore: ",
"complete": "Confermeremo la registrazione quanto prima.",
"first_user": "Amministratore creato e attivo"
},
"event": {
"anon": "Anonimo",
"anon_description": "Puoi inserire un evento senza registrarti o fare il login, ma in questo caso dovrai aspettare che qualcuno lo legga confermando che si tratta di un evento adatto a questo spazio, delegando questa scelta. Inoltre non sarà possibile modificarlo.<br/><br/> \nPuoi invece fare il <a href='/login'>login</a> o <a href='/register'>registrarti</a>, altrimenti vai avanti, lo confermeremo appena possibile. ",
"same_day": "Stesso giorno",
"what_description": "Titolo",
"description_description": "Descrizione",
"tag_description": "Etichetta",
"media_description": "Puoi aggiungere un volantino (opzionale)",
"added": "Evento aggiunto",
"saved": "Evento salvato",
"added_anon": "Evento aggiunto, verrà confermato quanto prima.",
"updated": "Evento aggiornato",
"where_description": "Dov'è il gancio? Se il posto non è presente potrai crearlo.",
"coordinates_search": "Ricerca coordinate",
"coordinates_search_description": "Puoi ricercare il posto per nome, o incollare la coppia di coordinate.",
"confirmed": "Evento confermato",
"not_found": "Evento non trovato",
"remove_confirmation": "Vuoi eliminare questo evento?",
"remove_recurrent_confirmation": "Sei sicura di voler eliminare questo evento ricorrente?\nGli eventi passati verranno mantenuti ma non ne verranno creati altri.",
"recurrent": "Ricorrente",
"edit_recurrent": "Modifica evento ricorrente:",
"show_recurrent": "appuntamenti ricorrenti",
"show_past": "eventi passati",
"recurrent_description": "Scegli la frequenza e seleziona i giorni",
"multidate_description": "Un festival o una tre giorni? Scegli quando comincia e quando finisce",
"multidate": "Più giorni",
"normal": "Normale",
"normal_description": "Scegli il giorno.",
"recurrent_1w_days": "Ogni {days}",
"recurrent_2w_days": "Un {days} ogni due",
"recurrent_1m_days": "Il giorno {days} di ogni mese",
"recurrent_2m_days": "Il giorno {days} ogni due mesi",
"recurrent_1m_ordinal": "Il {n} {days} di ogni mese",
"recurrent_2m_ordinal": "Il {n} {days} un mese sì e uno no",
"each_week": "Ogni settimana",
"each_2w": "Ogni due settimane",
"each_month": "Ogni mese",
"due": "alle",
"from": "Dalle",
"image_too_big": "L'immagine non può essere più grande di 4MB",
"interact_with_me": "Seguimi dal fediverso",
"follow_me_description": "Tra i vari modi di rimanere aggiornati degli eventi pubblicati qui su {title},\npuoi seguire l'account <u>{account}</u> dal fediverso, ad esempio via Mastodon, ed eventualmente aggiungere risorse ad un evento da lì.<br/><br/>\nSe non hai mai sentito parlare di Mastodon e del fediverso ti consigliamo di leggere <a href='https://cagizero.wordpress.com/2018/10/25/cose-mastodon/'>questo articolo</a>.<br/><br/> Inserisci la tua istanza qui sotto (es. mastodon.cisti.org o mastodon.bida.im)",
"only_future": "solo eventi futuri",
"interact_with_me_at": "Seguimi nel fediverso su",
"import_ICS": "Importa da ICS",
"import_URL": "Importa da URL (ics o h-event)",
"ics": "ICS",
"import_description": "Puoi importare eventi da altre piattaforme e da altre istanze attraverso i formati standard (ics e h-event)",
"alt_text_description": "Descrizione per persone con disabilità visive",
"choose_focal_point": "Scegli il punto centrale cliccando",
"remove_media_confirmation": "Confermi l'eliminazione dell'immagine?",
"download_flyer": "Scarica volantino"
},
"admin": {
"place_description": "Nel caso in cui un luogo sia errato o cambi indirizzo, puoi modificarlo.<br/>Considera che tutti gli eventi associati a questo luogo cambieranno indirizzo (anche quelli passati).",
"event_confirm_description": "Puoi confermare qui gli eventi inseriti da utenti anonimi",
"delete_user": "Elimina",
"remove_admin": "Rimuovi admin",
"disable_user_confirm": "Vuoi disabilitare {user}?",
"delete_user_confirm": "Vuoi rimuovere {user}?",
"user_remove_ok": "Utente eliminato",
"user_create_ok": "Utente creato",
"allow_registration_description": "Vuoi abilitare la registrazione?",
"allow_anon_event": "Si possono inserire eventi anonimi (previa conferma)?",
"allow_recurrent_event": "Abilita eventi ricorrenti",
"allow_geolocation": "Abilita la geolocalizzazione degli eventi",
"recurrent_event_visible": "Appuntamenti ricorrenti visibili di default",
"federation": "Federazione / ActivityPub",
"enable_federation": "Abilita la federazione",
"enable_federation_help": "Sarà possibile seguire questa istanza dal fediverso",
"add_instance": "Aggiungi istanza",
"select_instance_timezone": "Fuso orario",
"instance_timezone_description": "Gancio è pensato per raccogliere gli eventi di un luogo specifico come ad esempio una città. Scrivendo e selezionando il fuso orario di questo luogo, tutti gli orari saranno mostrati e inseriti secondo quanto scelto.",
"enable_resources": "Abilita risorse",
"enable_resources_help": "Permette di aggiungere risorse agli eventi dal fediverso",
"hide_boost_bookmark": "Nasconde n. condivisioni e segnalibri",
"hide_boost_bookmark_help": "Nasconde le piccole icone che mostrano il numero di boost e segnalibri in arrivo dal fediverso",
"block": "Blocca",
"unblock": "Sblocca",
"user_add_help": "Manderemo un'e-mail al nuovo utente con le istruzioni per confermare l'iscrizione e scegliere una password",
"resources": "Risorse",
"hide_resource": "Nascondi risorsa",
"show_resource": "Mostra risorsa",
"delete_resource": "Elimina risorsa",
"delete_resource_confirm": "Sei sicurǝ di voler eliminare questa risorsa?",
"block_user": "Blocca questo utente",
"user_blocked": "L'utente {user} non potrà più aggiungere risorse",
"filter_instances": "Filtra istanze",
"filter_users": "Filtra utenti",
"instance_name": "Nome istanza",
"favicon": "Logo",
"user_block_confirm": "Confermi di voler bloccare l'utente {user}?",
"instance_block_confirm": "Confermi di voler bloccare l'istanza {instance}?",
"delete_announcement_confirm": "Vuoi eliminare questo l'annuncio?",
"announcement_remove_ok": "Annuncio rimosso",
"announcement_description": "In questa sezione puoi inserire annunci che rimarranno in homepage",
"instance_locale": "Lingua predefinita",
"instance_locale_description": "La lingua utilizzata per mostrare le pagine è quella preferita dall'utente. In alcuni casi però dobbiamo mostrare dei messaggi per tutti allo stesso modo (ad esempio quando pubblichiamo via ActivityPub o nell'invio di alcune e-mail). In questi casi useremo la lingua selezionata qui sopra.",
"instance_place": "Luogo indicativo di questa istanza",
"title_description": "Viene usato nel titolo della pagina, nell'oggetto delle e-mail, nell'esportazione dei flussi RSS e degli ICS.",
"description_description": "Compare nell'intestazione accanto al titolo",
"instance_name_help": "Nome dell'account ActivityPub da seguire",
"enable_trusted_instances": "Abilita istanze amiche",
"trusted_instances_help": "Le istanze amiche compariranno nella barra di navigazione in cima alla pagina",
"trusted_instances_label": "Etichetta di navigazione alle istanze amiche",
"trusted_instances_label_default": "Istanze amiche",
"trusted_instances_label_help": "L'etichetta di default è 'Istanze amiche'",
"add_trusted_instance": "Aggiungi un'istanza amica",
"instance_place_help": "Verrà mostrata questa stringa nel menù delle altre istanze amiche",
"delete_trusted_instance_confirm": "Vuoi davvero eliminare questa voce dal menù delle istanze amiche?",
"is_dark": "Tema scuro",
"add_link": "Aggiungi link",
"footer_links": "Collegamenti del piè di pagina",
"delete_footer_link_confirm": "Vuoi eliminare questo collegamento?",
"edit_place": "Modifica luogo",
"new_announcement": "Nuovo annuncio",
"show_smtp_setup": "Impostazioni email",
"widget": "Widget",
"smtp_description": "<ul><li>L'amministratore riceve una email quando viene aggiunto un evento anonimo (se abilitati).</li><li>L'amministratore riceve le mail di richiesta di registrazione (se abilitata).</li><li>Le persone ricevono una mail di conferma della registrazione richiesta.</li><li>Le persone ricevono le email della registrazione confermata.</li><li>Le persone ricevono una mail di avviso quando vengono registrate direttamente da admin.</li><li>Le persone ricevono la mail per modificare la password quando l'hanno dimenticata</li></ul>",
"smtp_hostname": "SMTP Hostname",
"smtp_test_success": "Una mail di test è stata inviata all'indirizzo {admin_email}, controlla la tua casella di posta",
"smtp_test_button": "Invia una mail di prova",
"admin_email": "E-mail dell'admin",
"new_collection": "Crea bolla",
"wrong_domain_warning": "Il \"baseurl\" configurato in config.json <b>({baseurl})</b> è diverso da quello che stai visitando <b>({url})</b>",
"collections_description": "Le bolle sono raggruppamenti di eventi per tag e posti.",
"edit_collection": "Modifica bolla",
"config_plugin": "Configura plugin"
},
"auth": {
"not_confirmed": "Non ancora confermato…",
"fail": "Autenticazione fallita. Sicura la password è giusta? E l'e-mail?"
},
"settings": {
"update_confirm": "Vuoi salvare le modifiche?",
"change_password": "Cambia password",
"password_updated": "Password modificata.",
"danger_section": "Sezione pericolosa",
"remove_account": "Premendo il seguente tasto il tuo utente verrà eliminato. Gli eventi da te pubblicati invece no.",
"remove_account_confirm": "Stai per eliminare definitivamente il tuo account"
},
"error": {
"nick_taken": "Questo nome utente è già presente.",
"email_taken": "Questa e-mail è già registrata."
},
"confirm": {
"title": "Conferma utente",
"not_valid": "Qualcosa è andato storto.",
"valid": "Il tuo account è stato confermato, ora puoi <a href=\"/login\">entrare</a>"
},
"ordinal": {
"1": "primo",
"2": "secondo",
"3": "terzo",
"4": "quarto",
"5": "quinto",
"-1": "ultimo"
},
"validators": {
"required": "Campo {fieldName} necessario",
"email": "Inserisci un'e-mail valida"
},
"about": "\n <p> <a href='https://gancio.org'> Gancio </a> è un'agenda condivisa per le comunità locali. </p>\n ",
"oauth": {
"authorization_request": "L'applicazione esterna <code>{app}</code> richiede l'autorizzazione a svolgere le sequenti attività su <code>{instance_name}</code>:",
"redirected_to": "Dopo la conferma sarai reindirizzata all'indirizzo <code>{url}</code>",
"scopes": {
"event:write": "Pubblicare/modificare i tuoi eventi"
}
},
"setup": {
"completed": "Setup completato",
"completed_description": "<p>Puoi entrare con le seguenti credenziali:<br/><br/>Utente: <b>{email}</b><br/>Password: <b>{password}<b/></p>",
"copy_password_dialog": "Sì, devi copiare la password!",
"start": "Inizia",
"https_warning": "Stai visitando il setup da HTTP, ricorda di cambiare il baseurl nel config.json quando passerai ad HTTPS!"
"common": {
"add_event": "Aggiungi evento",
"next": "Continua",
"export": "Esporta",
"send": "Invia",
"where": "Dove",
"address": "Indirizzo",
"when": "Quando",
"what": "Cosa",
"media": "Media",
"login": "Entra",
"email": "E-mail",
"password": "Password",
"register": "Registrati",
"description": "Descrizione",
"remove": "Elimina",
"hide": "Nascondi",
"search": "Cerca",
"edit": "Modifica",
"info": "Info",
"confirm": "Conferma",
"admin": "Amministra",
"users": "Utenti",
"events": "Eventi",
"places": "Luoghi",
"settings": "Opzioni",
"actions": "Azioni",
"deactivate": "Disattiva",
"remove_admin": "Rimuovi Admin",
"activate": "Attiva",
"save": "Salva",
"preview": "Anteprima",
"logout": "Esci",
"share": "Esporta",
"name": "Nome",
"associate": "Associa",
"edit_event": "Modifica evento",
"related": "Memoria storica",
"add": "Aggiungi",
"logout_ok": "Uscita correttamente",
"copy": "Copia",
"recover_password": "Recupera password",
"new_password": "Nuova password",
"new_user": "Nuovo utente",
"ok": "OK",
"cancel": "Annulla",
"enable": "Abilita",
"disable": "Disabilita",
"me": "Tu",
"password_updated": "Password modificata.",
"activate_user": "Confermato",
"displayname": "Nome mostrato",
"federation": "Federazione",
"set_password": "Imposta password",
"copy_link": "Copia link",
"send_via_mail": "Invia e-mail",
"add_to_calendar": "Aggiungi al calendario",
"instances": "Istanze",
"copied": "Copiato",
"embed": "Incorpora",
"embed_title": "Mostra questo evento sul tuo sito web",
"embed_help": "Copiando il seguente codice sul tuo sito web l'evento verrà incluso come qui di lato",
"feed": "Feed RSS",
"feed_url_copied": "URL copiato, incollalo nel tuo lettore di Feed RSS",
"follow_me_title": "Segui gli aggiornamenti dal fediverso",
"follow": "Segui",
"n_resources": "nessuna risorsa|una risorsa|{n} risorse",
"resources": "Risorse",
"moderation": "Moderazione",
"authorize": "Autorizza",
"title": "Titolo",
"user": "Utente",
"filter": "Filtra",
"event": "Evento",
"pause": "Pausa",
"start": "Avvia",
"fediverse": "Fediverso",
"skip": "Salta",
"delete": "Elimina",
"announcements": "Annunci",
"url": "URL",
"place": "Luogo",
"tags": "Etichette",
"theme": "Tema",
"reset": "Reset",
"import": "Importa",
"max_events": "N. massimo eventi",
"label": "Etichetta",
"collections": "Bolle",
"plugins": "Plugin",
"help_translate": "Aiuta a tradurre",
"show_map": "Mostra mappa",
"latitude": "Latitudine",
"longitude": "Longitudine",
"getting_there": "Come arrivare",
"calendar": "Calendario",
"home": "Home",
"about": "Cos'è"
},
"login": {
"description": "Entrando puoi pubblicare nuovi eventi.",
"check_email": "Controlla la tua posta (anche lo spam).",
"not_registered": "Non sei registrata?",
"forgot_password": "Dimenticato la password?",
"error": "Errore durante il login, controlla i dati.",
"insert_email": "Inserisci l'indirizzo e-mail",
"ok": "Tutto rego"
},
"recover": {
"not_valid_code": "Mmmmm qualcosa è andato storto."
},
"export": {
"intro": "Contrariamente alle piattaforme del capitalismo, che fanno di tutto per tenere i dati e gli utenti al loro interno, crediamo che le informazioni, come le persone, debbano essere libere. Per questo puoi rimanere aggiornata sugli eventi che vuoi, come meglio credi, senza necessariamente passare da questo sito.",
"email_description": "Puoi ricevere via posta elettronica gli eventi che ti interessano.",
"insert_your_address": "Inserisci il tuo indirizzo e-mail",
"feed_description": "Per seguire gli aggiornamenti da computer o smartphone senza la necessità di aprire periodicamente il sito, il metodo consigliato è quello dei Feed RSS.</p>\n\n <p>Con i feed rss utilizzi un'apposita applicazione per ricevere aggiornamenti dai siti che più ti interessano. È un buon metodo per seguire anche molti siti in modo molto rapido, senza necessità di creare un account o altre complicazioni.</p>\n\n<li>Se hai Android, ti consigliamo <a href=\"https://f-droid.org/en/packages/net.frju.flym\">Flym</a> o Feeder</li>\n<li>Per iPhone/iPad puoi usare <a href=\"https://itunes.apple.com/ua/app/feeds4u/id1038456442?mt=8\">Feed4U</a></li>\n<li>Per il computer fisso/portatile consigliamo Brief, da installare all'interno <a href=\"https://addons.mozilla.org/it/firefox/addon/brief/\">di Firefox </a> e compatibile con tutti i principali sistemi operativi.</li>\n<br/>\nAggiungendo questo link al tuo lettore di feed, rimarrai aggiornata.",
"ical_description": "I computer e gli smartphone sono comunemente attrezzati con un'applicazione per gestire un calendario. A questi programmi solitamente è possibile far importare un calendario remoto.",
"list_description": "Se hai un sito web e vuoi mostrare una lista di eventi, puoi usare il seguente codice"
},
"register": {
"description": "I movimenti hanno bisogno di organizzarsi e autofinanziarsi. <br/>\nUsatelo solo per eventi non commerciali, antifascisti, antisessisti, antirazzisti. <br/>Prima di poter pubblicare <strong>dobbiamo approvare l'account</strong>, considera che <strong>dietro questo sito ci sono delle persone</strong> di carne e sangue, scrivici quindi due righe per farci capire che eventi vorresti pubblicare.",
"error": "Errore: ",
"complete": "Confermeremo la registrazione quanto prima.",
"first_user": "Amministratore creato e attivo"
},
"event": {
"anon": "Anonimo",
"anon_description": "Puoi inserire un evento senza registrarti o fare il login, ma in questo caso dovrai aspettare che qualcuno lo legga confermando che si tratta di un evento adatto a questo spazio, delegando questa scelta. Inoltre non sarà possibile modificarlo.<br/><br/> \nPuoi invece fare il <a href='/login'>login</a> o <a href='/register'>registrarti</a>, altrimenti vai avanti, lo confermeremo appena possibile. ",
"same_day": "Stesso giorno",
"what_description": "Titolo",
"description_description": "Descrizione",
"tag_description": "Etichetta",
"media_description": "Puoi aggiungere un volantino (opzionale)",
"added": "Evento aggiunto",
"saved": "Evento salvato",
"added_anon": "Evento aggiunto, verrà confermato quanto prima.",
"updated": "Evento aggiornato",
"where_description": "Dov'è il gancio? Se il posto non è presente potrai crearlo.",
"address_description": "A che indirizzo?",
"address_description_osm": "A che indirizzo? ((<a href='http://osm.org/copyright'>OpenStreetMap</a>)",
"coordinates_search_description": "Puoi ricercare il posto per nome, o incollare la coppia di coordinate.",
"confirmed": "Evento confermato",
"not_found": "Evento non trovato",
"remove_confirmation": "Vuoi eliminare questo evento?",
"remove_recurrent_confirmation": "Sei sicura di voler eliminare questo evento ricorrente?\nGli eventi passati verranno mantenuti ma non ne verranno creati altri.",
"recurrent": "Ricorrente",
"edit_recurrent": "Modifica evento ricorrente:",
"show_recurrent": "appuntamenti ricorrenti",
"show_past": "eventi passati",
"recurrent_description": "Scegli la frequenza e seleziona i giorni",
"multidate_description": "Un festival o una tre giorni? Scegli quando comincia e quando finisce",
"multidate": "Più giorni",
"normal": "Normale",
"normal_description": "Scegli il giorno.",
"recurrent_1w_days": "Ogni {days}",
"recurrent_2w_days": "Un {days} ogni due",
"recurrent_1m_days": "Il giorno {days} di ogni mese",
"recurrent_2m_days": "Il giorno {days} ogni due mesi",
"recurrent_1m_ordinal": "Il {n} {days} di ogni mese",
"recurrent_2m_ordinal": "Il {n} {days} un mese sì e uno no",
"each_week": "Ogni settimana",
"each_2w": "Ogni due settimane",
"each_month": "Ogni mese",
"due": "alle",
"from": "Dalle",
"image_too_big": "L'immagine non può essere più grande di 4MB",
"interact_with_me": "Seguimi dal fediverso",
"follow_me_description": "Tra i vari modi di rimanere aggiornati degli eventi pubblicati qui su {title},\npuoi seguire l'account <u>{account}</u> dal fediverso, ad esempio via Mastodon, ed eventualmente aggiungere risorse ad un evento da lì.<br/><br/>\nSe non hai mai sentito parlare di Mastodon e del fediverso ti consigliamo di leggere <a href='https://cagizero.wordpress.com/2018/10/25/cose-mastodon/'>questo articolo</a>.<br/><br/> Inserisci la tua istanza qui sotto (es. mastodon.cisti.org o mastodon.bida.im)",
"only_future": "solo eventi futuri",
"interact_with_me_at": "Seguimi nel fediverso su",
"import_ICS": "Importa da ICS",
"import_URL": "Importa da URL (ics o h-event)",
"ics": "ICS",
"import_description": "Puoi importare eventi da altre piattaforme e da altre istanze attraverso i formati standard (ics e h-event)",
"alt_text_description": "Descrizione per persone con disabilità visive",
"choose_focal_point": "Scegli il punto centrale cliccando",
"remove_media_confirmation": "Confermi l'eliminazione dell'immagine?",
"download_flyer": "Scarica volantino"
},
"admin": {
"place_description": "Nel caso in cui un luogo sia errato o cambi indirizzo, puoi modificarlo.<br/>Considera che tutti gli eventi associati a questo luogo cambieranno indirizzo (anche quelli passati).",
"event_confirm_description": "Puoi confermare qui gli eventi inseriti da utenti anonimi",
"delete_user": "Elimina",
"remove_admin": "Rimuovi admin",
"disable_user_confirm": "Vuoi disabilitare {user}?",
"delete_user_confirm": "Vuoi rimuovere {user}?",
"user_remove_ok": "Utente eliminato",
"user_create_ok": "Utente creato",
"allow_registration_description": "Vuoi abilitare la registrazione?",
"allow_anon_event": "Si possono inserire eventi anonimi (previa conferma)?",
"allow_recurrent_event": "Abilita eventi ricorrenti",
"allow_geolocation": "Abilita la geolocalizzazione degli eventi",
"recurrent_event_visible": "Appuntamenti ricorrenti visibili di default",
"federation": "Federazione / ActivityPub",
"enable_federation": "Abilita la federazione",
"enable_federation_help": "Sarà possibile seguire questa istanza dal fediverso",
"add_instance": "Aggiungi istanza",
"select_instance_timezone": "Fuso orario",
"instance_timezone_description": "Gancio è pensato per raccogliere gli eventi di un luogo specifico come ad esempio una città. Scrivendo e selezionando il fuso orario di questo luogo, tutti gli orari saranno mostrati e inseriti secondo quanto scelto.",
"enable_resources": "Abilita risorse",
"enable_resources_help": "Permette di aggiungere risorse agli eventi dal fediverso",
"hide_boost_bookmark": "Nasconde n. condivisioni e segnalibri",
"hide_boost_bookmark_help": "Nasconde le piccole icone che mostrano il numero di boost e segnalibri in arrivo dal fediverso",
"block": "Blocca",
"unblock": "Sblocca",
"user_add_help": "Manderemo un'e-mail al nuovo utente con le istruzioni per confermare l'iscrizione e scegliere una password",
"resources": "Risorse",
"hide_resource": "Nascondi risorsa",
"show_resource": "Mostra risorsa",
"delete_resource": "Elimina risorsa",
"delete_resource_confirm": "Sei sicurǝ di voler eliminare questa risorsa?",
"block_user": "Blocca questo utente",
"user_blocked": "L'utente {user} non potrà più aggiungere risorse",
"filter_instances": "Filtra istanze",
"filter_users": "Filtra utenti",
"instance_name": "Nome istanza",
"favicon": "Logo",
"user_block_confirm": "Confermi di voler bloccare l'utente {user}?",
"instance_block_confirm": "Confermi di voler bloccare l'istanza {instance}?",
"delete_announcement_confirm": "Vuoi eliminare questo l'annuncio?",
"announcement_remove_ok": "Annuncio rimosso",
"announcement_description": "In questa sezione puoi inserire annunci che rimarranno in homepage",
"instance_locale": "Lingua predefinita",
"instance_locale_description": "La lingua utilizzata per mostrare le pagine è quella preferita dall'utente. In alcuni casi però dobbiamo mostrare dei messaggi per tutti allo stesso modo (ad esempio quando pubblichiamo via ActivityPub o nell'invio di alcune e-mail). In questi casi useremo la lingua selezionata qui sopra.",
"instance_place": "Luogo indicativo di questa istanza",
"title_description": "Viene usato nel titolo della pagina, nell'oggetto delle e-mail, nell'esportazione dei flussi RSS e degli ICS.",
"description_description": "Compare nell'intestazione accanto al titolo",
"instance_name_help": "Nome dell'account ActivityPub da seguire",
"enable_trusted_instances": "Abilita istanze amiche",
"trusted_instances_help": "Le istanze amiche compariranno nella barra di navigazione in cima alla pagina",
"trusted_instances_label": "Etichetta di navigazione alle istanze amiche",
"trusted_instances_label_default": "Istanze amiche",
"trusted_instances_label_help": "L'etichetta di default è 'Istanze amiche'",
"add_trusted_instance": "Aggiungi un'istanza amica",
"instance_place_help": "Verrà mostrata questa stringa nel menù delle altre istanze amiche",
"delete_trusted_instance_confirm": "Vuoi davvero eliminare questa voce dal menù delle istanze amiche?",
"is_dark": "Tema scuro",
"add_link": "Aggiungi link",
"footer_links": "Collegamenti del piè di pagina",
"delete_footer_link_confirm": "Vuoi eliminare questo collegamento?",
"edit_place": "Modifica luogo",
"new_announcement": "Nuovo annuncio",
"show_smtp_setup": "Impostazioni email",
"widget": "Widget",
"smtp_description": "<ul><li>L'amministratore riceve una email quando viene aggiunto un evento anonimo (se abilitati).</li><li>L'amministratore riceve le mail di richiesta di registrazione (se abilitata).</li><li>Le persone ricevono una mail di conferma della registrazione richiesta.</li><li>Le persone ricevono le email della registrazione confermata.</li><li>Le persone ricevono una mail di avviso quando vengono registrate direttamente da admin.</li><li>Le persone ricevono la mail per modificare la password quando l'hanno dimenticata</li></ul>",
"smtp_hostname": "SMTP Hostname",
"smtp_test_success": "Una mail di test è stata inviata all'indirizzo {admin_email}, controlla la tua casella di posta",
"smtp_test_button": "Invia una mail di prova",
"admin_email": "E-mail dell'admin",
"new_collection": "Crea bolla",
"wrong_domain_warning": "Il \"baseurl\" configurato in config.json <b>({baseurl})</b> è diverso da quello che stai visitando <b>({url})</b>",
"collections_description": "Le bolle sono raggruppamenti di eventi per tag e posti.",
"edit_collection": "Modifica bolla",
"config_plugin": "Configura plugin",
"fallback_image": "Immagine di ripiego",
"header_image": "Immagine di intestazione",
"hide_thumbs": "Nascondi immaginine",
"hide_calendar": "Nascondi calendario",
"default_images": "Immagini preimpostate"
},
"auth": {
"not_confirmed": "Non ancora confermato…",
"fail": "Autenticazione fallita. Sicura la password è giusta? E l'e-mail?"
},
"settings": {
"update_confirm": "Vuoi salvare le modifiche?",
"change_password": "Cambia password",
"password_updated": "Password modificata.",
"danger_section": "Sezione pericolosa",
"remove_account": "Premendo il seguente tasto il tuo utente verrà eliminato. Gli eventi da te pubblicati invece no.",
"remove_account_confirm": "Stai per eliminare definitivamente il tuo account"
},
"error": {
"nick_taken": "Questo nome utente è già presente.",
"email_taken": "Questa e-mail è già registrata."
},
"confirm": {
"title": "Conferma utente",
"not_valid": "Qualcosa è andato storto.",
"valid": "Il tuo account è stato confermato, ora puoi <a href=\"/login\">entrare</a>"
},
"ordinal": {
"1": "primo",
"2": "secondo",
"3": "terzo",
"4": "quarto",
"5": "quinto",
"-1": "ultimo"
},
"validators": {
"required": "Campo {fieldName} necessario",
"email": "Inserisci un'e-mail valida"
},
"about": "\n <p> <a href='https://gancio.org'> Gancio </a> è un'agenda condivisa per le comunità locali. </p>\n ",
"oauth": {
"authorization_request": "L'applicazione esterna <code>{app}</code> richiede l'autorizzazione a svolgere le sequenti attività su <code>{instance_name}</code>:",
"redirected_to": "Dopo la conferma sarai reindirizzata all'indirizzo <code>{url}</code>",
"scopes": {
"event:write": "Pubblicare/modificare i tuoi eventi"
}
},
"setup": {
"completed": "Setup completato",
"completed_description": "<p>Puoi entrare con le seguenti credenziali:<br/><br/>Utente: <b>{email}</b><br/>Password: <b>{password}<b/></p>",
"copy_password_dialog": "Sì, devi copiare la password!",
"start": "Inizia",
"https_warning": "Stai visitando il setup da HTTP, ricorda di cambiare il baseurl nel config.json quando passerai ad HTTPS!"
}
}

View file

@ -3,14 +3,14 @@
"add_event": "Adicionar Evento",
"description": "Descrição",
"send": "Enviar",
"address": "Morada",
"address": "Endereço",
"next": "Próximo",
"when": "Quando",
"where": "Onde",
"login": "Login",
"export": "Exportar",
"email": "E-mail",
"what": "O quê",
"what": "O que",
"media": "Media",
"password": "Senha",
"register": "Registro",
@ -21,25 +21,25 @@
"actions": "Ações",
"edit": "Editar",
"admin": "Admin",
"places": "Sítios",
"places": "Lugares",
"hide": "Esconder",
"search": "Procurar",
"info": "Info",
"users": "Utilizadores",
"share": "Partilhar",
"users": "Usuários",
"share": "Compartilhar",
"name": "Nome",
"associate": "Associar",
"logout": "Sair",
"remove_admin": "Remover admin",
"activate": "Activar",
"save": "Guardar",
"activate": "Ativar",
"save": "Salvar",
"preview": "Pré-visualizar",
"edit_event": "Editar evento",
"add": "Adicionar",
"copy": "Copiar",
"ok": "Ok",
"cancel": "Cancelar",
"me": "Tu",
"me": "Você",
"password_updated": "Senha alterada.",
"resources": "Recursos",
"activate_user": "Confirmado",
@ -49,7 +49,7 @@
"copied": "Copiado",
"recover_password": "Recuperar senha",
"new_password": "Nova senha",
"new_user": "Novo/a usuário/a",
"new_user": "Novo usuário",
"deactivate": "Desligar",
"related": "Relacionado",
"enable": "Habilitar",
@ -79,8 +79,8 @@
"embed_title": "Incorpore este evento na sua página",
"embed_help": "Copie o código seguinte em sua página e o evento será apresentado desta maneira",
"displayname": "Nome de exibição",
"feed_url_copied": "Abra a URL do feed no seu leitor de feeds RSS",
"follow_me_title": "Seguir atualizações a partir de Fediverso",
"feed_url_copied": "Abra a URL do feed no seu leitor RSS",
"follow_me_title": "Seguir atualizações a partir do Fediverso",
"tags": "Marcadores",
"theme": "Tema",
"reset": "Reiniciar",
@ -106,7 +106,7 @@
"smtp_hostname": "Hostname SMTP",
"collections_description": "Coleções são agrupamentos de eventos por marcadores e locais. Eles serão exibidos na página principal",
"new_collection": "Nova coleção",
"disable_admin_user_confirm": "Você está certo que quer remover permissões de administração de ùser}?",
"disable_admin_user_confirm": "Você está certo que quer remover permissões de administração de {user}?",
"enable_admin_user_confirm": "Você está certo que quer adicionar permissões de administrador para {user}",
"event_remove_ok": "Evento removido",
"smtp_description": "<ul><li>Administrador deve receber um e-mail quando um evento anônimo for adicionado (se habilitado).</li><li>Administrador deve receber um e-mail de requisição de registro (se habilitado).</li><li>Usuário deve receber um e-mail de solicitação de registro.</li><li>Usuário deve receber um e-mail de confirmação de registro.</li><li>Usuário deve recever um e-mail de confirmação quando registrado diretamente por um administrador.</li><li>Usuários devem receber um e-mail para recuperar a senha quando eles esquecerem ela</li></ul>",
@ -227,7 +227,7 @@
"valid": "Sua conta está confirmada, você pode agora <a href=\"/login\">autenticar-se</a>"
},
"export": {
"intro": "Diferente de plataformas não-sociais que fazem tudo para manter os usuários e os dados sobre eles, nós acreditamos que a informação, como pessoas, deve ser livre. Para isso você pode estar atualizado sobre os eventos que você quer, sem necessariamente entrar nesta página.",
"intro": "Diferente de plataformas não-sociais que fazem tudo para manter os usuários e os dados sobre eles, nós acreditamos que a informação, como pessoas, deve ser livre. Para isso você se atualizar sobre os eventos de seu interesse, sem necessariamente entrar nesta página.",
"insert_your_address": "Informe seu endereço de e-mail",
"feed_description": "Para seguir as atualizações de um computador ou smartphone sem que você precise acessar essa página periodicamente, utilize um feeds RSS. </p>\n\n<p> Com feeds RSS você pode utilizar um app especial para receber atualizações de páginas que te interessam. É uma boa maneira de seguir muitas páginas rapidamente, sem a necessidade de criar contas de usuários ou outras complicações. </p>\n\n<li> Se você possui um Android, recomendamos <a href=\"https://f-droid.org/en/packages/net.frju.flym/\">Flym</a> ou Feeder </li>\n<li> Para iPhone / iPad você pode utilizar <a href=\"https://itunes.apple.com/ua/app/feeds4u/id1038456442?mt=8\"> Feed4U </a> </li>\n<li> Para desktop / laptop nós recomendamos Feedbro, que pode ser instalado no <a href=\"https://addons.mozilla.org/en-GB/firefox/addon/feedbroreader/\"> Firefox </a> ou <a href=\"https://chrome.google.com/webstore/detail/feedbro/mefgmmbdailogpfhfblcnnjfmnpnmdfa\"> Chrome </a>. </li>\n<br/>\nAdicionado este link ao seu leitor de RSS irá mantê-lo atualizado.",
"ical_description": "Computadores e smartphones normalmente possuem aplicações de calendário capazes de importar um calendário remoto.",
@ -283,7 +283,7 @@
"error": "Autenticação não realizada. Verifique suas informações de autenticação."
},
"recover": {
"not_valid_code": "Alguma coisa não funcionou."
"not_valid_code": "Algo não funcionou corretamente."
},
"register": {
"error": "Erro: ",

View file

@ -2,6 +2,8 @@ const config = require('./server/config.js')
const minifyTheme = require('minify-css-string').default
const locales = require('./locales/index')
import { ca, de, en, es, eu, fr, gl, it, nb, pl, pt, sk, zhHans } from 'vuetify/lib/locale'
const isDev = (process.env.NODE_ENV !== 'production')
module.exports = {
telemetry: false,
@ -43,6 +45,7 @@ module.exports = {
'@/plugins/axios', // axios baseurl configuration
'@/plugins/validators', // inject validators
'@/plugins/api', // api helpers
'@/plugins/i18n',
{ src: '@/plugins/v-calendar', ssr: false } // v-calendar
],
@ -51,7 +54,7 @@ module.exports = {
*/
modules: [
// Doc: https://axios.nuxtjs.org/usage
'nuxt-i18n',
'@nuxtjs/i18n',
'@nuxtjs/axios',
'@nuxtjs/auth',
'@nuxtjs/sitemap',
@ -89,8 +92,9 @@ module.exports = {
iso: key
})),
vueI18n: {
fallbackLocale: 'en'
},
fallbackLocale: 'en',
silentTranslationWarn: true
},
langDir: 'locales',
lazy: true,
strategy: 'no_prefix',
@ -136,9 +140,9 @@ module.exports = {
}
}
},
buildModules: ['@nuxtjs/vuetify'],
vuetify: {
lang: { locales: { ca, de, en, es, eu, fr, gl, it, nb, pl, pt, sk, zhHans } },
treeShake: true,
theme: {
options: {

View file

@ -1,6 +1,6 @@
{
"name": "gancio",
"version": "1.6.0-rc1",
"version": "1.6.0-rc2",
"description": "A shared agenda for local communities",
"author": "lesion",
"scripts": {
@ -27,6 +27,7 @@
"locales/",
"store/",
".nuxt/",
"gancio_plugins",
"yarn.lock"
],
"engines": {
@ -36,19 +37,20 @@
"@mdi/js": "^7.0.96",
"@nuxtjs/auth": "^4.9.1",
"@nuxtjs/axios": "^5.13.5",
"@nuxtjs/i18n": "^7.3.0",
"@nuxtjs/sitemap": "^2.4.0",
"accept-language": "^3.0.18",
"axios": "^0.27.2",
"bcryptjs": "^2.4.3",
"body-parser": "^1.20.0",
"cookie-parser": "^1.4.6",
"cookie-session": "^2.0.0",
"cookie-universal-nuxt": "^2.2.2",
"cors": "^2.8.5",
"dayjs": "^1.11.5",
"dompurify": "^2.4.1",
"email-templates": "^10.0.1",
"express": "^4.18.1",
"express-session": "^1.17.3",
"http-signature": "^1.3.6",
"https-proxy-agent": "^5.0.1",
"ical.js": "^1.5.0",
@ -67,7 +69,6 @@
"multer": "^1.4.5-lts.1",
"mysql2": "^2.3.3",
"nuxt-edge": "2.16.0-27720022.54e852f",
"nuxt-i18n": "^6.28.1",
"oauth2orize": "^1.11.1",
"passport": "^0.6.0",
"passport-anonymous": "^1.0.1",

View file

@ -6,56 +6,56 @@ v-container.container.pa-0.pa-md-3
v-tabs(v-model='selectedTab' show-arrows :next-icon='mdiChevronRight' :prev-icon='mdiChevronLeft')
//- SETTINGS
v-tab {{$t('common.settings')}}
v-tab-item
v-tab(href='#settings') {{$t('common.settings')}}
v-tab-item(value='settings')
Settings
//- THEME
v-tab {{$t('common.theme')}}
v-tab-item
v-tab(href='#theme') {{$t('common.theme')}}
v-tab-item(value='theme')
Theme
//- USERS
v-tab
v-tab(href='#users')
v-badge(:value='!!unconfirmedUsers.length' :content='unconfirmedUsers.length') {{$t('common.users')}}
v-tab-item
v-tab-item(value='users')
Users(:users='users' @update='updateUsers')
//- PLACES
v-tab {{$t('common.places')}}
v-tab-item
v-tab(href='#places') {{$t('common.places')}}
v-tab-item(value='places')
Places
//- Collections
v-tab {{$t('common.collections')}}
v-tab-item
v-tab(href='#collections') {{$t('common.collections')}}
v-tab-item(value='collections')
Collections
//- EVENTS
v-tab
v-tab(href='#unconfirmed_events')
v-badge(:value='!!unconfirmedEvents.length' :content='unconfirmedEvents.length') {{$t('common.events')}}
v-tab-item
v-tab-item(value='unconfirmed_events')
Events(:unconfirmedEvents='unconfirmedEvents'
@confirmed='id => { unconfirmedEvents = unconfirmedEvents.filter(e => e.id !== id)}')
//- ANNOUNCEMENTS
v-tab {{$t('common.announcements')}}
v-tab-item
v-tab(href='#announcements') {{$t('common.announcements')}}
v-tab-item(value='announcements')
Announcement
//- PLUGINS
v-tab {{$t('common.plugins')}}
v-tab-item
v-tab(href='#plugins') {{$t('common.plugins')}}
v-tab-item(value='plugins')
Plugin
//- FEDERATION
v-tab {{$t('common.federation')}}
v-tab-item
v-tab(href='#federation') {{$t('common.federation')}}
v-tab-item(value='federation')
Federation
//- MODERATION
v-tab(v-if='settings.enable_federation') {{$t('common.moderation')}}
v-tab-item
v-tab(v-if='settings.enable_federation' href='#moderation') {{$t('common.moderation')}}
v-tab-item(value='moderation')
Moderation
</template>
<script>
@ -88,9 +88,9 @@ export default {
try {
const users = await $axios.$get('/users')
const unconfirmedEvents = await $axios.$get('/event/unconfirmed')
return { users, unconfirmedEvents, selectedTab: 0, url }
return { users, unconfirmedEvents, url }
} catch (e) {
return { users: [], unconfirmedEvents: [], selectedTab: 0, url }
return { users: [], unconfirmedEvents: [], url }
}
},
data () {
@ -99,7 +99,6 @@ export default {
users: [],
description: '',
unconfirmedEvents: [],
selectedTab: 0
}
},
head () {
@ -109,7 +108,15 @@ export default {
...mapState(['settings']),
unconfirmedUsers () {
return this.users.filter(u => !u.is_active)
}
},
selectedTab: {
set (tab) {
this.$router.replace({ query: { ...this.$route.query, tab } })
},
get () {
return this.$route.query.tab
}
}
},
methods: {
async updateUsers () {

View file

@ -39,9 +39,9 @@ v-container#event.pa-0.pa-sm-2
v-divider
//- info & actions
v-list(dense nav)
v-list-group(:append-icon='mdiChevronUp' :value='true')
template(v-slot:activator)
v-list-item.text-overline Actions
//- v-list-group(:append-icon='mdiChevronUp' :value='true')
//- template(v-slot:activator)
//- v-list-item.text-overline {{$t('common.actions')}}
//- copy link
v-list-item(@click='clipboard(`${settings.baseurl}/event/${event.slug || event.id}`)')

View file

@ -16,6 +16,8 @@ import 'dayjs/locale/fr'
import 'dayjs/locale/de'
import 'dayjs/locale/gl'
import 'dayjs/locale/sk'
import 'dayjs/locale/pt'
import 'dayjs/locale/zh'
dayjs.extend(relativeTime)
dayjs.extend(utc)
@ -59,7 +61,7 @@ export default ({ app, store }) => {
Vue.filter('recurrentDetail', event => {
const parent = event.parent
if (!parent.frequency || !parent.type) return
if (!parent.recurrent || parent.recurrent.frequency) return 'error!'
const { frequency, type } = parent.recurrent
let recurrent
if (frequency === '1w' || frequency === '2w') {

View file

@ -1,35 +1,36 @@
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import merge from 'lodash/merge'
export default async ({ app, store, res, $vuetify }) => {
Vue.use(VueI18n)
$vuetify.lang.current = app.i18n.locale
export default async ({ app, store, res }) => {
const messages = {}
if (process.server) {
if (res.locals) {
store.commit('setLocale', res.locals.acceptedLocale)
if (res.locals.user_locale) {
store.commit('setUserLocale', res.locals.user_locale)
}
}
app.i18n.onLanguageSwitched = (oldLocale, newLocale) => {
$vuetify.lang.current = newLocale
}
messages[store.state.locale] = await import(/* webpackChunkName: "lang-[request]" */`../locales/${store.state.locale}.json`)
// const messages = {}
// if (process.server) {
// if (res.locals) {
// store.commit('setLocale', res.locals.acceptedLocale)
// if (res.locals.user_locale) {
// store.commit('setUserLocale', res.locals.user_locale)
// }
// }
// }
// messages[store.state.locale] = await import(/* webpackChunkName: "lang-[request]" */`../locales/${store.state.locale}.json`)
// always include en fallback locale
if (store.state.locale !== 'en') {
messages.en = await import('../locales/en.json')
}
// if (store.state.locale !== 'en') {
// messages.en = await import('../locales/en.json')
// }
if (store.state.user_locale) {
merge(messages[store.state.locale], store.state.user_locale)
}
// if (store.state.user_locale) {
// merge(messages[store.state.locale], store.state.user_locale)
// }
// Set i18n instance on app
app.i18n = new VueI18n({
locale: store.state.locale,
fallbackLocale: 'en',
messages
})
// app.i18n = new VueI18n({
// locale: store.state.locale,
// fallbackLocale: 'en',
// messages
// })
}

View file

@ -1,6 +1,6 @@
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')
const session = require('express-session')
const session = require('cookie-session')
const OAuthClient = require('../models/oauth_client')
const OAuthToken = require('../models/oauth_token')

View file

@ -7,7 +7,7 @@ const sharp = require('sharp')
const config = require('../../config')
const generateKeyPair = promisify(crypto.generateKeyPair)
const log = require('../../log')
const locales = require('../../../locales/index')
// const locales = require('../../../locales/index')
const escape = require('lodash/escape')
const pluginController = require('./plugins')
@ -99,18 +99,18 @@ const settingsController = {
}
// initialize user_locale
if (config.user_locale && fs.existsSync(path.resolve(config.user_locale))) {
const user_locales_files = fs.readdirSync(path.resolve(config.user_locale))
user_locales_files.forEach( f => {
const locale = path.basename(f ,'.json')
if (locales[locale]) {
log.info(`Adding custom locale ${locale}`)
settingsController.user_locale[locale] = require(path.resolve(config.user_locale, f)).default
} else {
log.warning(`Unknown custom user locale: ${locale} [valid locales are ${locales}]`)
}
})
}
// if (config.user_locale && fs.existsSync(path.resolve(config.user_locale))) {
// const user_locales_files = fs.readdirSync(path.resolve(config.user_locale))
// user_locales_files.forEach( f => {
// const locale = path.basename(f ,'.json')
// if (locales[locale]) {
// log.info(`Adding custom locale ${locale}`)
// settingsController.user_locale[locale] = require(path.resolve(config.user_locale, f)).default
// } else {
// log.warning(`Unknown custom user locale: ${locale} [valid locales are ${locales}]`)
// }
// })
// }
pluginController._load()
},

View file

@ -96,7 +96,7 @@ module.exports = {
about: settings.about
}
// set user locale
res.locals.user_locale = settingsController.user_locale[res.locals.acceptedLocale]
// res.locals.user_locale = settingsController.user_locale[res.locals.acceptedLocale]
dayjs.tz.setDefault(res.locals.settings.instance_timezone)
next()
},

View file

@ -1,7 +1,6 @@
import dayjs from 'dayjs'
export const state = () => ({
user_locale: {},
settings: {
instance_timezone: 'Europe/Rome',
instance_name: '',
@ -29,9 +28,6 @@ export const mutations = {
setSetting (state, setting) {
state.settings[setting.key] = setting.value
},
setUserlocale (state, messages) {
state.user_locale = messages
},
setAnnouncements (state, announcements) {
state.announcements = announcements
},

View file

@ -3,7 +3,7 @@
Plugin Name: WPGancio
Plugin URI: https://gancio.org
Description: Connects an user of a gancio instance to a Wordpress user so that published events are automatically pushed with Gancio API.
Version: 1.4
Version: 1.5
Author: Gancio
License: AGPL 3.0
@ -19,8 +19,8 @@ You should have received a copy of the GNU Affero General Public License
along with (WPGancio). If not, see (https://www.gnu.org/licenses/agpl-3.0.html).
*/
defined( 'ABSPATH' ) or die( 'Nope, not accessing this' );
define( 'WPGANCIO_DIR', plugin_dir_path( __FILE__ ) );
defined('ABSPATH') or die('Nope, not accessing this');
define('WPGANCIO_DIR', plugin_dir_path(__FILE__));
require_once(WPGANCIO_DIR . 'settings.php');
require_once(WPGANCIO_DIR . 'network_settings.php');
require_once(WPGANCIO_DIR . 'wc.php');
@ -40,4 +40,3 @@ require_once(WPGANCIO_DIR . 'oauth.php');
* - start an OAuth 2.0 authentication flow with the selected instance
* - Send each new / updated events to the selected instance via Gancio API
*/

View file

@ -4,7 +4,7 @@ Donate link: https://gancio.org
Tags: events, gancio, fediverse, AP, activity pub
Requires at least: 4.7
Tested up to: 6.0
Stable tag: 1.4
Stable tag: 1.5
Requires PHP: 7.0
License: AGPLv3 or later
License URI: https://www.gnu.org/licenses/agpl-3.0.html

126
yarn.lock
View file

@ -262,7 +262,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.14.9", "@babel/parser@^7.18.10", "@babel/parser@^7.18.4", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6":
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.18.4", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6":
version "7.20.3"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2"
integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==
@ -933,7 +933,7 @@
"@babel/parser" "^7.18.10"
"@babel/types" "^7.18.10"
"@babel/traverse@^7.14.9", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.7.2":
"@babel/traverse@^7.18.10", "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.7.2":
version "7.20.1"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8"
integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==
@ -1744,6 +1744,24 @@
consola "^2.15.3"
defu "^5.0.0"
"@nuxtjs/i18n@^7.3.0":
version "7.3.0"
resolved "https://registry.yarnpkg.com/@nuxtjs/i18n/-/i18n-7.3.0.tgz#49ddaaf5c39a0eb60e59515bbdebb0a94845cc06"
integrity sha512-KBmFzgHjaJ/b+I/nISWUkAxcigjc5FiR1ScRzq/eC8Ahxi5zIulfF8vRROmYbW1gP6B2yYBblOuWemW/T/YM0A==
dependencies:
"@babel/parser" "^7.18.10"
"@babel/traverse" "^7.18.10"
"@intlify/vue-i18n-extensions" "^1.0.2"
"@intlify/vue-i18n-loader" "^1.1.0"
cookie "^0.5.0"
devalue "^2.0.1"
is-https "^4.0.0"
js-cookie "^3.0.1"
klona "^2.0.5"
lodash.merge "^4.6.2"
ufo "^0.8.5"
vue-i18n "^8.27.2"
"@nuxtjs/proxy@^2.1.0":
version "2.1.0"
resolved "https://registry.yarnpkg.com/@nuxtjs/proxy/-/proxy-2.1.0.tgz#fa7715a11d237fa1273503c4e9e137dd1bf5575b"
@ -3810,6 +3828,16 @@ cookie-parser@^1.4.6:
cookie "0.4.1"
cookie-signature "1.0.6"
cookie-session@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/cookie-session/-/cookie-session-2.0.0.tgz#d07aa27822f43619e4342df1342268c849833089"
integrity sha512-hKvgoThbw00zQOleSlUr2qpvuNweoqBtxrmx0UFosx6AGi9lYtLoA+RbsvknrEX8Pr6MDbdWAb2j6SnMn+lPsg==
dependencies:
cookies "0.8.0"
debug "3.2.7"
on-headers "~1.0.2"
safe-buffer "5.2.1"
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
@ -3836,12 +3864,7 @@ cookie@0.4.1:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
cookie@0.4.2, cookie@^0.4.0, cookie@^0.4.1:
version "0.4.2"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
cookie@0.5.0:
cookie@0.5.0, cookie@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
@ -3851,11 +3874,24 @@ cookie@^0.3.1:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
integrity sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==
cookie@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
cookiejar@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc"
integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==
cookies@0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90"
integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==
dependencies:
depd "~2.0.0"
keygrip "~1.1.0"
copy-concurrently@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
@ -4291,6 +4327,13 @@ debug@2.6.9, debug@2.x.x, debug@^2.2.0, debug@^2.3.3:
dependencies:
ms "2.0.0"
debug@3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "^2.1.1"
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
@ -5085,20 +5128,6 @@ expect@^29.3.1:
jest-message-util "^29.3.1"
jest-util "^29.3.1"
express-session@^1.17.3:
version "1.17.3"
resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.3.tgz#14b997a15ed43e5949cb1d073725675dd2777f36"
integrity sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==
dependencies:
cookie "0.4.2"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~2.0.0"
on-headers "~1.0.2"
parseurl "~1.3.3"
safe-buffer "5.2.1"
uid-safe "~2.1.5"
express@^4.18.1:
version "4.18.2"
resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
@ -7162,7 +7191,7 @@ js-cookie@^2.2.1:
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
js-cookie@^3.0.0:
js-cookie@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.1.tgz#9e39b4c6c2f56563708d7d31f6f5f21873a92414"
integrity sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==
@ -7379,6 +7408,13 @@ jws@^3.2.2:
jwa "^1.4.1"
safe-buffer "^5.0.1"
keygrip@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226"
integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==
dependencies:
tsscmp "1.0.6"
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@ -7408,7 +7444,7 @@ kleur@^3.0.3:
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
klona@^2.0.4:
klona@^2.0.4, klona@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
@ -8634,24 +8670,6 @@ nuxt-edge@2.16.0-27720022.54e852f:
"@nuxt/vue-renderer-edge" "2.16.0-27720022.54e852f"
"@nuxt/webpack-edge" "2.16.0-27720022.54e852f"
nuxt-i18n@^6.28.1:
version "6.28.1"
resolved "https://registry.yarnpkg.com/nuxt-i18n/-/nuxt-i18n-6.28.1.tgz#63e3e809fa41d855c5c7c443c0074eecaa97d273"
integrity sha512-JKRs8AmixVZ7k90Rrwq468McfnInP1ymuejYHRGA4VV0nZCLYsdDQXZxXl3JXaER9VatM9C24GM3ArAYFOtUhg==
dependencies:
"@babel/parser" "^7.14.9"
"@babel/traverse" "^7.14.9"
"@intlify/vue-i18n-extensions" "^1.0.2"
"@intlify/vue-i18n-loader" "^1.1.0"
cookie "^0.4.1"
devalue "^2.0.1"
is-https "^4.0.0"
js-cookie "^3.0.0"
klona "^2.0.4"
lodash.merge "^4.6.2"
ufo "^0.7.7"
vue-i18n "^8.25.0"
nwsapi@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0"
@ -10443,11 +10461,6 @@ randexp@0.4.6:
discontinuous-range "1.0.0"
ret "~0.1.10"
random-bytes@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b"
integrity sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@ -12082,6 +12095,11 @@ tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
tsscmp@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"
integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@ -12164,11 +12182,6 @@ uc.micro@^1.0.1:
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
ufo@^0.7.7:
version "0.7.11"
resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.7.11.tgz#17defad497981290383c5d26357773431fdbadcb"
integrity sha512-IT3q0lPvtkqQ8toHQN/BkOi4VIqoqheqM1FnkNWT9y0G8B3xJhwnoKBu5OHx8zHDOvveQzfKuFowJ0VSARiIDg==
ufo@^0.8.5:
version "0.8.6"
resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.8.6.tgz#c0ec89bc0e0c9fa59a683680feb0f28b55ec323b"
@ -12179,13 +12192,6 @@ uglify-js@^3.5.1:
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c"
integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==
uid-safe@~2.1.5:
version "2.1.5"
resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a"
integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==
dependencies:
random-bytes "~1.0.0"
uid2@0.0.x:
version "0.0.4"
resolved "https://registry.yarnpkg.com/uid2/-/uid2-0.0.4.tgz#033f3b1d5d32505f5ce5f888b9f3b667123c0a44"
@ -12503,7 +12509,7 @@ vue-hot-reload-api@^2.3.0:
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
vue-i18n@^8.25.0:
vue-i18n@^8.27.2:
version "8.28.2"
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.28.2.tgz#913558066e274395c0a9f40b2f3393d5c2636840"
integrity sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==