translatable

protected String translatable(String filename, String key, String value)

Registers a translatable value with the translation system and returns the display-ready value for the configured language. The source key is deliberately left untouched in the configuration.

Between 10.0.1 and 10.7.x this also ran fileConfiguration.set(key, null) on non-English servers so translated text would only be served from translations/.csv. That was survivable while the strip stayed in memory for user files: the source text of a plugin-generated config lives in a Java field and is re-created on every boot. It stopped being survivable once MagmaCore's CustomConfig#initialize(File) — the user-file / content-package load path — started calling ConfigurationEngine#fileSaverCustomValues after parsing (MagmaCore 2db8d8e, 2026-06-21). The strip is now flushed to the YAML, so the first boot on a translated server erases name / lore / dialog / messages from every downloaded content package, and every boot after that parses a file that no longer has them. Content packages have no Java-side defaults to fall back on, so the text is simply gone.

Keeping the key cannot clobber an existing translation: add reconciles the shipped default against a recorded baseline and only ever writes the en column of the CSV - never the language column a translator owns - and it returns the translated value either way. The only visible difference on a translated server is that the YAML keeps showing the source text, exactly as it does on an English server.


protected List<String> translatable(String filename, String key, List<String> value)

List counterpart of translatable. See that method for why the source key must survive in the configuration.