feat(i18n): make admin and catalog components translatable
CI / check (push) Failing after 30s
CI / preflight (push) Skipped
CI / deploy (push) Skipped

This commit is contained in:
openhands committed 2026-09-18 14:56:36 +02:00
1 parent d6111387e4
commit 03774bb411
9 files changed
+142 -87

No files matched your search

+16 -12
View File
@@ -1,6 +1,7 @@
"use client";
import { Pencil, Plus, Save, Search, Trash2 } from "lucide-react";
import { useTranslations } from "next-intl";
import { useCallback, useEffect, useState } from "react";
import {
addBlacklistWord as addBlacklistWordAction,
@@ -35,6 +36,7 @@ import {
type UserPrefix,
} from "./prefix-model";
export function PrefixesClient({ canEdit }: { canEdit: boolean }) {
const t = useTranslations("pages.admin.prefixes.prefixesClient");
const { run, isPending } = useServerAction();
const { confirm, dialog: confirmDialog } = useConfirmDialog();
const [prefixes, setPrefixes] = useState<UserPrefix[]>([]);
@@ -93,14 +95,14 @@ export function PrefixesClient({ canEdit }: { canEdit: boolean }) {
const handleDeletePrefix = async (id: number) => {
const ok = await confirm({
title: "Delete prefix",
description: "Are you sure you want to delete this prefix?",
confirmLabel: "Delete",
cancelLabel: "Cancel",
title: t("confirmDeleteTitle"),
description: t("confirmDeleteDesc"),
confirmLabel: t("confirmDelete"),
cancelLabel: t("cancel"),
});
if (!ok) return;
run(() => deletePrefixAction({ id }), {
successMessage: "Prefix deleted!",
successMessage: t("successPrefixDeleted"),
onSuccess: () => {
fetchPrefixes();
},
@@ -126,7 +128,9 @@ export function PrefixesClient({ canEdit }: { canEdit: boolean }) {
? updatePrefix({ id: editId, ...fields })
: createPrefix({ username: data.username, ...fields }),
{
successMessage: editId ? "Prefix updated!" : "Prefix created!",
successMessage: editId
? t("successPrefixUpdated")
: t("successPrefixCreated"),
onSuccess: () => {
void fetchPrefixes();
resolve(true);
@@ -150,7 +154,7 @@ export function PrefixesClient({ canEdit }: { canEdit: boolean }) {
const handleAddBlacklistWord = async () => {
if (!newWord.trim()) return;
run(() => addBlacklistWordAction({ word: newWord.trim() }), {
successMessage: "Word added to blacklist!",
successMessage: t("successWordAdded"),
onSuccess: () => {
setNewWord("");
fetchBlacklist();
@@ -160,7 +164,7 @@ export function PrefixesClient({ canEdit }: { canEdit: boolean }) {
const handleRemoveBlacklistWord = async (id: number) => {
run(() => removeBlacklistWordAction({ id }), {
successMessage: "Word removed from blacklist!",
successMessage: t("successWordRemoved"),
onSuccess: () => {
fetchBlacklist();
},
@@ -174,7 +178,7 @@ export function PrefixesClient({ canEdit }: { canEdit: boolean }) {
settings: settings as unknown as Record<string, string>,
}),
{
successMessage: "Settings saved!",
successMessage: t("successSettingsSaved"),
},
);
};
@@ -191,9 +195,9 @@ export function PrefixesClient({ canEdit }: { canEdit: boolean }) {
<Tabs defaultValue="prefixes">
<TabsList>
<TabsTrigger value="prefixes">User Prefixes</TabsTrigger>
<TabsTrigger value="blacklist">Blacklist</TabsTrigger>
<TabsTrigger value="settings">Settings</TabsTrigger>
<TabsTrigger value="prefixes">{t("tabUserPrefixes")}</TabsTrigger>
<TabsTrigger value="blacklist">{t("tabBlacklist")}</TabsTrigger>
<TabsTrigger value="settings">{t("tabSettings")}</TabsTrigger>
</TabsList>
<TabsContent value="prefixes" className="space-y-4">