多国语言支持

This commit is contained in:
tianmo committed 2026-10-22 18:37:30 +08:00
1 parent b98c0333e6
commit 04de5e5a8e
23 files changed
+7795 -1279

No files matched your search

+853
View File
@@ -0,0 +1,853 @@
{
"app": {
"resizeTimeline": "Faites glisser pour ajuster la hauteur de la timeline",
"systems": "système",
"particlesBones": "Particules (os)",
"rootBone": "os de la racine",
"hudTip": "Zoom sur la molette · Clic gauche pour faire glisser la toile",
"title": "Éditeur de particules Spine - Yeomai"
},
"common": {
"close": "Fermer",
"reset": "Réinitialiser",
"add": "Ajouter",
"remove": "Retirer",
"delete": "Supprimer",
"clear": "Effacer",
"cancel": "Annuler",
"confirm": "Confirmer",
"none": "Aucun",
"enabled": "Activé",
"disabled": "Désactivé",
"fixed": "Fixe",
"random": "Aléatoire",
"curve": "Courbe",
"followExport": "Suivre l’export",
"linear": "Linéaire",
"bezier": "Bézier",
"above": "Au-dessus",
"below": "En dessous",
"left": "Gauche",
"right": "Droite",
"seconds": "s",
"frames": "images"
},
"toolbar": {
"settings": "Paramètres",
"undo": "Annuler (Ctrl+Z)",
"pan": "Déplacer le canevas (Q)",
"translate": "Déplacement (W)",
"rotate": "Rotation (E)",
"scale": "Échelle (R)",
"zoomIn": "Zoom avant",
"zoomOut": "Zoom arrière",
"fitView": "Ajuster le canevas",
"toggleGrid": "Afficher/masquer la grille",
"resetView": "Réinitialiser la vue",
"background": "Arrière-plan",
"backgroundSettings": "Paramètres de l’arrière-plan",
"changeBackground": "Remplacer l’image",
"uploadBackground": "Importer une image",
"clearBackground": "Effacer l’arrière-plan",
"noBackground": "Aucune image",
"backgroundX": "Décalage X de l'image d'arrière-plan",
"backgroundY": "Décalage Y de l'image d'arrière-plan",
"backgroundOpacity": "Transparence de l’image d’arrière-plan",
"opacity": "Opacité",
"help": "Aide",
"openHelp": "Ouvrir l’aide"
},
"settings": {
"title": "Paramètres système",
"layout": "Disposition de l'interface",
"parameterPanelPosition": "Emplacement du panneau de paramètres",
"panelOnRight": "Le panneau de paramètres est affiché à droite",
"history": "Historique des opérations",
"maxUndo": "Nombre maximum de pas en arrière",
"canvasGuides": "Affichage auxiliaire en toile",
"emitter": "point de lancement",
"bones": "Connexion osseuse",
"bonePointSize": "Taille du dessin de la pointe osseuse",
"boneAxisSize": "Taille du dessin des axes",
"skinMesh": "maille écorchée",
"enableTicks": "Activer les ticks",
"tickFontSize": "Taille du texte à l'échelle",
"tickWidth": "épaisseur de la graduation",
"axisColor": "couleur de l'axe",
"showAxisLabels": "Afficher la valeur de l'échelle",
"cacheNote": "L'ensemble des paramètres du système sont automatiquement enregistrés dans le navigateur actuel"
},
"config": {
"title": "Configuration",
"save": "Enregistrer",
"saveTitle": "Enregistrez toutes les configurations de l'éditeur (Ctrl+S)",
"load": "Charger",
"loadTitle": "Charger la configuration de l'éditeur local",
"presets": "Liste des préréglages",
"selectPreset": "Choisir un préréglage",
"noPresets": "Aucun préréglage",
"saved": "La configuration a été enregistrée localement",
"loading": "Chargement de la configuration…",
"loaded": "Chargé : {name}",
"presetLoading": "Chargement des préréglages…",
"presetLoaded": "Préréglage chargé : {name}",
"presetNamingError": "{message}, veuillez vérifier le nom de fichier par défaut",
"presetTransferTitle": "Charger le préréglage",
"presetDownloading": "Téléchargement de {file}…",
"presetParsing": "Analyse de la configuration par défaut...",
"presetRestoring": "Analyse et restauration des ressources par défaut...",
"presetComplete": "Chargement du préréglage terminé",
"presetListError": "Impossible de lire la liste des préréglages",
"presetReadError": "Impossible de lire le préréglage : {file}"
},
"presets": {
"particleSweep": "1.Balayage de particules",
"barBlocks": "2.Blocs rectangulaires",
"forceTrail": "3.Traînée de champ de force",
"lightningSequence": "4.Séquence d’éclairs",
"texturePivot": "5.Pivot de texture",
"subEmitter": "6.Sous-émetteur"
},
"curve": {
"bezierHint": "Faites glisser la poignée carrée pour ajuster l'arc · Double-cliquez sur un espace vide pour en créer un nouveau · Double-cliquez sur un nœud pour le supprimer",
"linearHint": "Double-cliquez sur un espace vide pour en créer un nouveau. Double-cliquez sur un nœud pour le supprimer. Faites glisser un nœud pour l'ajuster.",
"resetTitle": "Restaurer la courbe par défaut"
},
"gradient": {
"addTitle": "Double-cliquez sur le ruban pour ajouter une marque de couleur",
"color": "Code couleur",
"colorValue": "Valeur de couleur de l'échelle de couleurs",
"position": "Position de la marque de couleur",
"addMiddle": "Ajouter de la couleur au milieu",
"delete": "Supprimer le patch de couleur actuel",
"hint": "Double-cliquez sur la bande de couleur pour en ajouter une nouvelle · Faites glisser la marque de couleur pour ajuster sa position · Double-cliquez sur la marque de couleur pour la supprimer"
},
"attributeControl": {
"angleOffset": "Décalage angulaire",
"value": "valeur numérique",
"lower": "limite inférieure",
"upper": "limite supérieure",
"rangeLower": "Limite inférieure de la plage",
"rangeUpper": "Gamme supérieure",
"curveInput": "Entrée de courbe →",
"direction": "Direction du lancement"
},
"pivot": {
"title": "point pivot de la carte",
"zoomOut": "dézoomer",
"zoomIn": "agrandir",
"expand": "Zoom en mode plein écran",
"interaction": "Clic gauche/glissez pour définir le point pivot · Clic droit pour faire glisser la toile · Molette de défilement pour zoomer",
"previewAlt": "Aperçu du point pivot",
"noImage": "Aucune image sélectionnée",
"resetCenter": "Repositionner au milieu (50 %, 50 %)",
"coordinates": "Coordonnées du point de l'axe (%)",
"rotationTest": "Test de rotation des axes",
"static": "toujours",
"spin": "rotation",
"swing": "balançoire",
"rotationAlt": "Essai de rotation",
"topLeft": "en haut à gauche",
"top": "Tout de suite",
"topRight": "en haut à droite",
"left": "Droite gauche",
"center": "milieu",
"right": "Droite",
"bottomLeft": "en bas à gauche",
"bottom": "Directement en dessous·en bas",
"bottomRight": "en bas à droite"
},
"image": {
"chooseSequence": "Sélectionnez des images de séquence",
"chooseLocal": "Sélectionnez une image locale",
"subfolder": "sous-dossier",
"name": "nom",
"restore": "Restaurer {name}",
"deleteResource": "Supprimer les ressources d'images",
"imageMode": "Mode image",
"fixed": "Image fixe",
"sequence": "Séquence",
"playbackMode": "mode de lecture",
"onceHide": "Une fois, masquer à la fin",
"onceHold": "Une fois, conserver la dernière image",
"loopForward": "Boucle avant",
"loopReverse": "Boucle arrière",
"playbackFps": "Fréquence d'images de lecture",
"chooseSequenceMulti": "Sélectionner des images de séquence (sélections multiples)",
"weight": "Poids %",
"unlockWeight": "Déverrouiller le verrouillage des proportions",
"lockWeight": "Verrouiller la proportion actuelle",
"pivot": "Pivot de texture",
"collapsePivot": "Réduire l’ajustement du point pivot",
"expandPivot": "Développer l'ajustement du point pivot",
"pivotModal": "Point d'axe de rotation de texture, raffinement de grande image",
"pivotModalDesc": "Cliquez ou faites glisser n'importe où sur la carte ci-dessous pour définir avec précision le centre de rotation/oscillation des particules.",
"pivotZoomHint": "Prend en charge un grossissement de 100 % à 400 %, une visée précise vers la pointe ou la racine :",
"confirmPivot": "Déterminer et enregistrer le point pivot",
"noSequence": "Aucune image de séquence sélectionnée",
"firstFrame": "Cadre 1",
"firstImage": "première photo",
"lastImage": "dernière photo",
"pivotOn": "Ouvert : X {x}% | Y {y}%",
"pivotOff": "Non activé, la valeur par défaut se situe autour du centre de l'image (50 %, 50 %)",
"pivotCustom": "Le point pivot a été personnalisé : X {x}% | Y {y}%",
"frameCountOne": "1 cadre · {name}",
"frameCountMany": "Cadre {count} · {first} → {last}",
"sequenceSelected": "L'image {count} a été sélectionnée et lue dans l'ordre {first}-{last}."
},
"timeline": {
"play": "Jouer(D)",
"pause": "Pause (D)",
"toStart": "Revenir à la première image (S)",
"previous": "image précédente",
"next": "image suivante",
"toEnd": "Passer à la dernière image",
"continuousLoop": "Lecture en boucle continue",
"abLoop": "Boucle indépendante de plage A/B",
"abLoopShort": "Boucle AB",
"abRange": "Intervalle de cycle AB",
"playbackStart": "Image de début de lecture personnalisée",
"playbackEnd": "Image de fin de lecture personnalisée",
"startFrame": "Lire l'image de début",
"endFrame": "Lire l'image de fin",
"frame": "cadre",
"emission": "Émission",
"particleLife": "Particules actives",
"spineAnimation": "Animation Spine",
"ownerAnimation": "Animation associée",
"setOwnerAnimation": "Définir l'animation à laquelle appartient le système de particules actuel",
"chooseOwnerAnimation": "Sélectionnez l'animation",
"animationName": "Nom de l'animation",
"renameAnimation": "Renommer l'animation actuelle",
"rename": "Rebaptiser",
"newAnimation": "+ Nouveau",
"keepOneAnimation": "Au moins une animation doit être conservée",
"spinePreview": "Animation d'aperçu Spine",
"noSpineAnimation": "Aucune animation Spine disponible",
"none": "aucun",
"systemName": "Système {index}",
"dragLoopDuration": "Durée du segment de boucle de glisser",
"dragEmissionDuration": "Durée du glissement",
"dragSpineStart": "Faites glisser pour ajuster l'heure de début de l'animation",
"noAnimationData": "Il n'y a actuellement aucune donnée d'animation à afficher.",
"animationNameEmpty": "Le nom de l'animation ne peut pas être vide",
"animationNameDuplicate": "Les noms d'animation ne peuvent pas être répétés",
"animationRenameFailed": "Impossible de modifier le nom de l'animation",
"zoomIn": "agrandir",
"zoomOut": "dézoomer",
"zoomFit": "Modéré",
"frameStatus": "Image {current} / {total}"
},
"emission": {
"title": "Mode d’émission",
"reset": "Réinitialiser les paramètres du mode de transmission",
"stream": "Continu",
"burst": "Rafale",
"normalStream": "Continu standard",
"loopStream": "Boucle continue",
"rate": "Taux d’émission",
"duration": "Durée d’émission",
"loopDuration": "Durée de lancement (f)",
"generateStart": "Générer une animation de boucle de démarrage",
"generateEnd": "Générer une animation de fin de boucle",
"customDuration": "Préciser la durée",
"auto": "Automatique {frames}f",
"startLoopDuration": "Durée du segment de démarrage de la boucle",
"endLoopDuration": "Durée du segment de fin de boucle",
"loopWarning": "Le mode de persistance de boucle ne prend pas en charge le suivi d'os et le suivi de chemin ; les paramètres de suivi des particules seront restaurés aux valeurs par défaut lors de l'entrée ou de la sortie.",
"burstCount": "Quantité par rafale",
"delay": "Délai",
"shapeTitle": "Forme de l’émetteur",
"shapeReset": "Réinitialiser les paramètres de forme de l'émetteur",
"shape": "forme",
"point": "Point",
"circle": "Cercle",
"rect": "Rectangle",
"cone": "Cône",
"path": "Chemin",
"innerDiameter": "diamètre intérieur",
"outerDiameter": "diamètre extérieur",
"innerRadius": "rayon intérieur",
"outerRadius": "rayon extérieur",
"coneDirection": "Orientation conique",
"coneAngle": "Angle d'ouverture conique",
"innerWidth": "largeur intérieure",
"innerHeight": "Haut à l'intérieur",
"outerWidth": "Largeur extérieure",
"outerHeight": "Très haut",
"selectPath": "Sélectionnez le chemin",
"noPath": "Pas de chemin (émission ponctuelle)",
"birthDistribution": "répartition des naissances",
"evenDistribution": "Distribution fixe équidistante",
"randomDistribution": "distribution aléatoire",
"emissionAngle": "angle de lancement",
"radial": "Radial (centre vers l'extérieur)",
"pathNormal": "perpendiculaire au chemin",
"pathTangent": "dans la direction du chemin",
"fixedAngle": "angle fixe",
"baseAngle": "angle de base",
"randomRange": "plage aléatoire",
"showShape": "montrer la forme"
},
"attributes": {
"title": "Attributs des particules",
"reset": "Réinitialiser les paramètres d'attributs de particules",
"initialParams": "Valeurs initiales",
"initialLife": "cycle de vie initial",
"randomSample": "Échantillonnage aléatoire →",
"initialSpeed": "vitesse initiale",
"initialScale": "mise à l'échelle initiale",
"uniform": "unifié",
"separateXY": "Séparation XY",
"scaleX": "ZoomX",
"scaleY": "Zoom Y",
"initialRotation": "rotation initiale",
"lifecycleTitle": "Évolution pendant la durée de vie",
"speedOverLife": "vitesse du cycle de vie",
"speedMultiplier": "multiplicateur de vitesse",
"lifeTo": "cycle de vie →",
"scaleOverLife": "Échelle pendant le cycle de vie",
"scaleMultiplier": "Taux de zoom",
"multiplierX": "Grossissement",
"multiplierY": "Grossissement Y",
"rotationOverLife": "Rotation pendant le cycle de vie",
"rotationSpeed": "Vitesse de rotation"
},
"appearance": {
"title": "Apparence et ressources",
"reset": "Réinitialiser les paramètres d'apparence et de ressources",
"opacity": "Opacité",
"curveMode": "Mode courbe",
"transparent": "0 (transparent)",
"opaque": "1(opaque)",
"renderLayer": "Calque de rendu (slot Spine)",
"top": "niveau supérieur",
"spineSlot": "Emplacement Spine",
"selectSpine": "Veuillez sélectionner Spine",
"noSpine": "Aucun disponible Spine",
"noSlot": "Aucun créneau sélectionné pour l'instant",
"reselect": "Sélectionner de nouveau",
"selectSlot": "Sélectionnez un emplacement",
"searchSlots": "Rechercher le nom de l'emplacement ou de l'accessoire…",
"searchSlotsAria": "Rechercher des créneaux",
"emptySlot": "Emplacement vide",
"noMatchingSlots": "Aucun emplacement correspondant",
"above": "au-dessus de cette photo de machine à sous",
"below": "sous cette photo de machine à sous",
"followAttachment": "Afficher et masquer avec les accessoires de machines à sous",
"previewOnly": "Le réglage du niveau d'affichage affecte uniquement l'aperçu de l'éditeur et n'affecte pas les données exportées.",
"imageResources": "Ressources d’image",
"addImage": "Ajouter des ressources d'images",
"scale": "Zoom",
"color": "couleur",
"fixedColor": "couleur fixe",
"randomColor": "couleur aléatoire",
"lifetime": "cycle de vie",
"normal": "Normal",
"add": "Ajout",
"multiply": "Multiplication",
"screen": "Écran",
"fixedColorValue": "valeur de couleur fixe",
"randomColorHint": "Chaque particule choisit au hasard une couleur sur le ruban à sa naissance et reste inchangée tout au long de son cycle de vie.",
"independentAlpha": "Opacité indépendante",
"off": "Désactivé"
},
"renderLayer": {
"slotLabelAbove": "{spine} / {slot} · Photo ci-dessus",
"slotLabelBelow": "{spine} / {slot} · Sous la photo",
"resolvedAbove": "Rendu au-dessus de l'image {slot} et en dessous de son emplacement",
"resolvedBetween": "Rendu entre {previous} et {slot}",
"warningNoSpine": "Aucun Spine n'est chargé et les particules sont temporairement affichées en haut.",
"warningNoSelection": "Spine n'a pas encore été sélectionné et les particules sont temporairement affichées en haut.",
"warningMissingSpine": "La cible Spine n'existe pas et les particules sont temporairement affichées en haut.",
"warningNotReady": "La cible Spine n'est pas prête et les particules sont temporairement affichées en haut.",
"warningMissingSlot": "L'emplacement cible n'existe pas (la ressource a peut-être été remplacée) et les particules sont temporairement affichées en haut.",
"warningFirstSlot": "Il s'agit du premier emplacement et ne peut pas être affiché en dessous, les particules sont temporairement affichées en haut."
},
"export": {
"title": "Paramètres d’export",
"reset": "Réinitialiser les paramètres d'exportation",
"imagesPath": "Chemin de l'image (Chemin des images Spine)",
"spineVersion": "Version de Spine",
"keyframeCurve": "Courbe d'interpolation d'images clés",
"linear": "Linéaire",
"smoothBezier": "Bézier Lisse (Lisse Bézier)",
"bezierHelp": "Smooth Bezier s'adapte au mouvement continu dans la tolérance d'erreur ; la naissance, la mort, le changement d'attachement et les mutations utilisent toujours des images clés d'étape.",
"spine38Help": "Spine 3.8 ne prend pas en charge le tableau Bézier par canal de 4.x et est converti en images clés linéaires par morceaux à tolérance réduite lors de l'exportation.",
"fps": "FPS d’export",
"omitFps": "N'écrivez pas de fps",
"fpsHelp": "Conservez les secondes réelles de l'animation inchangées lors de la modification de FPS ; \"Ne pas écrire de fps\" omet uniquement les métadonnées fps de Spine.",
"integerFrames": "Alignement du cadre entier",
"bonePool": "Pool d'objets osseux",
"excludeEmpty": "Exclure les animations sans contenu",
"baking": "L'animation est recalculée et cuite",
"exportJsonTitle": "Exporter Spine {version} JSON",
"preparing": "Préparation à l'exportation...",
"exportJson": "Exporter Spine JSON",
"exportImagesTitle": "Téléchargez séparément l'image utilisée par le système de particules actuel ZIP",
"organizingImages": "Tri des images...",
"exportImages": "Exporter les images ZIP",
"generatingProject": "Génération du projet...",
"exportSpine": "Exporter le package .spine",
"authorize": "Autoriser le site Web actuel",
"authorizeTitle": "Autoriser le site web actuel dans le connecteur natif",
"refreshConnector": "Revérifiez le connecteur",
"refresh": "rafraîchir",
"recalculating": "Recalcul de l'animation des particules...",
"exported": "Spine {version} exportés : systèmes de particules {systems}, animations {animations}, os racinaires {bones} {warning}",
"resourceWarning": ";{count} astuces sur les ressources (les images manquantes sont toujours exportées)",
"timeout": "Recalcul du délai d'expiration de l'animation, veuillez confirmer que la page est toujours en cours d'exécution et réessayer",
"preparingProject": "Trier les images et appeler cette machine Spine…",
"projectExported": "{fileName} a été généré : y compris le projet .spine et les images {images}, Spine {version}",
"collectingImages": "Rassembler les images actuellement utilisées par le système de particules...",
"imagesExported": "{fileName} a été généré : {folder}/ contient des images {images}",
"connectorChecking": "Détection du connecteur Spine local...",
"connectorOffline": "Le connecteur Spine local n’est pas démarré",
"spineNotFound": "Le connecteur est démarré, mais Spine est introuvable",
"notAuthorized": "Le connecteur est démarré, mais ce site n’est pas autorisé",
"connectorReady": "Connecteur disponible · Spine prêt",
"connectorBusy": "Recalcul et génération du projet Spine",
"connectorGenerate": "Générer un projet Spine {version} avec Spine local",
"unknown": "inconnu",
"checking": "Vérification",
"offline": "Hors ligne",
"notFound": "Spine introuvable",
"unauthorized": "Non autorisé",
"projectTransferTitle": "Exporter le package Spine",
"projectTransferDetail": "Recalcul de l'animation des particules...",
"projectTransferDownload": "Le package du projet Spine a été téléchargé",
"generatingJson": "Génération de Spine JSON…",
"preparingProjectFiles": "Rassemblement des photos du projet...",
"uploading": "Téléchargement des données vers le connecteur Spine...",
"spineProcessing": "Spine est en train de convertir le projet, veuillez patienter...",
"downloadingProject": "Téléchargement du package de projet Spine généré...",
"handingToBrowser": "Passage au navigateur pour le téléchargement..."
},
"transfer": {
"completed": "Complété",
"failed": "L'opération a échoué"
},
"scene": {
"title": "Objets de scène",
"addParticle": "Ajouter un système de particules",
"addParticleShort": "+particule",
"addCollider": "Ajouter un collisionneur",
"addColliderShort": "+collision",
"addPath": "ajouter un chemin",
"addPathShort": "+ chemin",
"addSpine": "Ajouter Spine",
"copyTitle": "Copier l'objet de scène actuellement sélectionné",
"showParticle": "Afficher le système de particules",
"hideParticle": "Masquer le système de particules",
"showCollider": "montrer les collisionneurs",
"hideCollider": "Masquer le collisionneur",
"showPath": "montrer le chemin",
"hidePath": "Masquer le chemin",
"showSpine": "Affichage Spine",
"hideSpine": "Masquer Spine",
"particle": "Particules",
"subEmitter": "Sous-émetteur",
"collision": "Collision",
"path": "Chemin",
"deleteParticle": "Supprimer le système de particules",
"deleteCollider": "Supprimer les collisionneurs",
"deletePath": "supprimer le chemin",
"deleteSpine": "Supprimer Spine",
"empty": "Il n'y a pas encore d'objets dans la scène",
"name": "nom",
"positionX": "Position X",
"positionY": "Position Y",
"offsetX": "Décalage X",
"offsetY": "Décalage Y",
"rotation": "Rotation",
"scaleX": "Échelle X",
"scaleY": "Échelle Y",
"seed": "Graine aléatoire",
"seedTitle": "Contrôlez tous les attributs aléatoires, la sélection des ressources et l'échantillonnage aléatoire du modificateur dans le système de particules",
"randomizeSeed": "Générer une nouvelle graine aléatoire globale",
"seedHint": "Contrôler les paramètres aléatoires initiaux, la sélection des ressources et l'échantillonnage aléatoire du modificateur ; la même graine peut reproduire le même effet",
"colliderTitle": "Propriétés du collisionneur",
"colliderName": "Nom du collisionneur",
"type": "taper",
"circle": "rond",
"ellipse": "ovale",
"rect": "rectangle",
"polygon": "polygone",
"custom": "Personnaliser",
"enabled": "activer",
"xPosition": "Position X",
"yPosition": "Position Y",
"scaleXShort": "Échelle X",
"scaleYShort": "Échelle Y",
"radius": "rayon",
"radiusX": "Rayon X",
"radiusY": "Rayon Y",
"width": "largeur",
"height": "haut",
"sides": "Nombre de côtés",
"collisionResponse": "Réponse en cas d'accident",
"physics": "Physique (rebond/frottement)",
"pause": "Pause (arrêter)",
"destroy": "Disparaître (détruire immédiatement)",
"elasticity": "Élasticité (0-1)",
"friction": "Frictions (0-1)",
"followPath": "Suivez le chemin",
"targetPath": "chemin cible",
"notSelected": "(non sélectionné)",
"moveDuration": "Durée du mouvement (secondes)",
"followDirection": "direction le long du chemin",
"moveProgressCurve": "Courbe de progression en mouvement",
"moveProgressHelp": "Axe horizontal : temps réel/durée du mouvement ; axe vertical : progression du chemin (0=point de départ → 1=point final)",
"pathTitle": "attribut de chemin",
"pathName": "nom du chemin",
"closedPath": "chemin fermé",
"pathColor": "couleur du chemin",
"pathHelp": "Mode d'emploi :",
"pathHelpItems": "Double-cliquez sur l'espace vide/la courbe : créez un nouveau point d'ancrage, double-cliquez sur le point d'ancrage : supprimez le nœud, double-cliquez une deuxième fois et faites glisser : créez-en un nouveau et retirez la poignée, faites glisser le point d'ancrage pour déplacer la position, faites glisser la poignée pour ajuster la courbe, Maj + faites glisser la poignée : complètement symétrique des deux côtés, A lt+glissez la poignée : contrôlez indépendamment un côté, Ctrl+sélection clic/cadre : ajouter les nœuds sélectionnés, Alt+clic/sélection de cadre : soustraire la sélection nœuds, Alt+clic dans l'espace vide : effacez toutes les sélections, sélectionnez plusieurs nœuds et faites-les glisser dans leur ensemble",
"applyPresetShape": "Appliquer une forme prédéfinie",
"choosePreset": "Sélectionnez un préréglage...",
"square": "Carré",
"star": "forme d'étoile",
"applyPreset": "Appliquer le préréglage",
"clearAnchors": "point d'ancrage clair",
"panelHint": "Utilisez le bouton dans le coin supérieur droit pour créer un objet de scène"
},
"modifiers": {
"title": "Modificateurs",
"reset": "Réinitialiser les paramètres du modificateur",
"damping": "Amortissement",
"enableNoise": "Activer le bruit de mouvement",
"strength": "force",
"noiseRange": "Plage de fluctuation",
"noiseSpeed": "Débit temporel",
"noiseHint": "Le contrôle de l'intensité affecte la proportion · La plage de fluctuation contrôle l'écart maximum · Le flux temporel contrôle la vitesse de changement",
"enableGravity": "Activer la gravité",
"gravityStrength": "Force de gravité",
"strengthMin": "Force min.",
"strengthMax": "Force maximale",
"direction": "direction",
"gravityOverLife": "La gravité pendant le cycle de vie",
"windOverLife": "Vent du cycle de vie",
"axisStrength": "Axe vertical : intensité 0~1",
"directionHint": "0° à droite · -90° vers le bas · L'intensité négative inverse la direction",
"enableWind": "Activer le vent",
"windStrength": "force du vent",
"enableForceField": "Activer le champ de force",
"centerX": "Centre X",
"centerY": "Centre Y",
"forceStrength": "Intensité du champ de force",
"forceRadius": "rayon du champ de force",
"falloffMode": "mode de désintégration",
"constant": "Constante (la vitesse ne change pas dans la plage)",
"linearFalloff": "Atténuation linéaire (le bord est 0)",
"inverseFalloff": "Inversement proportionnel à la distance (le plus fort au centre)",
"forceHint": "Les nombres positifs attirent vers le centre, les nombres négatifs se repoussent vers l'extérieur et le cercle du champ de force peut être déplacé dans le canevas.",
"showShape": "montrer la forme",
"enableVortex": "Activer le tourbillon",
"vortexHint": "Nombres positifs dans le sens inverse des aiguilles d'une montre · Nombres négatifs dans le sens des aiguilles d'une montre",
"enableAttraction": "Activer l’attraction",
"attractionX": "Point d'adsorption X",
"attractionY": "Point d'adsorption Y",
"attractionRadius": "rayon d'adsorption",
"attractionDuration": "Temps d'adsorption",
"delay": "Temps de retard",
"delayMode": "Mode retard",
"globalTime": "temps unifié",
"particleLife": "durée de vie d'une seule particule",
"attractionPath": "Méthode d'adsorption",
"straight": "ligne droite",
"attractionHint": "Après un délai, l'adsorption démarre à partir de la position actuelle. Lorsqu'il atteint la zone rouge, il mourra. Le cercle d'adsorption peut être glissé dans la toile.",
"enableTrail": "Activer la traînée",
"trailImages": "Images indépendantes de fin",
"addTrailImage": "Ajouter des ressources d'image de fin",
"trailRotation": "tourner",
"trailBones": "Nombre d'os arrière",
"trailRatio": "Ratio de suivi (%)",
"trailLength": "Longueur de fuite",
"randomRange": "plage aléatoire",
"lengthRatio": "Rapport de longueur (%)",
"lengthMin": "Longueur minimale (%)",
"lengthMax": "Longueur maximale (%)",
"trailWidth": "Largeur de fuite",
"widthRatio": "rapport de largeur (%)",
"widthMin": "Largeur minimale (%)",
"widthMax": "Largeur maximale (%)",
"widthScale": "mise à l'échelle de la largeur",
"followParticle": "suivre les particules",
"lifeLengthCurve": "courbe de longueur du cycle de vie",
"shapeCurve": "Courbe de forme (largeur tête → queue)",
"colorMode": "mode couleur",
"blendMode": "mode de fusion",
"fixedColor": "couleur fixe",
"alphaMode": "mode transparence",
"opacity": "transparence",
"gridRows": "Nombre de lignes de grille",
"gridCols": "Nombre de colonnes de grille",
"trailHint": "Chaque particule génère un ensemble d’os frères et sœurs proportionnels aux ressources ; la longueur et la largeur aléatoires sont déterminées à la naissance de la particule, et la même graine peut être reproduite de manière stable",
"enableFollow": "Activer le suivi de l’émetteur",
"followMode": "mode suivi",
"noFollow": "aucun",
"followPath": "suivre le chemin",
"selectedBone": "os sélectionnés",
"emitterAngleMode": "Mode angle de l'émetteur",
"fixedAngle": "angle fixe",
"followMoveDirection": "Suivre la direction du mouvement",
"moveProgressCurve": "Courbe de progression du mouvement (0→1)",
"moveDuration": "Durée(s) du mouvement",
"followSpace": "suivre l'espace",
"localSpace": "Espace local (mouvement GEN)",
"worldSpace": "Espace mondial (mouvement du point de génération de particules)",
"moveDirection": "direction de déplacement",
"forward": "Suivant (point de départ → point final)",
"reverse": "Inverse (point final → point de départ)",
"followOffset": "Point de départ décalé (0-1)",
"followSpaceHint": "L'espace local déplace l'émetteur tout entier ; l'espace mondial ne déplace que le point d'apparition des nouvelles particules, et les particules nées restent à la position du monde.",
"followTarget": "Suivez la cible :",
"noValidBone": "Aucun os valide n'a encore été lié, veuillez d'abord sélectionner l'os dans l'arborescence hiérarchique Spine.",
"rebind": "relier",
"bind": "obligatoire",
"selectedBoneLabel": "Os actuellement sélectionné :",
"boneLocalSpace": "Espace local (se déplace avec les os)",
"boneWorldSpace": "Espace mondial (les particules conservent leur position après avoir été générées)",
"offsetX": "Décalage de déplacement X",
"offsetY": "Décalage de déplacement Y",
"rotationOffset": "Décalage de rotation",
"scaleOffsetX": "Décalage d'échelle X",
"scaleOffsetY": "Décalage d'échelle Y",
"boneFollowHint": "L'émetteur suit uniquement la position de l'os Spine sélectionné et n'hérite pas de la rotation ou de la mise à l'échelle de Spine ; la transformation des particules utilise les propres paramètres et le décalage supérieur du système de particules.",
"enableCollision": "Activer la collision",
"collisionObjects": "Objets de collision participants",
"colliderDisabled": "{name} (collisionneurs désactivés)",
"clearCollider": "Effacer l'objet de collision {name}",
"addCollider": "Ajouter des objets de collision de scène",
"noAvailableColliders": "Aucun objet de collision à ajouter",
"noCollidersSelected": "Aucun objet de collision n'est sélectionné et les particules actuelles n'entreront pas en collision.",
"available": "Disponible",
"disabled": "Désactivé",
"collisionHint": "Seuls les objets de collision de scène ajoutés et activés participeront à la collision du système de particules actuel.",
"enableSubEmitter": "Activer les sous-émetteurs",
"triggerTiming": "Choisissez l'heure de déclenchement",
"birth": "né",
"death": "mourir",
"collision": "collision",
"chooseTarget": "Sélectionnez le système de particules cible",
"noTarget": "Aucun (système de particules)",
"deleteSubEmitter": "Supprimer ce sous-émetteur",
"probability": "probabilité d'émission",
"collisionLimit": "Limite de collision",
"inherit": "hériter",
"colorInheritMode": "Méthode d'héritage des couleurs",
"add": "Ajouter",
"replace": "couverture",
"addSubEmitter": "+ Ajout d'un nouveau sous-émetteur",
"inheritNone": "Aucun (par défaut)",
"inheritAll": "Toutes les propriétés",
"inheritColor": "couleur",
"inheritScale": "taille",
"inheritRotation": "tourner",
"inheritLife": "cycle de vie"
},
"spine": {
"title": "Propriétés Spine",
"name": "Nom Spine",
"xPosition": "Position X",
"yPosition": "Position Y",
"rotation": "Rotation",
"scaleX": "Échelle X",
"scaleY": "Échelle Y",
"startTime": "Heure de début",
"resources": "Ressources Spine",
"chooseFolder": "Sélectionnez le dossier et chargez",
"folderHint": "Lisez JSON / SKEL, Atlas et toutes les textures d'un dossier en même temps ; les ressources peuvent toujours être remplacées individuellement ci-dessous.",
"choose": "choisir",
"chooseMultiple": "Sélectionner (choix multiples)",
"loading": "chargement…",
"load": "↧ Charger",
"clear": "Clair",
"supportNote": "Prise en charge de Spine 3.8 / 4.0 / 4.1 / 4.2 / 4.3 JSON · Chargement à la demande lorsque la version correspondante est en cours d'exécution · Local hors ligne",
"currentResource": "Ressource actuelle {version}",
"animations": "Animations Spine",
"noAnimations": "Aucune animation disponible",
"timelineAnimation": "Lire l'animation sur la chronologie",
"no": "aucun",
"hierarchy": "Hiérarchie",
"clearBoneTitle": "Cliquez pour effacer la sélection d'os",
"noBoneTitle": "Aucun os n'est actuellement sélectionné",
"clearBone": "Effacer les os sélectionnés : {name}",
"currentBone": "Squelette actuel :",
"clearSlotTitle": "Cliquez pour effacer la sélection d'emplacement",
"noSlotTitle": "Aucun emplacement n'est actuellement sélectionné",
"clearSlot": "Effacer l'emplacement sélectionné : {name}",
"currentSlot": "Emplacement actuel :",
"notSelected": "Non sélectionné",
"expandAll": "Tout développer",
"collapseAll": "Tout réduire",
"bones": "squelette",
"slots": "fente",
"notLoaded": "Non chargé Spine",
"searchBones": "Rechercher des os",
"searchBonesPlaceholder": "Rechercher le nom de l'os…",
"clearSearch": "Effacer la recherche",
"clearBoneSearch": "Recherche osseuse claire",
"noMatchingBones": "Aucun os correspondant trouvé",
"expandChildren": "Développer les os enfants",
"collapseChildren": "Réduire les os de l'enfant",
"notLoadedSlots": "Emplacement Spine non chargé",
"searchSlots": "Rechercher des créneaux",
"searchSlotsPlaceholder": "Rechercher le nom de l'emplacement ou de l'accessoire…",
"clearSlotSearch": "Effacer la recherche de créneau",
"noMatchingSlots": "Aucun emplacement correspondant trouvé",
"slotTitle": "{name} (squelette : {bone}, accessoire : {attachment})",
"empty": "nul",
"textureSummary": "{count} Zhang : {names}",
"textureImages": "Images de textures",
"missingFolderAssets": "Le dossier sélectionné est manquant : {missing}",
"chooseAssets": "Veuillez sélectionner les données Spine, Atlas et toutes les images de texture dans l'ordre"
},
"help": {
"title": "Aide",
"subtitle": "Démarrage rapide de la création de particules à l'enregistrement et à l'exportation",
"close": "Fermer les instructions",
"closeShort": "Fermer (Échap)",
"quickStart": "démarrage rapide",
"stepCreate": "Créer un objet : utilisez +Particles / +Collision / +Path / +Spine dans « Objet de scène » à gauche pour ajouter un objet de scène.",
"stepEdit": "Modifier les particules : sélectionnez le système de particules et ajustez \"Mode d'émission → Forme de l'émetteur → Propriétés des particules → Apparence et ressources → Modificateur\".",
"stepPreview": "Vérifiez l'effet : la chronologie inférieure peut être lue, mise en pause, image par image ou glissée ; il sera automatiquement recalculé après modification des paramètres.",
"stepExport": "Enregistrer et exporter : utilisez « Enregistrer la configuration » pour conserver le projet ; \"Exporter le package Spine Json / images / .spine\" pour sortir le produit fini.",
"quickNote": "« Réinitialiser » sur le côté droit du titre de chaque groupe de modules peut restaurer les paramètres par défaut du groupe ; les paramètres système seront automatiquement enregistrés dans le navigateur actuel.",
"commonOps": "Actions courantes",
"eye": "petits yeux",
"eyeDesc": "Afficher/masquer les objets individuellement ; les systèmes de particules cachées ne sont pas exportés.",
"copyDesc": "Copie entièrement l'objet actuellement sélectionné pour faciliter la comparaison des différents paramètres.",
"backgroundDesc": "Téléchargez l'image de référence et ajustez la position et la transparence pour l'aperçu du canevas uniquement.",
"settingsDesc": "La disposition de l'interface de gestion, l'affichage auxiliaire, la balance, etc. sont automatiquement enregistrés dans le navigateur.",
"undoDesc": "Ctrl+Z se rétracte d'un pas ; le nombre maximum d'étapes peut être ajusté dans les paramètres du système.",
"spineBoneDesc": "Recherchez et sélectionnez un os dans l'arborescence hiérarchique, qui peut être utilisé par l'émetteur de particules à suivre.",
"shortcuts": "Raccourcis",
"undoShortcut": "Annuler l'étape précédente",
"saveShortcut": "Enregistrer la configuration",
"panShortcut": "Faites glisser la toile",
"translateShortcut": "Outil de déplacement",
"rotateShortcut": "Outil rotatif",
"scaleShortcut": "Outil Zoom",
"playShortcut": "lecture/pause",
"startShortcut": "Revenir à la première image",
"shortcutNote": "Q / W / E / R devez d'abord cliquer sur la toile ; lorsque le curseur est dans la zone de saisie, la touche de raccourci à touche unique ne sera pas déclenchée.",
"modules": "Guide des modules",
"configTitle": "Gestion des configurations",
"saveConfigDesc": "Enregistrez tous les objets et paramètres de scène actuels en tant que fichiers de projet JSON (Ctrl+S est également pris en charge).",
"loadConfigDesc": "Sélectionnez le fichier de configuration local pour restaurer le projet complet.",
"presetDesc": "Sélectionnez une application rapide par défaut dans la liste déroulante ; cliquez sur la liste déroulante pour actualiser la liste.",
"configScope": "portée",
"configScopeDesc": "La configuration contient des objets et des paramètres ; les paramètres de l'interface et du système sont stockés séparément dans le navigateur.",
"sceneTitle": "objet de scène",
"particleDesc": "objet de base. La position, le décalage, la rotation, la mise à l'échelle et la graine aléatoire peuvent être définis ; la même graine peut reproduire le même effet.",
"colliderDesc": "Cercle/ellipse/rectangle/polygone/personnalisé, prend en charge le rebond physique, la pause, la destruction et le mouvement le long du chemin.",
"pathDesc": "Chemin de Bézier avec prise en charge des points d'ancrage, poignées de contrôle, fermeture, couleur et formes prédéfinies.",
"spineDesc": "Chargez les données Spine, Atlas et les textures, parcourez les os et les emplacements et suivez les émetteurs.",
"sceneCommonDesc": "Les objets peuvent être révélés et copiés indépendamment ; les systèmes de particules cachées ne sont pas exportés.",
"emissionDesc": "Tir continu, rafale, retard et durée de boucle en trois étapes de démarrage/boucle/fin.",
"burstDesc": "Émet un nombre spécifié de particules à la fois.",
"delayDesc": "Le temps d'attente avant le début de l'émission, correspondant à l'extrémité gauche de la barre de particules.",
"loopNote": "La persistance de la boucle ne prend pas en charge le suivi des os et des chemins, et les paramètres suivants seront restaurés lors du changement.",
"shapeDesc": "Zone d'apparition d'un point, d'un cercle, d'un rectangle, d'un cône ou d'un chemin. Les cercles/cônes prennent en charge les rayons internes et externes, et les rectangles prennent en charge la largeur et la hauteur internes et externes.",
"angleDesc": "Fixe, aléatoire, radial, trajectoire normale ou tangente à la trajectoire.",
"initialDesc": "Le cycle de vie, la vitesse, la mise à l'échelle et la rotation supportent la direction fixe, aléatoire, la courbe et la rotation peuvent suivre la direction de lancement.",
"overLifeDesc": "Le grossissement de la vitesse, le grossissement du zoom et la vitesse de rotation peuvent être contrôlés par la courbe du cycle de vie.",
"alphaDesc": "Supports de transparence fixes ou courbes ; Le mode courbe peut suivre dérivé, linéaire ou Bézier.",
"imageDesc": "Image unique ou image de séquence, randomisation du poids de plusieurs images, point pivot, couleur, mode de fusion et transparence indépendante.",
"sequenceDesc": "Les méthodes de lecture incluent le masquage ponctuel, le gel ponctuel, la boucle avant et la boucle inverse.",
"noiseDesc": "Générez des traces de gigue et contrôlez l’intensité, la portée et la vitesse.",
"gravityDesc": "Courbes d'intensité de gravité, de vent et de cycle de vie.",
"forceDesc": "Champs de force globaux, vortex, adsorption et collisions.",
"trailDesc": "Actifs de fin indépendants, nombre d’os, courbes de longueur, largeur, forme, couleur et transparence.",
"followDesc": "L'émetteur peut suivre un chemin ou un os Spine.",
"collisionDesc": "Sélectionnez les objets de collision de scène et les réponses aux collisions de particules.",
"exportDesc": "Définissez le chemin de l'image, la version Spine, la courbe d'images clés, FPS, les images entières, le pool d'os et l'animation vide.",
"exportButtonsDesc": "Vous pouvez exporter Spine JSON, des images ZIP ou générer des projets .spine via le connecteur.",
"connectorTitle": "Mode d'emploi du connecteur Spine",
"connectorIntro": "Le connecteur transmet le JSON et les images générées par la page Web au Spine qui a été installé et activé sur la machine locale, et les convertit en projets .spine modifiables.",
"prerequisite": "chargement initial",
"prerequisiteDesc": "L'ordinateur a Spine installé et activé, et le connecteur de bureau a été lancé.",
"download": "télécharger",
"webSide": "page web",
"webSideDesc": "Une fois que « Connecteur disponible · Spine est prêt » s'affiche, cliquez sur « Exporter le package .spine ».",
"authorization": "première autorisation",
"authorizationDesc": "La première connexion doit vérifier la source du site Web et l'autoriser une fois ; cette machine enregistre la liste blanche d'autorisation.",
"pathSetup": "Paramètres du chemin",
"pathSetupDesc": "Le connecteur détectera automatiquement Spine ; s'il est introuvable, vous pouvez spécifier manuellement le chemin de l'application.",
"downloadResult": "Télécharger les résultats",
"downloadResultDesc": "Obtenez le package ZIP, qui contient le projet .spine et le répertoire d'images.",
"version": "Version",
"versionDesc": "Le connecteur correspond automatiquement à Spine 3.8~4.3 selon la version JSON.",
"security": "Sécurité",
"securityDesc": "Écoutez uniquement l'adresse locale, l'autorisation est enregistrée dans le connecteur et les fichiers temporaires sont nettoyés après conversion.",
"differenceTitle": "Quelle est la différence entre configurer et exporter ?",
"differenceDesc": "« Enregistrer la configuration » enregistre tous les objets et paramètres pouvant être modifiés ; \"Exporter Spine Json\" exporte uniquement le système de particules affiché et intègre les résultats de collision, de suivi, de fuite et de sous-émetteur dans des données d'animation indépendantes."
},
"errors": {
"confirmLoopFollowEnter": "Après être entré en mode continu de boucle, les paramètres de suivi des particules seront invalides et restaurés à leur valeur par défaut. Continuer?",
"confirmLoopFollowExit": "Après avoir quitté le mode de persistance de boucle, les paramètres de suivi des particules seront invalides et restaurés à leurs valeurs par défaut. Continuer?",
"invalidJson": "Le fichier de configuration n'est pas valide JSON",
"invalidConfigFormat": "Pas le profil de l'éditeur SpineParticle",
"unsupportedConfigVersion": "Version de configuration non encore prise en charge : {version}",
"missingScene": "Le fichier de configuration ne contient pas de données complètes sur la scène",
"missingEmbeddedSpine": "La configuration ne contient pas de ressources originales Spine réutilisables",
"chooseJsonConfig": "Veuillez sélectionner un fichier de configuration .json",
"settingsInvalidJson": "Le cache des paramètres système n'est pas valide JSON",
"settingsFormat": "Pas le cache des paramètres système de l'éditeur SpineParticle",
"settingsVersion": "La version de la configuration du système n'est pas encore prise en charge : {version}",
"settingsMissing": "Le cache des paramètres système ne contient pas de paramètres",
"noExportableImages": "Il n'y a pas d'images exportables pour le système de particules actuellement visible",
"invalidZipPath": "ZIP Chemin de fichier invalide",
"spineFileType": "Les données Spine ne prennent en charge que .json ou .skel",
"atlasFileType": "Les fichiers Atlas ne prennent en charge que .atlas",
"chooseTexture": "Veuillez sélectionner au moins une image de texture",
"binaryParseFailed": "Échec de l'analyse binaire Spine (4.3 : {v43} ; ancienne version : {v42})",
"invalidSpineJson": "Spine JSON Format de fichier invalide",
"unsupportedSpineJsonVersion": "La version Spine JSON n'est pas prise en charge, seul {versions} est pris en charge",
"unsupportedSpineDataVersion": "La version des données Spine n'est pas prise en charge, seul {versions} est pris en charge",
"embeddedReadFailed": "Impossible de lire le fichier Spine intégré : {name}",
"missingImageWarning": "L'image \"{file}\" est manquante ou présente des dimensions illisibles, chemin conservé.",
"missingTrailImageWarning": "L'image de fin \"{file}\" est manquante et le chemin a été conservé.",
"emptyCacheWarning": "Aucun framebuffer disponible pour '{name}'.",
"readExportImageFailed": "Impossible de lire l'image exportée : {name}",
"connectorOffline": "Connecteur local Spine non détecté, veuillez d'abord activer le connecteur",
"connectorHttpError": "Le connecteur Spine renvoie l'erreur : HTTP {status}",
"invalidTrailUV": "Données UV non valides pour le maillage final '{name}'",
"missingTrailVertices": "Le maillage final '{name}' ne contient pas de données de sommet",
"trailIndexOutOfRange": "Indice triangulaire du maillage final '{name}' hors limites",
"invalidTrailHull": "Le numéro de contour extérieur du maillage final \"{name}\" n'est pas valide",
"trailHullIndexOutOfRange": "L'index du bord du contour extérieur du maillage final \"{name}\" est hors limites",
"invalidInfluenceCount": "Le maillage final « {name} » contient un nombre non valide de poids d'os.",
"missingBoneReference": "Le maillage final '{name}' fait référence à un os inexistant",
"invalidWeight": "La grille finale \"{name}\" contient des données de poids non valides",
"weightSum": "Les poids des sommets du maillage final '{name}' ne totalisent pas 1",
"vertexCountMismatch": "Le maillage final '{name}' a un nombre incohérent de sommets et d'UV",
"invalidInherit": "La valeur héritée « {inherit} » pour l'os « {name} » n'est pas conforme au format Spine {version} JSON.",
"trailBoneParent": "L'os arrière \"{name}\" doit être directement suspendu sous l'os du système de particules et ne peut pas former de chaîne osseuse.",
"trailSlotEmpty": "L'emplacement de queue pondéré \"{name}\" ne peut pas utiliser de pièces jointes vides. La mise à l'échelle osseuse correspondante doit être fixée à 0 en phase de non-apparition ou de mort.",
"spine38Version": "Spine 3.8 L'ID de version exporté doit être 3.8",
"spine38Inherit": "Spine 3.8 Bone \"{name}\" doit utiliser la transformation et ne peut pas utiliser l'héritage",
"spine38SlotColor": "La chronologie des couleurs de l'emplacement Spine 3.8 doit utiliser color / twoColor",
"spine38AttachmentName": "Spine 3.8 L'image cachée de la chronologie de la pièce jointe doit être explicitement écrite en nom : null",
"spine38RotationAngle": "Spine 3.8 Vous devez utiliser l'angle pour faire pivoter l'axe du temps",
"spine38Curve": "Spine 3.8 ne prend pas en charge le format de courbe de tableau 4.x",
"unsupportedExportVersion": "La version exportée n'est pas prise en charge, seul Spine {versions} est pris en charge",
"exportVersionMismatch": "Version d'exportation incohérente : définie sur Spine {expected}, JSON marquée comme Spine {actual}",
"exportMissingBones": "Le résultat de l'exportation ne contient pas d'os",
"missingAtlasTexture": "La texture référencée par Atlas n'est pas sélectionnée : {name}"
},
"language": {
"label": "Langue",
"zhCN": "中文",
"zhTW": "繁體中文",
"en": "English",
"ja": "日本語",
"ko": "한국어",
"fr": "Français",
"de": "Deutsch",
"ptBR": "Português",
"es": "Español"
}
}