aboutsummaryrefslogtreecommitdiffstats
path: root/internal/i18n/el.go
diff options
context:
space:
mode:
authorgrm <grm@eyesin.space>2026-09-16 00:00:57 +0300
committergrm <grm@eyesin.space>2026-09-16 00:00:57 +0300
commit839343a3108734a15e331b542a20ed9c77ef582b (patch)
treea6aabc8719c16398bf1ccd874a7efe865b364a9e /internal/i18n/el.go
parent628dcb814ece6335667e2b719049728aa161d8c9 (diff)
downloadblogspace-839343a3108734a15e331b542a20ed9c77ef582b.tar.gz
blogspace-839343a3108734a15e331b542a20ed9c77ef582b.tar.bz2
blogspace-839343a3108734a15e331b542a20ed9c77ef582b.zip
Add a search box module and a search page
Readers had no way to find a post. The new "search" module goes in the header (a bar under the nav) or a side column (a box with a heading) and is a plain GET form to /search, so it works without JavaScript. The results page lists the published posts of every page whose title or Markdown body matches the query — case-insensitive, each word literal, spaces meaning "anything in between", in order — as title, date and a short snippet with the match marked, 20 per page. modules.kind is a CHECK constraint, so a migration widens it; "search" becomes a reserved page slug so the literal route keeps winning over /{page}. moduleHasSettings now takes the module: a header search box has no heading, hence nothing to edit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sd8UPWrvyYCLj97JexNw3A
Diffstat (limited to 'internal/i18n/el.go')
-rw-r--r--internal/i18n/el.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/internal/i18n/el.go b/internal/i18n/el.go
index c4f0fac..bb0fcd8 100644
--- a/internal/i18n/el.go
+++ b/internal/i18n/el.go
@@ -323,6 +323,7 @@ var el = map[string]string{
"Recent posts": "Πρόσφατες δημοσιεύσεις",
"Tags": "Ετικέτες",
"Tag cloud": "Σύννεφο ετικετών",
+ "Search box": "Πλαίσιο αναζήτησης",
"Custom HTML": "Δικό σας HTML",
"RSS link": "Σύνδεσμος RSS",
"Footer text": "Κείμενο υποσέλιδου",
@@ -344,6 +345,7 @@ var el = map[string]string{
"How many tags": "Πόσες ετικέτες",
"Your tags with the number of posts in each, most used first. Only published posts count.": "Οι ετικέτες σας με τον αριθμό δημοσιεύσεων της καθεμίας, οι πιο χρησιμοποιημένες πρώτα. Μετρούν μόνο οι ορατές δημοσιεύσεις.",
"Every tag in alphabetical order, bigger the more posts use it.": "Όλες οι ετικέτες αλφαβητικά, μεγαλύτερες όσο περισσότερες δημοσιεύσεις τις χρησιμοποιούν.",
+ "A box that searches the published posts of every page by title and text; the results open on your blog’s search page. Case does not matter, and several words find posts that contain them in that order, with anything in between.": "Ένα πλαίσιο που ψάχνει τις δημοσιευμένες δημοσιεύσεις κάθε σελίδας στον τίτλο και το κείμενο· τα αποτελέσματα ανοίγουν στη σελίδα αναζήτησης του ιστολογίου σας. Πεζά και κεφαλαία δεν έχουν σημασία, και περισσότερες λέξεις βρίσκουν δημοσιεύσεις που τις περιέχουν με αυτή τη σειρά, με οτιδήποτε ανάμεσά τους.",
"Hello!": "Γεια σας!",
"Put into your page exactly as written — embeds, badges and scripts all work. Anything broken here (an unclosed tag, say) can break the page around it, so check your blog after saving. 20 KB at most.": "Μπαίνει στη σελίδα σας ακριβώς όπως γράφεται — ενσωματώσεις, σήματα και scripts δουλεύουν όλα. Ό,τι είναι λάθος εδώ (π.χ. μια ετικέτα που δεν κλείνει) μπορεί να χαλάσει τη σελίδα γύρω του, γι' αυτό ελέγξτε το ιστολόγιό σας μετά την αποθήκευση. Έως 20 KB.",
"© 2026 Me": "© 2026 Εγώ",
@@ -486,4 +488,10 @@ var el = map[string]string{
"RSS feed": "Ροή RSS",
"No tags yet.": "Δεν υπάρχουν ετικέτες ακόμα.",
"Tagged “%s”": "Με ετικέτα «%s»",
+ "Search…": "Αναζήτηση…",
+ "Results for “%s”": "Αποτελέσματα για «%s»",
+ "Type a word or two to find posts.": "Γράψτε μία ή δύο λέξεις για να βρείτε δημοσιεύσεις.",
+ "Nothing matched “%s”.": "Τίποτα δεν ταιριάζει με «%s».",
+ "One post matches.": "Μία δημοσίευση ταιριάζει.",
+ "%d posts match.": "%d δημοσιεύσεις ταιριάζουν.",
}