Files
ashen-realms/docs/playable-slices/0.6.6-English-Game-Content-Foundation.md
Bastian Wagner 987242541d inventory
2026-08-21 12:52:44 +02:00

6.9 KiB
Raw Blame History

Ashen Realms Playable Slice 0.6.6

English Game Content Foundation

Status: Implementation Specification
Depends on: Slice 0.6.5 Reputation / Renown Foundation
Purpose: Convert all currently implemented player-facing game content to English before the next major content expansion.


1. Goal

From this slice onward, all player-facing game content is written in English.

Development documentation may remain German. Internal technical names may remain unchanged when they are already stable, but new data keys should be language-neutral English slugs.

This slice is deliberately a cleanup and convention slice. It must not introduce a large localization framework.

Project rule after this slice: All player-facing game content is English. Development documentation may remain German.


2. Why this slice exists now

The project is about to add significantly more content:

  • more monsters
  • trade goods
  • loot bags
  • merchants
  • reputation-gated offers
  • NPC dialogue
  • quests
  • the Abandoned Watchpost
  • the Ash Pit
  • the first area boss

Translating later would touch much more persisted content, UI copy, seed data and tests. Therefore the language switch happens before Slice 0.7 V2.


3. Scope

Convert every currently visible German string in the playable loop:

  • navigation
  • locations
  • monsters
  • items
  • combat actions
  • combat log
  • hunt screen
  • travel screen
  • loot screen
  • inventory
  • character screen
  • system messages
  • danger labels
  • error messages visible to the player

Do not translate German development documentation in /docs unless it is itself rendered in the game.


4. Naming convention

Technical identity must not depend on display language.

Preferred pattern:

{
  key: 'ash-rat',
  name: 'Ash Rat'
}

Avoid new language-specific identifiers such as:

key: 'aschenratte'

Existing UUIDs must never change because of the language conversion.


5. Initial terminology

Use the following English terminology consistently for the currently relevant content.

Locations

German / Previous Label English Player-Facing Label Suggested Key
Graufurt Graufurt graufurt
Südtor von Graufurt Graufurt South Gate graufurt-south-gate
Verbrannte Straße Burned Road burned-road
Verlassener Wachtposten Abandoned Watchpost abandoned-watchpost
Aschengrube Ash Pit ash-pit
Aschenfelder Ashen Fields ashen-fields

Graufurt is treated as a proper place name and remains unchanged for now.

Monsters

German / Previous Label English Label Suggested Key
Aschenratte Ash Rat ash-rat
Verwilderter Straßenhund Feral Road Hound feral-road-hound
Straßenräuber Road Bandit road-bandit
Verkohlter Plünderer Charred Raider charred-raider
Plünderer-Späher Raider Scout raider-scout
Plünderer-Veteran Raider Veteran raider-veteran
Aschenwühler Ash Burrower ash-burrower
Verbrannter Jagdhund Burned Hound burned-hound
Hauptmann der Aschenbande Captain of the Ashen Band ashen-band-captain

Core combat actions

  • Attack
  • Heavy Strike
  • Shield Bash
  • Defend
  • Potion
  • Flee

Navigation

  • Map
  • Hunt
  • Quests
  • Inventory
  • Character
  • Shop

Common UI

  • Current Location
  • Travel
  • Begin Travel
  • Begin Hunt
  • Search Again
  • Attack
  • Back
  • Loot
  • Equip
  • Unequip
  • Reputation
  • World Renown
  • Silver
  • Required Reputation
  • Bag Capacity

Danger labels

  • Weak
  • Suitable
  • Strong
  • Very Dangerous
  • Deadly

6. Existing item names

At minimum, currently seeded or visible Tier-1 items should use English display names.

Recommended names:

  • Worn Shortsword
  • Bandit Blade
  • Ashen Blade
  • Bandit Hood
  • Reinforced Leather Jacket
  • Plunderer Gloves
  • Watchman's Leggings
  • Ashen Boots
  • Mark of the Border Watch
  • Charred Captain's Pendant

Do not rename stable item keys merely to make them prettier. Only display values should be changed unless the old key is clearly temporary and no persisted references depend on it.


7. Combat log language

All newly generated combat events must resolve to English text.

Examples:

Round 2
You use Shield Bash.
Road Bandit takes 12 damage.
Road Bandit's Heavy Strike is interrupted.
Feral Road Hound bites you for 9 damage.
You are Bleeding for 2 rounds.

Combat event persistence should continue to prefer structured event data over storing fully rendered localized strings wherever possible.


8. UI text architecture

Do not build a full translation database in this slice.

For static Angular UI text, it is acceptable to use centralized constants or a lightweight text map where useful.

For persisted game content, keep:

key
name
shortDescription / description

with English values.

A future localization layer may introduce translations without changing the content key.


9. Error messages

Domain error code values remain technical and stable.

Example:

{
  "code": "BAG_CAPACITY_EXCEEDED",
  "message": "You cannot carry any more hides."
}

The player-facing message is English.


10. Migration / seed behavior

If names and descriptions are stored in PostgreSQL:

  • update existing rows by stable key
  • do not delete and recreate content rows unnecessarily
  • preserve UUIDs
  • preserve character inventory references
  • keep migrations idempotent where appropriate

If seed files own the content, update both the seed definitions and the existing database through a controlled migration/update step.


11. Tests

Add or update tests so that:

  • current location API returns English names
  • hunt encounters return English monster names
  • combat UI renders English action labels
  • combat log contains English player-facing text
  • inventory uses English item names
  • no existing test expects German display text

A simple development-only grep may be used to identify obvious German UI remnants, but it is not a substitute for actual runtime verification.


12. Acceptance Criteria

This slice is complete when:

  • The complete currently playable flow contains no intentional German player-facing text.
  • Existing content IDs and player state remain valid.
  • Locations, monsters and items use English display names.
  • Combat actions and combat log are English.
  • Navigation and common system messages are English.
  • New stable content keys follow English/language-neutral slug conventions.
  • No large localization framework was introduced.
  • All existing tests pass.

13. Explicitly Out of Scope

Do not implement yet:

  • German/English language switch
  • browser language detection
  • translation management UI
  • translation tables for every content entity
  • Crowdin / Phrase / Lokalise integration
  • automatic machine translation

The only required runtime language after this slice is English.