.properties files in the repository and synchronized with Crowdin, an online translation platform. You can contribute translations either directly via Crowdin or by editing the .properties files in the repository.
How translations work
OpenRocket’s GUI elements never display hard-coded text. Instead, each widget retrieves its label through aTranslator object by passing a key:
Translator looks up the key in the active language file and returns the translated string. If a key is not present in the active language file, it falls back to the English base file.
Language files
All translation files live incore/src/main/resources/l10n/:
messages.properties— the English base file; all keys are defined heremessages_xx.properties— per-language file, wherexxis the IETF language tag (for example,messages_fr.propertiesfor French)
File format
Language files use a simple key-value format. Lines starting with! are comments:
{ClassName}.{widgetType}.{ShortDescription}. For example, RocketPanel.lbl.ViewType is the ViewType label (lbl) used by the RocketPanel class.
The corresponding Dutch translation looks like this:
Modifying an existing translation
Find the language file
Open
core/src/main/resources/l10n/messages_xx.properties for the language you want to update. For example, messages_fr.properties for French.Edit the translation
Find the key you want to change and update its value. Do not change the key itself — only the translated text on the right-hand side.
Submit a pull request
Commit your changes and open a pull request. The maintainers will review and merge the update.If you are not familiar with Git, you can instead open an issue and paste your changes there.
Creating a new translation
Create the language file
Create a new file
messages_xx.properties in core/src/main/resources/l10n/, where xx is the language code. For example, messages_fi.properties for Finnish.Copy the full contents of messages.properties into the new file, then translate the English values into your language.Register the new locale
Open
swing/src/main/java/info/openrocket/swing/gui/util/SwingPreferences.java and add the new language code to the SUPPORTED_LOCALES array:Credit yourself
Add your name to the list of translation contributors in two places:
swing/src/main/java/info/openrocket/swing/gui/dialogs/AboutDialog.java— edit theCREDITSstring and add your details after theTranslations by:tag.README.md— add your name in the translations section.
Submit a pull request
Commit all your changes (new language file,
SwingPreferences.java, AboutDialog.java, and README.md) and open a pull request.If you are not familiar with Git, open an issue with your translation and the maintainers will handle the pull request for you.Translated strings that are identical to the English base (for example, abbreviations or proper nouns) can simply be left as-is in the language file. The fallback to English is automatic.