Skip to content
Tirlititi edited this page Nov 19, 2024 · 4 revisions

Translation mods allow to play the game in languages that are not officially supported. Usually, it works by completly modifying one of the official languages into the mod's language.

Translation requires modifying 2 kinds of files:

  1. The different text files: in Final Fantasy IX, these are usually in a format .mes, .strings or .txt, all of which support UTF-8 Unicode encoding.
  2. A few images or sprites that contain texts to be translated: the easiest is to use PNG images (sometimes with the .png extension but other times with no extension at all). These images are possibly tied to textual files that describe how they should be interpreted, eg. for sprites and atlases.

Table of Contents

Mod Format

It is possible to provide a translation mod in two slightly different formats: using the [Import] feature of Memoria or using a mod folder.

Currently, most translation mods use the former format, relying on the [Import] feature, but the goal is to have all mods provided as mod folders: that latter format allows more compatibility with other mods and to be downloaded and installed automatically using Memoria's Mod Manager.

Except for the section "Creating a translation mod folder from an existing translation", this page refers to file formats and paths for mod folders.

Base language

Usually, a translation mod replaces the "English (US)" language (or sometimes "Japanese"). That choice has a small importance because:

  • The base language will not be available as long as the mod is activated.
  • A couple of images and sprites are shared by multiple languages, so the translation mod may affect other languages than the base language, depending on that one.
  • The cutscenes and scripts are actually slightly different depending on the language selected: for example, you don't win 10,000 gil in Japanese when doing a perfect score in the mini-game swordfight with Blank early game, unlike other languages. Small differences like that might be arguments in favor of choosing a language instead of another as the base language.
To be completed: language script differences

The base language is called {Lang} on this page. For example, it is US when the base language is "English (US)" or JP when the base language is "Japanese".

Using [Export] Translation

You can generate a mod folder for a translation mod by using the following option in Memoria.ini:

[Export]
Enabled = 1
Translation = 1

Contrary to the other options of this section, it only exports 1 language, the language that is currently selected in-game, and doesn't use the export Path defined in the section, but rather create a mod folder ExportedTranslation{Lang}/ directly inside the game's folder.

This option serves 2 purposes:

  • it can convert an already existing translation mod that uses the [Import] feature of Memoria into a mod using a mod folder,
  • it can generate the canvas for making a translation mod.
In order to convert an already existing translation mod, you just need to:
  1. Enable that mod thanks to the [Import] feature of Memoria (most likely, the mod requires Text and Graphics to be activated in that section).
  2. On the title screen in-game, select the language of the mod.
  3. Exit the game, activate the export of Translation (keep the [Import] part activated as well) and restart the game.
  4. Rename the mod folder ExportedTranslation{Lang}/ that has just been generated to a relevant name.
  5. Check the mod folder's content and compare it to the original translation mod's files: if there are things that are in the mod folder but not translated, you may either complete the translation or remove the files. On the other way around, if there are things in the original translation that were not exported to the mod folder, copy them to the mod folder (this most likely concerns the sprites and atlases that are not supported by Translation, see the section Translatable sprites).
In order to generate a canvas for making a translation mod, simply enable the option to generate the base files to be translated. Note that the files will be generated according to the other mods you have activated at that time: if a mod creates new items, their names and descriptions will also be exported in the files that need to be translated.

Concerning text files, they are generated twice in two different formats: the files in the sub-directory ExportedTranslation{Lang}/HadesWorshop/ don't require any translation as they are duplicates of text files found elsewhere as well (mostly as .mes). The text files in that sub-directory can be used:

  • to read the entries in a more convenient way than their counterparts in .mes format, as each entry is clearly separated from others,
  • possibly, the tool Hades Workshop will be able to import them in the future, which will make the preview of complex texts much easier, especially concerning text opcodes.

The different textual files

When possible, it is advised to use the tool Hades Workshop to generate these files, as that tool provides support for the text opcodes that can be used in these texts. For example, here is how one of Mogster's line:

