Using custom translation files

So you’re helping out to translate syncthing on Transifex? Thanks! And you want to use your new translations with with syncthing, of course. Here’s how to do that.

First of all, you need syncthing v0.9.0-beta2 or newer. Beware that this is currently a bit more beta than usual and doesn’t interoperate at all with v0.8.x. See v0.9.0 beta testing for some pointers.

Then you go to Transifex, navigate to the project and click the “GUI strings” resource. You’ll get a dialog where you can click “Download for use”. It should look something like this:

You’ll get a file called something like for_use_syncthing_gui_sv.json (for Swedish, sv). You need to rename this file to lang-sv.json (or some other lang-xx.json for another language code). Then you must create a directory somewhere, we’ll assume it’s called translation for now, and put the file here. So you should now have a directory containing only the translation file, called lang-sv.json.

You now need to start syncthing and tell it where it can find additional, non-bundled resources. You do this by giving it the STGUIASSETS environment variable, pointing to the directory you just created with the translation file in it. I’ll just call it translation here but it could be a path like /tmp/download or c:\syncthingstuff. Start syncthing like this (on Linux/MAC):

$ STGUIASSETS=translation syncthing

Like this on Windows, assuming the translation file is in C:\syncthing\translation:

C:\syncthing> set STGUIASSETS=translation
C:\syncthing> syncthing

Now navigate to the GUI. You’ll get it in english as usual. You now need to add a parameter to the URL to let syncthing know that it should load another language. The parameter should be #?lang=sv (yes, both a # and a ?). So if your normal URL is

http://localhost:8080/

Then to use the file lang-sv.json you change the URL to

http://localhost:8080/#?lang=sv

This’ll all get a bit less tedious once there is a way to change the language from within the GUI…