Language Packs Overview
Arsenal features an open localization system that enables anyone to create, modify, or replace language packs. This system reduces development burden and enables community contributions.
The Localization System
The system provides:
- Open access to translation strings
- Hot-reloading after application restart
- Community-driven language support
- Easy customization including meme/joke variants
Natively Supported Languages
Three languages are maintained officially:
| Language | Code |
|---|---|
| English | en-GB |
| Italian | it-IT |
| Chinese | zh-CN |
How It Works
Location
Language packs reside in the resources/locale folder within your Arsenal installation:
HD2Arsenal/
└── resources/
└── locale/
├── en-GB/ # English (official)
├── it-IT/ # Italian (official)
├── zh-CN/ # Chinese (official)
└── de-DE/ # German (e.g. community)Detection
On startup, Arsenal:
- Scans the
localefolder - Reads each subfolder’s
_manifest.json - Validates the language pack structure
- Makes valid languages available in Settings
Selection
Users select their preferred language in Settings. The application:
- Loads translation files specified in the manifest
- Applies translations to the interface
- Falls back to English for missing strings
Pack Structure
Each language pack requires:
xx-XX/
├── _manifest.json # Required: Configuration
├── flag.png # Required: Flag image
└── [your translation files]Note: The file organization shown below is the official structure, but you can organize your translations differently. You can use a single file, different folder structures, or any organization that works for you. The important thing is to include all your translation files in the
filesarray within_manifest.json.
Official structure example:
xx-XX/
├── _manifest.json
├── flag.png
└── translations/
├── dialogs.json
├── menus.json
├── misc.json
├── notifications.json
├── onboarding.json
├── settings.json
├── tutorials.json
└── ui.jsonManifest File
The _manifest.json defines the language pack:
{
"label": "English",
"languageCode": "en",
"countryCode": "GB",
"flag": "flag.png",
"files": [
"translations/ui.json",
"translations/dialogs.json",
"..."
]
}The files array must list all translation files that contain your translations, regardless of how you organize them.
Translation Files
JSON files containing key-value pairs:
{
"navbar-label-home": "HOME",
"tooltip-deploy": "Deploy active mods",
"notification-success": "Operation completed"
}Fallback Behavior
When a translation key is missing:
- Check selected language
- If not found - Fallback to English
- If not found - Display the key itself
This ensures the interface remains functional even with incomplete translations.
Why Contribute?
Your language pack can help:
- Non-English speakers use Arsenal comfortably
- Regional communities access the mod manager
- Preserve cultural accessibility in gaming tools
High-quality contributions may be considered for inclusion as officially supported languages in future releases.