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.
557 lines
32 KiB
TypeScript
557 lines
32 KiB
TypeScript
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
|
||
}
|