@7ots/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +140 -0
- package/LICENSE +21 -0
- package/README.md +655 -0
- package/brand/apple-touch-icon.png +0 -0
- package/brand/favicon.svg +4 -0
- package/brand/icon-512.png +0 -0
- package/brand/mark-mono.svg +3 -0
- package/brand/mark.svg +4 -0
- package/brand/og-es.png +0 -0
- package/brand/og-pt.png +0 -0
- package/brand/og.png +0 -0
- package/brand/ots.json +11 -0
- package/brand/tokens.css +59 -0
- package/brand/wordmark.svg +5 -0
- package/cli/7ots.mjs +400 -0
- package/cli/lib/brain.mjs +143 -0
- package/cli/lib/config.mjs +70 -0
- package/cli/lib/hooks.mjs +151 -0
- package/cli/lib/i18n.mjs +480 -0
- package/cli/lib/identity.mjs +51 -0
- package/cli/lib/install.mjs +79 -0
- package/cli/lib/lines.mjs +73 -0
- package/cli/lib/meet.mjs +166 -0
- package/cli/lib/open.mjs +19 -0
- package/cli/lib/orquesta.mjs +84 -0
- package/cli/lib/paths.mjs +49 -0
- package/cli/lib/pet-core.mjs +184 -0
- package/cli/lib/pet-server.mjs +296 -0
- package/cli/lib/prompts.mjs +75 -0
- package/cli/lib/terminal.mjs +145 -0
- package/cli/lib/ui.mjs +234 -0
- package/cli/lib/wizard.mjs +279 -0
- package/cli/pet/electron/main.cjs +86 -0
- package/cli/pet/pet.html +404 -0
- package/dist/7ots.esm.js +627 -0
- package/dist/7ots.esm.js.map +7 -0
- package/dist/7ots.iife.js +627 -0
- package/dist/7ots.iife.js.map +7 -0
- package/llms.txt +57 -0
- package/package.json +73 -0
- package/server/admin.mjs +213 -0
- package/server/apuchat-relay.mjs +170 -0
- package/server/channels/agent.mjs +136 -0
- package/server/channels/apuchat.mjs +364 -0
- package/server/channels/apumail.mjs +211 -0
- package/server/channels/index.mjs +69 -0
- package/server/contact.mjs +151 -0
- package/server/demo.mjs +154 -0
- package/server/i18n.mjs +54 -0
- package/server/identity.mjs +108 -0
- package/server/llm.mjs +413 -0
- package/server/platform/auth.mjs +290 -0
- package/server/platform/crypto.mjs +80 -0
- package/server/platform/db.mjs +130 -0
- package/server/platform/routes.mjs +388 -0
- package/server/platform/runtime.mjs +180 -0
- package/server/platform/store.mjs +331 -0
- package/server/sdk.mjs +125 -0
- package/server/server.mjs +456 -0
- package/server/settings.mjs +177 -0
- package/server/tts.mjs +186 -0
- package/skills/7ots/SKILL.md +59 -0
- package/src/actions/ActionRegistry.js +254 -0
- package/src/actions/PageTools.js +270 -0
- package/src/actions/builtins.js +565 -0
- package/src/auth/AuthManager.js +128 -0
- package/src/avatar/AvatarStage.js +473 -0
- package/src/character/AvatarEditor.js +829 -0
- package/src/character/Character.js +1191 -0
- package/src/character/motion.js +794 -0
- package/src/character/parts.js +559 -0
- package/src/context/ContextManager.js +472 -0
- package/src/core/AgentBrain.js +341 -0
- package/src/core/AgentWidget.js +1059 -0
- package/src/core/EventBus.js +61 -0
- package/src/core/Proactivity.js +363 -0
- package/src/core/storage.js +35 -0
- package/src/i18n/index.js +193 -0
- package/src/i18n/messages/character.js +543 -0
- package/src/i18n/messages/identity.js +141 -0
- package/src/i18n/messages/platform.js +114 -0
- package/src/i18n/messages/server.js +630 -0
- package/src/i18n/messages/widget.js +362 -0
- package/src/identity/ContactCard.js +351 -0
- package/src/identity/Face.js +148 -0
- package/src/identity/random.js +112 -0
- package/src/identity/schema.js +262 -0
- package/src/index.js +117 -0
- package/src/integrations/apuchat.js +212 -0
- package/src/integrations/apumail.js +88 -0
- package/src/llm/ProxyLLM.js +87 -0
- package/src/mcp/McpClient.js +153 -0
- package/src/ui/Companion.js +498 -0
- package/src/ui/UIManager.js +425 -0
- package/src/ui/VirtualPointer.js +746 -0
- package/src/ui/markdown.js +94 -0
- package/src/voice/VoiceEngine.js +227 -0
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Textos del personaje 2D (`character.*`: nombres de piezas, estilos, ánimos y gestos) y del
|
|
3
|
+
* editor de avatar (`editor.*`). Las claves de piezas son `character.<tipo>.<id>` con los ids de
|
|
4
|
+
* src/character/parts.js; ver partLabel().
|
|
5
|
+
*
|
|
6
|
+
* Los textos son texto plano (el editor los escapa). Donde hace falta negrita, el texto recibe el
|
|
7
|
+
* nombre del producto como variable `{name}` y el editor lo inserta ya dentro de <b>.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { addCatalog } from '../index.js';
|
|
11
|
+
|
|
12
|
+
const es = {
|
|
13
|
+
character: {
|
|
14
|
+
avatar: 'Avatar',
|
|
15
|
+
shapes: {
|
|
16
|
+
pou: 'Pou', round: 'Redondo', egg: 'Huevo', pear: 'Pera', bean: 'Judía', squircle: 'Cuadrado suave', wide: 'Ancho', tall: 'Alto',
|
|
17
|
+
drop: 'Gota', ghost: 'Fantasma', cat: 'Orejas', cloud: 'Nube', blob: 'Blandito', robot: 'Robot', heart: 'Corazón', mushroom: 'Seta',
|
|
18
|
+
},
|
|
19
|
+
eyes: {
|
|
20
|
+
round: 'Redondos', dot: 'Puntitos', kawaii: 'Kawaii', anime: 'Anime', cat: 'Gato', sleepy: 'Dormilones', happy: 'Felices', closed: 'Cerrados',
|
|
21
|
+
wink: 'Guiño', star: 'Estrellas', heart: 'Corazones', cross: 'K.O.', spiral: 'Mareado', angry: 'Enfadados', sad: 'Tristes', wide: 'Asombrados',
|
|
22
|
+
button: 'Botón', robot: 'LED', led: 'Barras', cyclops: 'Cíclope', lashes: 'Pestañas', almond: 'Realistas', googly: 'Locos', sparkle: 'Brillantes',
|
|
23
|
+
dollar: 'Dólar', pixel: 'Píxel', bean: 'Alubia', tired: 'Cansados', villain: 'Villano', glow: 'Fantasmales', teary: 'Llorosos', hypno: 'Hipnosis',
|
|
24
|
+
focused: 'Decididos',
|
|
25
|
+
},
|
|
26
|
+
brows: {
|
|
27
|
+
none: 'Sin cejas', soft: 'Suaves', thick: 'Gruesas', thin: 'Finas', arched: 'Arqueadas', bushy: 'Pobladas', dots: 'Maro', unibrow: 'Uniceja', angled: 'Picudas',
|
|
28
|
+
},
|
|
29
|
+
mouths: {
|
|
30
|
+
smile: 'Sonrisa', grin: 'Sonrisa amplia', laugh: 'Carcajada', open: 'Abierta', oh: 'Oh', flat: 'Seria', frown: 'Triste', smirk: 'Pícara',
|
|
31
|
+
cat: 'Gatuna', tongue: 'Lengua fuera', vampire: 'Colmillos', buck: 'Paletas', tiny: 'Pequeñita', kiss: 'Beso', wavy: 'Nerviosa',
|
|
32
|
+
grit: 'Dientes apretados', beak: 'Pico', robot: 'Rejilla', braces: 'Brackets', monster: 'Monstruo', gap: 'Mellada', lips: 'Labios',
|
|
33
|
+
pout: 'Puchero', toothless: 'Desdentada', whistle: 'Silbando', drool: 'Babeando', square: 'Cuadrada', mustachio: 'Sonrisa ladeada',
|
|
34
|
+
},
|
|
35
|
+
cheeks: {
|
|
36
|
+
none: 'Nada', blush: 'Rubor', lines: 'Rubor anime', freckles: 'Pecas', hearts: 'Corazones', whiskers: 'Bigotes de gato', stars: 'Estrellitas', paint: 'Pintura de guerra',
|
|
37
|
+
},
|
|
38
|
+
patterns: {
|
|
39
|
+
none: 'Liso', belly: 'Barriga', spots: 'Manchas', stripes: 'Rayas', tiger: 'Tigre', twotone: 'Dos tonos', mask: 'Antifaz', hearts: 'Corazones', stars: 'Estrellas', circuit: 'Circuito',
|
|
40
|
+
},
|
|
41
|
+
finishes: { glossy: 'Brillante', soft3d: '3D suave', clay: 'Plastilina', flat: 'Plano', toon: 'Cómic', neon: 'Neón', sketch: 'Boceto' },
|
|
42
|
+
groups: { head: 'Cabeza', eyes: 'Ojos', face: 'Cara', neck: 'Cuello', back: 'Espalda', extra: 'Extras' },
|
|
43
|
+
accessories: {
|
|
44
|
+
crown: 'Corona', tiara: 'Tiara', pirate: 'Sombrero pirata', tophat: 'Chistera', beanie: 'Gorro de lana', cap: 'Gorra', cowboy: 'Vaquero', wizard: 'Mago',
|
|
45
|
+
party: 'Fiesta', chef: 'Chef', viking: 'Vikingo', grad: 'Graduación', beret: 'Boina', bow: 'Lazo', flower: 'Flor', halo: 'Aureola', horns: 'Cuernos',
|
|
46
|
+
antenna: 'Antenas', bunny: 'Orejas de conejo', catears: 'Orejas de gato', santa: 'Papá Noel', hardhat: 'Casco de obra', headband: 'Cinta ninja',
|
|
47
|
+
bandana: 'Pañuelo pirata', helmet: 'Casco espacial', headphones: 'Auriculares', hair: 'Tupé', sprout: 'Brote',
|
|
48
|
+
glasses: 'Gafas redondas', square: 'Gafas cuadradas', nerd: 'Gafas empollón', sunglasses: 'Gafas de sol', aviator: 'Aviador', heartglasses: 'Gafas corazón',
|
|
49
|
+
starglasses: 'Gafas estrella', '3d': 'Gafas 3D', monocle: 'Monóculo', eyepatch: 'Parche', goggles: 'Gafas de piloto', visor: 'Visor',
|
|
50
|
+
mustache: 'Bigote', handlebar: 'Bigote manillar', beard: 'Barba', wizardbeard: 'Barba de mago', goatee: 'Perilla', pipe: 'Pipa', lollipop: 'Piruleta',
|
|
51
|
+
clownnose: 'Nariz de payaso', nose: 'Nariz', pignose: 'Nariz de cerdito', bandaid: 'Tirita', scar: 'Cicatriz', ninjamask: 'Máscara ninja', facemask: 'Mascarilla',
|
|
52
|
+
bowtie: 'Pajarita', tie: 'Corbata', scarf: 'Bufanda', pearls: 'Collar de perlas', medal: 'Medalla', bell: 'Cascabel', ruff: 'Gorguera real',
|
|
53
|
+
cape: 'Capa real', superhero: 'Capa de héroe', wings: 'Alas de ángel', batwings: 'Alas de murciélago', tail: 'Cola de diablillo', jetpack: 'Mochila cohete',
|
|
54
|
+
parrot: 'Loro', sparkles: 'Destellos', hearts: 'Corazones', zzz: 'Zzz', sweat: 'Gota de sudor',
|
|
55
|
+
},
|
|
56
|
+
presets: {
|
|
57
|
+
classic: 'Clásico', pirate: 'Pirata', king: 'Rey', queen: 'Reina', wizard: 'Mago', chef: 'Chef', detective: 'Detective', cowboy: 'Vaquero',
|
|
58
|
+
astronaut: 'Astronauta', robot: 'Robot', viking: 'Vikingo', ninja: 'Ninja', ghost: 'Fantasma', cat: 'Gatito', devil: 'Diablillo', angel: 'Ángel',
|
|
59
|
+
scientist: 'Científica', rocker: 'Rockero', student: 'Graduada', clown: 'Payaso', monster: 'Monstruo', nerd: 'Empollón', hero: 'Superhéroe',
|
|
60
|
+
neon: 'Neón', santa: 'Navidad', sprout: 'Brotecito',
|
|
61
|
+
},
|
|
62
|
+
moods: { neutral: 'Neutral', happy: 'Contento', angry: 'Enfadado', sad: 'Triste', fear: 'Miedo', disgust: 'Asco', love: 'Amor', sleep: 'Dormido', surprised: 'Sorpresa' },
|
|
63
|
+
gestures: {
|
|
64
|
+
jump: 'Saltar', wiggle: 'Menearse', nod: 'Asentir', shake: 'Negar', spin: 'Girar', bounce: 'Botar', wave: 'Saludar',
|
|
65
|
+
think: 'Pensar', celebrate: 'Celebrar', surprise: 'Sorprenderse', shrug: 'Encogerse de hombros', sneeze: 'Estornudar', hiccup: 'Hipo',
|
|
66
|
+
laugh: 'Reír', dance: 'Bailar', yawn: 'Bostezar', shiver: 'Tiritar', clap: 'Aplaudir', thumbsup: 'Pulgar arriba', thumbsdown: 'Pulgar abajo',
|
|
67
|
+
point: 'Señalar', bow: 'Reverencia', fly: 'Volar', stomp: 'Pataleta', dizzy: 'Mareado',
|
|
68
|
+
},
|
|
69
|
+
morphs: { spikes: 'Pinchos', wings: 'Alas', hands: 'Manos', horns: 'Cuernos', puff: 'Hincharse', squish: 'Aplastarse', stretch: 'Estirarse', melt: 'Derretirse', jelly: 'Gelatina' },
|
|
70
|
+
effects: {
|
|
71
|
+
sparkles: 'Destellos', sweat: 'Sudor', blush: 'Rubor', hearts: 'Corazones', zzz: 'Zzz', exclaim: 'Exclamación', question: 'Pregunta', anger: 'Enfado',
|
|
72
|
+
steam: 'Vapor', confetti: 'Confeti', tears: 'Lágrimas', thought: 'Pensamiento', notes: 'Notas', sneeze: 'Estornudo', bubble: 'Burbuja', dizzy: 'Mareo',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
editor: {
|
|
76
|
+
kinds: { label: 'Tipo de avatar', character: 'Personaje 2D', realistic: 'Realista 3D', image: 'Imagen' },
|
|
77
|
+
tabs: { styles: 'Estilos', shape: 'Forma', color: 'Color y acabado', eyes: 'Ojos', mouth: 'Boca', face: 'Cara', acc: 'Accesorios' },
|
|
78
|
+
controls: 'Controles de edición',
|
|
79
|
+
preview: 'Vista previa del avatar',
|
|
80
|
+
undo: 'Deshacer',
|
|
81
|
+
undoTitle: 'Deshacer ({keys})',
|
|
82
|
+
redo: 'Rehacer',
|
|
83
|
+
redoTitle: 'Rehacer ({keys})',
|
|
84
|
+
random: 'Aleatorio',
|
|
85
|
+
randomTitle: 'Personaje aleatorio',
|
|
86
|
+
talk: 'Hablar',
|
|
87
|
+
mood: 'Ánimo',
|
|
88
|
+
gesture: 'Gesto',
|
|
89
|
+
gesturePick: 'Gesto…',
|
|
90
|
+
morph: 'Transformación',
|
|
91
|
+
morphPick: 'Transformar…',
|
|
92
|
+
talkSample: '¡Hola! Soy tu nuevo ot. ¿Qué tal sueno?',
|
|
93
|
+
copyJson: 'Copiar JSON',
|
|
94
|
+
jsonCopied: 'JSON copiado',
|
|
95
|
+
copyFailed: 'No se pudo copiar',
|
|
96
|
+
pngFailed: 'No se pudo generar el PNG',
|
|
97
|
+
realistic: {
|
|
98
|
+
title: 'Avatar 3D realista',
|
|
99
|
+
intro: 'Se anima con TalkingHead: lip-sync, expresiones y gestos. El modelo debe ser un .glb con esqueleto Mixamo, los 52 blendshapes ARKit y los 15 visemas Oculus.',
|
|
100
|
+
url: 'URL del modelo (.glb)',
|
|
101
|
+
body: 'Cuerpo',
|
|
102
|
+
bodyF: 'Femenino',
|
|
103
|
+
bodyM: 'Masculino',
|
|
104
|
+
samples: 'Modelos de ejemplo',
|
|
105
|
+
ownTitle: '¿De dónde saco un avatar propio?',
|
|
106
|
+
ownMpfb: '{name} (Blender): los personajes exportados son CC0, aptos para uso comercial. Añade los blendshapes ARKit y los visemas y exporta a GLB.',
|
|
107
|
+
ownVroid: '{name} para estilo anime (se exporta a VRM/GLB).',
|
|
108
|
+
ownCommercial: 'Servicios comerciales (Avatar SDK / MetaPerson, Avaturn de pago) si necesitas avatares desde una foto. Revisa su licencia antes de usarlos.',
|
|
109
|
+
fallback: 'Si el navegador no puede con WebGL, el widget cae al personaje 2D, así que conviene diseñar ambos.',
|
|
110
|
+
},
|
|
111
|
+
image: {
|
|
112
|
+
title: 'Retrato',
|
|
113
|
+
intro: 'Una imagen fija (PNG, JPG, WebP o SVG). La boca no se anima; al hablar se ilumina el contorno.',
|
|
114
|
+
url: 'URL de la imagen',
|
|
115
|
+
placeholder: 'https://…/retrato.png',
|
|
116
|
+
alt: 'Vista previa del retrato',
|
|
117
|
+
},
|
|
118
|
+
styles: {
|
|
119
|
+
title: 'Estilos completos',
|
|
120
|
+
hint: 'Un estilo reemplaza todo el personaje. Después puedes ajustar cada pieza.',
|
|
121
|
+
keepBody: 'Conservar mi forma y color al cambiar de estilo',
|
|
122
|
+
},
|
|
123
|
+
shape: {
|
|
124
|
+
title: 'Forma base',
|
|
125
|
+
deform: 'Deformar',
|
|
126
|
+
hint: 'Arrastra los puntos del contorno en la vista previa (con el teclado: selecciona un punto con Tab y muévelo con las flechas).',
|
|
127
|
+
symmetry: 'Simetría',
|
|
128
|
+
reset: 'Restablecer forma',
|
|
129
|
+
wider: 'Más ancho',
|
|
130
|
+
taller: 'Más alto',
|
|
131
|
+
point: 'Punto {n} del contorno',
|
|
132
|
+
},
|
|
133
|
+
color: {
|
|
134
|
+
body: 'Color del cuerpo',
|
|
135
|
+
swatch: 'Color {color}',
|
|
136
|
+
custom: 'Personalizado',
|
|
137
|
+
finish: 'Acabado',
|
|
138
|
+
outline: 'Contorno',
|
|
139
|
+
outlines: { auto: 'Automático', none: 'Sin contorno', thin: 'Fino', bold: 'Grueso' },
|
|
140
|
+
pattern: 'Patrón',
|
|
141
|
+
patternColor: 'Color del patrón',
|
|
142
|
+
},
|
|
143
|
+
eyes: {
|
|
144
|
+
title: { one: 'Ojos · # tipo', other: 'Ojos · # tipos' },
|
|
145
|
+
iris: 'Iris',
|
|
146
|
+
white: 'Blanco',
|
|
147
|
+
pupil: 'Pupila',
|
|
148
|
+
hint: 'También puedes arrastrar los ojos en la vista previa: arriba/abajo cambia la altura y a los lados la separación.',
|
|
149
|
+
drag: 'Ojos: arrastra para mover',
|
|
150
|
+
},
|
|
151
|
+
mouth: {
|
|
152
|
+
title: { one: 'Boca · # tipo', other: 'Boca · # tipos' },
|
|
153
|
+
stroke: 'Trazo',
|
|
154
|
+
lipstick: 'Pintalabios',
|
|
155
|
+
hint: 'Todas las bocas se abren al hablar (lip-sync con el audio de la voz). Pulsa «{talk}» para probarlo.',
|
|
156
|
+
drag: 'Boca: arrastra para mover',
|
|
157
|
+
},
|
|
158
|
+
face: {
|
|
159
|
+
brows: 'Cejas',
|
|
160
|
+
browColor: 'Color de cejas',
|
|
161
|
+
cheeks: 'Mejillas y marcas',
|
|
162
|
+
},
|
|
163
|
+
settings: 'Ajustes',
|
|
164
|
+
size: 'Tamaño',
|
|
165
|
+
spacing: 'Separación',
|
|
166
|
+
height: 'Altura',
|
|
167
|
+
colorLabel: 'Color',
|
|
168
|
+
acc: {
|
|
169
|
+
group: '{group} · pulsa para poner o quitar',
|
|
170
|
+
empty: 'Aún no hay accesorios. Combina varios: gorro + gafas + pipa…',
|
|
171
|
+
worn: 'Puestos ({count})',
|
|
172
|
+
rotation: 'Giro',
|
|
173
|
+
posX: 'Posición X',
|
|
174
|
+
posY: 'Posición Y',
|
|
175
|
+
detail: 'Detalle',
|
|
176
|
+
flip: 'Voltear',
|
|
177
|
+
front: 'Traer delante',
|
|
178
|
+
back: 'Llevar detrás',
|
|
179
|
+
reset: 'Recolocar',
|
|
180
|
+
remove: 'Quitar',
|
|
181
|
+
hint: 'Arrástralo en la vista previa; con la rueda del ratón cambias su tamaño (con Mayús, el giro).',
|
|
182
|
+
select: 'Selecciona uno para moverlo, girarlo o cambiarle el color.',
|
|
183
|
+
max: 'Máximo {max} accesorios',
|
|
184
|
+
drag: '{name}: arrastra para mover',
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
const en = {
|
|
190
|
+
character: {
|
|
191
|
+
avatar: 'Avatar',
|
|
192
|
+
shapes: {
|
|
193
|
+
pou: 'Pou', round: 'Round', egg: 'Egg', pear: 'Pear', bean: 'Bean', squircle: 'Soft square', wide: 'Wide', tall: 'Tall',
|
|
194
|
+
drop: 'Drop', ghost: 'Ghost', cat: 'Ears', cloud: 'Cloud', blob: 'Squishy', robot: 'Robot', heart: 'Heart', mushroom: 'Mushroom',
|
|
195
|
+
},
|
|
196
|
+
eyes: {
|
|
197
|
+
round: 'Round', dot: 'Dots', kawaii: 'Kawaii', anime: 'Anime', cat: 'Cat', sleepy: 'Sleepy', happy: 'Happy', closed: 'Closed',
|
|
198
|
+
wink: 'Wink', star: 'Stars', heart: 'Hearts', cross: 'K.O.', spiral: 'Dizzy', angry: 'Angry', sad: 'Sad', wide: 'Amazed',
|
|
199
|
+
button: 'Button', robot: 'LED', led: 'Bars', cyclops: 'Cyclops', lashes: 'Lashes', almond: 'Realistic', googly: 'Googly', sparkle: 'Sparkly',
|
|
200
|
+
dollar: 'Dollar', pixel: 'Pixel', bean: 'Bean', tired: 'Tired', villain: 'Villain', glow: 'Ghostly', teary: 'Teary', hypno: 'Hypnotized',
|
|
201
|
+
focused: 'Determined',
|
|
202
|
+
},
|
|
203
|
+
brows: {
|
|
204
|
+
none: 'No brows', soft: 'Soft', thick: 'Thick', thin: 'Thin', arched: 'Arched', bushy: 'Bushy', dots: 'Maro', unibrow: 'Unibrow', angled: 'Pointed',
|
|
205
|
+
},
|
|
206
|
+
mouths: {
|
|
207
|
+
smile: 'Smile', grin: 'Big smile', laugh: 'Laugh', open: 'Open', oh: 'Oh', flat: 'Serious', frown: 'Sad', smirk: 'Cheeky',
|
|
208
|
+
cat: 'Cat', tongue: 'Tongue out', vampire: 'Fangs', buck: 'Buck teeth', tiny: 'Tiny', kiss: 'Kiss', wavy: 'Nervous',
|
|
209
|
+
grit: 'Gritted teeth', beak: 'Beak', robot: 'Grille', braces: 'Braces', monster: 'Monster', gap: 'Gap-toothed', lips: 'Lips',
|
|
210
|
+
pout: 'Pout', toothless: 'Toothless', whistle: 'Whistling', drool: 'Drooling', square: 'Square', mustachio: 'Crooked smile',
|
|
211
|
+
},
|
|
212
|
+
cheeks: {
|
|
213
|
+
none: 'None', blush: 'Blush', lines: 'Anime blush', freckles: 'Freckles', hearts: 'Hearts', whiskers: 'Cat whiskers', stars: 'Little stars', paint: 'War paint',
|
|
214
|
+
},
|
|
215
|
+
patterns: {
|
|
216
|
+
none: 'Plain', belly: 'Belly', spots: 'Spots', stripes: 'Stripes', tiger: 'Tiger', twotone: 'Two-tone', mask: 'Mask', hearts: 'Hearts', stars: 'Stars', circuit: 'Circuit',
|
|
217
|
+
},
|
|
218
|
+
finishes: { glossy: 'Glossy', soft3d: 'Soft 3D', clay: 'Clay', flat: 'Flat', toon: 'Comic', neon: 'Neon', sketch: 'Sketch' },
|
|
219
|
+
groups: { head: 'Head', eyes: 'Eyes', face: 'Face', neck: 'Neck', back: 'Back', extra: 'Extras' },
|
|
220
|
+
accessories: {
|
|
221
|
+
crown: 'Crown', tiara: 'Tiara', pirate: 'Pirate hat', tophat: 'Top hat', beanie: 'Beanie', cap: 'Cap', cowboy: 'Cowboy', wizard: 'Wizard',
|
|
222
|
+
party: 'Party', chef: 'Chef', viking: 'Viking', grad: 'Graduation', beret: 'Beret', bow: 'Bow', flower: 'Flower', halo: 'Halo', horns: 'Horns',
|
|
223
|
+
antenna: 'Antennae', bunny: 'Bunny ears', catears: 'Cat ears', santa: 'Santa', hardhat: 'Hard hat', headband: 'Ninja headband',
|
|
224
|
+
bandana: 'Pirate bandana', helmet: 'Space helmet', headphones: 'Headphones', hair: 'Quiff', sprout: 'Sprout',
|
|
225
|
+
glasses: 'Round glasses', square: 'Square glasses', nerd: 'Nerd glasses', sunglasses: 'Sunglasses', aviator: 'Aviator', heartglasses: 'Heart glasses',
|
|
226
|
+
starglasses: 'Star glasses', '3d': '3D glasses', monocle: 'Monocle', eyepatch: 'Eye patch', goggles: 'Pilot goggles', visor: 'Visor',
|
|
227
|
+
mustache: 'Mustache', handlebar: 'Handlebar mustache', beard: 'Beard', wizardbeard: 'Wizard beard', goatee: 'Goatee', pipe: 'Pipe', lollipop: 'Lollipop',
|
|
228
|
+
clownnose: 'Clown nose', nose: 'Nose', pignose: 'Piggy nose', bandaid: 'Band-aid', scar: 'Scar', ninjamask: 'Ninja mask', facemask: 'Face mask',
|
|
229
|
+
bowtie: 'Bow tie', tie: 'Tie', scarf: 'Scarf', pearls: 'Pearl necklace', medal: 'Medal', bell: 'Bell', ruff: 'Royal ruff',
|
|
230
|
+
cape: 'Royal cape', superhero: 'Hero cape', wings: 'Angel wings', batwings: 'Bat wings', tail: 'Devil tail', jetpack: 'Jetpack',
|
|
231
|
+
parrot: 'Parrot', sparkles: 'Sparkles', hearts: 'Hearts', zzz: 'Zzz', sweat: 'Sweat drop',
|
|
232
|
+
},
|
|
233
|
+
presets: {
|
|
234
|
+
classic: 'Classic', pirate: 'Pirate', king: 'King', queen: 'Queen', wizard: 'Wizard', chef: 'Chef', detective: 'Detective', cowboy: 'Cowboy',
|
|
235
|
+
astronaut: 'Astronaut', robot: 'Robot', viking: 'Viking', ninja: 'Ninja', ghost: 'Ghost', cat: 'Kitty', devil: 'Little devil', angel: 'Angel',
|
|
236
|
+
scientist: 'Scientist', rocker: 'Rocker', student: 'Graduate', clown: 'Clown', monster: 'Monster', nerd: 'Nerd', hero: 'Superhero',
|
|
237
|
+
neon: 'Neon', santa: 'Christmas', sprout: 'Little sprout',
|
|
238
|
+
},
|
|
239
|
+
moods: { neutral: 'Neutral', happy: 'Happy', angry: 'Angry', sad: 'Sad', fear: 'Fear', disgust: 'Disgust', love: 'Love', sleep: 'Asleep', surprised: 'Surprise' },
|
|
240
|
+
gestures: {
|
|
241
|
+
jump: 'Jump', wiggle: 'Wiggle', nod: 'Nod', shake: 'Shake head', spin: 'Spin', bounce: 'Bounce', wave: 'Wave',
|
|
242
|
+
think: 'Think', celebrate: 'Celebrate', surprise: 'Surprise', shrug: 'Shrug', sneeze: 'Sneeze', hiccup: 'Hiccup',
|
|
243
|
+
laugh: 'Laugh', dance: 'Dance', yawn: 'Yawn', shiver: 'Shiver', clap: 'Clap', thumbsup: 'Thumbs up', thumbsdown: 'Thumbs down',
|
|
244
|
+
point: 'Point', bow: 'Bow', fly: 'Fly', stomp: 'Stomp', dizzy: 'Dizzy',
|
|
245
|
+
},
|
|
246
|
+
morphs: { spikes: 'Spikes', wings: 'Wings', hands: 'Hands', horns: 'Horns', puff: 'Puff up', squish: 'Squish', stretch: 'Stretch', melt: 'Melt', jelly: 'Jelly' },
|
|
247
|
+
effects: {
|
|
248
|
+
sparkles: 'Sparkles', sweat: 'Sweat', blush: 'Blush', hearts: 'Hearts', zzz: 'Zzz', exclaim: 'Exclamation', question: 'Question', anger: 'Anger',
|
|
249
|
+
steam: 'Steam', confetti: 'Confetti', tears: 'Tears', thought: 'Thought', notes: 'Notes', sneeze: 'Sneeze', bubble: 'Bubble', dizzy: 'Dizzy',
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
editor: {
|
|
253
|
+
kinds: { label: 'Avatar type', character: '2D character', realistic: 'Realistic 3D', image: 'Image' },
|
|
254
|
+
tabs: { styles: 'Styles', shape: 'Shape', color: 'Color & finish', eyes: 'Eyes', mouth: 'Mouth', face: 'Face', acc: 'Accessories' },
|
|
255
|
+
controls: 'Editing controls',
|
|
256
|
+
preview: 'Avatar preview',
|
|
257
|
+
undo: 'Undo',
|
|
258
|
+
undoTitle: 'Undo ({keys})',
|
|
259
|
+
redo: 'Redo',
|
|
260
|
+
redoTitle: 'Redo ({keys})',
|
|
261
|
+
random: 'Random',
|
|
262
|
+
randomTitle: 'Random character',
|
|
263
|
+
talk: 'Talk',
|
|
264
|
+
mood: 'Mood',
|
|
265
|
+
gesture: 'Gesture',
|
|
266
|
+
gesturePick: 'Gesture…',
|
|
267
|
+
morph: 'Transform',
|
|
268
|
+
morphPick: 'Transform…',
|
|
269
|
+
talkSample: 'Hi there! I am your new ot. How do I sound?',
|
|
270
|
+
copyJson: 'Copy JSON',
|
|
271
|
+
jsonCopied: 'JSON copied',
|
|
272
|
+
copyFailed: 'Could not copy',
|
|
273
|
+
pngFailed: 'Could not create the PNG',
|
|
274
|
+
realistic: {
|
|
275
|
+
title: 'Realistic 3D avatar',
|
|
276
|
+
intro: 'Animated with TalkingHead: lip-sync, expressions and gestures. The model must be a .glb with a Mixamo skeleton, the 52 ARKit blendshapes and the 15 Oculus visemes.',
|
|
277
|
+
url: 'Model URL (.glb)',
|
|
278
|
+
body: 'Body',
|
|
279
|
+
bodyF: 'Female',
|
|
280
|
+
bodyM: 'Male',
|
|
281
|
+
samples: 'Sample models',
|
|
282
|
+
ownTitle: 'Where do I get my own avatar?',
|
|
283
|
+
ownMpfb: '{name} (Blender): exported characters are CC0 and fine for commercial use. Add the ARKit blendshapes and the visemes, then export to GLB.',
|
|
284
|
+
ownVroid: '{name} for an anime style (exports to VRM/GLB).',
|
|
285
|
+
ownCommercial: 'Commercial services (Avatar SDK / MetaPerson, paid Avaturn) if you need avatars from a photo. Check their license before using them.',
|
|
286
|
+
fallback: 'If the browser can’t handle WebGL, the widget falls back to the 2D character, so it’s worth designing both.',
|
|
287
|
+
},
|
|
288
|
+
image: {
|
|
289
|
+
title: 'Portrait',
|
|
290
|
+
intro: 'A still image (PNG, JPG, WebP or SVG). The mouth isn’t animated; the outline lights up while speaking.',
|
|
291
|
+
url: 'Image URL',
|
|
292
|
+
placeholder: 'https://…/portrait.png',
|
|
293
|
+
alt: 'Portrait preview',
|
|
294
|
+
},
|
|
295
|
+
styles: {
|
|
296
|
+
title: 'Complete styles',
|
|
297
|
+
hint: 'A style replaces the whole character. You can then adjust each part.',
|
|
298
|
+
keepBody: 'Keep my shape and color when changing style',
|
|
299
|
+
},
|
|
300
|
+
shape: {
|
|
301
|
+
title: 'Base shape',
|
|
302
|
+
deform: 'Reshape',
|
|
303
|
+
hint: 'Drag the outline points in the preview (with the keyboard: select a point with Tab and move it with the arrow keys).',
|
|
304
|
+
symmetry: 'Symmetry',
|
|
305
|
+
reset: 'Reset shape',
|
|
306
|
+
wider: 'Wider',
|
|
307
|
+
taller: 'Taller',
|
|
308
|
+
point: 'Outline point {n}',
|
|
309
|
+
},
|
|
310
|
+
color: {
|
|
311
|
+
body: 'Body color',
|
|
312
|
+
swatch: 'Color {color}',
|
|
313
|
+
custom: 'Custom',
|
|
314
|
+
finish: 'Finish',
|
|
315
|
+
outline: 'Outline',
|
|
316
|
+
outlines: { auto: 'Automatic', none: 'No outline', thin: 'Thin', bold: 'Bold' },
|
|
317
|
+
pattern: 'Pattern',
|
|
318
|
+
patternColor: 'Pattern color',
|
|
319
|
+
},
|
|
320
|
+
eyes: {
|
|
321
|
+
title: { one: 'Eyes · # type', other: 'Eyes · # types' },
|
|
322
|
+
iris: 'Iris',
|
|
323
|
+
white: 'White',
|
|
324
|
+
pupil: 'Pupil',
|
|
325
|
+
hint: 'You can also drag the eyes in the preview: up/down changes the height and sideways the spacing.',
|
|
326
|
+
drag: 'Eyes: drag to move',
|
|
327
|
+
},
|
|
328
|
+
mouth: {
|
|
329
|
+
title: { one: 'Mouth · # type', other: 'Mouth · # types' },
|
|
330
|
+
stroke: 'Stroke',
|
|
331
|
+
lipstick: 'Lipstick',
|
|
332
|
+
hint: 'Every mouth opens while speaking (lip-sync with the voice audio). Press “{talk}” to try it.',
|
|
333
|
+
drag: 'Mouth: drag to move',
|
|
334
|
+
},
|
|
335
|
+
face: {
|
|
336
|
+
brows: 'Eyebrows',
|
|
337
|
+
browColor: 'Eyebrow color',
|
|
338
|
+
cheeks: 'Cheeks & marks',
|
|
339
|
+
},
|
|
340
|
+
settings: 'Settings',
|
|
341
|
+
size: 'Size',
|
|
342
|
+
spacing: 'Spacing',
|
|
343
|
+
height: 'Height',
|
|
344
|
+
colorLabel: 'Color',
|
|
345
|
+
acc: {
|
|
346
|
+
group: '{group} · tap to add or remove',
|
|
347
|
+
empty: 'No accessories yet. Mix several: hat + glasses + pipe…',
|
|
348
|
+
worn: 'Wearing ({count})',
|
|
349
|
+
rotation: 'Rotation',
|
|
350
|
+
posX: 'Position X',
|
|
351
|
+
posY: 'Position Y',
|
|
352
|
+
detail: 'Detail',
|
|
353
|
+
flip: 'Flip',
|
|
354
|
+
front: 'Bring forward',
|
|
355
|
+
back: 'Send backward',
|
|
356
|
+
reset: 'Reposition',
|
|
357
|
+
remove: 'Remove',
|
|
358
|
+
hint: 'Drag it in the preview; the mouse wheel changes its size (with Shift, the rotation).',
|
|
359
|
+
select: 'Select one to move it, rotate it or change its color.',
|
|
360
|
+
max: 'Up to {max} accessories',
|
|
361
|
+
drag: '{name}: drag to move',
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
const pt = {
|
|
367
|
+
character: {
|
|
368
|
+
avatar: 'Avatar',
|
|
369
|
+
shapes: {
|
|
370
|
+
pou: 'Pou', round: 'Redondo', egg: 'Ovo', pear: 'Pera', bean: 'Vagem', squircle: 'Quadrado suave', wide: 'Largo', tall: 'Alto',
|
|
371
|
+
drop: 'Gota', ghost: 'Fantasma', cat: 'Orelhas', cloud: 'Nuvem', blob: 'Fofinho', robot: 'Robô', heart: 'Coração', mushroom: 'Cogumelo',
|
|
372
|
+
},
|
|
373
|
+
eyes: {
|
|
374
|
+
round: 'Redondos', dot: 'Pontinhos', kawaii: 'Kawaii', anime: 'Anime', cat: 'Gato', sleepy: 'Sonolentos', happy: 'Felizes', closed: 'Fechados',
|
|
375
|
+
wink: 'Piscadinha', star: 'Estrelas', heart: 'Corações', cross: 'K.O.', spiral: 'Tonto', angry: 'Bravos', sad: 'Tristes', wide: 'Espantados',
|
|
376
|
+
button: 'Botão', robot: 'LED', led: 'Barras', cyclops: 'Ciclope', lashes: 'Cílios', almond: 'Realistas', googly: 'Malucos', sparkle: 'Brilhantes',
|
|
377
|
+
dollar: 'Dólar', pixel: 'Pixel', bean: 'Feijão', tired: 'Cansados', villain: 'Vilão', glow: 'Fantasmagóricos', teary: 'Chorosos', hypno: 'Hipnose',
|
|
378
|
+
focused: 'Decididos',
|
|
379
|
+
},
|
|
380
|
+
brows: {
|
|
381
|
+
none: 'Sem sobrancelhas', soft: 'Suaves', thick: 'Grossas', thin: 'Finas', arched: 'Arqueadas', bushy: 'Cheias', dots: 'Maro', unibrow: 'Monocelha', angled: 'Pontudas',
|
|
382
|
+
},
|
|
383
|
+
mouths: {
|
|
384
|
+
smile: 'Sorriso', grin: 'Sorrisão', laugh: 'Gargalhada', open: 'Aberta', oh: 'Oh', flat: 'Séria', frown: 'Triste', smirk: 'Marota',
|
|
385
|
+
cat: 'Felina', tongue: 'Língua de fora', vampire: 'Presas', buck: 'Dentuça', tiny: 'Pequenininha', kiss: 'Beijo', wavy: 'Nervosa',
|
|
386
|
+
grit: 'Dentes cerrados', beak: 'Bico', robot: 'Grade', braces: 'Aparelho', monster: 'Monstro', gap: 'Janelinha', lips: 'Lábios',
|
|
387
|
+
pout: 'Beicinho', toothless: 'Banguela', whistle: 'Assobiando', drool: 'Babando', square: 'Quadrada', mustachio: 'Sorriso de lado',
|
|
388
|
+
},
|
|
389
|
+
cheeks: {
|
|
390
|
+
none: 'Nada', blush: 'Rubor', lines: 'Rubor anime', freckles: 'Sardas', hearts: 'Corações', whiskers: 'Bigodes de gato', stars: 'Estrelinhas', paint: 'Pintura de guerra',
|
|
391
|
+
},
|
|
392
|
+
patterns: {
|
|
393
|
+
none: 'Liso', belly: 'Barriga', spots: 'Manchas', stripes: 'Listras', tiger: 'Tigre', twotone: 'Duas cores', mask: 'Máscara', hearts: 'Corações', stars: 'Estrelas', circuit: 'Circuito',
|
|
394
|
+
},
|
|
395
|
+
finishes: { glossy: 'Brilhante', soft3d: '3D suave', clay: 'Massinha', flat: 'Plano', toon: 'Quadrinhos', neon: 'Neon', sketch: 'Esboço' },
|
|
396
|
+
groups: { head: 'Cabeça', eyes: 'Olhos', face: 'Rosto', neck: 'Pescoço', back: 'Costas', extra: 'Extras' },
|
|
397
|
+
accessories: {
|
|
398
|
+
crown: 'Coroa', tiara: 'Tiara', pirate: 'Chapéu pirata', tophat: 'Cartola', beanie: 'Gorro de lã', cap: 'Boné', cowboy: 'Caubói', wizard: 'Mago',
|
|
399
|
+
party: 'Festa', chef: 'Chef', viking: 'Viking', grad: 'Formatura', beret: 'Boina', bow: 'Laço', flower: 'Flor', halo: 'Auréola', horns: 'Chifres',
|
|
400
|
+
antenna: 'Antenas', bunny: 'Orelhas de coelho', catears: 'Orelhas de gato', santa: 'Papai Noel', hardhat: 'Capacete de obra', headband: 'Faixa ninja',
|
|
401
|
+
bandana: 'Bandana pirata', helmet: 'Capacete espacial', headphones: 'Fones de ouvido', hair: 'Topete', sprout: 'Broto',
|
|
402
|
+
glasses: 'Óculos redondos', square: 'Óculos quadrados', nerd: 'Óculos de nerd', sunglasses: 'Óculos de sol', aviator: 'Aviador', heartglasses: 'Óculos de coração',
|
|
403
|
+
starglasses: 'Óculos de estrela', '3d': 'Óculos 3D', monocle: 'Monóculo', eyepatch: 'Tapa-olho', goggles: 'Óculos de piloto', visor: 'Viseira',
|
|
404
|
+
mustache: 'Bigode', handlebar: 'Bigode guidão', beard: 'Barba', wizardbeard: 'Barba de mago', goatee: 'Cavanhaque', pipe: 'Cachimbo', lollipop: 'Pirulito',
|
|
405
|
+
clownnose: 'Nariz de palhaço', nose: 'Nariz', pignose: 'Focinho de porquinho', bandaid: 'Curativo', scar: 'Cicatriz', ninjamask: 'Máscara ninja', facemask: 'Máscara facial',
|
|
406
|
+
bowtie: 'Gravata-borboleta', tie: 'Gravata', scarf: 'Cachecol', pearls: 'Colar de pérolas', medal: 'Medalha', bell: 'Guizo', ruff: 'Gola real',
|
|
407
|
+
cape: 'Capa real', superhero: 'Capa de herói', wings: 'Asas de anjo', batwings: 'Asas de morcego', tail: 'Rabo de diabinho', jetpack: 'Mochila a jato',
|
|
408
|
+
parrot: 'Papagaio', sparkles: 'Brilhos', hearts: 'Corações', zzz: 'Zzz', sweat: 'Gota de suor',
|
|
409
|
+
},
|
|
410
|
+
presets: {
|
|
411
|
+
classic: 'Clássico', pirate: 'Pirata', king: 'Rei', queen: 'Rainha', wizard: 'Mago', chef: 'Chef', detective: 'Detetive', cowboy: 'Caubói',
|
|
412
|
+
astronaut: 'Astronauta', robot: 'Robô', viking: 'Viking', ninja: 'Ninja', ghost: 'Fantasma', cat: 'Gatinho', devil: 'Diabinho', angel: 'Anjo',
|
|
413
|
+
scientist: 'Cientista', rocker: 'Roqueiro', student: 'Formanda', clown: 'Palhaço', monster: 'Monstro', nerd: 'Nerd', hero: 'Super-herói',
|
|
414
|
+
neon: 'Neon', santa: 'Natal', sprout: 'Brotinho',
|
|
415
|
+
},
|
|
416
|
+
moods: { neutral: 'Neutro', happy: 'Contente', angry: 'Bravo', sad: 'Triste', fear: 'Medo', disgust: 'Nojo', love: 'Amor', sleep: 'Dormindo', surprised: 'Surpresa' },
|
|
417
|
+
gestures: {
|
|
418
|
+
jump: 'Pular', wiggle: 'Balançar', nod: 'Assentir', shake: 'Negar', spin: 'Girar', bounce: 'Quicar', wave: 'Acenar',
|
|
419
|
+
think: 'Pensar', celebrate: 'Comemorar', surprise: 'Surpreender-se', shrug: 'Dar de ombros', sneeze: 'Espirrar', hiccup: 'Soluço',
|
|
420
|
+
laugh: 'Rir', dance: 'Dançar', yawn: 'Bocejar', shiver: 'Tremer', clap: 'Aplaudir', thumbsup: 'Joinha', thumbsdown: 'Polegar para baixo',
|
|
421
|
+
point: 'Apontar', bow: 'Reverência', fly: 'Voar', stomp: 'Birra', dizzy: 'Tonto',
|
|
422
|
+
},
|
|
423
|
+
morphs: { spikes: 'Espinhos', wings: 'Asas', hands: 'Mãos', horns: 'Chifres', puff: 'Inchar', squish: 'Achatar', stretch: 'Esticar', melt: 'Derreter', jelly: 'Gelatina' },
|
|
424
|
+
effects: {
|
|
425
|
+
sparkles: 'Brilhos', sweat: 'Suor', blush: 'Rubor', hearts: 'Corações', zzz: 'Zzz', exclaim: 'Exclamação', question: 'Pergunta', anger: 'Raiva',
|
|
426
|
+
steam: 'Vapor', confetti: 'Confete', tears: 'Lágrimas', thought: 'Pensamento', notes: 'Notas', sneeze: 'Espirro', bubble: 'Bolha', dizzy: 'Tontura',
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
editor: {
|
|
430
|
+
kinds: { label: 'Tipo de avatar', character: 'Personagem 2D', realistic: 'Realista 3D', image: 'Imagem' },
|
|
431
|
+
tabs: { styles: 'Estilos', shape: 'Forma', color: 'Cor e acabamento', eyes: 'Olhos', mouth: 'Boca', face: 'Rosto', acc: 'Acessórios' },
|
|
432
|
+
controls: 'Controles de edição',
|
|
433
|
+
preview: 'Prévia do avatar',
|
|
434
|
+
undo: 'Desfazer',
|
|
435
|
+
undoTitle: 'Desfazer ({keys})',
|
|
436
|
+
redo: 'Refazer',
|
|
437
|
+
redoTitle: 'Refazer ({keys})',
|
|
438
|
+
random: 'Aleatório',
|
|
439
|
+
randomTitle: 'Personagem aleatório',
|
|
440
|
+
talk: 'Falar',
|
|
441
|
+
mood: 'Humor',
|
|
442
|
+
gesture: 'Gesto',
|
|
443
|
+
gesturePick: 'Gesto…',
|
|
444
|
+
morph: 'Transformação',
|
|
445
|
+
morphPick: 'Transformar…',
|
|
446
|
+
talkSample: 'Olá! Eu sou o seu novo ot. Como estou soando?',
|
|
447
|
+
copyJson: 'Copiar JSON',
|
|
448
|
+
jsonCopied: 'JSON copiado',
|
|
449
|
+
copyFailed: 'Não foi possível copiar',
|
|
450
|
+
pngFailed: 'Não foi possível gerar o PNG',
|
|
451
|
+
realistic: {
|
|
452
|
+
title: 'Avatar 3D realista',
|
|
453
|
+
intro: 'Animado com TalkingHead: lip-sync, expressões e gestos. O modelo deve ser um .glb com esqueleto Mixamo, os 52 blendshapes ARKit e os 15 visemas Oculus.',
|
|
454
|
+
url: 'URL do modelo (.glb)',
|
|
455
|
+
body: 'Corpo',
|
|
456
|
+
bodyF: 'Feminino',
|
|
457
|
+
bodyM: 'Masculino',
|
|
458
|
+
samples: 'Modelos de exemplo',
|
|
459
|
+
ownTitle: 'Onde consigo um avatar próprio?',
|
|
460
|
+
ownMpfb: '{name} (Blender): os personagens exportados são CC0, liberados para uso comercial. Adicione os blendshapes ARKit e os visemas e exporte para GLB.',
|
|
461
|
+
ownVroid: '{name} para estilo anime (exporta para VRM/GLB).',
|
|
462
|
+
ownCommercial: 'Serviços comerciais (Avatar SDK / MetaPerson, Avaturn pago) se você precisa de avatares a partir de uma foto. Confira a licença antes de usá-los.',
|
|
463
|
+
fallback: 'Se o navegador não suportar WebGL, o widget volta para o personagem 2D, então vale a pena criar os dois.',
|
|
464
|
+
},
|
|
465
|
+
image: {
|
|
466
|
+
title: 'Retrato',
|
|
467
|
+
intro: 'Uma imagem fixa (PNG, JPG, WebP ou SVG). A boca não é animada; ao falar, o contorno se ilumina.',
|
|
468
|
+
url: 'URL da imagem',
|
|
469
|
+
placeholder: 'https://…/retrato.png',
|
|
470
|
+
alt: 'Prévia do retrato',
|
|
471
|
+
},
|
|
472
|
+
styles: {
|
|
473
|
+
title: 'Estilos completos',
|
|
474
|
+
hint: 'Um estilo substitui o personagem inteiro. Depois você pode ajustar cada peça.',
|
|
475
|
+
keepBody: 'Manter minha forma e cor ao trocar de estilo',
|
|
476
|
+
},
|
|
477
|
+
shape: {
|
|
478
|
+
title: 'Forma base',
|
|
479
|
+
deform: 'Deformar',
|
|
480
|
+
hint: 'Arraste os pontos do contorno na prévia (pelo teclado: selecione um ponto com Tab e mova-o com as setas).',
|
|
481
|
+
symmetry: 'Simetria',
|
|
482
|
+
reset: 'Restaurar forma',
|
|
483
|
+
wider: 'Mais largo',
|
|
484
|
+
taller: 'Mais alto',
|
|
485
|
+
point: 'Ponto {n} do contorno',
|
|
486
|
+
},
|
|
487
|
+
color: {
|
|
488
|
+
body: 'Cor do corpo',
|
|
489
|
+
swatch: 'Cor {color}',
|
|
490
|
+
custom: 'Personalizada',
|
|
491
|
+
finish: 'Acabamento',
|
|
492
|
+
outline: 'Contorno',
|
|
493
|
+
outlines: { auto: 'Automático', none: 'Sem contorno', thin: 'Fino', bold: 'Grosso' },
|
|
494
|
+
pattern: 'Padrão',
|
|
495
|
+
patternColor: 'Cor do padrão',
|
|
496
|
+
},
|
|
497
|
+
eyes: {
|
|
498
|
+
title: { one: 'Olhos · # tipo', other: 'Olhos · # tipos' },
|
|
499
|
+
iris: 'Íris',
|
|
500
|
+
white: 'Branco',
|
|
501
|
+
pupil: 'Pupila',
|
|
502
|
+
hint: 'Você também pode arrastar os olhos na prévia: para cima/baixo muda a altura e para os lados, a separação.',
|
|
503
|
+
drag: 'Olhos: arraste para mover',
|
|
504
|
+
},
|
|
505
|
+
mouth: {
|
|
506
|
+
title: { one: 'Boca · # tipo', other: 'Boca · # tipos' },
|
|
507
|
+
stroke: 'Traço',
|
|
508
|
+
lipstick: 'Batom',
|
|
509
|
+
hint: 'Todas as bocas se abrem ao falar (lip-sync com o áudio da voz). Toque em “{talk}” para testar.',
|
|
510
|
+
drag: 'Boca: arraste para mover',
|
|
511
|
+
},
|
|
512
|
+
face: {
|
|
513
|
+
brows: 'Sobrancelhas',
|
|
514
|
+
browColor: 'Cor das sobrancelhas',
|
|
515
|
+
cheeks: 'Bochechas e marcas',
|
|
516
|
+
},
|
|
517
|
+
settings: 'Ajustes',
|
|
518
|
+
size: 'Tamanho',
|
|
519
|
+
spacing: 'Separação',
|
|
520
|
+
height: 'Altura',
|
|
521
|
+
colorLabel: 'Cor',
|
|
522
|
+
acc: {
|
|
523
|
+
group: '{group} · toque para colocar ou tirar',
|
|
524
|
+
empty: 'Ainda não há acessórios. Combine vários: gorro + óculos + cachimbo…',
|
|
525
|
+
worn: 'Usando ({count})',
|
|
526
|
+
rotation: 'Giro',
|
|
527
|
+
posX: 'Posição X',
|
|
528
|
+
posY: 'Posição Y',
|
|
529
|
+
detail: 'Detalhe',
|
|
530
|
+
flip: 'Espelhar',
|
|
531
|
+
front: 'Trazer para frente',
|
|
532
|
+
back: 'Levar para trás',
|
|
533
|
+
reset: 'Reposicionar',
|
|
534
|
+
remove: 'Tirar',
|
|
535
|
+
hint: 'Arraste-o na prévia; com a roda do mouse você muda o tamanho (com Shift, o giro).',
|
|
536
|
+
select: 'Selecione um para movê-lo, girá-lo ou mudar a cor.',
|
|
537
|
+
max: 'Máximo de {max} acessórios',
|
|
538
|
+
drag: '{name}: arraste para mover',
|
|
539
|
+
},
|
|
540
|
+
},
|
|
541
|
+
};
|
|
542
|
+
|
|
543
|
+
addCatalog({ es, en, pt });
|