1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-31 16:09:28 +02:00

Fixed more internationalisation hints.

This commit is contained in:
james.k.crook@gmail.com 2012-03-20 15:36:02 +00:00
parent 4403da58ff
commit 69476e785c
21 changed files with 178 additions and 27 deletions

View File

@ -173,7 +173,7 @@ AboutDialog::AboutDialog(wxWindow * parent)
PopulateLicensePage( S );
}
S.EndNotebook();
/*i18n-hint: "OK... Audacious" appears on a button at the
/* i18n-hint: "OK... Audacious" appears on a button at the
* foot of the 'About Audacity' dialog box, after some text to read.
* In English it is slightly humorous alternative to an 'OK' button.
* If the humour doesn't work in your language, then just use whatever
@ -239,11 +239,13 @@ void AboutDialog::PopulateAudacityPage( ShuttleGui & S )
+ translatorCredits +
wxT("<p><center><b>") +
/* i18n-hint: %s will be replaced by the version number.*/
wxString::Format(_("Audacity %s Development Team"), versionStr.c_str()) +
wxT("</b><br>") +
GetCreditsByRole(roleTeamDeveloper) +
wxT("<p><br><b>") +
/* i18n-hint: %s will be replaced by the version number.*/
wxString::Format(_("Audacity %s Support Team"), versionStr.c_str()) +
wxT("</b><br>") +
GetCreditsByRole(roleTeamSupport) +

View File

