Localization and Text Highlighting

From The Muse
Revision as of 11:09, 25 July 2026 by GavstarB (talk | contribs) (Added Localizations and Text Highlighting page.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Localization

All text in Lancer Tactics is translated through Godot's localization system. In the modkit, the complete translations for the game can be found at res://assets/localization/localizations.csv. For mods, the res://unpacked/<MOD_ID>/localization/localizations.csv file will be generated automatically by the mod tool.

It looks something like this:

id,en,
mod.yourname-example.name,example,

The file may have any number of columns. The first column is the translation key and any subsequent columns are translations of the text for a particular language. The locale for each column is specified in the first row.

Any time you make a change to this file, you must Reimport it for the changes to apply.

Translation keys are generally made up of three parts: the prefix, the compcon id of the Resource (and any parent resources), and the suffix.

For mods, generally the prefixes we need to worry about are frame. for Frames and gear. for Kits.

The most common suffixes are:

Suffix Meaning
.name The name of the Resource.
.effect For Kits, this is the main body of the tooltip.
.flavor Lore text for the Frame or Kit. For Kits, this is usually omitted entirely.
.flavor.short For Frames, this is the short description of the Frame which appears on the Licenses ring screen.
.on_attack For Kits with ActionAttacks, this displays any On attack: effects in the tooltip.
.on_hit For Kits with ActionAttacks, this displays any On hit: effects in the tooltip.
.on_crit For Kits with ActionAttacks, this displays any On crit: effects in the tooltip.
.on_miss For Kits with ActionAttacks, this displays any On miss: effects in the tooltip.

For Actions, we use the gear. prefix and include the compcon id of the Kit before the compcon id of the Action.

Example Frame:
id,en,
frame.mf_example.name,"Example",
frame.mf_example.flavor,"The Example frame was created by GMS to use as an example in their various pieces of documentation. It is unclear if any were ever constructed in reality.",
frame.mf_example.flavor.short,"Helpful Example",
Example Kit:
id,en,
gear.ms_example.name,"Example Kit",
gear.ms_example.effect,"Does nothing.",
Example Kit (with an Action):
id,en,
gear.ms_example.name,"Example Kit",
gear.ms_example.action_example.name,"Example Action",
gear.ms_example.action_example.effect,"Does nothing.",

Text Highlighting

Text in Lancer Tactics supports bbcode formatting. This means we can make text bold with [b]text[/b] and italic with [i]text[/i].

The text may also contain keywords, formatted as |keyword|, which are highlighted in orange and display a tooltip explaining their meaning when hovered. The text highlighted with || may also contain a valid dice string such as +2 or 1d6 either before or after the word.

The tooltip for a Kit may be displayed on hover by using |Stabilize=gear.ms_stabilize| where Stabilize is the string and ms_stabilize is the compcon id of the Kit. These will be colored green instead of orange.

Formatting Tips:
  • Keywords in Lancer Tactics are always lowercase, with the exception of acronyms like |HP| and |AP|.
  • The names of Actions, Kits and Deployables are capitalized. Where they cannot be given a green tooltip, they are bolded instead.
  • Plurals of a keyword, such as |protocols|, are usually considered valid.
  • Highlighting |1 AP kinetic| will not work, it must be split into |1 AP| |kinetic|.
  • As |ranged attack| and |melee attack| are keywords, it is customary to highlight |ranged| or |melee attack| even though the first tooltip will not work.
  • Although |teleport| and |teleports| work, |teleported| does not. Use |teleport||ed| instead.
  • Modders often highlight |efficient| even though it is not a keyword in the base game.
Keywords:
Type Keywords
Actions |barrage|, |boost|, |free action|, |full action|, |grapple|, |invade|, |overcharge|, |overwatch|, |protocol|, |quick action|, |ram|, |reaction|, |tech|
AOEs |blast|, |burst|, |chain|, |cone|, |line|, |area|
Attacks |melee attack|, |ranged attack|, |tech attack|
Checks & Saves |check|, |save|, |agility save|, |engineering save|, |hull save|, |systems save|
Cover |cover|, |hard cover|, |soft cover|
Damage |burn|, |energy|, |explosive|, |heat|, |kinetic|
Gear |AI|, |deployable|, |drone|, |indestructible|, |limited|, |recharge {x}+|, |{x} heat (self)|, |shield|, |uncharged|, |unique|, |weapon mod|
HASE |agility|, |engineering|, |grit|, |hull|, |systems|
Stats |armor|, |e-defense|, |evasion|, |health|/|HP|, |heat cap|, |limited bonus|, |reactions|, |repair cap|, |save target|, |sensor range|/|sensors|, |size|, |speed|, |stress|, |structure|, |system points|/|SP|, |tech attack|
Statuses & Conditions |blinded|, |danger zone|, |dazed|, |disengaged|, |engaged|, |eva-equipped|, |exiled|, |exposed|, |flying|, |grappled|, |hidden|, |immobilized|, |impaired|, |intangible|, |invisible|, |invulnerable|, |jammed|, |lock on|, |prone|, |shredded|, |shut down|, |slowed|, |stunned|
Terms |accuracy|, |bonus damage|, |CORE Power|/|CP|, |critical hit|/|crit|, |dangerous terrain|, |difficult terrain|, |difficulty|, |engagement|, |fly|, |free space|/|free|, |full repair|, |immunity|, |invisibility|, |knockback|, |line of sight|, |movement|, |object|, |obstruction|, |overshield|, |range|, |reactor meltdown|/|meltdown|, |reserve|, |resistance|, |rest|, |skirmish|, |teleport|, |zero-g|
Weapons |accurate|, |armor-piercing|/|AP|, |arcing|, |attack bonus|, |auxiliary|/|aux|, |cannon|, |CQB|, |heavy|, |inaccurate|, |irreducible|, |launcher|, |loading|, |main|, |melee|, |nexus|, |ordnance|, |overkill|, |reliable|, |rifle|, |seeking|, |smart|, |superheavy|, |threat|, |thrown|, |unloaded|
Lore |NHP|, |General Massive Systems|/|GMS|, |Harrison Armory|/|HA|, |HORUS|, |IPS-Northstar|/|IPS-N|, |Smith-Shimano Corpro|/|SSC|
Complete example - the Hecatoncheires:
id,en,
"frame.mf_balor_alt_hecatoncheires.name","Hecatoncheires",
"frame.mf_balor_alt_hecatoncheires.flavor","Officially, the Hecatoncheires does not exist. Baronic...",
"frame.mf_balor_alt_hecatoncheires.flavor.short","Sneaky Swarm",
"gear.cp_myrios_long_leash_directed_greywash_hecatoncheires.name","MYRIOS Long-Leash Directed Greywash",
"gear.cp_myrios_long_leash_directed_greywash_hecatoncheires.action_deploy_razor_swarm.name","Deploy Razor Swarm",
"gear.cp_myrios_long_leash_directed_greywash_hecatoncheires.action_deploy_razor_swarm.effect","Deploy a [b]Razor Swarm[/b] to a valid |blast 1| area within |sensors| that contains no hostile characters. The Hecatoncheires may only have a single [b]Razor Swarm[/b] deployed at any one time. The [b]Razor Swarm[/b] persists until the end of the scene or until recalled or redeployed as a |quick action|.\nA [b]Razor Swarm[/b] is a |blast 1| area that provides |soft cover| to allied characters that are at least partially within the area. Hostile characters that start their turn at least partially within the area or move into it for the first time in a round take |2 burn|.\nA [b]Razor Swarm[/b] counts as a |drone| for the purposes of your and your allies' systems, talents, traits, and so on, but is not a character and is otherwise treated as a zone on the battlefield. It does not obstruct movement or cause |engagement|, and hostile characters cannot affect the [b]Razor Swarm[/b] in any way.",
"frame.dep_razor_swarm_hecatoncheires.name","Razor Swarm",
"gear.mt_razor_swarm_hecatoncheires.name","Razor Swarm",
"gear.mt_razor_swarm_hecatoncheires.effect","A [b]Razor Swarm[/b] is a |blast 1| area that provides |soft cover| to allied characters that are at least partially within the area. Hostile characters that start their turn at least partially within the area or move into it for the first time in a round take |2 burn|.\nA [b]Razor Swarm[/b] counts as a |drone| for the purposes of your and your allies' systems, talents, traits, and so on, but is not a character and is otherwise treated as a zone on the battlefield. It does not obstruct movement or cause |engagement|, and hostile characters cannot affect the [b]Razor Swarm[/b] in any way.",
"gear.cp_myrios_long_leash_directed_greywash_hecatoncheires.action_enrage_swarm.name","Enrage Swarm",
"gear.cp_myrios_long_leash_directed_greywash_hecatoncheires.action_enrage_swarm.effect","Each hostile character in one or more areas created by your |drones| takes |4 burn|. This action is |efficient| and will refund |1 CP| at the end of any scene in which this action was used.",
"gear.mt_dispersed_profile_hecatoncheires.name","Dispersed Profile",
"gear.mt_dispersed_profile_hecatoncheires.effect","When the Hecatoncheires is in |soft cover|, ranged attackers receive |+2 difficulty| instead of |+1 difficulty|.",
"gear.mt_smoke_and_mirrors_hecatoncheires.name","Smoke and Mirrors",
"gear.mt_smoke_and_mirrors_hecatoncheires.effect","The Hecatoncheires can always |Hide=gear.ms_hide| in an area of |soft cover|, regardless of |engagement| or enemy traits and systems.",
"gear.mt_panoptes_targeting_hecatoncheires.name","Panoptes Targeting",
"gear.mt_panoptes_targeting_hecatoncheires.effect","The Hecatoncheires' |smart| weapons ignore the |invisible| status of characters within |sensors|.",