Summary

Project website botc.app
Instructions for translators

This is the translation repository for the official Blood on the Clocktower app and accompanying game materials. English is the base language for the app and any currently untranslated text (both from app and game) will fall back to the English version in the app. Outdated translations will be marked as such in the translation interface. Whenever the app is updated, the most recent translations will be pulled from here and used in the app. The translations are split into 3 parts:

  • Glossary: this contains the general game terms that are being used across the app and game materials. It is (currently) not shown anywhere in the app, but being used to help translators use the same terms for important elements of the game.
  • Game Content: the actual game content that is also being used in the the printed board game. It consists of Edition descriptions, Character text, Reminder text (reminders are shared between different characters) and Jinxes. This content should rarely change and be stable, once translated.
  • App Interface: all interface text that is being used in the app. These will be updated as the app is undergoing further development, so expect frequent changes here and check back frequently.
  • Script Tool: all interface text that is being used in the script tool. These will be updated as the script tool is undergoing further development, so expect frequent changes here and check back frequently.

How to translate

Select the component you want to translate and the language, if it's already been added. Languages that are officially translated (meaning there is a printed version of the game available in this language) require the "official translator" role for updating the game translation. Fan translators can update all game translations for unofficial languages and all app interface translations for all languages, except English. The translations need to follow a few important rules in order to be usable on the app:

  • General: Some translations contain line breaks (\n) and / or tab spaces (\t). These are used for visual formatting and it's recommended to use them appropriately in the translated text as well. Otherwise, the translated version might look weird in the app.
  • Game Content: Night reminder text (roles.[role].first and roles.[role].other) sometimes contain :reminder:as a placeholder for a Reminder token icon. DO NOT TRANSLATE this placeholder! Example: The Butler chooses a player. :reminder: -> Der Butler wählt einen Spieler. :reminder:
  • Game Content: Night reminder text (roles.[role].first and roles.[role].other) sometimes contain *SOMETHING* to mark text as bold. Translate the text, but keep the asterisks in place! Example: Show the Townsfolk character token. Point to both the *TOWNSFOLK* and *WRONG* players. -> Zeige das Bürger-Plättchen. Zeige auf den *BÜRGER* und auf den *FALSCH*en Spieler.
  • App Interface: Curly braces placeholders are being used throughout the app text and are either numbered ({0}, {1}, ...) or named ({link}). DO NOT TRANSLATE these placeholders! They are being used to insert formatting, HTML elements or dynamic information in their place. Example: Seat {0} -> Sitz {0}, Download the latest {label} version here. -> Lade die neueste {label} Version hier runter.
  • App Interface: Pluralized strings are defined with a vertical bar between each form of the string. The first form is singular, the second form is plural. Keep the vertical bar in place, but translate each form accordingly. If your language has a different form for zero and multiple, the correct form is zero something|one something|many something. Example: Demon|Demons -> Dämon|Dämonen, First Day|Day {n} -> Erster Tag|Tag {n} (pluralized strings might also contain curly braced placeholders)
Project maintainers4 User avatar bra1nUser avatar oddGarrettUser avatar AlejoFBlackUser avatar Aggie
Project reviewers235 User avatar bra1nUser avatar oddGarrettUser avatar AaronLJZUser avatar nunu2User avatar NunuUser avatar testerUser avatar AlejoFBlackUser avatar SimskyUser avatar AggieUser avatar imitationfreakUser avatar SunisawesomeUser avatar hdmUser avatar MyrionUser avatar PPUser avatar survivorkikiUser avatar shellyUser avatar balevanciagaUser avatar andlarUser avatar GumUser avatar mannym2498User avatar BatnuUser avatar kloofelUser avatar Augurey2012User avatar ElideradUser avatar Alirmon …
10/31/2026

String statistics

