diff --git a/src/FFmpeg.cpp b/src/FFmpeg.cpp index 66862819d..c15c73e7a 100644 --- a/src/FFmpeg.cpp +++ b/src/FFmpeg.cpp @@ -469,14 +469,15 @@ public: S.SetBorder(10); S.StartVerticalLay(true); { - S.AddTitle( wxString::Format( - _("Audacity needs the file '%s' to import and export audio via FFmpeg."), - mName)); + S.AddTitle( + XO( +"Audacity needs the file '%s' to import and export audio via FFmpeg.") + .Format( mName ) ); S.SetBorder(3); S.StartHorizontalLay(wxALIGN_LEFT, true); { - S.AddTitle( wxString::Format(_("Location of '%s':"), mName) ); + S.AddTitle( XO("Location of '%s':").Format( mName ) ); } S.EndHorizontalLay(); diff --git a/src/ShuttleGui.cpp b/src/ShuttleGui.cpp index bbfc73573..b0d1bbb81 100644 --- a/src/ShuttleGui.cpp +++ b/src/ShuttleGui.cpp @@ -266,18 +266,19 @@ void ShuttleGuiBase::AddUnits(const wxString &Prompt, int wrapWidth) } /// Centred text string. -void ShuttleGuiBase::AddTitle(const wxString &Prompt, int wrapWidth) +void ShuttleGuiBase::AddTitle(const TranslatableString &Prompt, int wrapWidth) { if( Prompt.empty() ) return; if( mShuttleMode != eIsCreating ) return; - auto text = safenew wxStaticText(GetParent(), -1, Prompt, wxDefaultPosition, wxDefaultSize, + const auto translated = Prompt.Translation(); + auto text = safenew wxStaticText(GetParent(), -1, translated, wxDefaultPosition, wxDefaultSize, GetStyle( wxALIGN_CENTRE )); mpWind = text; if (wrapWidth > 0) text->Wrap(wrapWidth); - mpWind->SetName(Prompt); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs) + mpWind->SetName(translated); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs) UpdateSizers(); } @@ -478,10 +479,13 @@ wxStaticText * ShuttleGuiBase::AddVariableText( return pStatic; } -wxComboBox * ShuttleGuiBase::AddCombo( const wxString &Prompt, const wxString &Selected,const wxArrayStringEx & choices ) +wxComboBox * ShuttleGuiBase::AddCombo( + const TranslatableString &Prompt, + const wxString &Selected, const wxArrayStringEx & choices ) { - HandleOptionality( Prompt ); - AddPrompt( Prompt ); + const auto translated = Prompt.Translation(); + HandleOptionality( translated ); + AddPrompt( translated ); UseUpId(); if( mShuttleMode != eIsCreating ) return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxComboBox); @@ -499,7 +503,7 @@ wxComboBox * ShuttleGuiBase::AddCombo( const wxString &Prompt, const wxString &S mpWind = pCombo = safenew wxComboBox(GetParent(), miId, Selected, wxDefaultPosition, wxDefaultSize, n, Choices, GetStyle( 0 )); - mpWind->SetName(wxStripMenuCodes(Prompt)); + mpWind->SetName(wxStripMenuCodes(translated)); UpdateSizers(); return pCombo; @@ -569,10 +573,12 @@ wxSlider * ShuttleGuiBase::AddSlider(const wxString &Prompt, int pos, int Max, i return pSlider; } -wxSpinCtrl * ShuttleGuiBase::AddSpinCtrl(const wxString &Prompt, int Value, int Max, int Min) +wxSpinCtrl * ShuttleGuiBase::AddSpinCtrl( + const TranslatableString &Prompt, int Value, int Max, int Min) { - HandleOptionality( Prompt ); - AddPrompt( Prompt ); + const auto translated = Prompt.Translation(); + HandleOptionality( translated ); + AddPrompt( translated ); UseUpId(); if( mShuttleMode != eIsCreating ) return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxSpinCtrl); @@ -583,7 +589,7 @@ wxSpinCtrl * ShuttleGuiBase::AddSpinCtrl(const wxString &Prompt, int Value, int GetStyle( wxSP_VERTICAL | wxSP_ARROW_KEYS ), Min, Max, Value ); - mpWind->SetName(wxStripMenuCodes(Prompt)); + mpWind->SetName(wxStripMenuCodes(translated)); miProp=1; UpdateSizers(); return pSpinCtrl; @@ -1299,9 +1305,11 @@ wxCheckBox * ShuttleGuiBase::DoTieCheckBoxOnRight(const wxString &Prompt, Wrappe return pCheckBox; } -wxSpinCtrl * ShuttleGuiBase::DoTieSpinCtrl( const wxString &Prompt, WrappedType & WrappedRef, const int max, const int min ) +wxSpinCtrl * ShuttleGuiBase::DoTieSpinCtrl( + const TranslatableString &Prompt, + WrappedType & WrappedRef, const int max, const int min ) { - HandleOptionality( Prompt ); + HandleOptionality( Prompt.Translation() ); // The Add function does a UseUpId(), so don't do it here in that case. if( mShuttleMode == eIsCreating ) return AddSpinCtrl( Prompt, WrappedRef.ReadAsInt(), max, min ); @@ -1625,7 +1633,8 @@ wxCheckBox * ShuttleGuiBase::TieCheckBoxOnRight(const wxString &Prompt, bool &Va return DoTieCheckBox( Prompt, WrappedRef ); } -wxSpinCtrl * ShuttleGuiBase::TieSpinCtrl( const wxString &Prompt, int &Value, const int max, const int min ) +wxSpinCtrl * ShuttleGuiBase::TieSpinCtrl( + const TranslatableString &Prompt, int &Value, const int max, const int min ) { WrappedType WrappedRef(Value); return DoTieSpinCtrl( Prompt, WrappedRef, max, min ); @@ -1872,10 +1881,10 @@ wxSlider * ShuttleGuiBase::TieSlider( /// Variant of the standard TieSpinCtrl which does the two step exchange /// between gui and stack variable and stack variable and shuttle. wxSpinCtrl * ShuttleGuiBase::TieSpinCtrl( - const wxString &Prompt, - const SettingSpec< int > &Setting, - const int max, - const int min) + const TranslatableString &Prompt, + const SettingSpec< int > &Setting, + const int max, + const int min) { wxSpinCtrl * pSpinCtrl=NULL; diff --git a/src/ShuttleGui.h b/src/ShuttleGui.h index 1322e14a2..be13f25be 100644 --- a/src/ShuttleGui.h +++ b/src/ShuttleGui.h @@ -268,11 +268,12 @@ public: void HandleOptionality(const wxString &Prompt); void AddPrompt(const wxString &Prompt, int wrapWidth = 0); void AddUnits(const wxString &Prompt, int wrapWidth = 0); - void AddTitle(const wxString &Prompt, int wrapWidth = 0); + void AddTitle(const TranslatableString &Prompt, int wrapWidth = 0); wxWindow * AddWindow(wxWindow * pWindow); wxSlider * AddSlider(const wxString &Prompt, int pos, int Max, int Min = 0); wxSlider * AddVSlider(const wxString &Prompt, int pos, int Max); - wxSpinCtrl * AddSpinCtrl(const wxString &Prompt, int Value, int Max, int Min); + wxSpinCtrl * AddSpinCtrl(const TranslatableString &Prompt, + int Value, int Max, int Min); wxTreeCtrl * AddTree(); // Pass the same initValue to the sequence of calls to AddRadioButton and @@ -331,7 +332,8 @@ public: wxGrid * AddGrid(); wxCheckBox * AddCheckBox( const wxString &Prompt, bool Selected); wxCheckBox * AddCheckBoxOnRight( const wxString &Prompt, bool Selected); - wxComboBox * AddCombo( const wxString &Prompt, const wxString &Selected,const wxArrayStringEx & choices ); + wxComboBox * AddCombo( const TranslatableString &Prompt, + const wxString &Selected, const wxArrayStringEx & choices ); wxChoice * AddChoice( const TranslatableString &Prompt, const TranslatableStrings &choices, int Selected = -1 ); wxChoice * AddChoice( const TranslatableString &Prompt, @@ -420,7 +422,8 @@ public: // and as many times as there are values in the enumeration. wxRadioButton * TieRadioButton(); - wxSpinCtrl * TieSpinCtrl( const wxString &Prompt, int &Value, const int max, const int min = 0 ); + wxSpinCtrl * TieSpinCtrl( const TranslatableString &Prompt, + int &Value, const int max, const int min = 0 ); //-- Variants of the standard Tie functions which do two step exchange in one go @@ -468,7 +471,7 @@ public: const int max, const int min = 0); virtual wxSpinCtrl * TieSpinCtrl( - const wxString &Prompt, + const TranslatableString &Prompt, const SettingSpec< int > &Setting, const int max, const int min); @@ -553,7 +556,8 @@ private: const TranslatableString &Prompt, WrappedType & WrappedRef, const TranslatableStrings & choices ); wxSlider * DoTieSlider( const wxString &Prompt, WrappedType & WrappedRef, const int max, const int min = 0 ); - wxSpinCtrl * DoTieSpinCtrl( const wxString &Prompt, WrappedType & WrappedRef, const int max, const int min = 0 ); + wxSpinCtrl * DoTieSpinCtrl( const TranslatableString &Prompt, + WrappedType & WrappedRef, const int max, const int min = 0 ); std::vector mRadioSymbols; wxString mRadioSettingName; /// The setting controlled by a group. diff --git a/src/commands/GetInfoCommand.cpp b/src/commands/GetInfoCommand.cpp index 4475bfcd0..51518c458 100644 --- a/src/commands/GetInfoCommand.cpp +++ b/src/commands/GetInfoCommand.cpp @@ -229,7 +229,7 @@ public: const int max, const int min = 0) override; wxSpinCtrl * TieSpinCtrl( - const wxString &Prompt, + const TranslatableString &Prompt, const SettingSpec< int > &Setting, const int max, const int min) override; @@ -342,14 +342,14 @@ wxSlider * ShuttleGuiGetDefinition::TieSlider( return ShuttleGui::TieSlider( Prompt, Setting, max, min ); } wxSpinCtrl * ShuttleGuiGetDefinition::TieSpinCtrl( - const wxString &Prompt, + const TranslatableString &Prompt, const SettingSpec< int > &Setting, const int max, const int min) { StartStruct(); AddItem( Setting.GetPath(), "id" ); - AddItem( Prompt, "prompt" ); + AddItem( Prompt.Translation(), "prompt" ); AddItem( "number", "type" ); AddItem( Setting.GetDefault(), "default" ); EndStruct(); diff --git a/src/effects/ChangePitch.cpp b/src/effects/ChangePitch.cpp index cd67ab1a3..689920dbe 100644 --- a/src/effects/ChangePitch.cpp +++ b/src/effects/ChangePitch.cpp @@ -263,11 +263,10 @@ void EffectChangePitch::PopulateOrExchange(ShuttleGui & S) { S.StartVerticalLay(); { - S.AddTitle(_("Change Pitch without Changing Tempo")); + S.AddTitle(XO("Change Pitch without Changing Tempo")); S.AddTitle( XO("Estimated Start Pitch: %s%d (%.3f Hz)") - .Format( pitch[m_nFromPitch], m_nFromOctave, m_FromFrequency) - .Translation() ); + .Format( pitch[m_nFromPitch], m_nFromOctave, m_FromFrequency) ); } S.EndVerticalLay(); diff --git a/src/effects/ChangeSpeed.cpp b/src/effects/ChangeSpeed.cpp index 20db57fe1..b510c8755 100644 --- a/src/effects/ChangeSpeed.cpp +++ b/src/effects/ChangeSpeed.cpp @@ -299,7 +299,7 @@ void EffectChangeSpeed::PopulateOrExchange(ShuttleGui & S) S.StartVerticalLay(0); { S.AddSpace(0, 5); - S.AddTitle(_("Change Speed, affecting both Tempo and Pitch")); + S.AddTitle(XO("Change Speed, affecting both Tempo and Pitch")); S.AddSpace(0, 10); // Speed multiplier and percent change controls. diff --git a/src/effects/ChangeTempo.cpp b/src/effects/ChangeTempo.cpp index d087aef9a..67f9cbc96 100644 --- a/src/effects/ChangeTempo.cpp +++ b/src/effects/ChangeTempo.cpp @@ -226,7 +226,7 @@ void EffectChangeTempo::PopulateOrExchange(ShuttleGui & S) S.StartVerticalLay(0); { S.AddSpace(0, 5); - S.AddTitle(_("Change Tempo without Changing Pitch")); + S.AddTitle(XO("Change Tempo without Changing Pitch")); S.SetBorder(5); // diff --git a/src/effects/Contrast.cpp b/src/effects/Contrast.cpp index e7aa075de..195520d74 100644 --- a/src/effects/Contrast.cpp +++ b/src/effects/Contrast.cpp @@ -224,7 +224,8 @@ ContrastDialog::ContrastDialog(wxWindow * parent, wxWindowID id, S.StartHorizontalLay(wxCENTER, false); { /* i18n-hint: RMS abbreviates root mean square, a certain averaging method */ - S.AddTitle(_("Contrast Analyzer, for measuring RMS volume differences between two selections of audio.")); + S.AddTitle(XO( +"Contrast Analyzer, for measuring RMS volume differences between two selections of audio.")); } S.EndHorizontalLay(); S.StartStatic( XO("Parameters") ); diff --git a/src/effects/Reverb.cpp b/src/effects/Reverb.cpp index b1be5fea7..54387d3a4 100644 --- a/src/effects/Reverb.cpp +++ b/src/effects/Reverb.cpp @@ -444,15 +444,15 @@ void EffectReverb::PopulateOrExchange(ShuttleGui & S) .Style(wxSL_HORIZONTAL) \ .AddSlider( {}, DEF_ ## n, MAX_ ## n, MIN_ ## n); - SpinSlider(RoomSize, _("&Room Size (%):")) - SpinSlider(PreDelay, _("&Pre-delay (ms):")) - SpinSlider(Reverberance, _("Rever&berance (%):")) - SpinSlider(HfDamping, _("Da&mping (%):")) - SpinSlider(ToneLow, _("Tone &Low (%):")) - SpinSlider(ToneHigh, _("Tone &High (%):")) - SpinSlider(WetGain, _("Wet &Gain (dB):")) - SpinSlider(DryGain, _("Dr&y Gain (dB):")) - SpinSlider(StereoWidth, _("Stereo Wid&th (%):")) + SpinSlider(RoomSize, XO("&Room Size (%):")) + SpinSlider(PreDelay, XO("&Pre-delay (ms):")) + SpinSlider(Reverberance, XO("Rever&berance (%):")) + SpinSlider(HfDamping, XO("Da&mping (%):")) + SpinSlider(ToneLow, XO("Tone &Low (%):")) + SpinSlider(ToneHigh, XO("Tone &High (%):")) + SpinSlider(WetGain, XO("Wet &Gain (dB):")) + SpinSlider(DryGain, XO("Dr&y Gain (dB):")) + SpinSlider(StereoWidth, XO("Stereo Wid&th (%):")) #undef SpinSlider diff --git a/src/effects/ToneGen.cpp b/src/effects/ToneGen.cpp index 37e81888b..496dca354 100644 --- a/src/effects/ToneGen.cpp +++ b/src/effects/ToneGen.cpp @@ -351,13 +351,13 @@ void EffectToneGen::PopulateOrExchange(ShuttleGui & S) { S.StartHorizontalLay(wxLEFT, 50); { - S.AddTitle(_("Start")); + S.AddTitle(XO("Start")); } S.EndHorizontalLay(); S.StartHorizontalLay(wxLEFT, 50); { - S.AddTitle(_("End")); + S.AddTitle(XO("End")); } S.EndHorizontalLay(); } diff --git a/src/export/Export.cpp b/src/export/Export.cpp index 8f300f374..91cedfcf3 100644 --- a/src/export/Export.cpp +++ b/src/export/Export.cpp @@ -226,7 +226,7 @@ void ExportPlugin::OptionsCreate(ShuttleGui &S, int WXUNUSED(format)) { S.StartHorizontalLay(wxCENTER, 0); { - S.Prop(1).AddTitle(_("No format specific options")); + S.Prop(1).AddTitle(XO("No format specific options")); } S.EndHorizontalLay(); } diff --git a/src/export/ExportCL.cpp b/src/export/ExportCL.cpp index f586ce384..c2df251a8 100644 --- a/src/export/ExportCL.cpp +++ b/src/export/ExportCL.cpp @@ -120,7 +120,7 @@ void ExportCLOptions::PopulateOrExchange(ShuttleGui & S) S.StartMultiColumn(3, wxEXPAND); { S.SetStretchyCol(1); - mCmd = S.AddCombo(_("Command:"), + mCmd = S.AddCombo(XO("Command:"), cmd, cmds); S.Id(ID_BROWSE).AddButton(XO("Browse..."), @@ -134,12 +134,13 @@ void ExportCLOptions::PopulateOrExchange(ShuttleGui & S) } S.EndHorizontalLay(); + S.AddTitle(XO( /* i18n-hint: Some programmer-oriented terminology here: "Data" refers to the sound to be exported, "piped" means sent, and "standard in" means the default input stream that the external program, named by %f, will read. And yes, it's %f, not %s -- this isn't actually used in the program as a format string. Keep %f unchanged. */ - S.AddTitle(_("Data will be piped to standard in. \"%f\" uses the file name in the export window.")); +"Data will be piped to standard in. \"%f\" uses the file name in the export window.")); } S.EndVerticalLay(); } diff --git a/src/export/ExportFFmpeg.cpp b/src/export/ExportFFmpeg.cpp index 660a5b296..01df247c2 100644 --- a/src/export/ExportFFmpeg.cpp +++ b/src/export/ExportFFmpeg.cpp @@ -1051,13 +1051,13 @@ int ExportFFmpeg::AskResample(int bitrate, int rate, int lowrate, int highrate, { S.AddTitle( (bitrate == 0 - ? wxString::Format( - _("The project sample rate (%d) is not supported by the current output\nfile format. "), - rate) - : wxString::Format( - _("The project sample rate (%d) and bit rate (%d kbps) combination is not\nsupported by the current output file format. "), - rate, bitrate/1024)) - + _("You may resample to one of the rates below.") + ? XO( +"The project sample rate (%d) is not supported by the current output\nfile format. ") + .Format( rate ) + : XO( +"The project sample rate (%d) and bit rate (%d kbps) combination is not\nsupported by the current output file format. ") + .Format( rate, bitrate/1024)) + + XO("You may resample to one of the rates below.") ); } S.EndHorizontalLay(); diff --git a/src/export/ExportFFmpegDialogs.cpp b/src/export/ExportFFmpegDialogs.cpp index 7af63d9b5..f3d614c62 100644 --- a/src/export/ExportFFmpegDialogs.cpp +++ b/src/export/ExportFFmpegDialogs.cpp @@ -1541,7 +1541,7 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S) S.StartMultiColumn(7, wxEXPAND); { S.SetStretchyCol(1); - mPresetCombo = S.Id(FEPresetID).AddCombo(_("Preset:"), gPrefs->Read(wxT("/FileFormats/FFmpegPreset"),wxEmptyString), mPresetNames); + mPresetCombo = S.Id(FEPresetID).AddCombo(XO("Preset:"), gPrefs->Read(wxT("/FileFormats/FFmpegPreset"),wxEmptyString), mPresetNames); mLoadPreset = S.Id(FELoadPresetID).AddButton(XO("Load Preset")); mSavePreset = S.Id(FESavePresetID).AddButton(XO("Save Preset")); mDeletePreset = S.Id(FEDeletePresetID).AddButton(XO("Delete Preset")); @@ -1606,19 +1606,19 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S) mBitrateSpin = S.Id(FEBitrateID) .ToolTip(XO("Bit Rate (bits/second) - influences the resulting file size and quality\nSome codecs may only accept specific values (128k, 192k, 256k etc)\n0 - automatic\nRecommended - 192000")) - .TieSpinCtrl(_("Bit Rate:"), {wxT("/FileFormats/FFmpegBitRate"), 0}, 1000000, 0); + .TieSpinCtrl(XO("Bit Rate:"), {wxT("/FileFormats/FFmpegBitRate"), 0}, 1000000, 0); mQualitySpin = S.Id(FEQualityID) .ToolTip(XO("Overall quality, used differently by different codecs\nRequired for vorbis\n0 - automatic\n-1 - off (use bitrate instead)")) - .TieSpinCtrl(_("Quality:"), {wxT("/FileFormats/FFmpegQuality"), 0}, 500, -1); + .TieSpinCtrl(XO("Quality:"), {wxT("/FileFormats/FFmpegQuality"), 0}, 500, -1); mSampleRateSpin = S.Id(FESampleRateID) .ToolTip(XO("Sample rate (Hz)\n0 - don't change sample rate")) - .TieSpinCtrl(_("Sample Rate:"), {wxT("/FileFormats/FFmpegSampleRate"), 0}, 200000, 0); + .TieSpinCtrl(XO("Sample Rate:"), {wxT("/FileFormats/FFmpegSampleRate"), 0}, 200000, 0); mCutoffSpin = S.Id(FECutoffID) .ToolTip(XO("Audio cutoff bandwidth (Hz)\nOptional\n0 - automatic")) - .TieSpinCtrl(_("Cutoff:"), {wxT("/FileFormats/FFmpegCutOff"), 0}, 10000000, 0); + .TieSpinCtrl(XO("Cutoff:"), {wxT("/FileFormats/FFmpegCutOff"), 0}, 10000000, 0); mProfileChoice = S.Id(FEProfileID) .ToolTip(XO("AAC Profile\nLow Complexity - default\nMost players won't play anything other than LC")) @@ -1634,15 +1634,15 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S) { mCompressionLevelSpin = S .ToolTip(XO("Compression level\nRequired for FLAC\n-1 - automatic\nmin - 0 (fast encoding, large output file)\nmax - 10 (slow encoding, small output file)")) - .Id(FECompLevelID).TieSpinCtrl(_("Compression:"), {wxT("/FileFormats/FFmpegCompLevel"), 0}, 10, -1); + .Id(FECompLevelID).TieSpinCtrl(XO("Compression:"), {wxT("/FileFormats/FFmpegCompLevel"), 0}, 10, -1); mFrameSizeSpin = S.Id(FEFrameSizeID) .ToolTip(XO("Frame size\nOptional\n0 - default\nmin - 16\nmax - 65535")) - .TieSpinCtrl(_("Frame:"), {wxT("/FileFormats/FFmpegFrameSize"), 0}, 65535, 0); + .TieSpinCtrl(XO("Frame:"), {wxT("/FileFormats/FFmpegFrameSize"), 0}, 65535, 0); mLPCCoeffsPrecisionSpin = S.Id(FELPCCoeffsID) .ToolTip(XO("LPC coefficients precision\nOptional\n0 - default\nmin - 1\nmax - 15")) - .TieSpinCtrl(_("LPC"), {wxT("/FileFormats/FFmpegLPCCoefPrec"), 0}, 15, 0); + .TieSpinCtrl(XO("LPC"), {wxT("/FileFormats/FFmpegLPCCoefPrec"), 0}, 15, 0); mPredictionOrderMethodChoice = S.Id(FEPredOrderID) .ToolTip(XO("Prediction Order Method\nEstimate - fastest, lower compression\nLog search - slowest, best compression\nFull search - default")) @@ -1656,19 +1656,19 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S) mMinPredictionOrderSpin = S.Id(FEMinPredID) .ToolTip(XO("Minimal prediction order\nOptional\n-1 - default\nmin - 0\nmax - 32 (with LPC) or 4 (without LPC)")) - .TieSpinCtrl(_("Min. PdO"), {wxT("/FileFormats/FFmpegMinPredOrder"), -1}, 32, -1); + .TieSpinCtrl(XO("Min. PdO"), {wxT("/FileFormats/FFmpegMinPredOrder"), -1}, 32, -1); mMaxPredictionOrderSpin = S.Id(FEMaxPredID) .ToolTip(XO("Maximal prediction order\nOptional\n-1 - default\nmin - 0\nmax - 32 (with LPC) or 4 (without LPC)")) - .TieSpinCtrl(_("Max. PdO"), {wxT("/FileFormats/FFmpegMaxPredOrder"), -1}, 32, -1); + .TieSpinCtrl(XO("Max. PdO"), {wxT("/FileFormats/FFmpegMaxPredOrder"), -1}, 32, -1); mMinPartitionOrderSpin = S.Id(FEMinPartOrderID) .ToolTip(XO("Minimal partition order\nOptional\n-1 - default\nmin - 0\nmax - 8")) - .TieSpinCtrl(_("Min. PtO"), {wxT("/FileFormats/FFmpegMinPartOrder"), -1}, 8, -1); + .TieSpinCtrl(XO("Min. PtO"), {wxT("/FileFormats/FFmpegMinPartOrder"), -1}, 8, -1); mMaxPartitionOrderSpin = S.Id(FEMaxPartOrderID) .ToolTip(XO("Maximal partition order\nOptional\n-1 - default\nmin - 0\nmax - 8")) - .TieSpinCtrl(_("Max. PtO"), {wxT("/FileFormats/FFmpegMaxPartOrder"), -1}, 8, -1); + .TieSpinCtrl(XO("Max. PtO"), {wxT("/FileFormats/FFmpegMaxPartOrder"), -1}, 8, -1); /* i18n-hint: Abbreviates "Linear Predictive Coding", but this text needs to be kept very short */ @@ -1688,13 +1688,13 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S) it has a hard to predict effect on the degree of compression */ mMuxRate = S.Id(FEMuxRateID) .ToolTip(XO("Maximum bit rate of the multiplexed stream\nOptional\n0 - default")) - .TieSpinCtrl(_("Mux Rate:"), {wxT("/FileFormats/FFmpegMuxRate"), 0}, 10000000, 0); + .TieSpinCtrl(XO("Mux Rate:"), {wxT("/FileFormats/FFmpegMuxRate"), 0}, 10000000, 0); /* i18n-hint: 'Packet Size' is a parameter that has some bearing on compression ratio for MPEG compression. It measures how big a chunk of audio is compressed in one piece. */ mPacketSize = S.Id(FEPacketSizeID) .ToolTip(XO("Packet size\nOptional\n0 - default")) - .TieSpinCtrl(_("Packet Size:"), {wxT("/FileFormats/FFmpegPacketSize"), 0}, 10000000, 0); + .TieSpinCtrl(XO("Packet Size:"), {wxT("/FileFormats/FFmpegPacketSize"), 0}, 10000000, 0); } S.EndMultiColumn(); } diff --git a/src/export/ExportMP3.cpp b/src/export/ExportMP3.cpp index 269fef768..cd618527b 100644 --- a/src/export/ExportMP3.cpp +++ b/src/export/ExportMP3.cpp @@ -576,13 +576,13 @@ public: S.StartVerticalLay(true); { S.AddTitle( - wxString::Format(_("Audacity needs the file %s to create MP3s."), - mName)); + XO("Audacity needs the file %s to create MP3s.") + .Format( mName ) ); S.SetBorder(3); S.StartHorizontalLay(wxALIGN_LEFT, true); { - S.AddTitle( wxString::Format(_("Location of %s:"), mName) ); + S.AddTitle( XO("Location of %s:").Format( mName ) ); } S.EndHorizontalLay(); @@ -2017,13 +2017,13 @@ int ExportMP3::AskResample(int bitrate, int rate, int lowrate, int highrate) { S.AddTitle( ((bitrate == 0) - ? wxString::Format( - _("The project sample rate (%d) is not supported by the MP3\nfile format. "), - rate) - : wxString::Format( - _("The project sample rate (%d) and bit rate (%d kbps) combination is not\nsupported by the MP3 file format. "), - rate, bitrate)) - + _("You may resample to one of the rates below.") + ? XO( +"The project sample rate (%d) is not supported by the MP3\nfile format. ") + .Format( rate ) + : XO( +"The project sample rate (%d) and bit rate (%d kbps) combination is not\nsupported by the MP3 file format. ") + .Format( rate, bitrate )) + + XO("You may resample to one of the rates below.") ); } S.EndHorizontalLay(); diff --git a/src/menus/TrackMenus.cpp b/src/menus/TrackMenus.cpp index d0f710854..842ccacd5 100644 --- a/src/menus/TrackMenus.cpp +++ b/src/menus/TrackMenus.cpp @@ -722,7 +722,7 @@ void OnResample(const CommandContext &context) S.StartHorizontalLay(wxCENTER, false); { - cb = S.AddCombo(_("New sample rate (Hz):"), + cb = S.AddCombo(XO("New sample rate (Hz):"), rate, rates); } diff --git a/src/prefs/KeyConfigPrefs.cpp b/src/prefs/KeyConfigPrefs.cpp index b75e60d98..a36eb43f1 100644 --- a/src/prefs/KeyConfigPrefs.cpp +++ b/src/prefs/KeyConfigPrefs.cpp @@ -122,8 +122,8 @@ void KeyConfigPrefs::Populate() { S.StartStatic( {}, true); { - S.AddTitle(_("Keyboard preferences currently unavailable.")); - S.AddTitle(_("Open a new project to modify keyboard shortcuts.")); + S.AddTitle(XO("Keyboard preferences currently unavailable.")); + S.AddTitle(XO("Open a new project to modify keyboard shortcuts.")); } S.EndStatic(); } @@ -173,7 +173,7 @@ void KeyConfigPrefs::PopulateOrExchange(ShuttleGui & S) S.StartHorizontalLay(wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0); { - S.AddTitle(_("View by:")); + S.AddTitle(XO("View by:")); S.StartRadioButtonGroup({ wxT("/Prefs/KeyConfig/ViewBy"), { diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp index e977607e4..8e0001035 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp @@ -504,7 +504,7 @@ void RateMenuTable::OnRateOther(wxCommandEvent &) S.SetBorder(10); S.StartHorizontalLay(wxEXPAND, false); { - cb = S.AddCombo(_("New sample rate (Hz):"), + cb = S.AddCombo(XO("New sample rate (Hz):"), rate, rates); #if defined(__WXMAC__) diff --git a/src/widgets/HelpSystem.cpp b/src/widgets/HelpSystem.cpp index c750f5b89..bbdb57138 100644 --- a/src/widgets/HelpSystem.cpp +++ b/src/widgets/HelpSystem.cpp @@ -105,7 +105,7 @@ void HelpSystem::ShowInfoDialog( wxWindow *parent, S.StartVerticalLay(1); { - S.AddTitle( shortMsg.Translation() ); + S.AddTitle( shortMsg ); S.Style( wxTE_MULTILINE | wxTE_READONLY | wxTE_RICH | wxTE_RICH2 | wxTE_AUTO_URL | wxTE_NOHIDESEL | wxHSCROLL ) .AddTextWindow(message);