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:

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.

  1. 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.
  2. 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 let maleVariant empty (femaleVariant is the default fallback when maleVariant is left unspecified).

Then, update archive/source/resources/Addicted.archive.xl to add the file you previously created.

e.g. for French:

  YAML
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:

  Redscript
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.

  1. open WolvenKit
  2. locate each .wem file found under archive/source/customSounds/vanilla/en-us by its name (minus .Wav) in WolvenKit's Assets browser
  3. 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

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.

  1. make sure to have an account on ElevenLabs

  2. locate and export each of these .wem as previously: ℹ️ using same exact samples set increases chances of having more "homogeneous sounding" across different languages

    click to see which ones
    1. v_scene_aaron_mccarlson_default_f_1b6ed94ce5559000
    2. v_scene_aaron_mccarlson_default_f_1b77e03246559000
    3. v_scene_benedict_mcadams_default_f_1b1b1ce0be2c5000
    4. v_scene_claire_default_f_1b0c1373382b6000
    5. v_scene_dakota_smith_defaut_f_1ad786e65246b000
    6. v_scene_dakota_smith_defaut_f_1b30dc13f92ef000
    7. v_scene_dakota_smith_defaut_f_1936caecd649d000
    8. v_scene_dakota_smith_defaut_f_1936cf055549d000
    9. v_scene_dan_default_f_1b1bed3cac29f000
    10. v_scene_delamain_default_f_1b3f1d1f6b386000
    11. v_scene_delamain_default_f_182ac718234ea000
    12. v_scene_dex_default_f_1b2f30a75929f000
    13. v_scene_dex_default_f_182ad40c364ea000
    14. v_scene_jackie_default_f_1b2f97e30c2c5004
    15. v_scene_jackie_default_f_1b2f687cef2c5000
    16. v_scene_jackie_default_f_1b2fa81c242c5000
    17. v_scene_jackie_default_f_1b2fa2734c2c5000
    18. v_scene_jackie_default_f_1b2fae69a12c5000
    19. v_scene_jackie_default_f_1b2fb2c5892c5000
    20. v_scene_jackie_default_f_1b2fb6a25c2c5000
    21. v_scene_jackie_default_f_1b2fb479f32c5000
    22. v_scene_jackie_default_f_1b2fc8db0d2c5000
    23. v_scene_jackie_default_f_1b302c10c12c5000
    24. v_scene_wakako_okada_default_f_1b68a843092b6000
    25. v_scenes_f_1a7c32d2e947a000
  3. 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
  4. create a folder

  5. 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.
  6. repeat same process for both male and female V

  7. 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 ...
      ]