Fix all remaining misuses of macro _ in static initializers...
... I found them using a rewritten macro _ that dynamically checked that translations have been initialized. But I do not commit that changed macro.
This commit is contained in:
parent
c94222ff54
commit
6a8bba0a99
|
@ -1047,6 +1047,11 @@ wxString AudacityApp::InitLang( const wxString & lang )
|
|||
ProcessEvent(evt);
|
||||
}
|
||||
|
||||
// PRL: Moved this, do it only after language intialized
|
||||
// Unused strings that we want to be translated, even though
|
||||
// we're not using them yet...
|
||||
wxString future1 = _("Master Gain Control");
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -1256,10 +1261,6 @@ bool AudacityApp::OnInit()
|
|||
wxTheApp->SetAppDisplayName(appName);
|
||||
wxTheApp->SetVendorName(appName);
|
||||
|
||||
// Unused strings that we want to be translated, even though
|
||||
// we're not using them yet...
|
||||
wxString future1 = _("Master Gain Control");
|
||||
|
||||
::wxInitAllImageHandlers();
|
||||
|
||||
// AddHandler takes ownership
|
||||
|
|
|
@ -310,20 +310,26 @@ DependencyDialog::DependencyDialog(wxWindow *parent,
|
|||
PopulateOrExchange(S);
|
||||
}
|
||||
|
||||
const wxString kStdMsg =
|
||||
static const wxString kStdMsg()
|
||||
{
|
||||
return
|
||||
_("Copying these files into your project will remove this dependency.\
|
||||
\nThis is safer, but needs more disk space.");
|
||||
}
|
||||
|
||||
const wxString kExtraMsgForMissingFiles =
|
||||
static const wxString kExtraMsgForMissingFiles()
|
||||
{
|
||||
return
|
||||
_("\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.");
|
||||
}
|
||||
|
||||
void DependencyDialog::PopulateOrExchange(ShuttleGui& S)
|
||||
{
|
||||
S.SetBorder(5);
|
||||
S.StartVerticalLay();
|
||||
{
|
||||
mMessageStaticText = S.AddVariableText(kStdMsg, false);
|
||||
mMessageStaticText = S.AddVariableText(kStdMsg(), false);
|
||||
|
||||
S.StartStatic(_("Project Dependencies"));
|
||||
{
|
||||
|
@ -422,9 +428,9 @@ void DependencyDialog::PopulateList()
|
|||
++i;
|
||||
}
|
||||
|
||||
wxString msg = kStdMsg;
|
||||
wxString msg = kStdMsg();
|
||||
if (mHasMissingFiles)
|
||||
msg += kExtraMsgForMissingFiles;
|
||||
msg += kExtraMsgForMissingFiles();
|
||||
mMessageStaticText->SetLabel(msg);
|
||||
|
||||
if (mCopyAllFilesButton)
|
||||
|
|
60
src/Tags.cpp
60
src/Tags.cpp
|
@ -45,6 +45,7 @@
|
|||
#include "Internat.h"
|
||||
#include "Prefs.h"
|
||||
#include "ShuttleGui.h"
|
||||
#include "TranslatableStringArray.h"
|
||||
#include "widgets/Grid.h"
|
||||
#include "xml/XMLFileReader.h"
|
||||
|
||||
|
@ -675,24 +676,41 @@ public:
|
|||
// Editor
|
||||
//
|
||||
|
||||
#define LABEL_ARTIST _("Artist Name")
|
||||
#define LABEL_TITLE _("Track Title")
|
||||
#define LABEL_ALBUM _("Album Title")
|
||||
#define LABEL_TRACK _("Track Number")
|
||||
#define LABEL_YEAR _("Year")
|
||||
#define LABEL_GENRE _("Genre")
|
||||
#define LABEL_COMMENTS _("Comments")
|
||||
#define LABEL_ARTIST XO("Artist Name")
|
||||
#define LABEL_TITLE XO("Track Title")
|
||||
#define LABEL_ALBUM XO("Album Title")
|
||||
#define LABEL_TRACK XO("Track Number")
|
||||
#define LABEL_YEAR XO("Year")
|
||||
#define LABEL_GENRE XO("Genre")
|
||||
#define LABEL_COMMENTS XO("Comments")
|
||||
|
||||
static wxString names[] =
|
||||
static wxArrayString names()
|
||||
{
|
||||
LABEL_ARTIST,
|
||||
LABEL_TITLE,
|
||||
LABEL_ALBUM,
|
||||
LABEL_TRACK,
|
||||
LABEL_YEAR,
|
||||
LABEL_GENRE,
|
||||
LABEL_COMMENTS
|
||||
};
|
||||
static wxString theNames[] =
|
||||
{
|
||||
LABEL_ARTIST,
|
||||
LABEL_TITLE,
|
||||
LABEL_ALBUM,
|
||||
LABEL_TRACK,
|
||||
LABEL_YEAR,
|
||||
LABEL_GENRE,
|
||||
LABEL_COMMENTS
|
||||
};
|
||||
|
||||
class NamesArray final : public TranslatableStringArray
|
||||
{
|
||||
void Populate() override
|
||||
{
|
||||
for (auto &name : theNames)
|
||||
mContents.push_back( wxGetTranslation( name ) );
|
||||
}
|
||||
};
|
||||
|
||||
static NamesArray theArray;
|
||||
|
||||
// Yes, return array by value
|
||||
return theArray.Get();
|
||||
}
|
||||
|
||||
static struct
|
||||
{
|
||||
|
@ -751,14 +769,6 @@ TagsEditor::TagsEditor(wxWindow * parent,
|
|||
{
|
||||
SetName(GetTitle());
|
||||
|
||||
names[0] = LABEL_ARTIST;
|
||||
names[1] = LABEL_TITLE;
|
||||
names[2] = LABEL_ALBUM;
|
||||
names[3] = LABEL_TRACK;
|
||||
names[4] = LABEL_YEAR;
|
||||
names[5] = LABEL_GENRE;
|
||||
names[6] = LABEL_COMMENTS;
|
||||
|
||||
labelmap[0].label = LABEL_ARTIST;
|
||||
labelmap[1].label = LABEL_TITLE;
|
||||
labelmap[2].label = LABEL_ALBUM;
|
||||
|
@ -858,7 +868,7 @@ void TagsEditor::PopulateOrExchange(ShuttleGui & S)
|
|||
|
||||
mGrid->SetColLabelSize(mGrid->GetDefaultRowSize());
|
||||
|
||||
wxArrayString cs(WXSIZEOF(names), names);
|
||||
wxArrayString cs(names());
|
||||
|
||||
// Build the initial (empty) grid
|
||||
mGrid->CreateGrid(0, 2);
|
||||
|
|
|
@ -97,9 +97,10 @@ enum DiscriminationMethod {
|
|||
const struct DiscriminationMethodInfo {
|
||||
const wxChar *name;
|
||||
} discriminationMethodInfo[DM_N_METHODS] = {
|
||||
{ _("Median") },
|
||||
{ _("Second greatest") },
|
||||
{ _("Old") },
|
||||
// Experimental only, don't need translations
|
||||
{ wxT("Median") },
|
||||
{ wxT("Second greatest") },
|
||||
{ wxT("Old") },
|
||||
};
|
||||
|
||||
// magic number used only in the old statistics
|
||||
|
@ -130,13 +131,14 @@ const struct WindowTypesInfo {
|
|||
// is the product of the windows' two constant terms,
|
||||
// plus one half the product of the first cosine coefficients.
|
||||
|
||||
{ _("none, Hann (2.0.6 behavior)"), 2, { 1, 0, 0 }, { 0.5, -0.5, 0 }, 0.5 },
|
||||
{ _("Hann, none"), 2, { 0.5, -0.5, 0 }, { 1, 0, 0 }, 0.5 },
|
||||
{ _("Hann, Hann (default)"), 4, { 0.5, -0.5, 0 }, { 0.5, -0.5, 0 }, 0.375 },
|
||||
{ _("Blackman, Hann"), 4, { 0.42, -0.5, 0.08 }, { 0.5, -0.5, 0 }, 0.335 },
|
||||
{ _("Hamming, none"), 2, { 0.54, -0.46, 0.0 }, { 1, 0, 0 }, 0.54 },
|
||||
{ _("Hamming, Hann"), 4, { 0.54, -0.46, 0.0 }, { 0.5, -0.5, 0 }, 0.385 },
|
||||
{ _("Hamming, Reciprocal Hamming"), 2, { 0.54, -0.46, 0.0 }, { 1, 0, 0 }, 1.0 }, // output window is special
|
||||
// Experimental only, don't need translations
|
||||
{ wxT("none, Hann (2.0.6 behavior)"), 2, { 1, 0, 0 }, { 0.5, -0.5, 0 }, 0.5 },
|
||||
{ wxT("Hann, none"), 2, { 0.5, -0.5, 0 }, { 1, 0, 0 }, 0.5 },
|
||||
{ wxT("Hann, Hann (default)"), 4, { 0.5, -0.5, 0 }, { 0.5, -0.5, 0 }, 0.375 },
|
||||
{ wxT("Blackman, Hann"), 4, { 0.42, -0.5, 0.08 }, { 0.5, -0.5, 0 }, 0.335 },
|
||||
{ wxT("Hamming, none"), 2, { 0.54, -0.46, 0.0 }, { 1, 0, 0 }, 0.54 },
|
||||
{ wxT("Hamming, Hann"), 4, { 0.54, -0.46, 0.0 }, { 0.5, -0.5, 0 }, 0.385 },
|
||||
{ wxT("Hamming, Reciprocal Hamming"), 2, { 0.54, -0.46, 0.0 }, { 1, 0, 0 }, 1.0 }, // output window is special
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
@ -223,7 +223,7 @@ ExportFFmpeg::ExportFFmpeg()
|
|||
}
|
||||
|
||||
SetMaxChannels(ExportFFmpegOptions::fmts[newfmt].maxchannels,fmtindex);
|
||||
SetDescription(ExportFFmpegOptions::fmts[newfmt].description,fmtindex);
|
||||
SetDescription(ExportFFmpegOptions::fmts[newfmt].Description(), fmtindex);
|
||||
|
||||
int canmeta = ExportFFmpegOptions::fmts[newfmt].canmetadata;
|
||||
if (canmeta && (canmeta == AV_VERSION_INT(-1,-1,-1) || canmeta <= avfver))
|
||||
|
@ -872,8 +872,8 @@ ProgressResult ExportFFmpeg::Export(AudacityProject *project,
|
|||
{
|
||||
ProgressDialog progress(wxFileName(fName).GetName(),
|
||||
selectionOnly ?
|
||||
wxString::Format(_("Exporting selected audio as %s"), ExportFFmpegOptions::fmts[mSubFormat].description) :
|
||||
wxString::Format(_("Exporting entire file as %s"), ExportFFmpegOptions::fmts[mSubFormat].description));
|
||||
wxString::Format(_("Exporting selected audio as %s"), ExportFFmpegOptions::fmts[mSubFormat].Description()) :
|
||||
wxString::Format(_("Exporting entire file as %s"), ExportFFmpegOptions::fmts[mSubFormat].Description()));
|
||||
|
||||
while (updateResult == ProgressResult::Success) {
|
||||
auto pcmNumSamples = mixer->Process(pcmBufferSize);
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
#include "../Prefs.h"
|
||||
#include "../Project.h"
|
||||
#include "../Tags.h"
|
||||
#include "../TranslatableStringArray.h"
|
||||
|
||||
#include "Export.h"
|
||||
|
||||
|
@ -1191,23 +1192,44 @@ int ExportFFmpegOptions::iAACProfileValues[] = {
|
|||
};
|
||||
|
||||
/// Names of AAC profiles to be displayed
|
||||
const wxChar *ExportFFmpegOptions::iAACProfileNames[] = {
|
||||
_("LC"),
|
||||
_("Main"),
|
||||
/*_("SSR"),*/ //SSR is not supported
|
||||
_("LTP")
|
||||
};
|
||||
static wxString iAACProfileNames(int index)
|
||||
{
|
||||
static const wxString names[] = {
|
||||
XO("LC"),
|
||||
XO("Main"),
|
||||
/*_("SSR"),*/ //SSR is not supported
|
||||
XO("LTP")
|
||||
};
|
||||
|
||||
class NamesArray final : public TranslatableStringArray
|
||||
{
|
||||
void Populate() override
|
||||
{
|
||||
for (auto &name : names)
|
||||
mContents.push_back( wxGetTranslation( name ) );
|
||||
}
|
||||
};
|
||||
|
||||
static NamesArray theArray;
|
||||
|
||||
return theArray.Get()[ index ];
|
||||
}
|
||||
|
||||
/// List of export types
|
||||
ExposedFormat ExportFFmpegOptions::fmts[] =
|
||||
{
|
||||
{FMT_M4A, wxT("M4A"), wxT("m4a"), wxT("ipod"), 48, AV_VERSION_INT(-1,-1,-1), true, _("M4A (AAC) Files (FFmpeg)"), AV_CODEC_ID_AAC, true},
|
||||
{FMT_AC3, wxT("AC3"), wxT("ac3"), wxT("ac3"), 7, AV_VERSION_INT(0,0,0), false, _("AC3 Files (FFmpeg)"), AV_CODEC_ID_AC3, true},
|
||||
{FMT_AMRNB, wxT("AMRNB"), wxT("amr"), wxT("amr"), 1, AV_VERSION_INT(0,0,0), false, _("AMR (narrow band) Files (FFmpeg)"), AV_CODEC_ID_AMR_NB, true},
|
||||
{FMT_WMA2, wxT("WMA"), wxT("wma"), wxT("asf"), 2, AV_VERSION_INT(52,53,0), false, _("WMA (version 2) Files (FFmpeg)"), AV_CODEC_ID_WMAV2, true},
|
||||
{FMT_OTHER, wxT("FFMPEG"), wxT(""), wxT(""), 255, AV_VERSION_INT(-1,-1,-1), true, _("Custom FFmpeg Export"), AV_CODEC_ID_NONE, true}
|
||||
{FMT_M4A, wxT("M4A"), wxT("m4a"), wxT("ipod"), 48, AV_VERSION_INT(-1,-1,-1), true, XO("M4A (AAC) Files (FFmpeg)"), AV_CODEC_ID_AAC, true},
|
||||
{FMT_AC3, wxT("AC3"), wxT("ac3"), wxT("ac3"), 7, AV_VERSION_INT(0,0,0), false, XO("AC3 Files (FFmpeg)"), AV_CODEC_ID_AC3, true},
|
||||
{FMT_AMRNB, wxT("AMRNB"), wxT("amr"), wxT("amr"), 1, AV_VERSION_INT(0,0,0), false, XO("AMR (narrow band) Files (FFmpeg)"), AV_CODEC_ID_AMR_NB, true},
|
||||
{FMT_WMA2, wxT("WMA"), wxT("wma"), wxT("asf"), 2, AV_VERSION_INT(52,53,0), false, XO("WMA (version 2) Files (FFmpeg)"), AV_CODEC_ID_WMAV2, true},
|
||||
{FMT_OTHER, wxT("FFMPEG"), wxT(""), wxT(""), 255, AV_VERSION_INT(-1,-1,-1), true, XO("Custom FFmpeg Export"), AV_CODEC_ID_NONE, true}
|
||||
};
|
||||
|
||||
wxString ExposedFormat::Description() const
|
||||
{
|
||||
return wxGetTranslation(description_);
|
||||
}
|
||||
|
||||
/// Sample rates supported by AAC encoder (must end with zero-element)
|
||||
const int ExportFFmpegOptions::iAACSampleRates[] = { 7350, 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 0 };
|
||||
|
||||
|
@ -1297,7 +1319,31 @@ ApplicableFor ExportFFmpegOptions::apptable[] =
|
|||
};
|
||||
|
||||
/// Prediction order method - names. Labels are indices of this array.
|
||||
const wxChar *ExportFFmpegOptions::PredictionOrderMethodNames[] = { _("Estimate"), _("2-level"), _("4-level"), _("8-level"), _("Full search"), _("Log search")};
|
||||
static wxString PredictionOrderMethodNames(int index)
|
||||
{
|
||||
static const wxString names[] = {
|
||||
XO("Estimate"),
|
||||
XO("2-level"),
|
||||
XO("4-level"),
|
||||
XO("8-level"),
|
||||
XO("Full search"),
|
||||
XO("Log search")
|
||||
};
|
||||
|
||||
class NamesArray final : public TranslatableStringArray
|
||||
{
|
||||
void Populate() override
|
||||
{
|
||||
for (auto &name : names)
|
||||
mContents.push_back( wxGetTranslation( name ) );
|
||||
}
|
||||
};
|
||||
|
||||
static NamesArray theArray;
|
||||
|
||||
return theArray.Get()[ index ];
|
||||
}
|
||||
|
||||
|
||||
|
||||
ExportFFmpegOptions::~ExportFFmpegOptions()
|
||||
|
@ -1325,12 +1371,12 @@ ExportFFmpegOptions::ExportFFmpegOptions(wxWindow *parent)
|
|||
for (unsigned int i = 0; i < 6; i++)
|
||||
{
|
||||
mPredictionOrderMethodLabels.Add(i);
|
||||
mPredictionOrderMethodNames.Add(wxString::Format(wxT("%s"),PredictionOrderMethodNames[i]));
|
||||
mPredictionOrderMethodNames.Add(wxString::Format(wxT("%s"),PredictionOrderMethodNames(i)));
|
||||
}
|
||||
|
||||
for (unsigned int i=0; i < (sizeof(iAACProfileValues)/sizeof(int)); i++)
|
||||
{
|
||||
mProfileNames.Add(wxString::Format(wxT("%s"),iAACProfileNames[i]));
|
||||
mProfileNames.Add(wxString::Format(wxT("%s"),iAACProfileNames(i)));
|
||||
mProfileLabels.Add(iAACProfileValues[i]);
|
||||
}
|
||||
|
||||
|
|
|
@ -44,9 +44,11 @@ struct ExposedFormat
|
|||
unsigned maxchannels; //!< how many channels this format could handle
|
||||
int canmetadata; //!< !=0 if format supports metadata, -1 any avformat version, otherwise version support added
|
||||
bool canutf8; //!< true if format supports metadata in UTF-8, false otherwise
|
||||
const wxChar *description; //!< format description (will be shown in export dialog)
|
||||
const wxChar *description_; //!< format description (will be shown in export dialog) (untranslated!)
|
||||
AVCodecID codecid; //!< codec ID (see libavcodec/avcodec.h)
|
||||
bool compiledIn; //!< support for this codec/format is compiled in (checked at runtime)
|
||||
|
||||
wxString Description() const; // get translation
|
||||
};
|
||||
|
||||
|
||||
|
@ -199,11 +201,9 @@ public:
|
|||
// Static tables
|
||||
static CompatibilityEntry CompatibilityList[];
|
||||
static int iAACProfileValues[];
|
||||
static const wxChar *iAACProfileNames[];
|
||||
static ExposedFormat fmts[];
|
||||
static const int iAACSampleRates[];
|
||||
static ApplicableFor apptable[];
|
||||
static const wxChar *PredictionOrderMethodNames[];
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -197,6 +197,20 @@ different formats.
|
|||
* Used in an array to hold the built-in time formats that are always available
|
||||
* to the user */
|
||||
struct BuiltinFormatString
|
||||
{
|
||||
wxString name;
|
||||
wxString formatStr;
|
||||
};
|
||||
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// UntranslatedBuiltinFormatString Struct
|
||||
// ----------------------------------------------------------------------------
|
||||
//
|
||||
/** \brief struct to hold a formatting control string and its untranslated name
|
||||
* Used in an array to hold the built-in time formats that are always available
|
||||
* to the user */
|
||||
struct UntranslatedBuiltinFormatString
|
||||
{
|
||||
wxString name;
|
||||
wxString formatStr;
|
||||
|
@ -282,74 +296,74 @@ const std::vector<BuiltinFormatString> &TimeConverterFormats() {
|
|||
* array of string pairs for name of the format and the format string
|
||||
* needed to create that format output. This is used for the pop-up
|
||||
* list of formats to choose from in the control. */
|
||||
static const BuiltinFormatString TimeConverterFormats_[] = {
|
||||
static const UntranslatedBuiltinFormatString TimeConverterFormats_[] = {
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in seconds */
|
||||
_("seconds"),
|
||||
XO("seconds"),
|
||||
/* i18n-hint: Format string for displaying time in seconds. Change the comma
|
||||
* in the middle to the 1000s separator for your locale, and the 'seconds'
|
||||
* on the end to the word for seconds. Don't change the numbers. */
|
||||
_("01000,01000 seconds")
|
||||
XO("01000,01000 seconds")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours, minutes
|
||||
* and seconds */
|
||||
_("hh:mm:ss"),
|
||||
XO("hh:mm:ss"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes and
|
||||
* seconds. Change the 'h' to the abbreviation for hours, 'm' to the
|
||||
* abbreviation for minutes and 's' to the abbreviation for seconds. Don't
|
||||
* change the numbers unless there aren't 60 seconds in a minute in your
|
||||
* locale */
|
||||
_("0100 h 060 m 060 s")
|
||||
XO("0100 h 060 m 060 s")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in days, hours,
|
||||
* minutes and seconds */
|
||||
_("dd:hh:mm:ss"),
|
||||
XO("dd:hh:mm:ss"),
|
||||
/* i18n-hint: Format string for displaying time in days, hours, minutes and
|
||||
* seconds. Change the 'days' to the word for days, 'h' to the abbreviation
|
||||
* for hours, 'm' to the abbreviation for minutes and 's' to the
|
||||
* abbreviation for seconds. Don't change the numbers unless there aren't
|
||||
* 24 hours in a day in your locale */
|
||||
_("0100 days 024 h 060 m 060 s")
|
||||
XO("0100 days 024 h 060 m 060 s")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours,
|
||||
* minutes, seconds and hundredths of a second (1/100 second) */
|
||||
_("hh:mm:ss + hundredths"),
|
||||
XO("hh:mm:ss + hundredths"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes, seconds
|
||||
* and hundredths of a second. Change the 'h' to the abbreviation for hours,
|
||||
* 'm' to the abbreviation for minutes and 's' to the abbreviation for seconds
|
||||
* (the hundredths are shown as decimal seconds) . Don't change the numbers
|
||||
* unless there aren't 60 minutes in an hour in your locale */
|
||||
_("0100 h 060 m 060.0100 s")
|
||||
XO("0100 h 060 m 060.0100 s")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours,
|
||||
* minutes, seconds and milliseconds (1/1000 second) */
|
||||
_("hh:mm:ss + milliseconds"),
|
||||
XO("hh:mm:ss + milliseconds"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes, seconds
|
||||
* and milliseconds. Change the 'h' to the abbreviation for hours, 'm' to the
|
||||
* abbreviation for minutes and 's' to the abbreviation for seconds (the
|
||||
* milliseconds are shown as decimal seconds) . Don't change the numbers
|
||||
* unless there aren't 60 minutes in an hour in your locale */
|
||||
_("0100 h 060 m 060.01000 s")
|
||||
XO("0100 h 060 m 060.01000 s")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours,
|
||||
* minutes, seconds and samples (at the current project sample rate) */
|
||||
_("hh:mm:ss + samples"),
|
||||
XO("hh:mm:ss + samples"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes, seconds
|
||||
* and samples. Change the 'h' to the abbreviation for hours, 'm' to the
|
||||
* abbreviation for minutes, 's' to the abbreviation for seconds and
|
||||
* translate samples . Don't change the numbers
|
||||
* unless there aren't 60 seconds in a minute in your locale */
|
||||
_("0100 h 060 m 060 s+.# samples")
|
||||
XO("0100 h 060 m 060 s+.# samples")
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -357,116 +371,116 @@ static const BuiltinFormatString TimeConverterFormats_[] = {
|
|||
* current project sample rate). For example the number of a sample at 1
|
||||
* second into a recording at 44.1KHz would be 44,100.
|
||||
*/
|
||||
_("samples"),
|
||||
XO("samples"),
|
||||
/* i18n-hint: Format string for displaying time in samples (lots of samples).
|
||||
* Change the ',' to the 1000s separator for your locale, and translate
|
||||
* samples. If 1000s aren't a base multiple for your number system, then you
|
||||
* can change the numbers to an appropriate one, and put a 0 on the front */
|
||||
_("01000,01000,01000 samples|#")
|
||||
XO("01000,01000,01000 samples|#")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours, minutes,
|
||||
* seconds and frames at 24 frames per second (commonly used for films) */
|
||||
_("hh:mm:ss + film frames (24 fps)"),
|
||||
XO("hh:mm:ss + film frames (24 fps)"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes, seconds
|
||||
* and frames at 24 frames per second. Change the 'h' to the abbreviation
|
||||
* for hours, 'm' to the abbreviation for minutes, 's' to the abbreviation
|
||||
* for seconds and translate 'frames' . Don't change the numbers
|
||||
* unless there aren't 60 seconds in a minute in your locale */
|
||||
_("0100 h 060 m 060 s+.24 frames")
|
||||
XO("0100 h 060 m 060 s+.24 frames")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in frames (lots of
|
||||
* frames) at 24 frames per second (commonly used for films) */
|
||||
_("film frames (24 fps)"),
|
||||
XO("film frames (24 fps)"),
|
||||
/* i18n-hint: Format string for displaying time in frames at 24 frames per
|
||||
* second. Change the comma
|
||||
* in the middle to the 1000s separator for your locale,
|
||||
* translate 'frames' and leave the rest alone */
|
||||
_("01000,01000 frames|24")
|
||||
XO("01000,01000 frames|24")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours, minutes,
|
||||
* seconds and frames at NTSC TV drop-frame rate (used for American /
|
||||
* Japanese TV, and very odd) */
|
||||
_("hh:mm:ss + NTSC drop frames"),
|
||||
XO("hh:mm:ss + NTSC drop frames"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes, seconds
|
||||
* and frames with NTSC drop frames. Change the 'h' to the abbreviation
|
||||
* for hours, 'm' to the abbreviation for minutes, 's' to the abbreviation
|
||||
* for seconds and translate 'frames'. Leave the |N alone, it's important! */
|
||||
_("0100 h 060 m 060 s+.30 frames|N")
|
||||
XO("0100 h 060 m 060 s+.30 frames|N")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours, minutes,
|
||||
* seconds and frames at NTSC TV non-drop-frame rate (used for American /
|
||||
* Japanese TV, and doesn't quite match wall time */
|
||||
_("hh:mm:ss + NTSC non-drop frames"),
|
||||
XO("hh:mm:ss + NTSC non-drop frames"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes, seconds
|
||||
* and frames with NTSC drop frames. Change the 'h' to the abbreviation
|
||||
* for hours, 'm' to the abbreviation for minutes, 's' to the abbreviation
|
||||
* for seconds and translate 'frames'. Leave the | .999000999 alone,
|
||||
* the whole things really is slightly off-speed! */
|
||||
_("0100 h 060 m 060 s+.030 frames| .999000999")
|
||||
XO("0100 h 060 m 060 s+.030 frames| .999000999")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in frames at NTSC
|
||||
* TV frame rate (used for American / Japanese TV */
|
||||
_("NTSC frames"),
|
||||
XO("NTSC frames"),
|
||||
/* i18n-hint: Format string for displaying time in frames with NTSC frames.
|
||||
* Change the comma
|
||||
* in the middle to the 1000s separator for your locale,
|
||||
* translate 'frames' and leave the rest alone. That really is the frame
|
||||
* rate! */
|
||||
_("01000,01000 frames|29.97002997")
|
||||
XO("01000,01000 frames|29.97002997")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours, minutes,
|
||||
* seconds and frames at PAL TV frame rate (used for European TV) */
|
||||
_("hh:mm:ss + PAL frames (25 fps)"),
|
||||
XO("hh:mm:ss + PAL frames (25 fps)"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes, seconds
|
||||
* and frames with PAL TV frames. Change the 'h' to the abbreviation
|
||||
* for hours, 'm' to the abbreviation for minutes, 's' to the abbreviation
|
||||
* for seconds and translate 'frames'. Nice simple time code! */
|
||||
_("0100 h 060 m 060 s+.25 frames")
|
||||
XO("0100 h 060 m 060 s+.25 frames")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in frames at PAL
|
||||
* TV frame rate (used for European TV) */
|
||||
_("PAL frames (25 fps)"),
|
||||
XO("PAL frames (25 fps)"),
|
||||
/* i18n-hint: Format string for displaying time in frames with NTSC frames.
|
||||
* Change the comma
|
||||
* in the middle to the 1000s separator for your locale,
|
||||
* translate 'frames' and leave the rest alone. */
|
||||
_("01000,01000 frames|25")
|
||||
XO("01000,01000 frames|25")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in hours, minutes,
|
||||
* seconds and frames at CD Audio frame rate (75 frames per second) */
|
||||
_("hh:mm:ss + CDDA frames (75 fps)"),
|
||||
XO("hh:mm:ss + CDDA frames (75 fps)"),
|
||||
/* i18n-hint: Format string for displaying time in hours, minutes, seconds
|
||||
* and frames with CD Audio frames. Change the 'h' to the abbreviation
|
||||
* for hours, 'm' to the abbreviation for minutes, 's' to the abbreviation
|
||||
* for seconds and translate 'frames'. */
|
||||
_("0100 h 060 m 060 s+.75 frames")
|
||||
XO("0100 h 060 m 060 s+.75 frames")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of time display format that shows time in frames at CD
|
||||
* Audio frame rate (75 frames per second) */
|
||||
_("CDDA frames (75 fps)"),
|
||||
XO("CDDA frames (75 fps)"),
|
||||
/* i18n-hint: Format string for displaying time in frames with CD Audio
|
||||
* frames. Change the comma
|
||||
* in the middle to the 1000s separator for your locale,
|
||||
* translate 'frames' and leave the rest alone */
|
||||
_("01000,01000 frames|75")
|
||||
XO("01000,01000 frames|75")
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -491,20 +505,20 @@ const std::vector<BuiltinFormatString> &FrequencyConverterFormats() {
|
|||
* array of string pairs for name of the format and the format string
|
||||
* needed to create that format output. This is used for the pop-up
|
||||
* list of formats to choose from in the control. */
|
||||
static const BuiltinFormatString FrequencyConverterFormats_[] = {
|
||||
static const UntranslatedBuiltinFormatString FrequencyConverterFormats_[] = {
|
||||
/* i18n-hint: Name of display format that shows frequency in hertz */
|
||||
{
|
||||
_("Hz"),
|
||||
XO("Hz"),
|
||||
/* i18n-hint: Format string for displaying frequency in hertz. Change
|
||||
* the decimal point for your locale. Don't change the numbers. */
|
||||
_("0100000.0100 Hz")
|
||||
XO("0100000.0100 Hz")
|
||||
},
|
||||
|
||||
{
|
||||
_("kHz"),
|
||||
XO("kHz"),
|
||||
/* i18n-hint: Format string for displaying frequency in kilohertz. Change
|
||||
* the decimal point for your locale. Don't change the numbers. */
|
||||
_("01000.01000 kHz|0.001")
|
||||
XO("01000.01000 kHz|0.001")
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -529,36 +543,36 @@ const std::vector<BuiltinFormatString> &BandwidthConverterFormats() {
|
|||
* array of string pairs for name of the format and the format string
|
||||
* needed to create that format output. This is used for the pop-up
|
||||
* list of formats to choose from in the control. */
|
||||
static const BuiltinFormatString BandwidthConverterFormats_[] = {
|
||||
static const UntranslatedBuiltinFormatString BandwidthConverterFormats_[] = {
|
||||
{
|
||||
/* i18n-hint: Name of display format that shows log of frequency
|
||||
* in octaves */
|
||||
_("octaves"),
|
||||
XO("octaves"),
|
||||
/* i18n-hint: Format string for displaying log of frequency in octaves.
|
||||
* Change the decimal points for your locale. Don't change the numbers. */
|
||||
// Scale factor is 1 / ln (2)
|
||||
_("100.01000 octaves|1.442695041")
|
||||
XO("100.01000 octaves|1.442695041")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of display format that shows log of frequency
|
||||
* in semitones and cents */
|
||||
_("semitones + cents"),
|
||||
XO("semitones + cents"),
|
||||
/* i18n-hint: Format string for displaying log of frequency in semitones
|
||||
* and cents.
|
||||
* Change the decimal points for your locale. Don't change the numbers. */
|
||||
// Scale factor is 12 / ln (2)
|
||||
_("1000 semitones .0100 cents|17.312340491")
|
||||
XO("1000 semitones .0100 cents|17.312340491")
|
||||
},
|
||||
|
||||
{
|
||||
/* i18n-hint: Name of display format that shows log of frequency
|
||||
* in decades */
|
||||
_("decades"),
|
||||
XO("decades"),
|
||||
/* i18n-hint: Format string for displaying log of frequency in decades.
|
||||
* Change the decimal points for your locale. Don't change the numbers. */
|
||||
// Scale factor is 1 / ln (10)
|
||||
_("10.01000 decades|0.434294482")
|
||||
XO("10.01000 decades|0.434294482")
|
||||
},
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue