Compare commits

..
1 Commits
Author SHA1 Message Date
Crowdin Bot 2dcd067c46 New Crowdin translations by GitHub Action
Tests / vitest (4) (push) Has been cancelled
Lint / Linting Checks (push) Has been cancelled
Tests / vitest (1) (push) Has been cancelled
Tests / vitest (2) (push) Has been cancelled
Tests / vitest (3) (push) Has been cancelled
2026-08-24 00:22:51 +00:00
45 changed files with 48 additions and 161 deletions
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Wag asseblief" "wait": "Wag asseblief"
}, },
"search": { "search": {
"placeholder": "Soek…", "placeholder": "Soek…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "SVE", "cpu": "SVE",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "الرجاء الإنتظار" "wait": "الرجاء الإنتظار"
}, },
"search": { "search": {
"placeholder": "بحث …", "placeholder": "بحث …"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "المعالج", "cpu": "المعالج",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Моля изчакайте" "wait": "Моля изчакайте"
}, },
"search": { "search": {
"placeholder": "Търсене…", "placeholder": "Търсене…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "Процесор", "cpu": "Процесор",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Si us plau, espereu" "wait": "Si us plau, espereu"
}, },
"search": { "search": {
"placeholder": "Cerca…", "placeholder": "Cerca…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Počkejte prosím" "wait": "Počkejte prosím"
}, },
"search": { "search": {
"placeholder": "Hledat…", "placeholder": "Hledat…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "Využití procesoru", "cpu": "Využití procesoru",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Vent venligst" "wait": "Vent venligst"
}, },
"search": { "search": {
"placeholder": "Søg…", "placeholder": "Søg…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Bitte warten" "wait": "Bitte warten"
}, },
"search": { "search": {
"placeholder": "Suche…", "placeholder": "Suche…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Παρακαλώ περιμένετε" "wait": "Παρακαλώ περιμένετε"
}, },
"search": { "search": {
"placeholder": "Αναζήτηση…", "placeholder": "Αναζήτηση…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "Επεξεργαστής", "cpu": "Επεξεργαστής",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Please wait" "wait": "Please wait"
}, },
"search": { "search": {
"placeholder": "Search…", "placeholder": "Search…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Bonvolu atendi" "wait": "Bonvolu atendi"
}, },
"search": { "search": {
"placeholder": "Serĉi…", "placeholder": "Serĉi…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "Ĉefprocesoro", "cpu": "Ĉefprocesoro",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Espera, por favor" "wait": "Espera, por favor"
}, },
"search": { "search": {
"placeholder": "Buscar…", "placeholder": "Buscar…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Itxaron mesedez" "wait": "Itxaron mesedez"
}, },
"search": { "search": {
"placeholder": "Bilatu…", "placeholder": "Bilatu…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Odota, ole hyvä" "wait": "Odota, ole hyvä"
}, },
"search": { "search": {
"placeholder": "Hae…", "placeholder": "Hae…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Veuillez patienter" "wait": "Veuillez patienter"
}, },
"search": { "search": {
"placeholder": "Recherche…", "placeholder": "Recherche…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "המתן בבקשה" "wait": "המתן בבקשה"
}, },
"search": { "search": {
"placeholder": "חיפוש…", "placeholder": "חיפוש…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "מעבד", "cpu": "מעבד",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Please wait" "wait": "Please wait"
}, },
"search": { "search": {
"placeholder": "Search…", "placeholder": "Search…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Pričekaj" "wait": "Pričekaj"
}, },
"search": { "search": {
"placeholder": "Traži …", "placeholder": "Traži …"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Kérjük várjon" "wait": "Kérjük várjon"
}, },
"search": { "search": {
"placeholder": "Keresés…", "placeholder": "Keresés…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "Processzor", "cpu": "Processzor",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Harap tunggu" "wait": "Harap tunggu"
}, },
"search": { "search": {
"placeholder": "Telusuri…", "placeholder": "Telusuri…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Attendi per favore" "wait": "Attendi per favore"
}, },
"search": { "search": {
"placeholder": "Cerca…", "placeholder": "Cerca…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "お待ちください" "wait": "お待ちください"
}, },
"search": { "search": {
"placeholder": "検索…", "placeholder": "検索…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "잠시만 기다리세요" "wait": "잠시만 기다리세요"
}, },
"search": { "search": {
"placeholder": "검색…", "placeholder": "검색…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Lūdzu, uzgaidiet" "wait": "Lūdzu, uzgaidiet"
}, },
"search": { "search": {
"placeholder": "Meklēt…", "placeholder": "Meklēt…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Sila tunggu" "wait": "Sila tunggu"
}, },
"search": { "search": {
"placeholder": "Carian…", "placeholder": "Carian…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Even geduld" "wait": "Even geduld"
}, },
"search": { "search": {
"placeholder": "Zoeken…", "placeholder": "Zoeken…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Vennligst vent" "wait": "Vennligst vent"
}, },
"search": { "search": {
"placeholder": "Søk…", "placeholder": "Søk…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+2 -4
View File
@@ -39,9 +39,7 @@
"wait": "Proszę czekać" "wait": "Proszę czekać"
}, },
"search": { "search": {
"placeholder": "Szukaj…", "placeholder": "Szukaj…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "Procesor", "cpu": "Procesor",
@@ -474,7 +472,7 @@
"users": "Użytkownicy", "users": "Użytkownicy",
"loginsLast24H": "Logowania (24h)", "loginsLast24H": "Logowania (24h)",
"failedLoginsLast24H": "Nieudane logowania (24h)", "failedLoginsLast24H": "Nieudane logowania (24h)",
"authorizationsLast24H": "Uwierzytelnienia (24h)" "authorizationsLast24H": "Auths (24h)"
}, },
"proxmox": { "proxmox": {
"mem": "RAM", "mem": "RAM",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Por favor aguarde" "wait": "Por favor aguarde"
}, },
"search": { "search": {
"placeholder": "Pesquisar…", "placeholder": "Pesquisar…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Por favor, aguarde" "wait": "Por favor, aguarde"
}, },
"search": { "search": {
"placeholder": "Pesquisar…", "placeholder": "Pesquisar…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Va rugăm așteptați" "wait": "Va rugăm așteptați"
}, },
"search": { "search": {
"placeholder": "Caută…", "placeholder": "Caută…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "Procesor", "cpu": "Procesor",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Пожалуйста, подождите" "wait": "Пожалуйста, подождите"
}, },
"search": { "search": {
"placeholder": "Поиск…", "placeholder": "Поиск…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "ЦП", "cpu": "ЦП",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Počkajte prosím" "wait": "Počkajte prosím"
}, },
"search": { "search": {
"placeholder": "Hľadať…", "placeholder": "Hľadať…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Prosimo počakajte" "wait": "Prosimo počakajte"
}, },
"search": { "search": {
"placeholder": "Iskanje…", "placeholder": "Iskanje…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Молим сачекајте" "wait": "Молим сачекајте"
}, },
"search": { "search": {
"placeholder": "Претражи…", "placeholder": "Претражи…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "Процесор", "cpu": "Процесор",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Vänligen vänta" "wait": "Vänligen vänta"
}, },
"search": { "search": {
"placeholder": "Sök…", "placeholder": "Sök…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "దయచేసి వేచి ఉండండి" "wait": "దయచేసి వేచి ఉండండి"
}, },
"search": { "search": {
"placeholder": "వెతకండి…", "placeholder": "వెతకండి…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "సీపియూ", "cpu": "సీపియూ",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "โปรดรอ" "wait": "โปรดรอ"
}, },
"search": { "search": {
"placeholder": "ค้นหา…", "placeholder": "ค้นหา…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "ซีพียู", "cpu": "ซีพียู",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Lütfen bekleyin" "wait": "Lütfen bekleyin"
}, },
"search": { "search": {
"placeholder": "Ara…", "placeholder": "Ara…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "İşlemci", "cpu": "İşlemci",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Будь ласка, зачекайте" "wait": "Будь ласка, зачекайте"
}, },
"search": { "search": {
"placeholder": "Пошук…", "placeholder": "Пошук…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "ЦП", "cpu": "ЦП",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "Vui lòng chờ" "wait": "Vui lòng chờ"
}, },
"search": { "search": {
"placeholder": "Tìm kiếm…", "placeholder": "Tìm kiếm…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "請稍後" "wait": "請稍後"
}, },
"search": { "search": {
"placeholder": "搜索緊…", "placeholder": "搜索緊…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "请稍候" "wait": "请稍候"
}, },
"search": { "search": {
"placeholder": "搜索…", "placeholder": "搜索…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+1 -3
View File
@@ -39,9 +39,7 @@
"wait": "請稍候" "wait": "請稍候"
}, },
"search": { "search": {
"placeholder": "搜尋…", "placeholder": "搜尋…"
"provider": "Search engine: {{name}}",
"select_provider": "Select search engine"
}, },
"resources": { "resources": {
"cpu": "CPU", "cpu": "CPU",
+4 -9
View File
@@ -182,7 +182,6 @@ export default function Search({ options }) {
focus:border-theme-500 dark:focus:border-white/50 focus:border-theme-500 dark:focus:border-white/50
border border-theme-300 dark:border-theme-200/50" border border-theme-300 dark:border-theme-200/50"
placeholder={t("search.placeholder")} placeholder={t("search.placeholder")}
aria-label={t("search.placeholder")}
onChange={(event) => { onChange={(event) => {
setQuery(event.target.value); setQuery(event.target.value);
}} }}
@@ -209,8 +208,8 @@ export default function Search({ options }) {
bg-theme-600/40 dark:bg-white/10 bg-theme-600/40 dark:bg-white/10
focus:ring-theme-500 dark:focus:ring-white/50" focus:ring-theme-500 dark:focus:ring-white/50"
> >
<selectedProvider.icon className="text-white w-3 h-3" aria-hidden="true" /> <selectedProvider.icon className="text-white w-3 h-3" />
<span className="sr-only">{t("search.provider", { name: selectedProvider.name })}</span> <span className="sr-only">{t("search.search")}</span>
</ListboxButton> </ListboxButton>
</div> </div>
<Transition <Transition
@@ -223,7 +222,6 @@ export default function Search({ options }) {
leaveTo="transform opacity-0 scale-95" leaveTo="transform opacity-0 scale-95"
> >
<ListboxOptions <ListboxOptions
aria-label={t("search.select_provider")}
className="absolute right-0 z-10 mt-1 origin-top-right rounded-md className="absolute right-0 z-10 mt-1 origin-top-right rounded-md
bg-theme-100 dark:bg-theme-600 shadow-lg bg-theme-100 dark:bg-theme-600 shadow-lg
ring-1 ring-black ring-opacity-5 focus:outline-hidden" ring-1 ring-black ring-opacity-5 focus:outline-hidden"
@@ -240,8 +238,7 @@ export default function Search({ options }) {
active ? "bg-theme-600/10 dark:bg-white/10 dark:text-gray-900" : "dark:text-gray-100", active ? "bg-theme-600/10 dark:bg-white/10 dark:text-gray-900" : "dark:text-gray-100",
)} )}
> >
<p.icon className="h-4 w-4 mx-4 my-2" aria-hidden="true" /> <p.icon className="h-4 w-4 mx-4 my-2" />
<span className="sr-only">{p.name}</span>
</li> </li>
)} )}
</ListboxOption> </ListboxOption>
@@ -255,9 +252,7 @@ export default function Search({ options }) {
{searchSuggestions[1]?.length > 0 && ( {searchSuggestions[1]?.length > 0 && (
<ComboboxOptions className="mt-1 rounded-md bg-theme-50 dark:bg-theme-800 border border-theme-300 dark:border-theme-200/30 cursor-pointer shadow-lg"> <ComboboxOptions className="mt-1 rounded-md bg-theme-50 dark:bg-theme-800 border border-theme-300 dark:border-theme-200/30 cursor-pointer shadow-lg">
<div className="p-1 bg-white/50 dark:bg-white/10 text-theme-900/90 dark:text-white/90 text-xs"> <div className="p-1 bg-white/50 dark:bg-white/10 text-theme-900/90 dark:text-white/90 text-xs">
<ComboboxOption key={query} value={query}> <ComboboxOption key={query} value={query} />
<span className="sr-only">{query}</span>
</ComboboxOption>
{searchSuggestions[1].map((suggestion) => ( {searchSuggestions[1].map((suggestion) => (
<ComboboxOption key={suggestion} value={suggestion} className="flex w-full"> <ComboboxOption key={suggestion} value={suggestion} className="flex w-full">
{({ active }) => ( {({ active }) => (
@@ -178,28 +178,6 @@ describe("components/widgets/search", () => {
openSpy.mockRestore(); openSpy.mockRestore();
}); });
it("gives every provider option an accessible name", () => {
renderWithProviders(
<Search options={{ provider: ["google", "duckduckgo", "brave"], showSearchSuggestions: false }} />,
{ settings: {} },
);
expect(screen.getAllByRole("option").map((option) => option.textContent)).toEqual([
"Google",
"DuckDuckGo",
"Brave",
]);
});
it("labels the search input and the provider button", () => {
renderWithProviders(<Search options={{ provider: ["google", "duckduckgo"], showSearchSuggestions: false }} />, {
settings: {},
});
expect(screen.getByRole("textbox")).toHaveAccessibleName("search.placeholder");
expect(screen.getByRole("button")).toHaveAccessibleName(/search\.provider/);
});
it("fetches search suggestions and triggers a search when a suggestion is selected", async () => { it("fetches search suggestions and triggers a search when a suggestion is selected", async () => {
const openSpy = vi.spyOn(window, "open").mockImplementation(() => null); const openSpy = vi.spyOn(window, "open").mockImplementation(() => null);