diff --git a/lang/ui.ca.json b/lang/ui.ca.json index 18d357943..71861d4d2 100644 --- a/lang/ui.ca.json +++ b/lang/ui.ca.json @@ -83,6 +83,10 @@ "defaultMessage": "Amic que narra contes amb IA", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "Animació que demostra els cinc passos del flux de treball del CreateAI: Connectar, Recollir dades, Provar el Model, Codificar i Ús. Connectar: Una micro:bit està connectada a l'ordinador, establint una comunicació entre els dos. Recollir Dades: una micro:bit està lligada al canell. Es recullen les dades de dos moviments: una onada (representat per la icona d'un cor) i sacseig (representat per la icona d'una creu). Es recullen diferents mostres i s'entrena un model de machine learning. L'ordinador, després intenta reconèixer els gestos de l'onada i el sacseig en temps real. L'usuari després pot retornar al pas de Recollir Dades i obtenir mostres adicionals i fer altre cop la prova del model. Codificar: l'usuari escriu un programa utilitzant els blocs de MakeCode que incorporen el model entrenat. El programa acabat es baixa a la micro:bit. Ús: La micro:bit respon als moviments físics de l'usuari, mostrant icones diferents a la pantalla de LEDs depenent de si es detecta un gest d'onada o de sacseig. ", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.en.json b/lang/ui.en.json index 14ed93342..c366a9cc1 100644 --- a/lang/ui.en.json +++ b/lang/ui.en.json @@ -83,6 +83,10 @@ "defaultMessage": "AI storytelling friend", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "Animation demonstrating the five steps of the CreateAI workflow: Connect, Collect Data, Test Model, Code, and Use. Connect: A micro:bit device is connected to a computer, establishing communication between the two. Collect Data: A micro:bit is strapped to a wrist. Movement data is recorded for two gestures: a wave (represented by a heart icon) and a shake (represented by a cross icon). Multiple samples are collected for each gesture to train the model. Test Model: Once enough samples are gathered, a machine learning model is trained. The computer then attempts to recognise wave and shake gestures in real time. The user can return to the Collect Data step to gather additional samples and do subsequent testing. Code: The user writes a program using MakeCode blocks that incorporates the trained model. The finished program is downloaded to the micro:bit. Use: The micro:bit responds to the user's physical movements, displaying different icons on its LED screen depending on whether a wave or shake gesture is detected.", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { @@ -2143,4 +2147,4 @@ "defaultMessage": "How CreateAI works", "description": "Welcome dialog" } -} \ No newline at end of file +} diff --git a/lang/ui.es-es.json b/lang/ui.es-es.json index c9f9990ff..745e2d4f8 100644 --- a/lang/ui.es-es.json +++ b/lang/ui.es-es.json @@ -83,6 +83,10 @@ "defaultMessage": "Amigo cuentacuentos con IA", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "Animación que demuestra los cinco pasos del flujo de trabajo de CreateAI: Conectar, Recopilar datos, Probar modelo, Programar y Usar. Conectar: Se conecta un dispositivo micro:bit a un ordenador, estableciendo la comunicación entre ambos. Recopilar datos: Se sujeta una micro:bit a la muñeca. Se registran los datos de movimiento para dos gestos: un saludo (representado por el icono de un corazón) y una sacudida (representada por el icono de una cruz). Se recolectan múltiples muestras de cada gesto para entrenar el modelo. Probar el Modelo: Una vez que se han reunido suficientes muestras, se entrena un modelo de aprendizaje automático (machine learning). El ordenador intenta entonces reconocer los gestos de saludo y sacudida en tiempo real. El usuario puede volver al paso de Recopilar datos para obtener muestras adicionales y realizar pruebas posteriores. Programar: El usuario escribe un programa utilizando bloques de MakeCode que incorpora el modelo entrenado. El programa finalizado se descarga en la micro:bit. Usar: La micro:bit responde a los movimientos físicos del usuario, mostrando diferentes iconos en su pantalla LED dependiendo de si se detecta un gesto de saludo o de sacudida.", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.fr.json b/lang/ui.fr.json index 38cb58712..dc2a46b79 100644 --- a/lang/ui.fr.json +++ b/lang/ui.fr.json @@ -83,6 +83,10 @@ "defaultMessage": "L'IA, l'amie de la narration", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "Animation illustrant les cinq étapes du processus CreateAI : Connecter, Collecter des données, Tester le modèle, Coder et Utiliser. Connecter : un micro:bit est connecté à un ordinateur, établissant ainsi une communication entre les deux appareils. Collecter des données : un micro:bit est fixé au poignet. Les données de mouvement sont enregistrées pour deux gestes : un signe de la main (représenté par une icône en forme de cœur) et une secousse (représentée par une icône en forme de croix). Plusieurs échantillons sont collectés pour chaque geste afin d'entraîner le modèle. Tester le modèle : une fois qu'un nombre suffisant d'échantillons a été recueilli, un modèle d'apprentissage automatique est entraîné. L'ordinateur tente alors de reconnaître les gestes de salut et de secousse en temps réel. L'utilisateur peut revenir à l'étape \"Collecter les données\" pour recueillir des échantillons supplémentaires et effectuer des tests ultérieurs. Coder : l'utilisateur écrit un programme à l'aide des blocs MakeCode qui intègre le modèle entraîné. Le programme terminé est téléchargé sur le micro:bit. Utiliser : le micro:bit réagit aux mouvements physiques de l'utilisateur, affichant différentes icônes sur son écran LED selon qu'un geste de salut ou de secousse est détecté.", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.ja.json b/lang/ui.ja.json index 70fb7abc7..90c50dab7 100644 --- a/lang/ui.ja.json +++ b/lang/ui.ja.json @@ -83,6 +83,10 @@ "defaultMessage": "AIストーリーテリングの友達", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "「CreateAI」のワークフローの5つのステップ(「Connect」「Collect Data」「Test Model」「Code」「Use」)を示すアニメーションです。\nConnect: micro:bit デバイスをコンピューターに接続し、両者のコミュニケーションを確立します。\nCollect Data: micro:bit を手首に装着し、2種類のジェスチャー(ハートのアイコンで表すウェーブと、十字のアイコンで表すシェイク)の動作を記録します。モデルを学習させるために、各ジェスチャーのデータを複数回収集します。\nTest Model: 十分なデータが集まると、機械学習モデルがトレーニングされます。コンピューターはリアルタイムでウェーブとシェイクのジェスチャーを認識しようとします。必要に応じて「Collect Data」にリターンし、追加データを収集して再テストを行うことができます。\nCode: ユーザーは MakeCode ブロックを使って、学習済みモデルを組み込んだプログラムを作成します。完成したプログラムを micro:bit にダウンロードします。\nUse: micro:bit はユーザーの動作に反応し、ウェーブまたはシェイクのどちらが検知されたかに応じて、LED 画面に異なるアイコンを表示します。", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.ko.json b/lang/ui.ko.json index d71d9e9cf..931f9350d 100644 --- a/lang/ui.ko.json +++ b/lang/ui.ko.json @@ -83,6 +83,10 @@ "defaultMessage": "AI 스토리텔링 친구", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "연결, 데이터 수집, 모델 테스트, 코드, 사용 등 CreateAI 워크플로 5단계를 보여주는 애니메이션. 연결: micro:bit 장치를 컴퓨터에 연결하여 두 기기의 통신을 설정합니다. 데이터 수집: micro:bit를 손목에 착용합니다. 손 젓기(하트 아이콘으로 표시)와 흔들기(X 아이콘으로 표시)라는 두 가지 제스처에 대한 움직임 데이터를 기록합니다. 모델을 학습시키기 위해 각 제스처에 대한 샘플을 여러 개 수집합니다. 모델 테스트: 샘플을 충분히 수집했다면 머신러닝 모델을 학습시킵니다. 그 후 컴퓨터는 실시간으로 손 젓기와 흔들기 제스처를 인식하려고 시도합니다. 사용자는 필요에 따라 다시 데이터 수집 단계로 돌아가 샘플을 더 수집하여 후속 테스트를 진행할 수 있습니다. 코드: 사용자는 학습된 모델이 포함된 MakeCode 블록을 사용해 프로그램을 작성합니다. 완성한 프로그램을 micro:bit에 다운로드합니다. 사용: micro:bit가 사용자의 신체 움직임에 반응합니다. 손 젓기 또는 흔들기 제스처가 감지되면 LED 스크린에 각 제스처에 해당하는 아이콘이 나타납니다.", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.lol.json b/lang/ui.lol.json index 466b60a64..ce3621078 100644 --- a/lang/ui.lol.json +++ b/lang/ui.lol.json @@ -83,6 +83,10 @@ "defaultMessage": "crwdns363518:0crwdne363518:0", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "crwdns369281:0crwdne369281:0", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.nl.json b/lang/ui.nl.json index 42b76846d..102378981 100644 --- a/lang/ui.nl.json +++ b/lang/ui.nl.json @@ -83,6 +83,10 @@ "defaultMessage": "AI verhalenvertellende vriend", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "Animatie om de vijf stappen van de CreateAI workflow te demonstreren: Verbind, Verzamel gegevens, Test model, Codeer en Gebruik. Verbind: Een micro:bit apparaat is verbonden met een computer, waardoor communicatie tussen de twee tot stand wordt gebracht. Verzamel gegevens: Een micro:bit is om een pols gebonden. Gegevens van beweging worden geregistreerd voor twee gebaren: een golf (vertegenwoordigd door een hartpictogram) en een schudding (vertegenwoordigd door een kruispictogram). Er worden meerdere opnames verzameld voor elk gebaar om het model te trainen. Test model: Zodra er genoeg opnames zijn verzameld, wordt er een machine learning-model getraind. De computer probeert vervolgens golf- en schudgebaren in real time te herkennen. De gebruiker kan terugkeren naar de Verzamel gegevens- stap om extra opnames te verzamelen en vervolgens te testen. Codeer: De gebruiker schrijft een programma met behulp van MakeCode blokken waarin het getrainde model is geïntegreerd. Het voltooide programma wordt gedownload naar de micro:bit. Gebruik: De micro:bit reageert op de fysieke bewegingen van de gebruiker, verschillende pictogrammen worden weergegeven op het LED-scherm, afhankelijk van of er een golf- of schudgebaar wordt gedetecteerd.", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.pl.json b/lang/ui.pl.json index eeda0c28d..c78cf8550 100644 --- a/lang/ui.pl.json +++ b/lang/ui.pl.json @@ -83,6 +83,10 @@ "defaultMessage": "Przyjaciel opowiadający historyjki za pomocą AI", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "Animacja pokazująca pięć kroków przebiegu działania CreateAI: Połącz, Zbierz Dane, Testuj model, Koduj i Użyj. Połącz: micro:bit jest podłączony do komputera, ustanawiajc komunikację między nimi. Zbierz dane: micro:bit jest przymocowany do nadgarstka. Dane są rejestrowane dla dwóch ruchów: machania (reprezentowanego przez ikonę serca) i potrząśnięcia (reprezentowanego przez ikonę krzyżyka). Wielokrotne próbki pobiera się dla każdego ruchu do trenowania modelu. Testuj model: Po zebraniu wystarczającej liczby próbek następuje trenowanie modelu uczenia maszynowego. Następnie komputer próbuje rozpoznać ruchy machania i potrząsanie w czasie rzeczywistym. Użytkownik może powrócić do etapu gromadzenia danych, aby zebrać dodatkowe próbki i wykonać kolejne badania. Koduj: Użytkownik pisze program złożony z bloków MakeCode, który zawiera wytrenowany model. Ukończony program jest pobierany do micro:bita. Użyj: micro:bit odpowiada fizycznym ruchom użytkownika, wyświetlając różne ikony na wyświatlaczu LED w zależności od tego, czy wykryte zostało machanie czy potrząsanie.", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.pt-br.json b/lang/ui.pt-br.json index be8d0bfb6..9cc603f9b 100644 --- a/lang/ui.pt-br.json +++ b/lang/ui.pt-br.json @@ -83,6 +83,10 @@ "defaultMessage": "Amigo contador de histórias de IA", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "Animação demonstrando as cinco etapas do fluxo de trabalho do CreateAI: Conectar, Coletar dados, Testar modelo, Programar e Usar. Conectar: ​​Um dispositivo micro:bit é conectado a um computador, estabelecendo comunicação entre os dois. Coletar dados: Um micro:bit é preso a um pulso. Dados de movimentos são registrados para dois gestos: um aceno (representado por um ícone de coração) e um movimento de sacudir (representado por um ícone de cruz). Várias amostras são coletadas para cada gesto para treinar o modelo. Testar modelo: Assim que amostras suficientes forem coletadas, um modelo de aprendizagem de máquina é treinado. O computador então tenta reconhecer os gestos de aceno e movimento de sacudir em tempo real. O usuário pode retornar à etapa Coletar dados para coletar amostras adicionais e realizar testes subsequentes. Programar: O usuário escreve um programa usando blocos MakeCode que incorpora o modelo treinado. O programa finalizado é baixado para o micro:bit. Usar: O micro:bit responde aos movimentos físicos do usuário, exibindo ícones diferentes em sua tela de LED dependendo se um gesto de aceno ou movimento de sacudir é detectado.", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/lang/ui.zh-tw.json b/lang/ui.zh-tw.json index 20a108d80..308a687c8 100644 --- a/lang/ui.zh-tw.json +++ b/lang/ui.zh-tw.json @@ -83,6 +83,10 @@ "defaultMessage": "AI 說故事夥伴", "description": "Home page resource card title" }, + "animation-bluetooth-mode-label": { + "defaultMessage": "Animation demonstrating how to reset to Bluetooth mode.", + "description": "Aria label for animation" + }, "animation-label": { "defaultMessage": "動畫展示 CreateAI 工作流程的五個步驟:連線、收集資料、測試模型、程式碼,以及使用。連線:將 micro:bit 裝置連線到電腦,建立兩者之間的通訊。收集資料:將 micro:bit 綁在手腕上。記錄兩種手勢的移動資料:揮手(以愛心圖示表示)與搖動(以叉叉圖示表示)。每種手勢都會收集多筆範例來訓練模型。測試模型:收集到足夠範例後,便會訓練機器學習模型。接著,電腦會嘗試即時辨識揮手與搖動手勢。使用者可以返回「收集資料」步驟,收集更多範例並再次測試。程式碼:使用者利用 MakeCode 程式積木寫入整合已訓練模型的程式。完成的程式會下載到 micro:bit。使用:micro:bit 會回應使用者的實際移動,並依據偵測到的是揮手還是搖動手勢,在 LED 螢幕上顯示不同圖示。", "description": "Aria label for animation" @@ -1664,7 +1668,7 @@ "description": "Heading for rename project dialog" }, "reset-to-bluetooth-mode-ab-subtitle": { - "defaultMessage": "Hold A+B and press RESET", + "defaultMessage": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears.", "description": "Instructions to hold A and B buttons while pressing reset on the micro:bit" }, "reset-to-bluetooth-mode-heading": { @@ -1672,7 +1676,7 @@ "description": "Title for dialog with instructures on using " }, "reset-to-bluetooth-mode-subtitle": { - "defaultMessage": "Press RESET three times", + "defaultMessage": "Press RESET three times.", "description": "Instructions to press the physical reset button on the micro:bit" }, "reset-to-default-action": { diff --git a/src/components/AnimationProvider.tsx b/src/components/AnimationProvider.tsx index fc97009dc..66295ab7e 100644 --- a/src/components/AnimationProvider.tsx +++ b/src/components/AnimationProvider.tsx @@ -21,6 +21,7 @@ interface AnimationContextValue { resume: () => void; isPaused: boolean; withPlayState: (animationCss: string) => string; + prefersReducedMotion: boolean; } export const AnimationContext = createContext( @@ -34,12 +35,25 @@ export const useAnimation = () => { return ctx; }; -const isInitiallyPaused = +const prefersReducedMotion = typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches; -export const AnimationProvider = ({ children }: { children: ReactNode }) => { +interface AnimationProviderProps { + children: ReactNode; + removeAnimationIfReducedMotion?: boolean; + startPausedIfReducedMotion?: boolean; +} + +export const AnimationProvider = ({ + children, + removeAnimationIfReducedMotion, + startPausedIfReducedMotion, +}: AnimationProviderProps) => { const controllerRef = useRef(new AbortController()); + const isInitiallyPaused = startPausedIfReducedMotion + ? prefersReducedMotion + : false; const [isPaused, setIsPaused] = useState(isInitiallyPaused); const resumeRef = useRef<(() => void) | null>(null); @@ -135,8 +149,11 @@ export const AnimationProvider = ({ children }: { children: ReactNode }) => { }, []); const withPlayState = useCallback( - (s: string) => `${s} ${isPaused ? "paused" : "running"}`, - [isPaused] + (s: string) => + prefersReducedMotion && removeAnimationIfReducedMotion + ? "none" + : `${s} ${isPaused ? "paused" : "running"}`, + [isPaused, removeAnimationIfReducedMotion] ); return ( @@ -148,6 +165,7 @@ export const AnimationProvider = ({ children }: { children: ReactNode }) => { isPaused, restartAbortController, withPlayState, + prefersReducedMotion, }} > {children} diff --git a/src/components/DialogFooterLink.tsx b/src/components/DialogFooterLink.tsx index 944182ec6..da70f3749 100644 --- a/src/components/DialogFooterLink.tsx +++ b/src/components/DialogFooterLink.tsx @@ -6,7 +6,7 @@ import { Button, ButtonProps } from "@chakra-ui/react"; const DialogFooterLink = ({ ...props }: ButtonProps) => { - return - ) : ( - - ); -}; - export default WelcomeDialog; diff --git a/src/images/bluetooth-mode-a+b+reset.gif b/src/images/bluetooth-mode-a+b+reset.gif deleted file mode 100644 index 4bda633f0..000000000 Binary files a/src/images/bluetooth-mode-a+b+reset.gif and /dev/null differ diff --git a/src/images/bluetooth-mode-triple-reset.gif b/src/images/bluetooth-mode-triple-reset.gif deleted file mode 100644 index 319f4b525..000000000 Binary files a/src/images/bluetooth-mode-triple-reset.gif and /dev/null differ diff --git a/src/messages/ui.ca.json b/src/messages/ui.ca.json index 8a7027f52..518e7fcfe 100644 --- a/src/messages/ui.ca.json +++ b/src/messages/ui.ca.json @@ -181,6 +181,12 @@ "value": "Amic que narra contes amb IA" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -3038,7 +3044,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3050,7 +3056,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.en.json b/src/messages/ui.en.json index 4d963c7eb..e652f8d9d 100644 --- a/src/messages/ui.en.json +++ b/src/messages/ui.en.json @@ -185,6 +185,12 @@ "value": "AI storytelling friend" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -3056,7 +3062,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3068,7 +3074,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.es-es.json b/src/messages/ui.es-es.json index c1921e69f..999769abf 100644 --- a/src/messages/ui.es-es.json +++ b/src/messages/ui.es-es.json @@ -185,6 +185,12 @@ "value": "Amigo cuentacuentos con IA" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -3068,7 +3074,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3080,7 +3086,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.fr.json b/src/messages/ui.fr.json index 0f13f2c80..9e44acb6d 100644 --- a/src/messages/ui.fr.json +++ b/src/messages/ui.fr.json @@ -185,6 +185,12 @@ "value": "L'IA, l'amie de la narration" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -3060,7 +3066,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3072,7 +3078,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.ja.json b/src/messages/ui.ja.json index 3aa80290c..178a9175e 100644 --- a/src/messages/ui.ja.json +++ b/src/messages/ui.ja.json @@ -173,6 +173,12 @@ "value": "AIストーリーテリングの友達" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -2992,7 +2998,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3004,7 +3010,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.ko.json b/src/messages/ui.ko.json index 26beed49d..51646a1a2 100644 --- a/src/messages/ui.ko.json +++ b/src/messages/ui.ko.json @@ -173,6 +173,12 @@ "value": "AI 스토리텔링 친구" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -2988,7 +2994,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3000,7 +3006,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.lol.json b/src/messages/ui.lol.json index c59cc6af1..ed78cb7a3 100644 --- a/src/messages/ui.lol.json +++ b/src/messages/ui.lol.json @@ -165,6 +165,12 @@ "value": "crwdns363518:0crwdne363518:0" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -2966,7 +2972,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -2978,7 +2984,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.nl.json b/src/messages/ui.nl.json index 725290d05..43ac5fe81 100644 --- a/src/messages/ui.nl.json +++ b/src/messages/ui.nl.json @@ -185,6 +185,12 @@ "value": "AI verhalenvertellende vriend" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -3064,7 +3070,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3076,7 +3082,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.pl.json b/src/messages/ui.pl.json index 5304240b3..cda547439 100644 --- a/src/messages/ui.pl.json +++ b/src/messages/ui.pl.json @@ -185,6 +185,12 @@ "value": "Przyjaciel opowiadający historyjki za pomocą AI" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -3068,7 +3074,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3080,7 +3086,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.pt-br.json b/src/messages/ui.pt-br.json index 5f407b1e2..f54ea7338 100644 --- a/src/messages/ui.pt-br.json +++ b/src/messages/ui.pt-br.json @@ -185,6 +185,12 @@ "value": "Amigo contador de histórias de IA" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -3060,7 +3066,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3072,7 +3078,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/messages/ui.zh-tw.json b/src/messages/ui.zh-tw.json index 2143b2114..e872ca734 100644 --- a/src/messages/ui.zh-tw.json +++ b/src/messages/ui.zh-tw.json @@ -189,6 +189,12 @@ "value": "AI 說故事夥伴" } ], + "animation-bluetooth-mode-label": [ + { + "type": 0, + "value": "Animation demonstrating how to reset to Bluetooth mode." + } + ], "animation-label": [ { "type": 0, @@ -3060,7 +3066,7 @@ "reset-to-bluetooth-mode-ab-subtitle": [ { "type": 0, - "value": "Hold A+B and press RESET" + "value": "Hold A+B and press RESET. Keep holding A+B until the Bluetooth icon appears." } ], "reset-to-bluetooth-mode-heading": [ @@ -3072,7 +3078,7 @@ "reset-to-bluetooth-mode-subtitle": [ { "type": 0, - "value": "Press RESET three times" + "value": "Press RESET three times." } ], "reset-to-default-action": [ diff --git a/src/utils/icons.ts b/src/utils/icons.ts index d047526e3..4969ed029 100644 --- a/src/utils/icons.ts +++ b/src/utils/icons.ts @@ -50,9 +50,12 @@ export const Off = "0000000000000000000000000"; export type MakeCodeIcon = keyof typeof makecodeIcons; +const Bluetooth = "0011010101011101010100110"; + export const icons = { ...makecodeIcons, off: Off, + bluetooth: Bluetooth, }; export type LedIconType = keyof typeof icons;