From 443c44d095fdd5acd001e941770e2b3a8cc625f5 Mon Sep 17 00:00:00 2001 From: Ruben Date: Wed, 14 Jan 2026 23:16:14 +0100 Subject: [PATCH] Add section headers to language files and update petition messages Add GDPR-compliant expiration to confirmation links Add IP rate limiting error message Update region list to current Norwegian counties Add signature deletion functionality Add thank you email with deletion option Improve error messages and user feedback --- custom/languages/en.ini | 143 +++++++++++++++++++++------------------ custom/languages/no.ini | 144 ++++++++++++++++++++++------------------ 2 files changed, 156 insertions(+), 131 deletions(-) diff --git a/custom/languages/en.ini b/custom/languages/en.ini index 27a00db..aeb9ba8 100644 --- a/custom/languages/en.ini +++ b/custom/languages/en.ini @@ -8,72 +8,85 @@ language_name_no = "Norsk" categories = "Categories" tags = "Tags" -; FAQ -faq_summary_label = "In short:" -faq_read_full_answer = "Read full answer" +[faq] +summary_label = "In short:" +read_full_answer = "Read full answer" -; Footer -footer_social = "Follow us on Mastodon" -footer_copyright = "Copyright" -footer_follow_mastodon = "Follow us on Mastodon" -footer_handcoded = "This website was hand-coded by Ruben Solvang using HTML, CSS and minimal doses of PHP. It took" -footer_page_time = "ms to generate this page." +[footer] +social = "Follow us on Mastodon" +copyright = "Copyright" +follow_mastodon = "Follow us on Mastodon" +handcoded = "This website was hand-coded by Ruben Solvang using HTML, CSS and minimal doses of PHP. It took" +page_time = "ms to generate this page." -; Petition form -petition.form_title = "Sign the Petition" -petition.firstname_label = "First name" -petition.firstname_placeholder = "Your first name" -petition.firstname_required = "First name is required" -petition.surname_label = "Surname" -petition.surname_placeholder = "Your surname" -petition.surname_required = "Surname is required" -petition.email_label = "Email" -petition.email_placeholder = "your@email.com" -petition.email_help = "Not shown publicly, only for confirmation" -petition.email_required = "Valid email is required" -petition.region_label = "Region" -petition.region_required = "Please select a region" -petition.region_placeholder = "Select region..." -petition.display_legend = "How should you appear in the list?" -petition.display_semi = "Show my first name and region (default)" -petition.display_anonymous = "Anonymous - only show my region" -petition.anonymous_name = "Anonymous" -petition.from_region = "from" -petition.display_full = "Show my full name and region" -petition.submit_button = "Sign the Petition" -petition.signatures_title = "Signatures" -petition.signature_count = "{count} signature" -petition.signature_count_plural = "{count} signatures" -petition.newest_first = "Newest first" -petition.error_csrf = "Security error. Please try again." -petition.error_honeypot = "Invalid submission." -petition.error_rate_limit = "Please wait a moment before submitting again." -petition.error_time_check = "Multiple signature attempts were sent from the same computer within a short time. Please wait a moment and try again." -petition.error_referrer = "Invalid request." -petition.error_validation = "Please correct the errors in the form." -petition.error_email_send = "Could not send confirmation email. Please try again later." -petition.error_already_signed = "This email address has already signed this petition." -petition.success_pending = "Thank you! Check your email to confirm your signature." -petition.confirm_success = "Thank you! Your signature has been confirmed and added to the list." -petition.confirm_error = "Invalid or expired confirmation link." -petition.confirm_already = "This signature has already been confirmed." -petition.email_subject = "Confirm your signature" -petition.email_greeting = "Hello {name}," -petition.email_thanks = "Thank you for signing the petition \"{title}\"." -petition.email_confirm = "Please confirm your signature by clicking this link:" -petition.email_ignore = "If you did not sign this petition, please ignore this email." -petition.email_signature = "Best regards" -petition.email_org = "Stop the Suffering" +[petition] +form_title = "Sign the Petition" +firstname_label = "First name" +firstname_placeholder = "Your first name" +firstname_required = "First name is required" +surname_label = "Surname" +surname_placeholder = "Your surname" +surname_required = "Surname is required" +email_label = "Email" +email_placeholder = "your@email.com" +email_help = "Not shown publicly, only for confirmation" +email_required = "Valid email is required" +region_label = "Region" +region_required = "Please select a region" +region_placeholder = "Select region..." +display_legend = "How should you appear in the list?" +display_semi = "Show my first name and region (default)" +display_anonymous = "Anonymous - only show my region" +anonymous_name = "Anonymous" +from_region = "from" +display_full = "Show my full name and region" +submit_button = "Sign the Petition" +signatures_title = "Signatures" +signature_count = "{count} signature" +signature_count_plural = "{count} signatures" +newest_first = "Newest first" +error_csrf = "Security error. Please try again." +error_honeypot = "Invalid submission." +error_rate_limit = "Please wait a moment before submitting again." +error_ip_rate_limit = "Too many attempts from your IP address. Please wait 5 minutes before trying again." +error_time_check = "Multiple signature attempts were sent from the same computer within a short time. Please wait a moment and try again." +error_referrer = "Invalid request." +error_validation = "Please correct the errors in the form." +error_email_send = "Could not send confirmation email. Please try again later." +error_already_signed = "This email address has already signed this petition." +success_pending = "Thank you! Check your email to confirm your signature." +confirm_success = "Thank you! Your signature has been confirmed and added to the list." +confirm_error = "Invalid confirmation link." +confirm_expired = "This confirmation link has expired (max 30 days). Please sign the petition again if you still wish to support it." +confirm_already = "This signature has already been confirmed." +email_subject = "Confirm your signature" +email_greeting = "Hello {name}," +email_thanks = "Thank you for signing the petition \"{title}\"." +email_confirm = "Please confirm your signature by clicking this link:" +email_expiry_notice = "This link is valid for 30 days for privacy reasons (GDPR compliance)." +email_ignore = "If you did not sign this petition, please ignore this email." +email_signature = "Best regards" +email_org = "Stop the Suffering" +email_thankyou_subject = "Thank you for your signature" +email_thankyou_confirmed = "Your signature on the petition \"{title}\" has been confirmed and registered." +email_delete_info = "If you wish to withdraw your signature, you can do so at any time by clicking this link:" +delete_success = "Your signature has been deleted." +delete_error = "Could not delete the signature. The link may be invalid." ; Norwegian regions (fylker) - kept in Norwegian as they are proper nouns -regions.oslo = "Oslo" -regions.rogaland = "Rogaland" -regions.more_og_romsdal = "Møre og Romsdal" -regions.nordland = "Nordland" -regions.viken = "Viken" -regions.innlandet = "Innlandet" -regions.vestfold_og_telemark = "Vestfold og Telemark" -regions.agder = "Agder" -regions.vestland = "Vestland" -regions.trondelag = "Trøndelag" -regions.troms_og_finnmark = "Troms og Finnmark" +[regions] +agder = "Agder" +akershus = "Akershus" +buskerud = "Buskerud" +finnmark = "Finnmark" +innlandet = "Innlandet" +more_og_romsdal = "Møre og Romsdal" +nordland = "Nordland" +oslo = "Oslo" +rogaland = "Rogaland" +telemark = "Telemark" +troms = "Troms" +trondelag = "Trøndelag" +vestfold = "Vestfold" +vestland = "Vestland" +ostfold = "Østfold" diff --git a/custom/languages/no.ini b/custom/languages/no.ini index 06ae11d..0b90902 100644 --- a/custom/languages/no.ini +++ b/custom/languages/no.ini @@ -8,72 +8,84 @@ language_name_en = "English" categories = "Kategorier" tags = "Stikkord" -; FAQ -faq_summary_label = "Kort oppsumert:" -faq_read_full_answer = "Les hele svaret" +[faq] +summary_label = "Kort oppsumert:" +read_full_answer = "Les hele svaret" -; Footer -footer_social = "Følg oss på Facebook, Instagram og Mastodon" -footer_copyright = "Opphavsrett" -footer_follow_mastodon = "Følg oss på Mastodon" -footer_handcoded = "Nettsiden er håndkodet av Ruben Solvang ved hjelp av HTML, CSS og minimale doser PHP. Det tok" -footer_page_time = "ms å generere siden." +[footer] +social = "Følg oss på Facebook, Instagram og Mastodon" +copyright = "Opphavsrett" +follow_mastodon = "Følg oss på Mastodon" +handcoded = "Nettsiden er håndkodet av Ruben Solvang ved hjelp av HTML, CSS og minimale doser PHP. Det tok" +page_time = "ms å generere siden." -; Petition form -petition.form_title = "Signer underskriftskampanjen" -petition.firstname_label = "Fornavn" -petition.firstname_placeholder = "Ditt fornavn" -petition.firstname_required = "Fornavn er påkrevd" -petition.surname_label = "Etternavn" -petition.surname_placeholder = "Ditt etternavn" -petition.surname_required = "Etternavn er påkrevd" -petition.email_label = "E-post" -petition.email_placeholder = "din@epost.no" -petition.email_help = "Vises ikke offentlig, kun for bekreftelse" -petition.email_required = "Gyldig e-post er påkrevd" -petition.region_label = "Fylke" -petition.region_required = "Velg fylke" -petition.region_placeholder = "Velg fylke..." -petition.display_legend = "Hvordan vil du vises i listen?" -petition.display_semi = "Vis mitt fornavn og fylke (standard)" -petition.display_anonymous = "Anonym - vis bare mitt fylke" -petition.anonymous_name = "Anonym" -petition.from_region = "fra" -petition.display_full = "Vis mitt fulle navn og fylke" -petition.submit_button = "Signer underskriftskampanjen" -petition.signatures_title = "Underskrifter" -petition.signature_count = "{count} underskrift" -petition.signature_count_plural = "{count} underskrifter" -petition.newest_first = "Nyeste først" -petition.error_csrf = "Sikkerhetsfeil. Vennligst prøv igjen." -petition.error_honeypot = "Ugyldig innsending." -petition.error_rate_limit = "Vennligst vent litt før du sender på nytt." -petition.error_time_check = "Flere underskrifter ble forsøkt levert fra samme PC innen et kort tidsrom. Vennligst vent en stund og prøv på nytt." -petition.error_referrer = "Ugyldig forespørsel." -petition.error_validation = "Vennligst rett opp feilene i skjemaet." -petition.error_email_send = "Kunne ikke sende bekreftelsesmail. Vennligst prøv igjen senere." -petition.error_already_signed = "Denne e-postadressen har allerede signert denne kampanjen." -petition.success_pending = "Takk! Sjekk din e-post for å bekrefte signaturen." -petition.confirm_success = "Takk! Din signatur er nå bekreftet og lagt til i listen." -petition.confirm_error = "Ugyldig eller utløpt bekreftelseslenke." -petition.confirm_already = "Denne signaturen er allerede bekreftet." -petition.email_subject = "Bekreft din signatur" -petition.email_greeting = "Hei {name}," -petition.email_thanks = "Takk for at du signerte underskriftskampanjen «{title}»." -petition.email_confirm = "Vennligst bekreft din signatur ved å klikke på denne lenken:" -petition.email_ignore = "Hvis du ikke signerte denne kampanjen, kan du ignorere denne e-posten." -petition.email_signature = "Med vennlig hilsen" -petition.email_org = "Stopp Lidelsen" +[petition] +form_title = "Signer underskriftskampanjen" +firstname_label = "Fornavn" +firstname_placeholder = "Ditt fornavn" +firstname_required = "Fornavn er påkrevd" +surname_label = "Etternavn" +surname_placeholder = "Ditt etternavn" +surname_required = "Etternavn er påkrevd" +email_label = "E-post" +email_placeholder = "din@epost.no" +email_help = "Vises ikke offentlig, kun for bekreftelse" +email_required = "Gyldig e-post er påkrevd" +region_label = "Fylke" +region_required = "Velg fylke" +region_placeholder = "Velg fylke..." +display_legend = "Hvordan vil du vises i listen?" +display_semi = "Vis mitt fornavn og fylke (standard)" +display_anonymous = "Anonym - vis bare mitt fylke" +anonymous_name = "Anonym" +from_region = "fra" +display_full = "Vis mitt fulle navn og fylke" +submit_button = "Signer underskriftskampanjen" +signatures_title = "Underskrifter" +signature_count = "{count} underskrift" +signature_count_plural = "{count} underskrifter" +newest_first = "Nyeste først" +error_csrf = "Sikkerhetsfeil. Vennligst prøv igjen." +error_honeypot = "Ugyldig innsending." +error_rate_limit = "Vennligst vent litt før du sender på nytt." +error_ip_rate_limit = "For mange forsøk fra din IP-adresse. Vennligst vent 5 minutter før du prøver igjen." +error_time_check = "Flere underskrifter ble forsøkt levert fra samme PC innen et kort tidsrom. Vennligst vent en stund og prøv på nytt." +error_referrer = "Ugyldig forespørsel." +error_validation = "Vennligst rett opp feilene i skjemaet." +error_email_send = "Kunne ikke sende bekreftelsesmail. Vennligst prøv igjen senere." +error_already_signed = "Denne e-postadressen har allerede signert denne kampanjen." +success_pending = "Takk! Sjekk din e-post for å bekrefte signaturen." +confirm_success = "Takk! Din signatur er nå bekreftet og lagt til i listen." +confirm_error = "Ugyldig bekreftelseslenke." +confirm_expired = "Denne bekreftelseslenken har utløpt (maks 30 dager). Vennligst signer kampanjen på nytt hvis du fortsatt ønsker å støtte den." +confirm_already = "Denne signaturen er allerede bekreftet." +email_subject = "Bekreft din signatur" +email_greeting = "Hei {name}," +email_thanks = "Takk for at du signerte underskriftskampanjen «{title}»." +email_confirm = "Vennligst bekreft din signatur ved å klikke på denne lenken:" +email_expiry_notice = "Denne lenken er gyldig i 30 dager av personvernhensyn (GDPR)." +email_ignore = "Hvis du ikke signerte denne kampanjen, kan du ignorere denne e-posten." +email_signature = "Med vennlig hilsen" +email_org = "Stopp Lidelsen" +email_thankyou_subject = "Takk for din signatur" +email_thankyou_confirmed = "Din signatur på underskriftskampanjen «{title}» er nå bekreftet og registrert." +email_delete_info = "Hvis du ønsker å trekke tilbake din signatur, kan du gjøre det når som helst ved å klikke på denne lenken:" +delete_success = "Din signatur er nå slettet." +delete_error = "Kunne ikke slette signaturen. Lenken kan være ugyldig." -; Norwegian regions (fylker) -regions.oslo = "Oslo" -regions.rogaland = "Rogaland" -regions.more_og_romsdal = "Møre og Romsdal" -regions.nordland = "Nordland" -regions.viken = "Viken" -regions.innlandet = "Innlandet" -regions.vestfold_og_telemark = "Vestfold og Telemark" -regions.agder = "Agder" -regions.vestland = "Vestland" -regions.trondelag = "Trøndelag" -regions.troms_og_finnmark = "Troms og Finnmark" +[regions] +agder = "Agder" +akershus = "Akershus" +buskerud = "Buskerud" +finnmark = "Finnmark" +innlandet = "Innlandet" +more_og_romsdal = "Møre og Romsdal" +nordland = "Nordland" +oslo = "Oslo" +rogaland = "Rogaland" +telemark = "Telemark" +troms = "Troms" +trondelag = "Trøndelag" +vestfold = "Vestfold" +vestland = "Vestland" +ostfold = "Østfold"