Skip to content
ValentinJDT edited this page Jun 16, 2023 · 14 revisions

Bienvenue dans le wiki de LangAPI !

Initialiser l'api

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

import org.bukkit.plugin.java.JavaPlugin;

public final class LangTest extends JavaPlugin {

    private static LangAPI langAPI;

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

        this.langAPI = new LangAPI(this);
    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }
    
    public static LangAPI getLangAPI() {
        return langAPI;
    }

}

Définir des messages

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

LangAPI

Le dossier LangAPI 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é 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 LangAPI).

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é 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.langapi.LangAPI;
import fr.mrcoq.lib.langapi.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 LangAPI langAPI = LangTest.getLangAPI();

    @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(langAPI.getString(player, "command.basic.message"));
        } catch(LangFileNotFoundException e) {
            e.printStackTrace();
        }
        
        return true;
    }
}
Clone this wiki locally