SkillAgentSearch skills...

Locale

Locale files for Resonite

Install / Use

/learn @Yellow-Dog-Man/Locale
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Resonite Locale

This repository contains the locale assets for the core UI of Resonite and allows anyone to contribute translations. The contents of this repository will be periodically merged with the public build released on Steam (STEAM) and other platforms.

Localization Status

Czech [cs] - 47.6% - Missing keys: 1742
German [de] - 99.8% - Missing keys: 6
English (United Kingdom) [en-gb] - 1.9% - Missing keys: 3259
English [en] - 100.0% - Missing keys: 0
Esperanto [eo] - 48.6% - Missing keys: 1708
Spanish [es] - 69.0% - Missing keys: 1030
Estonian [et] - 24.8% - Missing keys: 2497
Finnish [fi] - 71.7% - Missing keys: 939
French [fr] - 99.6% - Missing keys: 12
Hungarian [hu] - 19.9% - Missing keys: 2661
Icelandic [is] - 18.7% - Missing keys: 2702
Japanese [ja] - 99.6% - Missing keys: 12
Korean [ko] - 99.8% - Missing keys: 6
Mongolian [mn] - 79.4% - Missing keys: 683
Dutch [nl] - 72.4% - Missing keys: 918
Norwegian [no] - 46.6% - Missing keys: 1775
Polish [pl] - 82.1% - Missing keys: 593
Portuguese (Brazil) [pt-br] - 46.5% - Missing keys: 1776
Russian [ru] - 83.0% - Missing keys: 565
Swedish [sv] - 82.1% - Missing keys: 593
Thai [th] - 2.1% - Missing keys: 3253
Turkish [tr] - 24.5% - Missing keys: 2509
Ukrainian [uk] - 39.5% - Missing keys: 2010
Chinese (Simplified, Mainland China) [zh-cn] - 99.8% - Missing keys: 6
Chinese (Traditional, Taiwan) [zh-tw] - 99.6% - Missing keys: 12

Total keys: 3322

How To Contribute

If you'd like to contribute translations, create a fork of the repository, make the changes and once they are ready to be merged create a Pull Request, so the contributions can be checked and merged. You don't need to translate everything at once, if you cover part of the UI, the changes can be merged, with more translations coming later.

Translating the Store descriptions

If you'd like, you can help translate the store descriptions as well (this is used on Steam for example), but we consider those highly optional since it's quite a lot of text. If you don't want to translate those, don't worry about them! The store descriptions do not count towards the translation completeness percentage and are provided in separate files.

If you do translate them and you haven't added a credit yet, put your name in the regular .json file for translations of in-game strings, even if you haven't translated any in-game strings.

If you're contributing a new language

  1. Create a new Issue for given language in format "Language [lang-code]", for example "English [en]", which will help coordinate efforts of different translators.
  2. Verify that our fork of ICU MessageFormat.NET has a pluralizer for your language. The following file should contain your language code: https://github.com/Yellow-Dog-Man/messageformat.net/blob/master/src/Jeffijoe.MessageFormat.MetadataGenerator/data/plurals.xml

