mirror of
https://github.com/cookiengineer/audacity
synced 2025-07-15 16:17:41 +02:00
TranslatableString for titles, and spin control and combo prompts
This commit is contained in:
parent
707a069712
commit
acd1158e1b
@ -469,14 +469,15 @@ public:
|
|||||||
S.SetBorder(10);
|
S.SetBorder(10);
|
||||||
S.StartVerticalLay(true);
|
S.StartVerticalLay(true);
|
||||||
{
|
{
|
||||||
S.AddTitle( wxString::Format(
|
S.AddTitle(
|
||||||
_("Audacity needs the file '%s' to import and export audio via FFmpeg."),
|
XO(
|
||||||
mName));
|
"Audacity needs the file '%s' to import and export audio via FFmpeg.")
|
||||||
|
.Format( mName ) );
|
||||||
|
|
||||||
S.SetBorder(3);
|
S.SetBorder(3);
|
||||||
S.StartHorizontalLay(wxALIGN_LEFT, true);
|
S.StartHorizontalLay(wxALIGN_LEFT, true);
|
||||||
{
|
{
|
||||||
S.AddTitle( wxString::Format(_("Location of '%s':"), mName) );
|
S.AddTitle( XO("Location of '%s':").Format( mName ) );
|
||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
|
|
||||||
|
@ -266,18 +266,19 @@ void ShuttleGuiBase::AddUnits(const wxString &Prompt, int wrapWidth)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Centred text string.
|
/// Centred text string.
|
||||||
void ShuttleGuiBase::AddTitle(const wxString &Prompt, int wrapWidth)
|
void ShuttleGuiBase::AddTitle(const TranslatableString &Prompt, int wrapWidth)
|
||||||
{
|
{
|
||||||
if( Prompt.empty() )
|
if( Prompt.empty() )
|
||||||
return;
|
return;
|
||||||
if( mShuttleMode != eIsCreating )
|
if( mShuttleMode != eIsCreating )
|
||||||
return;
|
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 ));
|
GetStyle( wxALIGN_CENTRE ));
|
||||||
mpWind = text;
|
mpWind = text;
|
||||||
if (wrapWidth > 0)
|
if (wrapWidth > 0)
|
||||||
text->Wrap(wrapWidth);
|
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();
|
UpdateSizers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,10 +479,13 @@ wxStaticText * ShuttleGuiBase::AddVariableText(
|
|||||||
return pStatic;
|
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 );
|
const auto translated = Prompt.Translation();
|
||||||
AddPrompt( Prompt );
|
HandleOptionality( translated );
|
||||||
|
AddPrompt( translated );
|
||||||
UseUpId();
|
UseUpId();
|
||||||
if( mShuttleMode != eIsCreating )
|
if( mShuttleMode != eIsCreating )
|
||||||
return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxComboBox);
|
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,
|
mpWind = pCombo = safenew wxComboBox(GetParent(), miId, Selected, wxDefaultPosition, wxDefaultSize,
|
||||||
n, Choices, GetStyle( 0 ));
|
n, Choices, GetStyle( 0 ));
|
||||||
mpWind->SetName(wxStripMenuCodes(Prompt));
|
mpWind->SetName(wxStripMenuCodes(translated));
|
||||||
|
|
||||||
UpdateSizers();
|
UpdateSizers();
|
||||||
return pCombo;
|
return pCombo;
|
||||||
@ -569,10 +573,12 @@ wxSlider * ShuttleGuiBase::AddSlider(const wxString &Prompt, int pos, int Max, i
|
|||||||
return pSlider;
|
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 );
|
const auto translated = Prompt.Translation();
|
||||||
AddPrompt( Prompt );
|
HandleOptionality( translated );
|
||||||
|
AddPrompt( translated );
|
||||||
UseUpId();
|
UseUpId();
|
||||||
if( mShuttleMode != eIsCreating )
|
if( mShuttleMode != eIsCreating )
|
||||||
return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), wxSpinCtrl);
|
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 ),
|
GetStyle( wxSP_VERTICAL | wxSP_ARROW_KEYS ),
|
||||||
Min, Max, Value
|
Min, Max, Value
|
||||||
);
|
);
|
||||||
mpWind->SetName(wxStripMenuCodes(Prompt));
|
mpWind->SetName(wxStripMenuCodes(translated));
|
||||||
miProp=1;
|
miProp=1;
|
||||||
UpdateSizers();
|
UpdateSizers();
|
||||||
return pSpinCtrl;
|
return pSpinCtrl;
|
||||||
@ -1299,9 +1305,11 @@ wxCheckBox * ShuttleGuiBase::DoTieCheckBoxOnRight(const wxString &Prompt, Wrappe
|
|||||||
return pCheckBox;
|
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.
|
// The Add function does a UseUpId(), so don't do it here in that case.
|
||||||
if( mShuttleMode == eIsCreating )
|
if( mShuttleMode == eIsCreating )
|
||||||
return AddSpinCtrl( Prompt, WrappedRef.ReadAsInt(), max, min );
|
return AddSpinCtrl( Prompt, WrappedRef.ReadAsInt(), max, min );
|
||||||
@ -1625,7 +1633,8 @@ wxCheckBox * ShuttleGuiBase::TieCheckBoxOnRight(const wxString &Prompt, bool &Va
|
|||||||
return DoTieCheckBox( Prompt, WrappedRef );
|
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);
|
WrappedType WrappedRef(Value);
|
||||||
return DoTieSpinCtrl( Prompt, WrappedRef, max, min );
|
return DoTieSpinCtrl( Prompt, WrappedRef, max, min );
|
||||||
@ -1872,10 +1881,10 @@ wxSlider * ShuttleGuiBase::TieSlider(
|
|||||||
/// Variant of the standard TieSpinCtrl which does the two step exchange
|
/// Variant of the standard TieSpinCtrl which does the two step exchange
|
||||||
/// between gui and stack variable and stack variable and shuttle.
|
/// between gui and stack variable and stack variable and shuttle.
|
||||||
wxSpinCtrl * ShuttleGuiBase::TieSpinCtrl(
|
wxSpinCtrl * ShuttleGuiBase::TieSpinCtrl(
|
||||||
const wxString &Prompt,
|
const TranslatableString &Prompt,
|
||||||
const SettingSpec< int > &Setting,
|
const SettingSpec< int > &Setting,
|
||||||
const int max,
|
const int max,
|
||||||
const int min)
|
const int min)
|
||||||
{
|
{
|
||||||
wxSpinCtrl * pSpinCtrl=NULL;
|
wxSpinCtrl * pSpinCtrl=NULL;
|
||||||
|
|
||||||
|
@ -268,11 +268,12 @@ public:
|
|||||||
void HandleOptionality(const wxString &Prompt);
|
void HandleOptionality(const wxString &Prompt);
|
||||||
void AddPrompt(const wxString &Prompt, int wrapWidth = 0);
|
void AddPrompt(const wxString &Prompt, int wrapWidth = 0);
|
||||||
void AddUnits(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);
|
wxWindow * AddWindow(wxWindow * pWindow);
|
||||||
wxSlider * AddSlider(const wxString &Prompt, int pos, int Max, int Min = 0);
|
wxSlider * AddSlider(const wxString &Prompt, int pos, int Max, int Min = 0);
|
||||||
wxSlider * AddVSlider(const wxString &Prompt, int pos, int Max);
|
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();
|
wxTreeCtrl * AddTree();
|
||||||
|
|
||||||
// Pass the same initValue to the sequence of calls to AddRadioButton and
|
// Pass the same initValue to the sequence of calls to AddRadioButton and
|
||||||
@ -331,7 +332,8 @@ public:
|
|||||||
wxGrid * AddGrid();
|
wxGrid * AddGrid();
|
||||||
wxCheckBox * AddCheckBox( const wxString &Prompt, bool Selected);
|
wxCheckBox * AddCheckBox( const wxString &Prompt, bool Selected);
|
||||||
wxCheckBox * AddCheckBoxOnRight( 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,
|
wxChoice * AddChoice( const TranslatableString &Prompt,
|
||||||
const TranslatableStrings &choices, int Selected = -1 );
|
const TranslatableStrings &choices, int Selected = -1 );
|
||||||
wxChoice * AddChoice( const TranslatableString &Prompt,
|
wxChoice * AddChoice( const TranslatableString &Prompt,
|
||||||
@ -420,7 +422,8 @@ public:
|
|||||||
// and as many times as there are values in the enumeration.
|
// and as many times as there are values in the enumeration.
|
||||||
wxRadioButton * TieRadioButton();
|
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
|
//-- Variants of the standard Tie functions which do two step exchange in one go
|
||||||
@ -468,7 +471,7 @@ public:
|
|||||||
const int max,
|
const int max,
|
||||||
const int min = 0);
|
const int min = 0);
|
||||||
virtual wxSpinCtrl * TieSpinCtrl(
|
virtual wxSpinCtrl * TieSpinCtrl(
|
||||||
const wxString &Prompt,
|
const TranslatableString &Prompt,
|
||||||
const SettingSpec< int > &Setting,
|
const SettingSpec< int > &Setting,
|
||||||
const int max,
|
const int max,
|
||||||
const int min);
|
const int min);
|
||||||
@ -553,7 +556,8 @@ private:
|
|||||||
const TranslatableString &Prompt, WrappedType & WrappedRef,
|
const TranslatableString &Prompt, WrappedType & WrappedRef,
|
||||||
const TranslatableStrings & choices );
|
const TranslatableStrings & choices );
|
||||||
wxSlider * DoTieSlider( const wxString &Prompt, WrappedType & WrappedRef, const int max, const int min = 0 );
|
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<EnumValueSymbol> mRadioSymbols;
|
std::vector<EnumValueSymbol> mRadioSymbols;
|
||||||
wxString mRadioSettingName; /// The setting controlled by a group.
|
wxString mRadioSettingName; /// The setting controlled by a group.
|
||||||
|
@ -229,7 +229,7 @@ public:
|
|||||||
const int max,
|
const int max,
|
||||||
const int min = 0) override;
|
const int min = 0) override;
|
||||||
wxSpinCtrl * TieSpinCtrl(
|
wxSpinCtrl * TieSpinCtrl(
|
||||||
const wxString &Prompt,
|
const TranslatableString &Prompt,
|
||||||
const SettingSpec< int > &Setting,
|
const SettingSpec< int > &Setting,
|
||||||
const int max,
|
const int max,
|
||||||
const int min) override;
|
const int min) override;
|
||||||
@ -342,14 +342,14 @@ wxSlider * ShuttleGuiGetDefinition::TieSlider(
|
|||||||
return ShuttleGui::TieSlider( Prompt, Setting, max, min );
|
return ShuttleGui::TieSlider( Prompt, Setting, max, min );
|
||||||
}
|
}
|
||||||
wxSpinCtrl * ShuttleGuiGetDefinition::TieSpinCtrl(
|
wxSpinCtrl * ShuttleGuiGetDefinition::TieSpinCtrl(
|
||||||
const wxString &Prompt,
|
const TranslatableString &Prompt,
|
||||||
const SettingSpec< int > &Setting,
|
const SettingSpec< int > &Setting,
|
||||||
const int max,
|
const int max,
|
||||||
const int min)
|
const int min)
|
||||||
{
|
{
|
||||||
StartStruct();
|
StartStruct();
|
||||||
AddItem( Setting.GetPath(), "id" );
|
AddItem( Setting.GetPath(), "id" );
|
||||||
AddItem( Prompt, "prompt" );
|
AddItem( Prompt.Translation(), "prompt" );
|
||||||
AddItem( "number", "type" );
|
AddItem( "number", "type" );
|
||||||
AddItem( Setting.GetDefault(), "default" );
|
AddItem( Setting.GetDefault(), "default" );
|
||||||
EndStruct();
|
EndStruct();
|
||||||
|
@ -263,11 +263,10 @@ void EffectChangePitch::PopulateOrExchange(ShuttleGui & S)
|
|||||||
{
|
{
|
||||||
S.StartVerticalLay();
|
S.StartVerticalLay();
|
||||||
{
|
{
|
||||||
S.AddTitle(_("Change Pitch without Changing Tempo"));
|
S.AddTitle(XO("Change Pitch without Changing Tempo"));
|
||||||
S.AddTitle(
|
S.AddTitle(
|
||||||
XO("Estimated Start Pitch: %s%d (%.3f Hz)")
|
XO("Estimated Start Pitch: %s%d (%.3f Hz)")
|
||||||
.Format( pitch[m_nFromPitch], m_nFromOctave, m_FromFrequency)
|
.Format( pitch[m_nFromPitch], m_nFromOctave, m_FromFrequency) );
|
||||||
.Translation() );
|
|
||||||
}
|
}
|
||||||
S.EndVerticalLay();
|
S.EndVerticalLay();
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ void EffectChangeSpeed::PopulateOrExchange(ShuttleGui & S)
|
|||||||
S.StartVerticalLay(0);
|
S.StartVerticalLay(0);
|
||||||
{
|
{
|
||||||
S.AddSpace(0, 5);
|
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);
|
S.AddSpace(0, 10);
|
||||||
|
|
||||||
// Speed multiplier and percent change controls.
|
// Speed multiplier and percent change controls.
|
||||||
|
@ -226,7 +226,7 @@ void EffectChangeTempo::PopulateOrExchange(ShuttleGui & S)
|
|||||||
S.StartVerticalLay(0);
|
S.StartVerticalLay(0);
|
||||||
{
|
{
|
||||||
S.AddSpace(0, 5);
|
S.AddSpace(0, 5);
|
||||||
S.AddTitle(_("Change Tempo without Changing Pitch"));
|
S.AddTitle(XO("Change Tempo without Changing Pitch"));
|
||||||
S.SetBorder(5);
|
S.SetBorder(5);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -224,7 +224,8 @@ ContrastDialog::ContrastDialog(wxWindow * parent, wxWindowID id,
|
|||||||
S.StartHorizontalLay(wxCENTER, false);
|
S.StartHorizontalLay(wxCENTER, false);
|
||||||
{
|
{
|
||||||
/* i18n-hint: RMS abbreviates root mean square, a certain averaging method */
|
/* 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.EndHorizontalLay();
|
||||||
S.StartStatic( XO("Parameters") );
|
S.StartStatic( XO("Parameters") );
|
||||||
|
@ -444,15 +444,15 @@ void EffectReverb::PopulateOrExchange(ShuttleGui & S)
|
|||||||
.Style(wxSL_HORIZONTAL) \
|
.Style(wxSL_HORIZONTAL) \
|
||||||
.AddSlider( {}, DEF_ ## n, MAX_ ## n, MIN_ ## n);
|
.AddSlider( {}, DEF_ ## n, MAX_ ## n, MIN_ ## n);
|
||||||
|
|
||||||
SpinSlider(RoomSize, _("&Room Size (%):"))
|
SpinSlider(RoomSize, XO("&Room Size (%):"))
|
||||||
SpinSlider(PreDelay, _("&Pre-delay (ms):"))
|
SpinSlider(PreDelay, XO("&Pre-delay (ms):"))
|
||||||
SpinSlider(Reverberance, _("Rever&berance (%):"))
|
SpinSlider(Reverberance, XO("Rever&berance (%):"))
|
||||||
SpinSlider(HfDamping, _("Da&mping (%):"))
|
SpinSlider(HfDamping, XO("Da&mping (%):"))
|
||||||
SpinSlider(ToneLow, _("Tone &Low (%):"))
|
SpinSlider(ToneLow, XO("Tone &Low (%):"))
|
||||||
SpinSlider(ToneHigh, _("Tone &High (%):"))
|
SpinSlider(ToneHigh, XO("Tone &High (%):"))
|
||||||
SpinSlider(WetGain, _("Wet &Gain (dB):"))
|
SpinSlider(WetGain, XO("Wet &Gain (dB):"))
|
||||||
SpinSlider(DryGain, _("Dr&y Gain (dB):"))
|
SpinSlider(DryGain, XO("Dr&y Gain (dB):"))
|
||||||
SpinSlider(StereoWidth, _("Stereo Wid&th (%):"))
|
SpinSlider(StereoWidth, XO("Stereo Wid&th (%):"))
|
||||||
|
|
||||||
#undef SpinSlider
|
#undef SpinSlider
|
||||||
|
|
||||||
|
@ -351,13 +351,13 @@ void EffectToneGen::PopulateOrExchange(ShuttleGui & S)
|
|||||||
{
|
{
|
||||||
S.StartHorizontalLay(wxLEFT, 50);
|
S.StartHorizontalLay(wxLEFT, 50);
|
||||||
{
|
{
|
||||||
S.AddTitle(_("Start"));
|
S.AddTitle(XO("Start"));
|
||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
|
|
||||||
S.StartHorizontalLay(wxLEFT, 50);
|
S.StartHorizontalLay(wxLEFT, 50);
|
||||||
{
|
{
|
||||||
S.AddTitle(_("End"));
|
S.AddTitle(XO("End"));
|
||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ void ExportPlugin::OptionsCreate(ShuttleGui &S, int WXUNUSED(format))
|
|||||||
{
|
{
|
||||||
S.StartHorizontalLay(wxCENTER, 0);
|
S.StartHorizontalLay(wxCENTER, 0);
|
||||||
{
|
{
|
||||||
S.Prop(1).AddTitle(_("No format specific options"));
|
S.Prop(1).AddTitle(XO("No format specific options"));
|
||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ void ExportCLOptions::PopulateOrExchange(ShuttleGui & S)
|
|||||||
S.StartMultiColumn(3, wxEXPAND);
|
S.StartMultiColumn(3, wxEXPAND);
|
||||||
{
|
{
|
||||||
S.SetStretchyCol(1);
|
S.SetStretchyCol(1);
|
||||||
mCmd = S.AddCombo(_("Command:"),
|
mCmd = S.AddCombo(XO("Command:"),
|
||||||
cmd,
|
cmd,
|
||||||
cmds);
|
cmds);
|
||||||
S.Id(ID_BROWSE).AddButton(XO("Browse..."),
|
S.Id(ID_BROWSE).AddButton(XO("Browse..."),
|
||||||
@ -134,12 +134,13 @@ void ExportCLOptions::PopulateOrExchange(ShuttleGui & S)
|
|||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
|
|
||||||
|
S.AddTitle(XO(
|
||||||
/* i18n-hint: Some programmer-oriented terminology here:
|
/* i18n-hint: Some programmer-oriented terminology here:
|
||||||
"Data" refers to the sound to be exported, "piped" means sent,
|
"Data" refers to the sound to be exported, "piped" means sent,
|
||||||
and "standard in" means the default input stream that the external program,
|
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
|
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. */
|
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();
|
S.EndVerticalLay();
|
||||||
}
|
}
|
||||||
|
@ -1051,13 +1051,13 @@ int ExportFFmpeg::AskResample(int bitrate, int rate, int lowrate, int highrate,
|
|||||||
{
|
{
|
||||||
S.AddTitle(
|
S.AddTitle(
|
||||||
(bitrate == 0
|
(bitrate == 0
|
||||||
? wxString::Format(
|
? XO(
|
||||||
_("The project sample rate (%d) is not supported by the current output\nfile format. "),
|
"The project sample rate (%d) is not supported by the current output\nfile format. ")
|
||||||
rate)
|
.Format( rate )
|
||||||
: wxString::Format(
|
: XO(
|
||||||
_("The project sample rate (%d) and bit rate (%d kbps) combination is not\nsupported by the current output file format. "),
|
"The project sample rate (%d) and bit rate (%d kbps) combination is not\nsupported by the current output file format. ")
|
||||||
rate, bitrate/1024))
|
.Format( rate, bitrate/1024))
|
||||||
+ _("You may resample to one of the rates below.")
|
+ XO("You may resample to one of the rates below.")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
|
@ -1541,7 +1541,7 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S)
|
|||||||
S.StartMultiColumn(7, wxEXPAND);
|
S.StartMultiColumn(7, wxEXPAND);
|
||||||
{
|
{
|
||||||
S.SetStretchyCol(1);
|
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"));
|
mLoadPreset = S.Id(FELoadPresetID).AddButton(XO("Load Preset"));
|
||||||
mSavePreset = S.Id(FESavePresetID).AddButton(XO("Save Preset"));
|
mSavePreset = S.Id(FESavePresetID).AddButton(XO("Save Preset"));
|
||||||
mDeletePreset = S.Id(FEDeletePresetID).AddButton(XO("Delete Preset"));
|
mDeletePreset = S.Id(FEDeletePresetID).AddButton(XO("Delete Preset"));
|
||||||
@ -1606,19 +1606,19 @@ void ExportFFmpegOptions::PopulateOrExchange(ShuttleGui & S)
|
|||||||
|
|
||||||
mBitrateSpin = S.Id(FEBitrateID)
|
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"))
|
.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)
|
mQualitySpin = S.Id(FEQualityID)
|
||||||
.ToolTip(XO("Overall quality, used differently by different codecs\nRequired for vorbis\n0 - automatic\n-1 - off (use bitrate instead)"))
|
.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)
|
mSampleRateSpin = S.Id(FESampleRateID)
|
||||||
.ToolTip(XO("Sample rate (Hz)\n0 - don't change sample rate"))
|
.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)
|
mCutoffSpin = S.Id(FECutoffID)
|
||||||
.ToolTip(XO("Audio cutoff bandwidth (Hz)\nOptional\n0 - automatic"))
|
.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)
|
mProfileChoice = S.Id(FEProfileID)
|
||||||
.ToolTip(XO("AAC Profile\nLow Complexity - default\nMost players won't play anything other than LC"))
|
.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
|
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)"))
|
.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)
|
mFrameSizeSpin = S.Id(FEFrameSizeID)
|
||||||
.ToolTip(XO("Frame size\nOptional\n0 - default\nmin - 16\nmax - 65535"))
|
.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)
|
mLPCCoeffsPrecisionSpin = S.Id(FELPCCoeffsID)
|
||||||
.ToolTip(XO("LPC coefficients precision\nOptional\n0 - default\nmin - 1\nmax - 15"))
|
.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)
|
mPredictionOrderMethodChoice = S.Id(FEPredOrderID)
|
||||||
.ToolTip(XO("Prediction Order Method\nEstimate - fastest, lower compression\nLog search - slowest, best compression\nFull search - default"))
|
.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)
|
mMinPredictionOrderSpin = S.Id(FEMinPredID)
|
||||||
.ToolTip(XO("Minimal prediction order\nOptional\n-1 - default\nmin - 0\nmax - 32 (with LPC) or 4 (without LPC)"))
|
.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)
|
mMaxPredictionOrderSpin = S.Id(FEMaxPredID)
|
||||||
.ToolTip(XO("Maximal prediction order\nOptional\n-1 - default\nmin - 0\nmax - 32 (with LPC) or 4 (without LPC)"))
|
.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)
|
mMinPartitionOrderSpin = S.Id(FEMinPartOrderID)
|
||||||
.ToolTip(XO("Minimal partition order\nOptional\n-1 - default\nmin - 0\nmax - 8"))
|
.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)
|
mMaxPartitionOrderSpin = S.Id(FEMaxPartOrderID)
|
||||||
.ToolTip(XO("Maximal partition order\nOptional\n-1 - default\nmin - 0\nmax - 8"))
|
.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",
|
/* i18n-hint: Abbreviates "Linear Predictive Coding",
|
||||||
but this text needs to be kept very short */
|
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 */
|
it has a hard to predict effect on the degree of compression */
|
||||||
mMuxRate = S.Id(FEMuxRateID)
|
mMuxRate = S.Id(FEMuxRateID)
|
||||||
.ToolTip(XO("Maximum bit rate of the multiplexed stream\nOptional\n0 - default"))
|
.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
|
/* 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. */
|
compression. It measures how big a chunk of audio is compressed in one piece. */
|
||||||
mPacketSize = S.Id(FEPacketSizeID)
|
mPacketSize = S.Id(FEPacketSizeID)
|
||||||
.ToolTip(XO("Packet size\nOptional\n0 - default"))
|
.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();
|
S.EndMultiColumn();
|
||||||
}
|
}
|
||||||
|
@ -576,13 +576,13 @@ public:
|
|||||||
S.StartVerticalLay(true);
|
S.StartVerticalLay(true);
|
||||||
{
|
{
|
||||||
S.AddTitle(
|
S.AddTitle(
|
||||||
wxString::Format(_("Audacity needs the file %s to create MP3s."),
|
XO("Audacity needs the file %s to create MP3s.")
|
||||||
mName));
|
.Format( mName ) );
|
||||||
|
|
||||||
S.SetBorder(3);
|
S.SetBorder(3);
|
||||||
S.StartHorizontalLay(wxALIGN_LEFT, true);
|
S.StartHorizontalLay(wxALIGN_LEFT, true);
|
||||||
{
|
{
|
||||||
S.AddTitle( wxString::Format(_("Location of %s:"), mName) );
|
S.AddTitle( XO("Location of %s:").Format( mName ) );
|
||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
|
|
||||||
@ -2017,13 +2017,13 @@ int ExportMP3::AskResample(int bitrate, int rate, int lowrate, int highrate)
|
|||||||
{
|
{
|
||||||
S.AddTitle(
|
S.AddTitle(
|
||||||
((bitrate == 0)
|
((bitrate == 0)
|
||||||
? wxString::Format(
|
? XO(
|
||||||
_("The project sample rate (%d) is not supported by the MP3\nfile format. "),
|
"The project sample rate (%d) is not supported by the MP3\nfile format. ")
|
||||||
rate)
|
.Format( rate )
|
||||||
: wxString::Format(
|
: XO(
|
||||||
_("The project sample rate (%d) and bit rate (%d kbps) combination is not\nsupported by the MP3 file format. "),
|
"The project sample rate (%d) and bit rate (%d kbps) combination is not\nsupported by the MP3 file format. ")
|
||||||
rate, bitrate))
|
.Format( rate, bitrate ))
|
||||||
+ _("You may resample to one of the rates below.")
|
+ XO("You may resample to one of the rates below.")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
S.EndHorizontalLay();
|
S.EndHorizontalLay();
|
||||||
|
@ -722,7 +722,7 @@ void OnResample(const CommandContext &context)
|
|||||||
|
|
||||||
S.StartHorizontalLay(wxCENTER, false);
|
S.StartHorizontalLay(wxCENTER, false);
|
||||||
{
|
{
|
||||||
cb = S.AddCombo(_("New sample rate (Hz):"),
|
cb = S.AddCombo(XO("New sample rate (Hz):"),
|
||||||
rate,
|
rate,
|
||||||
rates);
|
rates);
|
||||||
}
|
}
|
||||||
|
@ -122,8 +122,8 @@ void KeyConfigPrefs::Populate()
|
|||||||
{
|
{
|
||||||
S.StartStatic( {}, true);
|
S.StartStatic( {}, true);
|
||||||
{
|
{
|
||||||
S.AddTitle(_("Keyboard preferences currently unavailable."));
|
S.AddTitle(XO("Keyboard preferences currently unavailable."));
|
||||||
S.AddTitle(_("Open a new project to modify keyboard shortcuts."));
|
S.AddTitle(XO("Open a new project to modify keyboard shortcuts."));
|
||||||
}
|
}
|
||||||
S.EndStatic();
|
S.EndStatic();
|
||||||
}
|
}
|
||||||
@ -173,7 +173,7 @@ void KeyConfigPrefs::PopulateOrExchange(ShuttleGui & S)
|
|||||||
|
|
||||||
S.StartHorizontalLay(wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
|
S.StartHorizontalLay(wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 0);
|
||||||
{
|
{
|
||||||
S.AddTitle(_("View by:"));
|
S.AddTitle(XO("View by:"));
|
||||||
S.StartRadioButtonGroup({
|
S.StartRadioButtonGroup({
|
||||||
wxT("/Prefs/KeyConfig/ViewBy"),
|
wxT("/Prefs/KeyConfig/ViewBy"),
|
||||||
{
|
{
|
||||||
|
@ -504,7 +504,7 @@ void RateMenuTable::OnRateOther(wxCommandEvent &)
|
|||||||
S.SetBorder(10);
|
S.SetBorder(10);
|
||||||
S.StartHorizontalLay(wxEXPAND, false);
|
S.StartHorizontalLay(wxEXPAND, false);
|
||||||
{
|
{
|
||||||
cb = S.AddCombo(_("New sample rate (Hz):"),
|
cb = S.AddCombo(XO("New sample rate (Hz):"),
|
||||||
rate,
|
rate,
|
||||||
rates);
|
rates);
|
||||||
#if defined(__WXMAC__)
|
#if defined(__WXMAC__)
|
||||||
|
@ -105,7 +105,7 @@ void HelpSystem::ShowInfoDialog( wxWindow *parent,
|
|||||||
|
|
||||||
S.StartVerticalLay(1);
|
S.StartVerticalLay(1);
|
||||||
{
|
{
|
||||||
S.AddTitle( shortMsg.Translation() );
|
S.AddTitle( shortMsg );
|
||||||
S.Style( wxTE_MULTILINE | wxTE_READONLY | wxTE_RICH | wxTE_RICH2 |
|
S.Style( wxTE_MULTILINE | wxTE_READONLY | wxTE_RICH | wxTE_RICH2 |
|
||||||
wxTE_AUTO_URL | wxTE_NOHIDESEL | wxHSCROLL )
|
wxTE_AUTO_URL | wxTE_NOHIDESEL | wxHSCROLL )
|
||||||
.AddTextWindow(message);
|
.AddTextWindow(message);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user