FFXIV Wiki:Improve dialogue formatting
- Project description
- Improve the formatting of quest dialogue with a new template, {{Dialogue}}.
- Status
- In progress
- Members
- Dr Agon (talk), Erin Umbreon (talk), OnyxVindicator (talk), Gurgum (talk)
- Discussion
- Talk page, Discord
To-dos
{{Dialogue}} is mostly ready for use; slowly rolling out to certain quest pages for testing and feedback. Will eventually be backfilled to all existing quest pages via script; in the meantime please don't apply the template to existing pages in bulk.
Most of what's left is just me implementing the rest of the owl, but early feedback is always welcome. Erin Umbreon (talk) 03:15, 16 January 2026 (UTC)
Needed features
- 1
Nested dialogue choices (probably using >>syntax but haven't worked out the details yet) - Conditional dialogue (based on race/gender/jobs/etc)
- 1
Expand forename/surname placeholder system to also let us do inline gender-specific terms, maybe? or figure out something for those at least
- {{Alternatives}} can be extended to take named arguments for this down the line; datamining script can just emit unnamed parameters and human editors can add parameter names where possible during the manual review process.
- Figure out how we want to handle optional dialogue for when you interact with a character but they say nothing and there's just a system message
- This should use the same new syntax as conditional dialogue markers will use, as discussed on Discord at some point
- 1
Quest started marker to mirror quest complete
Cleanup of existing uses
- 1
Category:Uses dialogue template with speakerless dialogue lines (Erin Umbreon (talk) 05:45, 5 February 2026 (UTC))
- Cleaned up. Remaining uses are legitimate (i.e. not system dialogue)
- Category:Dialogue input not using nowiki tag
Other stuff
- 1
Make sure redlinks on speaker names render as redlinks - Make sure accessibility is okay
- Tweaks to make copypasted dialogue more useful
- Add an invisible colon after speaker names
- Get more feedback on appearance
- hello person reading this please take a look at what we have and let us know what you think on the talk page or in discord thanks
Text formats
| Style | GT style | Old formatting | New Template formatting | Formatted text | Quest Text examples/notes |
|---|---|---|---|---|---|
| Italics | <span class="emphasis">lorem ipsum</span> |
lorem ipsum | ''lorem ipsum'' |
lorem ipsum | * To the Galactic Way, then! * In light of this, perhaps I could be considered the mastermind. |
| Highlight | <span class="highlight">lorem ipsum</span> |
lorem ipsum | * Add brackets for certain interpolated names, i.e. [Forename]* Apply bold formatting otherwise: lorem ipsum |
* Forename Surname * lorem ipsum |
".highlight" is used for commands, names, emotes, etc. Interpolated names ("Forename"/"Surname") are the only text (as far as we've seen) that uses the ".highlight" class but is not styled in-game. * Ah, you must be Forename. * What will you do? Discuss the oven. * Now is the time to pay respect to a fellow traveler. * With the chat mode in Say... * more examples in context |
| Highlight-<color> | <span class="highlight-purple">lorem ipsum</span> |
not implemented (bug) | lorem ipsum(Strip highlight entirely) |
lorem ipsum | ".highlight-purple" is used for full dialogue lines (not words or phrases) spoken by otherworldly characters such as Ascians, Amaurotines, etc. (-Faint Voice-)<span class="highlight-purple">If anyone...message...come...Pandæmonium... Please...</span> |
| Alternatives | <span class="alternative-container"><span class="alternative">lorem</span><span class="alternative">ipsum</span></span> |
lorem/ipsum | {lorem/ipsum}
|
lorem/ipsum | TODO: lua: support curly brackets for the enclosing delimiters. See Dressed to Protect for an example of multiple, full-sentence alternatives. * Got that crystal paste for me, lass/lad? |
| Errors | lorem [Error] ipsum |
lorem [*] ipsum | [*] or [Error]
|
[*] or something similar | We decided on the "[*]" format while I was working on the original dialogue formatting. * you must have [*] equipped |
| Interpolated strings | <span class=\"alternative-container\"><span class=\"alternative\">an [lorem]</span><span class=\"alternative\">a [ipsum]</span></span> |
a [Job]/an [Job] | {a [Job]/an [Job]}
|
a Job/an Job | * ...you will receive a phantom weapon for an [Job]/a [Job].
On the Lua side, we can compare the text in brackets to a known list of placeholder names and give each type some appropriate hover text to explain what's being substituted. Unknown placeholders will not receive any special rendering so we don't break any literal square brackets in the source text. |
| Interpolated strings: Player/companion names | <span class="highlight">Forename Surname</span> <span class="highlight">Forename</span> <span class="highlight">Surname</span> <span class="highlight">Companion</span> |
Forename etc. | [Forename] [Surname] [Forename] [Surname] [Companion] |
Forename Surname Forename |
Special case for these four specific placeholder strings. These don't appear with brackets around them as other placeholders do; we want to re-add the brackets on the Python side so the Lua template can process them in a consistent way. |
| Alternate speaker names - mystery speakers | "name": "KARASU", "text": "(-Eccentric Easterner-)And a mysterious savior... |
Karasu: (Eccentric Easterner) And a mysterious savior... | Karasu@Eccentric Easterner: And a mysterious savior... |
And a mysterious savior... |
The name in parentheses is what is displayed in-game: "Eccentric Easterner" |
| Alternate speaker names - System (documents) | "name": "SYSTEM", "text": "(-Francel's Missive-)<span class="emphasis">Dear Mistress Elaisse,...</span>" |
System: (Francel's Missive) Dear Mistress Elaisse,... | x@Francel's Missive: ''Dear Mistress Elaisse,...'' |
Francel's Missive Dear Mistress Elaisse,... |
The name in parentheses is what is displayed in-game, with no italics: "Francel's Missive". |
Recommendations
Italics
1
Leave as-is. The current formatting is consistent with the in-game formatting.
Highlight
Apply bold or some other formatting to differentiate these strings from italicized strings. This can be done on the Python side.
1
Decide on formatting.
- Consensus is to just use normal bold markup for this. Erin Umbreon (talk) 18:54, 16 February 2026 (UTC)
□ Update Python and/or Lua code to support the format.
Highlight-<color>
The general consensus is that we want to avoid overly complicated formatting, so we can strip the formatting from the colorized lines.
□ update Python code to strip the formatting
Alternatives
We've discussed this and decided to use the format "{lorem/ipsum}". The brackets will not be displayed in the visible text, but they will be available if we ever want to do fancier formatting for the alternatives. Update: Erin will set up a template & module to format the alternatives so that we have a formatter that can be used outside of the dialogue. Gurgum (talk) 03:00, 18 February 2026 (UTC)
□ update the Python code to set the template
1
create a template & module to format the alternatives
- {{Alternatives}} is functional enough for now. Made the necessary changes to {{Dialogue}} to ensure placeholders within the template work as expected. Erin Umbreon (talk) 01:19, 19 February 2026 (UTC)
Errors
1
I recommend that we leave these as-is. They are simple, easy to see, and can be cleaned up by people working on the quest dialogue.
Interpolated Strings
1
I recommend that we leave these as-is.
Alternate speaker names
□ update the Python code to display the alternate name ("Eccentric Easterner") linked to the actual speaker ("Karasu")
Alternate speaker names - System (documents)
□ update the Python code to display the alternate name with no link ("x@Francel's Missive"). Leave italics in place, even though they are not displayed in-game (this takes the place of the special visual formatting used for document text).