summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmuse2/find_manual_plural.sh20
-rwxr-xr-xmuse2/find_translation_concatenation.sh16
-rw-r--r--muse2/muse/app.cpp8
-rw-r--r--muse2/muse/arranger/pcanvas.cpp7
-rw-r--r--muse2/muse/importmidi.cpp5
-rw-r--r--muse2/muse/instruments/editinstrument.cpp14
-rw-r--r--muse2/muse/song.cpp3
-rw-r--r--muse2/muse/widgets/filedialog.cpp8
-rw-r--r--muse2/muse/widgets/pastedialog.cpp4
-rw-r--r--muse2/muse/widgets/pasteeventsdialog.cpp4
-rw-r--r--muse2/muse/widgets/routepopup.cpp2
-rw-r--r--muse2/muse/widgets/shortcutcapturedialog.cpp2
12 files changed, 62 insertions, 31 deletions
diff --git a/muse2/find_manual_plural.sh b/muse2/find_manual_plural.sh
new file mode 100755
index 00000000..3e77f304
--- /dev/null
+++ b/muse2/find_manual_plural.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+# this script tries to find all "bad" code like
+# (number > 1 ? tr ("tracks") : tr("track"))
+# that is, all manual plural diversifications
+# you should replace them by:
+# tr("processed %n track(s)", "", number)
+# the "" is a translator comment. you may write what you want
+#
+# you have to create appropriate translations for this (even for
+# english!). linguist will ask you for the singular, plural,
+# and in some language even paucal form then.
+#
+# this script is not perfect. it misses some "bad" things, and
+# finds some "good" things.
+
+{
+find . -iname '*.cpp' -print0 | xargs -0 grep -E '[^:]: *tr *\("[^"]*".*\)'
+find . -iname '*.cpp' -print0 | xargs -0 grep -E '\? *tr *\("[^"]*".*\)'
+} | sort | uniq
diff --git a/muse2/find_translation_concatenation.sh b/muse2/find_translation_concatenation.sh
new file mode 100755
index 00000000..644944f1
--- /dev/null
+++ b/muse2/find_translation_concatenation.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+# this script tries to find all "bad" code like
+# tr("the file ") + your_file + tr(" could not be loaded!")
+# you should replace it by:
+# tr("the file %1 could not be loaded!").arg(your_file)
+#
+# this script is not perfect. it misses some "bad" things, and
+# finds some "good" things.
+
+{
+find . -iname '*.cpp' -print0 | xargs -0 grep -E 'tr *\("[^"]*" *\) *\+';
+find . -iname '*.cpp' -print0 | xargs -0 grep -E '\+ *tr *\("[^"]*" *\)';
+} | sort | uniq
+
+
diff --git a/muse2/muse/app.cpp b/muse2/muse/app.cpp
index 3d52e4f2..7c716464 100644
--- a/muse2/muse/app.cpp
+++ b/muse2/muse/app.cpp
@@ -1218,7 +1218,7 @@ void MusE::loadProjectFile1(const QString& name, bool songTemplate, bool loadAll
}
else {
QMessageBox::critical(this, QString("MusE"),
- tr("Unknown File Format: ") + ex);
+ tr("Unknown File Format: %1").arg(ex));
setUntitledProject();
}
if (!songTemplate) {
@@ -1348,7 +1348,7 @@ void MusE::setUntitledProject()
QString name("untitled");
MusEGlobal::museProject = "./"; //QFileInfo(name).absolutePath();
project.setFile(name);
- setWindowTitle(tr("MusE: Song: ") + project.completeBaseName());
+ setWindowTitle(tr("MusE: Song: %1").arg(project.completeBaseName()));
}
//---------------------------------------------------------
@@ -1756,7 +1756,7 @@ bool MusE::saveAs()
ok = save(name, true);
if (ok) {
project.setFile(name);
- setWindowTitle(tr("MusE: Song: ") + project.completeBaseName());
+ setWindowTitle(tr("MusE: Song: %1").arg(project.completeBaseName()));
addProject(name);
}
else
@@ -2651,7 +2651,7 @@ MusE::lash_idle_cb ()
int ok = save (ss.toAscii(), false);
if (ok) {
project.setFile(ss.toAscii());
- setWindowTitle(tr("MusE: Song: ") + project.completeBaseName());
+ setWindowTitle(tr("MusE: Song: %1").arg(project.completeBaseName()));
addProject(ss.toAscii());
MusEGlobal::museProject = QFileInfo(ss.toAscii()).absolutePath();
}
diff --git a/muse2/muse/arranger/pcanvas.cpp b/muse2/muse/arranger/pcanvas.cpp
index 10cd9735..9e27ca41 100644
--- a/muse2/muse/arranger/pcanvas.cpp
+++ b/muse2/muse/arranger/pcanvas.cpp
@@ -771,7 +771,7 @@ void PartCanvas::itemPopup(MusEWidget::CItem* item, int n, const QPoint& pt)
{
Part* p = item->part();
EventList* el = p->events();
- QString str = tr("Part name") + ": " + p->name() + "\n" + tr("Files") + ":";
+ QString str = tr("Part name: %1\nFiles:").arg(p->name());
for (iEvent e = el->begin(); e != el->end(); ++e)
{
Event event = e->second;
@@ -2861,9 +2861,8 @@ Undo PartCanvas::pasteAt(const QString& pt, Track* track, unsigned int pos, bool
{
int tot = notDone + done;
QMessageBox::critical(this, QString("MusE"),
- QString().setNum(notDone) + (tot > 1 ? (tr(" out of ") + QString().setNum(tot)) : QString("")) +
- (tot > 1 ? tr(" parts") : tr(" part")) +
- tr(" could not be pasted.\nLikely the selected track is the wrong type."));
+ (tot > 1 ? tr("%n part(s) out of %1 could not be pasted.\nLikely the selected track is the wrong type.","",notDone).arg(tot)
+ : tr("%n part(s) could not be pasted.\nLikely the selected track is the wrong type.","",notDone)));
}
if (finalPosPtr) *finalPosPtr=finalPos;
diff --git a/muse2/muse/importmidi.cpp b/muse2/muse/importmidi.cpp
index fd690671..558ffb69 100644
--- a/muse2/muse/importmidi.cpp
+++ b/muse2/muse/importmidi.cpp
@@ -618,9 +618,8 @@ void MusE::importPartToTrack(QString& filename, unsigned tick, Track* track)
{
int tot = notDone + done;
QMessageBox::critical(this, QString("MusE"),
- QString().setNum(notDone) + (tot > 1 ? (tr(" out of ") + QString().setNum(tot)) : QString("")) +
- (tot > 1 ? tr(" parts") : tr(" part")) +
- tr(" could not be imported.\nLikely the track is the wrong type."));
+ (tot > 1 ? tr("%n part(s) out of %1 could not be imported.\nLikely the selected track is the wrong type.","",notDone).arg(tot)
+ : tr("%n part(s) could not be imported.\nLikely the selected track is the wrong type.","",notDone)));
}
return;
diff --git a/muse2/muse/instruments/editinstrument.cpp b/muse2/muse/instruments/editinstrument.cpp
index 49bdd6c2..e1639d04 100644
--- a/muse2/muse/instruments/editinstrument.cpp
+++ b/muse2/muse/instruments/editinstrument.cpp
@@ -408,7 +408,7 @@ void EditInstrument::saveAs()
{
if(QMessageBox::question(this,
tr("MusE:"),
- tr("The user instrument directory\n") + MusEGlobal::museUserInstruments + tr("\ndoes not exist yet. Create it now?\n") +
+ tr("The user instrument directory\n%1\ndoes not exist yet. Create it now?\n").arg(MusEGlobal::museUserInstruments) +
tr("(You can change the user instruments directory at Settings->Global Settings->Midi)"),
QMessageBox::Ok | QMessageBox::Default,
QMessageBox::Cancel | QMessageBox::Escape,
@@ -419,7 +419,7 @@ void EditInstrument::saveAs()
else
{
printf("Unable to create user instrument directory: %s\n", MusEGlobal::museUserInstruments.toLatin1().constData());
- QMessageBox::critical(this, tr("MusE:"), tr("Unable to create user instrument directory\n") + MusEGlobal::museUserInstruments);
+ QMessageBox::critical(this, tr("MusE:"), tr("Unable to create user instrument directory '%1'").arg(MusEGlobal::museUserInstruments));
//return;
path = MusEGlobal::museUser;
}
@@ -610,7 +610,7 @@ void EditInstrument::fileSaveAs()
// Can not have two user files containing the same instrument name.
if(QMessageBox::question(this,
tr("MusE: Save instrument as"),
- tr("The user instrument:\n") + s + tr("\nalready exists. This will overwrite its .idf instrument file.\nAre you sure?"),
+ tr("The user instrument '%1' already exists. This will overwrite its .idf instrument file.\nAre you sure?").arg(s),
QMessageBox::Ok | QMessageBox::Default,
QMessageBox::Cancel | QMessageBox::Escape,
Qt::NoButton) == QMessageBox::Ok)
@@ -700,7 +700,7 @@ void EditInstrument::fileSaveAs()
{
if(QMessageBox::question(this,
tr("MusE:"),
- tr("The user instrument directory\n") + MusEGlobal::museUserInstruments + tr("\ndoes not exist yet. Create it now?\n") +
+ tr("The user instrument directory\n%1\ndoes not exist yet. Create it now?\n").arg(MusEGlobal::museUserInstruments) +
tr("(You can change the user instruments directory at Settings->Global Settings->Midi)"),
QMessageBox::Ok | QMessageBox::Default,
QMessageBox::Cancel | QMessageBox::Escape,
@@ -711,7 +711,7 @@ void EditInstrument::fileSaveAs()
else
{
printf("Unable to create user instrument directory: %s\n", MusEGlobal::museUserInstruments.toLatin1().constData());
- QMessageBox::critical(this, tr("MusE:"), tr("Unable to create user instrument directory\n") + MusEGlobal::museUserInstruments);
+ QMessageBox::critical(this, tr("MusE:"), tr("Unable to create user instrument directory '%1'").arg(MusEGlobal::museUserInstruments));
//return;
path = MusEGlobal::museUser;
}
@@ -3111,7 +3111,7 @@ void EditInstrument::addControllerClicked()
{
QMessageBox::critical(this,
tr("MusE: Cannot add common controller"),
- tr("A controller named ") + name + tr(" already exists."),
+ tr("A controller named '%1' already exists.").arg(name),
QMessageBox::Ok,
Qt::NoButton,
Qt::NoButton);
@@ -3123,7 +3123,7 @@ void EditInstrument::addControllerClicked()
{
QMessageBox::critical(this,
tr("MusE: Cannot add common controller"),
- tr("A controller number ") + QString().setNum(num) + tr(" already exists."),
+ tr("A controller number %1 already exists.").arg(num),
QMessageBox::Ok,
Qt::NoButton,
Qt::NoButton);
diff --git a/muse2/muse/song.cpp b/muse2/muse/song.cpp
index 7adc37f3..29ed7023 100644
--- a/muse2/muse/song.cpp
+++ b/muse2/muse/song.cpp
@@ -3804,8 +3804,7 @@ void Song::executeScript(const char* scriptfile, PartList* parts, int quant, boo
if (myProcess->exitCode()) {
QMessageBox::warning(MusEGlobal::muse, tr("MusE - external script failed"),
- tr("MusE was unable to launch the script, error message:\n ")+ QString(errStr)
- );
+ tr("MusE was unable to launch the script, error message:\n%1").arg(QString(errStr)));
endUndo(SC_EVENT_REMOVED);
return;
}
diff --git a/muse2/muse/widgets/filedialog.cpp b/muse2/muse/widgets/filedialog.cpp
index 0df0fa7f..4e3c1fb2 100644
--- a/muse2/muse/widgets/filedialog.cpp
+++ b/muse2/muse/widgets/filedialog.cpp
@@ -78,8 +78,7 @@ static bool testDirCreate(QWidget* parent, const QString& path)
{
if(QMessageBox::information(parent,
QWidget::tr("MusE: get file name"),
- QWidget::tr("The directory\n") + path
- + QWidget::tr("\ndoes not exist.\nCreate it?"),
+ QWidget::tr("The directory\n%1\ndoes not exist.\nCreate it?").arg(path),
QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok) != QMessageBox::Ok)
return true;
@@ -483,7 +482,7 @@ FILE* fileOpen(QWidget* parent, QString name, const QString& ext,
}
if (strcmp(mode,"w") == 0 && overwriteWarning && info.exists()) {
- QString s(QWidget::tr("File\n") + name + QWidget::tr("\nexists. Overwrite?"));
+ QString s(QWidget::tr("File\n%1\nexists. Overwrite?").arg(name));
/*
int rv = QMessageBox::warning(parent,
QWidget::tr("MusE: write"),
@@ -516,8 +515,7 @@ FILE* fileOpen(QWidget* parent, QString name, const QString& ext,
fp = fopen(name.toAscii().data(), mode);
}
if (fp == 0 && !noError) {
- QString s(QWidget::tr("Open File\n") + name + QWidget::tr("\nfailed: ")
- + QString(strerror(errno)));
+ QString s(QWidget::tr("Open File\n%1\nfailed: %2").arg(name).arg(strerror(errno)));
QMessageBox::critical(parent, QWidget::tr("MusE: Open File"), s);
return 0;
}
diff --git a/muse2/muse/widgets/pastedialog.cpp b/muse2/muse/widgets/pastedialog.cpp
index 7c9c2248..bc031b30 100644
--- a/muse2/muse/widgets/pastedialog.cpp
+++ b/muse2/muse/widgets/pastedialog.cpp
@@ -85,9 +85,9 @@ QString PasteDialog::ticks_to_quarter_string(int ticks)
double quarters = (double) ticks/config.division;
bool one = ( quarters > 0.995 && quarters < 1.005 );
if (one)
- return QString::number(quarters, 'f', 2) + " " + tr("quarter");
+ return tr("%1 quarter", "for floating-point arguments like 1.5").arg(quarters, 0, 'f', 2);
else
- return QString::number(quarters, 'f', 2) + " " + tr("quarters");
+ return tr("%1 quarters", "for floating-point arguments like 1.5").arg(quarters, 0, 'f', 2);
}
}
diff --git a/muse2/muse/widgets/pasteeventsdialog.cpp b/muse2/muse/widgets/pasteeventsdialog.cpp
index 04b7cbd7..e8436711 100644
--- a/muse2/muse/widgets/pasteeventsdialog.cpp
+++ b/muse2/muse/widgets/pasteeventsdialog.cpp
@@ -99,9 +99,9 @@ QString PasteEventsDialog::ticks_to_quarter_string(int ticks)
double quarters = (double) ticks/config.division;
bool one = ( quarters > 0.995 && quarters < 1.005 );
if (one)
- return QString::number(quarters, 'f', 2) + " " + tr("quarter");
+ return tr("%1 quarter", "for floating-point arguments like 1.5").arg(quarters, 0, 'f', 2);
else
- return QString::number(quarters, 'f', 2) + " " + tr("quarters");
+ return tr("%1 quarters", "for floating-point arguments like 1.5").arg(quarters, 0, 'f', 2);
}
}
diff --git a/muse2/muse/widgets/routepopup.cpp b/muse2/muse/widgets/routepopup.cpp
index ec3f3ea0..0336f8ed 100644
--- a/muse2/muse/widgets/routepopup.cpp
+++ b/muse2/muse/widgets/routepopup.cpp
@@ -1152,7 +1152,7 @@ void RoutePopupMenu::prepare()
continue;
PopupMenu* subp = new PopupMenu(morep, true);
- subp->setTitle(QString("%1:").arg(i) + tr("<none>"));
+ subp->setTitle(QString("%1:%2").arg(i).arg(tr("<none>")));
// MusE-2: Check this - needed with QMenu? Help says no. No - verified, it actually causes double triggers!
//connect(subp, SIGNAL(triggered(QAction*)), pup, SIGNAL(triggered(QAction*)));
diff --git a/muse2/muse/widgets/shortcutcapturedialog.cpp b/muse2/muse/widgets/shortcutcapturedialog.cpp
index a470d698..26526f1e 100644
--- a/muse2/muse/widgets/shortcutcapturedialog.cpp
+++ b/muse2/muse/widgets/shortcutcapturedialog.cpp
@@ -105,7 +105,7 @@ void ShortcutCaptureDialog::keyPressEvent(QKeyEvent* e)
(( shortcuts[i].type & (shortcuts[shortcutindex].type | INVIS_SHRT)) ||
shortcuts[i].type & GLOBAL_SHRT ||
shortcuts[shortcutindex].type & GLOBAL_SHRT)) { // affect the same scope
- msgString = tr("Shortcut conflicts with ") + QString(shortcuts[i].descr);
+ msgString = tr("Shortcut conflicts with %1").arg(shortcuts[i].descr);
conflict = true;
break;
}