-
Notifications
You must be signed in to change notification settings - Fork 50
Translation mods
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:
- 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. - 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.
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.
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.
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".
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.
- Enable that mod thanks to the
[Import]
feature of Memoria (most likely, the mod requiresText
andGraphics
to be activated in that section). - On the title screen in-game, select the language of the mod.
- Exit the game, activate the export of
Translation
(keep the[Import]
part activated as well) and restart the game. - Rename the mod folder
ExportedTranslation{Lang}/
that has just been generated to a relevant name. - 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).
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.
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:
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/
.mes
files contains multiple text entries that all start with an opcode [STRT=...]
and end with either [ENDN]
or [TIME=...]
.
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/
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]
.
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,USAlso 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: RightAlso, 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
.
These files are in standard .mes
format: each entry ends with [ENDN]
.
Card names can be found in the file:
{ModFolder}/FF9_Data/EmbeddedAsset/Text/{Lang}/Etc/Minista.mes
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
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
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
{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
The character default names can be defined in:
{ModFolder}/DictionaryPatch.txt
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
Even when the path of these images don't end with .png
, you can use PNG files for these.
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
.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 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}
{ModFolder}/StreamingAssets/Data/World/{Field Map Identifier}/Environment.txt
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
Num
ranging from 00
to 07
, which makes 16 of them (8 adjectives and 8 quotes).
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)
.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)
[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).