nullary games
Community translations
Win / macOS / Linux

Translate the game

Net Worthless ships in eleven languages. If yours is not one of them, or you would word ours differently, you can fix that yourself: the game reads translation files from a folder on your computer. No tools, no mods, no coding. A text editor is enough, and an AI chat makes it a weekend job instead of a month.

Works in the free demo and the full game. Everything stays on your computer: the game only reads the file you put in the folder. A broken file never breaks the game; it is simply skipped.

Five steps.

  1. Export the templateIn the game, open Settings → Language and press Export English template. The complete English text lands in the translations folder as _template_en.json.
  2. Open the folderPress Open translations folder in the same place. Copy _template_en.json and rename the copy to your language code, for example ja.json for Japanese (how to name it).
  3. TranslateOpen your copy in any text editor and translate the text after each colon. Do it by hand, or feed it to an AI with the prompt below. You do not have to finish: anything you leave out shows in English.
  4. ReloadBack in the game, press Reload translations. No restart needed, so you can edit and reload as often as you like.
  5. Pick your languageOpen the language list. Your file appears under Community translations. Pick it, and the game switches on the spot.

Name the file after the language.

The file name is the language code, then .json. The code is two or three lowercase letters, optionally followed by an underscore and a region (two capital letters or three digits) or a script (four letters, first one capital). Anything else is ignored, and so is every file whose name starts with an underscore, which is why the template does not show up as a language.

ja.jsonJapanese
ko.jsonKorean
it.jsonItalian
nl.jsonDutch
cs.jsonCzech
hu.jsonHungarian
vi.jsonVietnamese
id.jsonIndonesian
pt_PT.jsonPortuguese (Portugal)
zh_TW.jsonTraditional Chinese
sr_Latn.jsonSerbian (Latin)
fil.jsonFilipino

Wrong: Japanese.json, JA.json, ja-JP.json (a hyphen instead of an underscore), ja.json.txt (Windows hides the real extension; turn on File name extensions in Explorer's View menu to check).

Give your language its name

The language list shows whatever your file says for the key ui.settings.language.<code>. Add it, written the way speakers of the language write it, or the list shows the bare code:

{
  "ui.settings.language.ja": "日本語",
  "ui.button.quit": "終了",
  "ui.button.start_run": "ゲーム開始"
}

Fix an existing translation

Name the file after a language the game already has, and your lines replace ours, one by one. Include only the lines you want to change: every line you leave out keeps the official text. The language list then shows that language as (modified), so you always know which version you are playing. Delete the file (and press Reload) to go back.

enEnglish
ruRussian
deGerman
esSpanish (Spain)
es_419Spanish (Latin America)
pt_BRPortuguese (Brazil)
frFrench
trTurkish
ukUkrainian
plPolish
zh_CNSimplified Chinese

To find the line you want to change, search the template for the English wording you see in the game, then look up the same key in the shipped language. A fix file for Russian can be this small:

{
  "_comment": "My tweaks to the Russian text. Keys starting with _ are ignored.",
  "ui.button.quit": "Выйти из игры"
}

Where the folder is

The Open translations folder button takes you there and creates the folder if it is missing. If you would rather find it yourself:

Windows
%APPDATA%\Godot\app_userdata\Net Worthless\locale
macOS
~/Library/Application Support/Godot/app_userdata/Net Worthless/locale
Linux / Steam Deck
~/.local/share/godot/app_userdata/Net Worthless/locale
The demo
The same paths with Net Worthless Demo in place of Net Worthless. The demo and the full game keep separate folders, so copy your file to both if you play both.

Paste the Windows path into the Explorer address bar as is; %APPDATA% expands on its own.

Translate the text, not the machinery.

The file is JSON: one line per piece of text, "key": "text",. The key on the left is how the game finds the line, so it never changes. Only the text on the right is yours. A few things inside the text are machinery too:

  • Curly-brace placeholders like {amount}, {name}, {count} are filled in by the game. Keep every one, spelled exactly the same. You can move it anywhere in the sentence.
  • Square-bracket tags like [color=#46c98a]…[/color], [b]…[/b], [url=island]…[/url], [img=18 …]res://…[/img] and [lb] style the text or draw an icon. Translate the words between an opening and a closing tag; never the tag itself or a res:// path.
  • Escapes: \n is a line break and \" is a quotation mark inside the text. Keep them. A plain " inside the text breaks the file; use your language's own quotation marks instead (« », „ “, 「 」).
  • Names stay as they are: Net Worthless, Iron Will, nullary games, the people in the credits, and the game's made-up brands. They are all fictional on purpose; do not swap one for a real brand, film or celebrity.
  • The number separator: set ui.number.group_separator to the character your language puts between thousands: "," gives 1,000,000, "." gives 1.000.000, " " gives 1 000 000.
  • Other language names (ui.settings.language.ru and friends) are already written in their own language. Leave them.
  • Do not blank a line to skip it. An empty string is treated as missing and shows the English text, which is also what happens if you delete the line. Deleting is tidier.

How the game sounds

Dry, satirical, a little mean about money. It talks to the player informally, the way a friend would. Jokes and idioms should be re-created, not translated word for word: a line that sounds natural and a bit loose beats one that sounds translated. Button labels are short, because buttons are small.

Fonts

The game's fonts cover the Latin and Cyrillic alphabets and Simplified Chinese. For anything else (Japanese kana, Korean, Thai, Greek, Georgian, Hindi and so on) the letters show up as empty boxes until you add a font. Put a .ttf or .otf file next to your translation, with the same name: ko.json and ko.ttf. The game uses it while your language is on. The free Noto family covers almost every script; one regular-weight file is enough.

Right-to-left languages (Arabic, Hebrew, Persian) will display their text, but the screens themselves stay laid out left to right. It is readable, not pretty.

A prompt that knows the rules.

Any capable AI chat can do a solid first pass. The template holds about 5,800 lines, far more than a chat reply fits, so you send it in parts: paste the prompt once, then one part per message. The tools below split the template, check each translated part against the rules above, and glue the parts back into one file. Everything runs in your browser; nothing is uploaded.

Machine translation is a draft. Play a month or two in your language, fix what reads oddly, and reload. Your file, your call.

1. The prompt

2. Split the template

Pick _template_en.json from the translations folder. 300 lines per part suits most chats; lower it if replies get cut off.

3. Check and combine

Paste each reply from the AI and press Add part (or pick saved part files). Every part is checked against the template: lost placeholders, broken tags and invented keys are listed so you can send those lines back for another try.

    After a game update

    Updates add new lines; until you translate them they show in English. Export the template again, load it in step 2, then add your current language file in step 3: Untranslated lines as a part gives you exactly the new lines to send to the AI.

    Troubleshooting.

    My language does not show up

    Press Reload translations: the message says how many files the game found. If yours is not counted, check the file name against the naming rules and make sure the file is valid JSON. Paste it into step 3 above: a syntax error is reported with its position. A file with a mistake is skipped as a whole, never half-loaded.

    Letters show as empty boxes

    The game's fonts do not cover your alphabet. Add a font file with the same name as your translation (Fonts).

    I see {something} in curly braces in the game

    A placeholder was renamed or translated. Compare that line with the template and restore the placeholder exactly. Step 3 above lists every such line.

    Some lines are still in English

    Those lines are missing from your file, or were left empty. That is by design: a partial translation still works. Use Untranslated lines as a part to collect them.

    Text runs out of its button

    Find a shorter word. Buttons do not grow, and a clipped label is worse than a plainer one.

    I made a translation. Now what?

    Share it with other players in the game's Steam discussions: they drop your file into the same folder and reload. We would love to see it too: [email protected].