Files
gw/terminology.md
ponzischeme89 6d44e05de4 v1
2026-04-18 07:23:55 +12:00

2.3 KiB

Terminology

This repo now has a central terminology registry for admin-facing labels and key product nouns.

Source of truth

  • Frontend terminology lives in frontend/src/lib/terminology.js
  • The default locale is en-NZ
  • Admin pages should import the shared registry instead of hardcoding repeated labels

Current structure

frontend/src/lib/terminology.js exports:

  • DEFAULT_TERMINOLOGY_LOCALE
  • TERMINOLOGY_LOCALES
  • getTerminology(locale)
  • terminology

The registry is grouped into:

  • common
  • entities
  • admin

Example:

import { terminology as t } from '$lib/terminology';

const clientLabel = t.entities.client.singular;
const sectionLabel = t.admin.sections.clients;
const pageTitle = t.admin.clients.title;

How to update wording

If you want to rename a repeated term like Client, Clients, Leads, Home, or Reporting, update the relevant key in:

  • frontend/src/lib/terminology.js

Any page already wired to the shared registry will pick up the new label automatically.

Adding a new locale later

  1. Add another top-level locale entry to TERMINOLOGY_LOCALES
  2. Mirror the same object shape as en-NZ
  3. Switch the selected locale through getTerminology(locale)
  4. Avoid hardcoding user-facing copy in components if it belongs in the registry

Example outline:

export const TERMINOLOGY_LOCALES = {
  'en-NZ': { ... },
  'fr-FR': { ... },
};

Guidance

  • Put repeated UI labels and key nouns in the terminology registry
  • Keep one-off implementation details out of the registry unless they are also user-facing copy
  • Prefer full copy keys for phrases that may need different grammar in another language
  • If a page repeats the same wording in multiple places, move it into the registry

Current admin coverage

The shared terminology registry is already wired into:

  • frontend/src/routes/admin/+layout.svelte
  • frontend/src/routes/admin/+page.svelte
  • frontend/src/routes/admin/members/+page.svelte
  • frontend/src/routes/admin/members/new/+page.svelte
  • frontend/src/routes/admin/members/[id]/+page.svelte
  • frontend/src/routes/admin/leads/+page.svelte
  • frontend/src/routes/admin/messages/+page.svelte
  • frontend/src/routes/admin/bookings/+page.svelte
  • frontend/src/routes/admin/walks/+page.svelte
  • frontend/src/routes/admin/audit/+page.svelte