feat(i18n): make admin and catalog components translatable
This commit is contained in:
1 parent
d6111387e4
commit
03774bb411
9 files changed
+142
-87
No files matched your search
@@ -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">
|
||||
|
||||
Reference in new issue
Block a user