diff --git a/locale/de.js b/locale/de.js index e922368c..d9760ef4 100644 --- a/locale/de.js +++ b/locale/de.js @@ -1144,6 +1144,8 @@ export default { '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_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 und klicke dann, um Kopien zu platzieren.', diff --git a/locale/en.js b/locale/en.js index c2bff4bc..a7ba11d1 100644 --- a/locale/en.js +++ b/locale/en.js @@ -1224,6 +1224,8 @@ export default { banner_dismiss: 'Dismiss', xr_mode_message: 'XR Mode!', fly_camera_instructions: 'ℹ️ Fly camera, use arrow keys and page up/down', + 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, then click to place copies.', select_mesh_eye_prompt: 'ℹ️ Click an object to orbit around it.', diff --git a/locale/es.js b/locale/es.js index d2db0fd1..44f314ed 100644 --- a/locale/es.js +++ b/locale/es.js @@ -1221,6 +1221,8 @@ export default { 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_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, luego haz clic para colocar las copias.', // Google (had to update it) diff --git a/locale/fr.js b/locale/fr.js index 079057ca..885ba9c4 100644 --- a/locale/fr.js +++ b/locale/fr.js @@ -1156,6 +1156,8 @@ export default { '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_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, puis cliquez pour placer les copies.', diff --git a/locale/it.js b/locale/it.js index 7662a0db..50a4fc43 100644 --- a/locale/it.js +++ b/locale/it.js @@ -1165,6 +1165,8 @@ export default { '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_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, quindi fai clic per posizionare le copie.', diff --git a/locale/pl.js b/locale/pl.js index 5d79b764..ce457044 100644 --- a/locale/pl.js +++ b/locale/pl.js @@ -1152,6 +1152,8 @@ export default { '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_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, a następnie kliknij, aby umieścić kopie.', diff --git a/locale/pt.js b/locale/pt.js index d04d1401..495fcf77 100644 --- a/locale/pt.js +++ b/locale/pt.js @@ -1162,6 +1162,8 @@ export default { 'O modo de design precisa de uma ligação à internet na primeira utilização. Ligue-se à internet e tente novamente.', // ai xr_mode_message: 'Modo XR!', fly_camera_instructions: 'ℹ️ Câmera de voo, use as setas e Page Up/Down', + fly_camera_instructions_touch: + 'ℹ️ Câmera de voo, use os controles na tela e arraste para olhar em volta', select_mesh_delete_prompt: 'ℹ️ Clique em um objeto para excluí-lo.', select_mesh_duplicate_prompt: 'ℹ️ Selecione um objeto para duplicar, depois clique para posicionar as cópias.', diff --git a/locale/sv.js b/locale/sv.js index ac656c86..463d12bc 100644 --- a/locale/sv.js +++ b/locale/sv.js @@ -1140,6 +1140,8 @@ export default { 'Designläget behöver en internetanslutning första gången du använder det. Anslut till internet och försök igen.', // ai xr_mode_message: 'XR-läge!', fly_camera_instructions: 'ℹ️ Flygkamera, använd piltangenterna och Page Up/Down', + fly_camera_instructions_touch: + 'ℹ️ Flygkamera, använd skärmkontrollerna och dra för att se dig omkring', select_mesh_delete_prompt: 'ℹ️ Klicka på ett objekt för att ta bort det.', select_mesh_duplicate_prompt: 'ℹ️ Välj ett objekt att duplicera och klicka sedan för att placera kopior.', diff --git a/ui/gizmos.js b/ui/gizmos.js index 01513ca5..150c4f2f 100644 --- a/ui/gizmos.js +++ b/ui/gizmos.js @@ -2357,6 +2357,11 @@ function handleDeleteGizmo() { pickMeshFromScene(applyDelete); } +const isTouchDevice = () => + 'ontouchstart' in window || + navigator.maxTouchPoints > 0 || + window.matchMedia('(pointer: coarse)').matches; + // Camera: Toggle between play and fly camera modes function handleCameraGizmo() { // If orbit-view is active, drop back to the free camera first so the @@ -2375,7 +2380,9 @@ function handleCameraGizmo() { flock._gamepadSource?.setFlyMode(true); flock._keyboardSource?.setFlyMode(true); flock.printText({ - text: translate('fly_camera_instructions'), + text: translate( + isTouchDevice() ? 'fly_camera_instructions_touch' : 'fly_camera_instructions' + ), duration: 15, color: 'white', });