bible-strong-avatar-lab/src/i18n/zh.ts
smontlouis 2386b78817 feat(runtime): unify React and ESM avatar exports
Add shared core-backed React and browser runtimes, continuous playback transitions, export previews and API documentation. Package the JavaScript export as a CDN-powered demo with the portable avatar definition.
2026-08-17 17:27:20 +02:00

557 lines
32 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export const chinese: Record<string, string> = {
'Playground de l’avatar': '头像游乐场',
Arrêté: '已停止',
'Aperçu procédural en direct': '实时程序化预览',
'Aperçu de l’avatar': '头像预览',
'Choisissez une animation exportée pour la lancer。': '选择一个已导出的动画以播放。',
'Choisissez une animation exportée pour la lancer.': '选择一个已导出的动画以播放。',
Lecture: '播放',
'Contrôlez l’animation active.': '控制当前动画。',
Lire: '播放',
Arrêter: '停止',
'API JavaScript': 'JavaScript API',
'Le module réutilisable est disponible dans avatar.js.': '可复用模块位于 avatar.js。',
'Ouvrez cette démo directement, ou servez le dossier localement pour importer avatar.js depuis un autre module.':
'可直接打开此演示,或在本地启动该目录,以便从其他模块导入 avatar.js。',
'Langue de l’interface': '界面语言',
'Redimensionner l’aperçu et l’éditeur': '调整预览和编辑器大小',
'Nom de l’avatar': '头像名称',
sélecteur: '选择器',
hexadécimal: '十六进制值',
'Lier width': '关联宽度',
'Lier height': '关联高度',
'Lier size': '关联尺寸',
'Lier la position des yeux': '关联眼睛位置',
'Glisser horizontalement pour modifier': '水平拖动以调整',
'En lecture': '播放中',
'En pause': '已暂停',
'Réinitialiser la rotation de la tête': '重置头部旋转',
'Réinitialiser la position et la rotation de': '重置位置和旋转:',
'Avatar procédural': '程序化头像',
'Gizmo de rotation': '旋转控制器',
'Retour aux expressions': '返回表情',
'Retour aux animations': '返回动画',
'Retour au studio': '返回工作室',
'Preset en mémoire': '已保存预设',
'Nouvelle expression': '新建表情',
'Identité runtime': '运行时标识',
'Nom public stable utilisé par les applications qui chargent cet avatar.':
'供加载此头像的应用使用的稳定公开名称。',
'Clé sémantique': '语义键',
'Clé sémantique manquante': '缺少语义键',
'Clé publique stable utilisée par l’API runtime, par exemple happy-smile.':
'运行时 API 使用的稳定公开键,例如 happy-smile。',
'Clé publique stable utilisée par l’API runtime, par exemple thinking.':
'运行时 API 使用的稳定公开键,例如 thinking。',
'Ajoute une clé pour inclure cet élément dans l’export runtime.':
'添加键以在运行时导出中包含此项目。',
'Utilise des lettres minuscules, des chiffres et des tirets, par exemple happy-smile.':
'请使用小写字母、数字和连字符,例如 happy-smile。',
'neutral est réservé à l’apparence neutre de l’avatar.': 'neutral 保留用于头像的中性外观。',
'Cette clé est déjà utilisée dans cette bibliothèque.': '此键已在当前库中使用。',
'L’avatar à gauche affiche cette expression en direct.': '左侧头像会实时预览此表情。',
Corps: '身体',
Rendu: '渲染',
'Choisis la finition visuelle propre à cet avatar.': '选择此头像专属的视觉效果。',
'Type de rendu': '渲染类型',
'Le rendu Pixel est temporairement désactivé.': '像素渲染暂时已禁用。',
'Le mode Vectoriel est utilisé pour l’instant.': '当前使用矢量渲染。',
'Pixel utilise une palette franche, sans lissage ni couleur intermédiaire.':
'像素渲染使用纯色调色板,不进行平滑处理,也不产生中间色。',
Vectoriel: '矢量',
Pixel: '像素',
'Définition de la grille': '网格分辨率',
'Apparence et orientation générale de l’avatar.': '头像的整体外观和方向。',
'Couleur du corps': '身体颜色',
'Rotation de la tête': '头部旋转',
Yeux: '眼睛',
'Forme, placement et orientation propres au regard.': '眼睛的形状、位置和方向。',
'Couleur des yeux': '眼睛颜色',
Largeur: '宽度',
Hauteur: '高度',
Échelle: '缩放',
'Taille proportionnelle': '等比尺寸',
'Œil gauche': '左眼',
'Œil droit': '右眼',
'Position et espacement': '位置和间距',
Horizontale: '水平',
Verticale: '垂直',
Espacement: '间距',
'Rotation locale': '局部旋转',
Projection: '投影',
'Perspective appliquée à la surface active.': '应用于当前表面的透视。',
Perspective: '透视',
Supprimer: '删除',
Enregistrer: '保存',
'Construction du corps': '身体构建',
'Choisis la forme principale puis assemble les primitives autour d’elle.':
'选择主形状,然后在其周围组合基础形状。',
'Choisir un avatar': '选择头像',
'Double-clic pour modifier': '双击编辑',
'Nouvel avatar': '新建头像',
Modifier: '编辑',
'Mode d’édition': '编辑模式',
Pose: '姿势',
Expressions: '表情',
Animations: '动画',
Exporter: '导出',
Export: '导出',
'Exporter l’avatar': '导出头像',
'Exporter le JSON runtime': '导出运行时 JSON',
Nouveau: '新增',
'Exporte le fichier .avatar.json utilisé par les nouveaux packages npm.':
'导出新 npm 包使用的 .avatar.json 文件。',
'JSON runtime + createAvatar': '运行时 JSON + createAvatar',
'Télécharge la définition portable complète de l’avatar actif.': '下载当前头像的完整可移植定义。',
'Définition runtime': '运行时定义',
'Fichier .avatar.json portable': '可移植 .avatar.json 文件',
'Export runtime incomplet': '运行时导出不完整',
'Corrige les clés signalées dans les éditeurs Expressions ou Animations.':
'请在“表情”或“动画”编辑器中修正标记的键。',
'Télécharger la définition .avatar.json': '下载 .avatar.json 定义',
'Copier le JSON formaté': '复制格式化的 JSON',
'JSON runtime copié dans le presse-papiers.': '运行时 JSON 已复制到剪贴板。',
'Impossible de copier le JSON runtime.': '无法复制运行时 JSON。',
Installation: '安装',
'Lancer l’exemple': '运行示例',
'Masquer l’aperçu': '隐藏预览',
'Aperçu avec le package React': '使用 React 包预览',
Preview: '预览',
'Définition prête à tester': '定义已可测试',
'Preview de la définition exportée': '导出定义预览',
'Teste les animations et expressions réellement présentes dans le fichier .avatar.json.':
'测试 .avatar.json 文件中实际包含的动画和表情。',
'Fermer la preview': '关闭预览',
'Définition exportée': '导出的定义',
'Animation active': '当前动画',
'Expression active': '当前表情',
'Contrôles de lecture': '播放控制',
'Animations exportées': '导出的动画',
'Expressions exportées': '导出的表情',
'Clique pour lancer': '点击播放',
'Clique pour afficher': '点击显示',
'Aucune animation exportée': '没有导出的动画',
'Aperçu runtime de l’avatar actif': '当前头像的运行时预览',
'Animation de départ': '起始动画',
'Expression de départ': '起始表情',
'Aucune animation sélectionnée': '未选择动画',
'Guide d’utilisation': '使用指南',
'Guide d’utilisation de l’avatar React': 'React 头像使用指南',
'Guide d’utilisation de l’avatar JavaScript': 'JavaScript 头像使用指南',
'Installe le package, crée ton composant et choisis le niveau de contrôle adapté.':
'安装包,创建组件,并选择合适的控制方式。',
'Fermer le guide': '关闭指南',
'Ajoute le package React et ses dépendances.': '添加 React 包及其依赖项。',
'Installe le module ESM, charge la définition JSON et monte l’avatar dans un élément du DOM.':
'安装 ESM 模块,加载 JSON 定义,并将头像挂载到 DOM 元素中。',
'Ajoute le renderer DOM, qui utilise automatiquement avatar-core.':
'添加 DOM 渲染器,它会自动使用 avatar-core。',
'Utilisation avec un bundler ESM': '使用 ESM 打包工具',
'Vite et les bundlers modernes résolvent le package et importent le même fichier .avatar.json que React.':
'Vite 和现代打包工具会解析该包,并导入与 React 相同的 .avatar.json 文件。',
'Options de createAvatar': 'createAvatar 选项',
'Référence des valeurs acceptées lors du montage dans le DOM.': '挂载到 DOM 时可用值的参考。',
'Obligatoire. Définition JSON validée avant la création des éléments SVG.':
'必填。创建 SVG 元素之前会验证 JSON 定义。',
'Optionnelle. Animation lancée au montage lorsque autoplay vaut true. Mutuellement exclusive avec defaultExpression.':
'可选。当 autoplay 为 true 时在挂载时启动动画。不能与 defaultExpression 同时使用。',
'Optionnelle. Expression initiale affichée sans lancer de timeline. Mutuellement exclusive avec defaultAnimation.':
'可选。显示初始表情但不启动时间线。不能与 defaultAnimation 同时使用。',
'Optionnelle, défaut true. Contrôle uniquement le lancement automatique de defaultAnimation.':
'可选,默认 true。仅控制 defaultAnimation 是否自动启动。',
'Optionnelle, défaut 240. Largeur et hauteur CSS du conteneur rendu.':
'可选,默认 240。渲染容器的 CSS 宽度和高度。',
'Optionnelle. Classe CSS ajoutée au conteneur rendu.': '可选。添加到渲染容器的 CSS 类。',
'Optionnelle, défaut « Procedural avatar ». Nom accessible du rendu.':
'可选,默认 “Procedural avatar”。渲染头像的可访问名称。',
'Optionnelle. Reçoit les erreurs de clé inconnue utilisées lors de l’initialisation.':
'可选。接收初始化期间遇到的未知键错误。',
'Optionnelle. Appelée lorsqu’une animation once se termine.': '可选。在 once 动画结束时调用。',
'Optionnelle. Appelée lorsque l’expression active change.': '可选。在活动表情变化时调用。',
'API du contrôleur DOM': 'DOM 控制器 API',
'createAvatar retourne immédiatement ces commandes impératives.':
'createAvatar 会立即返回这些命令式控制方法。',
'Lance ou reprend une animation par sa clé.': '通过键启动或恢复动画。',
'Affiche une expression avec une transition courte.': '使用短暂过渡显示表情。',
'Arrête la lecture et revient à neutral.': '停止播放并返回 neutral。',
'Annule la frame planifiée et retire uniquement le conteneur créé par avatar-web.':
'取消已计划的帧,并仅移除 avatar-web 创建的容器。',
'Navigateur sans bundler': '不使用打包工具的浏览器',
'Utilise une URL ESM via un CDN ou une import map, puis charge la définition avec fetch.':
'通过 CDN 或 import map 使用 ESM URL,然后通过 fetch 加载定义。',
'Les packages sont encore privés. Cette commande fonctionnera après leur publication ; utilise le workspace ou les tarballs pour les tests locaux.':
'这些包目前仍为私有。发布后此命令才可使用;本地测试请使用 workspace 或 tarball。',
'API recommandée : créer un avatar concret': '推荐 API:创建具体头像',
'createAvatar valide le JSON et retourne un composant dédié dont les clés d’animations sont typées.':
'createAvatar 会验证 JSON,并返回一个动画键经过类型约束的专用组件。',
'Props de l’avatar': '头像 Props',
'Référence complète : type, valeur par défaut, comportement et contraintes de chaque prop.':
'完整参考:每个 prop 的类型、默认值、行为和限制。',
'Cible et lecture': '目标与播放',
'Obligatoire. Objet AvatarDefinition validé contenant les expressions et les animations à afficher.':
'必填。经过验证的 AvatarDefinition 对象,包含要显示的表情和动画。',
'Optionnelle. Contrôle une timeline par sa clé. Chaque étape choisit l’expression affichée. Mutuellement exclusive avec expression ; une cible contrôlée prend priorité sur les valeurs default.':
'可选。通过键控制时间线,每个步骤会选择要显示的表情。不能与 expression 同时使用;受控目标优先于默认值。',
'Optionnelle. Contrôle directement une expression par sa clé. Mutuellement exclusive avec animation ; une cible contrôlée prend priorité sur les valeurs default.':
'可选。通过键直接控制一个表情。不能与 animation 同时使用;受控目标优先于默认值。',
'Optionnelle. Définit la timeline initiale en mode non contrôlé. Lue au montage ; autoplay est activé par défaut. Mutuellement exclusive avec defaultExpression.':
'可选。定义非受控模式下的初始时间线;挂载时读取,默认启用 autoplay。不能与 defaultExpression 同时使用。',
'Optionnelle. Définit l’expression initiale en mode non contrôlé. Lue au montage, sans lancer de timeline. Mutuellement exclusive avec defaultAnimation.':
'可选。定义非受控模式下的初始表情;挂载时读取,不会启动时间线。不能与 defaultAnimation 同时使用。',
'Optionnelle, défaut true. Lance automatiquement defaultAnimation ; sans defaultAnimation, elle n’a aucun effet.':
'可选,默认 true。自动启动 defaultAnimation;没有 defaultAnimation 时无效。',
'Optionnelle. Donne accès à l’API impérative AvatarController.':
'可选。提供对命令式 AvatarController API 的访问。',
Présentation: '外观',
'Optionnelle, défaut 240. Nombre ou valeur CSS utilisée pour la largeur et la hauteur du conteneur.':
'可选,默认 240。用于容器宽高的数字或 CSS 值。',
'Optionnelle. Classe CSS ajoutée au conteneur externe.': '可选。添加到外部容器的 CSS 类。',
'Optionnelle. Styles inline du conteneur externe ; width et height viennent de size.':
'可选。外部容器的内联样式;width 和 height 来自 size。',
'Optionnelle, défaut « Procedural avatar ». Nom accessible annoncé aux lecteurs d’écran.':
'可选,默认 “Procedural avatar”。屏幕阅读器播报的可访问名称。',
'Callbacks de lecture': '播放回调',
'Optionnelle. Reçoit la clé de l’animation once terminée naturellement.':
'可选。在 once 动画自然完成时接收其键。',
'Optionnelle. Reçoit la clé de l’expression chaque fois que l’expression sémantique affichée change.':
'可选。每当显示的语义表情变化时接收表情键。',
'Optionnelle. Reçoit une erreur typée lorsqu’une prop animation, expression ou default référence une clé inconnue.':
'可选。当 animation、expression 或 default prop 引用了未知键时,接收一个类型化错误。',
'Avatar générique': '通用 Avatar',
'Utilise Avatar directement lorsque la définition est chargée à l’exécution ou change entre plusieurs avatars.':
'当定义在运行时加载或需要在多个头像之间切换时,直接使用 Avatar。',
'API impérative': '命令式 API',
'La ref expose les commandes de lecture et l’état courant de l’avatar.':
'ref 提供播放命令和头像当前状态。',
'Les commandes de cible sont disponibles en mode non contrôlé ; sinon utilise les props.':
'目标命令仅在非受控模式下可用;否则请使用 props。',
'Lance ou reprend une animation et retourne un résultat typé.':
'启动或恢复动画,并返回类型化结果。',
'Met en pause la timeline à sa position exacte.': '在精确位置暂停时间线。',
'En mode non contrôlé, arrête la lecture et revient à neutral. En mode contrôlé, les props restent la source de vérité.':
'在非受控模式下停止播放并回到 neutral;在受控模式下,props 仍是真实来源。',
'Affiche directement une expression.': '直接显示一个表情。',
'Retourne l’animation, l’expression et le statut actifs.': '返回当前动画、表情和状态。',
Expression: '表情',
Animation: '动画',
'Une étape référence une expression qui ne peut pas être exportée.':
'某个步骤引用了无法导出的表情。',
'Valeur incompatible avec le format runtime': '值与运行时格式不兼容',
'Télécharge un composant autonome avec les animations de ton choix.':
'下载包含所选动画的独立组件。',
'Génère l’export ZIP autonome React ou JavaScript qui existait déjà.':
'生成原有的 React 或 JavaScript 独立 ZIP 导出。',
'Choisis les animations puis exporte le JSON runtime ou un package autonome.':
'选择动画,然后导出运行时 JSON 或独立包。',
'Choisis les animations puis utilise la même définition JSON avec React ou JavaScript.':
'选择动画,然后在 React 或 JavaScript 中使用同一份 JSON 定义。',
'Avatar sélectionné': '已选头像',
Format: '格式',
'Choisis l’intégration correspondant à ton projet.': '选择适合项目的集成方式。',
'Composant TSX autonome': '独立 TSX 组件',
'Package React local (.zip)': '本地 React 包(.zip)',
'JavaScript / ESM': 'JavaScript / ESM',
'JSON runtime + avatar-web': '运行时 JSON + avatar-web',
'Module ES autonome': '独立 ES 模块',
'Projet HTML + module JS (.zip)': 'HTML 项目 + JS 模块(.zip)',
sélectionnées: '已选择',
'Animations à exporter': '要导出的动画',
'Tout sélectionner': '全选',
'Tout désélectionner': '取消全选',
Personnaliser: '自定义',
'Masquer la sélection': '隐藏选择',
'Télécharger le composant TSX': '下载 TSX 组件',
'Télécharger le package React': '下载 React 包',
'Télécharger le module': '下载模块',
'Intégration ESM avec le package avatar-web': '使用 avatar-web 包的 ESM 集成',
'Le ZIP contient le JSON exporté, une démo index.html et son README. La démo charge avatar-web depuis un CDN.':
'ZIP 包含导出的 JSON、index.html 演示和 README。演示会从 CDN 加载 avatar-web。',
'Télécharger l’intégration ESM (.zip)': '下载 ESM 集成(.zip)',
Snapshot: '快照',
'Mode photo': '照片模式',
'Capture une image statique de l’avatar.': '捕获头像的静态图像。',
'Les options de capture seront configurées ici.': '快照选项将在此配置。',
'Aperçu du Snapshot': '快照预览',
'Aperçu du mode photo': '照片模式预览',
'Arrière-plan': '背景',
'Choisis un fond transparent, uni ou en dégradé.': '选择透明、纯色或渐变背景。',
Style: '样式',
Transparent: '透明',
Uni: '纯色',
'Dégradé linéaire': '线性渐变',
'Dégradé radial': '径向渐变',
'Style d’arrière-plan': '背景样式',
Couleur: '颜色',
Départ: '起始颜色',
Arrivée: '结束颜色',
Définition: '分辨率',
'Dimensions inscrites dans le fichier SVG.': '写入 SVG 文件的尺寸。',
'Dimensions du fichier exporté.': '导出文件的尺寸。',
'Définition du Snapshot': '快照分辨率',
'Définition du mode photo': '照片模式分辨率',
'Télécharger le Snapshot SVG': '下载 SVG 快照',
'Télécharger en SVG': '下载 SVG',
'Télécharger en PNG': '下载 PNG',
'Format d’export': '导出格式',
'Format d’export du mode photo': '照片模式导出格式',
'Choisis le type de fichier généré par le mode photo.': '选择照片模式生成的文件类型。',
'Prendre une photo': '拍照',
'Informations sur le mode photo': '照片模式信息',
'Tu peux modifier le format, le fond et la définition du mode photo dans Export.':
'你可以在“导出”中更改照片模式的格式、背景和分辨率。',
'Projet du Studio': '工作室项目',
'Transfère tous les avatars, expressions et animations vers un autre navigateur.':
'将所有头像、表情和动画传输到另一个浏览器。',
'Télécharger le projet JSON': '下载 JSON 项目',
'Importer un projet JSON': '导入 JSON 项目',
'Ce fichier ne contient pas un projet Avatar Studio valide et compatible.':
'此文件不包含有效且兼容的头像工作室项目。',
'Importer ce projet ?': '导入此项目?',
'Le projet local actuel sera remplacé par les avatars, expressions, animations et état de lecture de ce fichier.':
'当前本地项目将被此文件中的头像、表情、动画和播放状态替换。',
'Le projet n’a pas pu être enregistré dans ce navigateur. Libère de l’espace puis réessaie.':
'无法在此浏览器中保存项目。请释放空间后重试。',
Importer: '导入',
'Construction, forme et couleur de la tête de l’avatar.': '头像头部的构建、形状和颜色。',
'Une forme principale porte les yeux. Les autres primitives se placent autour d’elle.':
'主形状承载眼睛,其他基础形状围绕它放置。',
'Forme principale': '主形状',
'porte les yeux': '承载眼睛',
'Ajouter une forme': '添加形状',
Dupliquer: '复制',
'Gizmo local': '局部控制器',
'Déplacer dans le plan de la caméra': '在相机平面中移动',
Transformer: '变换',
copie: '副本',
'Glisse un axe pour déplacer la forme, ou un anneau pour la faire tourner.':
'拖动轴来移动形状,或拖动圆环来旋转形状。',
Profondeur: '深度',
'Position locale': '局部位置',
'Cette surface est la référence du visage et porte les yeux.': '此表面是面部基准并承载眼睛。',
'Rondeur des arêtes': '边缘圆度',
Rondeur: '圆度',
'Rondeur morphologique': '形态圆度',
'Rondeur de la pointe': '尖端圆度',
'Rondeur de la base': '底部圆度',
'Rondeur globale': '整体圆度',
'Rondeur pointe': '尖端圆度',
'Rondeur base': '底部圆度',
'Couleur de base utilisée par les poses et les expressions.': '姿势和表情使用的基础颜色。',
'Forme, placement, orientation et couleur du regard par défaut.':
'默认眼睛的形状、位置、方向和颜色。',
'Définis l’identité du regard de cet avatar. Les poses s’ajoutent ensuite à cette base.':
'定义此头像的默认眼睛,姿势将在此基础上叠加。',
'Coordonnées propres à l’avatar, indépendantes des poses.': '头像自身的坐标,与姿势无关。',
'Inclinaison par défaut propre à chaque œil.': '每只眼睛的默认倾斜角度。',
'Orientation et apparence générale de la pose.': '姿势的整体方向和外观。',
'La pose peut remplacer temporairement la couleur de l’avatar.': '姿势可以暂时覆盖头像颜色。',
'Reprendre la couleur de l’avatar': '恢复头像颜色',
'Les libellés ↔ sont scrubbables, comme dans Figma.': '带 ↔ 的标签可像 Figma 一样拖动调整。',
'Forme, placement, orientation et couleur du regard.': '眼睛的形状、位置、方向和颜色。',
'Coordonnées communes projetées sur la forme choisie.': '投影到所选形状上的共享坐标。',
'Inclinaison propre à chaque œil.': '每只眼睛各自的倾斜角度。',
'Perspective et repères appliqués à la surface active.': '应用于当前表面的透视和参考线。',
'Profondeur simulée du visage.': '模拟的面部深度。',
'Afficher le maillage': '显示网格',
Réinitialiser: '重置',
Mouvement: '运动',
Motion: '运动',
'Mouvement perpétuel': '持续运动',
'Aucun mouvement': '无运动',
'Dérive lente': '缓慢漂移',
'Micro-ajustements': '微调',
Tremblement: '抖动',
'Ajoute une légère présence ou un tremblement continu au corps.':
'为身体添加轻微的生命感或持续抖动。',
'Anime le regard par petites saccades naturelles ou par tremblement.':
'通过自然的微小跳动或抖动让眼神动起来。',
'Motion interpole les valeurs et notre moteur effectue le slerp quaternion.':
'Motion 对数值进行插值,引擎执行四元数球面插值。',
'Vitesse du ressort': '弹簧速度',
'Une animation est en cours de lecture': '动画正在播放',
'Mettez l’animation en pause avant de manipuler les paramètres de pose.':
'调整姿势参数前请暂停动画。',
'Mettez l’animation en pause avant de choisir ou personnaliser une expression.':
'选择或自定义表情前请暂停动画。',
Cligner: '眨眼',
'Expression aléatoire': '随机表情',
'Cycle de vie': '生命周期',
Réactions: '反应',
'Éditeur d’animation': '动画编辑器',
'Modifier l’animation': '编辑动画',
'Nouvelle animation': '新建动画',
'Compose les expressions, leur cadence et les clignements de cette animation.':
'组合此动画的表情、节奏和眨眼。',
'Prévisualiser l’animation': '预览动画',
'Arrêter l’animation': '停止动画',
Identité: '基本信息',
'Nom, catégorie et comportement de lecture de l’animation.': '动画的名称、分类和播放行为。',
Nom: '名称',
Catégorie: '分类',
Description: '描述',
'Mode de lecture': '播放模式',
Boucle: '循环',
'Une fois': '一次',
'Aller-retour': '往返',
Timeline: '时间轴',
'Glisse les étapes pour les réordonner, puis sélectionne-en une pour régler sa cadence.':
'拖动步骤以重新排序,然后选择一个步骤调整时间。',
'Ajoute une expression pour commencer.': '添加一个表情以开始。',
'Étape sélectionnée': '已选步骤',
'Durée visible avant de passer à l’expression suivante.': '切换到下一个表情前的显示时长。',
'Supprimer cette étape': '删除此步骤',
'Temps d’affichage': '显示时间',
'Durée de transition': '过渡时长',
Transition: '过渡',
Ressort: '弹簧',
Douce: '平滑',
Rapide: '迅速',
'Ajouter une expression': '添加表情',
'Sélectionne un preset pour l’ajouter à la fin de la timeline.':
'选择一个预设并添加到时间轴末尾。',
Clignements: '眨眼',
'Le blink fonctionne indépendamment des changements d’expression.': '眨眼独立于表情变化运行。',
'Activer les clignements': '启用眨眼',
'Intervalle minimum': '最小间隔',
'Intervalle maximum': '最大间隔',
'Intervalle du clignement': '眨眼间隔',
'Durée du clignement': '眨眼时长',
animations: '动画',
'Chaque étape possède sa propre durée et sa propre transition.':
'每个步骤都有自己的持续时间和过渡。',
Désactivé: '已禁用',
'comportement de la timeline': '时间轴行为',
'Supprimer cette animation ?': '删除此动画?',
'Cette action supprimera définitivement cette animation.': '此操作将永久删除该动画。',
'Cette animation enchaîne un pool de presets et des clignements.':
'此动画依次播放一组预设并执行眨眼。',
'Cet état enchaîne un pool de presets et des clignements.': '此动画依次播放一组预设并执行眨眼。',
'Expressions de l’animation': '动画表情',
'Les presets sont joués dans cet ordre, puis la boucle recommence.':
'预设按此顺序播放,然后重新开始循环。',
'Logique de clignement': '眨眼行为',
'Le rythme reste naturel grâce à un intervalle légèrement aléatoire.':
'略带随机性的间隔使节奏保持自然。',
'Premier clignement': '首次眨眼',
'après le lancement': '启动后',
Intervalle: '间隔',
'tirage aléatoire': '随机',
Durée: '时长',
'fermeture et ouverture': '闭合与睁开',
'Changement d’expression': '表情变化',
'cadence de l’animation': '动画节奏',
'Détails de l’animation': '动画详情',
'Afficher les détails de l’animation': '显示动画详情',
'Masquer les détails de l’animation': '隐藏动画详情',
Relancer: '重新开始',
Lancer: '播放',
Pause: '暂停',
Reprendre: '继续',
Annuler: '取消',
'Supprimer cette expression ?': '删除此表情?',
'Cette action retirera définitivement le preset de la bibliothèque de cet avatar.':
'此操作将从该头像的库中永久删除该预设。',
'Cette expression sera aussi retirée des animations suivantes :': '此表情也会从以下动画中移除:',
'Si une animation ne contient que cette expression, l’expression de repli lui sera assignée pour qu’elle reste jouable.':
'如果动画只包含此表情,将为其分配备用表情以保持可播放。',
'Le corps, les expressions et les animations propres à cet avatar seront définitivement supprimés. La bibliothèque de base sera conservée.':
'此头像的身体、表情和动画将被永久删除,基础库将被保留。',
'Glisse sur la surface pour orienter la tête. Les anneaux du gizmo contrôlent X, Y et Z.':
'在表面上拖动以调整头部方向。控制器圆环分别控制 X、Y 和 Z。',
Sphère: '球体',
Cube: '立方体',
Capsule: '胶囊体',
Curseur: '光标',
Cylindre: '圆柱体',
Cône: '圆锥体',
Diamant: '菱形体',
'Yeux presque fermés, respiration lente et expression de sommeil.':
'双眼几乎闭合,呼吸缓慢,呈现睡眠表情。',
'Animation courte de réveil avant retour vers une expression neutre.':
'短暂的醒来动画,然后恢复中性表情。',
'Séquence courte de réveil avant retour vers une expression neutre.':
'短暂的醒来动画,然后恢复中性表情。',
'Micro-mouvements lents, expressions 00 et 08, clignement rare.':
'缓慢微动,使用表情 00 和 08,偶尔眨眼。',
'Expressions 10, 01 et 19, regard stable et clignement attentif.':
'使用表情 10、01 和 19,视线稳定并专注眨眼。',
'Regard haut et latéral, expressions asymétriques et changements fréquents.':
'向上侧视,不对称表情并频繁变化。',
'Balayage rapide et changements très fréquents.': '快速扫视并非常频繁地变化。',
'Rythme régulier, regard concentré et micro-variations.': '节奏稳定,目光专注并有细微变化。',
'Grandes expressions positives et mouvements rapides.': '夸张的积极表情和快速运动。',
'Inclinaisons et rotations rapides pour simuler un agent en mouvement.':
'通过快速倾斜和旋转模拟运动中的角色。',
'Rythme régulier et expressions concentrées.': '节奏稳定且表情专注。',
'Grandes expressions et transitions rapides.': '夸张表情和快速过渡。',
'Inclinaisons et forte asymétrie.': '明显倾斜和强烈不对称。',
loop: '循环',
once: '一次',
pingPong: '往返',
Custom: '自定义',
'Untitled animation': '未命名动画',
'Untitled sequence': '未命名动画',
sleeping: '睡眠',
waking: '醒来',
idle: '待机',
listening: '聆听',
thinking: '思考',
searching: '搜索',
working: '工作',
excited: '兴奋',
surprised: '惊讶',
suspicious: '怀疑',
angry: '生气',
drowsy: '困倦',
happy: '开心',
curious: '好奇',
confused: '困惑',
bored: '无聊',
proud: '自豪',
shy: '害羞',
sad: '悲伤',
laughing: '大笑',
scared: '害怕',
playful: '顽皮',
celebrate: '庆祝',
orbit: '环绕',
radar: '雷达',
progress: '进度',
spawning: '出现',
humming: '哼唱',
loading: '加载',
dictating: '听写',
writing: '书写',
sending: '发送',
receiving: '接收',
uploading: '上传',
notifying: '通知',
alerting: '警报',
dragging: '拖动',
bouncing: '弹跳',
'powering-down': '关机',
Avatars: '头像',
'React / TypeScript': 'React / TypeScript',
}
export const translateChineseDynamicText = (text: string) => {
const rules: Array<[RegExp, (...matches: string[]) => string]> = [
[/^Modifier l’expression (.+)$/, value => `编辑表情 ${value}`],
[/^Modifier (.+)$/, value => `编辑${value}`],
[/^Supprimer (.+) \?$/, value => `删除${value}?`],
[/^Ajouter une forme · (.+)$/, value => `添加形状 · ${value}`],
[/^Réinitialiser la position et la rotation de (.+)$/, value => `重置${value}的位置和旋转`],
[/^Animation en cours : (.+)$/, value => `当前动画:${value}`],
[/^Mettre (.+) en pause$/, value => `暂停${value}`],
[/^Reprendre (.+)$/, value => `继续${value}`],
[/^Arrêter (.+)$/, value => `停止${value}`],
[/^(.+) expressions$/, value => `${value} 个表情`],
]
for (const [pattern, replacement] of rules) {
const match = text.match(pattern)
if (match) return replacement(...match.slice(1))
}
return null
}