Provide a translation for this mod
So how to translate this mod ?
🆕 2024/01/03: translations for this mod are now provided along audio files in Audioware, so the process described below is quite outdated: please contact me directly if you want to make a translation for Addicted.
Before we start I assume that you:
- have an account on Github
- know how to use both Git and Github
- forked this repo
- created a new branch
e.g. for French
translate/fr-fr
- made your changes over there
- opened a pull request once finished (or a draft pull request if it's not but you would like to review it together first).
Onscreens
⚙️ ArchiveXL
The first file to translate is archive/source/raw/addicted/localization/en-us.json.json.
contains all the native texts displayed in UI.
- duplicate it alongside and name it by your locale (available locales can be found there).
- e.g. for French, rename it into:
fr-fr.json.json
. - filename contains
.json
twice when exported from WolvenKit, leave it this way.
- e.g. for French, rename it into:
- translate every
femaleVariant
into your own language:- if your language has gender-based variants, do not omit to translate
maleVariant
too. - when the sentence is not gender-based, simply specify
femaleVariant
and letmaleVariant
empty (femaleVariant
is the default fallback whenmaleVariant
is left unspecified).
- if your language has gender-based variants, do not omit to translate
Then, update archive/source/resources/Addicted.archive.xl to add the file you previously created.
e.g. for French:
localization:
onscreens:
en-us: addicted\localization\en-us.json
fr-fr: addicted\localization\fr-fr.json # add this line
Subtitles
⚙️ Codeware
The second file to translate is located under scripts/Addicted/i18n/English.reds.
contains all the subtitles for voiced dialog lines.
⚠️ you only need to translate the rightmost part of this.Subtitle(...)
, leaving the leftmost untouched.
Also rename the class by your own language.
e.g. for French:
module Addicted.Localization
import Codeware.Localization.*
public class French extends ModLocalizationPackage {
protected func DefineSubtitles() -> Void {
// snake case suffixes must match entries in info.json (custom sounds)
this.Subtitle("Addicted-Voice-Subtitle-biomon", "Biomon...");
this.Subtitle("Addicted-Voice-Subtitle-as_if_I_didnt_know_already", "Comme si j'étais pas au courant...");
// so on and so forth ...
}
}
Vanilla voices
⚒️ WolvenKit ⚙️ REDmod
In the next steps we're gonna re-export some vanilla voices used.
this mod also reuse vanilla voiced dialog lines.
- open WolvenKit
- locate each
.wem
file found under archive/source/customSounds/vanilla/en-us by its name (minus.Wav
) in WolvenKit's Assets browser - export them all with WolvenKit's Export tool (do not forget to set export settings to
Wav
for each file) under subfolder in archive/source/customSounds/vanilla, named after your own language.- e.g. for French in
archive/source/customSounds/vanilla/fr-fr
- e.g. for French in
AI-generated custom voices
⚒️ WolvenKit + ElevenLabs ⚙️ REDmod
In the next steps we're gonna train ElevenLabs with a specific set of vanilla voices, then generate dialog for each of the subtitles previously translated.
💡 I'm aware that you might not be willing to get an account on ElevenLabs so you can also zip me all the files below once exported and let me do it on your behalf.
The custom dialog lines to translate are located under archive/source/customSounds/en-us.
contains all the voiced custom dialog lines.
There's one folder for each of the "mood" that V might be into:
-
disheartened
: these samples are used when biomonitor already reported serious addiction symptoms to V multiple times while V is severely addict.V can end up disheartened when biomonitor reports his/her condition repeatedly and (s)he has clearly crossed the line.
-
offhanded
: these samples are used when biomonitor already reported serious addiction symptoms to V multiple times while V is only notably addict.V can sometimes acts offhanded when biomonitor reports his/her condition but (s)he doesn't really give a damn.
-
pestered
: these samples are used when biomonitor is dismissed by V while in combat.V can obviously be pestered when biomonitor unexpectedly pops up during combat.
-
surprised
: these samples are used when biomonitor reports addiction symptoms to V only for a couple of times.V can be surprised when biomonitor starts showing up from time to time.
⚠️ for example, when generating sample for archive/source/customSounds/en-us/surprised/fem_v_coa_03.wav
under archive/source/customSounds/en-us/surprised, you should regenerate in ElevenLabs until you get the sentence pronounced as if V was surprised. Not doing so defeats the purpose of adding custom voicing.
-
make sure to have an account on ElevenLabs
-
locate and export each of these
.wem
as previously: ℹ️ using same exact samples set increases chances of having more "homogeneous sounding" across different languagesclick to see which ones
v_scene_aaron_mccarlson_default_f_1b6ed94ce5559000
v_scene_aaron_mccarlson_default_f_1b77e03246559000
v_scene_benedict_mcadams_default_f_1b1b1ce0be2c5000
v_scene_claire_default_f_1b0c1373382b6000
v_scene_dakota_smith_defaut_f_1ad786e65246b000
v_scene_dakota_smith_defaut_f_1b30dc13f92ef000
v_scene_dakota_smith_defaut_f_1936caecd649d000
v_scene_dakota_smith_defaut_f_1936cf055549d000
v_scene_dan_default_f_1b1bed3cac29f000
v_scene_delamain_default_f_1b3f1d1f6b386000
v_scene_delamain_default_f_182ac718234ea000
v_scene_dex_default_f_1b2f30a75929f000
v_scene_dex_default_f_182ad40c364ea000
v_scene_jackie_default_f_1b2f97e30c2c5004
v_scene_jackie_default_f_1b2f687cef2c5000
v_scene_jackie_default_f_1b2fa81c242c5000
v_scene_jackie_default_f_1b2fa2734c2c5000
v_scene_jackie_default_f_1b2fae69a12c5000
v_scene_jackie_default_f_1b2fb2c5892c5000
v_scene_jackie_default_f_1b2fb6a25c2c5000
v_scene_jackie_default_f_1b2fb479f32c5000
v_scene_jackie_default_f_1b2fc8db0d2c5000
v_scene_jackie_default_f_1b302c10c12c5000
v_scene_wakako_okada_default_f_1b68a843092b6000
v_scenes_f_1a7c32d2e947a000
-
feed them to ElevenLabs under
VoiceLab
click on+ Add voice
⚠️ a premium membership is required (5$/month)- save your cloned voice, for example
Female V
- save your cloned voice, for example
-
create a folder
-
go to
Speech synthesis
- select the voice previously created
- set
Voice settings
to:Stability
: 35%Clarity + Similarity Enhancement
: 90%
- repeat this process for each of the subtitle:
- generate
- compare it with original english version
- if it sounds good and similar in tone, save it e.g. if in the original audio V sounds disheartened, in your own language (s)he should sounds similar too, otherwise it will break player's immersion.
- do not forget to place it under the same folder structure,
- otherwise repeat the generation process.
-
repeat same process for both male and female V
-
update archive/source/resources/info.json to add one entry for each of the original one for English modified as per your locale. e.g. for French
JSON"customSounds": [ // e.g. this points to vanilla sound file { "name": "addicted.fr-fr.fem_v_ono_hhuh", "type": "mod_sfx_2d", "file": "vanilla/fr-fr/v_q113_f_1956c7fde04e1000.Wav", "gain": 1.0, "pitch": 0.0 }, // e.g. while this points to custom AI-generated file { "name": "addicted.fr-fr.fem_v_damn_thats_fucked_up", "type": "mod_sfx_2d", "file": "fr-fr/surprised/fem_v_dtfu.wav", "gain": 1.0, "pitch": 0.0 }, // more definitions ... ]