Skip to the content.

Localisation

← Back to index

Help pages carry no text of their own. A page is addressed entirely by localisation keys, which live in your mod’s Locales/*.json — so pages follow the player’s language with no extra work.


The two keys

For a page registered with pageKeyPrefix: "mymod:itemname_widget":

Key Shows as
mymod:itemname_widget The page title, in the sidebar and page header
help_mymod:itemname_widget_content The page body, rendered as Markdown
{
  "mymod:itemname_widget": "Widget",
  "help_mymod:itemname_widget_content": "**Widget** does something useful."
}

If you opened your own category, its key needs an entry too.

HelpLinks.ContentKey("mymod:itemname_widget") returns the content key, which is useful when generating locale files or checking coverage in a build step.


Missing keys are reported

A page with no content key still registers and still appears in the sidebar — it just renders empty, which is a confusing thing to debug. The library checks and tells you once per page:

[HelpApi] Page 'furniture-mymodwidget' from 'MyMod' is missing localisation for
'help_mymod:itemname_widget_content' (page body). Add the keys to your mod's
Locales/*.json or the page will render blank.

Markdown

Bodies are Markdown. What the base game’s own pages use:

**Gift Shop** businesses operate out of retail buildings.

Customers are self-serving.

The business requires the following furniture to function:

* [Stack of Shopping Baskets](furniture-stackofshoppingbaskets)
* [Point of Sales](furniture-itemgrouppointofsale)

**Customer Capacity:** 15

Supported and worth using:


Links use ordinary [text](target) syntax, but the target is not a URL. The renderer routes it through the help system.

To another help page

The target is a slug — base-game or from any mod:

See also: [Commercial Tumble Dryer](furniture-laundromatdryer)
HelpLinks.Page("Commercial Tumble Dryer", "furniture-laundromatdryer")

To a building

An address: target focuses that building on the city map. The format is the street number, a space, then the street abbreviation:

The furniture can be purchased from the following locations:
* [Essentials Appliances](address:16 11s)
* [Ika Bohag](address:50 4s)
HelpLinks.Address("Essentials Appliances", 16, "11s")

Linking to pages you do not own

A link to a slug that does not exist renders as dead text. If you are linking to another mod’s page, guard it:

if (HelpApi.PageExists(slug))
    body += HelpLinks.Page(text, slug);

Base-game slugs are stable enough to link to directly — importers-contract, businesstypes-headquarters and furniture-itemgrouppointofsale are all commonly referenced.


Writing style

Matching the base game’s voice makes pages feel native. Its pattern:

  1. Open with the subject in bold and what it fundamentally is.
  2. State mechanics plainly — capacity, footprint, prices — as **Label:** value lines.
  3. List requirements or contents as bullets, each linked.
  4. Close with where to buy it, or a See also link.
**Commercial Washing Machine** sells a wash cycle to customers in a [Laundromat](businesstypes-laundromat).

**Customer Capacity:** 3 per hour
**Footprint:** 1.0m x 1.0m

Machines accumulate dirt as they are used. A dirty business loses customers, so plan for cleaning staff as you scale up.

The furniture can be purchased from the following locations:
* [Essentials Appliances](address:16 11s)
* [Square Appliances](address:16 4a)

See also: [Commercial Tumble Dryer](furniture-laundromatdryer)

Other languages

Add the same keys to each locale file your mod ships — en.json, nl.json, and so on. The help window re-reads its structure on a language change, and the library re-applies your pages automatically, so no code changes are needed.


← Conventions · Troubleshooting →