Adjust button and add profile translations

This commit is contained in:
Owen 2025-06-11 10:00:38 -04:00
parent 31a41576d8
commit 8aa95db9bc
No known key found for this signature in database
GPG key ID: 8271FDFFD9E0CCBD
12 changed files with 61 additions and 21 deletions

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Spalten umschalten", "toggleColumns": "Spalten umschalten",
"refreshContainersList": "Container-Liste aktualisieren", "refreshContainersList": "Container-Liste aktualisieren",
"searching": "Suche...", "searching": "Suche...",
"noContainersFoundMatching": "Keine Container gefunden mit \"{filter}\"." "noContainersFoundMatching": "Keine Container gefunden mit \"{filter}\".",
"light": "hell",
"dark": "dunkel",
"system": "system",
"theme": "Design"
} }

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Toggle Columns", "toggleColumns": "Toggle Columns",
"refreshContainersList": "Refresh containers list", "refreshContainersList": "Refresh containers list",
"searching": "Searching...", "searching": "Searching...",
"noContainersFoundMatching": "No containers found matching \"{filter}\"." "noContainersFoundMatching": "No containers found matching \"{filter}\".",
"light": "light",
"dark": "dark",
"system": "system",
"theme": "Theme"
} }

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Cambiar Columnas", "toggleColumns": "Cambiar Columnas",
"refreshContainersList": "Actualizar lista de contenedores", "refreshContainersList": "Actualizar lista de contenedores",
"searching": "Buscando...", "searching": "Buscando...",
"noContainersFoundMatching": "No se han encontrado contenedores que coincidan con \"{filter}\"." "noContainersFoundMatching": "No se han encontrado contenedores que coincidan con \"{filter}\".",
"light": "claro",
"dark": "oscuro",
"system": "sistema",
"theme": "Tema"
} }

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Activer/désactiver les colonnes", "toggleColumns": "Activer/désactiver les colonnes",
"refreshContainersList": "Rafraîchir la liste des conteneurs", "refreshContainersList": "Rafraîchir la liste des conteneurs",
"searching": "Recherche en cours...", "searching": "Recherche en cours...",
"noContainersFoundMatching": "Aucun conteneur correspondant à \"{filter}\"." "noContainersFoundMatching": "Aucun conteneur correspondant à \"{filter}\".",
"light": "clair",
"dark": "sombre",
"system": "système",
"theme": "Thème"
} }

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Attiva/Disattiva Colonne", "toggleColumns": "Attiva/Disattiva Colonne",
"refreshContainersList": "Aggiorna elenco contenitori", "refreshContainersList": "Aggiorna elenco contenitori",
"searching": "Ricerca...", "searching": "Ricerca...",
"noContainersFoundMatching": "Nessun contenitore trovato corrispondente \"{filter}\"." "noContainersFoundMatching": "Nessun contenitore trovato corrispondente \"{filter}\".",
"light": "chiaro",
"dark": "scuro",
"system": "sistema",
"theme": "Tema"
} }

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Kolommen omschakelen", "toggleColumns": "Kolommen omschakelen",
"refreshContainersList": "Vernieuw containers lijst", "refreshContainersList": "Vernieuw containers lijst",
"searching": "Zoeken...", "searching": "Zoeken...",
"noContainersFoundMatching": "Geen containers gevonden die overeenkomen met \"{filter}\"." "noContainersFoundMatching": "Geen containers gevonden die overeenkomen met \"{filter}\".",
"light": "licht",
"dark": "donker",
"system": "systeem",
"theme": "Thema"
} }

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Przełącz kolumny", "toggleColumns": "Przełącz kolumny",
"refreshContainersList": "Odśwież listę kontenerów", "refreshContainersList": "Odśwież listę kontenerów",
"searching": "Wyszukiwanie...", "searching": "Wyszukiwanie...",
"noContainersFoundMatching": "Nie znaleziono kontenerów pasujących do \"{filter}\"." "noContainersFoundMatching": "Nie znaleziono kontenerów pasujących do \"{filter}\".",
"light": "jasny",
"dark": "ciemny",
"system": "system",
"theme": "Motyw"
} }

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Alternar Colunas", "toggleColumns": "Alternar Colunas",
"refreshContainersList": "Atualizar lista de contêineres", "refreshContainersList": "Atualizar lista de contêineres",
"searching": "Buscando...", "searching": "Buscando...",
"noContainersFoundMatching": "Nenhum recipiente encontrado \"{filter}\"." "noContainersFoundMatching": "Nenhum recipiente encontrado \"{filter}\".",
"light": "claro",
"dark": "escuro",
"system": "sistema",
"theme": "Tema"
} }

View file