[STRT=224,5][ICON=27]
[CENT=93][68C0D8][HSHD]-[FEED=2]Ability Status[FEED=2]-[C8C8C8][HSHD]
[YADD=9][FEED=2][ICON=244][YSUB=1]Ability Name:[XTAB=94]Not Equipped.
[YADD=9][FEED=2][ICON=189][YSUB=1]Ability Name:[XTAB=94]Equipped.
[XTAB=224][ENDN]
And that line is displayed like that in-game:

Field texts

These are the main batches of texts and dialogs that need to be translated. On top of cutscene dialogs, it also contains pretty much every text that appear on the screen in fields.

These texts are splitted in different files, for the different regions. There are 64 of them (63 for field texts and 1 for the World Map texts), all in the following folder:

  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Field/
These .mes files contains multiple text entries that all start with an opcode [STRT=...] and end with either [ENDN] or [TIME=...].

Battle texts

Battle text files contain the name of the enemies, of their abilities and possibly messages that can appear when fighting them. There are 562 of them, all in the following folder:

  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Battle/
Note that many of these are duplicates of each other, because the battles themselves are almost the same (for example, 901.mes, 902.mes and 903.mes are duplicates since they are the texts of the battles against Abadon, but 160.mes contains extra dialogs because it is the mini-boss battle against Abadon).

Much like field texts, these .mes files contains multiple text entries that all start with an opcode [STRT=...] and end with [ENDN].

Interface texts

There are multiple files containing different texts of the UI. Those that are in a text format are the followings:

  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Etc/Card.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Etc/CmdTitle.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Etc/FF9Choco.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Etc/Follow.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Etc/Libra.mes
  • {ModFolder}/StreamingAssets/Data/Text/LocalizationPatch.txt
.mes files contains a list of text entries that always end with [ENDN]. For example:
Chocograph[ENDN]Select[ENDN]Cancel[ENDN]Chooses from
acquired Chocographs.[ENDN]...

Follow.mes is a bit special because after the 8th entry, each text entry starts with a single-digit number that is not part of the text itself but determines the priority of that text: since there can only be 1 battle text displayed at a time, the message with highest priority will be the one displayed in case of conflicts. Best is to keep that digit untouched when translating that file.

