Touhou Patch Center:Tutorial

Since translators are by far the most important people in this fandom, we made the process as simple as possible.

Register/Logging in
If you already have an account, skip to step two. (or click the hyperlink)
 * 1) First, [ create an account] by going towards the top right link (or clicking the hyperlink).
 * 1) Log into your account with your username and password which will be located in the same place the registration was.

Changing the site language
The language of the site interface automatically defaults to the preferred content language set in your browser settings. This setting is also used to set the initial target language in the translation menu. Thus, we recommend changing it to the language you want to translate into - this way, you won't accidentally overwrite existing translations for another language.

To change this setting, click the Language Selector (the button at the top of the page) and enter the native name of your language, or its ISO 639-1 code.

This setting is stored as a cookie and saved to your user account if you're logged in.

Starting a translation into a language not yet on the site
Most of the time, this is no problem. Just select the language like you normally would, and the administration will create the necessary links and portal pages for integration into the Touhou Community Reliant Automatic Patcher shortly after.

In case your desired language is not present in the list, simply leave a message on the main talk page. Setting up a new language is a very quick process.

Editing text translations
On the right, you can see the list of translatable games, their progress in the respective languages, and whether they are finished.
 * 1) Go to the main page which can accessed from any page by clicking the logo.
 * 2) Choose a game you wish to translate.
 * 1) Choose a piece of translatable content you want to work on.
 * 2) Click on the small  label at the top of that page.  If you already are on a translated page, it will instead say""  In that case, the first link will bring you to the translation interface and pre-select the page's language.
 * 3) Verify that the language selector indicates the correct language you want to translate into. The selected language is further reflected with its corresponding flag between the source and translated text,
 * 4) Click the table rows and enter your translation.
 * 5) Hit.
 * 6) Then, just follow steps 6 + 7 for the remainder of the boxes.

Things to know

 * If you're translating from another translation (most likely English), be sure to add the wiki page of this translation to your watchlist by clicking the star next to the search bar on the top. This will send you a notification whenever something has been changed and needs to be reflected in your language.
 * If any text of an existing translation (again, most likely English) would not change in your translation, leave the respective box empty and don't copy-paste the text. This way, everyone can take full advantage of patch stacking.
 * If you're translating in a group, you can make use of the proofreading feature offered by the translation interface:
 * A white proofread icon (✔) will appear for any translation unit that was last edited by another translator.
 * By clicking it, you indicate that you have proofread this translation and agree with it.
 * Proof-read translation units will be highlighted in green, and removed from the Unreviewed view.
 * If a translation changes, any previous proofread markers will be automatically removed.
 * Refer to your language's portal page for stylistic guidelines.

Dialog

 * Line breaks are never done automatically. It's up to you to make sure that the text fits into the dialog box.
 * You can always use a maximum of two lines for every message box, even if there is only one line in the original. The opposite is also true. We went to great lengths to make this possible, so please do make use of this. ☺

Endings
Since these do not show up in replays, the patcher can provide an unlimited amount of text lines here.


 * There can always be a maximum of 5 lines at the screen at any time.
 * For, , , and , automatic line breaks are inserted in case the line doesn't fit.
 * Trying to print a 6th line these games will also insert a wait instruction and page break.
 * Trying to print a 6th line and later automatically clears all lines and displays the new one in the first line. No wait instruction is inserted when this happens - anything in that translation segment before this new first line will effectively not be visible.

Character name translations are automatically taken from the [ respective translation group].

Editing graphics
Compared to the simple translation of plain text, multilingual image translation requires a rather involved workflow:
 * (Optimally, the original text should be transcribed first.)
 * A basic image editing project needs to be created, erasing the original text, recreating possible backgrounds and selecting appropriate fonts.
 * The required fonts should be noted down so that the editors for other languages can obtain them.
 * The original text needs to be translated.
 * Finally, the translated text needs to be edited into the base image, taking possible sprite boundary limits imposed by the game into account. (As of now, we couldn't change those limits without including the whole ANM file with all its original uncompressed image data, which would unnecessarily bloat the size of the patches.)

Fonts
Fonts should ideally have a sufficiently large Unicode coverage so that the same template can be used across multiple languages.

Unfortunately, the most appropriate fonts often happen to have a rather limited coverage - and finding one that looks similar and has a wider coverage can be an arduous, if not impossible task.


 * Hence, you don't need to care about this for any other language than your own (but other translators would certainly appreciate it if you did).

A consistent appearance across the languages would surely be nice thing to have, but this is not a requirement or official policy - each language is still free to choose whatever fonts the editors prefer.

If you do care, here's a test string with characters from some of our active languages which might be problematic, for your convenience:

ÁÉÍÓÚÀÈÌÒÙÂÊÄËÏÖÜÃÑÕŐŰĂĔĞÆŒÅĄĘĖİÇČĢŁŇØŘŞȘŠẞȚÞŻŽ áéíóúàèìòùâêäëïöüãñõőűăĕğæœåąęėiçčģłňøřşșšßțþżž ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ αβγδεζηθικλμνξοπρστυφχψω АБВГДЕЖЗИЙКЛМНОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ абвгдежзийклмноөпрстуүфхцчшщъыьэюя « » “ ” ‘ ’ “ „ … ¿ ? ¡ !

Efficiently testing translations in-game
Select the skipgame patch in addition to your translation to remove all gameplay sections and reduce spell cards to a few seconds. This leaves only the dialogue and spell card names and allows you to quickly proofread everything without spending time on dodging bullets.

The separate instant_ending allows you to access all endings by making one single gameplay choice in one stage.

Editing Music
Follow the tutorial here.

In-game TL notes
In Team Shanghai Alice games, these can be inserted basically anywhere text is rendered, using the tlnote template; check that page for details. Currently not supported for Tasofro games, so don't use the template on their pages!

Italics and bold formatting is not supported, but you could try a Unicode boldness generator for A-Z.

Advanced configuration either in global.js (for all games),  (for a specific game), or in your runconfig: {   "tlnotes": { "reference_resolution": [1280, 960], // Valid for all games, even the 640×480 ones. Font and region size are relative to this one. You typically don't need to change this. "region_topleft": [x, y], "region_size": [width, height], "read_speed": 35, // In UTF-8 bytes per second; determines the scrolling speed of longer TL notes that exceed the size of the region. Higher is faster. "fade_ms": 500, // Fade-in speed. "valign": "top" | "center" | "bottom", // Vertical alignment for notes that are shorter than the height of the TL note region. Default is "bottom". "font": "'MS Gothic' 32 0 400 DEFAULT_QUALITY", // Using the same font syntax used for fontrules, explained in https://github.com/thpatch/thcrap/blob/23fd91a/thcrap/src/textdisp.h. Also subject to those same replacement rules. "outline_radius": 2, // Capped at 15, because it's drawn on the CPU and actually not that fast, and everything larger just *really* looks bad. } }

To disable TL notes completely, simply add  before the last } of your configuration file, created by thcrap_configure.