Strings percent Hosted strings Words percent Hosted words Characters percent Hosted characters
Total 113,904 974,016 5,526,672
Source 2,373 20,292 115,139
Approved 43% 49,665 38% 371,036 38% 2,119,413
Waiting for review 14% 16,962 16% 154,605 15% 871,803
Translated 60% 69,000 56% 545,933 56% 3,106,355
Needs editing 1% 628 1% 8,365 1% 49,410
Read-only 2% 2,373 2% 20,292 2% 115,139
Failing checks 1% 1,220 1% 19,195 2% 111,964
Strings with suggestions 1% 1,185 1% 15,762 1% 88,395
Untranslated strings 38% 44,276 43% 419,718 42% 2,370,907

Quick numbers

974 k
Hosted words
113 k
Hosted strings
60%
Translated
4
Components
48
Languages
192
Translations
13
Screenshots
and previous 30 days

Trends of last 30 days

+1%
Hosted words
—
+3%
Hosted strings
+1%
−1%
Translated
+1%
+3%
Contributors
+18%
Language Approved Translated Unreviewed Unfinished Unfinished words Unfinished characters Untranslated Checks Suggestions Comments
English 0 100% 0 0 0 0 0 337 0 5
Afrikaans 1% 7% 164 2,194 19,597 110,941 2,190 6 0 0
Bulgarian 0% 2% 70 2,303 20,213 114,556 2,303 0 0 0
Catalan 31% 92% 1,438 183 755 4,467 171 16 0 23
Chinese (Simplified Han script) 92% 93% 38 147 822 4,878 131 15 2 0
Czech 39% 39% 0 1,429 16,250 91,126 1,405 8 1 0
Danish 51% 93% 1,003 153 1,674 9,541 148 95 9 30
Dutch 73% 93% 467 160 1,683 9,506 113 29 0 149
English (Middle) 0% 0% 0 2,373 20,292 115,139 2,373 0 0 0
English (Pirate) 88% 88% 5 264 1,520 9,110 260 43 932 3
Esperanto 1% 6% 125 2,226 19,816 112,318 2,226 0 0 0
Finnish 0 0 0 0 0 0 0 0
French 96% 99% 87 3 6 22 2 4 0 49
Galician 37% 80% 1,009 470 5,040 28,539 462 97 0 1
Georgian 0% 27% 646 1,727 17,159 96,616 1,727 6 0 0
German 95% 95% 0 105 849 4,792 100 14 0 0
German (Switzerland) 42% 47% 134 1,236 13,967 78,307 1,212 26 0 0
Greek 0% 8% 191 2,182 19,544 110,653 2,182 2 0 1
Hebrew 8% 46% 901 1,260 14,087 79,030 1,232 4 156 2
Hindi 10% 18% 182 1,934 18,374 103,745 1,911 1 0 0
Hungarian 39% 53% 325 1,112 6,609 38,282 1,108 48 0 0
Indonesian 11% 37% 618 1,484 17,239 97,291 1,482 52 0 2
Italian 43% 99% 1,335 15 230 1,513 0 12 0 2
Japanese 85% 90% 113 230 3,272 18,151 213 21 0 1
Klingon 1% 8% 168 2,168 18,935 107,224 2,168 32 0 0
Korean 96% 96% 0 85 117 685 85 0 0 0
Latin 0% 4% 113 2,260 19,890 112,858 2,260 5 0 0
Lithuanian 0% 11% 274 2,099 19,238 109,041 2,099 10 0 0
Maltese 0% 8% 205 2,168 19,169 108,252 2,164 12 0 0
Norwegian Bokmål 0 0 0 0 0 0 5 3
Persian 0% 7% 169 2,204 19,691 111,621 2,204 1 0 0
Polish 96% 97% 41 53 310 1,691 51 0 60 60
Portuguese (Brazil) 56% 56% 0 1,040 13,091 73,082 1,040 0 0 17
Portuguese (Portugal) 44% 89% 1,071 257 2,470 14,001 240 18 0 0
Romanian 6% 20% 312 1,897 18,295 103,287 1,895 0 0 0
Russian 86% 90% 96 223 1,115 6,643 203 70 3 48
Serbian 0% 43% 1,024 1,349 8,793 51,128 1,349 80 0 0
Slovak 42% 58% 383 984 13,369 74,801 977 13 0 4
Slovenian 50% 70% 475 689 10,631 59,185 663 29 0 18
Spanish 85% 87% 47 287 1,604 9,288 268 23 0 33
Spanish (Latin America) 74% 75% 9 592 5,808 33,259 491 25 17 0
Spanish (Mexico) 45% 96% 1,220 85 410 2,276 84 3 0 0
Swedish 0 0 0 0 0 0 0 1
Thai 96% 96% 0 85 410 2,276 81 0 0 0
Toki Pona 0% 26% 624 1,749 16,845 95,535 1,746 26 0 48
Turkish 33% 54% 503 1,071 13,434 75,500 923 22 0 14
Ukrainian 59% 84% 594 369 5,460 30,161 334 15 0 48
Vietnamese 67% 783 0 0 0 0 0 0 0
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
User avatar Aloniator

