{"id":41125,"date":"2024-02-05T09:20:21","date_gmt":"2024-02-05T08:20:21","guid":{"rendered":"https:\/\/esx-scripts.com\/?p=41125"},"modified":"2026-08-09T14:39:02","modified_gmt":"2026-08-09T12:39:02","slug":"traduction-de-scripts-fivem","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/fr\/fivem-scripts-translation\/","title":{"rendered":"Comment traduire des scripts FiveM en toute s\u00e9curit\u00e9 (Manuel + IA)"},"content":{"rendered":"<p><strong>Traduisez les valeurs de locale existantes de la ressource tout en pr\u00e9servant les cl\u00e9s, les espaces r\u00e9serv\u00e9s, les codes de contr\u00f4le et la syntaxe des fichiers.<\/strong> L'\u00e9dition manuelle offre un contr\u00f4le maximal ; l'IA peut acc\u00e9l\u00e9rer un lot r\u00e9vis\u00e9. Aucune de ces m\u00e9thodes ne permet de traduire en toute s\u00e9curit\u00e9 toutes les cha\u00eenes entre guillemets du code source.<\/p>\n<h2 id=\"find-the-supported-locale-system\">Trouvez le syst\u00e8me de locales pris en charge<\/h2>\n<p>Lisez la documentation de la ressource et <code data-no-translation=\"\" translate=\"no\">fxmanifest.lua<\/code>. Recherchez les r\u00e9pertoires de locales, les dictionnaires JSON\/Lua, les fichiers de traduction NUI et un param\u00e8tre de langue. Utilisez le syst\u00e8me fourni par le cr\u00e9ateur. N'ajoutez pas <code data-no-translation=\"\" translate=\"no\">lua54<\/code> comme correctif de traduction ; cette option de manifeste est obsol\u00e8te et sans rapport avec la localisation.<\/p>\n<h2 id=\"back-up-and-inventory-visible-strings\">Sauvegardez et inventoriez les cha\u00eenes visibles<\/h2>\n<ol>\n<li>Copiez la ressource ou cr\u00e9ez une branche de contr\u00f4le de version.<\/li>\n<li>Enregistrez la version exacte et la langue configur\u00e9e.<\/li>\n<li>Listez les \u00e9tiquettes visibles par le joueur, les notifications, le texte des menus et les messages d'aide.<\/li>\n<li>Excluez les cl\u00e9s, les noms d'\u00e9v\u00e9nements, les commandes, les colonnes de base de donn\u00e9es, les chemins de fichiers et les identifiants, sauf si la documentation les marque explicitement comme traduisibles.<\/li>\n<li>Cr\u00e9ez un glossaire pour les termes du framework, les m\u00e9tiers, les objets et la terminologie du serveur.<\/li>\n<\/ol>\n<h2 id=\"manual-method-edit-values-only\">M\u00e9thode manuelle : modifier uniquement les valeurs<\/h2>\n<p>Dans un \u00e9diteur sensible \u00e0 la syntaxe tel que Notepad++, modifiez la valeur lisible par l'homme sur le c\u00f4t\u00e9 droit tout en gardant la cl\u00e9 et la structure intactes.<\/p>\n<pre data-no-translation=\"\" translate=\"no\"><code data-no-translation=\"\" translate=\"no\">{\n  \"garage_open\": \"Open garage\",\n  \"price_label\": \"Price: %s\"\n}<\/code><\/pre>\n<p>Pour une autre langue, traduisez <code data-no-translation=\"\" translate=\"no\">Open garage<\/code> et <code data-no-translation=\"\" translate=\"no\">Price<\/code>, mais pr\u00e9servez <code data-no-translation=\"\" translate=\"no\">garage_open<\/code>, <code data-no-translation=\"\" translate=\"no\">price_label<\/code> et <code data-no-translation=\"\" translate=\"no\">%s<\/code>. Conservez les s\u00e9quences d'\u00e9chappement, les guillemets, les virgules, les accolades, les codes couleur tels que <code data-no-translation=\"\" translate=\"no\">~r~<\/code>, et les jetons de format tels que <code data-no-translation=\"\" translate=\"no\">%s<\/code>, <code data-no-translation=\"\" translate=\"no\">%d<\/code> ou <code data-no-translation=\"\" translate=\"no\">{name}<\/code> \u00e0 l'identique.<\/p>\n<h2 id=\"ai-method-send-a-constrained-values-only-batch\">M\u00e9thode IA : envoyez un lot restreint contenant uniquement des valeurs<\/h2>\n<p>Fournissez uniquement les entr\u00e9es de locale n\u00e9cessaires \u00e0 la traduction, et non l'int\u00e9gralit\u00e9 de la ressource priv\u00e9e, la configuration du serveur, la cl\u00e9 de licence, le webhook, les donn\u00e9es du joueur ou l'exportation de la base de donn\u00e9es. Indiquez la langue source et cible, le glossaire et les jetons invariants. Exigez le m\u00eame format structur\u00e9 et demandez au mod\u00e8le de laisser les cl\u00e9s et tous les espaces r\u00e9serv\u00e9s inchang\u00e9s.<\/p>\n<p>La sortie de l'IA est un brouillon. Les mod\u00e8les peuvent renommer une cl\u00e9, modifier la ponctuation, traduire une commande, supprimer un espace r\u00e9serv\u00e9 ou renvoyer du JSON\/Lua invalide tout en paraissant s\u00fbrs d'eux. Examinez le diff entr\u00e9e par entr\u00e9e.<\/p>\n<h2 id=\"validate-before-starting-the-resource\">Validez avant de d\u00e9marrer la ressource<\/h2>\n<ul>\n<li>Analysez le JSON avec un analyseur JSON et le Lua avec le flux de travail de lint\/test pris en charge par le projet.<\/li>\n<li>Comparez l'ensemble complet des cl\u00e9s avec la locale source.<\/li>\n<li>V\u00e9rifiez la parit\u00e9 exacte des espaces r\u00e9serv\u00e9s et des codes de contr\u00f4le pour chaque entr\u00e9e.<\/li>\n<li>Recherchez les modifications accidentelles apport\u00e9es aux commandes, aux noms d'\u00e9v\u00e9nements et aux URL.<\/li>\n<li>Inspectez le diff \u00e0 la recherche de commentaires ajout\u00e9s ou de d\u00e9limiteurs de code Markdown.<\/li>\n<\/ul>\n<h2 id=\"test-in-the-ui\">Testez dans l'interface utilisateur<\/h2>\n<p>D\u00e9marrez les param\u00e8tres r\u00e9gionaux traduits sur la pr\u00e9production et parcourez chaque flux visible : menu, notification, erreur, confirmation, validation de saisie et texte d'aide. V\u00e9rifiez la troncature du texte, les sauts de ligne, les caract\u00e8res accentu\u00e9s, les erreurs de pluriel\/contexte et le comportement de droite \u00e0 gauche le cas \u00e9ch\u00e9ant. Examinez les journaux du navigateur\/NUI, de la console F8 et du serveur.<\/p>\n<h2 id=\"build-a-reusable-translation-memory\">Cr\u00e9ez une m\u00e9moire de traduction r\u00e9utilisable<\/h2>\n<p>Stockez les paires source\/valeur approuv\u00e9es, les d\u00e9cisions du glossaire et les notes du r\u00e9viseur en dehors du package du fournisseur. Lorsque la ressource est mise \u00e0 jour, comparez les nouveaux param\u00e8tres r\u00e9gionaux source avec la version pr\u00e9c\u00e9dente et ne traduisez que les cl\u00e9s ajout\u00e9es ou modifi\u00e9es. N'\u00e9crasez jamais aveugl\u00e9ment les nouveaux param\u00e8tres r\u00e9gionaux du fournisseur par un ancien fichier complet.<\/p>\n<h2 id=\"rollback-safely\">Revenir en arri\u00e8re en toute s\u00e9curit\u00e9<\/h2>\n<p>Gardez les param\u00e8tres r\u00e9gionaux et la configuration d'origine \u00e0 disposition. Si l'analyse, l'interface ou le comportement d'ex\u00e9cution r\u00e9gresse, restaurez les fichiers connus comme fonctionnels, red\u00e9marrez la ressource et v\u00e9rifiez que la langue par d\u00e9faut fonctionne. Corrigez la traduction dans une nouvelle version plut\u00f4t que de modifier la production sans diff.<\/p>","protected":false},"excerpt":{"rendered":"<p>Traduisez les valeurs de locale existantes de la ressource tout en pr\u00e9servant les cl\u00e9s, les espaces r\u00e9serv\u00e9s, les codes de contr\u00f4le et la syntaxe des fichiers. L'\u00e9dition manuelle offre un contr\u00f4le maximal ; l'IA peut acc\u00e9l\u00e9rer un lot r\u00e9vis\u00e9. Aucune m\u00e9thode ne rend s\u00fbr la traduction de chaque cha\u00eene entre guillemets dans le code source.<\/p>","protected":false},"author":1,"featured_media":180133,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2877,1899],"tags":[3001],"class_list":["post-41125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-free-fivem-job-scripts","category-tutorials","tag-fivem-script"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/41125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/comments?post=41125"}],"version-history":[{"count":3,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/41125\/revisions"}],"predecessor-version":[{"id":215701,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/41125\/revisions\/215701"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media\/180133"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media?parent=41125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/categories?post=41125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/tags?post=41125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}