Discord GitHub
Amethyst Docs

Localizing Amethyst

Fast forward

To get started quickly, press Win+R and run amethyst-app:localize. This will open a folder containing everything you need to localize the app and installed plugins. After that, launch Amethyst, modify or update the files, and see the changes in action!

Introduction

This page will help you understand how to localize (translate text resource files for):

Each “module” is a folder with JSON localization files, containing some keys and values.

Staying up to date

It’s possible that some new resources will be added to the app or plugins in the future. In such cases, preview app builds may be helpful, as Store versions are updated much less frequently. To install a preview build, visit the AppCenter distribution website.

Preparations

To get started, press Win+R and run amethyst-app:localize.
The folder you will be presented with contains some subfolders:

To get started, copy-paste en.json and rename it to your language, e.g. ja.json.
Get language code by cropping its LCID tag before -, e.g. Czech cs-CZcs.

For ja.json, the new language would appear in Amethyst as ja, edit the locales.json file to fix it:

Before After
/* English & others */
"en": {
    "en": "English",
    "fr": "French",
    "de": "German",
    "ru": "Russian"
},

...








/* English & others */
"en": {
    "en": "English",
    "fr": "French",
    "de": "German",
    "ru": "Russian",
    "ja": "Japanese" // Add to each
},
...

/* Your langauge */
"ja": {
    "en": "英語",
    "fr": "フランス語",
    "de": "ドイツ語",
    "ru": "ロシア語",
    "ja": "日本語"
}

Need to restart from scratch?

By default, amethyst-app:localize will not overwrite any files not to suddenly devour your valuable work. However, if for some reason, you want to pull all “packed” resources back from the app, running amethyst-app:localize-force will overwrite them.

Localization

Now that you’ve added your language to the global enumeration, you can start localizing.
Replace the resource string in each key with the translated one. (the one on the right)

Don't translate the keys!

That should already be obvious, but please do not translate string resource keys. These are the ones on the left side of each JSON entry, with many / (slash) characters inside them, denoting the “friendly” human-readable resource path.

Sample localization before/after:

/* ja.json - not translated */
...
"/GeneralPage/Buttons/Save": "Save",
...
/* ja.json - translated */
...
"/GeneralPage/Buttons/Save": "保存",
...

Something looks weird?

If you see a space at the start/end of a string, please keep it there! Additionally, when editing multiline keys, please remember that newline inside the string is a \n. (The same goes for tabs: \t, you’ll get used to it… maybe. Or just take a look at the live preview)

Hot reload / Live preview

Each time you make changes (e.g. save) your translation file, Amethyst will automatically
reload it and apply the pending changes to the user interface. (it may blink or lag a little)

This allows for adding, editing and fixing your resources live, while Amethyst is running.
The same goes for all plugins loaded by Amethyst, for all added and supported languages.

Localization FAQ

Is using machine translation okay?

To the limit that you can be 100% confident what you wrote is proper, you are allowed to use services like DeepL or Google Translate to HELP you. Not to write the whole thing. If we wanted ChatGPT-made translations, we wouldn’t be asking for your precious time!

I want to see how it will look in the app!

As described a bit upper on this site, you can add, edit and preview your changes on runtime.

What about a CLA? How is that gonna work?

You will be credited in the app’s info page for your awesome work. Though, we’re not gonna write which language have you Amethyst translated into. Everything you publish to Amethyst will be licensed under GPLv3, unless an agreement is made between parties for partial licenses.

How do I submit work?

You have a few ways available to do that, actually:

What about future features and additions?

You’re welcome to update your translations in the future, it would be super appreciated, actually! Either to fix errors or support new features.

Why not Weblate/Crodwin/...?
It’s easier for both you and us to to handle localization updates via PRs (really). On top of that, you can actually see your changes live in the app if you localize on your own PC!

Actually, we’re on our way to setting up a custom server to handle the API. When it’s finished, there’s a high chance that we’ll host our Weblate on it. Until then, if editing pure JSON is disturbing for you, you can use a web editor.