Skip to content

How to localise a Crusader Kings title

Horațiu Mlendea edited this page Jan 18, 2021 · 3 revisions

Suppose you want to add a new localisation for the norman culture for the Oxford barony in Crusader Kings 3.

This guide applies to all supported Crusader Kings games, the only difference being the game ID:

  • Crusader Kings 2 (vanilla): CK2
  • Crusader Kings 2 (Historical Immersion Project): CK2HIP
  • Crusader Kings 2 (Elder Kings): CK2EK
  • Crusader Kings 3 (vanilla): CK3

So, for example, if you want to add the same localisation but for CK2 HIP, you would use CK2HIP in all GameId lines in this guide, instead of CK3

First things first

  • Find the title ID for that title
    • Look into CK3's original landed_titles.txt and search for it
    • Hint: it's b_oxford
  • Open locations.xml and see if b_oxford is already defined
    • Search for <GameId game="CK3">b_oxford using your text editor's search function
    • The title is there, defined for a location entity with the oxford ID
  • Open languages.xml and get the language ID for the norman culture
    • Search for <GameId game="CK3">norman using your text editor's search function
    • The ID in this case is Norman as seen in the <Id> node

Adding the name

  • Go to the location in locations.xml (ID: oxford)
  • Inside of the <Names> list add a new line for this localisation
    • The format of the line: <Name language="[THE_LANGUAGE_ID]" value="[THE_NAME_FOR_THAT_LANGUAGE]" />
    • The resulting line: <Name language="Norman" value="Oxford norman name example" />
    • Try to keep the names list sorted alphabetically by language ID, to keep it more readable

In case the location entity exists, but the title is not defined for it

E.g. the oxford location entity does not have b_oxford associated with it for CK3 Note: This is a hypothethical example, CK3's b_oxford is already defined

  • Go to the location in locations.xml (ID: oxford)
  • Inside of the <GameIds> list add a new line for this title
    • The format of the line: <GameId game="[THE_GAME]">[THE_TITLE_ID]</GameId> <!-- [THE_DEFAULT_DISPLAY_NAME_INGAME] -->
    • The resulting line: <GameId game="CK3">b_oxford</GameId> <!-- Oxford -->
    • Try to keep the names list sorted alphabetically first by game and then by value (title ID), to keep it more readable
    • The [THE_DEFAULT_DISPLAY_NAME_INGAME] part is optional, but recommended when the display name is very different from the title ID

In case the location entity does not exist

If the oxford location entity does not exist at all, you need to add it from scratch Note: This is a hypothethical example, the oxford location already exists

The format of the location:

  <LocationEntity>
    <Id>[THE_LOCATION_ID]</Id>
    <GameIds>
      <GameId game="[THE_GAME]">[THE_TITLE_ID]</GameId> <!-- [THE_DEFAULT_DISPLAY_NAME_INGAME] -->
    </GameIds>
    <Names>
      <Name language="[THE_LANGUAGE_ID]" value="[THE_NAME_FOR_THAT_LANGUAGE]">
    </Names>
  </LocationEntity>

The resulting location:

  <LocationEntity>
    <Id>oxford</Id>
    <GameIds>
      <GameId game="CK3">b_oxford</GameId> <!-- Oxford -->
    </GameIds>
    <Names>
      <Name language="Norman" value="Oxford norman name example">
    </Names>
  </LocationEntity>

Other information

  • Do not worry about which characters in a name are supported by CK3's font. Just write all the original characters, and the building tool will replace all the unsupported ones with their closest equivalents.