Content & i18n

This guide covers the CMS for managing site pages and content blocks, the chat word filter, and the internationalization (i18n) system for managing languages and translations.

Pages (CMS)

Navigate to Content > Pages to manage publicly visible site pages.

Required permission: pages:read to view, pages:create to create, pages:edit to update, pages:delete to delete.

Page Properties

FieldDescription
TitlePage display title (1–200 characters)
SlugURL path segment, e.g. about-us → /about-us. Lowercase letters, numbers, and hyphens only. Must be unique. Auto-generated from title if left blank.
ContentFull HTML or rich-text body (up to 500,000 characters)
VisibilityWho can see the page (see below)
ActiveWhether the page is publicly accessible

Visibility Options

ValueAudience
PUBLICAnyone, including unregistered visitors
GUESTSOnly unregistered (guest) users
REGISTEREDOnly logged-in registered users

Additionally, pages can be restricted to specific user groups. Open a page and go to the Groups tab to assign groups. When groups are assigned, only members of those groups (who also meet the visibility requirement) can access the page.

Creating a Page

  1. Click Create Page.
  2. Enter a title — a slug is automatically suggested.
  3. Set visibility and whether the page is active on creation.
  4. Click Create Page, then use the block editor to add content.

Content Blocks

Pages are composed of ordered content blocks. Each block has a type, optional name, content body, and type-specific settings.

Available block types (returned from the server, extensible):

  • Blocks can be reordered by dragging or using the move-up / move-down controls.
  • A block can be duplicated to create a copy below it.
  • Individual blocks can be activated or deactivated without deleting them.

Slug Management

  • Slugs must be unique across all pages.
  • Certain slugs are reserved by the system (e.g., system routes like login, register). The reserved slug list is returned by the API .

Word Filter

Navigate to Content > Word Filter to manage the chat word filter.

Required permission: settings:view to view, settings:edit to add/remove/toggle.

The word filter blocks or replaces words in player chat messages. Words are matched case-insensitively.

Adding Words

  • Single word: Enter a word and click Add.
  • Batch import: Use Batch Import Words to add up to 500 words at once.

Managing the List

  • Each word entry has an active toggle. Inactive words are stored but not applied.
  • Delete a word permanently using the trash icon.

Languages

Navigate to Settings > Languages to manage supported UI languages.

Required permission: languages:read to view, languages:write to create/update/delete.

Language Properties

FieldDescription
NameDisplay name, e.g. "French"
CodeBCP 47 language code, e.g. fr or fr-FR
FlagOptional emoji or image code for the language selector
ActiveWhether players can select this language
RTLWhether the language should render right-to-left

Creating a Language

  1. Open Create New Language.
  2. Enter the name and language code (en, de, fr-FR, etc.).
  3. Click Create Language. The language starts with no translations — seed defaults or import a pack.

Default Language

The default language is English (en). It cannot be deleted. Other languages fall back to the default for any untranslated keys.

Simplified Chinese (zh-CN, display name 简体中文) is registered by the seed script inactive by default. Activate it when an operator is ready to expose it in the player-facing language selector.

Activating / Deactivating

Toggle a language active or inactive without deleting it. Inactive languages are hidden from the player-facing language selector.

Translations (Phrases)

Each language has a set of phrases — key/value pairs mapping translation keys to their localized strings.

Navigate to Settings > Languages > [Language] and open the Phrases tab.

Editing Phrases

  • Search for a key using the search bar.
  • Click a phrase row to edit the value inline.
  • Use Save to persist the change.

Missing Translations

The Missing tab shows all keys that exist in the default language but have no value in the current language. Use this to track translation completeness.

Namespaces

Phrase keys use dot notation for namespacing (e.g., admin.tables.title, game.actions.fold). The Namespaces view groups phrases by their top-level prefix for easier navigation.

Importing and Exporting Language Packs

Export

Open a language and click Export. Choose format:

  • JSON — { "key": "value", ... } structure. Suitable for programmatic editing.
  • CSV — RFC 4180 format with a key,value header row. Suitable for spreadsheet editing. UTF-8 BOM included for Excel compatibility.

Both formats support filtering by namespace prefix.

Import (JSON)

Send a JSON object:

{
  "code": "fr",
  "name": "French",
  "phrases": {
    "common.submit": "Envoyer",
    "game.fold": "Se coucher"
  },
  "overwrite": false
}

Set overwrite: true to replace existing phrases with the same key. Existing phrases not included in the import are left unchanged.

Import (CSV)

Upload a CSV file with Content-Type: text/csv and provide code and name as query parameters. The CSV must have a key,value header row. Quoted fields and multi-line values are supported.

Seeding Defaults

Click Seed Default Phrases to add any missing default phrases. Existing translations are not overwritten.

Email Templates

Navigate to Email > Email Templates to manage the HTML/text templates used for system and bulk emails. Templates can reference variables using {{variable_name}} syntax.

Sent email history is on the Email Logs tab of Logs.

Try the live demo Pricing

Have questions about Poker Engine? We reply fast.