@ -1124,5 +1124,9 @@
"toggleColumns": "Toggle Columns", "toggleColumns": "Toggle Columns",
"refreshContainersList": "Refresh containers list", "refreshContainersList": "Refresh containers list",
"searching": "Searching...", "searching": "Searching...",
"noContainersFoundMatching": "No containers found matching \"{filter}\"." "noContainersFoundMatching": "No containers found matching \"{filter}\".",
"light": "açık",
"dark": "koyu",
"system": "sistem",
"theme": "Tema"
} }

View file

@ -1100,21 +1100,21 @@
"containerImage": "图片", "containerImage": "图片",
"containerState": "状态", "containerState": "状态",
"containerNetworks": "网络", "containerNetworks": "网络",
"containerHostnameIp": "Hostname/IP", "containerHostnameIp": "主机名/IP",
"containerLabels": "标签", "containerLabels": "标签",
"containerLabelsCount": "{count} label{s,plural,one{} other{s}}", "containerLabelsCount": "{count} 个标签",
"containerLabelsTitle": "容器标签", "containerLabelsTitle": "容器标签",
"containerLabelEmpty": "<empty>", "containerLabelEmpty": "<empty>",
"containerPorts": "端口", "containerPorts": "端口",
"containerPortsMore": "+{count} more", "containerPortsMore": "+{count} 更多",
"containerActions": "行动", "containerActions": "行动",
"select": "选择", "select": "选择",
"noContainersMatchingFilters": "没有找到匹配当前过滤器的容器。", "noContainersMatchingFilters": "没有找到匹配当前过滤器的容器。",
"showContainersWithoutPorts": "显示没有端口的容器", "showContainersWithoutPorts": "显示没有端口的容器",
"showStoppedContainers": "显示已停止的容器", "showStoppedContainers": "显示已停止的容器",
"noContainersFound": "未找到容器。请确保Docker容器正在运行。", "noContainersFound": "未找到容器。请确保Docker容器正在运行。",
"searchContainersPlaceholder": "Search across {count} containers...", "searchContainersPlaceholder": "在 {count} 个容器中搜索...",
"searchResultsCount": "{count} result{s,plural,one{} other{s}}", "searchResultsCount": "{count} 个结果",
"filters": "筛选器", "filters": "筛选器",
"filterOptions": "过滤器选项", "filterOptions": "过滤器选项",
"filterPorts": "端口", "filterPorts": "端口",
@ -1124,5 +1124,9 @@
"toggleColumns": "切换列", "toggleColumns": "切换列",
"refreshContainersList": "刷新容器列表", "refreshContainersList": "刷新容器列表",
"searching": "搜索中...", "searching": "搜索中...",
"noContainersFoundMatching": "No containers found matching \"{filter}\"." "noContainersFoundMatching": "未找到与 \"{filter}\" 匹配的容器。",
"light": "浅色",
"dark": "深色",
"system": "系统",
"theme": "主题"
} }

View file

@ -41,13 +41,15 @@ export default function LocaleSwitcherSelect({
<Button <Button
variant="ghost" variant="ghost"
className={clsx( className={clsx(
'rounded-sm p-2 transition-colors flex items-center gap-2', 'w-full rounded-sm h-8 gap-2 justify-start font-normal',
isPending && 'pointer-events-none' isPending && 'pointer-events-none'
)} )}
aria-label={label} aria-label={label}
> >
<Languages className="h-4 w-4" /> <Languages className="h-4 w-4" />
<span >{selected?.label ?? label}</span> <span className="text-left flex-1">
{selected?.label ?? label}
</span>
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent align="end" className="min-w-[8rem]"> <DropdownMenuContent align="end" className="min-w-[8rem]">

View file

@ -133,7 +133,7 @@ export default function ProfileIcon() {
<DropdownMenuSeparator /> <DropdownMenuSeparator />
</> </>
)} )}
<DropdownMenuLabel>Theme</DropdownMenuLabel> <DropdownMenuLabel>{t("theme")}</DropdownMenuLabel>
{(["light", "dark", "system"] as const).map( {(["light", "dark", "system"] as const).map(
(themeOption) => ( (themeOption) => (
<DropdownMenuItem <DropdownMenuItem
@ -152,7 +152,7 @@ export default function ProfileIcon() {
<Laptop className="mr-2 h-4 w-4" /> <Laptop className="mr-2 h-4 w-4" />
)} )}
<span className="capitalize"> <span className="capitalize">
{themeOption} {t(themeOption)}
</span> </span>
{userTheme === themeOption && ( {userTheme === themeOption && (
<span className="absolute right-2 flex h-3.5 w-3.5 items-center justify-center"> <span className="absolute right-2 flex h-3.5 w-3.5 items-center justify-center">
@ -163,9 +163,7 @@ export default function ProfileIcon() {
) )
)} )}
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<div>
<LocaleSwitcher /> <LocaleSwitcher />
</div>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem onClick={() => logout()}> <DropdownMenuItem onClick={() => logout()}>
{/* <LogOut className="mr-2 h-4 w-4" /> */} {/* <LogOut className="mr-2 h-4 w-4" /> */}