bible-strong-avatar-lab/src/i18n/zh.ts
smontlouis e205c57687 feat(avatar): add pixel rendering across studio
Persist the avatar render style and apply it consistently to previews, snapshots, animations, and standalone exports.
2026-08-15 11:41:30 +02:00

387 lines
19 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': '新建表情',
'L’avatar à gauche affiche cette expression en direct.': '左侧头像会实时预览此表情。',
Corps: '身体',
Rendu: '渲染',
'Choisis la finition visuelle propre à cet avatar.': '选择此头像专属的视觉效果。',
'Type de rendu': '渲染类型',
'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': '导出头像',
'Télécharge un composant autonome avec les animations de ton choix.':
'下载包含所选动画的独立组件。',
'Avatar sélectionné': '已选头像',
Format: '格式',
'Choisis l’intégration correspondant à ton projet.': '选择适合项目的集成方式。',
'Composant TSX autonome': '独立 TSX 组件',
'Package React local (.zip)': '本地 React 包(.zip)',
'Module JavaScript': 'JavaScript 模块',
'Module ES autonome': '独立 ES 模块',
'Projet HTML + module JS (.zip)': 'HTML 项目 + JS 模块(.zip)',
sélectionnées: '已选择',
'Animations à exporter': '要导出的动画',
'Tout sélectionner': '全选',
'Tout désélectionner': '取消全选',
'Télécharger le composant TSX': '下载 TSX 组件',
'Télécharger le package React': '下载 React 包',
'Télécharger le module': '下载模块',
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
}