Touhou Patch Center:Tutorial

From Touhou Patch Center
Jump to navigation Jump to search
Project overview
About Tutorial FAQ Download Patch servers github.png Bug tracker Wiki security

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

Register/Logging in

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

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, send a message on our Discord server in the #translation channel, and ping the @Webmaster role. Setting up a new language is a very quick process.

Editing text translations

Games Supported Languages with >95% coverage Languages started & in progress
Icon th06.png TH06 Embodiment of Scarlet Devil Arabic Azerbaijani Bulgarian Chechen German Greek English British English Google Translate English Literal English Esperanto Spanish Argentine Spanish French Croatian Hungarian Indonesian Italian Korean Polish Portuguese Brazilian Portuguese Brazilian Portuguese troll translations Romanian Russian Sakha Bukvalni Srpski Thai Tagalog Ukrainian Vietnamese Simplified Chinese Traditional Chinese Scots Czech 4Kids English Troll translations Yorkshire English Finnish French troll translations Français québécois (familier oral) Luxembourgish Malay Norwegian Bokmål Dutch Serbian Swedish Toki Pona Turkish Tiếng Việt (THVNFB translation)
Icon th07.png TH07 Perfect Cherry Blossom Arabic Bulgarian German Greek English British English Google Translate English Esperanto Spanish Argentine Spanish Hindi Croatian Hungarian Indonesian Italian Korean Russian Polish Brazilian Portuguese Brazilian Portuguese troll translations Thai Ukrainian Vietnamese Simplified Chinese Traditional Chinese Azerbaijani Czech 4Kids English Literal English Troll translations Yorkshire English Persian Finnish French Luxembourgish Macedonian Norwegian Bokmål Romanian Portuguese Scots Serbian Bukvalni Srpski Swedish Toki Pona Turkish Tiếng Việt (THVNFB translation)
Icon th075.png TH07.5 Immaterial and Missing Power Russian Simplified Chinese Traditional Chinese
Icon th08.png TH08 Imperishable Night Arabic Bulgarian German English British English Google Translate English Spanish Hindi Hungarian Italian Korean Polish Brazilian Portuguese Russian Thai Vietnamese Simplified Chinese Azerbaijani Greek 4Kids English Finnish French Indonesian Luxembourgish Dutch Portuguese Swedish Serbian Bukvalni Srpski Tagalog Ukrainian Traditional Chinese
Icon th09.png TH09 Phantasmagoria of Flower View Arabic German English British English French Hindi Hungarian Korean Polish Thai Simplified Chinese Traditional Chinese 4Kids English Literal English Spanish Indonesian Italian Luxembourgish Brazilian Portuguese Russian Bukvalni Srpski Swedish Ukrainian Tiếng Việt (THVNFB translation)
Icon th095.png TH09.5 Shoot the Bullet Arabic German English British English French Hindi Indonesian Korean Polish Thai Russian Simplified Chinese Traditional Chinese Chechen 4Kids English Spanish Italian Lojban Dutch Brazilian Portuguese
Icon th10.png TH10 Mountain of Faith Arabic Bulgarian Czech German English British English Google Translate English Esperanto Spanish Hindi Hungarian Indonesian Italian Korean Polish Portuguese Brazilian Portuguese Russian Thai Vietnamese Simplified Chinese Traditional Chinese 4Kids English Greek Finnish French Luxembourgish Dutch Romanian Swedish Ukrainian
Icon alcostg.png UB Uwabami Breakers German English British English Yorkshire English Spanish Finnish Indonesian Italian Korean Simplified Chinese Luxembourgish Malay Traditional Chinese
Icon th105.png TH10.5 Scarlet Weather Rhapsody German English Polish Russian Thai Simplified Chinese French Français québécois (familier oral) Korean Swedish Vietnamese
Icon th11.png TH11 Subterranean Animism Bulgarian German English British English Google Translate English Spanish Hindi Hungarian Indonesian Korean Polish Russian Thai Ukrainian Vietnamese Simplified Chinese Traditional Chinese Czech 4Kids English Greek Esperanto Swiss German Finnish French Italian Luxembourgish Dutch Brazilian Portuguese Swedish Tiếng Việt (THVNFB translation)
Icon th12.png TH12 Undefined Fantastic Object Arabic German English British English Google Translate English Spanish Hindi Hungarian Korean Polish Russian Serbian Thai Vietnamese Simplified Chinese Traditional Chinese Ukrainian Czech 4Kids English Finnish French Indonesian Italian Luxembourgish Brazilian Portuguese Bukvalni Srpski Swedish
Icon th123.png TH12.3 Touhou Hisoutensoku Simplified Chinese English German Spanish French Korean Polish Russian Swedish Thai Vietnamese
Icon th125.png TH12.5 Double Spoiler Chechen German English British English Spanish Italian Hindi Korean Polish Thai Simplified Chinese 4Kids English Yorkshire English French Indonesian Hungarian Luxembourgish Malay Dutch Brazilian Portuguese Russian
Icon th128.png TH12.8 Fairy Wars Chechen German English British English Google Translate English Esperanto Spanish Hindi Hungarian Italian Korean Russian Thai Ukrainian Vietnamese Simplified Chinese 4Kids English Pirate English French Hungarian Indonesian Luxembourgish Dutch Polish Brazilian Portuguese Swedish
Icon th13.png TH13 Ten Desires German English British English Spanish Hindi Hungarian Italian Korean Russian Thai Vietnamese Simplified Chinese 4Kids English Yorkshire English Greek Finnish French Hindi Indonesian Italian Luxembourgish Malay Dutch Polish Portuguese Brazilian Portuguese Swedish
Icon th135.png TH13.5 Hopeless Masquerade Simplified Chinese German English Korean Russian Thai Vietnamese
Icon th14.png TH14 Double Dealing Character Bulgarian Czech German English British English Spanish Hungarian Indonesian Italian Korean Polish Russian Thai Ukrainian Vietnamese Simplified Chinese Chechen 4Kids English Pirate English Troll translations Yorkshire English Esperanto Finnish French Swiss German Hindi Luxembourgish Mongolian Malay Norwegian Bokmål Dutch Portuguese Brazilian Portuguese Swedish Klingon Toki Pona Tiếng Việt (THVNFB translation) Traditional Chinese
Icon th143.png TH14.3 Impossible Spell Card Arabic Bulgarian German English British English Korean Russian Thai Vietnamese Simplified Chinese Czech 4Kids English Spanish Finnish French Indonesian Italian Norwegian Bokmål Polish Portuguese Brazilian Portuguese Swedish Ukrainian
Icon th145.png TH14.5 Urban Legend in Limbo German English Indonesian Korean Thai Vietnamese Simplified Chinese Hindi Brazilian Portuguese Swedish
Icon th15.png TH15 Legacy of Lunatic Kingdom Arabic Czech German English British English Argentine Spanish European Spanish (Suzunaan Blog translation) French Korean Hungarian Russian Thai Ukrainian Vietnamese Simplified Chinese Traditional Chinese Chechen 4Kids English Esperanto Spanish Latin American Spanish Canadian French Indonesian Italian Portuguese Brazilian Portuguese Swedish
Icon th155.png TH15.5 Antinomy of Common Flowers Arabic German English Korean Thai Vietnamese Simplified Chinese Chechen Spanish French French troll translations Indonesian Brazilian Portuguese Romanian Russian Swedish Traditional Chinese
Icon th16.png TH16 Hidden Star in Four Seasons Czech German English British English European Spanish (Suzunaan Blog translation) French Indonesian Hungarian Korean Russian Thai Ukrainian Vietnamese Simplified Chinese Troll translations Spanish Italian Portuguese Brazilian Portuguese Serbian troll translations Swedish
Icon th165.png TH16.5 Violet Detector German English European Spanish (Suzunaan Blog translation) French Korean Russian Thai Vietnamese Simplified Chinese Spanish Indonesian Brazilian Portuguese Swedish
Icon th17.png TH17 Wily Beast and Weakest Creature Czech German English Argentine Spanish European Spanish (Suzunaan Blog translation) French Hungarian Indonesian Italian Korean Brazilian Portuguese Russian Vietnamese Simplified Chinese Bukvalni Srpski Swedish Thai Tagalog Ukrainian
Icon th175.png TH17.5 Touhou Gouyoku Ibun English German Spanish Korean Brazilian Portuguese Vietnamese Simplified Chinese Hungarian French Russian Swedish
Icon th18.png TH18 Unconnected Marketeers Czech English German European Spanish (Suzunaan Blog translation) Italian Korean Russian Vietnamese Simplified Chinese Bulgarian Literal English French Hungarian Indonesian Brazilian Portuguese Bukvalni Srpski Swedish Thai
Icon th185.png TH18.5 100th Black Market English European Spanish (Suzunaan Blog translation) Korean Vietnamese Simplified Chinese German French Brazilian Portuguese Russian Thai Swedish Traditional Chinese
Icon th19.png TH19 Unfinished Dream of All Living Ghost English German European Spanish (Suzunaan Blog translation) Esperanto Russian Vietnamese Simplified Chinese Literal English Spanish French Indonesian Italian Korean Bukvalni Srpski Swedish Traditional Chinese
Icon nsml.png NSML New Super Marisa Land German English Spanish Russian French Korean
Icon megamari.png MegaMari MegaMari Arabic German English Spanish Brazilian Portuguese Russian Simplified Chinese Korean
Icon marilega.png MariLega MarisaLand Legacy
  1. Go to the main page which can accessed from any page by clicking the logo.
  2. Choose a game you wish to translate.
    On the right, you can see the list of translatable games, their progress in the respective languages, and whether they are finished.
  3. Choose a piece of translatable content you want to work on.
  4. Click on the small Translate this page label at the top of that page.

    If you already are on a translated page, it will instead say

    This page is a translated version of the page X and the translation is X% complete.

    In that case, the first link will bring you to the translation interface and pre-select the page's language.

  5. 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,
  6. Click the table rows and enter your translation.
  7. Hit Publish translation.
  8. 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.

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), <game ID> (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/master/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 , "tlnotes": "" before the last } of your configuration file, created by thcrap.