From 0f31dfca8e37c321c1e3a8fa4aeb6acd02cd3935 Mon Sep 17 00:00:00 2001 From: andupetcu <47487320+andupetcu@users.noreply.github.com> Date: Sat, 20 Sep 2025 18:08:43 +0300 Subject: [PATCH] Localize /[locale]/search page via next-intl; translate UI strings, filters, statuses; use bookTranslations to render book labels by locale; keep DB filters steady; support popular searches per locale. --- app/[locale]/search/page.tsx | 57 ++++++++++++++++++------------------ messages/en.json | 53 ++++++++++++++++++++++++++++++--- messages/ro.json | 53 ++++++++++++++++++++++++++++++--- 3 files changed, 127 insertions(+), 36 deletions(-) diff --git a/app/[locale]/search/page.tsx b/app/[locale]/search/page.tsx index 37a43a8..634de00 100644 --- a/app/[locale]/search/page.tsx +++ b/app/[locale]/search/page.tsx @@ -34,6 +34,8 @@ import { History, } from '@mui/icons-material' import { useState, useEffect } from 'react' +import { useTranslations, useLocale } from 'next-intl' +import { translateBookName } from '@/lib/book-translations' interface SearchResult { id: string @@ -52,6 +54,8 @@ interface SearchFilter { export default function SearchPage() { const theme = useTheme() + const t = useTranslations('pages.search') + const locale = useLocale() const [searchQuery, setSearchQuery] = useState('') const [results, setResults] = useState([]) const [loading, setLoading] = useState(false) @@ -74,10 +78,7 @@ export default function SearchPage() { 'Filipeni', 'Coloseni', 'Evrei', 'Iacob', '1 Petru', 'Apocalipsa' ] - const popularSearches = [ - 'dragoste', 'credință', 'speranță', 'iertare', 'pace', - 'rugăciune', 'înțelepciune', 'bucurie', 'răbdare', 'milostivire' - ] + const popularSearches: string[] = t.raw('popular.items') useEffect(() => { // Load search history from localStorage @@ -181,10 +182,10 @@ export default function SearchPage() { - Căutare în Scriptură + {t('title')} - Găsește rapid versete și pasaje din întreaga Biblie + {t('subtitle')} @@ -197,29 +198,29 @@ export default function SearchPage() { - Filtre + {t('filters.title')} - Testament + {t('filters.testament')} }> - Cărți specifice + {t('filters.specificBooks')} @@ -228,7 +229,7 @@ export default function SearchPage() { .map((book) => ( { @@ -252,7 +253,7 @@ export default function SearchPage() { - Căutări recente + {t('history.title')} {searchHistory.slice(0, 5).map((query, index) => ( - Căutări populare + {t('popular.title')} {popularSearches.map((query, index) => ( setSearchQuery(e.target.value)} onKeyPress={handleKeyPress} @@ -325,14 +326,14 @@ export default function SearchPage() { disabled={!searchQuery.trim() || loading} sx={{ minWidth: 100 }} > - {loading ? : 'Caută'} + {loading ? : t('button.search')} {filters.books.length > 0 && ( - Căutare în: {filters.books.join(', ')} + {t('searchIn', { books: filters.books.map(b => translateBookName(b, locale)).join(', ') })} )} @@ -344,7 +345,7 @@ export default function SearchPage() { - Se caută... + {t('searching')} {Array.from({ length: 3 }).map((_, index) => ( @@ -375,7 +376,7 @@ export default function SearchPage() { - Rezultate ({results.length}) + {t('results', { count: results.length })} @@ -388,7 +389,7 @@ export default function SearchPage() { {result.book} {result.chapter}:{result.verse} - Nu s-au găsit rezultate + {t('noResults.title')} - Încearcă să modifici termenul de căutare sau să ajustezi filtrele. + {t('noResults.description')} )} @@ -423,10 +424,10 @@ export default function SearchPage() { - Începe să cauți în Scriptură + {t('empty.title')} - Introdu un cuvânt, o frază sau o referință biblică pentru a găsi versete relevante. + {t('empty.description')} )} @@ -435,4 +436,4 @@ export default function SearchPage() { ) -} \ No newline at end of file +} diff --git a/messages/en.json b/messages/en.json index d761356..0046aad 100644 --- a/messages/en.json +++ b/messages/en.json @@ -143,10 +143,55 @@ } }, "search": { - "title": "Search", - "placeholder": "Search the Bible...", - "results": "Results", - "noResults": "No results found" + "title": "Search Scripture", + "subtitle": "Find verses and passages across the Bible", + "input": { + "placeholder": "Search words, phrases or references..." + }, + "button": { + "search": "Search" + }, + "filters": { + "title": "Filters", + "clear": "Clear", + "testament": "Testament", + "options": { + "all": "Whole Bible", + "old": "Old Testament", + "new": "New Testament" + }, + "specificBooks": "Specific books" + }, + "history": { + "title": "Recent searches" + }, + "popular": { + "title": "Popular searches", + "items": [ + "love", + "faith", + "hope", + "forgiveness", + "peace", + "prayer", + "wisdom", + "joy", + "patience", + "mercy" + ] + }, + "searching": "Searching...", + "results": "Results ({count})", + "relevance": "relevance", + "searchIn": "Searching in: {books}", + "noResults": { + "title": "No results found", + "description": "Try changing the search term or adjusting the filters." + }, + "empty": { + "title": "Start searching Scripture", + "description": "Enter a word, a phrase, or a Bible reference to find relevant verses." + } } }, "common": { diff --git a/messages/ro.json b/messages/ro.json index ccc3061..1a79333 100644 --- a/messages/ro.json +++ b/messages/ro.json @@ -143,10 +143,55 @@ } }, "search": { - "title": "Căutare", - "placeholder": "Caută în Biblie...", - "results": "Rezultate", - "noResults": "Nu s-au găsit rezultate" + "title": "Căutare în Scriptură", + "subtitle": "Găsește versete și pasaje din întreaga Biblie", + "input": { + "placeholder": "Caută cuvinte, fraze sau referințe biblice..." + }, + "button": { + "search": "Caută" + }, + "filters": { + "title": "Filtre", + "clear": "Șterge", + "testament": "Testament", + "options": { + "all": "Toată Biblia", + "old": "Vechiul Testament", + "new": "Noul Testament" + }, + "specificBooks": "Cărți specifice" + }, + "history": { + "title": "Căutări recente" + }, + "popular": { + "title": "Căutări populare", + "items": [ + "dragoste", + "credință", + "speranță", + "iertare", + "pace", + "rugăciune", + "înțelepciune", + "bucurie", + "răbdare", + "milostivire" + ] + }, + "searching": "Se caută...", + "results": "Rezultate ({count})", + "relevance": "relevanță", + "searchIn": "Căutare în: {books}", + "noResults": { + "title": "Nu s-au găsit rezultate", + "description": "Încearcă să modifici termenul de căutare sau să ajustezi filtrele." + }, + "empty": { + "title": "Începe să cauți în Scriptură", + "description": "Introdu un cuvânt, o frază sau o referință biblică pentru a găsi versete relevante." + } } }, "common": {