Suggestion added

10/31/2026
Browse all project changes
User avatar AlejoFBlack

Announcement posted

Hi Galician translators,

Thank you very much for working on the translation! We're almost ready to roll out the Galician game content, but before we can do that, we need to make sure it's of a good quality. If you get chance, please review other contributors' work, to make sure that it all makes sense.

-Alejo

03/12/2026
User avatar AlejoFBlack

Announcement posted

Hi Ukrainian translators,

Thank you very much for contributing to the app. We'd like to add Ukrainian game content into the app soon, but before we can do that we need to confirm that the translations are of good quality. If you get chance, please review other people's translations, so we can get it in!

-Alejo

03/12/2026
User avatar AlejoFBlack

Announcement posted

Hi everyone,

We've had some great progress with the translations and we're excited to keep that going. We've got coordinators in place for a number of languages now! We've also heard from a few of you that you'd like to be able better to coordinate translations, and that some of you already have, so to make that easier we've set up a space on Discord for you to do so. Please message me, AlejoFBlack (461331989660958721), on Discord with the username or email address that you use here, or your BOTC app ID (any option is fine) and I'll add you to the space. I'm not sure how many requests I'm going to have to handle, so sorry if it takes a while for me to get back to you. Feel free to follow up if it's been a couple of days!

-Alejo

01/28/2026
User avatar AlejoFBlack

Announcement posted

Hi all!

With several languages now in the app, we're really happy with how the progress is going! However, we're several weeks into the project and some languages haven't had much if any progress. That's absolutely fine, there's no commitment on your end, but we're going to remove any language with <2% completion in a few days to clean up how the project looks and navigates for those who are working on it. Right now, that's Alemannic, Austrian German, Azerbaijani, Bengali, Bulgarian, Canadian French, Croatian, Filipino, Hungarian, Icelandic, Karelian, Peruvian Spanish, both Sami languages, Viossa, and Yiddish. All of these can be added back later (although likely with any work already done lost), and if you expect to start making progress on a language in the near future you can let me know at alejo@thepandemoniuminstitute.com (or anywhere else you can find me) and we can make an exception.

I'll be conducting regular reviews to check that there is some progress being made to all languages, in particular those (Indonesian and Latin) under 5%. If a language doesn't look like it's going to be complete, we still want to say a huge thank you for the time that you did put into it!

-Alejo

11/30/2025
User avatar bra1n

Announcement posted

Hi everyone!

We have two dozen languages already in a state where we can put them into the official app! And now we have a new challenge: the Script Tool is finally out and ready to be translated. We've uploaded all the files so you can have at them! Also, even though several languages have been completed, the review process is lagging behind a bit in a lot of languages. As always, don't review anything that you've submitted, but please do feel free to look through them and approve or reject any translations. Finally, while we're ready to name several translation coordinators and will do so in due course, we still feel like there are some languages with a lot of volunteers where we'd still like a coordinator and got no applications. If you weren't sure, please do feel free to apply by emailing me at alejo@thepandemoniuminstitute.com

Thanks again for everything!

