diff --git a/src/TrackPanelAx.cpp b/src/TrackPanelAx.cpp index 560e5ba8d..f379d9e7c 100644 --- a/src/TrackPanelAx.cpp +++ b/src/TrackPanelAx.cpp @@ -219,7 +219,7 @@ void TrackPanelAx::Updated() #endif } -void TrackPanelAx::MessageForScreenReader(const wxString& message) +void TrackPanelAx::MessageForScreenReader(const TranslatableString& message) { #if wxUSE_ACCESSIBILITY if (GetWindow() == wxWindow::FindFocus()) @@ -227,7 +227,7 @@ void TrackPanelAx::MessageForScreenReader(const wxString& message) auto t = GetFocus(); int childId = t ? TrackNum(t) : 0; - mMessage = message; + mMessage = message.Translation(); // append \a alernatively, so that the string is never the same as the previous string. // This ensures that screen readers read it. @@ -788,7 +788,7 @@ void TrackFocus::SetAccessible( #endif } -void TrackFocus::MessageForScreenReader(const wxString& message) +void TrackFocus::MessageForScreenReader(const TranslatableString& message) { if (mAx) mAx->MessageForScreenReader( message ); diff --git a/src/TrackPanelAx.h b/src/TrackPanelAx.h index 4e92ec0d9..b7e37fdd1 100644 --- a/src/TrackPanelAx.h +++ b/src/TrackPanelAx.h @@ -63,7 +63,7 @@ public: // Called to signal changes to a track void Updated(); - void MessageForScreenReader(const wxString& message); + void MessageForScreenReader(const TranslatableString& message); #if wxUSE_ACCESSIBILITY // Retrieves the address of an IDispatch interface for the specified child. @@ -186,7 +186,7 @@ public: void SetAccessible( wxWindow &owner, std::unique_ptr< TrackPanelAx > pAccessible ); - void MessageForScreenReader(const wxString& message); + void MessageForScreenReader(const TranslatableString& message); void UpdateAccessibility(); diff --git a/src/menus/ClipMenus.cpp b/src/menus/ClipMenus.cpp index da238a4ca..c13135b0c 100644 --- a/src/menus/ClipMenus.cpp +++ b/src/menus/ClipMenus.cpp @@ -307,14 +307,15 @@ int FindClipBoundaries } // for clip boundary commands, create a message for screen readers -wxString ClipBoundaryMessage(const std::vector& results) +TranslatableString ClipBoundaryMessage( + const std::vector& results) { - wxString message; + TranslatableString message; for (auto& result : results) { auto longName = result.ComposeTrackName(); - wxString str; + TranslatableString str; auto nClips = result.waveTrack->GetNumClips(); if (result.nFound < 2) { /* i18n-hint: in the string after this one, @@ -336,7 +337,7 @@ wxString ClipBoundaryMessage(const std::vector& results) result.index1 + 1, nClips, longName - ).Translation(); + ); } else { /* i18n-hint: in the string after this one, @@ -360,13 +361,13 @@ wxString ClipBoundaryMessage(const std::vector& results) result.index2 + 1, nClips, longName - ).Translation(); + ); } if (message.empty()) message = str; else - message = wxString::Format(_("%s, %s"), message, str); + message = XO("%s, %s").Format( message, str ); } return message; @@ -391,7 +392,7 @@ void DoSelectClipBoundary(AudacityProject &project, bool next) ProjectHistory::Get( project ).ModifyState(false); - wxString message = ClipBoundaryMessage(results); + auto message = ClipBoundaryMessage(results); trackFocus.MessageForScreenReader(message); } } @@ -576,7 +577,7 @@ void DoSelectClip(AudacityProject &project, bool next) window.ScrollIntoView(selectedRegion.t0()); // create and send message to screen reader - wxString message; + TranslatableString message; for (auto& result : results) { auto longName = result.ComposeTrackName(); auto nClips = result.waveTrack->GetNumClips(); @@ -593,12 +594,12 @@ void DoSelectClip(AudacityProject &project, bool next) result.index + 1, nClips, longName - ).Translation(); + ); if (message.empty()) message = str; else - message = wxString::Format(_("%s, %s"), message, str); + message = XO("%s, %s").Format( message, str ); } trackFocus.MessageForScreenReader(message); } @@ -623,7 +624,7 @@ void DoCursorClipBoundary ProjectHistory::Get( project ).ModifyState(false); window.ScrollIntoView(selectedRegion.t0()); - wxString message = ClipBoundaryMessage(results); + auto message = ClipBoundaryMessage(results); trackFocus.MessageForScreenReader(message); } } @@ -726,7 +727,7 @@ void DoClipLeftOrRight } if ( amount == 0.0 ) - trackFocus.MessageForScreenReader( _("clip not moved")); + trackFocus.MessageForScreenReader( XO("clip not moved")); } } diff --git a/src/menus/TransportMenus.cpp b/src/menus/TransportMenus.cpp index ce045e036..49b68d52a 100644 --- a/src/menus/TransportMenus.cpp +++ b/src/menus/TransportMenus.cpp @@ -145,7 +145,7 @@ void DoMoveToLabel(AudacityProject &project, bool next) auto nLabelTrack = trackRange.size(); if (nLabelTrack == 0 ) { - trackFocus.MessageForScreenReader(_("no label track")); + trackFocus.MessageForScreenReader(XO("no label track")); } else if (nLabelTrack > 1) { // find first label track, if any, starting at the focused track @@ -153,7 +153,7 @@ void DoMoveToLabel(AudacityProject &project, bool next) *tracks.Find(trackFocus.Get()).Filter(); if (!lt) trackFocus.MessageForScreenReader( - _("no label track at or below focused track")); + XO("no label track at or below focused track")); } // If there is a single label track, or there is a label track at or below @@ -180,13 +180,12 @@ void DoMoveToLabel(AudacityProject &project, bool next) window.RedrawProject(); } - wxString message; - message.Printf( - wxT("%s %d of %d"), label->title, i + 1, lt->GetNumLabels() ); + auto message = XO("%s %d of %d") + .Format( label->title, i + 1, lt->GetNumLabels() ); trackFocus.MessageForScreenReader(message); } else { - trackFocus.MessageForScreenReader(_("no labels in label track")); + trackFocus.MessageForScreenReader(XO("no labels in label track")); } } }