Skip to content
ValentinJDT edited this page Apr 13, 2024 · 14 revisions

Bienvenue dans le wiki de MultiLanguageAPI!

Initialiser l'api

Après avoir implémenté l'api dans votre projet, importez dans votre classe principale MultiLanguageAPI :

import org.bukkit.plugin.java.JavaPlugin;
import fr.mrcoq.lib.multilanguageapi.MultiLanguageAPI;

public final class LangTest extends JavaPlugin {

    private static MultiLanguageAPI multiLanguageApi;

    @Override
    public void onEnable() {
        // Plugin startup logic

        multiLanguageApi = new MultiLanguageAPI(this);
    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }
    
    public static MultiLanguageAPI getMultiLanguageAPI() {
        return multiLanguageApi;
    }

}

Définir des messages

Lorsque vous lancez votre plugin, deux dossiers sont créés :

MultiLanguageAPI

Le dossier MultiLanguageAPI est généré dans le dossier plugins.
Il contient le fichier config.yml de l'api. Vous pouvez définir la langue par défaut pour l'ensemble de tous les plugins.
Cette langue par défaut est chargée quand un joueur a une langue non supportée dans son client.

langs

Chaque plugin qui charge l'api a un dossier langs qui se génère dans son propre dossier de plugin.
Ce dossier est vide. Vous pouvez créer ici les fichiers de traduction de votre plugin.
Pour information, les noms de fichiers doivent correspondre aux différentes langues valides. (Celles-ci sont listées dans le fichier config.yml de MultiLanguageAPI).

Voici un exemple de fichier :

fr.yml

command:
  basic:
    message: "Commande exécutée avec succès !"

Récupérer un message

Pour récupérer un message il existe différentes solutions :
String getString(Player player, String path)
String getString(Lang lang, String path)

Il y a plusieurs paramètres :

  • player : Le joueur qui recevra le message. Sa langue est calculée grâce à la langue de son client.
  • lang : La langue à choisir pour récupérer le message.
  • path : Le chemin du message à chercher dans la configuration.

Ce système fonctionne comme la classe FileConfiguration.

Voici un exemple dans une commande :

import fr.mrcoq.lib.multilanguageapi.MultiLanguageAPI;
import fr.mrcoq.lib.multilanguageapi.exception.LangFileNotFoundException;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class BasicCommand implements CommandExecutor {

    private MultiLanguageAPI multiLanguageApi = LangTest.getMultiLanguageAPI();

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

        if(!(sender instanceof Player player)) {
            sender.sendMessage("§4You can't use this command !");
            return true;
        }

        try {
            player.sendMessage(multiLanguageApi.getString(player, "command.basic.message"));
        } catch(LangFileNotFoundException e) {
            e.printStackTrace();
        }
        
        return true;
    }
}