LanguageLib is a simple library to make it easier to handle multi languages
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.cassha.LanguageLib</groupId>
<artifactId>languagelib</artifactId> <!-- languagelib-universal, languagelib-bukkit, languagelib-bungee -->
<version>2.0.6-SNAPSHOT</version>
</dependency>
Available implementations is BungeeLanguageLib and BukkitLanguageLib
LanguageLib languageLib = BukkitLanguageLib.builder(your plugin, "language").build();
In any case, those who want to put their own implementations can use
LanguageLib languageLib = BukkitLanguageLib.builder(plugin, "en")
.setFileLoader(fileLoader)
.setFilesManageable(filesManageable)
.setTranslationManager(translationManager)
.setI18n(i18n)
.build();
public void sendMessage(Player player) {
TranslatableMessage translateMessage = languageLib.getTranslationManager().getTranslation("path");
// Set variable from message
translateMessage.setVariable("%player_name%", player.getName());
// Set color from message
translateMessage.colorize();
//Get message
String message = translateMessage.getMessage("language");
player.sendMessage(message);
}
public void sendMessages(Player player) {
TranslatableMessage translateMessage = languageLib.getTranslationManager().getTranslation("path");
// Set variable from messages
translateMessage.setVariable("%player_name%", player.getName());
// Set color from messages
translateMessage.colorize();
//Get messages in List format
List<String> message = translateMessage.getMessages("language");
message.forEach(player::sendMessage);
}
public class TestPlaceholderApplier implements PlaceholderApplier {
public <T> String apply(T holder, String text) {
if (!(holder instanceof Player)) {
return text;
}
Player player = (Player) player;
return text.replace("%player_name%", player.getName());
}
}
We can add 1 single placeholder
translateMessage#addPlaceholder(holder, new YourPlaceholder())
or multiple
translateMessage#addPlaceholders(holder, placeholders...);
The default library generates the files in this way "language_% lang% .yml", we can change this in the FileLoader %lang% will be replaced by the language that is being loaded
fileLoader#setFormat("language_%lang%.yml")