@ -77,6 +77,7 @@ void AutoRecoveryDialog::PopulateOrExchange(ShuttleGui& S)
S.StartStatic(_("Recoverable projects"));
{
mFileList = S.Id(ID_FILE_LIST).AddListControlReportMode();
/*i18n-hint: (noun). It's the name of the project to recover.*/
mFileList->InsertColumn(0, _("Name"));
mFileList->SetColumnWidth(0, 220);
PopulateList();

View File

@ -66,6 +66,9 @@ BatchProcessDialog::BatchProcessDialog(wxWindow * parent):
AudacityProject * p = GetActiveProject();
if (p->GetCleanSpeechMode())
{
/*i18n-hint: CleanSpeech is the name of a mode Audacity can operate
* in that was invented to process lots of sermons, remove long
* pauses and background noise.*/
SetTitle(_("CleanSpeech Batch Processing"));
}
@ -93,6 +96,8 @@ void BatchProcessDialog::PopulateOrExchange(ShuttleGui &S)
{
S.StartVerticalLay(true);
{
/*i18n-hint: A chain is a sequence of commands that can be applied
* to one or more audio files.*/
S.StartStatic(_("&Select chain"), true);
{
S.SetStyle(wxSUNKEN_BORDER | wxLC_REPORT | wxLC_HRULES | wxLC_VRULES |
@ -544,7 +549,7 @@ void EditChainsDialog::PopulateList()
AddItem(mBatchCommands.GetCommand(i),
mBatchCommands.GetParams(i));
}
/*i18n-hint: This is the last item in a list.*/
AddItem(_("- END -"), wxT(""));
// Select the name in the list...this will fire an event.
@ -681,6 +686,7 @@ void EditChainsDialog::OnAdd(wxCommandEvent &event)
if (name.Contains(wxFILE_SEP_PATH) ||
name.Contains(wxFILE_SEP_PATH_UNIX)) {
/*i18n-hint: The %c will be replaced with forbidden characters, like / and \.*/
wxMessageBox(wxString::Format(_("Names may not contain '%c' and '%c'"),
wxFILE_SEP_PATH, wxFILE_SEP_PATH_UNIX),
GetTitle(),
@ -711,6 +717,7 @@ void EditChainsDialog::OnRemove(wxCommandEvent &event)
wxString name = mChains->GetItemText(item);
wxMessageDialog m(this,
/*i18n-hint: %s will be replaced by the name of a file.*/
wxString::Format(_("Are you sure you want to delete %s?"), name.c_str()),
GetTitle(),
wxYES_NO | wxICON_QUESTION);

View File

@ -378,6 +378,8 @@ void DependencyDialog::PopulateOrExchange(ShuttleGui& S)
S.StartHorizontalLay(wxALIGN_LEFT);
{
wxArrayString choices;
/*i18n-hint: One of the choices of what you want Audacity to do when
* Audacity finds a project depends on another file.*/
choices.Add(_("Ask me"));
choices.Add(_("Always copy all files (safest)"));
choices.Add(_("Never copy any files"));

View File

@ -442,6 +442,7 @@ bool DirManager::SetProject(wxString& newProjPath, wxString& newProjName, const
saved version of the old project must not be moved,
otherwise the old project would not be safe.) */
/*i18n-hint: This title appears on a dialog that indicates the progress in doing something.*/
ProgressDialog *progress = new ProgressDialog(_("Progress"),
_("Saving project data files"));
@ -1200,8 +1201,8 @@ bool DirManager::EnsureSafeFilename(wxFileName fName)
do {
i++;
/* i18n-hint: This is the pattern for filenames that are created
when a file needs to be backed up to a different name. For
example, mysong would become mysong-old1, mysong-old2, etc. */
* when a file needs to be backed up to a different name. For
* example, mysong would become mysong-old1, mysong-old2, etc. */
renamedFileName.SetName(wxString::Format(_("%s-old%d"), fName.GetName().c_str(), i));
} while (renamedFileName.FileExists());
@ -1219,6 +1220,7 @@ bool DirManager::EnsureSafeFilename(wxFileName fName)
testFile.Close();
if (!wxRemoveFile(renamedFileName.GetFullPath())) {
/* i18n-hint: %s is the name of a file.*/
wxLogSysError(_("Unable to remove '%s'."),
renamedFileName.GetFullPath().c_str());
return false;

View File

@ -207,6 +207,7 @@ public:
wxString GetLibraryTypeString()
{
/* i18n-hint: do not translate avformat. Preserve the computer gibberish.*/
return _("Only avformat.dll|*avformat*.dll|Dynamically Linked Libraries (*.dll)|*.dll|All Files (*.*)|*");
}

View File

@ -148,8 +148,8 @@ FreqWindow::FreqWindow(wxWindow * parent, wxWindowID id,
_("Cuberoot Autocorrelation"),
_("Enhanced Autocorrelation"),
/* i18n-hint: This is a technical term, derived from the word
"spectrum". Do not translate it unless you are sure you
know the correct technical word in your language. */
* "spectrum". Do not translate it unless you are sure you
* know the correct technical word in your language. */
_("Cepstrum")
};
@ -186,8 +186,8 @@ FreqWindow::FreqWindow(wxWindow * parent, wxWindowID id,
wxString *funcChoiceStrings = new wxString[f];
for (int i = 0; i < f; i++) {
/* i18n-hint: This refers to a "window function", used in the
Frequency analyze dialog box. */
funcChoiceStrings[i] = WindowFuncName(i) + wxString(_(" window"));
* Frequency analyze dialog box. */
funcChoiceStrings[i] = wxString( WindowFuncName(i)) + wxT(" ") + wxString(_("window"));
}
wxStaticText *funcLabel = new wxStaticText(this, wxID_ANY,
@ -223,6 +223,7 @@ FreqWindow::FreqWindow(wxWindow * parent, wxWindowID id,
_("&Replot"));
mReplotButton->SetName(_("Replot"));
/* i18n-hint: (verb)*/
mCloseButton = new wxButton(this, wxID_CANCEL,
_("Close"));
mCloseButton->SetName(_("Close"));
@ -866,7 +867,7 @@ void FreqWindow::PlotPaint(wxPaintEvent & evt)
peakpitch = PitchName_Absolute(FreqToMIDInoteNumber(bestpeak));
xp = xpitch.c_str();
pp = peakpitch.c_str();
/* i18n-hint: The %ds are replaced by numbers, the %s by musical notes, e.g. A#*/
info.Printf(_("Cursor: %d Hz (%s) = %d dB Peak: %d Hz (%s) = %.1f dB"),
int (xPos + 0.5), xp,
int (value + 0.5), int (bestpeak + 0.5),
@ -876,6 +877,8 @@ void FreqWindow::PlotPaint(wxPaintEvent & evt)
peakpitch = PitchName_Absolute(FreqToMIDInoteNumber(1.0 / bestpeak));
xp = xpitch.c_str();
pp = peakpitch.c_str();
/* i18n-hint: The %ds are replaced by numbers, the %s by musical notes, e.g. A#
* the %.4f are numbers, and 'sec' should be an abbreviation for seconds */
info.Printf(_("Cursor: %.4f sec (%d Hz) (%s) = %f, Peak: %.4f sec (%d Hz) (%s) = %.3f"),
xPos,
int (1.0 / xPos + 0.5),

View File

@ -122,42 +122,52 @@ wxString TitleText( const wxString & Key )
if(Key ==wxT("play") )
{
/* i18n-hint: Title for a topic.*/
return _("Playing Audio");
}
if((Key ==wxT("record") ) || (Key ==wxT("norecord") ))
{
/* i18n-hint: Title for a topic.*/
return _("Recording Audio");
}
if(Key ==wxT("inputdevice") )
{
/* i18n-hint: Title for a topic.*/
return _("Recording - Choosing the Input Device");
}
if(Key ==wxT("inputsource") )
{
/* i18n-hint: Title for a topic.*/
return _("Recording - Choosing the Input Source");
}
if(Key ==wxT("inputlevel") )
{
/* i18n-hint: Title for a topic.*/
return _("Recording - Setting the Input Level");
}
if((Key ==wxT("edit") ) || (Key==wxT("grey")))
{
/* i18n-hint: Title for a topic.*/
return _("Editing and greyed out Menus");
}
if(Key ==wxT("export") )
{
/* i18n-hint: Title for a topic.*/
return _("Exporting an Audio File");
}
if(Key ==wxT("save") )
{
/* i18n-hint: Title for a topic.*/
return _("Saving an Audacity Project");
}
if(Key ==wxT("wma-proprietary") )
{
/* i18n-hint: Title for a topic.*/
return _("Support for Other Formats");
}
if(Key ==wxT("burncd") )
{
/* i18n-hint: Title for a topic.*/
return _("Burn to CD" );
}
if(Key == wxT("remotehelp") )
@ -171,6 +181,7 @@ wxString HelpTextBuiltIn( const wxString & Key )
{
if(Key==wxT("welcome"))
{
/* i18n-hint: Preserve [[file:quick_help.html as its the name of a file.*/
return WrapText(
wxString(wxT("")) +
_("<center><h3>How to Get Help</h3></center>") +

View File

@ -99,6 +99,7 @@ HistoryWindow::HistoryWindow(AudacityProject *parent, UndoManager *manager):
mManager->GetCurrentState() - 1,
0);
S.AddWindow(mLevels);
/* i18n-hint: (verb)*/
mDiscard = S.Id(ID_DISCARD).AddButton(_("&Discard"));
}
S.EndMultiColumn();

View File

@ -150,12 +150,15 @@ wxString Internat::FormatSize(double size)
if (size < 1024.0)
sizeStr = ToDisplayString(size) + wxT(" ") + _("bytes");
else if (size < 1024.0 * 1024.0) {
/* i18n-hint: Abbreviation for Kilo bytes */
sizeStr = ToDisplayString(size / 1024.0, 1) + wxT(" ") + _("KB");
}
else if (size < 1024.0 * 1024.0 * 1024.0) {
/* i18n-hint: Abbreviation for Mega bytes */
sizeStr = ToDisplayString(size / (1024.0 * 1024.0), 1) + wxT(" ") + _("MB");
}
else {
/* i18n-hint: Abbreviation for Giga bytes */
sizeStr = ToDisplayString(size / (1024.0 * 1024.0 * 1024.0), 1) + wxT(" ") + _("GB");
}
}

View File

@ -51,9 +51,13 @@ enum Column
static const wxChar *headers[Col_Max] =
{
/* i18n-hint: (noun). A track contains waves, audio etc.*/
_("Track"),
/* i18n-hint: (noun)*/
_("Label"),
/* i18n-hint: (noun) of a label*/
_("Start Time"),
/* i18n-hint: (noun) of a label*/
_("End Time")
};
@ -704,6 +708,7 @@ void LabelDialog::OnChangeTrack(wxGridEvent &event, int row, RowData *rd)
wxTextEntryDialog d(this,
_("New Label Track"),
_("Enter track name"),
/* i18n-hint: (noun) it's the name of a kind of track.*/
_("Label Track"));
// User canceled so repopulating the grid will set the track

View File

@ -55,6 +55,8 @@ wxString ChooseLanguage(wxWindow *parent)
{
wxString returnVal;
/* i18n-hint: Title on a dialog indicating that this is the first
* time Audacity has been run. */
LangChoiceDialog dlog(parent, -1, _("Audacity First Run"));
dlog.CentreOnParent();
dlog.ShowModal();
@ -122,6 +124,8 @@ void LangChoiceDialog::OnOk(wxCommandEvent & event)
if (mLang.Left(2) != slang.Left(2)) {
wxString msg;
/* i18n-hint; The %ss are replaced by translated and untranslated
* versions of language names. */
msg.Printf(_("The language you have chosen, %s (%s), is not the same as the system language, %s (%s)."),
mLangNames[ndx].c_str(),
mLang.c_str(),

View File

@ -299,6 +299,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("PageSetup"), _("Pa&ge Setup..."), FN(OnPageSetup),
AudioIONotBusyFlag | TracksExistFlag,
AudioIONotBusyFlag | TracksExistFlag);
/* i18n-hint: (verb) It's item on a menu. */
c->AddItem(wxT("Print"), _("&Print..."), FN(OnPrint),
AudioIONotBusyFlag | TracksExistFlag,
AudioIONotBusyFlag | TracksExistFlag);
@ -308,6 +309,7 @@ void AudacityProject::CreateMenusAndCommands()
// On the Mac, the Exit item doesn't actually go here...wxMac will pull it out
// and put it in the Audacity menu for us based on its ID.
/* i18n-hint: (verb) It's item on a menu. */
c->AddItem(wxT("Exit"), _("E&xit"), FN(OnExit), wxT("Ctrl+Q"),
AlwaysEnabledFlag,
AlwaysEnabledFlag);
@ -344,19 +346,25 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
c->BeginSubMenu(_("R&emove Audio"));
/* i18n-hint: (verb)*/
c->AddItem(wxT("Cut"), _("Cu&t"), FN(OnCut), wxT("Ctrl+X"),
AudioIONotBusyFlag | CutCopyAvailableFlag,
AudioIONotBusyFlag | CutCopyAvailableFlag);
c->AddItem(wxT("Delete"), _("&Delete"), FN(OnDelete), wxT("Ctrl+K"));
c->AddSeparator();
/* i18n-hint: (verb) Do a special kind of cut*/
c->AddItem(wxT("SplitCut"), _("Spl&it Cut"), FN(OnSplitCut), wxT("Ctrl+Alt+X"));
/* i18n-hint: (verb) Do a special kind of delete*/
c->AddItem(wxT("SplitDelete"), _("Split D&elete"), FN(OnSplitDelete), wxT("Ctrl+Alt+K"));
c->AddSeparator();
/* i18n-hint: (verb)*/
c->AddItem(wxT("Silence"), _("Silence Audi&o"), FN(OnSilence), wxT("Ctrl+L"));
/* i18n-hint: (verb)*/
c->AddItem(wxT("Trim"), _("Tri&m"), FN(OnTrim), wxT("Ctrl+T"));
c->EndSubMenu();
c->BeginSubMenu(_("Clip Boun&daries"));
/* i18n-hint: (verb) It's an item on a menu. */
c->AddItem(wxT("Split"), _("Sp&lit"), FN(OnSplit), wxT("Ctrl+I"),
AudioIONotBusyFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | WaveTracksSelectedFlag);
@ -364,15 +372,18 @@ void AudacityProject::CreateMenusAndCommands()
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag,
AudioIONotBusyFlag | TimeSelectedFlag | WaveTracksSelectedFlag);
c->AddSeparator();
/* i18n-hint: (verb)*/
c->AddItem(wxT("Join"), _("&Join"), FN(OnJoin), wxT("Ctrl+J"));
c->AddItem(wxT("Disjoin"), _("Detac&h at Silences"), FN(OnDisjoin), wxT("Ctrl+Alt+J"));
c->EndSubMenu();
c->AddSeparator();
/* i18n-hint: (verb)*/
c->AddItem(wxT("Copy"), _("&Copy"), FN(OnCopy), wxT("Ctrl+C"),
AudioIONotBusyFlag | CutCopyAvailableFlag,
AudioIONotBusyFlag | CutCopyAvailableFlag);
/* i18n-hint: (verb)*/
c->AddItem(wxT("Paste"), _("&Paste"), FN(OnPaste), wxT("Ctrl+V"),
AudioIONotBusyFlag | ClipboardFlag,
AudioIONotBusyFlag | ClipboardFlag);
@ -381,6 +392,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
/* i18n-hint: (verb)*/
c->AddItem(wxT("Duplicate"), _("Duplic&ate"), FN(OnDuplicate), wxT("Ctrl+D"));
// An anomaly... StereoToMono is added here for CleanSpeech,
@ -399,6 +411,7 @@ void AudacityProject::CreateMenusAndCommands()
c->SetDefaultFlags(AudioIONotBusyFlag | LabelsSelectedFlag | TimeSelectedFlag,
AudioIONotBusyFlag | LabelsSelectedFlag | TimeSelectedFlag);
/* i18n-hint: (verb)*/
c->AddItem(wxT("CutLabels"), _("&Cut"), FN(OnCutLabels), wxT("Alt+X"),
AudioIONotBusyFlag | LabelsSelectedFlag | TimeSelectedFlag | IsNotSyncLockedFlag,
AudioIONotBusyFlag | LabelsSelectedFlag | TimeSelectedFlag | IsNotSyncLockedFlag);
@ -408,6 +421,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
/* i18n-hint: (verb) A special way to cut out a piece of audio*/
c->AddItem(wxT("SplitCutLabels"), _("&Split Cut"), FN(OnSplitCutLabels), wxT("Alt+Shift+X"));
c->AddItem(wxT("SplitDeleteLabels"), _("Sp&lit Delete"), FN(OnSplitDeleteLabels), wxT("Alt+Shift+K"));
@ -415,13 +429,16 @@ void AudacityProject::CreateMenusAndCommands()
c->AddItem(wxT("SilenceLabels"), _("Silence &Audio"), FN(OnSilenceLabels), wxT("Alt+L"));
/* i18n-hint: (verb)*/
c->AddItem(wxT("CopyLabels"), _("Co&py"), FN(OnCopyLabels), wxT("Alt+Shift+C"));
c->AddSeparator();
/* i18n-hint: (verb)*/
c->AddItem(wxT("SplitLabels"), _("Spli&t"), FN(OnSplitLabels), wxT("Alt+I"),
AudioIONotBusyFlag | LabelsSelectedFlag,
AudioIONotBusyFlag | LabelsSelectedFlag);
/* i18n-hint: (verb)*/
c->AddItem(wxT("JoinLabels"), _("&Join"), FN(OnJoinLabels), wxT("Alt+J"));
c->AddItem(wxT("DisjoinLabels"), _("Detac&h at Silences"), FN(OnDisjoinLabels), wxT("Alt+Shift+J"));
@ -429,6 +446,7 @@ void AudacityProject::CreateMenusAndCommands()
/////////////////////////////////////////////////////////////////////////////
/* i18n-hint: (verb) It's an item on a menu. */
c->BeginSubMenu(_("&Select"));
c->SetDefaultFlags(TracksExistFlag, TracksExistFlag);
@ -572,6 +590,8 @@ void AudacityProject::CreateMenusAndCommands()
// mCommandManager.Enable(wxT("UndoHistory"), true);
// So for now, enable the command regardless of stack. It will just show empty sometimes.
// FOR REDESIGN, clearly there are some limitations with the flags/mask bitmaps.
/* i18n-hint: Clicking this menu item shows the various editing steps that have been taken.*/
c->AddItem(wxT("UndoHistory"), _("&History..."), FN(OnHistory),
AudioIONotBusyFlag,
AudioIONotBusyFlag);
@ -585,23 +605,37 @@ void AudacityProject::CreateMenusAndCommands()
c->BeginSubMenu(_("&Toolbars"));
/* i18n-hint: Clicking this menu item shows the toolbar that manages devices*/
c->AddCheck(wxT("ShowDeviceTB"), _("&Device Toolbar"), FN(OnShowDeviceToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar for editing*/
c->AddCheck(wxT("ShowEditTB"), _("&Edit Toolbar"), FN(OnShowEditToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar which has sound level meters*/
c->AddCheck(wxT("ShowMeterTB"), _("&Meter Toolbar"), FN(OnShowMeterToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar with the mixer*/
c->AddCheck(wxT("ShowMixerTB"), _("Mi&xer Toolbar"), FN(OnShowMixerToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar for selecting audio*/
c->AddCheck(wxT("ShowSelectionTB"), _("&Selection Toolbar"), FN(OnShowSelectionToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows a toolbar that has some tools in it*/
c->AddCheck(wxT("ShowToolsTB"), _("T&ools Toolbar"), FN(OnShowToolsToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar for transcription (currently just vary play speed)*/
c->AddCheck(wxT("ShowTranscriptionTB"), _("Transcri&ption Toolbar"), FN(OnShowTranscriptionToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
/* i18n-hint: Clicking this menu item shows the toolbar with the big buttons on it (play record etc)*/
c->AddCheck(wxT("ShowTransportTB"), _("&Transport Toolbar"), FN(OnShowTransportToolBar), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
c->AddSeparator();
/* i18n-hint: (verb)*/
c->AddItem(wxT("ResetToolbars"), _("&Reset Toolbars"), FN(OnResetToolBars), 0, AlwaysEnabledFlag, AlwaysEnabledFlag);
c->EndSubMenu();
/////////////////////////////////////////////////////////////////////////////
/* i18n-hint: Usually keep the ! at the start. It means this option is hidden.
* Simplified View toggles the showing and hiding of 'hidden' menu items that start
* with !. If your translation file is for a special use, that is if it is for a
* simplified view with hidden menu items, then leave the ! out here, so that the
* user can show/hide some of the menu items. */
c->AddCheck(wxT("SimplifiedView"), _("!Simplified View"), FN(OnSimplifiedView),
mCommandManager.mbHideFlaggedItems ? 1 : 0);
@ -616,11 +650,13 @@ void AudacityProject::CreateMenusAndCommands()
c->BeginMenu(_("T&ransport"));
c->SetDefaultFlags(AudioIONotBusyFlag, AudioIONotBusyFlag);
/* i18n-hint: (verb) Start playing audio*/
c->AddItem(wxT("Play"), _("Play"), FN(OnPlayStop));
c->AddItem(wxT("PlayLooped"), _("&Loop Play"), FN(OnPlayLooped), wxT("Shift+Space"));
c->AddItem(wxT("Pause"), _("&Pause"), FN(OnPause), wxT("P"),
AudioIOBusyFlag,
AudioIOBusyFlag);
/* i18n-hint: (verb) Stop playing audio*/
c->AddItem(wxT("Stop"), _("&Stop"), FN(OnStop),
AudioIOBusyFlag,
AudioIOBusyFlag);
@ -629,6 +665,7 @@ void AudacityProject::CreateMenusAndCommands()
c->AddSeparator();
/* i18n-hint: (verb)*/
c->AddItem(wxT("Record"), _("&Record"), FN(OnRecord), wxT("R"));
c->AddItem(wxT("TimerRecord"), _("&Timer Record..."), FN(OnTimerRecord), wxT("Shift+T"));
c->AddItem(wxT("RecordAppend"), _("Append Record"), FN(OnRecordAppend), wxT("Shift+R"));
@ -3899,7 +3936,11 @@ void AudacityProject::OnCutLabels()
mViewInfo.sel1 = mViewInfo.sel0;
PushState( _( "Cut labeled regions to the clipboard" ), _( "Cut Labels" ) );
PushState(
/* i18n-hint: (verb) past tense. Audacity has just cut the labeled regions.*/
_( "Cut labeled regions to the clipboard" ),
/* i18n-hint: (verb)*/
_( "Cut Labels" ) );
RedrawProject();
}
@ -3913,7 +3954,10 @@ void AudacityProject::OnSplitCutLabels()
msClipProject = this;
PushState( _( "SplitCut labeled regions to the clipboard" ),
PushState(
/* i18n-hint: (verb) Audacity has just splitcut the labeled regions*/
_( "SplitCut labeled regions to the clipboard" ),
/* i18n-hint: (verb) Do a special kind of cut on the labels*/
_( "Split Cut Labels" ) );
RedrawProject();
@ -3928,7 +3972,9 @@ void AudacityProject::OnCopyLabels()
msClipProject = this;
PushState( _( "Copied labeled regions to the clipboard" ), _( "Copy Labels" ) );
PushState( _( "Copied labeled regions to the clipboard" ),
/* i18n-hint: (verb)*/
_( "Copy Labels" ) );
mTrackPanel->Refresh( false );
}
@ -3942,7 +3988,11 @@ void AudacityProject::OnDeleteLabels()
mViewInfo.sel1 = mViewInfo.sel0;
PushState( _( "Deleted labeled regions" ), _( "Delete Labels" ) );
PushState(
/* i18n-hint: (verb) Audacity has just deleted the labeled regions*/
_( "Deleted labeled regions" ),
/* i18n-hint: (verb)*/
_( "Delete Labels" ) );
RedrawProject();
}
@ -3954,7 +4004,11 @@ void AudacityProject::OnSplitDeleteLabels()
EditByLabel( &WaveTrack::SplitDelete, false );
PushState( _( "Split Deleted labeled regions" ), _( "Split Delete Labels" ) );
PushState(
/* i18n-hint: (verb) Audacity has just done a special kind of delete on the labeled regions */
_( "Split Deleted labeled regions" ),
/* i18n-hint: (verb) Do a special kind of delete on labels*/
_( "Split Delete Labels" ) );
RedrawProject();
}
@ -3966,7 +4020,11 @@ void AudacityProject::OnSilenceLabels()
EditByLabel( &WaveTrack::Silence, false );
PushState( _( "Silenced labeled regions" ), _( "Silence Labels" ) );
PushState(
/* i18n-hint: (verb)*/
_( "Silenced labeled regions" ),
/* i18n-hint: (verb)*/
_( "Silence Labels" ) );
mTrackPanel->Refresh( false );
}
@ -3975,7 +4033,11 @@ void AudacityProject::OnSplitLabels()
{
EditByLabel( &WaveTrack::Split, false );
PushState( _( "Split labeled regions" ), _( "Split Labels" ) );
PushState(
/* i18n-hint: (verb) past tense. Audacity has just split the labeled regions*/
_( "Split labeled regions" ),
/* i18n-hint: (verb)*/
_( "Split Labels" ) );
RedrawProject();
}
@ -3987,7 +4049,11 @@ void AudacityProject::OnJoinLabels()
EditByLabel( &WaveTrack::Join, false );
PushState( _( "Joined labeled regions" ), _( "Join Labels" ) );
PushState(
/* i18n-hint: (verb) Audacity has just joined the labeled regions*/
_( "Joined labeled regions" ),
/* i18n-hint: (verb)*/
_( "Join Labels" ) );
RedrawProject();
}
@ -3999,7 +4065,11 @@ void AudacityProject::OnDisjoinLabels()
EditByLabel( &WaveTrack::Disjoin, false );
PushState( _( "Detached labeled regions" ), _( "Detach Labels" ) );
PushState(
/* i18n-hint: (verb) Audacity has just detached the labeled regions*/
_( "Detached labeled regions" ),
/* i18n-hint: (verb)*/
_( "Detach Labels" ) );
RedrawProject();
}
@ -4808,6 +4878,8 @@ void AudacityProject::HandleMixAndRender(bool toNewTrack)
if (selectedCount==1) {
wxString msg;
msg.Printf(_("Rendered all audio in track '%s'"), firstName.c_str());
/* i18n-hint: Convert the audio into a more usable form, so apply
* panning and amplification and write to some external file.*/
PushState(msg, _("Render"));
}
else {

View File

@ -1164,6 +1164,7 @@ void AudacityProject::SetProjectTitle()
if (mIsRecovered)
{
name += wxT(" ");
/* i18n-hint: E.g this is recovered audio that had been lost.*/
name += _("(Recovered)");
}
@ -2125,6 +2126,7 @@ wxArrayString AudacityProject::ShowOpenDialog(wxString extraformat, wxString ext
all;
#endif
/* i18n-hint: The vertical bars and * are essential here.*/
wxString mask = _("All files|*|All supported files|") +
all + wxT("|"); // "all" and "all supported" entries
if (extraformat != wxEmptyString)
@ -2807,6 +2809,7 @@ bool AudacityProject::HandleXMLTag(const wxChar *tag, const wxChar **attrs)
(fileVersion > wxT(AUDACITY_FILE_FORMAT_VERSION)))
{
wxString msg;
/* i18n-hint: %s will be replaced by the version number.*/
msg.Printf(_("This file was saved using Audacity %s.\nYou are using Audacity %s. You may need to upgrade to a newer version to open this file."),
audacityVersion.c_str(),
AUDACITY_VERSION_STRING);
@ -3509,6 +3512,7 @@ bool AudacityProject::SaveAs(bool bWantSaveCompressed /*= false*/)
{
fName = FileSelector(_("Save Speech As:"),
path, fName, wxT(""),
/* i18n-hint: Do not translate PCM.*/
_("Windows PCM Audio file (*.wav)|*.wav"), //lda
wxFD_SAVE | wxFD_OVERWRITE_PROMPT | wxRESIZE_BORDER, this);
}

View File

@ -329,10 +329,14 @@ void ScreenFrame::PopulateOrExchange(ShuttleGui & S)
{
S.Id(IdMainWindowSmall).AddButton(_("Resize Small"));
S.Id(IdMainWindowLarge).AddButton(_("Resize Large"));
/* i18n-hint: Bkgnd is short for background and appears on a small button
* It is OK to just translate this item as if it said 'Blue' */
mBlue = new wxToggleButton(p,
IdToggleBackgroundBlue,
_("Blue Bkgnd"));
S.AddWindow(mBlue);
/* i18n-hint: Bkgnd is short for background and appears on a small button
* It is OK to just translate this item as if it said 'White' */
mWhite = new wxToggleButton(p,
IdToggleBackgroundWhite,
_("White Bkgnd"));

View File

@ -801,6 +801,7 @@ bool ThemeBase::ReadImageCache( bool bBinaryRead, bool bOkIfNotFound)
}
if( !ImageCache.LoadFile( FileName, wxBITMAP_TYPE_PNG ))
{
/* i18n-hint: Do not translate png. It is the name of a file format.*/
wxMessageBox(
wxString::Format(
_("Audacity could not load file:\n %s.\nBad png format perhaps?"),
@ -890,6 +891,7 @@ void ThemeBase::LoadComponents( bool bOkIfNotFound )
{
if( !mImages[i].LoadFile( FileName, wxBITMAP_TYPE_PNG ))
{
/* i18n-hint: Do not translate png. It is the name of a file format.*/
wxMessageBox(
wxString::Format(
_("Audacity could not load file:\n %s.\nBad png format perhaps?"),

View File

@ -2420,7 +2420,9 @@ void TrackPanel::HandleEnvelope(wxMouseEvent & event)
if (event.LeftUp()) {
mCapturedTrack = NULL;
MakeParentPushState(
/* i18n-hint: (verb) Audacity has just adjusted the envelope .*/
_("Adjusted envelope."),
/* i18n-hint: The envelope is a curve that controls the audio loudness.*/
_("Envelope")
);
}
@ -2585,7 +2587,11 @@ void TrackPanel::HandleSlide(wxMouseEvent & event)
consolidate = false;
}
else {
wxString direction = mHSlideAmount>0 ? _("right") : _("left");
wxString direction = mHSlideAmount>0 ?
/* i18n-hint: a direction as in left or right.*/
_("right") :
/* i18n-hint: a direction as in left or right.*/
_("left");
/* i18n-hint: %s is a direction like left or right */
msg.Printf(_("Time shifted tracks/clips %s %.02f seconds"),
direction.c_str(), fabs(mHSlideAmount));
@ -4291,6 +4297,7 @@ void TrackPanel::HandleRearrange(wxMouseEvent & event)
}
else if (event.m_y > mMoveDownThreshold || event.m_y > GetRect().GetHeight()) {
mTracks->MoveDown(mCapturedTrack);
/* i18n-hint: a direction as in up or down.*/
dir = _("down");
#ifdef EXPERIMENTAL_MIDI_OUT
if (pMixerBoard && (mCapturedTrack->GetKind() == Track::Wave ||
@ -7317,11 +7324,18 @@ void TrackPanel::OnMoveTrack(wxCommandEvent & event)
if (pMixerBoard && (mPopupMenuTarget->GetKind() == Track::Wave))
pMixerBoard->MoveTrackCluster((WaveTrack*)mPopupMenuTarget, bUp);
MakeParentPushState(wxString::Format(_("Moved '%s' %s"),
MakeParentPushState(wxString::Format(
/* i18n-hint: the first %s is the name of a track, the second a direction as in up or down.
* If the word order is different in your language ask on the translators list about what
* to do.*/
_("Moved '%s' %s"),
mPopupMenuTarget->GetName().
c_str(),
event.GetId() ==
OnMoveUpID ? _("up") :
OnMoveUpID ?
/* i18n-hint: a direction as in up or down.*/
_("up") :
/* i18n-hint: a direction as in up or down.*/
_("down")),
_("Move Track"));
Refresh(false);
@ -8030,7 +8044,11 @@ void TrackInfo::DrawMuteSolo(wxDC * dc, const wxRect r, Track * t,
dc->DrawRectangle(bev);
long textWidth, textHeight;
wxString str = (solo) ? _("Solo") : _("Mute");
wxString str = (solo) ?
/* i18n-hint: This is on a button that will silence this track.*/
_("Solo") :
/* i18n-hint: This is on a button that will silence all the other tracks.*/
_("Mute");
SetTrackInfoFont(dc);
dc->GetTextExtent(str, &textWidth, &textHeight);

View File

@ -813,9 +813,11 @@ void EffectAutoDuckPanel::OnPaint(wxPaintEvent& evt)
valueStr += wxT(" ");
if (cp == duckAmount)
valueStr += _("dB"); // i18n-hint: short form of 'decibels'
/* i18n-hint: short form of 'decibels'.*/
valueStr += _("dB");
else
valueStr += _("s"); // i18n-hint: short form of 'seconds'
/* i18n-hint: short form of 'seconds'.*/
valueStr += _("s");
int textWidth = 0, textHeight = 0;
GetTextExtent(valueStr, &textWidth, &textHeight);

View File

@ -597,6 +597,7 @@ public:
S.SetStretchyCol(0);
{
if (mLibPath.GetFullPath().IsEmpty()) {
/* i18n-hint: There is a button to the right of the arrow.*/
text.Printf(_("To find %s, click here -->"), mName.c_str());
mPathText = S.AddTextBox(wxT(""), text, 0);
}
@ -604,7 +605,9 @@ public:
mPathText = S.AddTextBox(wxT(""), mLibPath.GetFullPath(), 0);
}
S.Id(ID_BROWSE).AddButton(_("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);
/* i18n-hint: (verb)*/
S.Id(ID_DLOAD).AddButton(_("Download"), wxALIGN_RIGHT);
}
S.EndMultiColumn();
@ -625,8 +628,8 @@ public:
{
wxString question;
/* i18n-hint: It's asking for the location of a file, for
example, "Where is lame_enc.dll?" - you could translate
"Where would I find the file %s" instead if you want. */
* example, "Where is lame_enc.dll?" - you could translate
* "Where would I find the file %s" instead if you want. */
question.Printf(_("Where is %s?"), mName.c_str());
wxString path = FileSelector(question,

View File

@ -116,7 +116,10 @@ void MousePrefs::CreateList()
AddItem(_("Shift-Left-Drag"), _("Time-Shift"),_("Time shift all clips in track"));
AddItem(_("Ctrl-Left-Drag"), _("Time-Shift"),_("Move clip up/down between tracks"));
AddItem(_("Left-Drag"), _("Envelope"), _("Change Amplification Envelope"));
AddItem(_("Left-Drag"),
/* i18n-hint: The envelope is a curve that controls the audio loudness.*/
_("Envelope"),
_("Change Amplification Envelope"));
AddItem(_("Left-Click"), _("Pencil"), _("Change Sample"));
AddItem(_("Alt-Left-Click"), _("Pencil"), _("Smooth at Sample"));

View File

@ -117,6 +117,7 @@ ToolBar::~ToolBar()
//
wxString ToolBar::GetTitle()
{
/* i18n-hint: %s will be replaced by the version number.*/
return wxString::Format( _("Audacity %s ToolBar"), GetLabel().c_str() );
}