ShuttleGui::AddVariableText takes TranslatableString

This commit is contained in:
Paul Licameli 2019-12-22 17:01:20 -05:00
parent 5168d62e3d
commit 707a069712
29 changed files with 255 additions and 199 deletions

View File

@ -68,7 +68,10 @@ void AutoRecoveryDialog::PopulateOrExchange(ShuttleGui& S)
S.SetBorder(5);
S.StartVerticalLay();
{
S.AddVariableText(_("Some projects were not saved properly the last time Audacity was run.\nFortunately, the following projects can be automatically recovered:"), false);
S.AddVariableText(
XO(
"Some projects were not saved properly the last time Audacity was run.\nFortunately, the following projects can be automatically recovered:"),
false);
S.StartStatic(XO("Recoverable projects"));
{
@ -79,7 +82,9 @@ void AutoRecoveryDialog::PopulateOrExchange(ShuttleGui& S)
}
S.EndStatic();
S.AddVariableText(_("After recovery, save the project to save the changes to disk."), false);
S.AddVariableText(
XO("After recovery, save the project to save the changes to disk."),
false);
S.StartHorizontalLay();
{

View File

@ -683,7 +683,8 @@ void MacrosWindow::PopulateOrExchange(ShuttleGui & S)
/* i18n-hint: The Shrink button makes the dialog smaller, with less in it */
mResize = S.Id(ShrinkID).AddButton(XO("Shrin&k"));
// Using variable text just to get the positioning options.
S.Prop(0).AddVariableText( _("Apply Macro to:"), false, wxALL | wxALIGN_CENTRE_VERTICAL );
S.Prop(0).AddVariableText(
XO("Apply Macro to:"), false, wxALL | wxALIGN_CENTRE_VERTICAL );
wxButton* btn = S.Id(ApplyToProjectID)
.Name(XO("Apply macro to project"))
.AddButton(XO("&Project"));

View File

@ -333,17 +333,17 @@ DependencyDialog::DependencyDialog(wxWindow *parent,
PopulateOrExchange(S);
}
static const wxString kStdMsg()
static const TranslatableString kStdMsg()
{
return
_("Copying these files into your project will remove this dependency.\
XO("Copying these files into your project will remove this dependency.\
\nThis is safer, but needs more disk space.");
}
static const wxString kExtraMsgForMissingFiles()
static const TranslatableString kExtraMsgForMissingFiles()
{
return
_("\n\nFiles shown as MISSING have been moved or deleted and cannot be copied.\
XO("\n\nFiles shown as MISSING have been moved or deleted and cannot be copied.\
\nRestore them to their original location to be able to copy into project.");
}
@ -454,10 +454,10 @@ void DependencyDialog::PopulateList()
++i;
}
wxString msg = kStdMsg();
auto msg = kStdMsg();
if (mHasMissingFiles)
msg += kExtraMsgForMissingFiles();
mMessageStaticText->SetLabel(msg);
mMessageStaticText->SetLabel(msg.Translation());
if (mCopyAllFilesButton)
mCopyAllFilesButton->Enable(!mHasMissingFiles);

View File

@ -491,7 +491,8 @@ public:
mPathText = S.AddTextBox( {}, mLibPath.GetFullPath(), 0);
}
S.Id(ID_FFMPEG_BROWSE).AddButton(XO("Browse..."), wxALIGN_RIGHT);
S.AddVariableText(_("To get a free copy of FFmpeg, click here -->"), true);
S.AddVariableText(
XO("To get a free copy of FFmpeg, click here -->"), true);
S.Id(ID_FFMPEG_DLOAD).AddButton(XO("Download"), wxALIGN_RIGHT);
}
S.EndMultiColumn();

View File

@ -446,19 +446,22 @@ void ShuttleGuiBase::AddFixedText(const wxString &Str, bool bCenter, int wrapWid
}
wxStaticText * ShuttleGuiBase::AddVariableText(
const wxString &Str, bool bCenter, int PositionFlags, int wrapWidth )
const TranslatableString &Str,
bool bCenter, int PositionFlags, int wrapWidth )
{
const auto translated = Str.Translation();
UseUpId();
if( mShuttleMode != eIsCreating )
return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxStaticText);
wxStaticText *pStatic;
auto text = pStatic = safenew wxStaticText(GetParent(), miId, Str, wxDefaultPosition, wxDefaultSize,
auto text = pStatic = safenew wxStaticText(GetParent(), miId, translated,
wxDefaultPosition, wxDefaultSize,
GetStyle( wxALIGN_LEFT ));
mpWind = text;
if ( wrapWidth > 0 )
text->Wrap( wrapWidth );
mpWind->SetName(wxStripMenuCodes(Str)); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
mpWind->SetName(wxStripMenuCodes(translated)); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
if( bCenter )
{
miProp=1;

View File

@ -298,7 +298,7 @@ public:
// When PositionFlags is 0, applies wxALL (which affects borders),
// and either wxALIGN_CENTER (if bCenter) or else wxEXPAND
wxStaticText * AddVariableText(
const wxString &Str, bool bCenter = false,
const TranslatableString &Str, bool bCenter = false,
int PositionFlags = 0, int wrapWidth = 0);
wxTextCtrl * AddTextBox(
const TranslatableString &Caption,

View File

@ -202,6 +202,40 @@ bool EffectCompressor::Startup()
return true;
}
namespace {
/* i18n-hint: usually leave this as is as dB doesn't get translated*/
TranslatableString ThresholdFormat( int value )
{ return XO("%3d dB").Format(value); }
TranslatableString AttackTimeFormat( double value )
{ return XO("%.2f secs").Format( value ); }
TranslatableString DecayTimeFormat( double value )
{ return XO("%.1f secs").Format( value ); }
TranslatableString RatioTextFormat( int sliderValue, double value )
{
auto format = (sliderValue % 10 == 0)
/* i18n-hint: Unless your language has a different convention for ratios,
* like 8:1, leave as is.*/
? XO("%.0f:1")
/* i18n-hint: Unless your language has a different convention for ratios,
* like 8:1, leave as is.*/
: XO("%.1f:1");
return format.Format( value );
}
TranslatableString RatioLabelFormat( int sliderValue, double value )
{
auto format = (sliderValue % 10 == 0)
? XO("Ratio %.0f to 1")
: XO("Ratio %.1f to 1");
return format.Format( value );
}
}
void EffectCompressor::PopulateOrExchange(ShuttleGui & S)
{
S.SetBorder(5);
@ -226,8 +260,8 @@ void EffectCompressor::PopulateOrExchange(ShuttleGui & S)
S.StartMultiColumn(3, wxEXPAND);
{
S.SetStretchyCol(1);
mThresholdLabel = S.AddVariableText(_("Threshold:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mThresholdLabel = S.AddVariableText(XO("Threshold:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mThresholdSlider = S.Id(ID_Threshold)
.Name(XO("Threshold"))
.Style(wxSL_HORIZONTAL)
@ -235,11 +269,11 @@ void EffectCompressor::PopulateOrExchange(ShuttleGui & S)
DEF_Threshold * SCL_Threshold,
MAX_Threshold * SCL_Threshold,
MIN_Threshold * SCL_Threshold);
mThresholdText = S.AddVariableText(wxT("XXX dB"), true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mThresholdText = S.AddVariableText(ThresholdFormat(999), true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mNoiseFloorLabel = S.AddVariableText(_("Noise Floor:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mNoiseFloorLabel = S.AddVariableText(XO("Noise Floor:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mNoiseFloorSlider = S.Id(ID_NoiseFloor)
.Name(XO("Noise Floor"))
.Style(wxSL_HORIZONTAL)
@ -247,11 +281,11 @@ void EffectCompressor::PopulateOrExchange(ShuttleGui & S)
DEF_NoiseFloor / SCL_NoiseFloor,
MAX_NoiseFloor / SCL_NoiseFloor,
MIN_NoiseFloor / SCL_NoiseFloor);
mNoiseFloorText = S.AddVariableText(wxT("XXX dB"), true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mNoiseFloorText = S.AddVariableText(ThresholdFormat(999),
true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mRatioLabel = S.AddVariableText(_("Ratio:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mRatioLabel = S.AddVariableText(XO("Ratio:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mRatioSlider = S.Id(ID_Ratio)
.Name(XO("Ratio"))
.Style(wxSL_HORIZONTAL)
@ -260,14 +294,14 @@ void EffectCompressor::PopulateOrExchange(ShuttleGui & S)
MAX_Ratio * SCL_Ratio,
MIN_Ratio * SCL_Ratio);
mRatioSlider->SetPageSize(5);
mRatioText = S.AddVariableText(wxT("XXXX:1"), true,
mRatioText = S.AddVariableText(XO("XXXX:1"), true, //??
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
/* i18n-hint: Particularly in percussion, sounds can be regarded as having
* an 'attack' phase where the sound builds up and a 'decay' where the
* sound dies away. So this means 'onset duration'. */
mAttackLabel = S.AddVariableText(_("Attack Time:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mAttackLabel = S.AddVariableText(XO("Attack Time:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mAttackSlider = S.Id(ID_Attack)
.Name(XO("Attack Time"))
.Style(wxSL_HORIZONTAL)
@ -275,11 +309,12 @@ void EffectCompressor::PopulateOrExchange(ShuttleGui & S)
DEF_AttackTime * SCL_AttackTime,
MAX_AttackTime * SCL_AttackTime,
MIN_AttackTime * SCL_AttackTime);
mAttackText = S.AddVariableText(wxT("XXXX secs"), true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mAttackText = S.AddVariableText(
AttackTimeFormat(9.99),
true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mDecayLabel = S.AddVariableText(_("Release Time:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mDecayLabel = S.AddVariableText(XO("Release Time:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mDecaySlider = S.Id(ID_Decay)
.Name(XO("Release Time"))
.Style(wxSL_HORIZONTAL)
@ -288,8 +323,9 @@ void EffectCompressor::PopulateOrExchange(ShuttleGui & S)
MAX_ReleaseTime * SCL_ReleaseTime,
MIN_ReleaseTime * SCL_ReleaseTime);
mDecayText = S.AddVariableText(wxT("XXXX secs"), true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mDecayText = S.AddVariableText(
DecayTimeFormat(99.9),
true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
}
S.EndMultiColumn();
}
@ -616,34 +652,25 @@ void EffectCompressor::OnSlider(wxCommandEvent & WXUNUSED(evt))
void EffectCompressor::UpdateUI()
{
mThresholdLabel->SetName(wxString::Format(_("Threshold %d dB"), (int) mThresholdDB));
/* i18n-hint: usually leave this as is as dB doesn't get translated*/
mThresholdText->SetLabel(wxString::Format(_("%3d dB"), (int) mThresholdDB));
mThresholdText->SetLabel(ThresholdFormat((int) mThresholdDB).Translation());
mThresholdText->SetName(mThresholdText->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
mNoiseFloorLabel->SetName(wxString::Format(_("Noise Floor %d dB"), (int) mNoiseFloorDB));
mNoiseFloorText->SetLabel(wxString::Format(_("%3d dB"), (int) mNoiseFloorDB));
mNoiseFloorText->SetLabel(ThresholdFormat((int) mNoiseFloorDB).Translation());
mNoiseFloorText->SetName(mNoiseFloorText->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
if (mRatioSlider->GetValue() % 10 == 0) {
mRatioLabel->SetName(wxString::Format(_("Ratio %.0f to 1"), mRatio));
/* i18n-hint: Unless your language has a different convention for ratios,
* like 8:1, leave as is.*/
mRatioText->SetLabel(wxString::Format(_("%.0f:1"), mRatio));
}
else {
mRatioLabel->SetName(wxString::Format(_("Ratio %.1f to 1"), mRatio));
/* i18n-hint: Unless your language has a different convention for ratios,
* like 8:1, leave as is.*/
mRatioText->SetLabel(wxString::Format(_("%.1f:1"), mRatio));
}
mRatioLabel->SetLabel(
RatioLabelFormat(mRatioSlider->GetValue(), mRatio).Translation());
mRatioText->SetLabel(
RatioTextFormat(mRatioSlider->GetValue(), mRatio).Translation());
mRatioText->SetName(mRatioText->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
mAttackLabel->SetName(wxString::Format(_("Attack Time %.2f secs"), mAttackTime));
mAttackText->SetLabel(wxString::Format(_("%.2f secs"), mAttackTime));
mAttackText->SetLabel(AttackTimeFormat(mAttackTime).Translation());
mAttackText->SetName(mAttackText->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
mDecayLabel->SetName(wxString::Format(_("Release Time %.1f secs"), mDecayTime));
mDecayText->SetLabel(wxString::Format(_("%.1f secs"), mDecayTime));
mDecayText->SetLabel(DecayTimeFormat(mDecayTime).Translation());
mDecayText->SetName(mDecayText->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
mPanel->Refresh(false);

View File

@ -388,7 +388,8 @@ void EffectDistortion::PopulateOrExchange(ShuttleGui & S)
S.AddSpace(250,0); S.AddSpace(0,0); S.AddSpace(0,0); S.AddSpace(0,0);
// Upper threshold control
mThresholdTxt = S.AddVariableText(defaultLabel(0), false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mThresholdTxt = S.AddVariableText(defaultLabelUntranslated(0),
false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mThresholdT = S.Id(ID_Threshold)
.Name(defaultLabelUntranslated(0))
.Validator<FloatingPointValidator<double>>(
@ -405,7 +406,8 @@ void EffectDistortion::PopulateOrExchange(ShuttleGui & S)
S.AddSpace(20, 0);
// Noise floor control
mNoiseFloorTxt = S.AddVariableText(defaultLabel(1), false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mNoiseFloorTxt = S.AddVariableText(defaultLabelUntranslated(1),
false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mNoiseFloorT = S.Id(ID_NoiseFloor)
.Name(defaultLabelUntranslated(1))
.Validator<FloatingPointValidator<double>>(
@ -433,7 +435,8 @@ void EffectDistortion::PopulateOrExchange(ShuttleGui & S)
S.AddSpace(250,0); S.AddSpace(0,0); S.AddSpace(0,0); S.AddSpace(0,0);
// Parameter1 control
mParam1Txt = S.AddVariableText(defaultLabel(2), false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mParam1Txt = S.AddVariableText(defaultLabelUntranslated(2),
false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mParam1T = S.Id(ID_Param1)
.Name(defaultLabelUntranslated(2))
.Validator<FloatingPointValidator<double>>(
@ -449,7 +452,8 @@ void EffectDistortion::PopulateOrExchange(ShuttleGui & S)
S.AddSpace(20, 0);
// Parameter2 control
mParam2Txt = S.AddVariableText(defaultLabel(3), false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mParam2Txt = S.AddVariableText(defaultLabelUntranslated(3),
false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mParam2T = S.Id(ID_Param2)
.Name(defaultLabelUntranslated(3))
.Validator<FloatingPointValidator<double>>(
@ -465,7 +469,8 @@ void EffectDistortion::PopulateOrExchange(ShuttleGui & S)
S.AddSpace(20, 0);
// Repeats control
mRepeatsTxt = S.AddVariableText(defaultLabel(4), false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mRepeatsTxt = S.AddVariableText(defaultLabelUntranslated(4),
false, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mRepeatsT = S.Id(ID_Repeats)
.Name(defaultLabelUntranslated(4))
.Validator<IntegerValidator<int>>(

View File

@ -366,13 +366,18 @@ void EffectDtmf::PopulateOrExchange(ShuttleGui & S)
S.StartMultiColumn(2, wxCENTER);
{
S.AddFixedText(_("Duty cycle:"), false);
mDtmfDutyT = S.AddVariableText(wxString::Format(wxT("%.1f %%"), dtmfDutyCycle), false);
mDtmfDutyT =
S.AddVariableText(XO("%.1f %%").Format( dtmfDutyCycle ), false);
S.AddFixedText(_("Tone duration:"), false);
mDtmfSilenceT = S.AddVariableText(wxString::Format(wxString(wxT("%.0f ")) + _("ms"), dtmfTone * 1000.0), false);
mDtmfSilenceT =
/* i18n-hint milliseconds */
S.AddVariableText(XO("%.0f ms").Format( dtmfTone * 1000.0 ), false);
S.AddFixedText(_("Silence duration:"), false);
mDtmfToneT = S.AddVariableText(wxString::Format(wxString(wxT("%0.f ")) + _("ms"), dtmfSilence * 1000.0), false);
mDtmfToneT =
/* i18n-hint milliseconds */
S.AddVariableText(XO("%0.f ms").Format( dtmfSilence * 1000.0 ), false);
}
S.EndMultiColumn();
}

View File

@ -800,7 +800,7 @@ void EffectEqualization::PopulateOrExchange(ShuttleGui & S)
S.SetBorder(5);
S.StartVerticalLay();
{
S.AddVariableText(_("+ dB"), false, wxCENTER);
S.AddVariableText(XO("+ dB"), false, wxCENTER);
mdBMaxSlider = S.Id(ID_dBMax)
.Name(XO("Max dB"))
.Style(wxSL_VERTICAL | wxSL_INVERSE)
@ -813,7 +813,7 @@ void EffectEqualization::PopulateOrExchange(ShuttleGui & S)
.Name(XO("Min dB"))
.Style(wxSL_VERTICAL | wxSL_INVERSE)
.AddSlider( {}, -30, -10, -120);
S.AddVariableText(_("- dB"), false, wxCENTER);
S.AddVariableText(XO("- dB"), false, wxCENTER);
#if wxUSE_ACCESSIBILITY
mdBMinSlider->SetAccessible(safenew SliderAx(mdBMinSlider, _("%d dB")));
#endif
@ -995,7 +995,7 @@ void EffectEqualization::PopulateOrExchange(ShuttleGui & S)
mMText = S.Name( Verbatim( label ) )
// fix for bug 577 (NVDA/Narrator screen readers do not
// read static text in dialogs)
.AddVariableText(label);
.AddVariableText( Verbatim( label ) );
}
S.EndHorizontalLay();
}

View File

@ -283,8 +283,8 @@ void EffectLoudness::PopulateOrExchange(ShuttleGui & S)
{
S.StartHorizontalLay(wxALIGN_LEFT, false);
{
S.AddVariableText(_("Normalize"), false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
S.AddVariableText(XO("Normalize"), false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
S
.Validator<wxGenericValidator>( &mNormalizeTo )
@ -292,8 +292,8 @@ void EffectLoudness::PopulateOrExchange(ShuttleGui & S)
Msgids(kNormalizeTargetStrings, nAlgos),
mNormalizeTo
);
S.AddVariableText(_("to"), false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
S.AddVariableText(XO("to"), false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mLevelTextCtrl = S
/* i18n-hint: LUFS is a particular method for measuring loudnesss */
@ -305,10 +305,10 @@ void EffectLoudness::PopulateOrExchange(ShuttleGui & S)
)
.AddTextBox( {}, wxT(""), 10);
/* i18n-hint: LUFS is a particular method for measuring loudnesss */
mLeveldB = S.AddVariableText(_("LUFS"), false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mLeveldB = S.AddVariableText(XO("LUFS"), false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mWarning = S.AddVariableText( {}, false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
}
S.EndHorizontalLay();

View File

@ -1707,8 +1707,8 @@ void EffectNoiseReduction::Dialog::PopulateOrExchange(ShuttleGui & S)
{
S.StartStatic(XO("Step 1"));
{
S.AddVariableText(_(
"Select a few seconds of just noise so Audacity knows what to filter out,\nthen click Get Noise Profile:"));
S.AddVariableText(XO(
"Select a few seconds of just noise so Audacity knows what to filter out,\nthen click Get Noise Profile:"));
//m_pButton_GetProfile =
S.Id(ID_BUTTON_GETPROFILE).AddButton(XO("&Get Noise Profile"));
}
@ -1716,8 +1716,8 @@ void EffectNoiseReduction::Dialog::PopulateOrExchange(ShuttleGui & S)
S.StartStatic(XO("Step 2"));
{
S.AddVariableText(_(
"Select all of the audio you want filtered, choose how much noise you want\nfiltered out, and then click 'OK' to reduce noise.\n"));
S.AddVariableText(XO(
"Select all of the audio you want filtered, choose how much noise you want\nfiltered out, and then click 'OK' to reduce noise.\n"));
S.StartMultiColumn(3, wxEXPAND);
S.SetStretchyCol(2);

View File

@ -705,14 +705,16 @@ void NoiseRemovalDialog::PopulateOrExchange(ShuttleGui & S)
{
S.StartStatic(XO("Step 1"));
{
S.AddVariableText(_("Select a few seconds of just noise so Audacity knows what to filter out,\nthen click Get Noise Profile:"));
S.AddVariableText(XO(
"Select a few seconds of just noise so Audacity knows what to filter out,\nthen click Get Noise Profile:"));
m_pButton_GetProfile = S.Id(ID_BUTTON_GETPROFILE).AddButton(XO("&Get Noise Profile"));
}
S.EndStatic();
S.StartStatic(XO("Step 2"));
{
S.AddVariableText(_("Select all of the audio you want filtered, choose how much noise you want\nfiltered out, and then click 'OK' to remove noise.\n"));
S.AddVariableText(XO(
"Select all of the audio you want filtered, choose how much noise you want\nfiltered out, and then click 'OK' to remove noise.\n"));
S.StartMultiColumn(3, wxEXPAND);
S.SetStretchyCol(2);

View File

@ -313,10 +313,10 @@ void EffectNormalize::PopulateOrExchange(ShuttleGui & S)
MAX_PeakLevel
)
.AddTextBox( {}, wxT(""), 10);
mLeveldB = S.AddVariableText(_("dB"), false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mLeveldB = S.AddVariableText(XO("dB"), false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
mWarning = S.AddVariableText( {}, false,
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT);
}
S.EndHorizontalLay();

View File

@ -182,8 +182,9 @@ void EffectRepeat::PopulateOrExchange(ShuttleGui & S)
S.StartMultiColumn(1, wxCENTER);
{
mCurrentTime = S.AddVariableText(_("Current selection length: dd:hh:mm:ss"));
mTotalTime = S.AddVariableText(_("New selection length: dd:hh:mm:ss"));
mCurrentTime = S.AddVariableText(
XO("Current selection length: dd:hh:mm:ss"));
mTotalTime = S.AddVariableText(XO("New selection length: dd:hh:mm:ss"));
}
S.EndMultiColumn();
}

View File

@ -407,7 +407,7 @@ void EffectScienFilter::PopulateOrExchange(ShuttleGui & S)
S.StartVerticalLay();
{
S.AddVariableText(_("+ dB"), false, wxCENTER);
S.AddVariableText(XO("+ dB"), false, wxCENTER);
mdBMaxSlider = S.Id(ID_dBMax)
.Name(XO("Max dB"))
.Style(wxSL_VERTICAL | wxSL_INVERSE)
@ -423,7 +423,7 @@ void EffectScienFilter::PopulateOrExchange(ShuttleGui & S)
mdBMinSlider->SetAccessible(safenew SliderAx(mdBMinSlider, _("%d dB")));
#endif
S.AddVariableText(_("- dB"), false, wxCENTER);
S.AddVariableText(XO("- dB"), false, wxCENTER);
}
S.EndVerticalLay();
@ -483,14 +483,16 @@ void EffectScienFilter::PopulateOrExchange(ShuttleGui & S)
);
S.AddSpace(1, 1);
mRippleCtlP = S.AddVariableText(_("&Passband Ripple:"), false, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mRippleCtlP = S.AddVariableText( XO("&Passband Ripple:"),
false, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mRippleCtl = S.Id(ID_Ripple)
.Name(XO("Passband Ripple (dB)"))
.Validator<FloatingPointValidator<float>>(
1, &mRipple, NumValidatorStyle::DEFAULT,
MIN_Passband, MAX_Passband)
.AddTextBox( {}, wxT(""), 10);
mRippleCtlU = S.AddVariableText(_("dB"), false, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mRippleCtlU = S.AddVariableText(XO("dB"),
false, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mFilterSubTypeCtl = S.Id(ID_SubType)
.Validator<wxGenericValidator>(&mFilterSubtype)
@ -507,14 +509,18 @@ void EffectScienFilter::PopulateOrExchange(ShuttleGui & S)
.AddTextBox(XO("C&utoff:"), wxT(""), 10);
S.AddUnits(_("Hz"));
mStopbandRippleCtlP = S.AddVariableText(_("Minimum S&topband Attenuation:"), false, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mStopbandRippleCtlP =
S.AddVariableText(XO("Minimum S&topband Attenuation:"),
false, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mStopbandRippleCtl = S.Id(ID_StopbandRipple)
.Name(XO("Minimum S&topband Attenuation (dB)"))
.Validator<FloatingPointValidator<float>>(
1, &mStopbandRipple, NumValidatorStyle::DEFAULT,
MIN_Stopband, MAX_Stopband)
.AddTextBox( {}, wxT(""), 10);
mStopbandRippleCtlU = S.AddVariableText(_("dB"), false, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mStopbandRippleCtlU =
S.AddVariableText(XO("dB"),
false, wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
}
S.EndMultiColumn();
S.AddSpace(1, 1);

View File

@ -96,26 +96,26 @@ ScoreAlignDialog::ScoreAlignDialog(ScoreAlignParams &params)
S.StartMultiColumn(3, wxEXPAND | wxALIGN_CENTER_VERTICAL);
S.SetStretchyCol(1);
mFramePeriodLabel = S.AddVariableText(_("Frame Period:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mFramePeriodLabel = S.AddVariableText(
XO("Frame Period:"), true, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mFramePeriodSlider = S.Id(ID_FRAMEPERIOD)
.Name(XO("Frame Period"))
.Style(wxSL_HORIZONTAL)
.MinSize( { 300, -1 } )
.AddSlider(wxT(""),
/*pos*/ (int) (p.mFramePeriod * 100 + 0.5), /*max*/ 50, /*min*/ 5);
mFramePeriodText = S.AddVariableText(SA_DFT_FRAME_PERIOD_TEXT, true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mFramePeriodText = S.AddVariableText(
SA_DFT_FRAME_PERIOD_TEXT, true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mWindowSizeLabel = S.AddVariableText(_("Window Size:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mWindowSizeLabel = S.AddVariableText(
XO("Window Size:"), true, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mWindowSizeSlider = S.Id(ID_WINDOWSIZE)
.Name(XO("Window Size"))
.Style(wxSL_HORIZONTAL)
.AddSlider(wxT(""),
/*pos*/ (int) (p.mWindowSize * 100 + 0.5), /*max*/ 100, /*min*/ 5);
mWindowSizeText = S.AddVariableText(SA_DFT_WINDOW_SIZE_TEXT, true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mWindowSizeText = S.AddVariableText(
SA_DFT_WINDOW_SIZE_TEXT, true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mForceFinalAlignmentCheckBox = S.Id(ID_FORCEFINALALIGNMENT)
.Name(XO("Force Final Alignment"))
@ -128,59 +128,60 @@ ScoreAlignDialog::ScoreAlignDialog(ScoreAlignParams &params)
wxT("Ignore Silence at Beginnings and Endings"),
p.mIgnoreSilence );
// need a third column after checkboxes:
S.AddVariableText(wxT(""), true, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
S.AddVariableText({}, true, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mSilenceThresholdLabel = S.AddVariableText(_("Silence Threshold:"),
true, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mSilenceThresholdLabel = S.AddVariableText(XO("Silence Threshold:"),
true, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mSilenceThresholdSlider = S.Id(ID_SILENCETHRESHOLD)
.Name(XO("Silence Threshold"))
.Style(wxSL_HORIZONTAL)
.AddSlider(wxT(""),
/*pos*/ (int) (p.mSilenceThreshold * 1000 + 0.5), /*max*/ 500);
mSilenceThresholdText = S.AddVariableText(SA_DFT_SILENCE_THRESHOLD_TEXT,
true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mSilenceThresholdText = S.AddVariableText(
SA_DFT_SILENCE_THRESHOLD_TEXT,
true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
/* i18n-hint: The English would be clearer if it had 'Duration' rather than 'Time'
This is a NEW experimental effect, and until we have it documented in the user
manual we don't have a clear description of what this parameter does.
It is OK to leave it in English. */
mPresmoothLabel = S.AddVariableText(_("Presmooth Time:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mPresmoothLabel = S.AddVariableText(
XO("Presmooth Time:"), true, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mPresmoothSlider = S.Id(ID_PRESMOOTH)
.Name(XO("Presmooth Time"))
.Style(wxSL_HORIZONTAL)
.AddSlider(wxT(""),
/*pos*/ (int) (p.mPresmoothTime * 100 + 0.5), /*max*/ 500);
mPresmoothText = S.AddVariableText(SA_DFT_PRESMOOTH_TIME_TEXT, true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mPresmoothText = S.AddVariableText(
SA_DFT_PRESMOOTH_TIME_TEXT, true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
/* i18n-hint: The English would be clearer if it had 'Duration' rather than 'Time'
This is a NEW experimental effect, and until we have it documented in the user
manual we don't have a clear description of what this parameter does.
It is OK to leave it in English. */
mLineTimeLabel = S.AddVariableText(_("Line Time:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mLineTimeLabel = S.AddVariableText(XO("Line Time:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mLineTimeSlider = S.Id(ID_LINETIME)
.Name(XO("Line Time"))
.Style(wxSL_HORIZONTAL)
.AddSlider(wxT(""),
/*pos*/ (int) (p.mLineTime * 100 + 0.5), /*max*/ 500);
mLineTimeText = S.AddVariableText(SA_DFT_LINE_TIME_TEXT, true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mLineTimeText = S.AddVariableText(
SA_DFT_LINE_TIME_TEXT, true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
/* i18n-hint: The English would be clearer if it had 'Duration' rather than 'Time'
This is a NEW experimental effect, and until we have it documented in the user
manual we don't have a clear description of what this parameter does.
It is OK to leave it in English. */
mSmoothTimeLabel = S.AddVariableText(_("Smooth Time:"), true,
wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mSmoothTimeLabel = S.AddVariableText(
XO("Smooth Time:"), true, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
mSmoothTimeSlider = S.Id(ID_SMOOTHTIME)
.Name(XO("Smooth Time"))
.Style(wxSL_HORIZONTAL)
.AddSlider(wxT(""),
/*pos*/ (int) (p.mSmoothTime * 100 + 0.5), /*max*/ 500);
mSmoothTimeText = S.AddVariableText(SA_DFT_SMOOTH_TIME_TEXT, true,
wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
mSmoothTimeText = S.AddVariableText(
SA_DFT_SMOOTH_TIME_TEXT, true, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
S.EndMultiColumn();
S.EndStatic();

View File

@ -811,12 +811,12 @@ void VSTEffectOptionsDialog::PopulateOrExchange(ShuttleGui & S)
{
S.StartStatic(XO("Buffer Size"));
{
S.AddVariableText(wxString() +
_("The buffer size controls the number of samples sent to the effect ") +
_("on each iteration. Smaller values will cause slower processing and ") +
_("some effects require 8192 samples or less to work properly. However ") +
_("most effects can accept large buffers and using them will greatly ") +
_("reduce processing time."),
S.AddVariableText( XO(
"The buffer size controls the number of samples sent to the effect "
"on each iteration. Smaller values will cause slower processing and "
"some effects require 8192 samples or less to work properly. However "
"most effects can accept large buffers and using them will greatly "
"reduce processing time."),
false, 0, 650);
S.StartHorizontalLay(wxALIGN_LEFT);
@ -835,12 +835,12 @@ void VSTEffectOptionsDialog::PopulateOrExchange(ShuttleGui & S)
S.StartStatic(XO("Latency Compensation"));
{
S.AddVariableText(wxString() +
_("As part of their processing, some VST effects must delay returning ") +
_("audio to Audacity. When not compensating for this delay, you will ") +
_("notice that small silences have been inserted into the audio. ") +
_("Enabling this option will provide that compensation, but it may ") +
_("not work for all VST effects."),
S.AddVariableText( XO(
"As part of their processing, some VST effects must delay returning "
"audio to Audacity. When not compensating for this delay, you will "
"notice that small silences have been inserted into the audio. "
"Enabling this option will provide that compensation, but it may "
"not work for all VST effects."),
false, 0, 650);
S.StartHorizontalLay(wxALIGN_LEFT);
@ -854,10 +854,10 @@ void VSTEffectOptionsDialog::PopulateOrExchange(ShuttleGui & S)
S.StartStatic(XO("Graphical Mode"));
{
S.AddVariableText(wxString() +
_("Most VST effects have a graphical interface for setting parameter values.") +
_(" A basic text-only method is also available. ") +
_(" Reopen the effect for this to take effect."),
S.AddVariableText( XO(
"Most VST effects have a graphical interface for setting parameter values."
" A basic text-only method is also available. "
" Reopen the effect for this to take effect."),
false, 0, 650);
S.TieCheckBox(_("Enable &graphical interface"),
mUseGUI);

View File

@ -381,12 +381,12 @@ void AudioUnitEffectOptionsDialog::PopulateOrExchange(ShuttleGui & S)
{
S.StartStatic(XO("Latency Compensation"));
{
S.AddVariableText(wxString() +
_("As part of their processing, some Audio Unit effects must delay returning ") +
_("audio to Audacity. When not compensating for this delay, you will ") +
_("notice that small silences have been inserted into the audio. ") +
_("Enabling this option will provide that compensation, but it may ") +
_("not work for all Audio Unit effects."),
S.AddVariableText( XO(
"As part of their processing, some Audio Unit effects must delay returning "
"audio to Audacity. When not compensating for this delay, you will "
"notice that small silences have been inserted into the audio. "
"Enabling this option will provide that compensation, but it may "
"not work for all Audio Unit effects."),
false, 0, 650 );
S.StartHorizontalLay(wxALIGN_LEFT);
@ -400,11 +400,11 @@ void AudioUnitEffectOptionsDialog::PopulateOrExchange(ShuttleGui & S)
S.StartStatic(XO("User Interface"));
{
S.AddVariableText(wxString() +
_("Select \"Full\" to use the graphical interface if supplied by the Audio Unit.") +
_(" Select \"Generic\" to use the system supplied generic interface.") +
_(" Select \"Basic\" for a basic text-only interface.") +
_(" Reopen the effect for this to take effect."),
S.AddVariableText( XO(
"Select \"Full\" to use the graphical interface if supplied by the Audio Unit."
" Select \"Generic\" to use the system supplied generic interface."
" Select \"Basic\" for a basic text-only interface."
" Reopen the effect for this to take effect."),
false, 0, 650);
S.StartHorizontalLay(wxALIGN_LEFT);

View File

@ -451,12 +451,12 @@ void LadspaEffectOptionsDialog::PopulateOrExchange(ShuttleGui & S)
{
S.StartStatic(XO("Latency Compensation"));
{
S.AddVariableText(wxString() +
_("As part of their processing, some LADSPA effects must delay returning ") +
_("audio to Audacity. When not compensating for this delay, you will ") +
_("notice that small silences have been inserted into the audio. ") +
_("Enabling this option will provide that compensation, but it may ") +
_("not work for all LADSPA effects."),
S.AddVariableText( XO(
"As part of their processing, some LADSPA effects must delay returning "
"audio to Audacity. When not compensating for this delay, you will "
"notice that small silences have been inserted into the audio. "
"Enabling this option will provide that compensation, but it may "
"not work for all LADSPA effects."),
false, 0, 650);
S.StartHorizontalLay(wxALIGN_LEFT);

View File

@ -248,12 +248,12 @@ void LV2EffectSettingsDialog::PopulateOrExchange(ShuttleGui &S)
IntegerValidator<int> vld(&mBufferSize);
vld.SetRange(8, DEFAULT_BLOCKSIZE);
S.AddVariableText(wxString() +
_("The buffer size controls the number of samples sent to the effect ") +
_("on each iteration. Smaller values will cause slower processing and ") +
_("some effects require 8192 samples or less to work properly. However ") +
_("most effects can accept large buffers and using them will greatly ") +
_("reduce processing time."),
S.AddVariableText( XO(
"The buffer size controls the number of samples sent to the effect "
"on each iteration. Smaller values will cause slower processing and "
"some effects require 8192 samples or less to work properly. However "
"most effects can accept large buffers and using them will greatly "
"reduce processing time."),
false, 0, 650);
S.StartHorizontalLay(wxALIGN_LEFT);
@ -273,12 +273,12 @@ void LV2EffectSettingsDialog::PopulateOrExchange(ShuttleGui &S)
S.StartStatic(XO("Latency Compensation"));
{
S.AddVariableText(wxString() +
_("As part of their processing, some LV2 effects must delay returning ") +
_("audio to Audacity. When not compensating for this delay, you will ") +
_("notice that small silences have been inserted into the audio. ") +
_("Enabling this setting will provide that compensation, but it may ") +
_("not work for all LV2 effects."),
S.AddVariableText( XO(
"As part of their processing, some LV2 effects must delay returning "
"audio to Audacity. When not compensating for this delay, you will "
"notice that small silences have been inserted into the audio. "
"Enabling this setting will provide that compensation, but it may "
"not work for all LV2 effects."),
false, 0, 650);
S.StartHorizontalLay(wxALIGN_LEFT);
@ -292,10 +292,10 @@ void LV2EffectSettingsDialog::PopulateOrExchange(ShuttleGui &S)
S.StartStatic(XO("Graphical Mode"));
{
S.AddVariableText(wxString() +
_("LV2 effects can have a graphical interface for setting parameter values.") +
_(" A basic text-only method is also available. ") +
_(" Reopen the effect for this to take effect."),
S.AddVariableText( XO(
"LV2 effects can have a graphical interface for setting parameter values."
" A basic text-only method is also available. "
" Reopen the effect for this to take effect."),
false, 0, 650);
S.TieCheckBox(_("Enable &graphical interface"),
mUseGUI);

View File

@ -2607,7 +2607,7 @@ void NyquistEffect::BuildPromptWindow(ShuttleGui & S)
{
S.SetStretchyCol(1);
S.AddVariableText(_("Enter Nyquist Command: "));
S.AddVariableText(XO("Enter Nyquist Command: "));
S.AddSpace(1, 1);

View File

@ -1429,7 +1429,7 @@ ExportMixerDialog::ExportMixerDialog( const TrackList *tracks, bool selectedOnly
S.StartHorizontalLay(wxALIGN_CENTRE | wxALL, 0);
{
mChannelsText = S.AddVariableText(
label.Translation(),
label,
false, wxALIGN_LEFT | wxALL );
S

View File

@ -1560,7 +1560,9 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S)
mCodecName = S.Id(FECodecNameID).AddVariableText( {} );
}
S.EndMultiColumn();
S.AddVariableText(_("Not all formats and codecs are compatible. Nor are all option combinations compatible with all codecs."), false);
S.AddVariableText(XO(
"Not all formats and codecs are compatible. Nor are all option combinations compatible with all codecs."),
false);
S.StartMultiColumn(2, wxEXPAND);
{
S.StartMultiColumn(2, wxEXPAND);
@ -1587,11 +1589,11 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S)
.TieTextBox(XO("Language:"), {wxT("/FileFormats/FFmpegLanguage"), wxEmptyString}, 9);
S.AddSpace( 20,0 );
S.AddVariableText(_("Bit Reservoir"));
S.AddVariableText(XO("Bit Reservoir"));
S.Id(FEBitReservoirID).TieCheckBox( {}, {wxT("/FileFormats/FFmpegBitReservoir"), true});
S.AddSpace( 20,0 );
S.AddVariableText(_("VBL"));
S.AddVariableText(XO("VBL"));
S.Id(FEVariableBlockLenID).TieCheckBox( {}, {wxT("/FileFormats/FFmpegVariableBlockLen"), true});
}
S.EndMultiColumn();
@ -1670,7 +1672,7 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S)
/* i18n-hint: Abbreviates "Linear Predictive Coding",
but this text needs to be kept very short */
S.AddVariableText(_("Use LPC"));
S.AddVariableText(XO("Use LPC"));
// PRL: This preference is not used anywhere!
S.Id(FEUseLPCID).TieCheckBox( {}, {wxT("/FileFormats/FFmpegUseLPC"), true});
}

View File

@ -599,7 +599,8 @@ public:
}
S.Id(ID_BROWSE).AddButton(XO("Browse..."), wxALIGN_RIGHT);
/* i18n-hint: There is a button to the right of the arrow.*/
S.AddVariableText(_("To get a free copy of LAME, click here -->"), true);
S.AddVariableText(
XO("To get a free copy of LAME, click here -->"), true);
/* i18n-hint: (verb)*/
S.Id(ID_DLOAD).AddButton(XO("Download"), wxALIGN_RIGHT);
}

View File

@ -346,7 +346,7 @@ void ExportMultipleDialog::PopulateOrExchange(ShuttleGui& S)
S.SetStretchyCol(1);
{
// Row 3 (indented)
S.AddVariableText(wxT(" "), false);
S.AddVariableText(Verbatim(" "), false);
mFirst = S.Id(FirstID)
.AddCheckBox(_("Include audio before first label"), false);
@ -355,7 +355,8 @@ void ExportMultipleDialog::PopulateOrExchange(ShuttleGui& S)
S.StartMultiColumn(2, wxEXPAND);
S.SetStretchyCol(1);
{
mFirstFileLabel = S.AddVariableText(_("First file name:"), false);
mFirstFileLabel =
S.AddVariableText(XO("First file name:"), false);
mFirstFileName = S.Id(FirstFileNameID)
.Prop(1)
.Name(XO("First file name"))
@ -397,8 +398,8 @@ void ExportMultipleDialog::PopulateOrExchange(ShuttleGui& S)
S.SetStretchyCol(2);
{
// Row 3 (indented)
S.AddVariableText(wxT(" "), false);
mPrefixLabel = S.AddVariableText(_("File name prefix:"), false);
S.AddVariableText(Verbatim(" "), false);
mPrefixLabel = S.AddVariableText(XO("File name prefix:"), false);
mPrefix = S.Id(PrefixID)
.Name(XO("File name prefix"))
.TieTextBox( {},

View File

@ -137,7 +137,8 @@ void DirectoriesPrefs::PopulateOrExchange(ShuttleGui & S)
}
S.EndTwoColumn();
S.AddVariableText(_("If the available system memory falls below this value, audio will no longer\nbe cached in memory and will be written to disk."),
S.AddVariableText(XO(
"If the available system memory falls below this value, audio will no longer\nbe cached in memory and will be written to disk."),
false, 0, 600);
}
S.EndStatic();

View File

@ -212,7 +212,7 @@ void KeyConfigPrefs::PopulateOrExchange(ShuttleGui & S)
S.StartHorizontalLay(wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 0);
{
mFilterLabel = S.AddVariableText(_("Searc&h:"));
mFilterLabel = S.AddVariableText(XO("Searc&h:"));
if (!mFilter) {
mFilter = safenew wxTextCtrl(S.GetParent(),

View File

@ -101,27 +101,24 @@ void LibraryPrefs::PopulateOrExchange(ShuttleGui & S)
{
S.StartTwoColumn();
{
S.AddVariableText(_("MP3 Library Version:"),
true,
wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
mMP3Version = S.AddVariableText(wxT("9.99"),
true,
wxALL | wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
S.AddVariableText(XO("MP3 Library Version:"),
true, wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
// Change this text later:
mMP3Version = S.AddVariableText(Verbatim("9.99"),
true, wxALL | wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
// Old buttons, not needed now that the lib is built-in.
#ifndef MP3_EXPORT_BUILT_IN
S.AddVariableText(_("LAME MP3 Library:"),
true,
wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.AddVariableText(XO("LAME MP3 Library:"),
true, wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.Id(ID_MP3_FIND_BUTTON)
#ifdef DISABLE_DYNAMIC_LOADING_LAME
.Disable()
#endif
.AddButton(XO("&Locate..."),
wxALL | wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
S.AddVariableText(_("LAME MP3 Library:"),
true,
wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.AddVariableText(XO("LAME MP3 Library:"),
true, wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.Id(ID_MP3_DOWN_BUTTON)
#ifdef DISABLE_DYNAMIC_LOADING_LAME
.Disable()
@ -139,21 +136,19 @@ void LibraryPrefs::PopulateOrExchange(ShuttleGui & S)
{
S.StartTwoColumn();
{
S.AddVariableText(_("FFmpeg Library Version:"),
true,
wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.AddVariableText(XO("FFmpeg Library Version:"),
true, wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
#if defined(USE_FFMPEG)
mFFmpegVersion = S.AddVariableText(_("No compatible FFmpeg library was found"),
true,
wxALL | wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
mFFmpegVersion = S.AddVariableText(
XO("No compatible FFmpeg library was found"),
true, wxALL | wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
#else
mFFmpegVersion = S.AddVariableText(wxT("FFmpeg support is not compiled in"),
true,
wxALL | wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
mFFmpegVersion = S.AddVariableText(
XO("FFmpeg support is not compiled in"),
true, wxALL | wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
#endif
S.AddVariableText(_("FFmpeg Library:"),
true,
wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.AddVariableText(XO("FFmpeg Library:"),
true, wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.Id(ID_FFMPEG_FIND_BUTTON);
S
#if !defined(USE_FFMPEG) || defined(DISABLE_DYNAMIC_LOADING_FFMPEG)
@ -161,9 +156,8 @@ void LibraryPrefs::PopulateOrExchange(ShuttleGui & S)
#endif
.AddButton(XO("Loca&te..."),
wxALL | wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL);
S.AddVariableText(_("FFmpeg Library:"),
true,
wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.AddVariableText(XO("FFmpeg Library:"),
true, wxALL | wxALIGN_RIGHT | wxALIGN_CENTRE_VERTICAL);
S.Id(ID_FFMPEG_DOWN_BUTTON);
S
#if !defined(USE_FFMPEG) || defined(DISABLE_DYNAMIC_LOADING_FFMPEG)