i18n(search): apply i18n on all filters

This commit is contained in:
Edouard Vanbelle
2026-07-26 18:03:47 +02:00
parent 01076029aa
commit 7718970e75
17 changed files with 535 additions and 39 deletions
+23 -9
View File
@@ -86,15 +86,29 @@
// (`<svelte:head>`); when there IS a query, ResourceList never mounts
// with this string — the `else` branch below owns the render.
const resultsTitle = $derived.by(() => {
const base = query
? t('search.results_for', { q: query }, 'Results for “{{q}}”')
: t('search.title', 'Search');
if (queryTimeMs == null) return base;
const suffix =
total != null
? t('search.found_n_in_ms', { n: total, ms: queryTimeMs }, '{{n}} results in {{ms}} ms')
: `${queryTimeMs} ms`;
return `${base} · ${suffix}`;
// No query yet — the fresh-page tab title.
if (!query) return t('search.title', 'Search');
// Still loading the first response — show just the "Results for X"
// half. `queryTimeMs` becomes non-null the moment the backend answers.
if (queryTimeMs == null) return t('search.results_for', { q: query }, 'Results for “{{q}}”');
// Full summary keys concatenate the whole title in one string so
// translators can rearrange the `·` join, punctuation, and word
// order (Ed's 2026-07-26 i18n pass — pre-refactor the JS
// concatenated the "Results for" head and "N results in Xms" tail
// with a hard-coded ` · ` separator, which is awkward for RTL
// locales and CJK spacing).
if (total != null) {
return t(
'search.results_summary',
{ q: query, n: total, ms: queryTimeMs },
'Results for “{{q}}” · {{n}} results in {{ms}} ms'
);
}
return t(
'search.results_summary_no_total',
{ q: query, ms: queryTimeMs },
'Results for “{{q}}” · {{ms}} ms'
);
});
// Accumulated pages of results. Cursor pagination — a filter/sort/query
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "الحجم",
"title": "بحث",
"type": {
"audio": "صوت"
"audio": "صوت",
"all": "جميع الأنواع",
"image": "الصور",
"video": "مقاطع الفيديو",
"document": "المستندات",
"archive": "الأرشيفات"
},
"type_label": "النوع"
"type_label": "النوع",
"sort": {
"relevance": "الصلة"
},
"results_for": "نتائج البحث عن \"{{q}}\"",
"results_summary": "نتائج البحث عن \"{{q}}\" · {{n}} نتيجة في {{ms}} مللي ثانية",
"results_summary_no_total": "نتائج البحث عن \"{{q}}\" · {{ms}} مللي ثانية",
"everywhere": "في كل مكان",
"this_folder": "هذا المجلد",
"this_folder_disabled": "افتح مجلدًا في الملفات لقصر البحث عليه",
"scope": "النطاق",
"date_label": "التاريخ",
"sort_by": "الترتيب حسب",
"clear_filters": "مسح الفلاتر",
"searching_for": "البحث عن \"{{q}}\"…",
"no_results": "لم يتم العثور على نتائج لهذا البحث",
"prompt": "اكتب استعلامًا في شريط البحث أعلاه.",
"size": {
"all": "أي حجم",
"small": "< 1 ميغابايت",
"medium": "1–100 ميغابايت",
"large": "> 100 ميغابايت"
},
"date": {
"all": "في أي وقت",
"day": "آخر 24 ساعة",
"week": "الأسبوع الماضي",
"month": "الشهر الماضي",
"year": "العام الماضي"
}
},
"sizeBucket": {
"folders": "مجلدات"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "Größe",
"title": "Suchen",
"type": {
"audio": "Audio"
"audio": "Audio",
"all": "Alle Typen",
"image": "Bilder",
"video": "Videos",
"document": "Dokumente",
"archive": "Archive"
},
"type_label": "Typ"
"type_label": "Typ",
"sort": {
"relevance": "Relevanz"
},
"results_for": "Ergebnisse für „{{q}}\"",
"results_summary": "Ergebnisse für „{{q}}\" · {{n}} Ergebnisse in {{ms}} ms",
"results_summary_no_total": "Ergebnisse für „{{q}}\" · {{ms}} ms",
"everywhere": "Überall",
"this_folder": "Dieser Ordner",
"this_folder_disabled": "Öffnen Sie einen Ordner in Dateien, um die Suche darauf zu beschränken",
"scope": "Bereich",
"date_label": "Datum",
"sort_by": "Sortieren nach",
"clear_filters": "Filter zurücksetzen",
"searching_for": "Suche nach „{{q}}\"…",
"no_results": "Keine Ergebnisse für diese Suche gefunden",
"prompt": "Geben Sie oben eine Suchanfrage ein.",
"size": {
"all": "Beliebige Größe",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "Beliebiger Zeitraum",
"day": "Letzte 24 Stunden",
"week": "Letzte Woche",
"month": "Letzter Monat",
"year": "Letztes Jahr"
}
},
"sizeBucket": {
"folders": "Ordner"
+4 -1
View File
@@ -1576,7 +1576,10 @@
"image": "Images",
"video": "Videos"
},
"type_label": "Type"
"type_label": "Type",
"results_summary": "Results for “{{q}}” · {{n}} results in {{ms}} ms",
"results_summary_no_total": "Results for “{{q}}” · {{ms}} ms",
"this_folder_disabled": "Open a folder in Files to scope search to it"
},
"settings": {
"language": "Language"
+36 -2
View File
@@ -1218,9 +1218,43 @@
"size_label": "Tamaño",
"title": "Buscar",
"type": {
"audio": "Audio"
"audio": "Audio",
"all": "Todos los tipos",
"image": "Imágenes",
"video": "Vídeos",
"document": "Documentos",
"archive": "Archivos"
},
"type_label": "Tipo"
"type_label": "Tipo",
"sort": {
"relevance": "Relevancia"
},
"results_for": "Resultados para \"{{q}}\"",
"results_summary": "Resultados para \"{{q}}\" · {{n}} resultados en {{ms}} ms",
"results_summary_no_total": "Resultados para \"{{q}}\" · {{ms}} ms",
"everywhere": "En cualquier lugar",
"this_folder": "Esta carpeta",
"this_folder_disabled": "Abre una carpeta en Archivos para limitar la búsqueda a ella",
"scope": "Ámbito",
"date_label": "Fecha",
"sort_by": "Ordenar por",
"clear_filters": "Borrar filtros",
"searching_for": "Buscando \"{{q}}\"…",
"no_results": "No se encontraron resultados para esta búsqueda",
"prompt": "Escribe una consulta en la barra de búsqueda superior.",
"size": {
"all": "Cualquier tamaño",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "Cualquier momento",
"day": "Últimas 24 horas",
"week": "Última semana",
"month": "Último mes",
"year": "Último año"
}
},
"sizeBucket": {
"folders": "Carpetas"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "اندازه",
"title": "جست‌و‌جو",
"type": {
"audio": "صوتی"
"audio": "صوتی",
"all": "همه انواع",
"image": "تصاویر",
"video": "ویدیوها",
"document": "اسناد",
"archive": "بایگانی‌ها"
},
"type_label": "نوع"
"type_label": "نوع",
"sort": {
"relevance": "مرتبط بودن"
},
"results_for": "نتایج جستجو برای «{{q}}»",
"results_summary": "نتایج جستجو برای «{{q}}» · {{n}} نتیجه در {{ms}} میلی‌ثانیه",
"results_summary_no_total": "نتایج جستجو برای «{{q}}» · {{ms}} میلی‌ثانیه",
"everywhere": "همه جا",
"this_folder": "این پوشه",
"this_folder_disabled": "پوشه‌ای را در پرونده‌ها باز کنید تا جستجو به آن محدود شود",
"scope": "محدوده",
"date_label": "تاریخ",
"sort_by": "مرتب‌سازی بر اساس",
"clear_filters": "پاک کردن فیلترها",
"searching_for": "در حال جستجوی «{{q}}»…",
"no_results": "نتیجه‌ای برای این جستجو یافت نشد",
"prompt": "در نوار جستجوی بالا، عبارتی را وارد کنید.",
"size": {
"all": "هر اندازه",
"small": "< 1 مگابایت",
"medium": "1–100 مگابایت",
"large": "> 100 مگابایت"
},
"date": {
"all": "هر زمان",
"day": "24 ساعت گذشته",
"week": "هفته گذشته",
"month": "ماه گذشته",
"year": "سال گذشته"
}
},
"sizeBucket": {
"folders": "پوشه‌ها"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "Taille",
"title": "Rechercher",
"type": {
"audio": "Audio"
"audio": "Audio",
"all": "Tous les types",
"image": "Images",
"video": "Vidéos",
"document": "Documents",
"archive": "Archives"
},
"type_label": "Type"
"type_label": "Type",
"sort": {
"relevance": "Pertinence"
},
"results_for": "Résultats pour « {{q}} »",
"results_summary": "Résultats pour « {{q}} » · {{n}} résultats en {{ms}} ms",
"results_summary_no_total": "Résultats pour « {{q}} » · {{ms}} ms",
"everywhere": "Partout",
"this_folder": "Ce dossier",
"this_folder_disabled": "Ouvrez un dossier dans Fichiers pour y limiter la recherche",
"scope": "Portée",
"date_label": "Date",
"sort_by": "Trier par",
"clear_filters": "Effacer les filtres",
"searching_for": "Recherche de « {{q}} »…",
"no_results": "Aucun résultat pour cette recherche",
"prompt": "Saisissez une requête dans la barre de recherche ci-dessus.",
"size": {
"all": "Toute taille",
"small": "< 1 Mo",
"medium": "1–100 Mo",
"large": "> 100 Mo"
},
"date": {
"all": "N'importe quand",
"day": "Dernières 24 heures",
"week": "Semaine dernière",
"month": "Mois dernier",
"year": "Année dernière"
}
},
"sizeBucket": {
"folders": "Dossiers"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "आकार",
"title": "खोजें",
"type": {
"audio": "ऑडियो"
"audio": "ऑडियो",
"all": "सभी प्रकार",
"image": "छवियाँ",
"video": "वीडियो",
"document": "दस्तावेज़",
"archive": "संग्रह"
},
"type_label": "प्रकार"
"type_label": "प्रकार",
"sort": {
"relevance": "प्रासंगिकता"
},
"results_for": "\"{{q}}\" के लिए परिणाम",
"results_summary": "\"{{q}}\" के लिए परिणाम · {{n}} परिणाम {{ms}} ms में",
"results_summary_no_total": "\"{{q}}\" के लिए परिणाम · {{ms}} ms",
"everywhere": "कहीं भी",
"this_folder": "यह फ़ोल्डर",
"this_folder_disabled": "खोज को इसमें सीमित करने के लिए फ़ाइलें में एक फ़ोल्डर खोलें",
"scope": "दायरा",
"date_label": "दिनांक",
"sort_by": "क्रमबद्ध करें",
"clear_filters": "फ़िल्टर साफ़ करें",
"searching_for": "\"{{q}}\" खोजा जा रहा है…",
"no_results": "इस खोज के लिए कोई परिणाम नहीं मिला",
"prompt": "ऊपर सर्च बार में एक क्वेरी टाइप करें।",
"size": {
"all": "कोई भी आकार",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "कोई भी समय",
"day": "पिछले 24 घंटे",
"week": "पिछला सप्ताह",
"month": "पिछला महीना",
"year": "पिछला वर्ष"
}
},
"sizeBucket": {
"folders": "फ़ोल्डर"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "Dimensione",
"title": "Cerca",
"type": {
"audio": "Audio"
"audio": "Audio",
"all": "Tutti i tipi",
"image": "Immagini",
"video": "Video",
"document": "Documenti",
"archive": "Archivi"
},
"type_label": "Tipo"
"type_label": "Tipo",
"sort": {
"relevance": "Rilevanza"
},
"results_for": "Risultati per \"{{q}}\"",
"results_summary": "Risultati per \"{{q}}\" · {{n}} risultati in {{ms}} ms",
"results_summary_no_total": "Risultati per \"{{q}}\" · {{ms}} ms",
"everywhere": "Ovunque",
"this_folder": "Questa cartella",
"this_folder_disabled": "Apri una cartella in File per limitare la ricerca ad essa",
"scope": "Ambito",
"date_label": "Data",
"sort_by": "Ordina per",
"clear_filters": "Cancella filtri",
"searching_for": "Ricerca di \"{{q}}\"…",
"no_results": "Nessun risultato per questa ricerca",
"prompt": "Digita una query nella barra di ricerca in alto.",
"size": {
"all": "Qualsiasi dimensione",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "In qualsiasi momento",
"day": "Ultime 24 ore",
"week": "Ultima settimana",
"month": "Ultimo mese",
"year": "Ultimo anno"
}
},
"sizeBucket": {
"folders": "Cartelle"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "サイズ",
"title": "検索",
"type": {
"audio": "音声"
"audio": "音声",
"all": "すべての種類",
"image": "画像",
"video": "動画",
"document": "文書",
"archive": "アーカイブ"
},
"type_label": "種類"
"type_label": "種類",
"sort": {
"relevance": "関連度"
},
"results_for": "「{{q}}」の検索結果",
"results_summary": "「{{q}}」の検索結果 · {{n}}件 · {{ms}} ms",
"results_summary_no_total": "「{{q}}」の検索結果 · {{ms}} ms",
"everywhere": "どこでも",
"this_folder": "このフォルダー",
"this_folder_disabled": "検索を限定するには、ファイル内でフォルダーを開いてください",
"scope": "範囲",
"date_label": "日付",
"sort_by": "並べ替え",
"clear_filters": "フィルターをクリア",
"searching_for": "「{{q}}」を検索中…",
"no_results": "この検索の結果が見つかりませんでした",
"prompt": "上の検索バーにクエリを入力してください。",
"size": {
"all": "任意のサイズ",
"small": "1 MB 未満",
"medium": "1–100 MB",
"large": "100 MB 超"
},
"date": {
"all": "任意の期間",
"day": "過去24時間",
"week": "過去1週間",
"month": "過去1ヶ月",
"year": "過去1年"
}
},
"sizeBucket": {
"folders": "フォルダ"
+4 -1
View File
@@ -1556,7 +1556,10 @@
"smallest": "작은 순"
},
"sort_by": "정렬 기준",
"this_folder": "이 폴더"
"this_folder": "이 폴더",
"results_summary": "\"{{q}}\"에 대한 검색 결과 · {{n}}개 결과, {{ms}} ms",
"results_summary_no_total": "\"{{q}}\"에 대한 검색 결과 · {{ms}} ms",
"this_folder_disabled": "검색을 제한하려면 파일에서 폴더를 여세요"
},
"sizeBucket": {
"folders": "폴더",
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "Grootte",
"title": "Zoeken",
"type": {
"audio": "Audio"
"audio": "Audio",
"all": "Alle typen",
"image": "Afbeeldingen",
"video": "Video's",
"document": "Documenten",
"archive": "Archieven"
},
"type_label": "Type"
"type_label": "Type",
"sort": {
"relevance": "Relevantie"
},
"results_for": "Resultaten voor \"{{q}}\"",
"results_summary": "Resultaten voor \"{{q}}\" · {{n}} resultaten in {{ms}} ms",
"results_summary_no_total": "Resultaten voor \"{{q}}\" · {{ms}} ms",
"everywhere": "Overal",
"this_folder": "Deze map",
"this_folder_disabled": "Open een map in Bestanden om de zoekopdracht ertoe te beperken",
"scope": "Bereik",
"date_label": "Datum",
"sort_by": "Sorteren op",
"clear_filters": "Filters wissen",
"searching_for": "Zoeken naar \"{{q}}\"…",
"no_results": "Geen resultaten gevonden voor deze zoekopdracht",
"prompt": "Typ een zoekopdracht in de zoekbalk hierboven.",
"size": {
"all": "Elke grootte",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "Elk moment",
"day": "Afgelopen 24 uur",
"week": "Afgelopen week",
"month": "Afgelopen maand",
"year": "Afgelopen jaar"
}
},
"sizeBucket": {
"folders": "Mappen"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "Rozmiar",
"title": "Szukaj",
"type": {
"audio": "Audio"
"audio": "Audio",
"all": "Wszystkie typy",
"image": "Obrazy",
"video": "Filmy",
"document": "Dokumenty",
"archive": "Archiwa"
},
"type_label": "Typ"
"type_label": "Typ",
"sort": {
"relevance": "Trafność"
},
"results_for": "Wyniki dla \"{{q}}\"",
"results_summary": "Wyniki dla \"{{q}}\" · {{n}} wyników w {{ms}} ms",
"results_summary_no_total": "Wyniki dla \"{{q}}\" · {{ms}} ms",
"everywhere": "Wszędzie",
"this_folder": "Ten folder",
"this_folder_disabled": "Otwórz folder w Plikach, aby ograniczyć wyszukiwanie do niego",
"scope": "Zakres",
"date_label": "Data",
"sort_by": "Sortuj według",
"clear_filters": "Wyczyść filtry",
"searching_for": "Wyszukiwanie „{{q}}\"…",
"no_results": "Nie znaleziono wyników dla tego wyszukiwania",
"prompt": "Wpisz zapytanie na pasku wyszukiwania powyżej.",
"size": {
"all": "Dowolny rozmiar",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "Kiedykolwiek",
"day": "Ostatnie 24 godziny",
"week": "Ostatni tydzień",
"month": "Ostatni miesiąc",
"year": "Ostatni rok"
}
},
"sizeBucket": {
"folders": "Foldery"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "Tamanho",
"title": "Pesquisar",
"type": {
"audio": "Áudio"
"audio": "Áudio",
"all": "Todos os tipos",
"image": "Imagens",
"video": "Vídeos",
"document": "Documentos",
"archive": "Arquivos"
},
"type_label": "Tipo"
"type_label": "Tipo",
"sort": {
"relevance": "Relevância"
},
"results_for": "Resultados para \"{{q}}\"",
"results_summary": "Resultados para \"{{q}}\" · {{n}} resultados em {{ms}} ms",
"results_summary_no_total": "Resultados para \"{{q}}\" · {{ms}} ms",
"everywhere": "Em qualquer lugar",
"this_folder": "Esta pasta",
"this_folder_disabled": "Abra uma pasta em Ficheiros para limitar a pesquisa a ela",
"scope": "Âmbito",
"date_label": "Data",
"sort_by": "Ordenar por",
"clear_filters": "Limpar filtros",
"searching_for": "Pesquisando \"{{q}}\"…",
"no_results": "Nenhum resultado encontrado para esta pesquisa",
"prompt": "Digite uma consulta na barra de pesquisa acima.",
"size": {
"all": "Qualquer tamanho",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "A qualquer momento",
"day": "Últimas 24 horas",
"week": "Última semana",
"month": "Último mês",
"year": "Último ano"
}
},
"sizeBucket": {
"folders": "Pastas"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "Размер",
"title": "Найти",
"type": {
"audio": "Аудио"
"audio": "Аудио",
"all": "Все типы",
"image": "Изображения",
"video": "Видео",
"document": "Документы",
"archive": "Архивы"
},
"type_label": "Тип"
"type_label": "Тип",
"sort": {
"relevance": "Релевантность"
},
"results_for": "Результаты для «{{q}}»",
"results_summary": "Результаты для «{{q}}» · {{n}} результатов за {{ms}} мс",
"results_summary_no_total": "Результаты для «{{q}}» · {{ms}} мс",
"everywhere": "Везде",
"this_folder": "Эта папка",
"this_folder_disabled": "Откройте папку в «Файлах», чтобы ограничить поиск ею",
"scope": "Область",
"date_label": "Дата",
"sort_by": "Сортировать по",
"clear_filters": "Очистить фильтры",
"searching_for": "Поиск «{{q}}»…",
"no_results": "По этому запросу ничего не найдено",
"prompt": "Введите запрос в строке поиска выше.",
"size": {
"all": "Любой размер",
"small": "< 1 МБ",
"medium": "1–100 МБ",
"large": "> 100 МБ"
},
"date": {
"all": "Любое время",
"day": "Последние 24 часа",
"week": "Последняя неделя",
"month": "Последний месяц",
"year": "Последний год"
}
},
"sizeBucket": {
"folders": "Папки"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "大小",
"title": "搜尋",
"type": {
"audio": "音訊"
"audio": "音訊",
"all": "所有類型",
"image": "圖片",
"video": "影片",
"document": "文件",
"archive": "壓縮檔"
},
"type_label": "型別"
"type_label": "型別",
"sort": {
"relevance": "相關性"
},
"results_for": "\"{{q}}\" 的搜尋結果",
"results_summary": "\"{{q}}\" 的搜尋結果 · {{n}} 個結果 · {{ms}} 毫秒",
"results_summary_no_total": "\"{{q}}\" 的搜尋結果 · {{ms}} 毫秒",
"everywhere": "任何位置",
"this_folder": "此資料夾",
"this_folder_disabled": "開啟檔案中的資料夾以將搜尋限制在其中",
"scope": "範圍",
"date_label": "日期",
"sort_by": "排序方式",
"clear_filters": "清除篩選",
"searching_for": "正在搜尋「{{q}}」…",
"no_results": "此搜尋未找到結果",
"prompt": "在上方搜尋列中輸入查詢內容。",
"size": {
"all": "任何大小",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "任何時間",
"day": "過去 24 小時",
"week": "過去一週",
"month": "過去一個月",
"year": "過去一年"
}
},
"sizeBucket": {
"folders": "資料夾"
+36 -2
View File
@@ -1203,9 +1203,43 @@
"size_label": "大小",
"title": "搜索",
"type": {
"audio": "音频"
"audio": "音频",
"all": "所有类型",
"image": "图片",
"video": "视频",
"document": "文档",
"archive": "压缩包"
},
"type_label": "类型"
"type_label": "类型",
"sort": {
"relevance": "相关度"
},
"results_for": "\"{{q}}\" 的搜索结果",
"results_summary": "\"{{q}}\" 的搜索结果 · {{n}} 条结果 · {{ms}} 毫秒",
"results_summary_no_total": "\"{{q}}\" 的搜索结果 · {{ms}} 毫秒",
"everywhere": "任何位置",
"this_folder": "此文件夹",
"this_folder_disabled": "打开文件中的文件夹以将搜索限制在其中",
"scope": "范围",
"date_label": "日期",
"sort_by": "排序方式",
"clear_filters": "清除筛选",
"searching_for": "正在搜索\"{{q}}\"…",
"no_results": "此搜索未找到结果",
"prompt": "在上方搜索栏中输入查询内容。",
"size": {
"all": "任意大小",
"small": "< 1 MB",
"medium": "1–100 MB",
"large": "> 100 MB"
},
"date": {
"all": "任何时间",
"day": "过去24小时",
"week": "过去一周",
"month": "过去一个月",
"year": "过去一年"
}
},
"sizeBucket": {
"folders": "文件夹"