1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

[1.5.x] Les noms et languages

Discussion dans 'Tutoriels' créé par robin4002, 2 Juin 2013.

  1. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Dans ce tutoriel je vais faire une explication sur tout ce qui concerne les "localization"

    Il s'agit de tout ce qui gère le nom en jeu.
    Dans mes premiers tutoriels, je vous ai apprit à utilisé la méthode suivante :
    Code (java):
    LanguageRegistry.addName(Bloc_tutoriel, "Bloc Tutoriel");
    Il existe d'autres façons pour nommer nos blocs/items/mobs, c'est ce que nous allons voir ici.

    1. Récupérer le nom non localisé :

    Le nom non localisé est défini par la méthode suivante : .setUnlocalizedName("monbloc");
    Il ne s'agit pas du nom complet, car si on regarde dans la class block.java on peut voir ça :
    Code (java):
        public String getLocalizedName()
        {
            return StatCollector.translateToLocal(this.getUnlocalizedName() + ".name");
        }
        public String getUnlocalizedName()
        {
            return "tile." + this.unlocalizedName;
        }
    Donc le nom non localisé de mon bloc est tile.monbloc.name
    Même principe pour les items, c'est item.monitem.name
    Pour les mobs, entity.nomdumob.name et pour les tables créative : itemGroup.nomdelatable

    Et sinon pour les items et les blocs, vous pouvez toujours les gives avec /give p <touche tab pour compléter le nom du joueur> id
    pour les items il faut additionné 256 à l'id dans le code
    Exemple :
    [​IMG]

    Maintenant vous savez comment récupérer le nom non localisé, nous allons donc voir à quoi il sert

    2. Les méthodes pour enregistrer un nom :

    Le plus simple quand on débute reste d'utiliser
    Code (java):
    LanguageRegistry.addName(MonBloc, "Mon Bloc");
    Mais cette méthode ne supporte pas les différents langage, en fait le revient à faire :
    Code (java):
    LanguageRegistry.instance().addNameForObject(MonBloc, "en_US", "Mon Bloc");
    Avec cette méthode, on peut enregistrer pour plusieurs langue :
    Code (java):
    LanguageRegistry.instance().addNameForObject(MonBloc, "en_US", "My Block");
    Code (java):
    LanguageRegistry.instance().addNameForObject(MonBloc, "fr_FR", "Mon Bloc");
    etc ...
    L'autre méthode est d'utiliser
    Code (java):
    LanguageRegistry.instance().addStringLocalization(tile.monbloc.name, "en_US", "My Block");
    Code (java):
    LanguageRegistry.instance().addStringLocalization(tile.monbloc.name, "fr_FR", "Mon Bloc");
    Cette méthode localise le nom, il faut donc passer par le nom non localisé, d'où le 1).

    Du coup vous allez dire que le 1) est inutile puisque la fonction addNameForObject n'a pas besoin du nom non localisé. Nous verrons plus tard que le nom non localisé est très utile avec les metadata, habituez-vous donc à l'utilisez.
    De plus il y a un autre avantage, j'en viens dans le 3).

    3. Un fichier de localization externe :

    Et oui, vous n’êtes pas obliger de mettre tout les noms dans les codes, il est possible de le faire depuis un fichier externe, c'est très avantageux pour les gens qui souhaite contribuer à la traduction de votre mods, plus simple pour l'encodage (problème d'accent) et ça évite d'avoir 50
    LanguageRegistry.instance().addStringLocalization(tile.monbloc.name, "en_US", "My Block");
    car à force d'enregistrer des blocs, des items, des mobs, ça prend beaucoup de place, surtout si vous avez plusieurs langue supporté

    Il existe deux méthodes, une première qui importe le fichier depuis l'archive du mods, et l'autre depuis un URL ! Il est donc possible de faire charger les noms depuis un ftp (ou dropbox) et vous pouvez donc changer à tout moment les noms sans mise à jour du mod.
    Code (java):
    LanguageRegistry.instance().loadLocalization("/mods/nomdumods/lang/en_US.lang", "en_US", false);
    Dans votre dossier mcp/src/minecraft/mods/nomdumods, créez un dossier lang en plus du dossier textures, puis ajoutez un fichier en_US avec l’extension .lang
    Cette extension n'est pas obligatoire, vous pouvez mettre autre chose. Pareil pour le chemin du fichier, vous pouvez le mettre ailleurs.
    Pour le false, c'est une boolean pour savoir si le fichier est du type xml, je vous conseil de laisser en false.
    Pour le fichier, je vous conseil d'utiliser notepad++, et pensez à bien mettre l'encodage en UTF-8 sans bom :
    [​IMG]
    Si vous avez commencé en ANSI, vous pouvez toujours convertir :)
    Utilisez # pour faire des commentaires. Ensuite pour définir les noms, il faut juste mettre <nom non localisé> = <nom localisé>
    Exemple :
    https://github.com/MCNanotech/BetterEnd/blob/master/src/minecraft/mods/BetterEnd/lang/en_US.lang
    Si vous avez votre fichier en xml (avec la boolean sur true) ça donne quelque chose comme ça :
    https://github.com/pahimar/Equivalent-Exchange-3/blob/master/resources/mods/ee3/lang/en_US.xml

    Pour charger le fichier depuis un FTP, c'est la même fonction, remplacez juste le chemin du fichier par l'url

    Voila fin du tutoriel.
     
    • Utile Utile x 2
  2. _Tryall_

    _Tryall_ Mineur de Fer

    Inscrit:
    30 Jan 2012
    Messages:
    501
    Points:
    109
    Sexe:
    Homme
    J'ai pas trop trop compris :(

    Par exemple j'ai créé un Item "Cannelle"

    J'ouvre le fichier "en-US.lang", et je met "Item.Cannelle.name=Cannelle"
    Puis "encodage" en haut, et "UTF-8 (Sans ROM)"

    Mais quand je lance le débug, MinecraftCrash...


    Je pense avoir mal saisit ton Tutoriels et je voudrais vraiment utiliser la technique du fichier .lang car j'ai encore une trentaine d'Item a mettre, et j'utilise aucune IP (Minecraft Vanilla)

    Merci :)
     
  3. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Niveau vinalle je connais pas trop, j'ai horreur de toucher au classe de minecraft. Tu as quoi comme erreur ?
     
  4. _Tryall_

    _Tryall_ Mineur de Fer

    Inscrit:
    30 Jan 2012
    Messages:
    501
    Points:
    109
    Sexe:
    Homme
    C'est bon j'ai trouvé, faut juste supprimer le META-INF dans le dossier "jars" où on peut trouver le dossier "eclipse"
     
  5. pulganr

    pulganr Nouveau

    Inscrit:
    23 Juin 2013
    Messages:
    5
    Points:
    32
    Sexe:
    Homme
    Petite question, si ont met les nom sur un FTP si la personne est en mode hors connections elle aura les nom?
     
  6. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Non, si tu mets les noms sur un url internet il faut internet pour les charger, c'est logique.
     
  7. Guilepro

    Guilepro Nouveau

    Inscrit:
    25 Juil 2015
    Messages:
    2
    Points:
    0
    Sexe:
    Homme
    Help, ou faut-t-il entrer ce code que tu cite dans le tuto?

    Code (java):
    LanguageRegistry.instance().loadLocalization("/mods/nomdumods/lang/en_US.lang", "en_US", false);

    J'essaye d'obtenir le pixelmon 1.5.2 en fr, j'ai le fichier lang mais je sais pas quoi faire après...
    Comment l'activera-t-on une fois en jeu également aussi?
     
  8. Nolan-XX

    Nolan-XX Modérateur
    Staff

    Inscrit:
    29 Déc 2012
    Messages:
    10 234
    Points:
    304
    Sexe:
    Homme
    Merci de ne pas remonter les vieux topics ...
     
  9. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    La 1.5.x est une ancienne version qui ne devrait plus être utilisé.
    Et cette ligne il faut la mettre dans le code du mod.
     
  10. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    C'est gentil, mais :
    La 1.5.2 c'est vieux ... Depuis la 1.6 ce n'est plus comme ça.
     

Partager cette page