OSDN Git Service

Properly handle plurals in translation files.
authorLoRd_MuldeR <mulder2@gmx.de>
Wed, 23 Jan 2013 22:25:31 +0000 (23:25 +0100)
committerLoRd_MuldeR <mulder2@gmx.de>
Wed, 23 Jan 2013 22:25:31 +0000 (23:25 +0100)
34 files changed:
etc/Translation/Blank.ts
etc/Translation/LameXP_DE.ts
etc/Translation/LameXP_EN.ts [new file with mode: 0644]
etc/Translation/LameXP_ES.ts
etc/Translation/LameXP_FR.ts
etc/Translation/LameXP_IT.ts
etc/Translation/LameXP_KR.ts
etc/Translation/LameXP_PL.ts
etc/Translation/LameXP_RU.ts
etc/Translation/LameXP_SV.ts
etc/Translation/LameXP_TW.ts
etc/Translation/LameXP_UK.ts
etc/Translation/LameXP_ZH.ts
etc/Translation/update.bat
res/Localization.qrc
res/localization/LameXP_DE.qm
res/localization/LameXP_EN.qm [new file with mode: 0644]
res/localization/LameXP_EN.qm.txt [new file with mode: 0644]
res/localization/LameXP_ES.qm
res/localization/LameXP_FR.qm
res/localization/LameXP_IT.qm
res/localization/LameXP_KR.qm
res/localization/LameXP_PL.qm
res/localization/LameXP_RU.qm
res/localization/LameXP_SV.qm
res/localization/LameXP_TW.qm
res/localization/LameXP_UK.qm
res/localization/LameXP_ZH.qm
src/Config.h
src/Dialog_CueImport.cpp
src/Dialog_MainWindow.cpp
src/Dialog_Processing.cpp
src/Global.cpp
src/Global.h

index 8af490e..4f1f071 100644 (file)
         <source>Splitting file(s), please wait...</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation type="unfinished"></translation>
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
         <source>An unexpected error has occured while splitting the Cue Sheet!</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation type="unfinished"></translation>
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_CueImport.cpp" line="419"/>
         <source>Access Denied</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation type="unfinished"></translation>
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
         <source>CDDA Files</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation type="unfinished"></translation>
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
         <source>Cue Sheet</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation type="unfinished"></translation>
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
         <source>Files Rejected</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation type="unfinished"></translation>
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
         <source>Rename Macros</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_MainWindow.cpp" line="3837"/>
-        <source>%1 Instance(s)</source>
-        <translation type="unfinished"></translation>
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="3881"/>
         <source>Creating the playlist file, please wait...</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_Processing.cpp" line="608"/>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation type="unfinished"></translation>
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_Processing.cpp" line="608"/>
         <source>Cancel Shutdown</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="1290"/>
