ArsenalDOCUMENTATION
Language Packs

Creating Packs

Create a complete Arsenal language pack from a folder, manifest, and translations.

This guide walks you through creating a complete language pack for Arsenal from scratch.

Prerequisites

Before starting:

  • Arsenal installed
  • Text editor (VS Code recommended for JSON)
  • Basic understanding of JSON format
  • Flag image for your language (64x64px recommended)

Set Up Your Language Pack

Navigate to your Arsenal installation and create a new folder:

hd2arsenal/resources/locale/xx-XX/

Replace xx-XX with your language and country codes:

  • xx = ISO 639-1 language code (lowercase)
  • XX = ISO 3166-2 country code (uppercase)
LanguageFolder Name
German (Germany)de-DE
French (France)fr-FR
Spanish (Spain)es-ES
Japaneseja-JP
Portuguese (Brazil)pt-BR

Then copy the contents of en-GB as your starting template:

_manifest.json
flag.png
dialogs.json
menus.json
misc.json
notifications.json
onboarding.json
settings.json
tutorials.json
ui.json

Note

This structure is a recommended starting point, but you can organize your translations differently-just make sure to update the files array in _manifest.json accordingly.

Configure Manifest and Flag

Edit _manifest.json with your language details:

{
    "label": "Deutsch",
    "languageCode": "de",
    "countryCode": "DE",
    "flag": "flag.png",
    "files": [
        "translations/notifications.json",
        "translations/dialogs.json",
        "translations/settings.json",
        "translations/ui.json",
        "translations/menus.json",
        "translations/onboarding.json",
        "translations/tutorials.json",
        "translations/misc.json"
    ]
}
FieldDescriptionExample
labelDisplay name in language selector"Deutsch"
languageCodeISO 639-1, lowercase"de"
countryCodeISO 3166-2, uppercase"DE"
flagPath to flag image"flag.png"
filesArray of translation file paths[...]

Important

The files array must include all translation files. You can organize translations in a single file or any structure you prefer, as long as all required keys are present and all files are listed.

Finding codes: ISO 639-1 Languages | ISO 3166-2 Countries

Replace flag.png with an appropriate flag image (64x64px PNG recommended). Download flags from flagcdn.com:

https://flagcdn.com/w40/{countrycode}.png

Translate Files

Open each translation file and replace English text with your translations.

Original (English):

{
    "navbar-label-home": "HOME",
    "navbar-label-mod-management": "MOD MANAGEMENT",
    "tooltip-deploy": "Deploy active mods"
}

Translated (German):

{
    "navbar-label-home": "STARTSEITE",
    "navbar-label-mod-management": "MOD-VERWALTUNG",
    "tooltip-deploy": "Aktive Mods bereitstellen"
}

Rules:

  1. Keep keys unchanged - Only modify the values (right side)
  2. Preserve formatting - Keep uppercase/lowercase patterns
  3. Maintain placeholders - Keep {variable} markers exactly as-is
  4. Check JSON validity - No trailing commas, proper quotes

Testing Your Pack

After completing the steps above:

  1. Save all files - Ensure valid JSON
  2. Restart Arsenal - Required to detect new packs
  3. Open Settings - Go to language selection
  4. Select your language - It should appear in the list
  5. Verify translations - Navigate the interface

Troubleshooting

Language Doesn't Appear

Check manifest:

  • Verify _manifest.json exists
  • Ensure valid JSON syntax
  • Confirm all required fields present

Check folder:

  • Verify folder is in resources/locale/
  • Confirm folder name format xx-XX

Missing Translations

Check files:

  • Verify all files listed in manifest exist
  • Ensure file paths match exactly
  • Check JSON syntax in each file

Broken Characters

Encoding issues:

  • Save files as UTF-8
  • Avoid special encoding characters
  • Test with common special characters

Placeholder Errors

Symptoms: {count} appears as literal text

Fix: Ensure placeholders are preserved exactly:

  • Correct: {count}
  • Wrong: { count }, [count], %count%

On this page