feat(admin): items_base browser and AdminPageShell on core pages
CI / check (push) Successful in 21s
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 59s
CI / deploy (push) Failing after 9s

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-30 20:41:31 +02:00
1 parent 7138ae4445
commit 98613af875
42 files changed
+2196 -698

No files matched your search

File diff suppressed because it is too large. Load diff
+12 -9
View File
@@ -1,6 +1,8 @@
import { Newspaper } from "lucide-react";
import Link from "next/link"; import Link from "next/link";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { ArticleCard } from "@/components/admin/article-card"; import { ArticleCard } from "@/components/admin/article-card";
import { StatusCard } from "@/components/admin/dashboard"; import { StatusCard } from "@/components/admin/dashboard";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
@@ -56,17 +58,18 @@ export default async function AdminArticles({
: "—"; : "—";
return ( return (
<main> <AdminPageShell
<div className="flex justify-end mb-6"> icon={Newspaper}
title={t("title")}
subtitle={t("subtitle")}
actions={
<Button variant="default" asChild> <Button variant="default" asChild>
<Link href="/admin/articles/new">{t("newArticle")}</Link> <Link href="/admin/articles/new">{t("newArticle")}</Link>
</Button> </Button>
</div> }
>
{error ? ( {error ? (
<p className="text-xs text-[var(--admin-error)] dark:text-[var(--admin-error)] mb-4"> <p className="text-xs text-[var(--admin-error)] mb-4">Error: {error}</p>
Error: {error}
</p>
) : null} ) : null}
<div className="grid grid-cols-[repeat(auto-fit,minmax(180px,1fr))] gap-3.5 mb-6"> <div className="grid grid-cols-[repeat(auto-fit,minmax(180px,1fr))] gap-3.5 mb-6">
@@ -83,7 +86,7 @@ export default async function AdminArticles({
/> />
</div> </div>
<section className="mt-6"> <section className="mt-2">
<h2 className="admin-section-title">{t("recentArticles")}</h2> <h2 className="admin-section-title">{t("recentArticles")}</h2>
{articles.length === 0 ? ( {articles.length === 0 ? (
<div className="admin-empty">{t("noArticles")}</div> <div className="admin-empty">{t("noArticles")}</div>
@@ -102,6 +105,6 @@ export default async function AdminArticles({
</div> </div>
)} )}
</section> </section>
</main> </AdminPageShell>
); );
} }
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+66
View File
@@ -0,0 +1,66 @@
import { Package } from "lucide-react";
import { notFound, redirect } from "next/navigation";
import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
import { prisma } from "@/lib/prisma";
import { ItemsBaseEditForm } from "./items-base-edit-form";
export const dynamic = "force-dynamic";
export default async function ItemsBaseDetailPage({
params,
}: {
params: Promise<{ id: string }>;
}) {
const { session, permissions } = await getAdminContext();
if (!canAccess(permissions, PERMS.CATALOG_VIEW, session.user.rank)) {
redirect("/admin");
}
const t = await getTranslations("pages.admin.items");
const { id: rawId } = await params;
const id = Number(rawId);
if (!Number.isFinite(id) || id <= 0) notFound();
const item = await prisma.itemsBase.findUnique({ where: { id } });
if (!item) notFound();
const canEdit = canAccess(permissions, PERMS.CATALOG_EDIT, session.user.rank);
return (
<AdminPageShell
icon={Package}
title={t("editTitle", { name: item.publicName || item.itemName })}
subtitle={t("editSubtitle", { id: item.id })}
>
<ItemsBaseEditForm
canEdit={canEdit}
initial={{
id: item.id,
spriteId: item.spriteId,
publicName: item.publicName,
itemName: item.itemName,
type: item.type,
width: item.width,
length: item.length,
stackHeight: String(item.stackHeight),
allowStack: item.allowStack,
allowSit: item.allowSit,
allowLay: item.allowLay,
allowWalk: item.allowWalk,
allowGift: item.allowGift,
allowTrade: item.allowTrade,
allowRecycle: item.allowRecycle,
allowMarketplaceSell: item.allowMarketplaceSell,
allowInventoryStack: item.allowInventoryStack,
interactionType: item.interactionType,
interactionModesCount: item.interactionModesCount,
vendingIds: item.vendingIds,
multiheight: item.multiheight,
customparams: item.customparams,
}}
/>
</AdminPageShell>
);
}
File diff suppressed because it is too large. Load diff
+73
View File
@@ -0,0 +1,73 @@
import { Package } from "lucide-react";
import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { fetchAdminList } from "@/lib/admin-list";
import { canAccess, PERMS } from "@/lib/permissions";
import { type ItemsBaseRow, ItemsTable } from "./items-table";
export default async function ItemsBasePage({
params: paramsPromise,
searchParams,
}: {
params: Promise<{ locale: string }>;
searchParams: Promise<Record<string, string>>;
}) {
const result = await fetchAdminList<ItemsBaseRow>(
{
permission: PERMS.CATALOG_VIEW,
model: "itemsBase",
searchFields: ["itemName", "publicName"],
defaultSort: { id: "desc" },
select: {
id: true,
spriteId: true,
publicName: true,
itemName: true,
type: true,
interactionType: true,
width: true,
length: true,
},
filterMap: {
filter_type: (v) => ({ type: v }),
},
mapRow: (r) => ({
id: r.id as number,
spriteId: r.spriteId as number,
publicName: (r.publicName as string) || "",
itemName: (r.itemName as string) || "",
type: (r.type as string) || "s",
interactionType: (r.interactionType as string) || "default",
width: r.width as number,
length: r.length as number,
}),
},
paramsPromise,
searchParams,
);
const t = await getTranslations("pages.admin.items");
const canEdit = canAccess(
result.permissions,
PERMS.CATALOG_EDIT,
result.rank,
);
return (
<AdminPageShell icon={Package} title={t("title")} subtitle={t("subtitle")}>
<p className="text-muted-foreground m-0">
{t("total", { count: result.total })}
</p>
<ItemsTable
data={{
rows: result.rows,
total: result.total,
page: result.page,
perPage: result.perPage,
lastPage: result.lastPage,
}}
canEdit={canEdit}
/>
</AdminPageShell>
);
}
+32 -24
View File
@@ -1,5 +1,7 @@
import { ClipboardList } from "lucide-react";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { StatusCard } from "@/components/admin/dashboard"; import { StatusCard } from "@/components/admin/dashboard";
import { buildStaffActivityWhere } from "@/lib/admin/log-filters"; import { buildStaffActivityWhere } from "@/lib/admin/log-filters";
import { calcPagination, parseListParams } from "@/lib/admin-helpers"; import { calcPagination, parseListParams } from "@/lib/admin-helpers";
@@ -97,31 +99,37 @@ export default async function AdminStaffActivities({
})); }));
return ( return (
<div className="space-y-6"> <AdminPageShell
<div className="grid grid-cols-[repeat(auto-fit,minmax(180px,1fr))] gap-3.5"> icon={ClipboardList}
<StatusCard label={t("totalActivities")} value={total} icon="📋" /> title={t("title")}
<StatusCard subtitle={t("subtitle")}
label={t("onThisPage")} >
value={activities.length} <div className="space-y-6">
icon="📄" <div className="grid grid-cols-[repeat(auto-fit,minmax(180px,1fr))] gap-3.5">
/> <StatusCard label={t("totalActivities")} value={total} icon="📋" />
<StatusCard <StatusCard
label={t("recent")} label={t("onThisPage")}
value={recentCount} value={activities.length}
state={recentCount > 0 ? "ok" : "neutral"} icon="📄"
icon="🟢" />
<StatusCard
label={t("recent")}
value={recentCount}
state={recentCount > 0 ? "ok" : "neutral"}
icon="🟢"
/>
</div>
<StaffActivitiesTable
data={{
rows,
total,
page: pagination.page,
perPage: pagination.perPage,
lastPage: pagination.lastPage,
}}
/> />
</div> </div>
</AdminPageShell>
<StaffActivitiesTable
data={{
rows,
total,
page: pagination.page,
perPage: pagination.perPage,
lastPage: pagination.lastPage,
}}
/>
</div>
); );
} }
File diff suppressed because it is too large. Load diff
+9 -4
View File
@@ -1,3 +1,6 @@
import { Wifi } from "lucide-react";
import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { fetchAdminList } from "@/lib/admin-list"; import { fetchAdminList } from "@/lib/admin-list";
import { PERMS } from "@/lib/permissions"; import { PERMS } from "@/lib/permissions";
import { OnlineTable } from "./online-table"; import { OnlineTable } from "./online-table";
@@ -27,10 +30,12 @@ export default async function OnlineUsersPage({
searchParams, searchParams,
); );
const t = await getTranslations("pages.admin.online");
return ( return (
<div className="space-y-6"> <AdminPageShell icon={Wifi} title={t("title")} subtitle={t("subtitle")}>
<p className="text-muted-foreground"> <p className="text-muted-foreground m-0">
Currently online users ({result.total} connected) {t("connected", { count: result.total })}
</p> </p>
<OnlineTable <OnlineTable
@@ -42,6 +47,6 @@ export default async function OnlineUsersPage({
lastPage: result.lastPage, lastPage: result.lastPage,
}} }}
/> />
</div> </AdminPageShell>
); );
} }
+7 -3
View File
@@ -1,3 +1,6 @@
import { DoorOpen } from "lucide-react";
import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { fetchAdminList } from "@/lib/admin-list"; import { fetchAdminList } from "@/lib/admin-list";
import { canAccess, PERMS } from "@/lib/permissions"; import { canAccess, PERMS } from "@/lib/permissions";
import { RoomsTable } from "./rooms-table"; import { RoomsTable } from "./rooms-table";
@@ -44,11 +47,12 @@ export default async function RoomsPage({
searchParams, searchParams,
); );
const t = await getTranslations("pages.admin.rooms");
const canEdit = canAccess(result.permissions, PERMS.ROOMS_EDIT, result.rank); const canEdit = canAccess(result.permissions, PERMS.ROOMS_EDIT, result.rank);
return ( return (
<div className="space-y-6"> <AdminPageShell icon={DoorOpen} title={t("title")} subtitle={t("subtitle")}>
<p className="text-muted-foreground"> <p className="text-muted-foreground m-0">
{result.total.toLocaleString()} rooms total {result.total.toLocaleString()} rooms total
</p> </p>
@@ -62,6 +66,6 @@ export default async function RoomsPage({
}} }}
canEdit={canEdit} canEdit={canEdit}
/> />
</div> </AdminPageShell>
); );
} }
+27 -23
View File
@@ -1,5 +1,7 @@
import { Settings } from "lucide-react";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
import { prisma } from "@/lib/prisma"; import { prisma } from "@/lib/prisma";
import { AdvancedSettingsPanel } from "./advanced-settings-panel"; import { AdvancedSettingsPanel } from "./advanced-settings-panel";
@@ -41,29 +43,31 @@ export default async function AdminSettings() {
const documented = settings.filter((s) => !!s.comment).length; const documented = settings.filter((s) => !!s.comment).length;
return ( return (
<div className="space-y-8"> <AdminPageShell icon={Settings} title={t("title")} subtitle={t("subtitle")}>
<div className="admin-stat-row"> <div className="space-y-8">
<span className="admin-stat-chip"> <div className="admin-stat-row">
{t("keysInDatabase", { count: settings.length })} <span className="admin-stat-chip">
</span> {t("keysInDatabase", { count: settings.length })}
<span className="admin-stat-chip"> </span>
{t("managedInForm", { count: MANAGED_SETTING_KEYS.length })} <span className="admin-stat-chip">
</span> {t("managedInForm", { count: MANAGED_SETTING_KEYS.length })}
<span className="admin-stat-chip"> </span>
{t("documented", { count: documented })} <span className="admin-stat-chip">
</span> {t("documented", { count: documented })}
</span>
</div>
<CmsSettingsForm values={values} canEdit={canEdit} />
<AdvancedSettingsPanel
settings={settings.map((s) => ({
key: s.key,
value: s.value,
comment: s.comment,
}))}
canEdit={canEdit}
/>
</div> </div>
</AdminPageShell>
<CmsSettingsForm values={values} canEdit={canEdit} />
<AdvancedSettingsPanel
settings={settings.map((s) => ({
key: s.key,
value: s.value,
comment: s.comment,
}))}
canEdit={canEdit}
/>
</div>
); );
} }
File diff suppressed because it is too large. Load diff
+9 -1
View File
@@ -1,4 +1,7 @@
import { Filter } from "lucide-react";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import { getTranslations } from "next-intl/server";
import { AdminPageShell } from "@/components/admin/admin-page-shell";
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
import { prisma } from "@/lib/prisma"; import { prisma } from "@/lib/prisma";
import { WordFilterClient } from "./wordfilter-client"; import { WordFilterClient } from "./wordfilter-client";
@@ -9,6 +12,7 @@ export default async function AdminWordFilter() {
redirect("/admin"); redirect("/admin");
} }
const t = await getTranslations("pages.admin.wordfilter");
const canEdit = canAccess( const canEdit = canAccess(
permissions, permissions,
PERMS.WORDFILTER_EDIT, PERMS.WORDFILTER_EDIT,
@@ -27,5 +31,9 @@ export default async function AdminWordFilter() {
words = []; words = [];
} }
return <WordFilterClient words={words} canEdit={canEdit} />; return (
<AdminPageShell icon={Filter} title={t("title")} subtitle={t("subtitle")}>
<WordFilterClient words={words} canEdit={canEdit} />
</AdminPageShell>
);
} }
+11 -7
View File
@@ -102,14 +102,18 @@ export async function fetchAdminList<TRow = PrismaModel>(
const { search, page, sort, order } = parsed; const { search, page, sort, order } = parsed;
// Build WHERE clause // Build WHERE clause
const searchWhere = const searchOr =
search && config.searchFields.length > 0 search && config.searchFields.length > 0
? { ? config.searchFields.map((field) => buildFieldCondition(field, search))
OR: config.searchFields.map((field) => : [];
buildFieldCondition(field, search), // Exact numeric id match (furni / rooms / items lookup by id).
), if (search && /^\d+$/.test(search)) {
} const asId = Number(search);
: {}; if (Number.isFinite(asId) && asId > 0) {
searchOr.push({ id: asId });
}
}
const searchWhere = searchOr.length > 0 ? { OR: searchOr } : {};
// Apply URL filter_* params via filterMap // Apply URL filter_* params via filterMap
const filterWhere: Record<string, unknown> = {}; const filterWhere: Record<string, unknown> = {};
+7
View File
@@ -435,6 +435,13 @@ export const ADMIN_NAV_GROUPS: AdminNavGroup[] = [
permission: PERMS.CATALOG_VIEW, permission: PERMS.CATALOG_VIEW,
matchPrefixes: ["/admin/catalog"], matchPrefixes: ["/admin/catalog"],
}, },
{
href: "/admin/items",
labelKey: "itemsBase",
icon: Package,
permission: PERMS.CATALOG_VIEW,
matchPrefixes: ["/admin/items"],
},
{ {
href: "/admin/rare-values", href: "/admin/rare-values",
labelKey: "rareValues", labelKey: "rareValues",
@@ -40,6 +40,8 @@ const ROUTES: Array<[string, string]> = [
["housekeeping", "PERMS.SETTINGS_VIEW"], ["housekeeping", "PERMS.SETTINGS_VIEW"],
["logs", "PERMS.LOGS_VIEW"], ["logs", "PERMS.LOGS_VIEW"],
["catalog", "PERMS.CATALOG_VIEW"], ["catalog", "PERMS.CATALOG_VIEW"],
["items", "PERMS.CATALOG_VIEW"],
["items/[id]", "PERMS.CATALOG_VIEW"],
["rooms/edit/[id]", "PERMS.ROOMS_EDIT"], ["rooms/edit/[id]", "PERMS.ROOMS_EDIT"],
]; ];
@@ -64,6 +66,7 @@ const ACTION_GATES: Array<[string, string]> = [
["admin-shop.ts", "PERMS.SHOP_EDIT"], ["admin-shop.ts", "PERMS.SHOP_EDIT"],
["admin-radio-autodj.ts", "PERMS.RADIO_EDIT"], ["admin-radio-autodj.ts", "PERMS.RADIO_EDIT"],
["catalog.ts", "PERMS.CATALOG_EDIT"], ["catalog.ts", "PERMS.CATALOG_EDIT"],
["items-base.ts", "PERMS.CATALOG_EDIT"],
["rooms.ts", "PERMS.ROOMS_EDIT"], ["rooms.ts", "PERMS.ROOMS_EDIT"],
["admin-vpn.ts", "PERMS.SETTINGS_EDIT"], ["admin-vpn.ts", "PERMS.SETTINGS_EDIT"],
["admin-ads.ts", "PERMS.PAGES_EDIT"], ["admin-ads.ts", "PERMS.PAGES_EDIT"],
+11
View File
@@ -82,4 +82,15 @@ describe("staff smoke contract", () => {
expect(readFileSync(path, "utf8"), path).toContain("TicketQueueBanner"); expect(readFileSync(path, "utf8"), path).toContain("TicketQueueBanner");
} }
}); });
it("ships items_base browser", () => {
expect(existsSync("src/app/admin/items/page.tsx")).toBe(true);
expect(existsSync("src/app/admin/items/[id]/page.tsx")).toBe(true);
expect(readFileSync("src/actions/items-base.ts", "utf8")).toContain(
"updateItemsBase",
);
expect(readFileSync("src/lib/admin-nav.ts", "utf8")).toContain(
"/admin/items",
);
});
}); });
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Табло за управление", "title": "Табло за управление",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Dashboard", "title": "Dashboard",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Dashboard", "title": "Dashboard",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -879,7 +879,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Dashboard", "title": "Dashboard",
@@ -2835,7 +2836,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"radioRequests": { "radioRequests": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Ταμπλό", "title": "Ταμπλό",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+34
View File
@@ -1004,6 +1004,7 @@
"hubCatalog": "Catalog & rares", "hubCatalog": "Catalog & rares",
"hubShop": "Shop & payments", "hubShop": "Shop & payments",
"catalog": "Catalog", "catalog": "Catalog",
"itemsBase": "Items base",
"shop": "Shop", "shop": "Shop",
"marketplace": "Marketplace", "marketplace": "Marketplace",
"transactions": "Transactions", "transactions": "Transactions",
@@ -1662,6 +1663,38 @@
"cancel": "Cancel" "cancel": "Cancel"
} }
}, },
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"catalog": { "catalog": {
"title": "Catalog", "title": "Catalog",
"subtitle": "Browse and manage catalog pages and items", "subtitle": "Browse and manage catalog pages and items",
@@ -1805,6 +1838,7 @@
"title": "Guilds", "title": "Guilds",
"subtitle": "Hotel groups and membership", "subtitle": "Hotel groups and membership",
"totalGuilds": "Guilds", "totalGuilds": "Guilds",
"listHeading": "Guilds ({count})",
"searchPlaceholder": "Search by name, description or ID…", "searchPlaceholder": "Search by name, description or ID…",
"search": "Search", "search": "Search",
"empty": "No guilds found.", "empty": "No guilds found.",
+36 -2
View File
@@ -879,7 +879,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Panel", "title": "Panel",
@@ -2835,7 +2836,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"radioRequests": { "radioRequests": {
+36 -2
View File
@@ -879,7 +879,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Tableau de bord", "title": "Tableau de bord",
@@ -2835,7 +2836,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"radioRequests": { "radioRequests": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Nadzorna ploča", "title": "Nadzorna ploča",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Irányítópult", "title": "Irányítópult",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -1032,7 +1032,8 @@
"commandLog": "Log comandi", "commandLog": "Log comandi",
"tradeLog": "Log trade", "tradeLog": "Log trade",
"tools": "Strumenti", "tools": "Strumenti",
"guilds": "Gruppi" "guilds": "Gruppi",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Dashboard", "title": "Dashboard",
@@ -1799,7 +1800,8 @@
"noMembers": "Nessun membro.", "noMembers": "Nessun membro.",
"back": "Torna ai gruppi", "back": "Torna ai gruppi",
"viewPublic": "Apri pagina pubblica", "viewPublic": "Apri pagina pubblica",
"disband": "Sciogli gruppo" "disband": "Sciogli gruppo",
"listHeading": "Guilds ({count})"
}, },
"transactions": { "transactions": {
"title": "Transazioni", "title": "Transazioni",
@@ -2989,6 +2991,38 @@
"less": "Meno", "less": "Meno",
"more": "Più" "more": "Più"
} }
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"radioRequests": { "radioRequests": {
+36 -2
View File
@@ -1062,7 +1062,8 @@
"chatLog": "Chatlog", "chatLog": "Chatlog",
"commandLog": "Commandolog", "commandLog": "Commandolog",
"tradeLog": "Tradelog", "tradeLog": "Tradelog",
"tools": "Tools" "tools": "Tools",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Dashboard", "title": "Dashboard",
@@ -1751,7 +1752,8 @@
"noMembers": "Geen leden.", "noMembers": "Geen leden.",
"back": "Terug naar gildes", "back": "Terug naar gildes",
"viewPublic": "Openbare pagina", "viewPublic": "Openbare pagina",
"disband": "Gilde ontbinden" "disband": "Gilde ontbinden",
"listHeading": "Guilds ({count})"
}, },
"transactions": { "transactions": {
"title": "Transacties", "title": "Transacties",
@@ -3017,6 +3019,38 @@
"less": "Minder", "less": "Minder",
"more": "Meer" "more": "Meer"
} }
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"mod": { "mod": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Dashbord", "title": "Dashbord",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Pulpit nawigacyjny", "title": "Pulpit nawigacyjny",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Painel", "title": "Painel",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Tabloul de bord", "title": "Tabloul de bord",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -907,7 +907,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Панель управления", "title": "Панель управления",
@@ -2863,7 +2864,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Dashboard", "title": "Dashboard",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Дасхбоард", "title": "Дасхбоард",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Instrumentbräda", "title": "Instrumentbräda",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Kontrol Paneli", "title": "Kontrol Paneli",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {
+36 -2
View File
@@ -909,7 +909,8 @@
"commandLog": "Command log", "commandLog": "Command log",
"tradeLog": "Trade log", "tradeLog": "Trade log",
"tools": "Tools", "tools": "Tools",
"guilds": "Guilds" "guilds": "Guilds",
"itemsBase": "Items base"
}, },
"dashboard": { "dashboard": {
"title": "Приладова панель", "title": "Приладова панель",
@@ -2865,7 +2866,40 @@
"noMembers": "No members.", "noMembers": "No members.",
"back": "Back to guilds", "back": "Back to guilds",
"viewPublic": "Open public page", "viewPublic": "Open public page",
"disband": "Disband guild" "disband": "Disband guild",
"listHeading": "Guilds ({count})"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
} }
}, },
"error": { "error": {