-        <source>hour(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_Processing.cpp" line="1291"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="1295"/>
-        <source>minute(s)</source>
-        <translation type="unfinished"></translation>
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
-    <message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1292"/>
         <location filename="../../src/Dialog_Processing.cpp" line="1296"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="1300"/>
-        <source>second(s)</source>
-        <translation type="unfinished"></translation>
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
-    <message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1297"/>
         <location filename="../../src/Dialog_Processing.cpp" line="1301"/>
-        <source>millisecond(s)</source>
-        <translation type="unfinished"></translation>
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1302"/>
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../../src/Global.cpp" line="850"/>
+        <location filename="../../src/Global.cpp" line="854"/>
         <source>Executable &apos;%1&apos; doesn&apos;t support Windows compatibility mode.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1104"/>
+        <location filename="../../src/Global.cpp" line="1108"/>
         <source>Executable &apos;%1&apos; requires Qt v%2, but found Qt v%3.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1109"/>
+        <location filename="../../src/Global.cpp" line="1113"/>
         <source>Executable &apos;%1&apos; was built for Qt &apos;%2&apos;, but found Qt &apos;%3&apos;.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1122"/>
-        <location filename="../../src/Global.cpp" line="1149"/>
+        <location filename="../../src/Global.cpp" line="1126"/>
+        <location filename="../../src/Global.cpp" line="1153"/>
         <source>Executable &apos;%1&apos; requires Windows 2000 or later.</source>
         <translation type="unfinished"></translation>
     </message>
index 10d5894..e375243 100644 (file)
         <translation>Beim Aufteilen des Cuesheets is ein unerwarteter Fehler aufgetreten!</translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation>%1 Datei(ein) wurden aus dem Cuesheet importiert. %2 Datei(en) übersprungen.</translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation>Cuesheet Abgeschlossen</translation>
     </message>
         <translation>Abbrechen</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation>Der Vorgang wurde vom Benutzter nach %1 Track(s) abgebrochen!</translation>
-    </message>
-    <message>
         <source>(System Default)</source>
         <translation>(Systemstandard)</translation>
     </message>
         <source>New Folder</source>
         <translation>Neuer Ordner</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation>
+            <numerusform>Der Vorgang wurde vom Benutzter nach %n Track abgebrochen!</numerusform>
+            <numerusform>Der Vorgang wurde vom Benutzter nach %n Tracks abgebrochen!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation>
+            <numerusform>%n Datei wurde aus dem Cuesheet importiert.</numerusform>
+            <numerusform>%n Dateiein wurden aus dem Cuesheet importiert.</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation>
+            <numerusform>%n Datei übersprungen.</numerusform>
+            <numerusform>%n Dateien übersprungen.</numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation>Ihr TEMP Verzeichnis befindet sich hier:</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation>%1 Datei(en) wurden abgewiesen, weil die Datei nicht geöffnet werden konnte!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation>Die Datei wird möglicherweise von einem anderen Prozess benutzt.</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation>%1 Datei(en) wurden abgewiesen, weil das Dateiformat nicht erkannt werden konnte!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation>Möglicherweise ist die Datei beschädigt oder das Dateiformat wird nicht unterstützt.</translation>
     </message>
         <translation>Mehr Instanzen</translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation>%1 Instanz(en)</translation>
-    </message>
-    <message>
         <source> Temp Directory </source>
         <translation> Temp-Verzeichnis </translation>
     </message>
         <translation>In das ausgewählte Verzeichnis kann nicht geschrieben werden. Bitte ein anderes Verzeichnis auswählen!</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation>%1 Datei(en) wurden abgewiesen, weil es sich um CDDA Platzhalter-Dateien handelt!</translation>
-    </message>
-    <message>
         <source>Sorry, LameXP cannot extract audio tracks from an Audio-CD at present.</source>
         <translation>LameXP ist derzeit leider nicht dazu in der Lage, Audio Tracks von einer Audio-CD zu extrahieren.</translation>
     </message>
         <translation>Cuesheet</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation>%1 Datei(en) wurden abgewiesen, weil es sich um Cuesheet Image-Dateien handelt!</translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation>Bitte benutzen Sie zum Importieren von Cuesheets den Cuesheet Assistenten.</translation>
     </message>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation>Opus-Dekodierer Abtastratenkonvertierung deaktivieren (d.h. immer 48.000 Hz ausgeben)</translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation>
+            <numerusform>%n Datei wurde abgewiesen, weil die Datei nicht geöffnet werden konnte!</numerusform>
+            <numerusform>%n Dateien wurden abgewiesen, weil die Dateien nicht geöffnet werden konnten!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation>
+            <numerusform>%n Datei wurde abgewiesen, weil es sich um eine CDDA Platzhalter-Datei handelt!</numerusform>
+            <numerusform>%n Dateien wurden abgewiesen, weil es sich um CDDA Platzhalter-Dateien handelt!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation>
+            <numerusform>%n Datei wurde abgewiesen, weil es sich um eine Cuesheet Image-Datei handelt!</numerusform>
+            <numerusform>%n Dateien wurden abgewiesen, weil es sich um Cuesheet Image-Dateien handelt!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation>
+            <numerusform>%n Datei wurden abgewiesen, weil das Dateiformat nicht erkannt werden konnte!</numerusform>
+            <numerusform>%n Dateien wurden abgewiesen, weil deren Dateiformat nicht erkannt werden konnte!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation>
+            <numerusform>%n Instanz</numerusform>
+            <numerusform>%n Instanzen</numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
         <translation>Erzeuge Wiedergabeliste, bitte warten...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation>Der Vorgang wurde vom Benutzter nach %1 Datei(en) abgebrochen!</translation>
-    </message>
-    <message>
         <source>LameXP - Aborted</source>
         <translation>LameXP - Abgebrochen</translation>
     </message>
         <translation>Vorgang abgeschlossen nach %1.</translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation>Stunde(n)</translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation>Minute(n)</translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation>Sekunde(n)</translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation>Millisekunde(n)</translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation>Logeinträge filtern</translation>
     </message>
         <source>None of the items matches the current filtering rules</source>
         <translation>Keiner der Einträge entspricht den aktuellen Filterregeln</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation>
+            <numerusform>Der Vorgang wurde vom Benutzter nach %n Track abgebrochen!</numerusform>
+            <numerusform>Der Vorgang wurde vom Benutzter nach %n Tracks abgebrochen!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation>
+            <numerusform>%n Stunde</numerusform>
+            <numerusform>%n Stunden</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation>
+            <numerusform>%n Minute</numerusform>
+            <numerusform>%n Minuten</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation>
+            <numerusform>%n Sekunde</numerusform>
+            <numerusform>%n Sekunden</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation>
+            <numerusform>%n Millisekunde</numerusform>
+            <numerusform>%n Millisekunden</numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
diff --git a/etc/Translation/LameXP_EN.ts b/etc/Translation/LameXP_EN.ts
new file mode 100644 (file)
index 0000000..21cb15b
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>CueImportDialog</name>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation>
+            <numerusform>Process was aborted by the user after %n track!</numerusform>
+            <numerusform>Process was aborted by the user after %n tracks!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation>
+            <numerusform>Imported %n track from the Cue Sheet.</numerusform>
+            <numerusform>Imported %n tracks from the Cue Sheet.</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+        <source>Skipped %n track(s).</source>
+        <translation>
+            <numerusform>Skipped %n track.</numerusform>
+            <numerusform>Skipped %n tracks.</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation>
+            <numerusform>%n file have been rejected, because read access was not granted!</numerusform>
+            <numerusform>%n files have been rejected, because read access was not granted!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation>
+            <numerusform>%n file have been rejected, because they are dummy CDDA files!</numerusform>
+            <numerusform>%n files have been rejected, because they are dummy CDDA files!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation>
+            <numerusform>%n file have been rejected, because they appear to be Cue Sheet images!</numerusform>
+            <numerusform>%n files have been rejected, because they appear to be Cue Sheet images!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation>
+            <numerusform>%n file have been rejected, because the file format could not be recognized!</numerusform>
+            <numerusform>%n files have been rejected, because the file format could not be recognized!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="3837"/>
+        <source>%n Instance(s)</source>
+        <translation>
+            <numerusform>%n Instance</numerusform>
+            <numerusform>%n Instances</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ProcessingDialog</name>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="608"/>
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation>
+            <numerusform>Process was aborted by the user after %n file!</numerusform>
+            <numerusform>Process was aborted by the user after %n files!</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1291"/>
+        <source>%n hour(s)</source>
+        <translation>
+            <numerusform>%n hour</numerusform>
+            <numerusform>%n hours</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1292"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="1296"/>
+        <source>%n minute(s)</source>
+        <translation>
+            <numerusform>%n minute</numerusform>
+            <numerusform>%n minutes</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1297"/>
+        <location filename="../../src/Dialog_Processing.cpp" line="1301"/>
+        <source>%n second(s)</source>
+        <translation>
+            <numerusform>%n second</numerusform>
+            <numerusform>%n seconds</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1302"/>
+        <source>%n millisecond(s)</source>
+        <translation>
+            <numerusform>%n millisecond</numerusform>
+            <numerusform>%n milliseconds</numerusform>
+        </translation>
+    </message>
+</context>
+</TS>
index 8285f5c..614049a 100644 (file)
         <translation>¡Ha ocurrido un error mientras se dividia el Cue sheet!</translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation>Se ha(n) importado %1 pista(s) y se ha(n) saltado %2 del Cue sheet.</translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation>Cue sheet completado</translation>
     </message>
         <translation>Cancelar</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation>¡El proceso fue cancelado tras %1 pista(s)!</translation>
-    </message>
-    <message>
         <source>(System Default)</source>
         <translation>(Predeterminado del sistema)</translation>
     </message>
         <source>New Folder</source>
         <translation>Nueva carpeta</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation>Acceso denegado</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation>¡Se ha rechazado %1 archivo(s) a los que no se tiene acceso de lectura!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation>Esto suele significar que están siendo utilizados por otro proceso.</translation>
     </message>
         <translation>Archivo rechazado</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation>¡Se ha rechazado %1 archivo(s) ya que no se reconoce su formato!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation>Esto suele significar que están corruptos o tienen un formato no soportado.</translation>
     </message>
         <translation>Más instancias</translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation>%1 instancia(s)</translation>
-    </message>
-    <message>
         <source> Temp Directory </source>
         <translation>Carpeta temporal</translation>
     </message>
         <translation>¡No se puede escribir en la carpeta seleccionada. Por favor, seleccione otra!</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation>¡%1 archivo(s) rechazado(s), ya que son archivos CDDA vacíos!</translation>
-    </message>
-    <message>
         <source>We recommend using %1 for that purpose.</source>
         <translation>Es recomendable usar %1 para este proposito.</translation>
     </message>
         <translation>Cue sheet</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation>¡Se ha(n) rechazado %1 archivo(s), ya que parecen ser imágenes Cue sheet!</translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation>Por favor, use el asistente de imporatción de archivos Cue sheet de LameXP.</translation>
     </message>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
         <translation>Creando el archivo de lista de reproducción, espere por favor...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation>¡Proceso cancelado por el usuario tras %1 archivo(s)!</translation>
-    </message>
-    <message>
         <source>LameXP - Aborted</source>
         <translation>LameXP - Cancelado</translation>
     </message>
         <translation>Finalizado en %1.</translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation>hora(s)</translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation>minuto(s)</translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation>segundo(s)</translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation>milisegundo(s)</translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation type="unfinished"></translation>
     </message>
         <source>None of the items matches the current filtering rules</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
index 635ff59..952d894 100644 (file)
         <translation>Une erreur inattendue s&apos;est produite en divisant la Cue Sheet !</translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation>%1 piste(s) importée(s) de la Cue Sheet et %2 piste(s) ignorée(s).</translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation>Cue Sheet terminé</translation>
     </message>
         <translation type="unfinished">Abandonner</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>(System Default)</source>
         <translation type="unfinished"></translation>
     </message>
         <source>New Folder</source>
         <translation type="unfinished">Nouveau dossier</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation>Accès refusé</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation>%1 fichiers ont été rejetés, parce que l&apos;accès en lecture n&apos;est pas accordée!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation>Cela signifie généralement que le fichier est verrouillé par un autre processus.</translation>
     </message>
         <translation>Fichiers rejetés</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation>%1 fichiers ont été rejetés, car le format de fichier ne peut pas être reconnu!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation>Cela signifie que le fichier est endommagé ou le format de fichier n&apos;est pas pris en charge.</translation>
     </message>
@@ -1415,10 +1420,6 @@ Sélection automatique (par défaut)</translation>
         <translation>Plus d&apos;instances</translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation>%1 Instance(s)</translation>
-    </message>
-    <message>
         <source> Temp Directory </source>
         <translation>Répertoire temporaire</translation>
     </message>
@@ -1447,10 +1448,6 @@ Sélection automatique (par défaut)</translation>
         <translation>Impossible d&apos;écrire dans le répertoire sélectionné. Veuillez choisir un autre répertoire !</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation>%1 fichiers ont été rejetés parce qu&apos;ils sont des fichiers CDDA fictifs !</translation>
-    </message>
-    <message>
         <source>We recommend using %1 for that purpose.</source>
         <translation>Nous vous recommandons d&apos;utiliser %1 à cette fin.</translation>
     </message>
@@ -1628,10 +1625,6 @@ Ouvrir le dossier récursivement...</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1999,6 +1992,41 @@ Ouvrir le dossier récursivement...</translation>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
@@ -2388,10 +2416,6 @@ Ouvrir le dossier récursivement...</translation>
         <translation>Création de la liste de lecture, patientez...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation>Le processus a été abandonné par l&apos;utilisateur après %1 fichier(s)!</translation>
-    </message>
-    <message>
         <source>LameXP - Aborted</source>
         <translation>LameXP - Abandonné</translation>
     </message>
@@ -2468,22 +2492,6 @@ Ouvrir le dossier récursivement...</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2519,6 +2527,41 @@ Ouvrir le dossier récursivement...</translation>
         <source>None of the items matches the current filtering rules</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
index bc24e6f..4fb6140 100644 (file)
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation type="unfinished"></translation>
     </message>
         <translation type="unfinished">Ferma</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>(System Default)</source>
         <translation type="unfinished"></translation>
     </message>
         <source>New Folder</source>
         <translation type="unfinished">Nuova Cartella</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation>La tua cartella TEMP si trova in:</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation>%1 file(s) sono stati rifiutati, perchè non era garantito l&apos;accesso in lettura!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation>Questo di solito vuol dire che il file è bloccato da un altro processo.</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation>%1 file(s) sono stati rifiutati, perchè il formato del file non poteva essere riconosciuto!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation>Questo di solito vuol dire che il file è danneggiato o che il formato non è supportato.</translation>
     </message>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source> Temp Directory </source>
         <translation type="unfinished"></translation>
     </message>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>We recommend using %1 for that purpose.</source>
         <translation type="unfinished"></translation>
     </message>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation type="unfinished"></translation>
     </message>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
         <translation>In codifica: %1 files di %2 completati finora, attendere prego...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation>Il processo è stato abortito dopo %1 file(s)!</translation>
-    </message>
-    <message>
         <source>LameXP - Aborted</source>
         <translation>LameXP - Abortito</translation>
     </message>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation type="unfinished"></translation>
     </message>
         <source>None of the items matches the current filtering rules</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
index 82df087..486670d 100644 (file)
         <translation type="unfinished">큐 시트를 분할하는 도중에 예기치 않은 오류가 발생했습니다!</translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation type="unfinished">큐 시트로부터 %1 트랙 가져옴, 그리고 %2 트랙 건너뜀.</translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation type="unfinished">큐 시트 작업 완료</translation>
     </message>
         <translation type="unfinished">취소</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation type="unfinished">%1 트랙 처리 후 사용자에 의해 작업이 취소되었습니다!</translation>
-    </message>
-    <message>
         <source>(System Default)</source>
         <translation type="unfinished">(시스템 기본)</translation>
     </message>
         <source>New Folder</source>
         <translation type="unfinished">새 폴더</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation type="unfinished">접근 거부</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation type="unfinished">%1 파일이 거부되었습니다. 읽기 권한이 부여되지 않았습니다!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation type="unfinished">다른 프로세스에 의해 파일이 잠겨 있는 경우입니다.</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation type="unfinished">%1 파일이 거부되었습니다. 가짜 CDDA 파일입니다!</translation>
-    </message>
-    <message>
         <source>Sorry, LameXP cannot extract audio tracks from an Audio-CD at present.</source>
         <translation type="unfinished">죄송하지만, 현재 LameXP가 Audio-CD에서 오디오 트랙을 추출할 수 없습니다.</translation>
     </message>
         <translation type="unfinished">파일 거부</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation type="unfinished">%1 파일이 거부되었습니다. 파일 형식이 인식되지 않습니다!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation type="unfinished">파일이 손상되었거나 지원되지 않는 파일 형식입니다.</translation>
     </message>
         <translation type="unfinished">최저 품질 (매우 빠름)</translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation type="unfinished">%1 인스턴스</translation>
-    </message>
-    <message>
         <source>Cannot write to the selected directory. Please choose another directory!</source>
         <translation type="unfinished">선택한 디렉토리에 작성할 수 없습니다. 다른 디렉토리를 선택하여 주십시오!</translation>
     </message>
         <translation type="unfinished">큐 시트</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation type="unfinished">%1 파일이 거부되었습니다. 그 파일들은 큐 시트 이미지들로 나타나기 때문입니다!</translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation type="unfinished">큐 시트 파일을 가져오려면 LameXP의 큐 시트 마법사를 사용하십시오.</translation>
     </message>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
         <translation type="unfinished">재생 목록 파일 생성중, 잠시 기다려 주십시오...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation type="unfinished">%1 파일 후 처리가 사용자에 의해 중단되었습니다!</translation>
-    </message>
-    <message>
         <source>Process was aborted prematurely by the user!</source>
         <translation type="unfinished">처리가 사용자에 의해 완전히 중단되었습니다!</translation>
     </message>
         <translation type="unfinished">작업 경과 시간: %1 소요됨.</translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation type="unfinished">시간</translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation type="unfinished">분</translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation type="unfinished">초</translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation type="unfinished">ms</translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation type="unfinished"></translation>
     </message>
         <source>None of the items matches the current filtering rules</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
index f4b936a..6c4d78c 100644 (file)
         <source>Splitting file(s), please wait...</source>
         <translation type="unfinished">Dzielenie pliku/ów, prosze czekać...</translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation type="unfinished">Proces został przerwany przez użytkownika po imporcie %1 ścieżek!</translation>
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
         <source>An unexpected error has occured while splitting the Cue Sheet!</source>
         <translation type="unfinished">Wystąpił nieoczekiwany błąd podczas podziału pliku Cue Sheet!</translation>
     </message>
-    <message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation type="unfinished">Zaimportowano %1 ścieżek i opuszczono %2 ścieżek z pliku Cue Sheet.</translation>
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_CueImport.cpp" line="419"/>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation type="unfinished">%1 plik(ów) zostało odrzuconych z powodu braku dostępu do pliku!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
         <source>This usually means the file is locked by another process.</source>
         <translation type="unfinished">To przeważnie oznacza, że plik jest zablokowany przez inny proces.</translation>
     </message>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation type="unfinished">%1 plik(ów) zostało odrzuconych ponieważ to nie są właściwe pliki CDDA!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
         <source>Sorry, LameXP cannot extract audio tracks from an Audio-CD at present.</source>
         <translation type="unfinished">LameXP nie może teraz wyekstrachować ścieżki z płyty Audio-CD.</translation>
     </message>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation type="unfinished">%1 plik(ów) zostało odrzuconych, ponieważ to nie są pliki obrazów Cue Sheet!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation type="unfinished">Prosze użyć przewodnika  Cue Sheet w LameXP w celu importowania tych plików.</translation>
     </message>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation type="unfinished">%1 plik(ów) zostało odrzuconych, ponieważ ich format nie został rozpoznany!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation type="unfinished">To przeważnie oznacza że plik jest uszkodzony lub format pliku nie jest wspierany.</translation>
     </message>
         <source>Ignore</source>
         <translation type="unfinished">Ignoruj</translation>
     </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="985"/>
         <source>Initializing directory outline, please be patient...</source>
         <source>Rename Macros</source>
         <translation type="unfinished">Zmień nazwy makr</translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_MainWindow.cpp" line="3837"/>
-        <source>%1 Instance(s)</source>
-        <translation type="unfinished">%1 wątek/ki</translation>
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="3881"/>
     </message>
     <message>
         <location filename="../../src/Dialog_Processing.cpp" line="608"/>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation type="unfinished">Proces został przerwany przez użytkownika po wykonaniu %1 plików!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="608"/>
         <source>Process was aborted prematurely by the user!</source>
         <translation type="unfinished">Proces został przedwcześnie zakończony przez użytkownika!</translation>
     </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="608"/>
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
     <message>
         <location filename="../../src/Dialog_Processing.cpp" line="609"/>
         <source>LameXP - Aborted</source>
         <source>Cancel Shutdown</source>
         <translation type="unfinished">Anuluj wyłączenie komputera</translation>
     </message>
-    <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="1290"/>
-        <source>hour(s)</source>
-        <translation type="unfinished">godzinie/ach</translation>
-    </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_Processing.cpp" line="1291"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="1295"/>
-        <source>minute(s)</source>
-        <translation type="unfinished">minutach</translation>
-    </message>
-    <message>
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1292"/>
         <location filename="../../src/Dialog_Processing.cpp" line="1296"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="1300"/>
-        <source>second(s)</source>
-        <translation type="unfinished">sekundach</translation>
-    </message>
-    <message>
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1297"/>
         <location filename="../../src/Dialog_Processing.cpp" line="1301"/>
-        <source>millisecond(s)</source>
-        <translation type="unfinished">milisekundach</translation>
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1302"/>
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../../src/Global.cpp" line="850"/>
+        <location filename="../../src/Global.cpp" line="854"/>
         <source>Executable &apos;%1&apos; doesn&apos;t support Windows compatibility mode.</source>
         <translation type="unfinished">Plik wykonywalny &apos;%1&apos; nie działa w trybie kompatybilności z Windows.</translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1104"/>
+        <location filename="../../src/Global.cpp" line="1108"/>
         <source>Executable &apos;%1&apos; requires Qt v%2, but found Qt v%3.</source>
         <translation type="unfinished">Plik wykonywalny &apos;%1&apos; wymaga Qt v%2, znaleziono jednak Qt v%3.</translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1109"/>
+        <location filename="../../src/Global.cpp" line="1113"/>
         <source>Executable &apos;%1&apos; was built for Qt &apos;%2&apos;, but found Qt &apos;%3&apos;.</source>
         <translation type="unfinished">Plik wykonywalny &quot;%1&quot; został skompilowany dla Qt &quot;%2&quot;, znaleziono &quot;%3&quot;.</translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1122"/>
-        <location filename="../../src/Global.cpp" line="1149"/>
+        <location filename="../../src/Global.cpp" line="1126"/>
+        <location filename="../../src/Global.cpp" line="1153"/>
         <source>Executable &apos;%1&apos; requires Windows 2000 or later.</source>
         <translation type="unfinished">Plik wykonywalny &apos;%1&apos; wymaga do uruchomienia Windows 2000 lub nowszego.</translation>
     </message>
index c04655a..2b4c73b 100644 (file)
         <translation type="unfinished">Непредвиденная ошибка случилась при разделении CUE плэйлиста!</translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation type="unfinished">Импортировано %1 трэк(ов) из CUE плэйлиста, пропущено %2 трэк(ов).</translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation type="unfinished">Операция завершена</translation>
     </message>
         <translation type="unfinished">Отмена</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation type="unfinished">Процесс отменён пользователем после %1 трэк(ов)!</translation>
-    </message>
-    <message>
         <source>(System Default)</source>
         <translation type="unfinished"></translation>
     </message>
         <source>New Folder</source>
         <translation type="unfinished">Новая папка</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation type="unfinished">Доступ запрещён</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation type="unfinished">%1 файл был отклонен, потому что доступ для чтения не предоставили!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation type="unfinished">Это обычно означает, что файл блокируется другим процессом.</translation>
     </message>
         <translation type="unfinished">Отклоненные файлы</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation type="unfinished">%1 файл был отклонен, потому что формат файла не мог быть распознан!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation type="unfinished">Это обычно означает, что файл поврежден, или формат файла не поддерживается.</translation>
     </message>
         <translation type="unfinished">Больше потоков</translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation type="unfinished">%1 Поток(ов)</translation>
-    </message>
-    <message>
         <source> Temp Directory </source>
         <translation type="unfinished">Временная папка</translation>
     </message>
         <translation type="unfinished">Директория недоступна для записи. Пожалуйса, выберите другую директорию!</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation type="unfinished">%1 файла(ов) было отменено, изза пустых CDDA файлов!</translation>
-    </message>
-    <message>
         <source>We recommend using %1 for that purpose.</source>
         <translation type="unfinished">Рекомендуем исползовать %1 для этих целей.</translation>
     </message>
         <translation type="unfinished">CUE плэйлист</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation type="unfinished">%1 файл(ов) было отменено, потому что они являются CUE плэйлистами!</translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translatorcomment>пиздец бред</translatorcomment>
         <translation type="unfinished">Пожалуйста используйте Мастер импорта CUE файлов для импорта CUE файлов.</translation>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
         <translation type="unfinished">Создаю плэйлист, пожалуйста, подождите...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation type="unfinished">Процесс отменён пользователем после %1 файла(ов)!</translation>
-    </message>
-    <message>
         <source>Process was aborted prematurely by the user!</source>
         <translation type="unfinished">Процесс был преждевременно прерван пользователем!</translation>
     </message>
         <translation>Кодирование заняло %1</translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation>час.</translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation>мин.</translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation>сек.</translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation>мс.</translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation type="unfinished"></translation>
     </message>
         <source>None of the items matches the current filtering rules</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
index 0a65b43..34264c9 100644 (file)
         <source>Splitting file(s), please wait...</source>
         <translation>Delar fil(er), vänta...</translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_CueImport.cpp" line="410"/>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation>Åtgärden avbröts av användaren efter %1 spår!</translation>
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_CueImport.cpp" line="414"/>
         <source>An unexpected error has occured while splitting the Cue Sheet!</source>
         <translation>Ett oväntat fel uppstod vid delningen av cue-filen!</translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation>Importerade %1 spår från cue-filen och hoppade över %2 spår.</translation>
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_CueImport.cpp" line="418"/>
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_CueImport.cpp" line="419"/>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation>%1 fil(er) har undantagits, på grund av att åtkomst nekades!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
         <source>This usually means the file is locked by another process.</source>
         <translation>Det innebär oftast att filen är låst av någon annan process.</translation>
     </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="718"/>
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
         <source>CDDA Files</source>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation>%1 fil(er) har undantagits, på grund av att det är fejkade CDDA-filer!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
         <source>Sorry, LameXP cannot extract audio tracks from an Audio-CD at present.</source>
         <translation>LameXP kan för närvarande inte extrahera ljudspår från en ljud-CD.</translation>
     </message>
         <source>We recommend using %1 for that purpose.</source>
         <translation>Vi rekommenderar att du använder %1 för det ändamålet.</translation>
     </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="722"/>
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
         <source>Cue Sheet</source>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation>%1 fil(er) har undantagits, på grund av att de verkar vara cue-filer!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation>Använd LameXPs cue-guide för att importera cue-filer.</translation>
     </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="726"/>
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
         <source>Files Rejected</source>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation>%1 fil(er) har undantagits, på grund av att filformatet inte känns igen!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation>Det innebär oftast att filen är skadad eller att filformatet inte stöds.</translation>
     </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_MainWindow.cpp" line="730"/>
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="746"/>
         <source>Scanning folder(s) for files, please wait...</source>
         <source>Rename Macros</source>
         <translation>Namnändra macron</translation>
     </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_MainWindow.cpp" line="3837"/>
-        <source>%1 Instance(s)</source>
-        <translation>%1 instans(er)</translation>
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
     <message>
         <location filename="../../src/Dialog_MainWindow.cpp" line="3881"/>
     </message>
     <message>
         <location filename="../../src/Dialog_Processing.cpp" line="608"/>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation>Åtgärden avbröts av användaren efter %1 fil(er)!</translation>
-    </message>
-    <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="608"/>
         <source>Process was aborted prematurely by the user!</source>
         <translation>Åtgärden avbröts i förtid av användaren!</translation>
     </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="608"/>
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
     <message>
         <location filename="../../src/Dialog_Processing.cpp" line="609"/>
         <source>LameXP - Aborted</source>
         <source>Cancel Shutdown</source>
         <translation>Avbryt avstängning</translation>
     </message>
-    <message>
-        <location filename="../../src/Dialog_Processing.cpp" line="1290"/>
-        <source>hour(s)</source>
-        <translation>timma(r)</translation>
-    </message>
-    <message>
+    <message numerus="yes">
         <location filename="../../src/Dialog_Processing.cpp" line="1291"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="1295"/>
-        <source>minute(s)</source>
-        <translation>minut(er)</translation>
-    </message>
-    <message>
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1292"/>
         <location filename="../../src/Dialog_Processing.cpp" line="1296"/>
-        <location filename="../../src/Dialog_Processing.cpp" line="1300"/>
-        <source>second(s)</source>
-        <translation>sekund(er)</translation>
-    </message>
-    <message>
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1297"/>
         <location filename="../../src/Dialog_Processing.cpp" line="1301"/>
-        <source>millisecond(s)</source>
-        <translation>millisekund(er)</translation>
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../../src/Dialog_Processing.cpp" line="1302"/>
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
     </message>
 </context>
 <context>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../../src/Global.cpp" line="850"/>
+        <location filename="../../src/Global.cpp" line="854"/>
         <source>Executable &apos;%1&apos; doesn&apos;t support Windows compatibility mode.</source>
         <translation>EXE-filen &apos;%1&apos; stöder inte Windows kompatibilitetsläge.</translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1104"/>
+        <location filename="../../src/Global.cpp" line="1108"/>
         <source>Executable &apos;%1&apos; requires Qt v%2, but found Qt v%3.</source>
         <translation>EXE-filen &apos;%1&apos; kräver Qt v%2, du har Qt v%3.</translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1109"/>
+        <location filename="../../src/Global.cpp" line="1113"/>
         <source>Executable &apos;%1&apos; was built for Qt &apos;%2&apos;, but found Qt &apos;%3&apos;.</source>
         <translation>EXE-filen &apos;%1&apos; är byggd för Qt &apos;%2&apos;, du har Qt &apos;%3&apos;.</translation>
     </message>
     <message>
-        <location filename="../../src/Global.cpp" line="1122"/>
-        <location filename="../../src/Global.cpp" line="1149"/>
+        <location filename="../../src/Global.cpp" line="1126"/>
+        <location filename="../../src/Global.cpp" line="1153"/>
         <source>Executable &apos;%1&apos; requires Windows 2000 or later.</source>
         <translation>EXE-filen &apos;%1&apos; kräver Windows 2000 eller senare.</translation>
     </message>
index b98c6d2..e2211d6 100644 (file)
         <translation>掃描提示工作表時出現了意外的錯誤 !</translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation>導入 %1 從提示表軌道,并跳過 %2 軌道.</translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation>完成提示表</translation>
     </message>
         <translation>中止</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation>用戶終止了 %1 個軌道進程 !</translation>
-    </message>
-    <message>
         <source>(System Default)</source>
         <translation>(系統默認)</translation>
     </message>
         <source>New Folder</source>
         <translation>新文件夾</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation>訪問被拒絕</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation>%1 文件都被拒絕,因為讀訪問權限不允許!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation>通常這意味著該文件由另一個進程鎖定.</translation>
     </message>
         <translation>文件被拒絕</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation>%1 文件被拒絕,因為文件格式分辨不出!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation>通常,這意味著他們都已損壞,或不受支持的格式.</translation>
     </message>
         <translation>更多實例</translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation>%1 個實例</translation>
-    </message>
-    <message>
         <source> Temp Directory </source>
         <translation>臨時目錄</translation>
     </message>
         <translation>無法寫入所選目錄.請選擇另一個目錄 !</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation>%1 個文件已被拒絕,因為它們是虛擬的 CDDA 文件 !</translation>
-    </message>
-    <message>
         <source>We recommend using %1 for that purpose.</source>
         <translation>我們建議為此目的使用 %1.</translation>
     </message>
         <translation>提示表</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation>%1 個文件已被拒絕,因為他們似乎是提示表映像文件!</translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation>導入CUE文件文件,請使用LameXP的提示表向導.</translation>
     </message>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
         <translation>創建播放列表文件,請稍候...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation>進程被用戶終止了 %1 個文件 !</translation>
-    </message>
-    <message>
         <source>LameXP - Aborted</source>
         <translation>LameXP - 中止</translation>
     </message>
         <translation>過程完成了 %1.</translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation>小時</translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation>分鐘</translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation>秒</translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation>毫秒</translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation type="unfinished"></translation>
     </message>
         <source>None of the items matches the current filtering rules</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
index 7554e75..466ff44 100644 (file)
         <translation>Розділення файлу(-ів), будь ласка, зачекайте...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation>Процес було перервано користувачем після %1 доріжки(-ок)!</translation>
-    </message>
-    <message>
         <source>An unexpected error has occured while splitting the Cue Sheet!</source>
         <translation>Виникла неочікувана помилка під час розділення списку Cue!</translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation>Імпортовано %1 доріжок(-и, -у) зі списку Cue і пропущено %2 доріжку(-и, -ок).</translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation>Обробку списку Cue завершено</translation>
     </message>
         <source>New Folder</source>
         <translation>Нова тека</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation>Доступ заборонено</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation>%1 файл(и, ів) було пропущено, так як не гарантувався доступ на читання до них!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation>Це зазвичай означає, що файл заблоковано іншим процесом.</translation>
     </message>
         <translation>Файли пропущено</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation>%1 файл(и, ів) було пропущено, так як не був розпізнаний формат файлу!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation>Це зазвичай означає, що файл пошкоджено або формат не підтримується.</translation>
     </message>
         <translation>Відкрити дерево тек...</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation>%1 файл(и, ів) було пропущено, тому що вони є фіктивними файлами CDDA!</translation>
-    </message>
-    <message>
         <source>Sorry, LameXP cannot extract audio tracks from an Audio-CD at present.</source>
         <translation>Вибачте, але LameXP наразі не може витягнути аудіодоріжки з Audio-CD.</translation>
     </message>
         <translation>Додати теку</translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation>%1 Копія (ї, й)</translation>
-    </message>
-    <message>
         <source>Cannot write to the selected directory. Please choose another directory!</source>
         <translation>Не можливо вести запис до обраної теки. Будь ласка, оберіть іншу!</translation>
     </message>
         <translation>Списки Cue</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation>%1 файл(и, ів) було пропущено, тому що вони скоріш за все є образами списків Cue!</translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation>Будь ласка, використовуйте майстер імпорту списків Cue самого LameXP для додавання файлів списків.</translation>
     </message>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
         <translation>Йде створення списку відтворення, будь ласка, зачекайте...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation>Процес було перервано користувачем після %1 файла(-ів)!</translation>
-    </message>
-    <message>
         <source>Process was aborted prematurely by the user!</source>
         <translation>Процес було перервано користувачем завчасно!</translation>
     </message>
         <translation>Процес тривав %1.</translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation>годин(-у, -и)</translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation>хвилин(-у, -и)</translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation>секунд(-у, -и)</translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation>мілісекунд(-у, -и)</translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation>Фільтрувати записи журналу</translation>
     </message>
         <source>None of the items matches the current filtering rules</source>
         <translation>Жодного запису не підпадає під поточні правила фільтрування</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
index 215806f..f80a3d7 100644 (file)
         <translation>扫描提示工作表时出现了意外的错误 !</translation>
     </message>
     <message>
-        <source>Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).</source>
-        <translation>导入 %1 从提示表轨道,并跳过 %2 轨道.</translation>
-    </message>
-    <message>
         <source>Cue Sheet Completed</source>
         <translation>完成提示表</translation>
     </message>
         <translation>中止</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 track(s)!</source>
