Configuring a translation repository
Repos come with their own configuration separate from Hachimi's user config to tweak their behaviour. This config is set by a repo's maintainers. If that's you, please read this page to understand the options.
The configuration file for a repo is in JSON format and goes in the localized_data folder. All paths in the config are relative to that folder.
Options
This page is not exhaustive. The full internal reprsentation of all available options can be found in the source code.
Localization file paths
"localize_dict": "path"
"hashed_dict": "path"
"text_data_dict": "path"
"character_system_text_dict": "path"
"race_jikkyo_comment_dict": "path"
"race_jikkyo_message_dict": "path"
"assets_dir": "path"These are the relative paths to files for each part of the translation system.
- The first two for general UI.
- The next four for MDB tables.
- The last one is the folder where all other localization files go. Namely, stories, lyrics, images, etc. Unlike the previous dicts, files in there are organized by their internal game paths.
Extra localization assets
"extra_asset_bundle": {
"windows": "path",
"android": "path"
}An optional dict which allows you to include a custom Unity AssetBundle which will be loaded into the game. Its keys are the supported platforms, and their values are paths to the bundle.
This bundle can include any files, but exact details on its workings are lacking at the moment. It is mainly used to include a custom font for use in localization, if required.
Creating this assetbundle requirs you to have a compatible version of the full Unity Editor installed, or find a third party tool.
"replacement_font_name": "path"The internal path inside the extra_asset_bundle to find a custom font, if needed.
Localized text functions
"plural_form": "n == 1 ? 0 : 1",
"ordinal_form": "(((n+9)%10)<3 && ((n+90)%100)>10) ? ((n+9)%10) : 3",
"ordinal_types": ["$st", "$nd", "$rd", "$th", "etc"]The first two are custom expressions that will be evaluated to detect plural and ordinal forms, for use with the $ordinal(n) and $plural(n, t0, t1) template expressions. In these expressions, n is usually a game text-variable like {0}. The expression decides which of the tx arguments to use for plural, and which of the ordinal_types for ordinal, based on the value of n.
Both are optional. Example is the default for English. Details in the source code.
"months": ["month 1", "month 2", "etc"],
"month_text_format": "$(half) $(month)"How to format months. The first one is an array where each entry represents a month. The second is the string used in some parts of the game which display a month half, like for Career "turns". Not sure if it's actually used.
Text wrapping
"use_text_wrapper": trueBoolean to enable custom text wrapping or let the game handle it. The other options in this section will not apply when it is set to false.
"wrapper_penalties": {
"nline_penalty": 0,
"overflow_penalty": 0,
"short_last_line_fraction": 0,
"short_last_line_penalty": 0,
"hyphen_penalty": 0
}An optional dict indicating the pentalties used in the optimal-fit wrapping algorithm. When used, all penalties should be configured.
See the simple example for a basic idea of how it works, and Penalties for further details and settings.
"line_width_multiplier": 2.0The game's internal line width is set in CJK unicode characters, where each is usually roughly 2 ASCII characters. This setting applies globally to offset this, where needed for custom wrapping calculations (not applied everywhere).
"text_frame_line_spacing_multiplier": 0.72,
"text_frame_font_size_multiplier": 0.96Multipliers applied to the text frame/box settings. This is used primarily for story dialogue.
"systext_cue_lines": {
"type": 1,
"...": 2
}An optional dict indicating maximum amount of lines per type of systext.
Its keys are the "type" found in the MDB table's cue_sheet column: "snd_vo_TYPE_". Its values are the max lines for that type. A "default" key can also be specified, which will be used when no other type matches. If not specified, the default is 4.
"skill_formatting": {
"name_length": 18,
"desc_length": 18,
"name_short_lines": 1,
"name_short_mult": 1.0,
"name_sp_mult": 1.0
}Custom line lengths for skills specifically. Used anywhere skills are displayed.
Values given as game-internal (pre-multiplied). Each value is optional, as is the dict itself.
Shortrefers to skills displayed in a double list without description, like a horsegirl's info screen.SPrefers to when skill points are rendered next to the name, as in upgrades.
Extra functions
"auto_adjust_story_clip_length": trueAllow adjusting interal values to match localized text length. Affects dialogue delay/reading time in auto mode.
"now_loading_comic_title_ellipsis": true,Trail off comic titles instead of resizing them to fit (?).
"remove_ruby": trueHide the game's furigana. Should likely be on in localization repos.
"character_note_top_gallery_button": {
"text": "Career Event\n Gallery",
"font_size": 38,
"line_spacing": 0.6
},
"character_note_top_talk_gallery_button": {
"text": " Chat\n Gallery",
"font_size": 44,
"line_spacing": 0.55
}Special settings for some non-standard elements that cause issues otherwise. Additions can be requested if other such elements are found.
"news_url": "https://hachimi.leadrdrk.com/PakaNews/"A URL to open or fetch in-game news from. Requires a specially set up source to provide localized news from the official website.
