diff --git a/.githooks/README.md b/.githooks/README.md new file mode 100644 index 0000000..2086c08 --- /dev/null +++ b/.githooks/README.md @@ -0,0 +1,28 @@ +# Repo git hooks + +This directory holds repo-tracked git hooks. They are **not** active by default +on a fresh clone — git looks at `.git/hooks/` first, which is local and untracked. + +## One-time activation per clone + +Run from the repo root: + +```bash +git config core.hooksPath .githooks +``` + +That's it. From now on, hooks in this directory will fire on the appropriate +events. + +## What's here + +- **`pre-commit`** — i18n parity gate. Blocks any commit that adds/modifies a + `content/it/*.md` or `content/en/*.md` page without a matching sibling in the + other language tree carrying the same `translationKey:` frontmatter value. + Mirrors the server-side `.github/workflows/i18n-parity.yml` check. + +## Bypassing + +In a real emergency: `git commit --no-verify`. The server-side workflow is the +non-bypassable gate, so the only thing `--no-verify` buys you is faster local +iteration before push. diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000..35d682f --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +# i18n parity gate — block commits where the staged content/it/* and +# content/en/* files don't pair up via translationKey. +# +# Dir-split layout: content/it/foo.md (Italian) and content/en/bar.md +# (English) are paired via the `translationKey:` frontmatter field. Both +# siblings must declare the same key. The hook scans the staged tree and +# fails if a touched page lacks a key or its counterpart key is missing +# from the OTHER language tree. +# +# Bypass for emergencies: git commit --no-verify (CI parity check is the +# non-bypassable gate — see .github/workflows/i18n-parity.yml). + +set -euo pipefail + +# Files staged for commit (Added/Modified/Renamed), filtered to content/{it,en}/*.md +mapfile -t staged < <( + git diff --cached --name-only --diff-filter=AMR \ + | grep -E '^content/(it|en)/.*\.md$' || true +) + +[[ ${#staged[@]} -eq 0 ]] && exit 0 + +# extract_key : print translationKey value, empty if missing. +extract_key() { + awk ' + /^---$/ { if (in_fm) exit; in_fm=1; next } + in_fm && /^translationKey:[[:space:]]*/ { + sub(/^translationKey:[[:space:]]*/, ""); gsub(/["'\''`]/, ""); print; exit + } + ' "$1" +} + +# has_key_in : 0 if any content//**/*.md declares translationKey=. +has_key_in() { + local key="$1" lang="$2" f + [[ -d "content/$lang" ]] || return 1 + while IFS= read -r f; do + [[ "$(extract_key "$f")" == "$key" ]] && return 0 + done < <(find "content/$lang" -type f -name '*.md') + return 1 +} + +missing=() +for f in "${staged[@]}"; do + key=$(extract_key "$f") + # No translationKey = page declares no pairing yet; pre-translation + # half-step is allowed (the gate only enforces well-formed pairs, it + # does not force every page to be translated). + [[ -z "$key" ]] && continue + + case "$f" in + content/it/*) other="en" ;; + content/en/*) other="it" ;; + *) continue ;; + esac + + has_key_in "$key" "$other" || \ + missing+=("$f → translationKey '$key' missing in content/$other/") +done + +if [[ ${#missing[@]} -gt 0 ]]; then + echo "✗ i18n parity check failed:" >&2 + printf ' - %s\n' "${missing[@]}" >&2 + echo "" >&2 + echo "Fix: add the missing sibling under content// with the same" >&2 + echo "translationKey, or run 'git commit --no-verify' if you are intentionally" >&2 + echo "staging a half-step (the CI parity check will still gate the PR)." >&2 + exit 1 +fi + +exit 0 diff --git a/.github/workflows/i18n-parity.yml b/.github/workflows/i18n-parity.yml new file mode 100644 index 0000000..0fc4ebf --- /dev/null +++ b/.github/workflows/i18n-parity.yml @@ -0,0 +1,86 @@ +name: i18n parity + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + parity: + name: IT/EN parity check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Verify every content/{it,en}/*.md touched in this PR pairs via translationKey + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + run: | + set -euo pipefail + + # Delta-based parity gate — mirrors .githooks/pre-commit. Only + # files touched in THIS PR are checked. For each touched + # content/{it,en}/*.md the resulting tree must contain a + # counterpart in the OTHER language tree carrying the same + # `translationKey:` frontmatter value. + if [[ -n "${BASE_SHA:-}" && -n "${HEAD_SHA:-}" ]]; then + range="$BASE_SHA..$HEAD_SHA" + else + range="HEAD^..HEAD" + fi + + mapfile -t touched < <( + git diff --name-only --diff-filter=AMR "$range" \ + | grep -E '^content/(it|en)/.*\.md$' || true + ) + + if [[ ${#touched[@]} -eq 0 ]]; then + echo "✓ no content/{it,en}/*.md touched in this range — parity OK" + exit 0 + fi + + extract_key() { + awk ' + /^---$/ { if (in_fm) exit; in_fm=1; next } + in_fm && /^translationKey:[[:space:]]*/ { + sub(/^translationKey:[[:space:]]*/, ""); gsub(/["'"'"'`]/, ""); print; exit + } + ' "$1" + } + + has_key_in() { + local key="$1" lang="$2" f + [[ -d "content/$lang" ]] || return 1 + while IFS= read -r f; do + [[ "$(extract_key "$f")" == "$key" ]] && return 0 + done < <(find "content/$lang" -type f -name '*.md') + return 1 + } + + missing=() + for f in "${touched[@]}"; do + key=$(extract_key "$f") + # No translationKey = page declares no pairing yet. + [[ -z "$key" ]] && continue + + case "$f" in + content/it/*) other="en" ;; + content/en/*) other="it" ;; + *) continue ;; + esac + + has_key_in "$key" "$other" || \ + missing+=("$f → translationKey '$key' missing in content/$other/") + done + + if [[ ${#missing[@]} -gt 0 ]]; then + echo "::error::i18n parity broken:" + printf ' - %s\n' "${missing[@]}" + exit 1 + fi + + echo "✓ i18n parity OK (${#touched[@]} touched file(s) verified)" diff --git a/content/en/connect.md b/content/en/connect.md new file mode 100644 index 0000000..276c301 --- /dev/null +++ b/content/en/connect.md @@ -0,0 +1,56 @@ +--- +title: "How to Connect" +lead: "Everything you need to step into the world of Azzurra, in a few easy steps." +translationKey: page-come-connettersi +aliases: [/en/come-connettersi/] +--- + +## Quick connection via Web + +The fastest way to join Azzurra is to use the **webchat** straight from your browser, no installation required. + +→ [Open webchat.azzurra.chat](https://webchat.azzurra.chat) + +Pick a nickname, choose a channel, and you're in. + +--- + +## Connecting through an IRC client + +If you'd rather use a dedicated client (recommended for the best experience), use the following parameters: + +| Parameter | Value | +|-----------|-------| +| **Server** | `irc.azzurra.chat` | +| **Ports** | `6666`,`6667`,`6668`,`6669` (plain) | +| **SSL port** | `6697`,`9999` (recommended) | +| **IPv6** | supported | + +### Recommended clients + +- **[HexChat](https://hexchat.github.io/)** – Windows / Linux, free +- **[Textual](https://www.codeux.com/textual/)** – macOS +- **[WeeChat](https://weechat.org/)** – terminal, advanced +- **[mIRC](https://www.mirc.com/)** – Windows, the historic IRC client +- **[Irssi](https://irssi.org/)** – terminal + +### Quick example (HexChat) + +1. Open HexChat → *Network list* +2. Click **Add** and name the network "Azzurra" +3. Set the server to `irc.azzurra.chat/6697` and tick *Use SSL* +4. Enter your nickname and click **Connect** + +--- + +## Main channels + +| Channel | Description | +|---------|-------------| +| `#italia` | The general channel, the main meeting point | +| `#IRCHelp` | Technical help and support | + +{{< info title="💡 First connection" >}} +On your first connection you may want to register your nickname. +Type: `/msg NickServ REGISTER ` +{{< /info >}} diff --git a/content/en/contact.md b/content/en/contact.md new file mode 100644 index 0000000..8fb7534 --- /dev/null +++ b/content/en/contact.md @@ -0,0 +1,33 @@ +--- +title: "Contact" +lead: "How to reach the Azzurra IRC Network staff." +translationKey: page-contatti +aliases: [/en/contatti/] +--- + +## IRC channels + +The fastest way to reach the staff is right on the network: + +| Channel | Purpose | +|---------|---------| +| `#IRCHelp` | General support, questions, reports | + +--- + +## Generic addresses + +For general matters that don't need an immediate reply, you can email the staff at . + +--- + +## Abuse reports / K-Line + +If your IP has been banned from the network or you'd like to report an abuse, use the dedicated section: + +→ [K-Line removal request](/en/kline) + + +{{< info title="⏱️ Response times" >}} +The staff is made of volunteers. Response times may vary. For urgent assistance, head straight to `#IRCHelp` on the IRC network. +{{< /info >}} diff --git a/content/en/faq.md b/content/en/faq.md new file mode 100644 index 0000000..dd52454 --- /dev/null +++ b/content/en/faq.md @@ -0,0 +1,79 @@ +--- +title: "FAQ" +lead: "Frequently asked questions about the Azzurra IRC Network." +translationKey: page-faq +--- + +## General + +### What is Azzurra? + +Azzurra is the longest-running Italian IRC network, founded in 1997. It offers a free, organised chat space for the Italian community and beyond. + +### Is IRC still used in 2025? + +Yes! IRC is one of the most stable and open messaging protocols around. Azzurra still hosts an active community with dozens of channels in daily use. + +### Do I need to create an account to connect? + +No. You can connect with any nickname without registering. **NickServ** registration is optional, but recommended to protect your nickname. + +--- + +## Connection + +### How do I connect? + +Use the [webchat](https://webchat.azzurra.chat) right from your browser, or an IRC client like HexChat, WeeChat or mIRC. See the [How to Connect](/en/connect) page for full details. + +### Which ports should I use? + +- Port **6667** for plain connections +- Port **6697** for SSL/TLS connections (recommended) + +### Can I use IPv6? + +Yes — the network fully supports IPv6. + +--- + +## Nicknames and accounts + +### How do I register my nickname? + +``` +/msg NickServ REGISTER +``` + + +--- + +## Channels + +### How do I create a channel? + +Join the channel with `/join #channelname`. If the channel doesn't exist, it'll be created and you'll automatically become its operator. + +### How do I register a channel with ChanServ? + +``` +/msg ChanServ REGISTER #channelname password description +``` + +You must be a channel operator (have the `@` flag) to register it. + +### I need help in a channel. Who do I ask? + +Hop into `#IRCHelp`: staff and experienced users will be glad to help. + +--- + +## Issues and reports + +### How do I report a user violating the rules? + +Join `#IRCHelp` and describe the problem. As an alternative, use the [contact form](/en/contact). + +### My IP has been banned (K-Line). What do I do? + +Head over to the [K-Line removal request](/en/kline) page and fill in the form. diff --git a/content/en/history.md b/content/en/history.md new file mode 100644 index 0000000..a0d4164 --- /dev/null +++ b/content/en/history.md @@ -0,0 +1,28 @@ +--- +title: "The Story of Azzurra" +lead: "From the origins in 1997 to today: how Italy's longest-running IRC network was born and grew." +translationKey: page-storia +aliases: [/en/storia/] +--- + +## The origins (1997) + +Azzurra was born in **1997** out of the passion of a group of IRC enthusiasts who wanted to build a stable, safe Italian network — an alternative to the chats already available on the Internet, which were often chaotic and lacked clear rules. + +From the very start, the staff focused on a precise goal: building a quality environment where users could communicate freely and respectfully. + +## The growth (2000–2010) + +Through the 2000s Azzurra became the leading Italian IRC community by number of users and active channels. The network gathered ever wider support and partnered with the major Italian Internet players of the time. + +Those were the years of peak expansion: dozens of servers spread across Italy, thousands of users connected at the same time, channels dedicated to every imaginable topic. + +## The transition (2020–2024) + +In May 2020 the staff started a deep reorganisation of the network, with the goal of bringing back all the historic services in a stable, modern form. **SeenServ**, **StatServ** and the **UnoBot** bot all returned to active duty. + +In June 2024 the network formally adopted the **azzurra.chat** domain, giving the current staff direct, independent governance and carrying forward a 27-year tradition. + +## Today + +Azzurra continues its mission: offering a free, stable and welcoming chat space for the Italian community. Servers are reachable at `irc.azzurra.chat` (port 6667, SSL 6697) and the webchat lives at [webchat.azzurra.chat](https://webchat.azzurra.chat). diff --git a/content/en/kline.md b/content/en/kline.md new file mode 100644 index 0000000..fbce2fe --- /dev/null +++ b/content/en/kline.md @@ -0,0 +1,31 @@ +--- +title: "K-Line Removal Request" +lead: "Has your IP been banned from the network? Fill out this form to request removal." +translationKey: page-kline +--- + +## What is a K-Line? + +A **K-Line** is a ban that prevents a given IP address (or IP range) from connecting to the Azzurra network. It is applied by the staff in case of [rules](/en/rules) violations. + +## How to request removal + +To request the removal of a K-Line, contact the staff directly by email at , providing: + +1. Your banned **IP address** or hostname +2. The **error message** displayed when you tried to connect +3. A short explanation of why you believe the ban should be removed + +{{< info title="⚠️ Important" >}} +Removal requests are reviewed by the staff. Immediate replies are not guaranteed. Bans applied for serious rule violations may not be removed. +{{< /info >}} + +## Finding the error message + +When you connect and get banned, the IRC client shows a message like: + +``` +*** You are banned from this server: (expires: ) +``` + +Copy the full message and include it in your request. diff --git a/content/en/network.md b/content/en/network.md new file mode 100644 index 0000000..1d9d280 --- /dev/null +++ b/content/en/network.md @@ -0,0 +1,45 @@ +--- +title: "The Network" +lead: "The technical infrastructure of Azzurra: servers, services and network architecture." +translationKey: page-network +--- + +## Architecture + +Azzurra runs the IRC protocol on the **Bahamut** daemon, an IRCd originally developed by DALnet and maintained and customised by the network staff over the years. + +The network is structured around **hub** servers (routing) and **leaf** servers (user connections), linked together to guarantee stability and redundancy. + +## Servers + +The main round-robin is reachable at: + +``` +irc.azzurra.chat +``` + +Standard ports: `6666` `6667` `6668` `6669` +SSL/TLS ports: `6697` `9999` +IPv6: supported + +## Services + +The following IRC services are available on the network: + +| Service | Description | +|---------|-------------| +| **NickServ** | Nickname registration and protection | +| **ChanServ** | Channel management and protection | +| **MemoServ** | Offline messages system | +| **SeenServ** | User presence statistics | +| **StatServ** | Network statistics | + +For help on a service: `/msg NickServ HELP` (or the name of the service you want). + +## Connectivity + +The network supports both **IPv4** and **IPv6**. Encrypted **TLS** connections are available on ports 6697 and 9999. + +{{< info title="👋 Staff" >}} +For technical info about the network, drop into `#IRCHelp` or reach the staff from the [Contact](/en/contact) page. +{{< /info >}} diff --git a/content/en/news/_index.md b/content/en/news/_index.md new file mode 100644 index 0000000..1b65593 --- /dev/null +++ b/content/en/news/_index.md @@ -0,0 +1,5 @@ +--- +title: "News Archive" +lead: "All the official news and updates from the Azzurra network." +translationKey: section-news +--- diff --git a/content/en/news/azzurra-reborn-as-azzurra-chat.md b/content/en/news/azzurra-reborn-as-azzurra-chat.md new file mode 100644 index 0000000..c8efbe7 --- /dev/null +++ b/content/en/news/azzurra-reborn-as-azzurra-chat.md @@ -0,0 +1,29 @@ +--- +title: "Azzurra is reborn as Azzurra.chat" +date: 2024-06-08 +author: "Azzurra Staff" +tags: ["announcement", "network"] +summary: "The Azzurra.org IRC network is being reorganised under the new Azzurra.chat domain, directly managed by the current staff." +translationKey: news-azzurra-rinasce-come-azzurra-chat +aliases: [/en/news/azzurra-rinasce-come-azzurra-chat/] +--- + +We're glad to inform you that the **Azzurra.org** IRC network will soon be reorganised under the **Azzurra.chat** name. During this transition the website `www.azzurra.org` and the round-robin `irc.azzurra.org` will remain available. + +This decision was made because the holder of the Azzurra.org domain is no longer interested in the IRC network, and at the same time it lets the current staff manage the network directly and independently. + +## What changes + +In the coming days we'll roll out the necessary changes to the IRCd servers and services to reflect this. We'll keep you updated and send further announcements about any disruption during this transition. + +## How to connect + +You can keep connecting to the network using the `irc.azzurra.org` round-robin, but we suggest updating your references right away to: + +``` +irc.azzurra.chat +``` + +Both addresses are accessible on port **6667** (SSL: **6697**). + +We sincerely thank you for the show of affection in these last few days and for being part of Azzurra for so many years. We're thrilled to keep serving our community and to carry forward the tradition that has bound us together for **27 years**. diff --git a/content/en/news/gamebot.md b/content/en/news/gamebot.md new file mode 100644 index 0000000..992fe31 --- /dev/null +++ b/content/en/news/gamebot.md @@ -0,0 +1,39 @@ +--- +title: "GameBot has landed on Azzurra!" +date: 2026-05-10 +author: "Azzurra Staff" +tags: ["announcement", "bot", "games"] +summary: "Card games, poker, trivia and UNO right inside your channel: GameBot brings tabletop fun to Azzurra." +translationKey: news-gamebot +--- + +## A new companion in chat 🎲 +We're happy to introduce **GameBot**, the new official Azzurra bot dedicated to in-channel games. Built to liven up evenings and recreate that virtual-tabletop atmosphere that's always been part of IRC communities, GameBot brings four timeless classics into our rooms. + +## Available games +- 🃏 **Sette e Mezzo**: the classic Italian card game where luck and steady nerves make the difference. Get as close to seven-and-a-half as you can without busting. +- ♠️ **Texas Hold'em**: the world's most popular poker, channel edition. Bluff, raise and all-in with friends — no real bets, but all the ego on the line. +- 🧠 **Trivia**: rapid-fire questions on general knowledge, cinema, music, sports and much more. +- 🎴 **UNO**: the card game that needs no introduction. Draw two, skip a turn, swap colors — and never forget to call "UNO!". + +## How to start playing +To get GameBot in your channel, just invite it: + +``` +/invite GameBot #yourchannel +``` + +Once it joins, the full list of available games is one command away: + +``` +!listgames +``` + +From there, every match is started with the dedicated commands GameBot will explain on the fly. + +## Why GameBot +We believe IRC is much more than a chat: it's a place to socialise. GameBot was born to give you one more reason to stay connected, challenge your friends and make new acquaintances around a virtual table. No app to install, no extra accounts: just the commands you already know. + +Have fun, and may the best player win! + +See you in chat 👋 diff --git a/content/en/news/new-servers-2026.md b/content/en/news/new-servers-2026.md new file mode 100644 index 0000000..e38dcfe --- /dev/null +++ b/content/en/news/new-servers-2026.md @@ -0,0 +1,30 @@ +--- +title: "New servers available!" +date: 2026-04-30 +author: "Azzurra Staff" +tags: ["announcement", "network"] +summary: "New servers introduced for geographic redundancy! A new hub and two new leaves join the fleet." +translationKey: news-nuovi-server-2026 +aliases: [/en/news/nuovi-server-2026/] +--- + +## Network expansion: new servers and higher reliability 🚀 +We're glad to announce a major upgrade to the Azzurra infrastructure. To deliver an ever-more stable, performant connection, we've added three new nodes to our IRC network. + +## The newcomers +The upgrade introduces a new beating heart for routing and two new access points for users: +- **raptor.azzurra.chat**: our new Hub, designed to optimise internal routing and server-to-server communication. +- **ruby.azzurra.chat**: a new **IPv4 Leaf**, to minimise downtime caused by maintenance on _raccooncity.azzurra.chat_. +- **nightwish.azzurra.chat**: a new **IPv6 Leaf**, dedicated to users browsing on the next-generation protocol for native, fast connectivity. + +## Why this upgrade? +This isn't just about "adding boxes" — it's about evolving service quality: +- **Geographic redundancy**: spreading servers across new data centres ensures the network stays online even in the face of localised failures or regional instability. +- **Traffic distribution**: thanks to the new leaves, user load is balanced more evenly, reducing latency and improving response times during chats. +- **Scalability and the future**: this layout lets us better handle traffic spikes and integrate new community services more easily. + +## How to connect +The new leaves (`ruby` and `nightwish`) are already part of our `irc.azzurra.chat` round-robin. +While direct connections to individual servers are still possible, we _strongly_ recommend sticking with the main address above. + +See you in chat 👋 diff --git a/content/en/news/new-website-2008.md b/content/en/news/new-website-2008.md new file mode 100644 index 0000000..7003260 --- /dev/null +++ b/content/en/news/new-website-2008.md @@ -0,0 +1,19 @@ +--- +title: "New website and ChanList" +date: 2008-05-29 +author: "Azzurra Staff" +tags: ["announcement", "website"] +summary: "Announcing the new Azzurra website with a refreshed look, a new ChanList and ChanStats." +translationKey: news-nuovo-sito-2008 +aliases: [/en/news/nuovo-sito-2008/] +--- + +We're glad to announce the **new Azzurra website**. + +As you can see, we've completely refreshed the look of the site and the forum, and we've also introduced a new **ChanList** along with an updated visual style for the **ChanStats** service. + +The CMS in use was developed in-house by the Azzurra staff. + +## ChanList + +The **ChanList** service is up and running. Founders of any channels registered on Azzurra not yet in the listing can ask for inclusion by contacting the staff in `#IRCHelp`. diff --git a/content/en/news/new-website.md b/content/en/news/new-website.md new file mode 100644 index 0000000..75ea179 --- /dev/null +++ b/content/en/news/new-website.md @@ -0,0 +1,21 @@ +--- +title: "Azzurra has a new homepage!" +date: 2026-03-29 +author: "Azzurra Staff" +tags: ["announcement", "network"] +summary: "New homepage for www.azzurra.chat!" +translationKey: news-nuovo-sito +aliases: [/en/news/nuovo-sito/] +--- + +We're thrilled to announce the launch of the **new Azzurra homepage** at `www.azzurra.chat`! 🎉 + +This version is built on a **simpler, modern application** hosted on **GitHub Pages** (`azzurra.github.io`), which lets us: + +- Refresh the layout and make the site cleaner and more accessible. +- Reduce maintenance and simplify future updates. +- Deliver a faster, more responsive experience to users. + +## What's changing + +It's not just a visual refresh: the new homepage comes with a clearer content structure and a more agile codebase. Future updates, guides and announcements will be easier to integrate, while staying consistent with our IRC network. diff --git a/content/en/news/nickserv-resetpass.md b/content/en/news/nickserv-resetpass.md new file mode 100644 index 0000000..d4bc701 --- /dev/null +++ b/content/en/news/nickserv-resetpass.md @@ -0,0 +1,43 @@ +--- +title: "NickServ: new RESETPASS command to recover your password" +date: 2026-04-20 +author: "Azzurra Staff" +tags: ["announcement", "services", "nickserv"] +summary: "If you've forgotten your nick's password and have a valid registered email, you can now reset it on your own through an authorisation code sent to that email." +translationKey: news-nickserv-resetpass +--- + +We're happy to announce a **new services feature**: NickServ's **RESETPASS** command, which lets you reset your nick's password when you've forgotten it — provided you have a **valid registered email**. + +Until today, the only way to recover a nick whose password was lost was to go through the staff. From now on, the procedure is fully **self-service** and based on the email already associated with the nick. + +## How it works + +The flow is **two-step** and requires a services operator to perform the first step on your behalf (to prevent automated abuse): + +1. A services operator runs `/ns SENDPASS ` — services email the registered address a single-use **authorisation code**. +2. You, after checking your inbox, run: + + ``` + /ns RESETPASS + ``` + + If the code is correct, the password is replaced immediately and you can `/ns identify` with the new one. + +## Requirements + +- The nick must have a **registered, still-valid email**. +- The previous password is **not needed** — the whole point of the command is to regain access without it. +- The code is single-use and has an expiry; if it expires, just request a fresh SENDPASS. + +## How to ask for a reset + +If you've lost your password and still have access to the registered email, drop into `#IRCHelp` and ask a staffer to run `SENDPASS` for your nick. Once the code arrives by email, run `RESETPASS` yourself. + +If you **no longer have access** to the registered email, the self-service reset isn't possible: in that case the manual staff procedure still applies. + +--- + +As always, we keep working to make services more accessible and our users' lives easier. + +See you in chat 👋 diff --git a/content/en/news/reorganisation-2020.md b/content/en/news/reorganisation-2020.md new file mode 100644 index 0000000..7b65aac --- /dev/null +++ b/content/en/news/reorganisation-2020.md @@ -0,0 +1,34 @@ +--- +title: "Network reorganisation" +date: 2020-05-03 +author: "Azzurra Staff" +tags: ["announcement", "network"] +summary: "Azzurra is starting a deep reorganisation to bring back all the network's historic services." +translationKey: news-riorganizzazione-2020 +aliases: [/en/news/riorganizzazione-2020/] +--- + +We're glad to let you know that a **network reorganisation** is under way, designed to bring back all the services Azzurra has always offered to its users. + +## Current connectivity + +For now, connections are available: + +- On **IPv4** through `nexlab.azzurra.org` +- On **IPv6** through `void.azzurra.org` + +## Restored services + +The following are back online: + +- **SeenServ** — `/msg SeenServ help` +- **StatServ** — `/msg StatServ help` +- **UnoBot** — invitable into channels via `/invite UnoBot` + +## What's next + +The website is being revised: content will be progressively refreshed, and the chanlist, chanstats and webchat access will be back soon. + +Special thanks to **Sonic** and **joep**. + +We invite everyone to join the Azzurra relaunch! For more information you can find us on `#IRCHelp`. diff --git a/content/en/news/webchat-back-online.md b/content/en/news/webchat-back-online.md new file mode 100644 index 0000000..cc9e05f --- /dev/null +++ b/content/en/news/webchat-back-online.md @@ -0,0 +1,33 @@ +--- +title: "Azzurra's Webchat is back online!" +date: 2026-04-02 +author: "Azzurra Staff" +tags: ["announcement", "webchat"] +summary: "The Azzurra webchat is once again available at webchat.azzurra.chat with both IPv4 and IPv6 support." +translationKey: news-webchat-operativa +aliases: [/en/news/webchat-operativa/] +--- +We're glad to announce that the **Azzurra webchat is fully operational again**! 🎉 + +After a few rounds of technical work and infrastructure improvements, the service is once again available at: + +👉 `webchat.azzurra.chat` + +## What's new + +The new webchat isn't just a return online — it's also a step forward in accessibility and compatibility: + +* 🌐 **Available on both IPv4 and IPv6**, for modern, unrestricted connectivity. +* ⚡ **Higher stability and responsiveness**, thanks to the latest updates. +* 🔧 **Improved infrastructure**, designed to better support the network's users. + +## Why it matters + +With dual-stack IPv4/IPv6 support, the webchat is now reachable from more modern environments and advanced network setups, with no user-side workarounds or limitations. + +That means fewer connection issues and more direct access to the Azzurra IRC network, no matter how you're connected. + + +As always, we keep working to improve the network's services and reliability. + +See you in chat 👋 diff --git a/content/en/rules.md b/content/en/rules.md new file mode 100644 index 0000000..22b3aa2 --- /dev/null +++ b/content/en/rules.md @@ -0,0 +1,61 @@ +--- +title: "Rules" +lead: "The rules of the Azzurra IRC network. Following them keeps the environment healthy for everyone." +translationKey: page-regolamento +aliases: [/en/regolamento/] +--- + +## Foreword + +Azzurra is an IRC network open to anyone. The staff is committed to keeping it free, respectful and safe. Following the rules is a precondition for using the network. + +## General rules + +### 1. Mutual respect + +It is forbidden to insult, harass or threaten other users in any channel or in private query. Aggressive, discriminatory or hateful behaviour against people or groups is not tolerated. + +### 2. Spam and flood + +Sending repetitive messages, unauthorised advertising, or so much volume that it disrupts normal conversation (flood) is forbidden. Bots not authorised by the staff are also forbidden. + +### 3. Illegal content + +Distributing, linking or promoting content that is illegal under Italian or European law is strictly forbidden — including but not limited to: child sexual abuse material, copyright-infringing content, other people's personal data. + +### 4. Clones and proxies + +Using unauthorised multiple connections (clones), anonymous proxies or any other systems to bypass bans or limits is forbidden. To request an authorised multi-host connection, see the dedicated section. + +### 5. Nicks and channels + +Nicknames and channel names must not contain offensive, sexist, racist references, or anything otherwise contrary to public decency. The staff reserves the right to force a nickname change or close any channel that breaks this rule. + +--- + +## Channel rules + +Each channel may set its own additional rules, as long as they do not conflict with the general network rules. Channel staff (operators) are responsible for enforcing them. + +Channel operators must act fairly and not abuse their privileges. + +--- + +## Sanctions + +Rule violations may result in: + +- **Kick** from a channel +- **Ban** (temporary or permanent) from a channel +- **K-Line** (temporary or permanent ban from the network) +- **G-Line** (global ban) in the most serious cases + +--- + +## Reports + +To report rule violations, join `#IRCHelp` or use the [contact form](/en/contact). + +{{< info title="📌 Last updated" >}} +These rules are subject to updates. The staff commits to communicating any relevant changes through the site's news. +{{< /info >}} diff --git a/content/en/services.md b/content/en/services.md new file mode 100644 index 0000000..c1e6a82 --- /dev/null +++ b/content/en/services.md @@ -0,0 +1,67 @@ +--- +title: "Services" +lead: "The bots and services available on the Azzurra network for managing nicknames, channels and much more." +translationKey: page-servizi +aliases: [/en/servizi/] +--- + +## NickServ + +Handles nickname registration and protection. + +| Command | Description | +|---------|-------------| +| `REGISTER ` | Register the current nickname | +| `IDENTIFY ` | Authenticate the nickname | +| `HELP` | Show all available commands | + +Usage: `/msg NickServ ` + +--- + +## ChanServ + +Handles channel registration and protection. + +| Command | Description | +|---------|-------------| +| `REGISTER #channel` | Register the channel (you must be the founder) | +| `SET #channel TOPIC ` | Set a permanent topic | +| `HELP` | Show all available commands | + +Usage: `/msg ChanServ ` + +--- + +## MemoServ + +Lets you send offline messages to other registered users. + +| Command | Description | +|---------|-------------| +| `SEND ` | Send a memo | +| `LIST` | List received memos | +| `READ ` | Read a memo | +| `DEL ` | Delete a memo | + +Usage: `/msg MemoServ ` + +--- + +## SeenServ + +Shows the last time a user was seen on the network. + +``` +/msg SeenServ SEEN +``` + +--- + +## StatServ + +Provides network statistics (connected users, channels, servers). + +``` +/msg StatServ HELP +``` diff --git a/content/come-connettersi.md b/content/it/come-connettersi.md similarity index 97% rename from content/come-connettersi.md rename to content/it/come-connettersi.md index e44b97b..8ede680 100644 --- a/content/come-connettersi.md +++ b/content/it/come-connettersi.md @@ -1,6 +1,7 @@ --- title: "Come Connettersi" lead: "Tutto ciò che ti serve per entrare nel mondo di Azzurra, in pochi passi." +translationKey: page-come-connettersi --- ## Connessione rapida via Web diff --git a/content/contatti.md b/content/it/contatti.md similarity index 96% rename from content/contatti.md rename to content/it/contatti.md index 70ac791..effb4b7 100644 --- a/content/contatti.md +++ b/content/it/contatti.md @@ -1,6 +1,7 @@ --- title: "Contatti" lead: "Come raggiungere lo staff di Azzurra IRC Network." +translationKey: page-contatti --- ## Canali IRC diff --git a/content/faq.md b/content/it/faq.md similarity index 98% rename from content/faq.md rename to content/it/faq.md index b0a2845..ec66a3e 100644 --- a/content/faq.md +++ b/content/it/faq.md @@ -1,6 +1,7 @@ --- title: "FAQ" lead: "Domande frequenti su Azzurra IRC Network." +translationKey: page-faq --- ## Generali diff --git a/content/kline.md b/content/it/kline.md similarity index 97% rename from content/kline.md rename to content/it/kline.md index 8c92a4e..9ca843f 100644 --- a/content/kline.md +++ b/content/it/kline.md @@ -1,6 +1,7 @@ --- title: "Richiesta Rimozione K-Line" lead: "Il tuo IP è stato bannato dalla rete? Compila questo modulo per richiedere la rimozione." +translationKey: page-kline --- ## Cos'è una K-Line? diff --git a/content/network.md b/content/it/network.md similarity index 98% rename from content/network.md rename to content/it/network.md index ca03710..5d0ec79 100644 --- a/content/network.md +++ b/content/it/network.md @@ -1,6 +1,7 @@ --- title: "Il Network" lead: "L'infrastruttura tecnica di Azzurra: server, servizi e architettura della rete." +translationKey: page-network --- ## Architettura diff --git a/content/news/_index.md b/content/it/news/_index.md similarity index 78% rename from content/news/_index.md rename to content/it/news/_index.md index 91e1301..b541c5f 100644 --- a/content/news/_index.md +++ b/content/it/news/_index.md @@ -1,4 +1,5 @@ --- title: "Archivio News" lead: "Tutte le notizie e gli aggiornamenti ufficiali della rete Azzurra." +translationKey: section-news --- diff --git a/content/news/azzurra-rinasce-come-azzurra-chat.md b/content/it/news/azzurra-rinasce-come-azzurra-chat.md similarity index 96% rename from content/news/azzurra-rinasce-come-azzurra-chat.md rename to content/it/news/azzurra-rinasce-come-azzurra-chat.md index 20bbcfd..bf9b744 100644 --- a/content/news/azzurra-rinasce-come-azzurra-chat.md +++ b/content/it/news/azzurra-rinasce-come-azzurra-chat.md @@ -4,6 +4,7 @@ date: 2024-06-08 author: "Staff Azzurra" tags: ["annuncio", "rete"] summary: "La rete IRC Azzurra.org viene riorganizzata sotto il nuovo dominio Azzurra.chat, con gestione diretta da parte dello staff attuale." +translationKey: news-azzurra-rinasce-come-azzurra-chat --- Siamo lieti di informarvi che la rete IRC **Azzurra.org** verrà presto riorganizzata sotto il nome **Azzurra.chat**. In questa fase transitoria rimarranno disponibili il sito web `www.azzurra.org` ed il round robin `irc.azzurra.org`. diff --git a/content/news/gamebot.md b/content/it/news/gamebot.md similarity index 98% rename from content/news/gamebot.md rename to content/it/news/gamebot.md index 781d95f..475e83b 100644 --- a/content/news/gamebot.md +++ b/content/it/news/gamebot.md @@ -4,6 +4,7 @@ date: 2026-05-10 author: "Staff Azzurra" tags: ["annuncio", "bot", "giochi"] summary: "Sfide di carte, poker, quiz e UNO direttamente in canale: GameBot porta i giochi da tavolo su Azzurra." +translationKey: news-gamebot --- ## Una nuova compagnia in chat 🎲 diff --git a/content/news/nickserv-resetpass.md b/content/it/news/nickserv-resetpass.md similarity index 98% rename from content/news/nickserv-resetpass.md rename to content/it/news/nickserv-resetpass.md index 5ba845f..bf392db 100644 --- a/content/news/nickserv-resetpass.md +++ b/content/it/news/nickserv-resetpass.md @@ -4,6 +4,7 @@ date: 2026-04-20 author: "Staff Azzurra" tags: ["annuncio", "services", "nickserv"] summary: "Chi ha dimenticato la password del nick e ha un'e-mail registrata valida può ora resettarla in autonomia tramite un codice di autorizzazione inviato via e-mail." +translationKey: news-nickserv-resetpass --- Siamo lieti di annunciare una **nuova funzionalità dei servizi**: il comando **RESETPASS** di NickServ, che permette di reimpostare la password del proprio nick quando la si è dimenticata — a patto di avere un'**e-mail registrata valida**. diff --git a/content/news/nuovi-server-2026.md b/content/it/news/nuovi-server-2026.md similarity index 98% rename from content/news/nuovi-server-2026.md rename to content/it/news/nuovi-server-2026.md index c158368..5fd1f62 100644 --- a/content/news/nuovi-server-2026.md +++ b/content/it/news/nuovi-server-2026.md @@ -4,6 +4,7 @@ date: 2026-04-30 author: "Staff Azzurra" tags: ["annuncio", "rete"] summary: "Introdotti nuovi server per ridondanza geografica! Entrano a far parte della flotta un nuovo hub e due differenti leaf." +translationKey: news-nuovi-server-2026 --- ## Espansione della Rete: Nuovi Server e Maggiore Affidabilità 🚀 diff --git a/content/news/nuovo-sito-2008.md b/content/it/news/nuovo-sito-2008.md similarity index 95% rename from content/news/nuovo-sito-2008.md rename to content/it/news/nuovo-sito-2008.md index 9803e5b..f3c4e0f 100644 --- a/content/news/nuovo-sito-2008.md +++ b/content/it/news/nuovo-sito-2008.md @@ -4,6 +4,7 @@ date: 2008-05-29 author: "Staff Azzurra" tags: ["annuncio", "sito"] summary: "Presentazione del nuovo sito web di Azzurra con grafica rinnovata, nuova ChanList e ChanStats." +translationKey: news-nuovo-sito-2008 --- Siamo felici di poter presentare il **nuovo sito web di Azzurra**. diff --git a/content/news/nuovo-sito.md b/content/it/news/nuovo-sito.md similarity index 96% rename from content/news/nuovo-sito.md rename to content/it/news/nuovo-sito.md index a518015..623bca7 100644 --- a/content/news/nuovo-sito.md +++ b/content/it/news/nuovo-sito.md @@ -4,6 +4,7 @@ date: 2026-03-29 author: "Staff Azzurra" tags: ["annuncio", "rete"] summary: "Nuova homepage per www.azzurra.chat!" +translationKey: news-nuovo-sito --- Siamo entusiasti di annunciare il lancio della **nuova homepage di Azzurra** su `www.azzurra.chat`! 🎉 diff --git a/content/news/riorganizzazione-2020.md b/content/it/news/riorganizzazione-2020.md similarity index 96% rename from content/news/riorganizzazione-2020.md rename to content/it/news/riorganizzazione-2020.md index 3033377..027d175 100644 --- a/content/news/riorganizzazione-2020.md +++ b/content/it/news/riorganizzazione-2020.md @@ -4,6 +4,7 @@ date: 2020-05-03 author: "Staff Azzurra" tags: ["annuncio", "rete"] summary: "Azzurra avvia una profonda riorganizzazione per tornare a offrire tutti i servizi storici della rete." +translationKey: news-riorganizzazione-2020 --- Siamo lieti di comunicarvi che è in corso una **riorganizzazione del network** pensata per tornare ad offrire tutti i servizi che Azzurra ha sempre messo a disposizione della sua utenza. diff --git a/content/news/webchat-operativa.md b/content/it/news/webchat-operativa.md similarity index 97% rename from content/news/webchat-operativa.md rename to content/it/news/webchat-operativa.md index 0f4b071..3c12838 100644 --- a/content/news/webchat-operativa.md +++ b/content/it/news/webchat-operativa.md @@ -4,6 +4,7 @@ date: 2026-04-02 author: "Staff Azzurra" tags: ["annuncio", "webchat"] summary: "La webchat di Azzurra è nuovamente disponibile su webchat.azzurra.chat con supporto IPv4 e IPv6." +translationKey: news-webchat-operativa --- Siamo lieti di annunciare che la **webchat di Azzurra è tornata pienamente operativa**! 🎉 diff --git a/content/regolamento.md b/content/it/regolamento.md similarity index 98% rename from content/regolamento.md rename to content/it/regolamento.md index 2162539..21e3947 100644 --- a/content/regolamento.md +++ b/content/it/regolamento.md @@ -1,6 +1,7 @@ --- title: "Regolamento" lead: "Le regole della rete Azzurra IRC. La loro osservanza garantisce un ambiente sano per tutti." +translationKey: page-regolamento --- ## Premessa diff --git a/content/servizi.md b/content/it/servizi.md similarity index 97% rename from content/servizi.md rename to content/it/servizi.md index 3e653b1..80cb9d2 100644 --- a/content/servizi.md +++ b/content/it/servizi.md @@ -1,6 +1,7 @@ --- title: "I Servizi" lead: "I bot e servizi disponibili sulla rete Azzurra per gestire nickname, canali e molto altro." +translationKey: page-servizi --- ## NickServ diff --git a/content/storia.md b/content/it/storia.md similarity index 98% rename from content/storia.md rename to content/it/storia.md index 3066dee..ec6b176 100644 --- a/content/storia.md +++ b/content/it/storia.md @@ -1,6 +1,7 @@ --- title: "La Storia di Azzurra" lead: "Dalle origini del 1997 ad oggi: come è nata e cresciuta la più longeva rete IRC italiana." +translationKey: page-storia --- ## Le origini (1997) diff --git a/hugo.toml b/hugo.toml index dc41ad1..ec5dc2e 100644 --- a/hugo.toml +++ b/hugo.toml @@ -1,109 +1,202 @@ -baseURL = "https://azzurra.github.io" -languageCode = "it-IT" -title = "Azzurra IRC Network" -theme = "azzurra" +baseURL = "https://azzurra.github.io" +title = "Azzurra IRC Network" +theme = "azzurra" + +defaultContentLanguage = "it" +defaultContentLanguageInSubdir = false [pagination] pagerSize = 10 [params] - description = "La prima e più longeva rete IRC italiana, dal 1997. Connettiti su irc.azzurra.chat." - webchatURL = "https://webchat.azzurra.chat" - - [[params.stats]] - value = "1997" - label = "Fondata" - [[params.stats]] - value = "27+" - label = "Anni online" - [[params.stats]] - value = "100+" - label = "Canali attivi" - [[params.stats]] - value = "24/7" - label = "Uptime" - -# Main navigation -[[menus.main]] - name = "Home" - url = "/" - weight = 1 - -[[menus.main]] - name = "La Storia" - url = "/storia" - weight = 2 - -[[menus.main]] - name = "Come Connettersi" - url = "/come-connettersi" - weight = 3 - -[[menus.main]] - name = "Il Network" - url = "/network" - weight = 4 - -[[menus.main]] - name = "FAQ" - url = "/faq" - weight = 5 - -[[menus.main]] - name = "Contatti" - url = "/contatti" - weight = 6 - -# Footer menus -[[menus.footer]] - name = "Notizie" - url = "/news" - weight = 1 - [menus.footer.params] - col = "rete" - -[[menus.footer]] - name = "I Server" - url = "/network" - weight = 2 - [menus.footer.params] - col = "rete" - -[[menus.footer]] - name = "I Servizi" - url = "/servizi" - weight = 3 - [menus.footer.params] - col = "rete" - -[[menus.footer]] - name = "La Storia" - url = "/storia" - weight = 1 - [menus.footer.params] - col = "info" - -[[menus.footer]] - name = "Regolamento" - url = "/regolamento" - weight = 2 - [menus.footer.params] - col = "info" - -[[menus.footer]] - name = "FAQ" - url = "/faq" - weight = 3 - [menus.footer.params] - col = "info" - -[[menus.footer]] - name = "Contatti" - url = "/contatti" - weight = 4 - [menus.footer.params] - col = "info" + webchatURL = "https://webchat.azzurra.chat" [caches] [caches.images] dir = ':cacheDir/images' + +# ───────────────────────────────────────────────────────────────────── +# Italian (default — served at /) +# ───────────────────────────────────────────────────────────────────── +[languages.it] + languageName = "Italiano" + languageCode = "it-IT" + contentDir = "content/it" + weight = 1 + + [languages.it.params] + description = "La prima e più longeva rete IRC italiana, dal 1997. Connettiti su irc.azzurra.chat." + + [[languages.it.params.stats]] + value = "1997" + label = "Fondata" + [[languages.it.params.stats]] + value = "27+" + label = "Anni online" + [[languages.it.params.stats]] + value = "100+" + label = "Canali attivi" + [[languages.it.params.stats]] + value = "24/7" + label = "Uptime" + + [[languages.it.menus.main]] + name = "Home" + url = "/" + weight = 1 + [[languages.it.menus.main]] + name = "La Storia" + url = "/storia" + weight = 2 + [[languages.it.menus.main]] + name = "Come Connettersi" + url = "/come-connettersi" + weight = 3 + [[languages.it.menus.main]] + name = "Il Network" + url = "/network" + weight = 4 + [[languages.it.menus.main]] + name = "FAQ" + url = "/faq" + weight = 5 + [[languages.it.menus.main]] + name = "Contatti" + url = "/contatti" + weight = 6 + + [[languages.it.menus.footer]] + name = "Notizie" + url = "/news" + weight = 1 + [languages.it.menus.footer.params] + col = "rete" + [[languages.it.menus.footer]] + name = "I Server" + url = "/network" + weight = 2 + [languages.it.menus.footer.params] + col = "rete" + [[languages.it.menus.footer]] + name = "I Servizi" + url = "/servizi" + weight = 3 + [languages.it.menus.footer.params] + col = "rete" + [[languages.it.menus.footer]] + name = "La Storia" + url = "/storia" + weight = 1 + [languages.it.menus.footer.params] + col = "info" + [[languages.it.menus.footer]] + name = "Regolamento" + url = "/regolamento" + weight = 2 + [languages.it.menus.footer.params] + col = "info" + [[languages.it.menus.footer]] + name = "FAQ" + url = "/faq" + weight = 3 + [languages.it.menus.footer.params] + col = "info" + [[languages.it.menus.footer]] + name = "Contatti" + url = "/contatti" + weight = 4 + [languages.it.menus.footer.params] + col = "info" + +# ───────────────────────────────────────────────────────────────────── +# English (served at /en/) +# ───────────────────────────────────────────────────────────────────── +[languages.en] + languageName = "English" + languageCode = "en-US" + contentDir = "content/en" + weight = 2 + + [languages.en.params] + description = "Italy's longest-running IRC community, since 1997. Connect at irc.azzurra.chat." + + [[languages.en.params.stats]] + value = "1997" + label = "Founded" + [[languages.en.params.stats]] + value = "27+" + label = "Years online" + [[languages.en.params.stats]] + value = "100+" + label = "Active channels" + [[languages.en.params.stats]] + value = "24/7" + label = "Uptime" + + [[languages.en.menus.main]] + name = "Home" + url = "/en/" + weight = 1 + [[languages.en.menus.main]] + name = "History" + url = "/en/history" + weight = 2 + [[languages.en.menus.main]] + name = "Connect" + url = "/en/connect" + weight = 3 + [[languages.en.menus.main]] + name = "Network" + url = "/en/network" + weight = 4 + [[languages.en.menus.main]] + name = "FAQ" + url = "/en/faq" + weight = 5 + [[languages.en.menus.main]] + name = "Contact" + url = "/en/contact" + weight = 6 + + [[languages.en.menus.footer]] + name = "News" + url = "/en/news" + weight = 1 + [languages.en.menus.footer.params] + col = "rete" + [[languages.en.menus.footer]] + name = "Servers" + url = "/en/network" + weight = 2 + [languages.en.menus.footer.params] + col = "rete" + [[languages.en.menus.footer]] + name = "Services" + url = "/en/services" + weight = 3 + [languages.en.menus.footer.params] + col = "rete" + [[languages.en.menus.footer]] + name = "History" + url = "/en/history" + weight = 1 + [languages.en.menus.footer.params] + col = "info" + [[languages.en.menus.footer]] + name = "Rules" + url = "/en/rules" + weight = 2 + [languages.en.menus.footer.params] + col = "info" + [[languages.en.menus.footer]] + name = "FAQ" + url = "/en/faq" + weight = 3 + [languages.en.menus.footer.params] + col = "info" + [[languages.en.menus.footer]] + name = "Contact" + url = "/en/contact" + weight = 4 + [languages.en.menus.footer.params] + col = "info" diff --git a/themes/azzurra/i18n/en.toml b/themes/azzurra/i18n/en.toml new file mode 100644 index 0000000..e643ccd --- /dev/null +++ b/themes/azzurra/i18n/en.toml @@ -0,0 +1,80 @@ +# Azzurra theme — English strings + +# Date format (used by time.Format with site language) +[dateFormat] +other = "January 02, 2006" + +# Header / nav +[navWebChat] +other = "Web Chat ↗" + +# Footer +[footerNetworkColumn] +other = "Network" + +[footerInfoColumn] +other = "Information" + +[footerBrandTagline] +other = "Italy's longest-running IRC community, since 1997." + +[footerConnectLine] +other = "Connect at irc.azzurra.chat on port 6667 (SSL: 6697)." + +[footerCopyright] +other = "© 1997–{{ .Year }} Azzurra IRC Network. All rights reserved." + +[footerStaffPrefix] +other = "Staff:" + +# Home (index.html) +[heroBadge] +other = "🟢 Online since 1997" + +[heroTitle] +other = "The Italian
IRC Community" + +[heroSubtitle] +other = "Azzurra is Italy's longest-running IRC network. Join thousands of channels, talk to the community, make new friends." + +[heroCTAConnect] +other = "💬 Connect now" + +[heroCTAHowto] +other = "How to connect" + +[newsTitle] +other = "📰 Latest news" + +[newsArchive] +other = "News archive →" + +[newsEmpty] +other = "No news available." + +[ctaConnectTitle] +other = "Ready to connect?" + +[ctaConnectSubtitle] +other = "Use your favorite IRC client, or jump in directly from the browser." + +[ctaConnectButton] +other = "Open Web Chat" + +# List page +[breadcrumbHome] +other = "Home" + +[archiveCount] +other = "{{ .Count }} articles in archive" + +[readMore] +other = "Read more →" + +# Single (post) +[postByPrefix] +other = "by" + +# Shortcode +[infoBoxDefaultTitle] +other = "ℹ️ Note" diff --git a/themes/azzurra/i18n/it.toml b/themes/azzurra/i18n/it.toml new file mode 100644 index 0000000..ea48b0d --- /dev/null +++ b/themes/azzurra/i18n/it.toml @@ -0,0 +1,80 @@ +# Azzurra theme — Italian strings + +# Date format (used by time.Format with site language) +[dateFormat] +other = "02 January 2006" + +# Header / nav +[navWebChat] +other = "Web Chat ↗" + +# Footer +[footerNetworkColumn] +other = "Rete" + +[footerInfoColumn] +other = "Informazioni" + +[footerBrandTagline] +other = "La prima community IRC italiana, dal 1997." + +[footerConnectLine] +other = "Connettiti su irc.azzurra.chat porta 6667 (SSL: 6697)." + +[footerCopyright] +other = "© 1997–{{ .Year }} Azzurra IRC Network. Tutti i diritti riservati." + +[footerStaffPrefix] +other = "Staff:" + +# Home (index.html) +[heroBadge] +other = "🟢 Online dal 1997" + +[heroTitle] +other = "La Community IRC
Italiana" + +[heroSubtitle] +other = "Azzurra è la più longeva rete IRC italiana. Entra in migliaia di canali, parla con la community, fai nuove amicizie." + +[heroCTAConnect] +other = "💬 Connettiti ora" + +[heroCTAHowto] +other = "Come connettersi" + +[newsTitle] +other = "📰 Ultime notizie" + +[newsArchive] +other = "Archivio news →" + +[newsEmpty] +other = "Nessuna notizia disponibile." + +[ctaConnectTitle] +other = "Pronto a connetterti?" + +[ctaConnectSubtitle] +other = "Usa il tuo client IRC preferito oppure accedi direttamente dal browser." + +[ctaConnectButton] +other = "Apri Web Chat" + +# List page +[breadcrumbHome] +other = "Home" + +[archiveCount] +other = "{{ .Count }} articoli in archivio" + +[readMore] +other = "Leggi tutto →" + +# Single (post) +[postByPrefix] +other = "di" + +# Shortcode +[infoBoxDefaultTitle] +other = "ℹ️ Nota" diff --git a/themes/azzurra/layouts/_default/baseof.html b/themes/azzurra/layouts/_default/baseof.html index 04212ca..3afaf2e 100644 --- a/themes/azzurra/layouts/_default/baseof.html +++ b/themes/azzurra/layouts/_default/baseof.html @@ -17,7 +17,7 @@