asideDocs
Documentation

How to use Aside

Everything you need for your first translation, and a reference to come back to. Aside is in final testing, so a few screens can still change before the first release.

1Install Aside

Aside is a desktop app for Windows. The installer puts it in your user folder, so it needs no administrator rights and does not touch other users of the computer.

  1. Download Aside_<version>_x64-setup.exe and, if you like, compare its SHA-256 checksum with the one published next to it.
  2. Run it. Windows SmartScreen may say "Windows protected your PC": choose More info, then Run anyway.
  3. Start Aside from the Start menu. Your settings live in %APPDATA%\Aside.

The warning appears because the first builds are not code-signed yet. It goes away once Aside has a signing certificate.

2Open a translation

Aside works with the translation files Ren'Py uses: the .rpy files in game/tl/<language>/. Choose the folder of your language, or the game folder itself, and Aside finds the translation inside it.

# a typical game
MyGame/
  game/
    script.rpy, ep1.rpy ...      ← read only
    tl/
      czech/                     ← your translation, opened in Aside
        script.rpy, ep1.rpy ...
        .aside/                  ← Aside's small project folder

The tabs along the top are the whole app: Overview (how far you are), Files, Lines (the editor), Check, Glossary, Publishing and Settings.

No tl folder yet? The game has to be prepared first, so that Ren'Py writes the translation files. See the next section.

3Prepare a built game

A released game usually ships its scripts packed and compiled. To get translation files, Aside goes three steps, all inside a separate workspace folder:

  1. Unpack the .rpa archives (built in).
  2. Decompile the .rpyc scripts with unrpyc, on a copy.
  3. Generate game/tl/<language> with the game's own Ren'Py engine, exactly what renpy translate does.

The game folder is only read. An existing language folder is never overwritten, and the last step asks before it writes the new one.

The "prepare a game" window comes with the first public release. Until then, a game that already has its translation files opens directly.

4Translate and proofread

The Lines tab is a table of every line with its file, speaker, state and original. Pick a line and edit its translation below. Filters along the top narrow the table: to translate, translated, for proofreading, to fix, changed after proofreading, proofread.

  • Save with Ctrl+Enter. The text goes straight into the .rpy file, and Aside jumps to the next untranslated line.
  • Insert buttons add {i}…{/i}, {b}, {w}, {p}, {nw}, \n, an ellipsis or typographic quotes at the cursor.
  • Search with Ctrl+F; switch on Whole word to skip partial matches. With a search active you see "result 3 of 16" and move with the arrow keys.
  • Quick translating and quick proofreading show the scene and the editor together, with only the lines you still need.

Write a new line as \n and a quote inside the text as \". Keep tags and [variables] as in the original; the checks tell you when they differ.

5Keyboard shortcuts

Press ? in the app for this list. Every shortcut can be changed in Settings → Keyboard shortcuts, and every action can be found in the command palette.

KeysAction
Ctrl+EnterIn the translation field: save to the file and go to the next untranslated line
EscIn the translation field: discard the changes
Ctrl+KCommand palette: search actions and files
Ctrl+F or /Search in the current section
Ctrl+ZUndo the last approval, proofreading mark or glossary change
F5 or Ctrl+RRefresh the files
Ctrl+Shift+FFocus mode: hide the top bar and the tabs
F11Full screen
?Show the shortcuts

6The checks

Every translation is compared with its original. The Check tab lists all findings of the project, one item per line, and nothing is ever rewritten by itself.

  • Error Ren'Py would probably crash, or the structure of the script is broken.
  • Warning Suspicious, but it may be intended (a translation can drop an italic tag on purpose).
CheckWhat it catches
Text tagsA tag that is not closed, closed in the wrong order, missing, extra, unknown, or with a different argument than in the original.
VariablesA [variable] that is not in the original (a typo crashes the game), one that is missing, differs or occurs a different number of times.
Format marksPlaceholders and % marks that differ from the original.
Line breaks and escapesA different number of \n, or a lone backslash that is not a valid escape.
NumbersNumbers that differ from the original.
Spacing and repeatsDouble spaces and the same word twice in a row.
Untranslated partsEnglish words left in a translated line.
Glossary termsA term whose glossary translation does not appear in the line.
LengthA translation much longer or much shorter than its original.
Dialogue box fitText that probably needs more lines than the box holds, measured with the game's font. Shorten it, or split it with a tag.

A finding you have checked and want to keep can be ignored; it stays ignored until the line changes. Language packs add rules of your language, for example typographic quotes in Czech.

7Groups and progress

Every line has a state (to translate, translated, proofread) and the Overview adds them up per file and per group: what is left, how much is proofread, a weekly goal and, after a week of work, an estimate of when you finish.

Groups are found for you

Open Files → Groups… and Aside proposes groups from the file names:

  • numbers after episode, ep, chapter, part, day, update or act (ep1_cafe.rpy, chapter_03/);
  • a numbered series such as script.rpy, script2.rpy, script3.rpy;
  • one group per folder, for games organised by folder.

