Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 16 additions & 15 deletions accessibility/keyboardui.js
Original file line number Diff line number Diff line change
Expand Up @@ -1009,9 +1009,7 @@ const ShortcutsPanel = {
this.panel.addEventListener('keydown', (e) => {
// Modal mode reparents the panel to <body> and makes it the scroll
// container itself; #info-panel-body only scrolls in docked mode.
const scroller = this._modalActive
? this.panel
: document.getElementById('info-panel-body');
const scroller = this._modalActive ? this.panel : document.getElementById('info-panel-body');
if (e.key === 'ArrowUp') {
e.preventDefault();
scroller?.scrollBy({ top: -100, behavior: 'instant' });
Expand Down Expand Up @@ -1055,7 +1053,6 @@ function getPlayerControls() {
return [
{
section: 'player_section_onscreen',
hideHeader: true,
entries: [
{
action: 'player_action_move',
Expand All @@ -1066,21 +1063,25 @@ function getPlayerControls() {
{
action: 'player_action_camera_up',
marks: [svgRingedChar(1)],
keys: 'R',
label: translate('player_control_button').replace('%1', 1),
},
{
action: 'player_action_camera_down',
marks: [svgRingedChar(3)],
label: translate('player_control_button').replace('%1', 3),
},
{
action: 'player_action_interact',
marks: [svgRingedChar(2)],
keys: 'E',
label: translate('player_control_button').replace('%1', 2),
},
{
action: 'player_action_camera_down',
marks: [svgRingedChar(3)],
keys: 'F',
label: translate('player_control_button').replace('%1', 3),
},
{
action: 'player_action_spare',
marks: [svgRingedChar(4)],
keys: 'Space',
label: translate('player_control_button').replace('%1', 4),
},
],
Expand Down Expand Up @@ -1157,7 +1158,7 @@ const PlayerPanel = {
},

createPanel() {
const panel = InfoPanel.register('player', translate('player_section_onscreen'), this);
const panel = InfoPanel.register('player', translate('player_panel_title'), this);
const btn = document.getElementById('info-tab-btn-player');
btn.innerHTML = `<div class="icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" fill-rule="evenodd" d="M60,144H516A36,36 0 0 1 552,180V332A36,36 0 0 1 516,368H60A36,36 0 0 1 24,332V180A36,36 0 0 1 60,144ZM134,180h52v50h50v52h-50v50h-52v-50h-50v-52h50ZM364,224a40,40 0 1 0 80,0a40,40 0 1 0 -80,0ZM428,296a40,40 0 1 0 80,0a40,40 0 1 0 -80,0Z"/></svg></div>`;
panel.innerHTML = `
Expand Down Expand Up @@ -1195,17 +1196,19 @@ const PlayerPanel = {
},

renderContent() {
const title = translate('player_section_onscreen');
const title = translate('player_panel_title');
const btn = document.getElementById('info-tab-btn-player');
btn.setAttribute('aria-label', title);
btn.setAttribute('title', title);
this.panel.querySelector('#player-panel-title').textContent = title;

const renderControl = (entry) => {
if (entry.marks) {
const keys = entry.keys ? `<span class="pc-sep"> / </span>${formatKeys(entry.keys)}` : '';
const srText = entry.keys ? `${entry.label} ${formatKeys(entry.keys)}` : entry.label;
return `<span class="pc-keys${entry.layout ? ` pc-keys--${entry.layout}` : ''}" aria-hidden="true">${entry.marks
.map((m) => `<span class="pc-chip">${m}</span>`)
.join('')}</span><span class="sr-only">${entry.label}</span>`;
.join('')}${keys}</span><span class="sr-only">${srText}</span>`;
}
return formatKeys(entry.keys);
};
Expand Down Expand Up @@ -1262,9 +1265,7 @@ const PlayerPanel = {
this.panel.addEventListener('keydown', (e) => {
// Modal mode reparents the panel to <body> and makes it the scroll
// container itself; #info-panel-body only scrolls in docked mode.
const scroller = this._modalActive
? this.panel
: document.getElementById('info-panel-body');
const scroller = this._modalActive ? this.panel : document.getElementById('info-panel-body');
if (e.key === 'ArrowUp') {
e.preventDefault();
scroller?.scrollBy({ top: -100, behavior: 'instant' });
Expand Down
38 changes: 37 additions & 1 deletion locale/de.js
Original file line number Diff line number Diff line change
Expand Up @@ -1154,13 +1154,14 @@ export default {
error_design_mode_offline:
'Der Design-Modus benötigt bei der ersten Nutzung eine Internetverbindung. Stelle eine Verbindung her und versuche es erneut.', // ai
xr_mode_message: 'XR-Modus!',
fly_camera_instructions: 'ℹ️ Flugkamera, nutze Pfeiltasten und Bild auf/ab',
fly_camera_instructions: 'ℹ️ Schau dich um mit Pfeiltasten und Bild auf/ab oder Fn + ↑ ↓',
fly_camera_instructions_touch:
'ℹ️ Flugkamera, nutze die Bildschirmsteuerung und ziehe zum Umsehen',
select_mesh_delete_prompt: 'ℹ️ Klicke auf ein Objekt, um es zu löschen.',
select_mesh_duplicate_prompt: 'ℹ️ Wähle ein Objekt zum Duplizieren aus.',
place_duplicate_prompt: 'ℹ️ Klicke, um eine Kopie zu platzieren.', // AI-generated; needs validation
select_mesh_eye_prompt: 'ℹ️ Klicke auf ein Objekt, um es zu umkreisen.',
orbit_mesh_info: 'ℹ️ Ziehe, um die Kamera um das Objekt zu bewegen',
place_object_prompt: 'ℹ️ Klicke auf eine Fläche, um das Objekt zu platzieren.',
position_readout: 'Position: {position}',
eyedropper_not_supported_alert: 'Die Farbauswahl ist in Chrome/Edge auf dem Desktop verfügbar.', // ai
Expand Down Expand Up @@ -1220,6 +1221,41 @@ export default {
toolbar_redo_ui: 'Wiederholen',
toolbar_zoom_out_ui: 'Verkleinern',
toolbar_zoom_in_ui: 'Vergrößern',
// Player controls panel — title, sections and control names
player_panel_title: 'Spielersteuerung',
player_section_onscreen: 'Bildschirmsteuerung',
player_section_gamepad: 'Gamecontroller',
player_section_sr: 'Screenreader mit Gamecontroller',
player_action_move: 'Bewegen',
player_action_look: 'Umsehen',
player_action_turn: 'Links / rechts drehen',
player_action_camera_up: 'Kamera hoch / Taste 1',
player_action_interact: 'Interagieren / Taste 2',
player_action_camera_down: 'Kamera runter / Taste 3',
player_action_spare: 'Allgemeine Aktion / Taste 4',
player_control_arrows: 'Pfeiltasten',
player_control_button: 'Taste %1',
player_control_dpad_note: 'Bei Controllern ohne linken Stick bewegt stattdessen das Steuerkreuz.',
player_control_dpad_up: 'Szenenübersicht',
player_control_dpad_down: 'Objekt voraus',
player_control_dpad_left: 'Nächstes Objekt',

Comment thread
coderabbitai[bot] marked this conversation as resolved.
// Player panel controls
player_decrease_font_size: 'Textgröße verringern',
player_increase_font_size: 'Textgröße erhöhen',

// Player control key labels
gamepad_left_stick: 'Linker Stick',
gamepad_right_stick: 'Rechter Stick',
gamepad_l1_r1: 'L1 / R1',
gamepad_triangle_y: 'Dreieck / Y',
gamepad_square_x: 'Quadrat / X',
gamepad_circle_b: 'Kreis / B',
gamepad_cross_a: 'Kreuz / A',
dpad_up: 'Oben',
dpad_down: 'Unten',
dpad_left: 'Links',

// Keyboard shortcuts panel — title and close button
shortcut_panel_title: 'Tastatursteuerung',
shortcut_panel_close: 'Tastaturkürzel schließen',
Expand Down
11 changes: 6 additions & 5 deletions locale/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -1237,13 +1237,14 @@ export default {
banner_reload: 'Reload',
banner_dismiss: 'Dismiss',
xr_mode_message: 'XR Mode!',
fly_camera_instructions: 'ℹ️ Fly camera, use arrow keys and page up/down',
fly_camera_instructions: 'ℹ️ Look around with arrow keys and Pg Up/Pg Down or Fn + ↑ ↓',
fly_camera_instructions_touch:
'ℹ️ Fly camera, use the on-screen controls and drag to look around',
select_mesh_delete_prompt: 'ℹ️ Click an object to delete it.',
select_mesh_duplicate_prompt: 'ℹ️ Select an object to duplicate.',
place_duplicate_prompt: 'ℹ️ Click to place a copy.',
select_mesh_eye_prompt: 'ℹ️ Click an object to orbit around it.',
orbit_mesh_info: 'ℹ️ Drag to move the camera around the object',
place_object_prompt: 'ℹ️ Click on a surface to place the object.',
position_readout: 'Position: {position}',
eyedropper_not_supported_alert: 'Color picking is available in Chrome/Edge on desktop.',
Expand Down Expand Up @@ -1352,10 +1353,10 @@ export default {
player_action_move: 'Move',
player_action_look: 'Look around',
player_action_turn: 'Turn left / right',
player_action_camera_up: 'Camera up',
player_action_interact: 'Interact',
player_action_camera_down: 'Camera down',
player_action_spare: 'General action',
player_action_camera_up: 'Camera up / Button 1',
player_action_interact: 'Interact / Button 2',
player_action_camera_down: 'Camera down / Button 3',
player_action_spare: 'General action / Button 4',
player_control_arrows: 'Arrows',
player_control_button: 'Button %1',
player_control_dpad_note: 'On controllers without a left stick, the D-pad moves instead.',
Expand Down
11 changes: 6 additions & 5 deletions locale/es.js
Original file line number Diff line number Diff line change
Expand Up @@ -1228,13 +1228,14 @@ export default {
banner_reload: 'Recargar', // human
banner_dismiss: 'Cerrar', // human
xr_mode_message: '¡Modo XR!', // human
fly_camera_instructions: 'ℹ️ Cámara en vuelo, usa las flechas y Page Up/Down', // human
fly_camera_instructions: 'ℹ️ Mira alrededor con las flechas y Page Up/Down o Fn + ↑ ↓', // human
fly_camera_instructions_touch:
'ℹ️ Cámara en vuelo, usa los controles en pantalla y arrastra para mirar alrededor',
select_mesh_delete_prompt: 'ℹ️ Haz clic en un objeto para eliminarlo.', // Google translate
select_mesh_duplicate_prompt: 'ℹ️ Selecciona un objeto para duplicar.', // Google (had to update it)
place_duplicate_prompt: 'ℹ️ Haz clic para colocar una copia.', // AI-generated; needs validation
select_mesh_eye_prompt: 'ℹ️ Haz clic en un objeto para orbitar alrededor de él.',
orbit_mesh_info: 'ℹ️ Arrastra para mover la cámara alrededor del objeto',
place_object_prompt: 'ℹ️ Haz clic en una superficie para colocar el objeto.', // ai
position_readout: 'Posición: {position}', // human
eyedropper_not_supported_alert:
Expand Down Expand Up @@ -1301,10 +1302,10 @@ export default {
player_action_move: 'Mover',
player_action_look: 'Mirar alrededor',
player_action_turn: 'Girar izquierda / derecha',
player_action_camera_up: 'Cámara arriba',
player_action_interact: 'Interactuar',
player_action_camera_down: 'Cámara abajo',
player_action_spare: 'Acción general',
player_action_camera_up: 'Cámara arriba / Botón 1',
player_action_interact: 'Interactuar / Botón 2',
player_action_camera_down: 'Cámara abajo / Botón 3',
player_action_spare: 'Acción general / Botón 4',
player_control_arrows: 'Flechas',
player_control_button: 'Botón %1',
player_control_dpad_note: 'En controles sin palanca izquierda, el D-pad se mueve en su lugar.',
Expand Down
39 changes: 38 additions & 1 deletion locale/fr.js
Original file line number Diff line number Diff line change
Expand Up @@ -1165,13 +1165,14 @@ export default {
error_design_mode_offline:
'Le mode conception nécessite une connexion Internet lors de la première utilisation. Connectez-vous à Internet et réessayez.', // ai
xr_mode_message: 'Mode XR !',
fly_camera_instructions: 'ℹ️ Caméra en vol, utilisez les flèches et Page haut/bas',
fly_camera_instructions: 'ℹ️ Regardez autour avec les flèches et Page haut/bas ou Fn + ↑ ↓',
fly_camera_instructions_touch:
"ℹ️ Caméra en vol, utilisez les commandes à l'écran et faites glisser pour regarder autour",
select_mesh_delete_prompt: 'ℹ️ Cliquez sur un objet pour le supprimer.',
select_mesh_duplicate_prompt: 'ℹ️ Sélectionnez un objet à dupliquer.',
place_duplicate_prompt: 'ℹ️ Cliquez pour placer une copie.', // AI-generated; needs validation
select_mesh_eye_prompt: 'ℹ️ Cliquez sur un objet pour orbiter autour de lui.',
orbit_mesh_info: 'ℹ️ Glissez pour déplacer la caméra autour de l\'objet',
place_object_prompt: "ℹ️ Cliquez sur une surface pour placer l'objet.",
position_readout: 'Position: {position}',
eyedropper_not_supported_alert:
Expand Down Expand Up @@ -1227,6 +1228,42 @@ export default {
toolbar_redo_ui: 'Rétablir',
toolbar_zoom_out_ui: 'Dézoomer',
toolbar_zoom_in_ui: 'Zoomer',
// Player controls panel — title, sections and control names
player_panel_title: 'Commandes du joueur',
player_section_onscreen: "Commandes à l'écran",
player_section_gamepad: 'Manette de jeu',
player_section_sr: "Lecteur d'écran avec manette de jeu",
player_action_move: 'Se déplacer',
player_action_look: 'Regarder autour',
player_action_turn: 'Tourner à gauche / droite',
player_action_camera_up: 'Caméra vers le haut / Bouton 1',
player_action_interact: 'Interagir / Bouton 2',
player_action_camera_down: 'Caméra vers le bas / Bouton 3',
player_action_spare: 'Action générale / Bouton 4',
player_control_arrows: 'Flèches',
player_control_button: 'Bouton %1',
player_control_dpad_note:
'Sur les manettes sans joystick gauche, la croix directionnelle permet de se déplacer à la place.',
player_control_dpad_up: 'Résumé de la scène',
player_control_dpad_down: 'Objet devant',
player_control_dpad_left: 'Objet le plus proche',

// Player panel controls
player_decrease_font_size: 'Réduire la taille du texte',
player_increase_font_size: 'Augmenter la taille du texte',

// Player control key labels
gamepad_left_stick: 'Joystick gauche',
gamepad_right_stick: 'Joystick droit',
gamepad_l1_r1: 'L1 / R1',
gamepad_triangle_y: 'Triangle / Y',
gamepad_square_x: 'Carré / X',
gamepad_circle_b: 'Cercle / B',
gamepad_cross_a: 'Croix / A',
dpad_up: 'Haut',
dpad_down: 'Bas',
dpad_left: 'Gauche',

// Keyboard shortcuts panel — title and close button
shortcut_panel_title: 'Commandes clavier',
shortcut_panel_close: 'Fermer les raccourcis clavier',
Expand Down
39 changes: 38 additions & 1 deletion locale/it.js
Original file line number Diff line number Diff line change
Expand Up @@ -1175,13 +1175,14 @@ export default {
error_design_mode_offline:
'La modalità progettazione richiede una connessione a internet la prima volta che la usi. Connettiti e riprova.', // ai
xr_mode_message: 'Modalità XR!',
fly_camera_instructions: 'ℹ️ Telecamera volante, usa le frecce e Pag su/giù',
fly_camera_instructions: 'ℹ️ Guarda intorno con le frecce e Pag su/giù o Fn + ↑ ↓',
fly_camera_instructions_touch:
'ℹ️ Telecamera volante, usa i controlli a schermo e trascina per guardarti intorno',
select_mesh_delete_prompt: 'ℹ️ Clicca su un oggetto per eliminarlo.',
select_mesh_duplicate_prompt: 'ℹ️ Seleziona un oggetto da duplicare.',
place_duplicate_prompt: 'ℹ️ Fai clic per posizionare una copia.', // AI-generated; needs validation
select_mesh_eye_prompt: 'ℹ️ Clicca su un oggetto per orbitargli attorno.',
orbit_mesh_info: 'ℹ️ Trascina per muovere la telecamera intorno all\'oggetto',
place_object_prompt: "ℹ️ Fai clic su una superficie per posizionare l'oggetto.",
position_readout: 'Posizione: {position}',
eyedropper_not_supported_alert:
Expand Down Expand Up @@ -1229,6 +1230,42 @@ export default {
toolbar_redo_ui: 'Ripeti',
toolbar_zoom_out_ui: 'Riduci zoom',
toolbar_zoom_in_ui: 'Aumenta zoom',
// Player controls panel — title, sections and control names
player_panel_title: 'Controlli del giocatore',
player_section_onscreen: 'Controlli su schermo',
player_section_gamepad: 'Controller di gioco',
player_section_sr: 'Screen reader con controller di gioco',
player_action_move: 'Muovi',
player_action_look: 'Guarda intorno',
player_action_turn: 'Gira a sinistra / destra',
player_action_camera_up: 'Camera su / Pulsante 1',
player_action_interact: 'Interagisci / Pulsante 2',
player_action_camera_down: 'Camera giù / Pulsante 3',
player_action_spare: 'Azione generale / Pulsante 4',
player_control_arrows: 'Frecce',
player_control_button: 'Pulsante %1',
player_control_dpad_note:
'Sui controller senza levetta sinistra, il D-pad si muove al suo posto.',
player_control_dpad_up: 'Riepilogo scena',
player_control_dpad_down: 'Oggetto davanti',
player_control_dpad_left: 'Oggetto più vicino',

// Player panel controls
player_decrease_font_size: 'Riduci dimensione testo',
player_increase_font_size: 'Aumenta dimensione testo',

// Player control key labels
gamepad_left_stick: 'Levetta sinistra',
gamepad_right_stick: 'Levetta destra',
gamepad_l1_r1: 'L1 / R1',
gamepad_triangle_y: 'Triangolo / Y',
gamepad_square_x: 'Quadrato / X',
gamepad_circle_b: 'Cerchio / B',
gamepad_cross_a: 'Croce / A',
dpad_up: 'Su',
dpad_down: 'Giù',
dpad_left: 'Sinistra',

// Keyboard shortcuts panel — title and close button
shortcut_panel_title: 'Controlli da tastiera',
shortcut_panel_close: 'Chiudi le scorciatoie da tastiera',
Expand Down
39 changes: 38 additions & 1 deletion locale/pl.js
Original file line number Diff line number Diff line change
Expand Up @@ -1162,13 +1162,14 @@ export default {
error_design_mode_offline:
'Tryb projektowania wymaga połączenia z internetem przy pierwszym użyciu. Połącz się z internetem i spróbuj ponownie.', // ai
xr_mode_message: 'Tryb XR!',
fly_camera_instructions: 'ℹ️ Kamera lotu, użyj klawiszy strzałek i Page Up/Down',
fly_camera_instructions: 'ℹ️ Rozglądaj się za pomocą klawiszy strzałek i Page Up/Down lub Fn + ↑ ↓',
fly_camera_instructions_touch:
'ℹ️ Kamera lotu, użyj sterowania na ekranie i przeciągnij, aby się rozejrzeć',
select_mesh_delete_prompt: 'ℹ️ Kliknij obiekt, aby go usunąć.',
select_mesh_duplicate_prompt: 'ℹ️ Wybierz obiekt do powielenia.',
place_duplicate_prompt: 'ℹ️ Kliknij, aby umieścić kopię.', // AI-generated; needs validation
select_mesh_eye_prompt: 'ℹ️ Kliknij obiekt, aby go okrążyć.',
orbit_mesh_info: 'ℹ️ Przeciągnij, aby przesunąć kamerę wokół obiektu',
place_object_prompt: 'ℹ️ Kliknij na powierzchnię, aby umieścić obiekt.',
position_readout: 'Pozycja: {position}',
eyedropper_not_supported_alert: 'Wybieranie koloru jest dostępne w Chrome/Edge na komputerze.', // ai
Expand Down Expand Up @@ -1221,6 +1222,42 @@ export default {
toolbar_redo_ui: 'Ponów',
toolbar_zoom_out_ui: 'Oddal',
toolbar_zoom_in_ui: 'Przybliż',
// Player controls panel — title, sections and control names
player_panel_title: 'Sterowanie gracza',
player_section_onscreen: 'Sterowanie ekranowe',
player_section_gamepad: 'Kontroler do gier',
player_section_sr: 'Czytnik ekranu z kontrolerem do gier',
player_action_move: 'Ruch',
player_action_look: 'Rozglądanie się',
player_action_turn: 'Obrót w lewo / prawo',
player_action_camera_up: 'Kamera w górę / Przycisk 1',
player_action_interact: 'Interakcja / Przycisk 2',
player_action_camera_down: 'Kamera w dół / Przycisk 3',
player_action_spare: 'Akcja ogólna / Przycisk 4',
player_control_arrows: 'Strzałki',
player_control_button: 'Przycisk %1',
player_control_dpad_note:
'W kontrolerach bez lewej gałki, zamiast tego ruch obsługuje krzyżak (D-pad).',
player_control_dpad_up: 'Podsumowanie sceny',
player_control_dpad_down: 'Obiekt z przodu',
player_control_dpad_left: 'Najbliższy obiekt',

// Player panel controls
player_decrease_font_size: 'Zmniejsz rozmiar tekstu',
player_increase_font_size: 'Zwiększ rozmiar tekstu',

// Player control key labels
gamepad_left_stick: 'Lewa gałka',
gamepad_right_stick: 'Prawa gałka',
gamepad_l1_r1: 'L1 / R1',
gamepad_triangle_y: 'Trójkąt / Y',
gamepad_square_x: 'Kwadrat / X',
gamepad_circle_b: 'Koło / B',
gamepad_cross_a: 'Krzyż / A',
dpad_up: 'W górę',
dpad_down: 'W dół',
dpad_left: 'W lewo',

// Keyboard shortcuts panel — title and close button
shortcut_panel_title: 'Sterowanie klawiaturą',
shortcut_panel_close: 'Zamknij skróty klawiaturowe',
Expand Down
Loading
Loading