Skip to Content
Language PacksOverview

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:

LanguageCode
Englishen-GB
Italianit-IT
Chinesezh-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:

  1. Scans the locale folder
  2. Reads each subfolder’s _manifest.json
  3. Validates the language pack structure
  4. Makes valid languages available in Settings

Selection

Users select their preferred language in Settings. The application:

  1. Loads translation files specified in the manifest
  2. Applies translations to the interface
  3. 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 files array 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.json

Manifest 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:

  1. Check selected language
  2. If not found - Fallback to English
  3. 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.