-
Notifications
You must be signed in to change notification settings - Fork 414
How to help out with translations
We don't (currently) have any specifically streamlined tools for translations, so most of this will have to be done manually. You should have a strong command of both english, and the language you want to translate to, and a slightly higher than basic level of technical proficiency.
Both Netrunner itself, and Jinteki.net are constantly evolving. Sometimes translations will get out of date, ui elements will change (facilitating the need to update a few translations), or new features will be added. We don't expect you to treat this like a job, or to perpetually keep it up to date. Have fun, do what you like, and try not to stress about it.
You will need to set up a local instance of jinteki. You can do this by following the instructions on the front page.
Once you've done this, the next step is to look at the following files:
resources/public/i18n/en.ftlresources/public/i18n/[language-im-proficient-in].ftl
Currently, we have support for the following languages:
| Language | File |
|---|---|
| Catalan | ca.ftl |
| German | de.ftl |
| English | en.ftl |
| Spanish | es.ftl |
| French | fr.ftl |
| Italian | it.ftl |
| Japanse | ja.ftl |
| Korean | ko.ftl |
| Pig Latin | la-pig.ftl |
| Polish | pl.ftl |
| Portuguese | pt.ftl |
| Russian | ru.ftl |
| Simplified Chinese | zh-simp.ftl |
| Traditional Chinese | zh-trad.ftl |
If you want a language added, have a chat and we can probably do that.
https://projectfluent.org/fluent/guide/index.html
Have a read through this: https://projectfluent.org/fluent/guide/index.html Have a play around with the fluent playground here: https://projectfluent.org/play/
In some instances, we need to render icons in text, including translated text. These are usually things like the credit or click symbols, but can include faction logos, all the game icons, etc. 99% of the time, if you need to do this, the english translation for that blob will have that already, so you can just copy it from there.
A few examples:
-
[Credits]-> credit -
[Click]-> click -
[Adam]-> Adam's logo -
[Criminal]-> Criminal logo
In some special cases (ie, when a url gets mixed into a sentence), we need to go a little bit beyond plain Fluent.
- In these cases, hiccup is passed in to be composited after the translation is done
- Placeholders within the translation will get replaced
- The placeholders will be in square brackets, like
[email]or[link]. These are distinct from the substitutions fluent itself uses, and fluent does not know they exist. - See the landing page for examples of where this is used. Look at keys
landing_jinteki-is-free,landing_report-herefor usage, and optionally look atlanding.cljsandtr-element-with-embedded-contentintranslations.cljsif you want a little more context/insight into how this works.
Note that in some cases, even if a translation is technically correct, it will not fit within the UI. If possible, test out your translations and check that they fit before submitting them. This can be either manually, editing the nodes via your web-browser, or by adjusting the ftl files and checking on a local instance.
Here's an example:
This translation is correct (I think), but it does not fit within the UI. It's possible that the french could just get away with "Deck Corpo", or instead drop the word "deck" and get something that fits nicely.
- In some cases, you may opt to change our css or layout rules if that works nicer. If you have the aptitude to do that, and believe it's a better change, then feel free to do so.
- You may also pick things that are different, but have the same spirit and will be understood in the same way - ie "create corp deck" instead of "new corp deck" if that text happened to fit better.
I've designed a userscript to help out with translating. You can install it here (it wont work until the patch around the end of October, 2025): https://greasyfork.org/en/scripts/552721-translation-helper
If you install this script, then (while it is active) it will highlight all text which does not have a translation for the target language.
See here for an example.
Then, if you alt+click on one of these, it will open up ftl playground with the translation key, any relevant parameters loaded, and the english reference for you to work off.
You can play around here and make sure you have something with valid syntax.
Then, either manually edit the dom node or paste what you have into your working ftl file and ensure that it looks good/doesn't break any formatting.
For a video walkthrough, see: https://www.youtube.com/watch?v=DHXdAQPZ_3M
So the workflow is:
- Open desired page
- Alt+click on an element in a purple box. FTL Playground opens with that translation string, any relevant values, and the english reference if there is one
- Figure out the correct translation (exercise left to reader)
- (Optional) If the translated text differs in size significantly, or is in a button, you can double-check it does not break the formatting by editing the HTML directly to test.
F12 -> Element Picker -> Click the area -> Adjust the text. - Paste the completed translation into the relevant FTL file.
- Every 5-10 translations, or if you complete translating a page, double-check everything works. Run
(jinteki.i18n/load-dictionary! "public/i18n")in the repl. This is the only command you should ever need to run. Refresh. Check everything looks as you expect and that nothing is broken. - You can press f12 and double-check your browser console for failures, if things are not as you expect.
Once you have a significant amount done (ie a page, a language, correction of existing content, even just fixing a single typo if you like, etc), then submit a pull request with your changes.