diff options
author | Florian Jung <flo@windfisch.org> | 2011-09-16 14:50:34 +0000 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2011-09-16 14:50:34 +0000 |
commit | 663b022ab88acc47a5df898aa8df10d2e6422ba1 (patch) | |
tree | e808adc272cb15357840c504fa83038ffeed2f91 | |
parent | cc28402b688bd757a6ffe32f582b0c0c967a677a (diff) |
fixed wrong usages of tr() like:
QString::toNumber(num) + ( num > 1 ? tr("parts") : tr("part")) or
tr("file ")+ filename +tr(" could not be loaded")
and commited scripts to find such errors
-rwxr-xr-x | muse2/find_manual_plural.sh | 20 | ||||
-rwxr-xr-x | muse2/find_translation_concatenation.sh | 16 | ||||
-rw-r--r-- | muse2/muse/app.cpp | 8 | ||||
-rw-r--r-- | muse2/muse/arranger/pcanvas.cpp | 7 | ||||
-rw-r--r-- | muse2/muse/importmidi.cpp | 5 | ||||
-rw-r--r-- | muse2/muse/instruments/editinstrument.cpp | 14 | ||||
-rw-r--r-- | muse2/muse/song.cpp | 3 | ||||
-rw-r--r-- | muse2/muse/widgets/filedialog.cpp | 8 | ||||
-rw-r--r-- | muse2/muse/widgets/pastedialog.cpp | 4 | ||||
-rw-r--r-- | muse2/muse/widgets/pasteeventsdialog.cpp | 4 | ||||
-rw-r--r-- | muse2/muse/widgets/routepopup.cpp | 2 | ||||
-rw-r--r-- | muse2/muse/widgets/shortcutcapturedialog.cpp | 2 |
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; } |