-        <translation>用户终止了 %1 个轨道进程 !</translation>
-    </message>
-    <message>
         <source>(System Default)</source>
         <translation>(系统默认)</translation>
     </message>
         <source>New Folder</source>
         <translation>新文件夹</translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n track(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Imported %n track(s) from the Cue Sheet.</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>Skipped %n track(s).</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>CueSheetImport</name>
         <translation>访问被拒绝</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because read access was not granted!</source>
-        <translation>%1 文件都被拒绝,因为读访问权限不允许!</translation>
-    </message>
-    <message>
         <source>This usually means the file is locked by another process.</source>
         <translation>通常这意味着该文件由另一个进程锁定.</translation>
     </message>
         <translation>文件被拒绝</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because the file format could not be recognized!</source>
-        <translation>%1 文件被拒绝,因为文件格式分辨不出!</translation>
-    </message>
-    <message>
         <source>This usually means the file is damaged or the file format is not supported.</source>
         <translation>通常,这意味着他们都已损坏,或不受支持的格式.</translation>
     </message>
         <translation>更多实例</translation>
     </message>
     <message>
-        <source>%1 Instance(s)</source>
-        <translation>%1 个实例</translation>
-    </message>
-    <message>
         <source> Temp Directory </source>
         <translation>临时目录</translation>
     </message>
         <translation>无法写入所选目录.请选择另一个目录 !</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
-        <translation>%1 个文件已被拒绝,因为它们是虚拟的 CDDA 文件 !</translation>
-    </message>
-    <message>
         <source>We recommend using %1 for that purpose.</source>
         <translation>我们建议为此目的使用 %1.</translation>
     </message>
         <translation>提示表</translation>
     </message>
     <message>
-        <source>%1 file(s) have been rejected, because they appear to be Cue Sheet images!</source>
-        <translation>%1 个文件已被拒绝,因为他们似乎是提示表映像文件!</translation>
-    </message>
-    <message>
         <source>Please use LameXP&apos;s Cue Sheet wizard for importing Cue Sheet files.</source>
         <translation>导入CUE文件文件,请使用LameXP的提示表向导.</translation>
     </message>
         <source>Disable Opus-Decoder Resampling (i.e. always output as 48.000 Hz)</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because read access was not granted!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n file(s) have been rejected, because the file format could not be recognized!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n Instance(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>MetaInfo</name>
         <translation>创建播放列表文件,请稍候...</translation>
     </message>
     <message>
-        <source>Process was aborted by the user after %1 file(s)!</source>
-        <translation>进程被用户终止了 %1 个文件 !</translation>
-    </message>
-    <message>
         <source>LameXP - Aborted</source>
         <translation>LameXP - 中止</translation>
     </message>
         <translation>过程完成了 %1.</translation>
     </message>
     <message>
-        <source>hour(s)</source>
-        <translation>小时</translation>
-    </message>
-    <message>
-        <source>minute(s)</source>
-        <translation>分钟</translation>
-    </message>
-    <message>
-        <source>second(s)</source>
-        <translation>秒</translation>
-    </message>
-    <message>
-        <source>millisecond(s)</source>
-        <translation>毫秒</translation>
-    </message>
-    <message>
         <source>Filter Log Items</source>
         <translation type="unfinished"></translation>
     </message>
         <source>None of the items matches the current filtering rules</source>
         <translation type="unfinished"></translation>
     </message>
+    <message numerus="yes">
+        <source>Process was aborted by the user after %n file(s)!</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n hour(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n minute(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n second(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <source>%n millisecond(s)</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
 </context>
 <context>
     <name>ProgressModel</name>
index 81734b1..2e2f59e 100644 (file)
@@ -28,5 +28,6 @@ for %%f in (*.ts) do (
        copy %%f %%f.bak
        lupdate.exe @update.lst -no-obsolete -ts %%f
 )
+lupdate.exe @update.lst -no-obsolete -pluralonly -ts "LameXP_EN.ts"
 REM ---------------------------
 pause
index d4a9eb2..73226d8 100644 (file)
@@ -3,6 +3,8 @@
   <qresource>
     <file>localization/LameXP_DE.qm</file>
     <file>localization/LameXP_DE.qm.txt</file>
+    <file>localization/LameXP_EN.qm</file>
+    <file>localization/LameXP_EN.qm.txt</file>
     <file>localization/LameXP_FR.qm</file>
     <file>localization/LameXP_FR.qm.txt</file>
     <file>localization/LameXP_IT.qm</file>
index 169c318..4c74057 100644 (file)
Binary files a/res/localization/LameXP_DE.qm and b/res/localization/LameXP_DE.qm differ
diff --git a/res/localization/LameXP_EN.qm b/res/localization/LameXP_EN.qm
new file mode 100644 (file)
index 0000000..5f1210d
Binary files /dev/null and b/res/localization/LameXP_EN.qm differ
diff --git a/res/localization/LameXP_EN.qm.txt b/res/localization/LameXP_EN.qm.txt
new file mode 100644 (file)
index 0000000..840b7fa
--- /dev/null
@@ -0,0 +1 @@
+31,0,English
\ No newline at end of file
index 668d655..7d00fc6 100644 (file)
Binary files a/res/localization/LameXP_ES.qm and b/res/localization/LameXP_ES.qm differ
index 9f7d9b9..489a698 100644 (file)
Binary files a/res/localization/LameXP_FR.qm and b/res/localization/LameXP_FR.qm differ
index 987dfe3..1d4a0ed 100644 (file)
Binary files a/res/localization/LameXP_IT.qm and b/res/localization/LameXP_IT.qm differ
index 076ae38..ceee741 100644 (file)
Binary files a/res/localization/LameXP_KR.qm and b/res/localization/LameXP_KR.qm differ
index 9a30daa..f376995 100644 (file)
Binary files a/res/localization/LameXP_PL.qm and b/res/localization/LameXP_PL.qm differ
index 88477e7..8f57e62 100644 (file)
Binary files a/res/localization/LameXP_RU.qm and b/res/localization/LameXP_RU.qm differ
index 9768c90..cf284b2 100644 (file)
Binary files a/res/localization/LameXP_SV.qm and b/res/localization/LameXP_SV.qm differ
index 8d80cb2..5a92862 100644 (file)
Binary files a/res/localization/LameXP_TW.qm and b/res/localization/LameXP_TW.qm differ
index bfb0cc5..455ef9b 100644 (file)
Binary files a/res/localization/LameXP_UK.qm and b/res/localization/LameXP_UK.qm differ
index 7cf6c7c..a38ea39 100644 (file)
Binary files a/res/localization/LameXP_ZH.qm and b/res/localization/LameXP_ZH.qm differ
index 462a6ef..bbfaaed 100644 (file)
@@ -30,7 +30,7 @@
 #define VER_LAMEXP_MINOR_LO                                    7
 #define VER_LAMEXP_TYPE                                                Beta
 #define VER_LAMEXP_PATCH                                       1
-#define VER_LAMEXP_BUILD                                       1228
+#define VER_LAMEXP_BUILD                                       1230
 
 ///////////////////////////////////////////////////////////////////////////////
 // Tool versions (minimum expected versions!)
index 7e5de9f..a664b9d 100644 (file)
@@ -407,7 +407,7 @@ void CueImportDialog::splitFiles(void)
 
        if(splitter->getAborted())
        {
-               QMessageBox::warning(this, tr("Cue Sheet Error"), tr("Process was aborted by the user after %1 track(s)!").arg(QString::number(splitter->getTracksSuccess())));
+               QMessageBox::warning(this, tr("Cue Sheet Error"), tr("Process was aborted by the user after %n track(s)!", "", splitter->getTracksSuccess()));
        }
        else if(!splitter->getSuccess())
        {
@@ -415,7 +415,7 @@ void CueImportDialog::splitFiles(void)
        }
        else
        {
-               QString text = QString("<nobr>%1</nobr>").arg(tr("Imported %1 track(s) from the Cue Sheet and skipped %2 track(s).").arg(QString::number(splitter->getTracksSuccess()), QString::number(splitter->getTracksSkipped() /*+ nTracksSkipped*/)));
+               QString text = QString("<nobr>%1 %2</nobr>").arg(tr("Imported %n track(s) from the Cue Sheet.", "", splitter->getTracksSuccess()), tr("Skipped %n track(s).", "", splitter->getTracksSkipped()));
                QMessageBox::information(this, tr("Cue Sheet Completed"), text);
        }
 
index 5bb8a15..c9d7fef 100644 (file)
@@ -715,19 +715,19 @@ void MainWindow::addFiles(const QStringList &files)
 
        if(analyzer->filesDenied())
        {
-               QMessageBox::warning(this, tr("Access Denied"), QString("%1<br>%2").arg(NOBR(tr("%1 file(s) have been rejected, because read access was not granted!").arg(analyzer->filesDenied())), NOBR(tr("This usually means the file is locked by another process."))));
+               QMessageBox::warning(this, tr("Access Denied"), QString("%1<br>%2").arg(NOBR(tr("%n file(s) have been rejected, because read access was not granted!", "", analyzer->filesDenied())), NOBR(tr("This usually means the file is locked by another process."))));
        }
        if(analyzer->filesDummyCDDA())
        {
-               QMessageBox::warning(this, tr("CDDA Files"), QString("%1<br><br>%2<br>%3").arg(NOBR(tr("%1 file(s) have been rejected, because they are dummy CDDA files!").arg(analyzer->filesDummyCDDA())), NOBR(tr("Sorry, LameXP cannot extract audio tracks from an Audio-CD at present.")), NOBR(tr("We recommend using %1 for that purpose.").arg("<a href=\"http://www.exactaudiocopy.de/\">Exact Audio Copy</a>"))));
+               QMessageBox::warning(this, tr("CDDA Files"), QString("%1<br><br>%2<br>%3").arg(NOBR(tr("%n file(s) have been rejected, because they are dummy CDDA files!", "", analyzer->filesDummyCDDA())), NOBR(tr("Sorry, LameXP cannot extract audio tracks from an Audio-CD at present.")), NOBR(tr("We recommend using %1 for that purpose.").arg("<a href=\"http://www.exactaudiocopy.de/\">Exact Audio Copy</a>"))));
        }
        if(analyzer->filesCueSheet())
        {
-               QMessageBox::warning(this, tr("Cue Sheet"), QString("%1<br>%2").arg(NOBR(tr("%1 file(s) have been rejected, because they appear to be Cue Sheet images!").arg(analyzer->filesCueSheet())), NOBR(tr("Please use LameXP's Cue Sheet wizard for importing Cue Sheet files."))));
+               QMessageBox::warning(this, tr("Cue Sheet"), QString("%1<br>%2").arg(NOBR(tr("%n file(s) have been rejected, because they appear to be Cue Sheet images!", "",analyzer->filesCueSheet())), NOBR(tr("Please use LameXP's Cue Sheet wizard for importing Cue Sheet files."))));
        }
        if(analyzer->filesRejected())
        {
-               QMessageBox::warning(this, tr("Files Rejected"), QString("%1<br>%2").arg(NOBR(tr("%1 file(s) have been rejected, because the file format could not be recognized!").arg(analyzer->filesRejected())), NOBR(tr("This usually means the file is damaged or the file format is not supported."))));
+               QMessageBox::warning(this, tr("Files Rejected"), QString("%1<br>%2").arg(NOBR(tr("%n file(s) have been rejected, because the file format could not be recognized!", "", analyzer->filesRejected())), NOBR(tr("This usually means the file is damaged or the file format is not supported."))));
        }
 
        LAMEXP_DELETE(analyzer);
@@ -3834,7 +3834,7 @@ void MainWindow::forceStereoDownmixEnabledChanged(bool checked)
  */
 void MainWindow::updateMaximumInstances(int value)
 {
-       ui->labelMaxInstances->setText(tr("%1 Instance(s)").arg(QString::number(value)));
+       ui->labelMaxInstances->setText(tr("%n Instance(s)", "", value));
        m_settings->maximumInstances(ui->checkBoxAutoDetectInstances->isChecked() ? NULL : value);
 }
 
index a5e53d0..d0e64f2 100644 (file)
@@ -605,7 +605,7 @@ void ProcessingDialog::doneEncoding(void)
                CHANGE_BACKGROUND_COLOR(ui->frame_header, QColor("#FFF3BA"));
                WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarErrorState);
                WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/error.png"));
-               SET_PROGRESS_TEXT((m_succeededJobs.count() > 0) ? tr("Process was aborted by the user after %1 file(s)!").arg(QString::number(m_succeededJobs.count())) : tr("Process was aborted prematurely by the user!"));
+               SET_PROGRESS_TEXT((m_succeededJobs.count() > 0) ? tr("Process was aborted by the user after %n file(s)!", "", m_succeededJobs.count()) : tr("Process was aborted prematurely by the user!"));
                m_systemTray->showMessage(tr("LameXP - Aborted"), tr("Process was aborted by the user."), QSystemTrayIcon::Warning);
                m_systemTray->setIcon(QIcon(":/icons/cd_delete.png"));
                QApplication::processEvents();
@@ -1281,27 +1281,28 @@ QString ProcessingDialog::time2text(const double timeVal) const
 {
        double intPart = 0;
        double frcPart = modf(timeVal, &intPart);
-       int x = 0, y = 0; QString a, b;
 
        QTime time = QTime().addSecs(qRound(intPart)).addMSecs(qRound(frcPart * 1000.0));
 
+       QString a, b;
+
        if(time.hour() > 0)
        {
-               x = time.hour();   a = tr("hour(s)");
-               y = time.minute(); b = tr("minute(s)");
+               a = tr("%n hour(s)", "", time.hour());
+               b = tr("%n minute(s)", "", time.minute());
        }
        else if(time.minute() > 0)
        {
-               x = time.minute(); a = tr("minute(s)");
-               y = time.second(); b = tr("second(s)");
+               a = tr("%n minute(s)", "", time.minute());
+               b = tr("%n second(s)", "", time.second());
        }
        else
        {
-               x = time.second(); a = tr("second(s)");
-               y = time.msec();   b = tr("millisecond(s)");
+               a = tr("%n second(s)", "", time.second());
+               b = tr("%n millisecond(s)", "", time.msec());
        }
 
-       return QString("%1 %2, %3 %4").arg(QString::number(x), a, QString::number(y), b);
+       return QString("%1, %2").arg(a, b);
 }
 
 ////////////////////////////////////////////////////////////
index 3605ce3..2afedf2 100644 (file)
@@ -313,6 +313,10 @@ static const DWORD g_main_thread_id = GetCurrentThreadId();
 //Log file
 static FILE *g_lamexp_log_file = NULL;
 
+//Localization
+const char* LAMEXP_DEFAULT_LANGID = "en";
+const char* LAMEXP_DEFAULT_TRANSLATION = "LameXP_EN.qm";
+
 ///////////////////////////////////////////////////////////////////////////////
 // GLOBAL FUNCTIONS
 ///////////////////////////////////////////////////////////////////////////////
@@ -1734,10 +1738,11 @@ unsigned int lamexp_translation_country(const QString &langId)
 bool lamexp_install_translator(const QString &langId)
 {
        bool success = false;
+       const QString qmFileToPath(":/localization/%1");
 
        if(langId.isEmpty() || langId.toLower().compare(LAMEXP_DEFAULT_LANGID) == 0)
        {
-               success = lamexp_install_translator_from_file(QString());
+               success = lamexp_install_translator_from_file(qmFileToPath.arg(LAMEXP_DEFAULT_TRANSLATION));
        }
        else
        {
@@ -1747,7 +1752,7 @@ bool lamexp_install_translator(const QString &langId)
 
                if(!qmFile.isEmpty())
                {
-                       success = lamexp_install_translator_from_file(QString(":/localization/%1").arg(qmFile));
+                       success = lamexp_install_translator_from_file(qmFileToPath.arg(qmFile));
                }
                else
                {
index dda620a..e085ed9 100644 (file)
@@ -144,7 +144,8 @@ unsigned int lamexp_translation_country(const QString &langId);
 bool lamexp_install_translator_from_file(const QString &qmFile);
 bool lamexp_install_translator(const QString &language);
 QStringList lamexp_available_codepages(bool noAliases = true);
-static const char* LAMEXP_DEFAULT_LANGID = "en";
+extern const char* LAMEXP_DEFAULT_LANGID;
+extern const char* LAMEXP_DEFAULT_TRANSLATION;
 
 //Auxiliary functions
 bool lamexp_clean_folder(const QString &folderPath);