Alejo

11/13/2025
User avatar bra1n

Announcement posted

Hi everyone,

unfortunately, it looks like the bug in Weblate which blanks your previously submitted, but yet unapproved, translations has struck again. Those translations are not lost, however, you just need to (manually) revert the "blanking", by applying the default fix, which inserts your previous translation once more. Any approved strings should fortunately not be affected. We're currently still working with the developers from Weblate to fix this issue.

Apologies (again) for the inconvenience, bra1n

10/27/2025
User avatar AlejoFBlack

Announcement posted

Hi everyone,

Thank you all so much for the work you've done on the translations so far! We've got a fair number of translations done already, we hope that those of you with completed translations are enjoying playing with the app in your own language.

We're going to make a couple of changes going forward. We're aware of a few issues with our processes and permissions so far - those of you with the 'translator' role can't edit strings that have been approved, even if users have flagged the translations, whereas reviewers have too many permissions and can approve translations. So we're scrapping those roles and replacing them with language-based roles so you can make all changes to your own language. We still want to keep the same policy we had before - all translations should go through two people - so please don't approve your own work! These changes will be rolled out over the next few days.

The second change is more proactive. Even as languages are completed, there will always be more to do. The app is consistently being updated and we're within sight of a release of the new Script Tool, both of which will require further translations, so this is an ongoing project, and we anticipate a drop-off in interest from some of you after the initial translation is done. Also, I've been getting a lot of questions about translations that I can't answer because I don't speak the language, and I'm aware of cases where two camps have formed around competing translations that end up inconsistent in the final translation (Dutch spreukenboek vs grimoire debate, I'm looking at you!). We're going to try to solve both of these problems with the introduction of a "translation coordinator" role to several languages which have a large number of volunteers and are complete or nearing completion. Coordinators will work with me, will have the power to reject suggestions, and will be the deciding voice on any issues that come up. Ideally coordinators will be native or native level in the language and at least fluent in English. I'm also aware that a good number of you have some experience with professional translation; that'd be great, but is by no means necessary. We'll also consider others' recommendations, so if you think you know someone who'd be a good person to lead the translation, or you want to volunteer, reach out to me at alejo@thepandemoniuminstitute.com.

-Alejo

10/21/2025
User avatar bra1n

Announcement posted

Good news, everyone!

We've reverted all the accidentally deleted strings and put the first 9 languages of the App Interface translations live! We wanted to include a few that were already translated completely in order to show off the new language support on the app, so the following languages are now available on botc.app: Danish, German, Spanish, Spanish (Latin America), Italian, Dutch, Portuguese (Brazil), Russian and Swedish

That doesn't mean these languages can't be improved anymore! Matter of fact, now that they're out on the app, we're likely going to receive a lot more feedback and suggestions for them. As such, please keep improving them and we'll regularly synchronize any changes made into the official app. Approved strings can currently only be changed by a reviewer, so if you would like to change teams, let us know and we're happy to give everyone the right permissions to continue working on their translations.

Thanks again for being so awesome!

bra1n

10/09/2025
User avatar bra1n

Announcement posted

Hey everyone,

we're currently facing a serious issue that has caused quite a few submitted translations to be reverted. Fret not, those translations are not lost, they can be easily fixed: You can find all the currently "lost" translations here: https://translation.botc.app/checks/translated/botc-app/app-interface/ (simply click on your language) Weblate will automatically suggest a fix for them in the top right corner, simply click that button and hit "Save". Apologies for the extra work, we'll also slowly go through these and revert the deletions where applicable.

Regards, bra1n

10/07/2025
User avatar bra1n

Announcement posted

Hej Danish translators,

it looks like Weblate kept eating your submitted translations for some reason, whenever we update the English source file. I've gone ahead and manually approved all of these translations now so that they would be persisted and no longer get lost with further updates to the English sources. Please treat them still as if they were unreviewed and make sure that they're good enough. :-) Apologies for the inconvenience!

  • bra1n
10/07/2025
Browse all project changes