@the-inclusionist/engine 6.36.1
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/LICENSE +661 -0
- package/README.md +107 -0
- package/app/css/style.css +622 -0
- package/app/public/vendor/fonts/andika-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/andika-400.woff2 +0 -0
- package/app/public/vendor/fonts/andika-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/andika-700.woff2 +0 -0
- package/app/public/vendor/fonts/atkinson-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/atkinson-400.woff2 +0 -0
- package/app/public/vendor/fonts/atkinson-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/atkinson-700.woff2 +0 -0
- package/app/public/vendor/fonts/atkinson-mono-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/atkinson-mono-400.woff2 +0 -0
- package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
- package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
- package/app/public/vendor/fonts/greatvibes-400.woff2 +0 -0
- package/app/public/vendor/fonts/inter-400.woff2 +0 -0
- package/app/public/vendor/fonts/inter-700.woff2 +0 -0
- package/app/public/vendor/fonts/lato-400.woff2 +0 -0
- package/app/public/vendor/fonts/lato-700.woff2 +0 -0
- package/app/public/vendor/fonts/lexend-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/lexend-400.woff2 +0 -0
- package/app/public/vendor/fonts/lexend-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/lexend-700.woff2 +0 -0
- package/app/public/vendor/fonts/literata-400.woff2 +0 -0
- package/app/public/vendor/fonts/literata-700.woff2 +0 -0
- package/app/public/vendor/fonts/newsreader-400.woff2 +0 -0
- package/app/public/vendor/fonts/newsreader-700.woff2 +0 -0
- package/app/public/vendor/fonts/opensans-400.woff2 +0 -0
- package/app/public/vendor/fonts/opensans-700.woff2 +0 -0
- package/app/public/vendor/fonts/pinyon-400.woff2 +0 -0
- package/app/public/vendor/fonts/quattro-400.woff2 +0 -0
- package/app/public/vendor/fonts/quattro-700.woff2 +0 -0
- package/app/public/vendor/fonts/sourcesans-400.woff2 +0 -0
- package/app/public/vendor/fonts/sourcesans-700.woff2 +0 -0
- package/app/public/vendor/fonts/sourceserif-400.woff2 +0 -0
- package/app/public/vendor/fonts/sourceserif-700.woff2 +0 -0
- package/app/public/vendor/fonts/ufcook-700.woff2 +0 -0
- package/app/public/vendor/fonts/ufmag-400.woff2 +0 -0
- package/app/public/vendor/fonts.css +88 -0
- package/dist-pkg/boot/create-game.d.ts +159 -0
- package/dist-pkg/boot/create-game.js +266 -0
- package/dist-pkg/core/a11y-sr.d.ts +4 -0
- package/dist-pkg/core/a11y-sr.js +20 -0
- package/dist-pkg/core/actions.d.ts +100 -0
- package/dist-pkg/core/actions.js +149 -0
- package/dist-pkg/core/anel.d.ts +17 -0
- package/dist-pkg/core/anel.js +31 -0
- package/dist-pkg/core/collision.d.ts +21 -0
- package/dist-pkg/core/collision.js +62 -0
- package/dist-pkg/core/constants.d.ts +84 -0
- package/dist-pkg/core/constants.js +64 -0
- package/dist-pkg/core/contract.d.ts +227 -0
- package/dist-pkg/core/contract.js +184 -0
- package/dist-pkg/core/dom-query.d.ts +9 -0
- package/dist-pkg/core/dom-query.js +25 -0
- package/dist-pkg/core/entity.d.ts +150 -0
- package/dist-pkg/core/entity.js +38 -0
- package/dist-pkg/core/escape-html.d.ts +16 -0
- package/dist-pkg/core/escape-html.js +32 -0
- package/dist-pkg/core/i18n.d.ts +71 -0
- package/dist-pkg/core/i18n.js +236 -0
- package/dist-pkg/core/layers.d.ts +39 -0
- package/dist-pkg/core/layers.js +71 -0
- package/dist-pkg/core/letter-grid.d.ts +55 -0
- package/dist-pkg/core/letter-grid.js +116 -0
- package/dist-pkg/core/loop.d.ts +17 -0
- package/dist-pkg/core/loop.js +36 -0
- package/dist-pkg/core/password.d.ts +34 -0
- package/dist-pkg/core/password.js +205 -0
- package/dist-pkg/core/rng.d.ts +20 -0
- package/dist-pkg/core/rng.js +61 -0
- package/dist-pkg/core/rotulo-acessivel.d.ts +17 -0
- package/dist-pkg/core/rotulo-acessivel.js +41 -0
- package/dist-pkg/core/run-state.d.ts +115 -0
- package/dist-pkg/core/run-state.js +40 -0
- package/dist-pkg/core/scenes.d.ts +68 -0
- package/dist-pkg/core/scenes.js +64 -0
- package/dist-pkg/core/screens.d.ts +16 -0
- package/dist-pkg/core/screens.js +28 -0
- package/dist-pkg/core/state.d.ts +138 -0
- package/dist-pkg/core/state.js +290 -0
- package/dist-pkg/core/tiles.d.ts +12 -0
- package/dist-pkg/core/tiles.js +61 -0
- package/dist-pkg/core/world.d.ts +4 -0
- package/dist-pkg/core/world.js +58 -0
- package/dist-pkg/educational/activities-registry.d.ts +47 -0
- package/dist-pkg/educational/activities-registry.js +95 -0
- package/dist-pkg/i18n/en.d.ts +3 -0
- package/dist-pkg/i18n/en.js +560 -0
- package/dist-pkg/i18n/es.d.ts +3 -0
- package/dist-pkg/i18n/es.js +558 -0
- package/dist-pkg/i18n/pt.d.ts +3 -0
- package/dist-pkg/i18n/pt.js +618 -0
- package/dist-pkg/input/default-bindings.d.ts +24 -0
- package/dist-pkg/input/default-bindings.js +122 -0
- package/dist-pkg/input/devices.d.ts +15 -0
- package/dist-pkg/input/devices.js +31 -0
- package/dist-pkg/input/edges.d.ts +58 -0
- package/dist-pkg/input/edges.js +49 -0
- package/dist-pkg/input/gamepad.d.ts +203 -0
- package/dist-pkg/input/gamepad.js +531 -0
- package/dist-pkg/input/keyboard-runtime.d.ts +61 -0
- package/dist-pkg/input/keyboard-runtime.js +83 -0
- package/dist-pkg/input/keyboard.d.ts +45 -0
- package/dist-pkg/input/keyboard.js +80 -0
- package/dist-pkg/input/keydown.d.ts +270 -0
- package/dist-pkg/input/keydown.js +381 -0
- package/dist-pkg/input/latch.d.ts +30 -0
- package/dist-pkg/input/latch.js +63 -0
- package/dist-pkg/input/pointer-space.d.ts +40 -0
- package/dist-pkg/input/pointer-space.js +51 -0
- package/dist-pkg/input/state.d.ts +11 -0
- package/dist-pkg/input/state.js +12 -0
- package/dist-pkg/input/touch-bindings.d.ts +210 -0
- package/dist-pkg/input/touch-bindings.js +365 -0
- package/dist-pkg/input/touch.d.ts +173 -0
- package/dist-pkg/input/touch.js +314 -0
- package/dist-pkg/input/transports.d.ts +90 -0
- package/dist-pkg/input/transports.js +96 -0
- package/dist-pkg/input/vocabulary-migration.d.ts +58 -0
- package/dist-pkg/input/vocabulary-migration.js +125 -0
- package/dist-pkg/platform/audio-ambient.d.ts +27 -0
- package/dist-pkg/platform/audio-ambient.js +89 -0
- package/dist-pkg/platform/audio-earcons.d.ts +24 -0
- package/dist-pkg/platform/audio-earcons.js +62 -0
- package/dist-pkg/platform/audio-jingles.d.ts +17 -0
- package/dist-pkg/platform/audio-jingles.js +54 -0
- package/dist-pkg/platform/audio-mixer.d.ts +14 -0
- package/dist-pkg/platform/audio-mixer.js +62 -0
- package/dist-pkg/platform/audio-nav.d.ts +51 -0
- package/dist-pkg/platform/audio-nav.js +99 -0
- package/dist-pkg/platform/audio-sonar.d.ts +71 -0
- package/dist-pkg/platform/audio-sonar.js +173 -0
- package/dist-pkg/platform/audio.d.ts +32 -0
- package/dist-pkg/platform/audio.js +191 -0
- package/dist-pkg/platform/interruptible-speech.d.ts +19 -0
- package/dist-pkg/platform/interruptible-speech.js +79 -0
- package/dist-pkg/platform/speech.d.ts +2 -0
- package/dist-pkg/platform/speech.js +35 -0
- package/dist-pkg/platform/storage.d.ts +87 -0
- package/dist-pkg/platform/storage.js +148 -0
- package/dist-pkg/platform/tts.d.ts +33 -0
- package/dist-pkg/platform/tts.js +142 -0
- package/dist-pkg/render/camera.d.ts +58 -0
- package/dist-pkg/render/camera.js +105 -0
- package/dist-pkg/render/canvas.d.ts +13 -0
- package/dist-pkg/render/canvas.js +26 -0
- package/dist-pkg/render/cenario-data.d.ts +127 -0
- package/dist-pkg/render/cenario-data.js +145 -0
- package/dist-pkg/render/city-tex.d.ts +63 -0
- package/dist-pkg/render/city-tex.js +228 -0
- package/dist-pkg/render/city-tiles.d.ts +11 -0
- package/dist-pkg/render/city-tiles.js +140 -0
- package/dist-pkg/render/crt.d.ts +19 -0
- package/dist-pkg/render/crt.js +92 -0
- package/dist-pkg/render/cvd-matrices.d.ts +35 -0
- package/dist-pkg/render/cvd-matrices.js +91 -0
- package/dist-pkg/render/draw.d.ts +149 -0
- package/dist-pkg/render/draw.js +221 -0
- package/dist-pkg/render/fx.d.ts +63 -0
- package/dist-pkg/render/fx.js +123 -0
- package/dist-pkg/render/hc-role-data.d.ts +14 -0
- package/dist-pkg/render/hc-role-data.js +24 -0
- package/dist-pkg/render/high-contrast.d.ts +109 -0
- package/dist-pkg/render/high-contrast.js +254 -0
- package/dist-pkg/render/lq-filter.d.ts +37 -0
- package/dist-pkg/render/lq-filter.js +94 -0
- package/dist-pkg/render/minimap.d.ts +11 -0
- package/dist-pkg/render/minimap.js +94 -0
- package/dist-pkg/render/parallax.d.ts +85 -0
- package/dist-pkg/render/parallax.js +158 -0
- package/dist-pkg/render/player-anim.d.ts +71 -0
- package/dist-pkg/render/player-anim.js +152 -0
- package/dist-pkg/render/port.d.ts +143 -0
- package/dist-pkg/render/port.js +29 -0
- package/dist-pkg/render/recycling-tex.d.ts +48 -0
- package/dist-pkg/render/recycling-tex.js +164 -0
- package/dist-pkg/render/scene-city.d.ts +77 -0
- package/dist-pkg/render/scene-city.js +181 -0
- package/dist-pkg/render/scene-parallax.d.ts +72 -0
- package/dist-pkg/render/scene-parallax.js +426 -0
- package/dist-pkg/render/scene-sky.d.ts +126 -0
- package/dist-pkg/render/scene-sky.js +295 -0
- package/dist-pkg/render/screen-pipeline.d.ts +134 -0
- package/dist-pkg/render/screen-pipeline.js +177 -0
- package/dist-pkg/render/set-cenario.d.ts +54 -0
- package/dist-pkg/render/set-cenario.js +103 -0
- package/dist-pkg/render/sprite-fx.d.ts +3 -0
- package/dist-pkg/render/sprite-fx.js +40 -0
- package/dist-pkg/render/textures.d.ts +75 -0
- package/dist-pkg/render/textures.js +240 -0
- package/dist-pkg/render/title-scene.d.ts +46 -0
- package/dist-pkg/render/title-scene.js +75 -0
- package/dist-pkg/render/viewports.d.ts +52 -0
- package/dist-pkg/render/viewports.js +185 -0
- package/dist-pkg/render/viz-axes.d.ts +98 -0
- package/dist-pkg/render/viz-axes.js +184 -0
- package/dist-pkg/render/viz-modes.d.ts +61 -0
- package/dist-pkg/render/viz-modes.js +74 -0
- package/dist-pkg/render/viz-setters.d.ts +130 -0
- package/dist-pkg/render/viz-setters.js +244 -0
- package/dist-pkg/render/weather.d.ts +96 -0
- package/dist-pkg/render/weather.js +171 -0
- package/dist-pkg/render/wheelchair-sprites.d.ts +24 -0
- package/dist-pkg/render/wheelchair-sprites.js +63 -0
- package/dist-pkg/render/world-tex.d.ts +18 -0
- package/dist-pkg/render/world-tex.js +87 -0
- package/dist-pkg/ui/activities-menu.d.ts +258 -0
- package/dist-pkg/ui/activities-menu.js +648 -0
- package/dist-pkg/ui/caa-sets.d.ts +39 -0
- package/dist-pkg/ui/caa-sets.js +65 -0
- package/dist-pkg/ui/changed-mark.d.ts +15 -0
- package/dist-pkg/ui/changed-mark.js +96 -0
- package/dist-pkg/ui/debug-panel.d.ts +67 -0
- package/dist-pkg/ui/debug-panel.js +173 -0
- package/dist-pkg/ui/dom.d.ts +24 -0
- package/dist-pkg/ui/dom.js +47 -0
- package/dist-pkg/ui/focus-trap.d.ts +71 -0
- package/dist-pkg/ui/focus-trap.js +99 -0
- package/dist-pkg/ui/fonts.d.ts +41 -0
- package/dist-pkg/ui/fonts.js +59 -0
- package/dist-pkg/ui/hud.d.ts +137 -0
- package/dist-pkg/ui/hud.js +229 -0
- package/dist-pkg/ui/item-announcement.d.ts +19 -0
- package/dist-pkg/ui/item-announcement.js +36 -0
- package/dist-pkg/ui/layout.d.ts +6 -0
- package/dist-pkg/ui/layout.js +54 -0
- package/dist-pkg/ui/loop-crash.d.ts +19 -0
- package/dist-pkg/ui/loop-crash.js +60 -0
- package/dist-pkg/ui/map-hub.d.ts +56 -0
- package/dist-pkg/ui/map-hub.js +138 -0
- package/dist-pkg/ui/menu-nav.d.ts +141 -0
- package/dist-pkg/ui/menu-nav.js +390 -0
- package/dist-pkg/ui/pause-icons.d.ts +327 -0
- package/dist-pkg/ui/pause-icons.js +620 -0
- package/dist-pkg/ui/reach-notice.d.ts +34 -0
- package/dist-pkg/ui/reach-notice.js +71 -0
- package/dist-pkg/ui/settings-audio.d.ts +139 -0
- package/dist-pkg/ui/settings-audio.js +544 -0
- package/dist-pkg/ui/settings-caa.d.ts +45 -0
- package/dist-pkg/ui/settings-caa.js +137 -0
- package/dist-pkg/ui/settings-controls.d.ts +100 -0
- package/dist-pkg/ui/settings-controls.js +152 -0
- package/dist-pkg/ui/settings-empathy.d.ts +62 -0
- package/dist-pkg/ui/settings-empathy.js +137 -0
- package/dist-pkg/ui/settings-motion.d.ts +95 -0
- package/dist-pkg/ui/settings-motion.js +282 -0
- package/dist-pkg/ui/settings-motor.d.ts +77 -0
- package/dist-pkg/ui/settings-motor.js +215 -0
- package/dist-pkg/ui/settings-panel.d.ts +76 -0
- package/dist-pkg/ui/settings-panel.js +187 -0
- package/dist-pkg/ui/settings-typo.d.ts +74 -0
- package/dist-pkg/ui/settings-typo.js +150 -0
- package/dist-pkg/ui/settings-visual.d.ts +111 -0
- package/dist-pkg/ui/settings-visual.js +252 -0
- package/dist-pkg/ui/shell.d.ts +239 -0
- package/dist-pkg/ui/shell.js +430 -0
- package/dist-pkg/ui/title.d.ts +36 -0
- package/dist-pkg/ui/title.js +60 -0
- package/dist-pkg/ui/vlibras.d.ts +11 -0
- package/dist-pkg/ui/vlibras.js +87 -0
- package/dist-pkg/ui/webcam.d.ts +7 -0
- package/dist-pkg/ui/webcam.js +88 -0
- package/docs/CREDITS.md +64 -0
- package/docs/LICENSES.md +132 -0
- package/package.json +115 -0
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
// Locale pt-BR — idioma base (import ESTÁTICO em core/i18n.ts → boot síncrono). Ver docs/plano-i18n.md.
|
|
3
|
+
// A UI em pt é extraída em lotes; en/es caem no fallback pt até serem completados (Etapa 4).
|
|
4
|
+
const pt = {
|
|
5
|
+
// ===================== ANÚNCIOS DE LEITOR DE TELA (`sr.*`) =====================
|
|
6
|
+
// A MOLDURA TRADUZ; O CONTEÚDO NÃO. Tudo o que entra por `{param}` atravessa sem tradução — nome de jogador,
|
|
7
|
+
// número de telas, e sobretudo CONTEÚDO DE CURRÍCULO (palavra, sílaba, letra, cela braille). O currículo de
|
|
8
|
+
// alfabetização é específico da língua: soletração, grafema↔fonema e a psicogênese de Ferreiro não se traduzem,
|
|
9
|
+
// reescrevem-se por idioma (pilar 3 do ADR-0010). Chave nova que embuta conteúdo de currículo é bug.
|
|
10
|
+
'sr.pad.mapSaved': 'Mapeamento salvo para: {id}.',
|
|
11
|
+
'sr.pad.assigned': 'Controle associado ao Jogador {n}. O teclado continua funcionando.',
|
|
12
|
+
'sr.title.waitP1': 'Aguarde o Jogador 1 escolher o jogo.',
|
|
13
|
+
'sr.player.entered': 'Jogador {n} entrou!',
|
|
14
|
+
// A RECICLAGEM (ADR-0049 §1: a boa ação vale um PONTO, e ponto não move barra nenhuma). As quatro cores
|
|
15
|
+
// são conteúdo curricular — Resolução CONAMA 275/2001 —, então a fala DIZ a cor, e não só "certo/errado".
|
|
16
|
+
'sr.lixo.pegou': 'Você pegou: {o}.',
|
|
17
|
+
'sr.lixo.soltou': 'Você soltou: {o}.',
|
|
18
|
+
'sr.lixo.acertou': 'Certo! {o} vai na lixeira {cor}. Um ponto.',
|
|
19
|
+
'sr.lixo.errou': 'Essa não é a lixeira do {o}. Tente outra cor.',
|
|
20
|
+
'sr.lixo.solta': 'Aqui não se joga lixo. Você deixou cair na placa.',
|
|
21
|
+
'sr.lixo.barreira': 'A placa não deixa o lixo passar.',
|
|
22
|
+
'lixo.obj.papel': 'caixa de papelão',
|
|
23
|
+
'lixo.obj.plastico': 'garrafa PET',
|
|
24
|
+
'lixo.obj.metal': 'latinha de alumínio',
|
|
25
|
+
'lixo.obj.vidro': 'pote de vidro',
|
|
26
|
+
'lixo.cor.azul': 'azul',
|
|
27
|
+
'lixo.cor.vermelha': 'vermelha',
|
|
28
|
+
'lixo.cor.amarela': 'amarela',
|
|
29
|
+
'lixo.cor.verde': 'verde',
|
|
30
|
+
'sr.print.on': 'Modo Print: veja a tela sem menus. Aperte qualquer botão para voltar.',
|
|
31
|
+
'sr.player.pressToJoin': 'Jogador {n}: aperte um botão para entrar.',
|
|
32
|
+
'sr.libras.loading': 'Intérprete de Libras ainda carregando — tente de novo em instantes.',
|
|
33
|
+
'sr.eyes.loadFailed': 'WebGazer não carregou.',
|
|
34
|
+
'sr.eyes.calibrate': 'Jogar com os olhos: olhe pela tela e clique em alguns pontos para calibrar. Olhar esquerda/direita anda; olhar para cima pula.',
|
|
35
|
+
'sr.eyes.needsInternet': 'Não foi possível carregar o WebGazer (precisa de internet no 1º uso).',
|
|
36
|
+
'sr.typo.font': 'Tipografia: {fam}.',
|
|
37
|
+
'sr.visual.contrast': 'Alto contraste: {v}.',
|
|
38
|
+
'sr.visual.lq': 'Realce de contraste: {v}.',
|
|
39
|
+
'sr.gate.open': 'Portão aberto!',
|
|
40
|
+
'sr.key.taken': '{who}pegou a chave. Toque no portão para abri-lo.',
|
|
41
|
+
'sr.key.returned': 'A chave voltou para o lugar de origem.',
|
|
42
|
+
'sr.power.swapHint': '{msg} (Trocar poder cicla entre os coletados.)',
|
|
43
|
+
'sr.round.multi': '{n} jogadores, cada um na sua tela. Corram pelas moedas.',
|
|
44
|
+
'sr.round.somasub': 'Modo Soma-Sub. Toque nas figuras e resolva as contas.',
|
|
45
|
+
'sr.round.silabas': 'Modo Sílabas. Toque nas letras e monte as palavras.',
|
|
46
|
+
'sr.round.ludico': 'Nova rodada. Colete 10 moedas.',
|
|
47
|
+
'sr.screens.mobileOnly': 'No celular o jogo roda em uma tela só.',
|
|
48
|
+
'sr.screens.alreadyN': '{n} telas já ativas.',
|
|
49
|
+
'sr.screens.already1': '1 tela.',
|
|
50
|
+
'sr.screens.wontFitN': 'Não cabem {n} telas nesta janela — cada tela precisa de ao menos 640×360. Aumente a janela ou use tela cheia.',
|
|
51
|
+
'sr.screens.wontFitOneMore': 'Não cabe mais uma tela nesta janela — cada tela precisa de ao menos 640×360. Aumente a janela ou use tela cheia.',
|
|
52
|
+
'sr.screens.activeN': '{n} telas ativas.',
|
|
53
|
+
'sr.screens.newRoundN': '{n} telas ativas — nova rodada.',
|
|
54
|
+
'sr.screens.newRound1': '1 tela — nova rodada.',
|
|
55
|
+
'sr.screens.maxPlayers': 'Já são 4 jogadores.',
|
|
56
|
+
'sr.player.restarted': 'Jogador {n} recomeçou nesta tela.',
|
|
57
|
+
'sr.player.joined': 'Jogador {n} entrou no jogo em andamento.',
|
|
58
|
+
'sr.player.quit': 'Jogador {n} abandonou o jogo.',
|
|
59
|
+
// Objetivo no HUD (texto em DOM, mesma árvore de decisão do anúncio de rodada)
|
|
60
|
+
'hud.objective.multi': '{n} jogadores — corrida pelas {alvo} moedas',
|
|
61
|
+
'hud.objective.somasub': 'Resolva 10 contas',
|
|
62
|
+
'hud.objective.silabas': 'Monte 10 palavras',
|
|
63
|
+
'hud.objective.ludico': 'Colete 10 moedas',
|
|
64
|
+
// A MOLDURA do contador do HUD. O nome do objetivo atravessa por `{nome}` e NÃO se traduz aqui: quem
|
|
65
|
+
// o declara é o jogo (campo 5 do contrato). Sem artigo de propósito — assim a frase serve a qualquer
|
|
66
|
+
// gênero gramatical, e o `gender` do Speakable fica para as frases que precisam concordar.
|
|
67
|
+
'hud.contador': '{have} de {need} {nome}',
|
|
68
|
+
// O NOME do que este jogo junta. Currículo não se traduz (pilar 3), mas "moedas" não é currículo — é um
|
|
69
|
+
// substantivo comum da interface, e a criança que joga em inglês tem de ouvir "coins". Por isso o nome
|
|
70
|
+
// atravessa por `{nome}` JÁ RESOLVIDO pelo jogo, e a chave mora aqui.
|
|
71
|
+
'hud.nome.moedas': 'moedas',
|
|
72
|
+
'hud.nome.moeda': 'moeda',
|
|
73
|
+
// O rótulo do botão dinâmico do menu de pausa. `{nome}` é o nome do nível, que o JOGO resolve — currículo
|
|
74
|
+
// não se traduz (pilar 3); a MOLDURA, sim, e é ela que mora aqui.
|
|
75
|
+
'pause.nivel': '📚 Nível {n} · {nome}',
|
|
76
|
+
// LEGENDAS DOS EARCONS (item 19). Eram texto cru dentro de `platform/audio` — nove frases numa camada de
|
|
77
|
+
// engine, invisíveis ao gate de i18n do `main.js`. É o que a criança SURDA lê no lugar do som: deixá-las em
|
|
78
|
+
// português num build em inglês tirava dela exatamente a informação que a legenda existe para dar.
|
|
79
|
+
'sfx.jump': '🔊 Pulo',
|
|
80
|
+
'sfx.coin': '🔊 Coletou',
|
|
81
|
+
'sfx.hurt': '🔊 Ai! Dano',
|
|
82
|
+
'sfx.win': '🔊 Vitória!',
|
|
83
|
+
'sfx.correct': '🔊 Acertou!',
|
|
84
|
+
'sfx.wrong': '🔊 Tente de novo',
|
|
85
|
+
'sfx.power': '🔊 Power-up!',
|
|
86
|
+
'sfx.key': '🔊 Chave',
|
|
87
|
+
'sfx.gate': '🔊 Portão abriu',
|
|
88
|
+
// Chrome / navegação
|
|
89
|
+
'skip.toGame': 'Pular para o jogo',
|
|
90
|
+
'menu.ludico': 'Lúdico',
|
|
91
|
+
'menu.alfabetizacao': 'Alfabetização',
|
|
92
|
+
'menu.matematica': 'Matemática',
|
|
93
|
+
// Tela de título
|
|
94
|
+
'title.byline': 'by Prof. José Rocha',
|
|
95
|
+
'title.wait': 'Aguarde o Jogador 1 escolher o jogo',
|
|
96
|
+
// Vitória
|
|
97
|
+
'win.title': '🎉 Você coletou as 10 moedas!',
|
|
98
|
+
'win.again': 'Jogar de novo',
|
|
99
|
+
// Menu de pausa (por tela — buildScreenPause). O botão de letra (ABC/abc/Braille) é dinâmico, fica fora.
|
|
100
|
+
'pause.title': 'Pausado',
|
|
101
|
+
'pause.resume': '▶ Continuar',
|
|
102
|
+
'pause.acessibilidade': '♿ Acessibilidade',
|
|
103
|
+
'pause.options': '⚙ Opções',
|
|
104
|
+
'pause.pmback': '↩ Voltar',
|
|
105
|
+
'pause.cardAria': 'Menu de pausa do jogador {n}',
|
|
106
|
+
/* --- CATÁLOGO DE ATIVIDADES: só o que NÃO é alfabetização. As cinco de alfabetização seguem cruas em
|
|
107
|
+
pt-BR no `educational/activities-registry`, porque a palavra e a sílaba SÃO a matéria (pilar 3). --- */
|
|
108
|
+
'act.ludico.nome': 'Coletar 10 moedas',
|
|
109
|
+
'act.mat1.nome': 'Quantidade',
|
|
110
|
+
'act.mat1.d': 'Conte as bolinhas e escolha o número certo (1 a 9).',
|
|
111
|
+
'act.mat2.nome': 'Soma fácil',
|
|
112
|
+
'act.mat2.d': 'Somas com parcelas de 0 a 5.',
|
|
113
|
+
'act.mat3.nome': 'Soma e Subtração 1',
|
|
114
|
+
'act.mat3.d': 'Contas que dá para fazer nos dedos (até 10).',
|
|
115
|
+
'act.mat4.nome': 'Soma e Subtração 2',
|
|
116
|
+
'act.mat4.d': 'Guarde um número na cabeça e opere o outro nos dedos (até 20).',
|
|
117
|
+
'act.mat5.nome': 'Tabuada',
|
|
118
|
+
'act.mat5.d': 'Escolha os números e treine a multiplicação.',
|
|
119
|
+
'act.mat6.nome': 'Divisão',
|
|
120
|
+
'act.mat6.d': 'Escolha os números e treine a divisão.',
|
|
121
|
+
'act.fr2.nome': 'Soma e subtração com meios',
|
|
122
|
+
'act.fr2.d': 'Some e subtraia meios.',
|
|
123
|
+
'act.fr3.nome': 'Soma e subtração com terços',
|
|
124
|
+
'act.fr3.d': 'Some e subtraia terços.',
|
|
125
|
+
'act.fr42.nome': 'Soma e subtração com quartos e meios',
|
|
126
|
+
'act.fr42.d': 'Some e subtraia quartos e meios.',
|
|
127
|
+
'act.fr5.nome': 'Soma e subtração com quintos',
|
|
128
|
+
'act.fr5.d': 'Some e subtraia quintos.',
|
|
129
|
+
'act.fr632.nome': 'Soma e subtração com sextos, terços e meios',
|
|
130
|
+
'act.fr632.d': 'Some e subtraia sextos, terços e meios.',
|
|
131
|
+
'act.fr2a6.nome': 'Soma e subtração com frações de meio a sextos',
|
|
132
|
+
'act.fr2a6.d': 'Some e subtraia frações de meios a sextos.',
|
|
133
|
+
'pause.tipo': '🔤 Tipografia',
|
|
134
|
+
'pause.addplayer': '👥 Adicionar jogador',
|
|
135
|
+
'pause.audio': '🦻 Acessibilidade auditiva',
|
|
136
|
+
'pause.motora': '♿ Acessibilidade motora',
|
|
137
|
+
'pause.anim': '🎞 Sensibilidade visual',
|
|
138
|
+
'pause.visual': '🎨 Acessibilidade visual',
|
|
139
|
+
'pause.empatia': '🫂 Modo empatia',
|
|
140
|
+
'pause.ajuda': '❓ Ajuda',
|
|
141
|
+
'pause.print': '📷 Print (ver a tela)',
|
|
142
|
+
'pause.quit': '🚪 Sair do jogo',
|
|
143
|
+
// Acessibilidade (leitores de tela)
|
|
144
|
+
'a11y.gameRegion': 'Área de jogo. Mova com A e D ou setas; pule com L ou Espaço; suba e desça escadas (e nade na água) com W e S ou setas; corra com P ou Shift. Colete 10 moedas.',
|
|
145
|
+
'game.instructions': 'Mova o personagem pela caverna e colete 10 moedas. Sem limite de tempo. Controles: A e D ou setas movem; L ou Espaço pulam; W e S (ou setas cima/baixo) sobem/descem escadas e nadam; P ou Shift correm.',
|
|
146
|
+
// Controles de toque — rótulos das 9 posições e das 9 ações mapeáveis (painel #touchcfg) e os anúncios.
|
|
147
|
+
// Rótulo é MOLDURA inteira: em inglês "(cima)" vira "(up)" e a seta fica onde está, então a seta viaja
|
|
148
|
+
// dentro da tradução em vez de ser concatenada fora dela.
|
|
149
|
+
'touch.slot.up': 'Direcional ↑ (cima)',
|
|
150
|
+
'touch.slot.down': 'Direcional ↓ (baixo)',
|
|
151
|
+
'touch.slot.left': 'Direcional ← (esquerda)',
|
|
152
|
+
'touch.slot.right': 'Direcional → (direita)',
|
|
153
|
+
'touch.slot.start': 'START (enter)',
|
|
154
|
+
'touch.slot.b0': 'Botão 0 (baixo)',
|
|
155
|
+
'touch.slot.b1': 'Botão 1 (direita)',
|
|
156
|
+
'touch.slot.b2': 'Botão 2 (esquerda)',
|
|
157
|
+
'touch.slot.b3': 'Botão 3 (cima)',
|
|
158
|
+
'touch.slot.fallback': 'Botão',
|
|
159
|
+
'touch.act.left': 'Andar à esquerda',
|
|
160
|
+
'touch.act.right': 'Andar à direita',
|
|
161
|
+
'touch.act.up': 'Subir / escada',
|
|
162
|
+
'touch.act.down': 'Descer / escada',
|
|
163
|
+
'touch.act.jump': 'Pular',
|
|
164
|
+
'touch.act.run': 'Correr / interagir',
|
|
165
|
+
'touch.act.especial': 'Especial',
|
|
166
|
+
'touch.act.swap': 'Trocar poder',
|
|
167
|
+
'touch.act.pause': 'Pausar (START)',
|
|
168
|
+
'touch.dir.cross': 'cruz (D-pad)',
|
|
169
|
+
'touch.dir.stick': 'analógico',
|
|
170
|
+
'sr.touch.slotSet': '{slot}: {acao}.',
|
|
171
|
+
'sr.touch.dirSet': 'Direcional: {tipo}.',
|
|
172
|
+
'sr.touch.presetChild': 'Controles no tamanho de mão de criança (6 a 12 anos).',
|
|
173
|
+
'sr.touch.presetAdult': 'Controles no tamanho de mão de adulto.',
|
|
174
|
+
// Ações remapeáveis (painel de controles + tela de Ajuda) e os anúncios do fluxo de captura de tecla.
|
|
175
|
+
'act.left': 'Esquerda',
|
|
176
|
+
'act.right': 'Direita',
|
|
177
|
+
'act.up': 'Subir / escada',
|
|
178
|
+
'act.down': 'Descer / escada',
|
|
179
|
+
'act.run': 'Correr / interagir',
|
|
180
|
+
'act.jump': 'Pular',
|
|
181
|
+
'act.swap': 'Trocar poder',
|
|
182
|
+
'act.especial': 'Especial',
|
|
183
|
+
'key.space': 'Espaço',
|
|
184
|
+
'ctrl.change': 'Alterar',
|
|
185
|
+
'ctrl.changeKeyAria': 'Alterar tecla de {acao} do Jogador {n}',
|
|
186
|
+
'sr.ctrl.pressNewKey': 'Pressione a nova tecla para {acao} do Jogador {n}, ou Esc para cancelar.',
|
|
187
|
+
'sr.ctrl.keyTaken': 'Essa tecla já é do Jogador {n}. Escolha outra, ou Esc para cancelar.',
|
|
188
|
+
'sr.ctrl.reset': 'Controles restaurados ao padrão.',
|
|
189
|
+
// Painel de áudio (#audio) — saídas por jogador, som/narração, bengala, motores de voz.
|
|
190
|
+
'audio.playerN': 'Jogador {n}',
|
|
191
|
+
'audio.sinkShared': 'Padrão (compartilhado)',
|
|
192
|
+
'audio.sinkFallback': 'Saída {n}',
|
|
193
|
+
'audio.sinksHint': 'Clique em Detectar (pede permissão de áudio para listar os aparelhos).',
|
|
194
|
+
'audio.sinksUnsupported': 'Este navegador não suporta troca de saída (ex.: Safari/iOS).',
|
|
195
|
+
'audio.voiceSample': 'Olá! Esta é a voz da narração do Inclusionista. Um, dois, três, testando.',
|
|
196
|
+
// Os NOMES dos motores são nomes próprios e ficam; o que traduz é a explicação entre parênteses.
|
|
197
|
+
'tts.engine.webspeech': 'Voz do navegador (Web Speech)',
|
|
198
|
+
'tts.engine.piper': 'Piper (neural, offline) — baixa no 1º uso',
|
|
199
|
+
'tts.engine.kokoro': 'Kokoro-82M (neural) — baixa no 1º uso',
|
|
200
|
+
'tts.engine.kitten': 'Kitten (neural) — baixa no 1º uso',
|
|
201
|
+
'tts.engine.espeak': 'eSpeak NG (embutido)',
|
|
202
|
+
'sr.audio.sinkChanged': 'Jogador {n} — saída de áudio trocada.',
|
|
203
|
+
'sr.audio.sinkDefault': 'Jogador {n} — saída de áudio padrão.',
|
|
204
|
+
'sr.audio.soundOn': 'Som ligado.',
|
|
205
|
+
'sr.audio.soundOff': 'Som desligado.',
|
|
206
|
+
'sr.audio.ttsOn': 'Narração ligada.',
|
|
207
|
+
'sr.audio.ttsOff': 'Narração desligada.',
|
|
208
|
+
'sr.audio.ttsOnSpoken': 'Narração por voz ligada.',
|
|
209
|
+
'sr.audio.canePerBlock': 'Bengala: uma batida por bloco pisado.',
|
|
210
|
+
'sr.audio.caneHalfBlock': 'Bengala: uma batida a cada meio bloco pisado.',
|
|
211
|
+
'sr.audio.engineSet': 'Motor de voz: {motor}.',
|
|
212
|
+
'sr.audio.voicePicked': 'Voz selecionada.',
|
|
213
|
+
'sr.audio.testingVoice': 'Testando a voz selecionada.',
|
|
214
|
+
// Barra de icones de acessibilidade (menu de pausa e splash) + os niveis que ela cicla.
|
|
215
|
+
'icon.blind': 'Modo cego (navegação sonora)',
|
|
216
|
+
'icon.tts': 'Narração por voz (TTS)',
|
|
217
|
+
'icon.libras': 'Modo pessoa surda (Libras)',
|
|
218
|
+
'icon.tea': 'Modo TEA (calmo / silencioso)',
|
|
219
|
+
'icon.altmove': 'Teclas de alternância',
|
|
220
|
+
'icon.contrast': 'Alto contraste',
|
|
221
|
+
'icon.cvd': 'Correção de daltonismo (protan/deutan/tritan)',
|
|
222
|
+
'icon.face': 'Webcam — rosto',
|
|
223
|
+
'icon.eyes': 'Webcam — olhos',
|
|
224
|
+
'icon.voice': 'Comando de voz',
|
|
225
|
+
'icon.state': '{nome}: {v}',
|
|
226
|
+
'icon.soon': '{nome} (em construção)',
|
|
227
|
+
'state.on': 'ligado',
|
|
228
|
+
'state.off': 'desligado',
|
|
229
|
+
'calm.off': 'desligado',
|
|
230
|
+
'calm.quiet': 'calmo',
|
|
231
|
+
'calm.silent': 'silencioso',
|
|
232
|
+
'cvd.off': 'desligado',
|
|
233
|
+
'cvd.tricro': 'visão tricromática',
|
|
234
|
+
'cvd.protan': 'protanopia',
|
|
235
|
+
'cvd.deuter': 'deuteranopia',
|
|
236
|
+
'cvd.tritan': 'tritanopia',
|
|
237
|
+
'contrast.off': 'desligado',
|
|
238
|
+
'contrast.3': '3:1',
|
|
239
|
+
'contrast.45': '4,5:1',
|
|
240
|
+
'contrast.7': '7:1',
|
|
241
|
+
'lq.off': 'desligado',
|
|
242
|
+
'lq.linear': 'linear',
|
|
243
|
+
'lq.mixed': 'misto',
|
|
244
|
+
'lq.quadratic': 'quadrático',
|
|
245
|
+
'sr.icon.blindOn': 'Modo cego ligado.',
|
|
246
|
+
'sr.icon.blindOff': 'Modo cego desligado.',
|
|
247
|
+
'sr.icon.librasOn': 'Modo pessoa surda: Libras ligado.',
|
|
248
|
+
'sr.icon.librasOff': 'Modo pessoa surda: Libras desligado.',
|
|
249
|
+
'sr.icon.tea': 'Modo TEA: {v}.',
|
|
250
|
+
'sr.icon.cvd': 'Correção de daltonismo: {v}.',
|
|
251
|
+
'sr.icon.underConstruction': '{nome}: em construção — chega com os subsistemas de webcam/fala e o filtro de daltonismo.',
|
|
252
|
+
'sr.icon.needsPrivateOutput': 'Só dá para mexer em som/TTS/modo cego com uma saída de áudio SÓ sua (não compartilhada). Escolha um dispositivo próprio em A12e auditiva.',
|
|
253
|
+
'icon.tea.short': 'Modo TEA',
|
|
254
|
+
'icon.cvd.short': 'Correção de daltonismo',
|
|
255
|
+
'pause.iconBarAria': 'Atalhos de acessibilidade',
|
|
256
|
+
// Menu de atividades (splash) — escolha de atividade, cenário, nº de jogadores e notações de fração.
|
|
257
|
+
'fnot.v': 'Fracionária vertical',
|
|
258
|
+
'fnot.d': 'Fracionária diagonal',
|
|
259
|
+
'fnot.dec': 'Decimal',
|
|
260
|
+
'fnot.pct': 'Percentual',
|
|
261
|
+
'fnot.mix': 'Mista',
|
|
262
|
+
'menu.playerCountAria': 'Número de jogadores: {n}. Clique à esquerda para menos, à direita para mais.',
|
|
263
|
+
'sr.menu.pickScenario': 'Escolha o cenário.',
|
|
264
|
+
'sr.menu.gameStarted': '{atividade}. Jogo iniciado.',
|
|
265
|
+
'sr.menu.pickNumbers': '{atividade}: escolha os números.',
|
|
266
|
+
'sr.menu.player1': '{n} jogador.',
|
|
267
|
+
'sr.menu.playersN': '{n} jogadores.',
|
|
268
|
+
'sr.menu.index': '{n} de {m}',
|
|
269
|
+
'sr.menu.indexOn': 'Posição na lista ligada.',
|
|
270
|
+
'sr.menu.indexOff': 'Posição na lista desligada.',
|
|
271
|
+
'sr.a11y.barEnter': 'Barra de acessibilidade. Use as direções para escolher e confirmar para ligar. Para voltar ao jogo, aperte voltar ou START.',
|
|
272
|
+
'sr.a11y.barExit': 'De volta ao jogo.',
|
|
273
|
+
'pad.glyph.cross': 'xis',
|
|
274
|
+
'pad.glyph.circle': 'bola',
|
|
275
|
+
'pad.glyph.square': 'quadrado',
|
|
276
|
+
'pad.glyph.triangle': 'triângulo',
|
|
277
|
+
'menu.legendSpoken': 'Botão {sim} para confirmar, botão {nao} para voltar.',
|
|
278
|
+
'sr.menu.fractionsIntro': 'Soma e subtração de frações: escolha a notação e o tipo.',
|
|
279
|
+
'sr.menu.keepOneNotation': 'Deixe ao menos uma notação ligada.',
|
|
280
|
+
'sr.menu.notationOn': '{notacao} ligada.',
|
|
281
|
+
'sr.menu.notationOff': '{notacao} desligada.',
|
|
282
|
+
'sr.menu.pickOneNumber': 'Escolha ao menos um número para treinar.',
|
|
283
|
+
'sr.menu.numberOn': 'Número {n} ligado.',
|
|
284
|
+
'sr.menu.numberOff': 'Número {n} desligado.',
|
|
285
|
+
'fnot.desc.v': 'Liga a exibição de frações verticais.',
|
|
286
|
+
'fnot.desc.d': 'Liga a exibição de frações na horizontal.',
|
|
287
|
+
'fnot.desc.dec': 'Liga números que sempre aparecem com uma casa decimal.',
|
|
288
|
+
'fnot.desc.pct': 'Liga números percentuais.',
|
|
289
|
+
'fnot.desc.mix': 'Liga números inteiros e frações reduzidas.',
|
|
290
|
+
'menu.notationGroupAria': 'Notação',
|
|
291
|
+
// Física (lava, ventosa-aranha), navegação sonora e o modo de demonstração.
|
|
292
|
+
'sr.physics.lava': 'Cuidado! Tocou na lava. As moedas voltaram para posições aleatórias.',
|
|
293
|
+
'sr.physics.spiderOn': 'Modo aranha! Engatinha em paredes e teto; contorna quinas. {botao} solta.',
|
|
294
|
+
'sr.physics.spiderOff': 'Soltou da superfície.',
|
|
295
|
+
'sr.nav.noTargetNear': 'Nada por perto.',
|
|
296
|
+
// O laço parou porque um quadro lançou (ADR-0054). Criança cega não vê tela congelada: sem esta frase,
|
|
297
|
+
// «travou» e «está pensando» são o mesmo silêncio.
|
|
298
|
+
'sr.laco.parou': 'O jogo parou por causa de um erro. Recarregue a página para jogar de novo.',
|
|
299
|
+
// ===== O AVISO DE ALCANCE (issue #112, ADR-0079 §3) =====
|
|
300
|
+
// O controle de tela tem nove lugares e o vocabulário passou a catorze. Num tablet de escola pública o
|
|
301
|
+
// toque não é o caminho alternativo, é o único — e a criança que descobre no meio que não alcança uma ação
|
|
302
|
+
// conclui que o jogo está partido. Estas frases existem para ela saber ANTES, e o que fazer.
|
|
303
|
+
'reach.titulo': 'Este jogo usa {pedidas} ações.',
|
|
304
|
+
'reach.curto': 'O {transporte} tem {lugares} lugares — não chegam para todas.',
|
|
305
|
+
'reach.ligue': 'Ligue {saida} e você joga com todas.',
|
|
306
|
+
// Quando NADA resolveria: mandar ligar um controle seria mandar procurar o que não conserta.
|
|
307
|
+
'reach.semSaida': 'Nenhum controle deste aparelho alcança todas. Dá para jogar assim mesmo, mas algumas ações vão ficar sem lugar.',
|
|
308
|
+
'reach.continuar': 'Jogar assim mesmo',
|
|
309
|
+
'reach.ou': ' ou ',
|
|
310
|
+
'reach.nome.gamepad': 'controle',
|
|
311
|
+
'reach.nome.teclado': 'teclado',
|
|
312
|
+
'reach.nome.toque': 'controle de tela',
|
|
313
|
+
'sr.attract.demo': 'Demonstração.',
|
|
314
|
+
'sr.attract.recorded': 'Demo de 30 segundos gravada para {cenario}.',
|
|
315
|
+
// Molduras dos submenus de título e os nomes dos cenários.
|
|
316
|
+
'menu.back': 'Voltar',
|
|
317
|
+
'menu.play': 'Jogar',
|
|
318
|
+
'menu.alf': 'Alfabetização',
|
|
319
|
+
'menu.mat': 'Matemática',
|
|
320
|
+
'menu.frac': 'Fração',
|
|
321
|
+
'menu.fracTitle': 'Soma e subtração de frações',
|
|
322
|
+
'menu.tab': 'Tabuada',
|
|
323
|
+
'menu.tabHint': 'Escolha os números para treinar',
|
|
324
|
+
'menu.cen': 'Cenário',
|
|
325
|
+
'cen.cidade': 'Cidade',
|
|
326
|
+
'cen.campo': 'Dia no Campo',
|
|
327
|
+
'cen.cemiterio': 'Amanhecer no Campo',
|
|
328
|
+
'cen.espaco': 'Noite no Campo',
|
|
329
|
+
'cen.floresta': 'Floresta',
|
|
330
|
+
// Narração por voz (TTS).
|
|
331
|
+
'audio.noSystemVoices': '(sem vozes do sistema)',
|
|
332
|
+
'sr.tts.engineNoLanguage': 'Este motor ainda não fala este idioma — por enquanto, use Piper (neural) ou a voz do navegador.',
|
|
333
|
+
'sr.tts.noNeuralForLanguage': 'Ainda não há voz neural para este idioma — seguindo com a voz do navegador, que fala a língua certa.',
|
|
334
|
+
'sr.tts.downloading': 'Baixando a voz neural (precisa de internet só no 1º uso)…',
|
|
335
|
+
'sr.tts.progress': 'Voz neural: {pct}%.',
|
|
336
|
+
'sr.tts.ready': 'Voz neural pronta, em {s} segundos.',
|
|
337
|
+
'sr.tts.loadFailed': 'Não deu para carregar a voz neural (precisa de internet no 1º uso) — seguindo com a voz do navegador.',
|
|
338
|
+
// Quiz — só a MOLDURA. O currículo de alfabetização (palavra, letra, sílaba, soletração, célula Braille) NÃO
|
|
339
|
+
// entra aqui: é específico da língua e pede currículo próprio por idioma, não tradução. Ver o CLAUDE.md.
|
|
340
|
+
'sr.quiz.tryAgain': 'Tente de novo.',
|
|
341
|
+
'sr.quiz.erase': 'apagar',
|
|
342
|
+
'sr.quiz.ok': 'ok',
|
|
343
|
+
'sr.blind.on': 'Modo cego ligado: bengala e pistas de áudio ativas. O 1º item de poder vira a bengala de corrida.',
|
|
344
|
+
'sr.blind.off': 'Modo cego desligado.',
|
|
345
|
+
'sr.motor.oneButtonOn': 'Um botão por vez ligado: só uma tecla/botão de cada vez.',
|
|
346
|
+
'sr.motor.oneButtonOff': 'Um botão por vez desligado.',
|
|
347
|
+
'sr.motor.wheelchairOn': 'Modo cadeirante ligado: sem pulo; rampas e elevadores no lugar de degraus e escada; moedas no chão; só voo e super-corrida.',
|
|
348
|
+
'sr.motor.wheelchairOff': 'Modo cadeirante desligado.',
|
|
349
|
+
'sr.visual.ownerColorsOn': 'Itens na cor do dono ligados.',
|
|
350
|
+
'sr.visual.ownerColorsOff': 'Itens na cor do dono desligados: todos na cor original.',
|
|
351
|
+
'sr.visual.cbSafeOn': 'Paleta segura para daltonismo ligada (Okabe-Ito).',
|
|
352
|
+
'sr.visual.cbSafeOff': 'Paleta segura para daltonismo desligada.',
|
|
353
|
+
'sr.visual.outlineFg': 'Contorno do primeiro plano: {v}.',
|
|
354
|
+
'sr.visual.outlineBg': 'Contorno do segundo plano: {v}.',
|
|
355
|
+
'outline.none': 'nenhum',
|
|
356
|
+
'outline.thin': 'fino',
|
|
357
|
+
'outline.thick': 'grosso',
|
|
358
|
+
'sr.captions.on': 'Legendas ligadas.',
|
|
359
|
+
'sr.captions.off': 'Legendas desligadas.',
|
|
360
|
+
// Quiz — MATEMÁTICA: enunciado inteiro, operadores inclusive (2+3 independe de língua).
|
|
361
|
+
'math.howManyDots': 'Quantas bolinhas?',
|
|
362
|
+
'math.op.plus': 'mais',
|
|
363
|
+
'math.op.minus': 'menos',
|
|
364
|
+
'math.op.times': 'vezes',
|
|
365
|
+
'math.op.dividedBy': 'dividido por',
|
|
366
|
+
'sr.math.howManyDots': 'Quantas bolinhas você vê?',
|
|
367
|
+
'sr.math.howMuchIs': 'Quanto é {a} {op} {b}?',
|
|
368
|
+
// Quiz — ALFABETIZAÇÃO: a MOLDURA traduz; a palavra, a letra e a cela Braille atravessam por parâmetro,
|
|
369
|
+
// em pt-BR, porque são a matéria de uma disciplina de idioma e não se traduzem ao trocar o idioma do jogo.
|
|
370
|
+
'sr.quiz.who': 'Jogador {n}: ',
|
|
371
|
+
'sr.quiz.wins': '{n} de 3 acertos para a moeda',
|
|
372
|
+
'sr.quiz.buildWord': 'Letra {letra}. Monte a palavra: {palavra}.',
|
|
373
|
+
'sr.quiz.whichSpelling': '{palavra}. Qual é a escrita certa? O jogo soletra cada opção.',
|
|
374
|
+
'sr.quiz.writeWord': 'Escreva a palavra: {palavra}. {n} letras.',
|
|
375
|
+
'sr.quiz.brailleDictation': '{palavra}. {celas} Pule para coletar.',
|
|
376
|
+
'sr.quiz.wellDone': 'Muito bem! {palavra}. {n} de 3.',
|
|
377
|
+
'sr.quiz.correctSoFar': 'Acertou! {n} de 3 para ganhar a moeda.',
|
|
378
|
+
'menu.restoreDefaults': 'Restaurar padrões deste menu',
|
|
379
|
+
'sr.audio.reset': 'Acessibilidade auditiva restaurada aos padrões. Os outros menus não mudaram.',
|
|
380
|
+
'sr.empathy.reset': 'Modo empatia restaurado aos padrões: simulações desligadas. Correções de daltonismo e os outros menus não mudaram.',
|
|
381
|
+
'sr.motor.reset': 'Modo Fácil e movimento por alternância restaurados aos padrões. O controle pelos olhos e o mapeamento de teclas continuam como estavam.',
|
|
382
|
+
'sr.typo.reset': 'Tipografia restaurada ao padrão: {fam}, desenhada para quem tem baixa visão.',
|
|
383
|
+
'a11y.changed': 'alterado',
|
|
384
|
+
'sr.visual.reset': 'Acessibilidade visual restaurada aos padrões: contraste, realce, cores e contornos. As legendas e os outros menus não mudaram.',
|
|
385
|
+
'sr.motion.reset': 'Sensibilidade visual restaurada aos padrões: animações e estética CRT. As animações voltam ao que o seu sistema pede.',
|
|
386
|
+
'caa.emPreparo': 'em preparação',
|
|
387
|
+
'caa.aguardandoNegociacao': 'aguardando negociação',
|
|
388
|
+
'caa.secao.agora': 'Disponível agora',
|
|
389
|
+
'caa.secao.agoraTag': 'funciona sem rede',
|
|
390
|
+
'caa.secao.preparo': 'Em preparação',
|
|
391
|
+
'caa.secao.preparoTag': 'licença resolvida; falta o trabalho',
|
|
392
|
+
'caa.secao.negociacao': 'Aguardando negociação',
|
|
393
|
+
'caa.secao.negociacaoTag': 'a permissão não é nossa',
|
|
394
|
+
'sr.caa.escolha': 'Comunicação: {v}.',
|
|
395
|
+
'sr.caa.reset': 'Comunicação restaurada ao padrão: letras maiúsculas, como a alfabetização costuma começar.',
|
|
396
|
+
'pause.caa': '🔠 Comunicação',
|
|
397
|
+
'sr.caa.caixaAltaOn': 'Letras maiúsculas ligadas: o jogo inteiro em caixa alta.',
|
|
398
|
+
'sr.caa.caixaAltaOff': 'Letras maiúsculas desligadas: maiúsculas e minúsculas.',
|
|
399
|
+
'sr.quiz.bemVindo': 'Quiz. Use as setas para escolher e Enter para responder.',
|
|
400
|
+
'sr.nav.sonarFound': 'Sonar: {alvo} {lado}, {dist}.',
|
|
401
|
+
// `sr.nav.coin` ficou para o JOGO nomear o alvo (item 19): o sonar recebe o nome por `nameAt`, campo 3 do
|
|
402
|
+
// contrato. `sr.nav.target` e o que ele diz quando o jogo declara um alvo SEM nome — melhor uma palavra
|
|
403
|
+
// generica do que uma chave crua na boca do leitor de tela.
|
|
404
|
+
'sr.nav.coin': 'moeda',
|
|
405
|
+
'sr.nav.target': 'alvo',
|
|
406
|
+
// O RUMO, nos dois referenciais que uma topologia pode declarar (ADR-0089). Substituem `left`/`right`/
|
|
407
|
+
// `ahead`, que eram três palavras onde o contrato tem oito — e misturavam referencial de TELA (esquerda,
|
|
408
|
+
// direita) com referencial de CORPO (à frente), sem que quem ouvisse tivesse como saber qual era qual.
|
|
409
|
+
'sr.nav.dir.n': 'ao norte', 'sr.nav.dir.ne': 'a nordeste', 'sr.nav.dir.e': 'a leste',
|
|
410
|
+
'sr.nav.dir.se': 'a sudeste', 'sr.nav.dir.s': 'ao sul', 'sr.nav.dir.sw': 'a sudoeste',
|
|
411
|
+
'sr.nav.dir.w': 'a oeste', 'sr.nav.dir.nw': 'a noroeste',
|
|
412
|
+
// O eixo vertical do ESPAÇO. Palavras próprias porque `up`/`down` já são AÇÕES de controle.
|
|
413
|
+
'sr.nav.dir.zenith': 'acima', 'sr.nav.dir.nadir': 'abaixo',
|
|
414
|
+
// O relógio, para a vista lateral. Duas chaves e não doze: a hora é parâmetro. A forma do singular existe
|
|
415
|
+
// porque «às 1 horas» não é português.
|
|
416
|
+
'sr.nav.clock': 'às {h} horas', 'sr.nav.clockOne': 'à 1 hora',
|
|
417
|
+
'sr.nav.here': 'aqui mesmo',
|
|
418
|
+
'sr.nav.veryClose': 'bem perto',
|
|
419
|
+
'sr.nav.close': 'perto',
|
|
420
|
+
'sr.nav.far': 'longe',
|
|
421
|
+
'sr.player.prefix': 'Jogador {n}: ',
|
|
422
|
+
'sr.empathy.hearingOn': 'Simulação de perda auditiva ligada: sons fracos ficam abafados e os agudos são cortados; falas ficam difíceis de entender.',
|
|
423
|
+
'sr.empathy.hearingOff': 'Simulação de perda auditiva desligada.',
|
|
424
|
+
'sr.pad.disconnected': 'Controle do Jogador {n} desconectado — o teclado continua funcionando. Aperte START para reassociar.',
|
|
425
|
+
'sr.quiz.levelSet': 'Nível {n}: {v}.',
|
|
426
|
+
'sr.visual.roleColorSet': 'Cor de {v} alterada.',
|
|
427
|
+
'sr.visual.roleColorsReset': 'Cores do color-blocking restauradas ao padrão.',
|
|
428
|
+
'sr.visual.defaultColors': 'Cores padrão restauradas.',
|
|
429
|
+
'sr.pad.connected': 'Controle conectado: layout {v}.',
|
|
430
|
+
'sr.pad.design': 'Desenho dos botões: {v}.',
|
|
431
|
+
'sr.eyes.loading': 'Jogar com os olhos: carregando a webcam (permita o acesso).',
|
|
432
|
+
'sr.eyes.off': 'Jogar com os olhos desligado.',
|
|
433
|
+
'sr.boot.loaded': 'Jogo carregado. Colete {n} moedas. Suba escadas com W/S, nade segurando pulo na água.',
|
|
434
|
+
// ===================== PODERES =====================
|
|
435
|
+
// `sr.power.*` é FALADO quando o poder muda (game/physics, game/session); `hud.power.*` é o rótulo curto do
|
|
436
|
+
// HUD. Eram duas tabelas de `const` no main.js, e por isso estavam CONGELADAS no idioma do boot: um `const`
|
|
437
|
+
// de módulo resolve uma vez e nunca mais. Agora a tabela guarda a CHAVE e quem exibe resolve com `t()`.
|
|
438
|
+
'sr.power.superjump': 'Super-pulo! O pulo fica sempre na altura máxima.',
|
|
439
|
+
'sr.power.ultrajump': 'Ultra-pulo! Pulos de distância gigante.',
|
|
440
|
+
'sr.power.turbo': 'Super-corrida! Correndo você fica bem mais rápido.',
|
|
441
|
+
'sr.power.fly': 'Voo! No ar, aperte Pular para começar a voar; Pular de novo encerra.',
|
|
442
|
+
'sr.power.wallcling': 'Escalada (aranha)! No ar, aperte {botao} perto de uma parede/teto para grudar; engatinha e contorna quinas; {botao} de novo solta.',
|
|
443
|
+
'sr.power.none': 'Sem poder ativo.',
|
|
444
|
+
'sr.power.generic': 'Poder ativado!',
|
|
445
|
+
'hud.power.off': '—',
|
|
446
|
+
'hud.power.superjump': '🐇 Super-pulo',
|
|
447
|
+
'hud.power.ultrajump': '🦘 Ultra-pulo',
|
|
448
|
+
'hud.power.turbo': '👟 Super-corrida',
|
|
449
|
+
'hud.power.fly': '🎈 Voo',
|
|
450
|
+
'hud.power.wallcling': '🕷️ Escalada',
|
|
451
|
+
'hud.power.runcane': '👟 Bengala de corrida',
|
|
452
|
+
// ===================== MOVIMENTO REDUZIDO (WCAG 2.3.3) + CRT =====================
|
|
453
|
+
// Os rótulos ficavam em DUAS tabelas `const` de texto — uma em main.js e outra em ui/settings-motion — com
|
|
454
|
+
// três entradas repetidas palavra por palavra e nada ligando as duas. Agora a tabela guarda a CHAVE.
|
|
455
|
+
'rm.parallax': 'Parallax do fundo',
|
|
456
|
+
'rm.decor': 'Decoração (nuvens, grama)',
|
|
457
|
+
'rm.items': 'Animação de itens (moedas)',
|
|
458
|
+
'rm.walk': 'Personagem em movimento (andar, escalar, nadar, pular)',
|
|
459
|
+
'rm.breath': 'Respiração (parado)',
|
|
460
|
+
'rm.flavor': 'Gracinhas (animações de descanso)',
|
|
461
|
+
'rm.particles': 'Partículas e cintilação',
|
|
462
|
+
'rm.crt.scan': 'Scanlines',
|
|
463
|
+
'rm.crt.vig': 'Vinheta',
|
|
464
|
+
'rm.crt.round': 'Cantos arredondados',
|
|
465
|
+
'rm.sec.all': 'todos os jogadores',
|
|
466
|
+
'sr.rm.frozen': '{alvo} congelado.',
|
|
467
|
+
'sr.rm.animated': '{alvo} animado.',
|
|
468
|
+
'sr.rm.allStopped': 'Todas as animações paradas.',
|
|
469
|
+
'sr.rm.allResumed': 'Todas as animações retomadas.',
|
|
470
|
+
'sr.crt.on': '{efeito} ligada.',
|
|
471
|
+
'sr.crt.off': '{efeito} desligada.',
|
|
472
|
+
'sr.crt.round': '{efeito}: {nivel}.',
|
|
473
|
+
// ===================== LIGADO / DESLIGADO =====================
|
|
474
|
+
// Duas palavras que estavam copiadas TREZE vezes, em nove arquivos — e dois desses arquivos declaravam um
|
|
475
|
+
// helper "compartilhado" que só eles usavam. Agora é um só, em ui/dom, ao lado do `toggleBtn`.
|
|
476
|
+
'ui.toggle.on': '❚❚ Ligado',
|
|
477
|
+
'ui.toggle.off': '▶ Desligado',
|
|
478
|
+
'ui.toggle.ariaOn': '{alvo}: ligado',
|
|
479
|
+
'ui.toggle.ariaOff': '{alvo}: desligado',
|
|
480
|
+
// ===================== AS DUAS ESCOLHAS MOTORAS POR JOGADOR =====================
|
|
481
|
+
// Modo Fácil e movimento por alternância. Cada estado é UMA frase inteira, e não um prefixo compartilhado
|
|
482
|
+
// com um sufixo variável: é a mesma decisão que `sr.audio.*` já registra — uma língua que reordene a frase
|
|
483
|
+
// só consegue se a frase inteira morar no dicionário. O 'Jogador N: ' vem de `sr.player.prefix`.
|
|
484
|
+
'sr.motor.easyOn': 'Modo Fácil ligado: gravidade menor, pulo mais alto, coleta tolerante, moedas no chão, sem perigos e sem quedas acidentais (segure ↓ para descer).',
|
|
485
|
+
'sr.motor.easyOff': 'Modo Fácil desligado.',
|
|
486
|
+
'sr.motor.toggleMoveOn': 'Movimento por alternância ligado: toque a direção para andar sem segurar; toque de novo para parar; segure para ir mais rápido. O pulo não interrompe a caminhada.',
|
|
487
|
+
'sr.motor.toggleMoveOff': 'Movimento por alternância desligado.',
|
|
488
|
+
'sr.motor.toggleRunOn': 'Alternância do correr ligada.',
|
|
489
|
+
'sr.motor.toggleRunOff': 'Alternância do correr desligada.',
|
|
490
|
+
'sr.physics.runLatchOn': 'Correndo.',
|
|
491
|
+
'sr.physics.runLatchOff': 'Andando.',
|
|
492
|
+
// ===================== AJUDA (menu de pausa) + rótulo de nível =====================
|
|
493
|
+
// `pause.level` é MOLDURA: `{v}` é o nome do nível da psicogênese de Ferreiro e atravessa SEM TRADUÇÃO —
|
|
494
|
+
// currículo de alfabetização não se traduz, reescreve-se por idioma (pilar 3 do ADR-0010). Ver `QL_NAME`.
|
|
495
|
+
'pause.level': '📚 Nível {n} · {v}',
|
|
496
|
+
'help.controls': 'Seus controles',
|
|
497
|
+
'help.controlsPlayer': 'Seus controles · Jogador {n}',
|
|
498
|
+
'help.keyboard': 'teclado',
|
|
499
|
+
'help.buildNotes': 'Notas desta build',
|
|
500
|
+
'help.powerups': 'Power-ups: 👟 super-corrida · 🕷️ escalada · 🎈 voo · 🐇 super-pulo · 🦘 ultra-pulo · 🔑 chave abre o 🚪 portão.',
|
|
501
|
+
'help.multiplayer': '2–4 jogadores: telas lado a lado, cada uma com seu menu e sua configuração.',
|
|
502
|
+
'help.tech': 'v{v} — PixiJS (WebGL, fallback Canvas) · texto/UI no DOM (acessibilidade) · offline via PWA.',
|
|
503
|
+
// A legenda 'Sim'/'Não' do rodapé de cada pausa (os dois botões do controle). Achado pelo crivo LARGO do
|
|
504
|
+
// item 14: o estreito não o pegou porque 'Sim' não tem acento e 'Não' tem três letras.
|
|
505
|
+
'menu.yes': 'Sim',
|
|
506
|
+
'menu.no': 'Não',
|
|
507
|
+
// ===================== OS 16 MODOS DE VISÃO =====================
|
|
508
|
+
// Eram uma tabela `const` de texto em `render/viz-modes` — congelada no idioma do boot, e é o menu que uma
|
|
509
|
+
// criança de baixa visão ou daltônica lê para configurar o PRÓPRIO jogo. A tabela guarda a CHAVE; quem
|
|
510
|
+
// exibe (render/viz-setters, consumer-quiz) resolve com `t()`, e o módulo continua folha.
|
|
511
|
+
'viz.normal': 'Modo padrão',
|
|
512
|
+
'viz.desc.normal': 'Arte original do jogo.',
|
|
513
|
+
'viz.hc-direto': 'Alto contraste: Renderização Direta (3:1)',
|
|
514
|
+
'viz.desc.hc-direto': 'Fundo recua + contornos + cor por papel; plataforma×fundo ~3:1 (AA gráficos), tons agradáveis.',
|
|
515
|
+
'viz.hc-direto-45': 'Alto contraste: Renderização Direta (4,5:1)',
|
|
516
|
+
'viz.desc.hc-direto-45': 'Mais contraste (AA texto): plataformas mais claras e fundo mais escuro.',
|
|
517
|
+
'viz.hc-direto-7': 'Alto contraste: Renderização Direta (7:1)',
|
|
518
|
+
'viz.desc.hc-direto-7': 'Contraste máximo (AAA texto): quase preto e branco. Menos agradável, para quem precisa do máximo.',
|
|
519
|
+
'viz.sim-deuter': 'Simular Deuteranopia',
|
|
520
|
+
'viz.desc.sim-deuter': 'Como vê quem não enxerga o verde (mais comum).',
|
|
521
|
+
'viz.sim-protan': 'Simular Protanopia',
|
|
522
|
+
'viz.desc.sim-protan': 'Como vê quem não enxerga o vermelho.',
|
|
523
|
+
'viz.sim-tritan': 'Simular Tritanopia',
|
|
524
|
+
'viz.desc.sim-tritan': 'Como vê quem não enxerga o azul.',
|
|
525
|
+
'viz.fix-protan': 'Correção protanopia',
|
|
526
|
+
'viz.desc.fix-protan': 'Daltonização: realça a distinção vermelho/verde para quem tem protanopia.',
|
|
527
|
+
'viz.fix-deuter': 'Correção deuteranopia',
|
|
528
|
+
'viz.desc.fix-deuter': 'Daltonização: realça a distinção vermelho/verde para quem tem deuteranopia.',
|
|
529
|
+
'viz.fix-tritan': 'Correção tritanopia',
|
|
530
|
+
'viz.desc.fix-tritan': 'Daltonização: realça a distinção azul/amarelo para quem tem tritanopia.',
|
|
531
|
+
'viz.lv-blur': 'Baixa visão: desfoque',
|
|
532
|
+
'viz.desc.lv-blur': 'Miopia severa / astigmatismo. (bolinha verde; toque 2× p/ sair)',
|
|
533
|
+
'viz.lv-haze': 'Baixa visão: névoa',
|
|
534
|
+
'viz.desc.lv-haze': 'Catarata — película esbranquiçada, baixo contraste.',
|
|
535
|
+
'viz.lv-tunnel': 'Baixa visão: visão de túnel',
|
|
536
|
+
'viz.desc.lv-tunnel': 'Glaucoma — só o centro é visível.',
|
|
537
|
+
'viz.lv-macular': 'Baixa visão: mancha central',
|
|
538
|
+
'viz.desc.lv-macular': 'Degeneração macular — borrão no centro.',
|
|
539
|
+
'viz.lv-diabetic': 'Baixa visão: manchas dispersas',
|
|
540
|
+
'viz.desc.lv-diabetic': 'Retinopatia diabética — manchas espalhadas.',
|
|
541
|
+
'viz.blind': 'Simular cegueira total',
|
|
542
|
+
'viz.desc.blind': 'Tela preta — jogue como uma pessoa cega (resposta tátil/sonora). (bolinha branca; toque 2× p/ sair)',
|
|
543
|
+
// ===================== ARIA-LABEL DO index.html =====================
|
|
544
|
+
// 41 rótulos de leitor de tela (36 distintos) estavam em português CRU no markup, e só UM dos 53 usava o
|
|
545
|
+
// `data-i18n-aria` que já existia. Numa build em inglês, uma criança cega ouvia a interface inteira em
|
|
546
|
+
// português — o pilar 2 falhando na superfície onde ele mais importa, e em silêncio.
|
|
547
|
+
'a11y.choosePlayer': 'Escolha o jogador',
|
|
548
|
+
'a11y.animations': 'Animações',
|
|
549
|
+
'a11y.literacy': 'Alfabetização',
|
|
550
|
+
'a11y.shortcuts': 'Atalhos de acessibilidade',
|
|
551
|
+
'a11y.hearing': 'Audição',
|
|
552
|
+
'a11y.actionButtons': 'Botões de ação',
|
|
553
|
+
'a11y.screenButtons': 'Botões de tela (toque)',
|
|
554
|
+
'a11y.touchButtons': 'Botões de toque na tela',
|
|
555
|
+
'a11y.audioCategories': 'Categorias de áudio',
|
|
556
|
+
'a11y.communication': 'Comunicação: letras e símbolos',
|
|
557
|
+
'a11y.outlineFg': 'Contorno de primeiro plano',
|
|
558
|
+
'a11y.outlineBg': 'Contorno de segundo plano',
|
|
559
|
+
'a11y.outlines': 'Contornos do alto contraste',
|
|
560
|
+
'a11y.touchControls': 'Controles de toque',
|
|
561
|
+
'a11y.padDesign': 'Desenho dos botões',
|
|
562
|
+
'a11y.chooseScenery': 'Escolha o cenário',
|
|
563
|
+
'a11y.chooseGame': 'Escolha o jogo',
|
|
564
|
+
'a11y.chooseNumbers': 'Escolha os números',
|
|
565
|
+
'a11y.hideDebug': 'Esconder as ferramentas de debug',
|
|
566
|
+
'a11y.btnSpecial': 'Especial (botão 1)',
|
|
567
|
+
'a11y.fraction': 'Fração',
|
|
568
|
+
'a11y.touchRoles': 'Função de cada botão de toque',
|
|
569
|
+
'a11y.btnRun': 'Interagir / correr (botão 2)',
|
|
570
|
+
'a11y.eyeGaze': 'Jogar com os olhos',
|
|
571
|
+
'a11y.mapControls': 'Mapear controles (por jogador)',
|
|
572
|
+
'a11y.math': 'Matemática',
|
|
573
|
+
'a11y.pauseMenu': 'Menu de pausa',
|
|
574
|
+
'a11y.simActive': 'Modo de simulação ativo. Toque duas vezes para voltar às cores normais.',
|
|
575
|
+
'a11y.stopAll': 'Parar todas as animações',
|
|
576
|
+
'a11y.btnJump': 'Pular (botão 0)',
|
|
577
|
+
'a11y.audioOut': 'Saída de áudio por jogador',
|
|
578
|
+
'a11y.visualSim': 'Simulação visual',
|
|
579
|
+
'a11y.switchScreens': 'Trocar o número de telas (jogadores)',
|
|
580
|
+
'a11y.btnSwap': 'Trocar poder (botão 3)',
|
|
581
|
+
// O rótulo VISÍVEL do #np-btn. Estava cru no index.html e não podia levar `data-i18n`: o texto embrulha um
|
|
582
|
+
// `<span id="np-n">` com o número, e o `applyDom` escreve `textContent`, o que destruiria o span. A saída é
|
|
583
|
+
// o JavaScript passar a ser dono do rótulo inteiro — o número já é dinâmico, então o texto sempre foi dele.
|
|
584
|
+
'menu.playerCount': '◀ Nº de jogadores: {n} ▶',
|
|
585
|
+
// ===================== A LEGENDA DE CONTROLES (fileira sob o título) =====================
|
|
586
|
+
// TERCEIRA família de rótulos para as mesmas ações, e de propósito. `act.*` serve à LISTA de mapeamento
|
|
587
|
+
// ("Correr / interagir") e `touch.act.*` ao painel de toque ("Pausar (START)"); os dois cabem lá porque
|
|
588
|
+
// aquelas telas têm largura. A legenda é uma FILEIRA APERTADA embaixo de um glifo, e nela só cabe o registro
|
|
589
|
+
// curto. Duas das seis coincidem com `act.*` palavra por palavra; reusar as outras quatro trocaria "correr"
|
|
590
|
+
// por "Correr / interagir" e quebraria a linha.
|
|
591
|
+
'legend.move': 'movimentar-se',
|
|
592
|
+
'legend.pause': 'pausa',
|
|
593
|
+
'legend.jump': 'pular',
|
|
594
|
+
'legend.especial': 'especial',
|
|
595
|
+
'legend.run': 'correr',
|
|
596
|
+
'legend.swap': 'trocar',
|
|
597
|
+
// ===================== CATÁLOGO DE FONTES =====================
|
|
598
|
+
// Os NOMES das fontes (Atkinson Hyperlegible, Lexend, …) NÃO entram aqui: são nomes próprios e ficam no
|
|
599
|
+
// catálogo, como os nomes dos motores de voz. O que traduz é o nome do GRUPO e a descrição — que é o texto
|
|
600
|
+
// que explica à criança (ou a quem a acompanha) POR QUE aquela fonte existe na lista.
|
|
601
|
+
'font.group.sans': 'Sem serifa',
|
|
602
|
+
'font.group.serif': 'Serifada',
|
|
603
|
+
'font.group.hand': 'Manuscrita',
|
|
604
|
+
'font.desc.atkinson': 'feita pelo Braille Institute para pessoas com baixa visão (padrão do jogo)',
|
|
605
|
+
'font.desc.lexend': 'feita para reduzir stress visual e atender pessoas disléxicas (ativa o espaçamento extra)',
|
|
606
|
+
'font.desc.quattro': 'criada para diminuir a fadiga visual de quem passa muito tempo na tela',
|
|
607
|
+
'font.desc.andika': 'baseada na Sassoon; fruto de pesquisa sobre como crianças leem e escrevem',
|
|
608
|
+
'font.desc.greatvibes': 'caligráfica inglesa',
|
|
609
|
+
'font.desc.pinyon': 'caligráfica inglesa',
|
|
610
|
+
'font.desc.ufcook': 'blackletter alemã',
|
|
611
|
+
'font.desc.ufmag': 'blackletter alemã',
|
|
612
|
+
'font.desc.comicneue': 'bola e bastão (alfabetização)',
|
|
613
|
+
'font.desc.learningcurve': 'cursiva inglesa',
|
|
614
|
+
'font.desc.kindergarten': 'cursiva brasileira',
|
|
615
|
+
'font.off.pending': 'licença a confirmar — ainda não embarcada',
|
|
616
|
+
'font.off.negotiating': 'licença em negociação',
|
|
617
|
+
};
|
|
618
|
+
export default pt;
|