12 Adding a translation
requinDr edited this page 2026-05-26 14:40:08 +02:00

Guidelines

  • No UI translation without VN translation. But the reverse is possible.
  • VN translation should be complete
  • If still actives, the authors of the translation should grant permission for their translation to be used
  • Assets aren't provided on this repo, only json files

Note

You made a translation and wan't to make it available but don't know how? Please open an issue

How to add a translation

Here is the general structure of a translation folder:

.
└── static/
    └── en-mm/
        ├── game.json
        ├── lang.json
        ├── fullscript_en-mm.txt
        ├── images/
        │   └── tachi/
        │       └── osiete.webp
        └── scenes/
            ├── s016.txt
            ├── s017.txt
            └── ...

Required for a PR:

  • en-mm/: folder named with the translation id. Sould be prefixed by two letters for the language, a - and then the author.
  • game.json: contains the translation for game related translation (scenes title arc.nsa -> image/word, credits).
  • lang.json: translation for the web UI. Can also specify the assets to overwrite (more about that at the end of the page).
  • fullscript_en-mm.txt: the source of the translation.

Optional:

  • images/: two times upscaled images (existing assets have been upscaled using waifu2x).

Not wanted for a PR:

  • scenes: all translated scenes. They are easily obtained by automatically splitting the full script (make sure it's in UTF-8!) using tools/script-convert.

Make the translation visible by the app

Edit public/static/languages.json and add something like this:

  "it-riffour": {
    "locale": "it-IT",
    "display-name": "Italiano",
    "authors": "Riffour",
    "dir": "it-riffour",
    "last-update": "2024-03-23",
    "fallback": "en-mm"
  }
  • locale: the locale of the translation. List of locales
  • display-name: the language name, in its native language.
  • authors: specify the name of the amazing group or person that made the translation. Should be kept short.
  • dir: the name of your translation directory (in latin, non accentuated characters).
  • last-update: change it to refresh the browser cache if needed.
  • fallback: Optional, for latin translation you probably wan't to fallback to a language like english when something is missing, rather than Japanese.

Note: to test a local language you might need to remove the proxy in vite.config.ts. Also clear the languages key in the browser local storage or open in a private tab.

What files should be included in your PR

    └── en-mm/
        ├── game.json
        ├── lang.json
        └── fullscript_en-mm.txt
    └── languages.json

You can see that instead of the generated scenes used by the game, we are asking for their source as fullscript_folder-name.txt. By doing so we are able to update the scenes by ourselves if changes are made on the preprocessing.

Note

Usually the only overwritten image is tachi/osiete.jpg. Due to the work it requires (masking, upscaling and conversion), you can attach the file in the PR conversation and we will take care of it