Steve's Simple Storage supports Minecraft's standard localization system. All user-facing strings use Component.translatable() keys defined in en_us.json. Adding a new language is a matter of creating one JSON file and opening a PR.
Find your locale code in Minecraft's locale list. Examples: de_de (German), fr_fr (French), zh_cn (Chinese Simplified), pt_br (Portuguese Brazil).
For the base mod (required):
core/src/main/resources/assets/s3/lang/en_us.json
→ copy to →
core/src/main/resources/assets/s3/lang/<locale>.json
If you also want to translate the Advanced Storage add-on (optional):
Note: The s3-advanced module has moved to a separate repository (steves-advanced-storage). See that repository for its translation files.
Important: Copy from
en_us.json, not from another translated file (e.g.,es_es.json). Copying from a translated file carries over the wrong language's values.
Replace each English value with your translation. Do not change the keys (the part before the :).
Example:
"block.s3.storage_core": "Núcleo de almacenamiento"The warning.s3.break_storage key contains a %s placeholder — keep it in your translation where it makes grammatical sense:
"warning.s3.break_storage": "¡Advertencia! Se perderán %s objetos almacenados. Usa un carro para conservarlos."./gradlew validateLangThis checks that your file has exactly the same keys as en_us.json — no missing or extra keys. Fix any reported mismatches before opening a PR.
Open a pull request to the main branch. Use the PR template checklist. A maintainer will review for completeness and merge.
- Machine translations are accepted as a starting point but must be disclosed in the PR description.
- Partial translations are not accepted — all keys must be translated.
- The
[TRANSLATE]prefix you may see in skeleton files (e.g.,es_es.json) marks untranslated stubs. Do not include this prefix in your finished translation. - If you are fluent in a language not yet listed in issue #44, feel free to add it — leave a comment on the issue so others know it is in progress.
If translation volume grows, we may adopt Crowdin — a web-based platform where contributors can translate without touching git. Files submitted via Crowdin must still pass ./gradlew validateLang.