If you can't find your language code in this file, please make a Issue either on in this repository. If the language doesn't have any pluralization rules (meaning words don't change depending on a number), this might not be needed - but we suggest you test it first.

Alternatively you can implement the pluralizer yourself based on the reference from the Unicode CLDR repository: https://github.com/unicode-org/cldr/blob/master/common/supplemental/plurals.xml and make a pull request for it to be merged with our fork or MessageFormat.NET

  1. Add a new [lang-code].json file to your fork. We highly recommend creating a skeleton file first without any translation strings, just containing the Locale and Authors and creating a pull request, so it's clearer to other contributors that translations are being worked on by someone.

Contributing translations to a language

If you'd like to contribute translations for existing language file (or one you have just created), we recommend the following:

  1. Make a fork of the repository or your own branch.
  2. Update the language file, either by modifying the translation strings or adding new ones for missing translations.
  3. Ensure you do not have any left-over English strings in the file. Your file should only contain actually translated strings. Any missing strings will automatically fallback (see below for details)
  4. Ensure your modified translation file works correctly inside Resonite (see below how to test)
  5. Create a Pull Request for your translations to be merged into the main repository. After merging they will be available publicly in the next public build of Resonite.

As we develop our platform, we'll be constantly adding new strings in English or modifying the existing ones. We recommend watching the repository for activity through GitHub, so you can get notified when there are changes and new strings to be translated.

Collaborating & Conflicts

Sometimes when translating, multiple users can translate the same area/section at the same time. This results in a Conflict, as the Resonite Team usually cannot speak the language. We're unable to decide which PR should be merged. When a conflict occurs any PRs involved will be marked with a Conflicts label. Please work with other translators of the language to resolve any conflicts so that the team can proceed to merge PRs clearly.

Testing your translation

As you work on the translation we recommend that you periodically check it inside of Resonite. This will not only help ensure that you don't have any syntax errors, but also make sure that the strings are correct in the context.

To test the translation, find folder where Resonite.exe is installed (on Steam, you can do so by right clicking Resonite, going to Properties -> LOCAL FILES -> BROWSE LOCAL FILES...) and then locate the "Locale" folder. Simply place your modified file into this folder and Resonite will load it up.

By default, Resonite uses your system locale to determine which file to load. You can override this by going to Settings and changing the "Override Locale" to a different language code.

  • You can edit the translation file on the fly without shutting down Resonite. To force it to reload, change the locale to "en" and then back to your own.
  • Note that while most UI will change language immediately, not all of it would. Simply close and reopen the UI dialog to load the translated strings
  • If the string is showing in English, you probably have a typo in the string key. It needs to match exactly
  • If the translation isn't loading in Resonite, it is likely JSON syntax error preventing it from being loaded
  • If you see "ERROR!!!" instead of your translated string, you have a syntax error in the particular string. Check Resonite's log file, which will contain details.

If you use an external tool to do the translation and the JSON structure is mangled

You can use the python script in this repository: CleanJSON.py

For example to clean the french json, ./CleanJSON.py --en en.json --lang fr.json --out fr.json.cleaned


This script will reformat a Babel style JSON for locales to match the en.json
baseline formatting for git changes purposes.

optional arguments:
  -h, --help        show this help message and exit
  --en en_path      The path to the en.json locale file.
  --lang lang_path  The path to the LANG.json locale file to clean.
  --out out_path    The path to save the formatted file.

Do's and Don'ts

  • Make sure the .json locale file is UTF8 encoded

  • Always keep the "Dummy" : "Dummy" entry at the bottom of the file. This way you don't have to remember to remove the comma at the end of the last entry every time

  • Copy & Paste the whole content of the file into this online validator to ensure you don't have any syntax errors: https://jsonformatter.curiousconcept.com/

  • DO use spaces instead of tabs to keep the formatting of all documents consistent

  • DO check if other users are making modifications to the same locale as you are in Issues and coordinate. If you send changes that conflict with other users, it's hard to resolve them on our end since we don't understand the language.

  • DO keep the same style of formatting and coloring where it's present in the text to ensure it stays consistent across locales. Coloring in particular can be contextual and used in other parts of the UI and changing or removing it would cause user confusion.

  • DON'T update the Localization Status section of this document, it is automatically generated when changes are merged

  • DON'T convert the formatting of the entire document. This creates major merge conflicts and makes it hard to track what was actually changed, plus it introduces inconsistencies

  • DON'T correct mistakes in the string keys, only report them. They will be fixed by a script, which will apply the correction to all locales at once.

  • DON'T submit purely machine translated locales. Those often result in odd and confusing results for user interfaces. Using machine translation as basis for manual translation is ok.

  • DON'T Submit strings from PRs that have the "New Strings" label until that PR is merged. The development team may need to update or change these strings as a part of their inclusion and this can cause conflicts. Wait till the PR is merged and THEN work on the new strings.

  • DON'T Submit strings for features that are not present in the "main" branch yet. Until a set of strings is in main, it is not complete and may need additional work to complete. Adding strings early, leads to extra work, Conflicts and confusion.

  • DON'T Make executive decisions on how to change certain things on our behalf - e.g. replacing names of services or introducing variables into locales when they don't exist in the English one. Let us make the decision first in the EN locale on the main branch. Adjusting things to better suit the language/culture is fine, but overa

Related Skills

View on GitHub
GitHub Stars31
CategoryDevelopment
Updated2d ago
Forks138

Languages

Python

Security Score

90/100

Audited on Mar 25, 2026

No findings