The word you choose is used everywhere, so the app says "Chapter 3" instead of "Episode 3". The choice is saved in .aside/aside.json.

8Glossary

The Glossary tab holds the names of characters and the terms of the game with their translations. Character names can be imported from the game's Character(...) definitions. Every line is checked for the terms it contains, so a name or a place never changes halfway through the game.

Spelling hints come from your own project: a word that appears rarely and looks like a common one is flagged. That works for any language, without a dictionary.

9Scene preview

Next to the line, Aside draws the picture the player sees: it follows the script back to the last scene and adds every picture shown since, at its place, with the text in the game's font.

Full-screen renders and scenes: fully supported. Games whose scenes are whole pictures preview well. In the tests, five of eight games had at most 3 lines without a picture in a sample of 250.

Layered images: not supported yet. Pictures built from parts (layeredimage, composites, conditional images) are recognised and never drawn wrong. A layered character on a background shows the background with a note; a layered scene shows no picture and says why.

Why it is hard: a full-screen render is one finished picture, the same in every game. A layered picture is put together while the game runs, and every developer builds it differently: their own attributes and groups, conditions on variables (an outfit, a mood, the time of day), Python code, screens and transforms. To draw it right, Aside would have to run the game's logic at that exact moment. Support is planned step by step, starting with the common layeredimage patterns; until then Aside shows nothing rather than a wrong picture.

The preview is an estimate from the script, not a screenshot: jumps, conditions and animations are not followed, and the frames of the text box and name box can look different in the game. When the game's font cannot be found, a substitute is used and the preview tells you.

11Missed texts

The Ren'Py generator does not see every text: show text, input prompts, notifications and titles kept in variables stay in English. Tools → Texts the generator missed… lists them, split into likely and maybe.

  • Tick the texts the player sees and add them. They go to extra_strings.rpy as lines to translate.
  • Untick or ignore texts the player never sees, such as a build name.
  • If the game shows text through its own function, add the function name, or use Find functions….

This feature is experimental. It is a heuristic that can be wrong both ways, so always review the list.

12Machine translation

Aside can suggest a translation for one line with DeepL, LibreTranslate or any OpenAI-compatible service. You bring your own account and key.

  1. Open Settings → Machine translation, pick the service and paste the key.
  2. Give your consent to send text to that service. Without it nothing is sent.
  3. In the editor, ask for a suggestion, then check and edit it like any other line.

Tags and variables are protected before the text is sent. The request goes straight from your computer to the service, never through an Aside server. The key is stored only in your settings on this computer.

13Data, backups and privacy

Aside writes in two places only:

WhereWhat
game/tl/<language>/Your translation files, edited in place.
game/tl/<language>/.aside/Small shared project files: groups, glossary, proofreading marks, one change log per author.
%APPDATA%\Aside\projects\<id>\Local data: backups, snapshots, the history of each line, exported progress.
  • Every write is atomic and backed up first, so a crash or a full disk cannot leave a half-written file.
  • Snapshots let you return the whole translation to an earlier state.
  • History keeps every version of every line, with a diff.

What leaves your computer

No telemetry, no analytics, no crash reports. Nothing about your projects goes to Aside. Data leaves only for machine translation you turned on, the Pro licence check (the key, a random device id and the computer name you typed), and Pro publishing to a repository you chose.

14Working in a team

Put the translation folder in a shared place (git, Dropbox, Syncthing). Each person's changes of state go to their own log in .aside/events/, and the logs are merged when the project is opened or refreshed, so they never conflict. Split the work by giving each person different files or episodes.

Proper team features (assignments, translator and proofreader roles, merging edits per block, buttons instead of git) are planned for Pro.

15Pro and the licence

Pro adds batch machine translation, safe bulk fixes, group suggestions, regex batches and publishing your progress. In Free the first three work on a small batch per run (20 lines, or 5 files for group suggestions), so you can try them on your project.

  1. Buy a licence. The key comes by e-mail.
  2. Enter it in Settings → Licence. The limits lift at once.
  3. Use it on two computers. To move to a new one, free the old one in the same place.

Aside checks the licence online from time to time and keeps working offline for a grace period. If a licence is cancelled, only Pro switches off: your projects and everything in Free keep working.

16Troubleshooting

Windows says it protected my PC

Choose More info → Run anyway. The first builds are not code-signed.

The game opens, but there are no lines

The game has no translation files yet. Prepare it first, so that game/tl/<language> exists.

The scene preview shows no picture

The scene is probably built from layered images. Each game builds those in its own way while it runs, so they are not drawn yet (see Scene preview). The note under the preview says so.

The Menu tab is missing

Menus are read from .rpy scripts. A game that has only .rpyc files has to be decompiled first.

Machine translation says consent is missing

Turn on the consent in Settings → Machine translation.

Still stuck?Write to the author, usually answered within a few days.
Contact