LocalizationPatch.txt has a different format and contains many more entries: each line corresponds to one entry and is formatted as ENTRY_NAME,ENTRY_VALUE. The ENTRY_NAME must not be translated: it is the internal identifier for that text. Also, the entry value (that must be translated), can be wrapped inside quotes (") when required (for example when the text contains commas) and use \n in place of new lines.

That file has additional rules: it must start with the non-translated entries KEY and Symbol, eg.:

KEY,English(US)
Symbol,US
Also entries wrapped inside quotes can use double quotes when the text itself contains quotes, eg.:
CharacterProfile0,"Race: Tailed ""Human"", Genome\nGender: Male\nAge: 16\nDominant Hand: Right"
... will be displayed in-game like that:
Race: Tailed "Human", Genome
Gender: Male
Age: 16
Dominant Hand: Right
Also, some entries are not actual texts but rather sprite names that shouldn't be translated, but optionally changed to another sprite name. The entries in this situation are easy to spot: they use an underscore (_) in place of spaces. And finally, the special entry ReadingDirection is the reading direction of the language, which can be either Left_To_Right or Right_To_Left.

Databases

These files are in standard .mes format: each entry ends with [ENDN].

Card names

Card names can be found in the file:

  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Etc/Minista.mes

Location names

Field locations and world map area names can be found in the files:

  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Etc/WorldLoc.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Location/Loc_Name.mes

Abilities

Names and descriptions of the commands (Com), active abilities (AA) and supporting abilities (SA) can be found in the followings:

  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Command/Com_Name.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Command/Com_Help.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Ability/AA_Name.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Ability/AA_Help.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Ability/SA_Name.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Ability/SA_Help.mes

Items

Item names, descriptions and descriptions in battle can be found in the followings:

  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Item/Itm_Name.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Item/Itm_Help.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Item/Itm_Btl.mes
For key items, their names, descriptions and exposé can be found in the followings:
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/KeyItem/Imp_Name.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/KeyItem/Imp_Help.mes
  • {ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/KeyItem/Imp_Skin.mes

Party members names

The character default names can be defined in:

  • {ModFolder}/DictionaryPatch.txt
In the context of translation mods, that file allows to change the default names of party members. The party member names are sometimes changed directly by scripts, for example when controlling Zidane before naming him, the script changes his name to "???". That temporary (non-)name is in field text blocks instead, but the character default names are used otherwise (in particular for characters that cannot be renamed).

Example (when using the language US as the base language):

CharacterDefaultName 0 US Zidane
CharacterDefaultName 1 US Vivi
CharacterDefaultName 2 US Dagger
CharacterDefaultName 3 US Steiner
CharacterDefaultName 4 US Freya
CharacterDefaultName 5 US Quina
CharacterDefaultName 6 US Eiko
CharacterDefaultName 7 US Amarant
CharacterDefaultName 8 US Cinna
CharacterDefaultName 9 US Marcus
CharacterDefaultName 10 US Blank
CharacterDefaultName 11 US Beatrix

The different images

Even when the path of these images don't end with .png, you can use PNG files for these.

Place titles

Field titles

Field place titles, that appear when visiting a new place for the first time, are actually parts of the field backgrounds. In order to avoid modding the whole background for these, you can mod specific layers by providing .bgx text files:

  • {ModFolder}/StreamingAssets/Assets/Resources/FieldMaps/{Field Map Identifier}/{Field Map Identifier}.bgx
And these can define external .png as layers.

Most likely, these files should be generated by the option [Export] Translation so only the PNG files have to be modded.

Note that you may use that feature to also translate more complex layers containing texts, such as the map that can be looked at in different fields of the South Gate.

Continent titles

Continent titles appear on the World Map. They are separated images that have the following paths:

  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/title_world_mist_{Lang}
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/title_world_mist_shadow_{Lang}
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/title_world_outer_{Lang}
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/title_world_outer_shadow_{Lang}
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/title_world_lost_{Lang}
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/title_world_lost_shadow_{Lang}
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/title_world_forgotten_{Lang}
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/title_world_forgotten_shadow_{Lang}
You may also resize or reposition these continent titles by editing the following file:
  • {ModFolder}/StreamingAssets/Data/World/{Field Map Identifier}/Environment.txt

Character presentations

The character presentations there are the adjectives used to characterise them along with their personal quote, when waiting on the title screen. These have the following paths:

  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/Title_Image_{Num}_Text0
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/{Lang}/Title_Image_{Num}_Text1
with Num ranging from 00 to 07, which makes 16 of them (8 adjectives and 8 quotes).

Translatable sprites

The other images are image atlases containing textual sprites. They are thus better provided with a file .tpsheet that determines which sprites are modded and how they are lined up in the image.

The main atlases that contain translatable sprites have the following paths:

  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Atlas/Ending_Text_{LangGroup}_Atlas (the game's final words)
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Atlas/General Atlas (multiple interface captions, especially on the title screen)
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Atlas/TutorialUI Atlas (Tutorial texts)
  • {ModFolder}/FF9_Data/EmbeddedAsset/QuadMist/Atlas/QuadMist_Text_{Lang} (Tetra Master and Black Jack)
and their related .tpsheet, that can be edited manually with a text editor.

One could also wish to mod a couple of sprites in:

  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Atlas/Chocograph Atlas (the Choco abilities in the chocograph menu)
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Atlas/Icon Atlas (a couple of sprites such as "!New", the HP/MP/Lv captions or controller button captions...)
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/GameOver.png (the Game Over screen)
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/Logo.png (the title screen's light effect)
  • {ModFolder}/FF9_Data/EmbeddedAsset/UI/Sprites/Title_BG.png (the title screen)
although these are usually not translated even in the officially supported languages. Only the 4 atlases above are supported by the feature [Export] Translation. If you want to add translated sprites in Chocograph Atlas and so on, you'll need to write the .tpsheet manually for them (see there).