Make more strings translatable.

This commit is contained in:
LoRd_MuldeR 2011-01-01 19:28:19 +01:00
parent 96db5e86c2
commit 5a1ff67e42
19 changed files with 504 additions and 165 deletions

View File

@ -1,6 +1,141 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS> <!DOCTYPE TS>
<TS version="2.0" language="de" sourcelanguage="en"> <TS version="2.0" language="de" sourcelanguage="en">
<context>
<name>AboutDialog</name>
<message>
<source>LameXP - Audio Encoder Front-end</source>
<translation type="unfinished">LameXP - Audio Kodierer Oberfläche</translation>
</message>
<message>
<source>Please visit %1 for news and updates!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Note: LameXP is free software. Do &lt;b&gt;not&lt;/b&gt; pay money to obtain or use LameXP! If some third-party website tries to make you pay for downloading LameXP, you should &lt;b&gt;not&lt;/b&gt; respond to the offer !!!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Special thanks go out to &quot;John33&quot; from %1 for his continuous support.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>About LameXP</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show License Text</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Accept License</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Decline License</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3rd Party S/W</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Contributors</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>About Qt4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Discard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following people have contributed to LameXP:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Translators:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>If you are willing to contribute a LameXP translation, feel free to contact us!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>About Contributors</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The following third-party software is used in LameXP:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LAME - OpenSource mp3 Encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Released under the terms of the GNU Leser General Public License.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OggEnc - Ogg Vorbis Encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Completely open and patent-free audio encoding technology.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nero AAC reference MPEG-4 Encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Freeware state-of-the-art HE-AAC encoder with 2-Pass support.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Available from vendor web-site as free download:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>FLAC - Free Lossless Audio Codec</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open and patent-free lossless audio compression technology.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AC3Filter Tools - AC3/DTS Decoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MediaInfo - Media File Analysis Tool</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>SoX - Sound eXchange</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>GnuPG - The GNU Privacy Guard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>About Third-party Software</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>DropBox</name> <name>DropBox</name>
<message> <message>
@ -26,17 +161,6 @@
<source>Log View</source> <source>Log View</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>&lt;b&gt;Log File&lt;/b&gt;&lt;br&gt;The log file shows detailed information about the selected job.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>C:\DOS
C:\DOS\RUN
RUN\DOS\RUN
</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Discard</source> <source>Discard</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -49,6 +173,14 @@ RUN\DOS\RUN
<source>Copy to Clipboard</source> <source>Copy to Clipboard</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Log File</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The log file shows detailed information about the selected job.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MainWindow</name> <name>MainWindow</name>
@ -531,7 +663,7 @@ LameXP is free software and release versions won&apos;t expire.</source>
</message> </message>
<message> <message>
<source>Download &amp;&amp; Install</source> <source>Download &amp;&amp; Install</source>
<translation type="unfinished"></translation> <translation type="unfinished">Herunterladen &amp;&amp; Installieren</translation>
</message> </message>
<message> <message>
<source>Cancel</source> <source>Cancel</source>
@ -674,11 +806,7 @@ LameXP is free software and release versions won&apos;t expire.</source>
<name>MetaInfo</name> <name>MetaInfo</name>
<message> <message>
<source>Meta Information</source> <source>Meta Information</source>
<translation type="unfinished"></translation> <translation type="unfinished">Meta Informationen</translation>
</message>
<message>
<source>&lt;b&gt;Meta Information&lt;/b&gt;&lt;br&gt;The following meta information have been extracted from the original file.</source>
<translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Edit</source> <source>Edit</source>
@ -686,7 +814,161 @@ LameXP is free software and release versions won&apos;t expire.</source>
</message> </message>
<message> <message>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation type="unfinished">Schießen</translation>
</message>
</context>
<context>
<name>MetaInfoDialog</name>
<message>
<source>Meta Information</source>
<translation type="unfinished">Meta Informationen</translation>
</message>
<message>
<source>The following meta information have been extracted from the original file.</source>
<translation type="unfinished">Die folgenden Meta-Informationen wurden aus der Original-Datei extrahiert.</translation>
</message>
</context>
<context>
<name>MetaInfoModel</name>
<message>
<source>Container</source>
<translation type="unfinished">Container</translation>
</message>
<message>
<source>Compression</source>
<translation type="unfinished">Kompression</translation>
</message>
<message>
<source>Duration</source>
<translation type="unfinished">Dauer</translation>
</message>
<message>
<source>Title</source>
<translation type="unfinished">Titel</translation>
</message>
<message>
<source>Artist</source>
<translation type="unfinished">Künstler</translation>
</message>
<message>
<source>Album</source>
<translation type="unfinished">Album</translation>
</message>
<message>
<source>Genre</source>
<translation type="unfinished">Genre</translation>
</message>
<message>
<source>Year</source>
<translation type="unfinished">Jahr</translation>
</message>
<message>
<source>Position</source>
<translation type="unfinished">Position</translation>
</message>
<message>
<source>Generate from list position</source>
<translation type="unfinished">Aus Playlisten-Position erzeugen</translation>
</message>
<message>
<source>Comment</source>
<translation type="unfinished">Kommentar</translation>
</message>
<message>
<source>Property</source>
<translation type="unfinished">Eigenschaft</translation>
</message>
<message>
<source>Value</source>
<translation type="unfinished">Wert</translation>
</message>
<message>
<source>Edit Title</source>
<translation type="unfinished">Titel bearbeiten</translation>
</message>
<message>
<source>Please enter the title for this file:</source>
<translation type="unfinished">Bitte geben Sie den Titel für diese Datei ein:</translation>
</message>
<message>
<source>The title must not be empty. Generating title from file name!</source>
<translation type="unfinished">Der Titel kann nicht leer sein. Titel wird aus Dateiname generiert!</translation>
</message>
<message>
<source>Edit Artist</source>
<translation type="unfinished">Künstler Bearbeiten</translation>
</message>
<message>
<source>Please enter the artist for this file:</source>
<translation type="unfinished">Bitte geben Sie den Künstler für diese Datei ein:</translation>
</message>
<message>
<source>Edit Album</source>
<translation type="unfinished">Album Bearbeiten</translation>
</message>
<message>
<source>Please enter the album for this file:</source>
<translation type="unfinished">Bitte geben Sie das Album für diese Datei ein:</translation>
</message>
<message>
<source>Edit Genre</source>
<translation type="unfinished">Genre Bearbeiten</translation>
</message>
<message>
<source>Please enter the genre for this file:</source>
<translation type="unfinished">Bitte geben Sie das Genre für diese Datei ein:</translation>
</message>
<message>
<source>Edit Year</source>
<translation type="unfinished">Jahr Bearbeiten</translation>
</message>
<message>
<source>Please enter the year for this file:</source>
<translation type="unfinished">Bitte geben Sie das Jahr für diese Datei ein:</translation>
</message>
<message>
<source>Edit Position</source>
<translation type="unfinished">Position Bearbeiten</translation>
</message>
<message>
<source>Please enter the position (track no.) for this file:</source>
<translation type="unfinished">Bitte geben Sie die Position (Track Nr.) für diese Datei ein:</translation>
</message>
<message>
<source>Unspecified (copy from source file)</source>
<translation type="unfinished">Keine Angabe (aus Quelle kopieren)</translation>
</message>
<message>
<source>Edit Comment</source>
<translation type="unfinished">Kommentar Bearbeiten</translation>
</message>
<message>
<source>Please enter the comment for this file:</source>
<translation type="unfinished">Bitte geben Sie den Kommentar für diese Datei ein:</translation>
</message>
<message>
<source>Encoded with LameXP</source>
<translation type="unfinished">Enkodiert mit LameXP</translation>
</message>
<message>
<source>Not editable</source>
<translation type="unfinished">Nicht Editierbar</translation>
</message>
<message>
<source>Sorry, this property of the source file cannot be edited!</source>
<translation type="unfinished">Diese Eigenschaft der Datei kann nicht bearbeitet werden!</translation>
</message>
<message>
<source>Full Path</source>
<translation type="unfinished">Datei Pfad</translation>
</message>
<message>
<source>Format</source>
<translation type="unfinished">Format</translation>
</message>
<message>
<source>Unspecified</source>
<translation type="unfinished">Keine Angabe</translation>
</message> </message>
</context> </context>
<context> <context>
@ -695,24 +977,24 @@ LameXP is free software and release versions won&apos;t expire.</source>
<source>LameXP - Processing</source> <source>LameXP - Processing</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>&lt;b&gt;Encoding Files&lt;/b&gt;&lt;br&gt;Your files are being encoded, please be patient...</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Initializing, please wait...</source> <source>Initializing, please wait...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>(VERSION_TAG)</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Abort</source> <source>Abort</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Close</source> <source>Close</source>
<translation type="unfinished">Schießen</translation>
</message>
<message>
<source>Encoding Files</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Your files are being encoded, please be patient...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@ -720,7 +1002,7 @@ LameXP is free software and release versions won&apos;t expire.</source>
<name>SplashScreen</name> <name>SplashScreen</name>
<message> <message>
<source>LameXP is launching...</source> <source>LameXP is launching...</source>
<translation type="unfinished"></translation> <translation type="unfinished">LameXP wird gestartet...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -731,54 +1013,91 @@ LameXP is free software and release versions won&apos;t expire.</source>
</message> </message>
<message> <message>
<source>Please wait...</source> <source>Please wait...</source>
<translation type="unfinished"></translation> <translation type="unfinished">Bitte warten...</translation>
</message>
<message>
<source>$(HINT_TEXT)</source>
<translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Latest version available:</source> <source>Latest version available:</source>
<translation type="unfinished"></translation> <translation type="unfinished">Neuste verfügbare Version:</translation>
</message>
<message>
<source>(Unknown)</source>
<translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Currently installed version:</source> <source>Currently installed version:</source>
<translation type="unfinished"></translation> <translation type="unfinished">Derzeit installierte Version:</translation>
</message>
<message>
<source>$(INFORMATION)</source>
<translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Retry</source> <source>Retry</source>
<translation type="unfinished"></translation> <translation type="unfinished">Wiederholen</translation>
</message> </message>
<message> <message>
<source>Show Log</source> <source>Show Log</source>
<translation type="unfinished"></translation> <translation type="unfinished">Lag Anzeigen</translation>
</message> </message>
<message> <message>
<source>Download &amp;&amp; Install</source> <source>Download &amp;&amp; Install</source>
<translation type="unfinished"></translation> <translation type="unfinished">Herunterladen &amp;&amp; Installieren</translation>
</message> </message>
<message> <message>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation type="unfinished">Schießen</translation>
</message> </message>
</context>
<context>
<name>WorkingBanner</name>
<message> <message>
<source>Frame</source> <source>Build</source>
<translation type="unfinished">Buildnummer</translation>
</message>
<message>
<source>Testing your internet connection, please wait...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>$(Status)</source> <source>Network connectivity test has faild!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Please make sure your internet connection is working properly and try again.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Checking for new updates online, please wait...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Failed to fetch update information from server!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sorry, the update server might be busy at this time. Plase try again later.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>More information available at:</source>
<translation type="unfinished">Weitere Informationen verfügbar unter:</translation>
</message>
<message>
<source>A new version of LameXP is available!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>We highly recommend all users to install this update as soon as possible.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No new updates available at this time.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Your version of LameXP is still up-to-date. Please check for updates regularly!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Your version appears to be newer than the latest release.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>This usually indicates your are currently using a pre-release version of LameXP.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unknown</source>
<translation type="unfinished">Unbekannt</translation>
</message>
</context> </context>
</TS> </TS>

View File

@ -17,6 +17,9 @@ for %%f in (..\..\gui\*.ui) do (
for %%f in (..\..\src\*.cpp) do ( for %%f in (..\..\src\*.cpp) do (
echo %%f >> update.lst echo %%f >> update.lst
) )
for %%f in (..\..\src\*.h) do (
echo %%f >> update.lst
)
REM --------------------------- REM ---------------------------
for %%f in (*.ts) do ( for %%f in (*.ts) do (
lupdate.exe @update.lst -no-obsolete -ts %%f lupdate.exe @update.lst -no-obsolete -ts %%f

View File

@ -172,7 +172,7 @@
<item> <item>
<widget class="QLabel" name="headerText"> <widget class="QLabel" name="headerText">
<property name="text"> <property name="text">
<string>&lt;b&gt;Log File&lt;/b&gt;&lt;br&gt;The log file shows detailed information about the selected job.</string> <string notr="true">&lt;b&gt;HEADER&lt;/b&gt;&lt;br&gt;(more header text)</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -286,7 +286,7 @@
<cursorShape>ArrowCursor</cursorShape> <cursorShape>ArrowCursor</cursorShape>
</property> </property>
<property name="plainText"> <property name="plainText">
<string>C:\DOS <string notr="true">C:\DOS
C:\DOS\RUN C:\DOS\RUN
RUN\DOS\RUN RUN\DOS\RUN
</string> </string>
@ -372,6 +372,7 @@ RUN\DOS\RUN
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>

View File

@ -137,7 +137,7 @@
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>&lt;b&gt;Meta Information&lt;/b&gt;&lt;br&gt;The following meta information have been extracted from the original file.</string> <string notr="true">&lt;b&gt;HEADER&lt;/b&gt;&lt;br&gt;(more header text)</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -318,6 +318,7 @@
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>

View File

@ -182,7 +182,7 @@
<item> <item>
<widget class="QLabel" name="label_headerStatus"> <widget class="QLabel" name="label_headerStatus">
<property name="text"> <property name="text">
<string>&lt;b&gt;Encoding Files&lt;/b&gt;&lt;br&gt;Your files are being encoded, please be patient...</string> <string notr="true">&lt;b&gt;Header&lt;/b&gt;&lt;br&gt;(more status details)</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -355,7 +355,7 @@
<cursorShape>PointingHandCursor</cursorShape> <cursorShape>PointingHandCursor</cursorShape>
</property> </property>
<property name="text"> <property name="text">
<string>(VERSION_TAG)</string> <string notr="true">(VERSION_TAG)</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
@ -436,6 +436,8 @@
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Icons.qrc"/> <include location="../res/Icons.qrc"/>
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Images.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>

View File

@ -212,7 +212,7 @@
<item> <item>
<widget class="QLabel" name="hintLabel"> <widget class="QLabel" name="hintLabel">
<property name="text"> <property name="text">
<string>$(HINT_TEXT)</string> <string notr="true">$(HINT_TEXT)</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -246,7 +246,7 @@
<item row="1" column="2"> <item row="1" column="2">
<widget class="QLabel" name="labelVersionLatest"> <widget class="QLabel" name="labelVersionLatest">
<property name="text"> <property name="text">
<string>(Unknown)</string> <string notr="true">(Unknown)</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -260,7 +260,7 @@
<item row="0" column="2"> <item row="0" column="2">
<widget class="QLabel" name="labelVersionInstalled"> <widget class="QLabel" name="labelVersionInstalled">
<property name="text"> <property name="text">
<string>(Unknown)</string> <string notr="true">(Unknown)</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -340,7 +340,7 @@
<item> <item>
<widget class="QLabel" name="infoLabel"> <widget class="QLabel" name="infoLabel">
<property name="text"> <property name="text">
<string>$(INFORMATION)</string> <string notr="true">$(INFORMATION)</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -555,6 +555,10 @@
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Icons.qrc"/> <include location="../res/Icons.qrc"/>
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Images.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Images.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>

View File

@ -87,7 +87,7 @@
</palette> </palette>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Frame</string> <string notr="true">Working</string>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<item> <item>
@ -123,7 +123,7 @@
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>$(Status)</string> <string notr="true">$(Status)</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
@ -142,6 +142,7 @@
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/> <include location="../res/Images.qrc"/>
<include location="../res/Images.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>

Binary file not shown.

View File

@ -25,7 +25,7 @@
#define VER_LAMEXP_MAJOR 4 #define VER_LAMEXP_MAJOR 4
#define VER_LAMEXP_MINOR_HI 0 #define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 0 #define VER_LAMEXP_MINOR_LO 0
#define VER_LAMEXP_BUILD 202 #define VER_LAMEXP_BUILD 204
#define VER_LAMEXP_SUFFIX TechPreview #define VER_LAMEXP_SUFFIX TechPreview
/* /*

View File

@ -42,7 +42,7 @@
//Helper macros //Helper macros
#define LINK(URL) QString("<a href=\"%1\">%2</a>").arg(URL).arg(URL) #define LINK(URL) QString("<a href=\"%1\">%2</a>").arg(URL).arg(URL)
#define CONTRIBUTOR(LANG, CNTR, ICON) QString("<tr><td valign=\"middle\"><img src=\"%1\"></td><td>&nbsp;&nbsp;</td><td valign=\"middle\">%2</td><td>&nbsp;&nbsp;</td><td valign=\"middle\">%3</td></tr>").arg(ICON, LANG, CNTR); #define CONTRIBUTOR(LANG, CNTR, ICON) QString("<tr><td valign=\"middle\"><img src=\"%1\"></td><td>&nbsp;&nbsp;</td><td valign=\"middle\">%2</td><td>&nbsp;&nbsp;</td><td valign=\"middle\">%3</td></tr>").arg(ICON, LANG, CNTR);
#define VSTR(BASE,TOOL,FORMAT) QString(BASE).arg(lamexp_version2string(FORMAT, lamexp_tool_version(TOOL))) #define VSTR(BASE,TOOL,FORMAT) BASE.arg(lamexp_version2string(FORMAT, lamexp_tool_version(TOOL)))
//Constants //Constants
const char *AboutDialog::neroAacUrl = "http://www.nero.com/eng/technologies-aac-codec.html"; const char *AboutDialog::neroAacUrl = "http://www.nero.com/eng/technologies-aac-codec.html";
@ -58,11 +58,10 @@ AboutDialog::AboutDialog(SettingsModel *settings, QWidget *parent, bool firstSta
{ {
QString aboutText; QString aboutText;
aboutText += "<h2>LameXP - Audio Encoder Front-end</h2>"; aboutText += QString("<h2>%1</h2>").arg(tr("LameXP - Audio Encoder Front-end"));
aboutText += QString("<b>Copyright (C) 2004-%1 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;. Some rights reserved.</b><br>").arg(max(lamexp_version_date().year(),QDate::currentDate().year())); aboutText += QString("<b>Copyright (C) 2004-%1 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;. Some rights reserved.</b><br>").arg(max(lamexp_version_date().year(),QDate::currentDate().year()));
aboutText += QString().sprintf("<b>Version %d.%02d %s, Build %d [%s]</b><br><br>", lamexp_version_major(), lamexp_version_minor(), lamexp_version_release(), lamexp_version_build(), lamexp_version_date().toString(Qt::ISODate).toLatin1().constData()); aboutText += QString().sprintf("<b>Version %d.%02d %s, Build %d [%s]</b><br><br>", lamexp_version_major(), lamexp_version_minor(), lamexp_version_release(), lamexp_version_build(), lamexp_version_date().toString(Qt::ISODate).toLatin1().constData());
aboutText += "<nobr>Please visit "; //the official web-site at aboutText += QString("<nobr>%1</nobr><br>").arg(tr("Please visit %1 for news and updates!").arg(LINK("http://forum.doom9.org/showthread.php?t=157726")));
aboutText += LINK("http://forum.doom9.org/showthread.php?t=157726") += " for news and updates!</nobr><br>"; //LINK("http://mulder.dummwiedeutsch.de/")
aboutText += "<hr><br>"; aboutText += "<hr><br>";
aboutText += "<nobr><tt>This program is free software; you can redistribute it and/or<br>"; aboutText += "<nobr><tt>This program is free software; you can redistribute it and/or<br>";
aboutText += "modify it under the terms of the GNU General Public License<br>"; aboutText += "modify it under the terms of the GNU General Public License<br>";
@ -77,52 +76,52 @@ AboutDialog::AboutDialog(SettingsModel *settings, QWidget *parent, bool firstSta
aboutText += "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</tt></nobr><br>"; aboutText += "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</tt></nobr><br>";
aboutText += "<hr><table><tr>"; aboutText += "<hr><table><tr>";
aboutText += "<td valign=\"middle\"><img src=\":/icons/error_big.png\"</td><td>&nbsp;</td>"; aboutText += "<td valign=\"middle\"><img src=\":/icons/error_big.png\"</td><td>&nbsp;</td>";
aboutText += "<td><font color=\"darkred\">Note: LameXP is free software. Do <b>not</b> pay money to obtain or use LameXP! If some third-party website tries to make you pay for downloading LameXP, you should <b>not</b> respond to the offer !!!</font></td>"; aboutText += QString("<td><font color=\"darkred\">%1</font></td>").arg(tr("Note: LameXP is free software. Do <b>not</b> pay money to obtain or use LameXP! If some third-party website tries to make you pay for downloading LameXP, you should <b>not</b> respond to the offer !!!"));
aboutText += "</tr></table><hr><br>"; aboutText += "</tr></table><hr><br>";
aboutText += QString("Special thanks go out to \"John33\" from %1 for his continuous support.<br>").arg(LINK("http://www.rarewares.org/")); aboutText += QString("%1<br>").arg(tr("Special thanks go out to \"John33\" from %1 for his continuous support.").arg(LINK("http://www.rarewares.org/")));
setText(aboutText); setText(aboutText);
setIconPixmap(dynamic_cast<QApplication*>(QApplication::instance())->windowIcon().pixmap(QSize(64,64))); setIconPixmap(dynamic_cast<QApplication*>(QApplication::instance())->windowIcon().pixmap(QSize(64,64)));
setWindowTitle("About LameXP"); setWindowTitle(tr("About LameXP"));
if(firstStart) if(firstStart)
{ {
QPushButton *firstButton = addButton("Show License Text", QMessageBox::AcceptRole); QPushButton *firstButton = addButton(tr("Show License Text"), QMessageBox::AcceptRole);
firstButton->setIcon(QIcon(":/icons/script.png")); firstButton->setIcon(QIcon(":/icons/script.png"));
firstButton->setMinimumWidth(135); firstButton->setMinimumWidth(135);
firstButton->disconnect(); firstButton->disconnect();
connect(firstButton, SIGNAL(clicked()), this, SLOT(openLicenseText())); connect(firstButton, SIGNAL(clicked()), this, SLOT(openLicenseText()));
QPushButton *secondButton = addButton("Accept License", QMessageBox::AcceptRole); QPushButton *secondButton = addButton(tr("Accept License"), QMessageBox::AcceptRole);
secondButton->setIcon(QIcon(":/icons/accept.png")); secondButton->setIcon(QIcon(":/icons/accept.png"));
secondButton->setMinimumWidth(120); secondButton->setMinimumWidth(120);
QPushButton *thirdButton = addButton("Decline License", QMessageBox::AcceptRole); QPushButton *thirdButton = addButton(tr("Decline License"), QMessageBox::AcceptRole);
thirdButton->setIcon(QIcon(":/icons/delete.png")); thirdButton->setIcon(QIcon(":/icons/delete.png"));
thirdButton->setMinimumWidth(120); thirdButton->setMinimumWidth(120);
thirdButton->setEnabled(false); thirdButton->setEnabled(false);
} }
else else
{ {
QPushButton *firstButton = addButton("3rd Party S/W", QMessageBox::AcceptRole); QPushButton *firstButton = addButton(tr("3rd Party S/W"), QMessageBox::AcceptRole);
firstButton->setIcon(QIcon(":/icons/page_white_cplusplus.png")); firstButton->setIcon(QIcon(":/icons/page_white_cplusplus.png"));
firstButton->setMinimumWidth(120); firstButton->setMinimumWidth(120);
firstButton->disconnect(); firstButton->disconnect();
connect(firstButton, SIGNAL(clicked()), this, SLOT(showMoreAbout())); connect(firstButton, SIGNAL(clicked()), this, SLOT(showMoreAbout()));
QPushButton *secondButton = addButton("Contributors", QMessageBox::AcceptRole); QPushButton *secondButton = addButton(tr("Contributors"), QMessageBox::AcceptRole);
secondButton->setIcon(QIcon(":icons/user_suit.png")); secondButton->setIcon(QIcon(":icons/user_suit.png"));
secondButton->setMinimumWidth(120); secondButton->setMinimumWidth(120);
secondButton->disconnect(); secondButton->disconnect();
connect(secondButton, SIGNAL(clicked()), this, SLOT(showAboutContributors())); connect(secondButton, SIGNAL(clicked()), this, SLOT(showAboutContributors()));
QPushButton *thirdButton = addButton("About Qt4", QMessageBox::AcceptRole); QPushButton *thirdButton = addButton(tr("About Qt4"), QMessageBox::AcceptRole);
thirdButton->setIcon(QIcon(":/images/Qt.svg")); thirdButton->setIcon(QIcon(":/images/Qt.svg"));
thirdButton->setMinimumWidth(120); thirdButton->setMinimumWidth(120);
thirdButton->disconnect(); thirdButton->disconnect();
connect(thirdButton, SIGNAL(clicked()), this, SLOT(showAboutQt())); connect(thirdButton, SIGNAL(clicked()), this, SLOT(showAboutQt()));
QPushButton *fourthButton = addButton("Discard", QMessageBox::AcceptRole); QPushButton *fourthButton = addButton(tr("Discard"), QMessageBox::AcceptRole);
fourthButton->setIcon(QIcon(":/icons/cross.png")); fourthButton->setIcon(QIcon(":/icons/cross.png"));
fourthButton->setMinimumWidth(90); fourthButton->setMinimumWidth(90);
} }
@ -191,24 +190,24 @@ void AboutDialog::showAboutQt(void)
void AboutDialog::showAboutContributors(void) void AboutDialog::showAboutContributors(void)
{ {
QString contributorsAboutText; QString contributorsAboutText;
contributorsAboutText += "<h3>The following people have contributed to LameXP:</h3>"; contributorsAboutText += QString("<h3>%1</h3>").arg(tr("The following people have contributed to LameXP:"));
contributorsAboutText += "<b>Translators:</b>"; contributorsAboutText += QString("<b>%1</b>").arg(tr("Translators:"));
contributorsAboutText += "<table style=\"margin-top:5px\">"; contributorsAboutText += "<table style=\"margin-top:5px\">";
contributorsAboutText += CONTRIBUTOR("Englisch", "LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;", ":/flags/gb.png"); contributorsAboutText += CONTRIBUTOR("Englisch", "LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;", ":/flags/gb.png");
contributorsAboutText += CONTRIBUTOR("Deutsch", "LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;", ":/flags/de.png"); contributorsAboutText += CONTRIBUTOR("Deutsch", "LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;", ":/flags/de.png");
contributorsAboutText += "</table>"; contributorsAboutText += "</table>";
contributorsAboutText += "<br><br>"; contributorsAboutText += "<br><br>";
contributorsAboutText += "<i>If you are willing to contribute a LameXP translation, feel free to contact us!</i><br>"; contributorsAboutText += QString("<i>%1</i><br>").arg(tr("If you are willing to contribute a LameXP translation, feel free to contact us!"));
QMessageBox *contributorsAboutBox = new QMessageBox(this); QMessageBox *contributorsAboutBox = new QMessageBox(this);
contributorsAboutBox->setText(contributorsAboutText); contributorsAboutBox->setText(contributorsAboutText);
contributorsAboutBox->setIconPixmap(dynamic_cast<QApplication*>(QApplication::instance())->windowIcon().pixmap(QSize(64,64))); contributorsAboutBox->setIconPixmap(dynamic_cast<QApplication*>(QApplication::instance())->windowIcon().pixmap(QSize(64,64)));
QPushButton *closeButton = contributorsAboutBox->addButton("Discard", QMessageBox::AcceptRole); QPushButton *closeButton = contributorsAboutBox->addButton(tr("Discard"), QMessageBox::AcceptRole);
closeButton->setIcon(QIcon(":/icons/cross.png")); closeButton->setIcon(QIcon(":/icons/cross.png"));
closeButton->setMinimumWidth(90); closeButton->setMinimumWidth(90);
contributorsAboutBox->setWindowTitle("About Contributors"); contributorsAboutBox->setWindowTitle(tr("About Contributors"));
contributorsAboutBox->setIconPixmap(QIcon(":/images/Logo_Contributors.png").pixmap(QSize(64,74))); contributorsAboutBox->setIconPixmap(QIcon(":/images/Logo_Contributors.png").pixmap(QSize(64,74)));
contributorsAboutBox->setWindowIcon(QIcon(":/icons/user_suit.png")); contributorsAboutBox->setWindowIcon(QIcon(":/icons/user_suit.png"));
contributorsAboutBox->exec(); contributorsAboutBox->exec();
@ -219,52 +218,52 @@ void AboutDialog::showAboutContributors(void)
void AboutDialog::showMoreAbout(void) void AboutDialog::showMoreAbout(void)
{ {
QString moreAboutText; QString moreAboutText;
moreAboutText += "<h3>The following third-party software is used in LameXP:</h3>"; moreAboutText += QString("<h3>%1</h3>").arg(tr("The following third-party software is used in LameXP:"));
moreAboutText += "<div style=\"margin-left:-25px;font-size:8pt\"><ul>"; moreAboutText += "<div style=\"margin-left:-25px;font-size:8pt\"><ul>";
moreAboutText += VSTR( "<li><b>LAME - OpenSource mp3 Encoder (%1)</b><br>", "lame.exe", "v?.?? a??"); moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("LAME - OpenSource mp3 Encoder")), "lame.exe", "v?.?? a??");
moreAboutText += "Released under the terms of the GNU Leser General Public License.<br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Released under the terms of the GNU Leser General Public License."));
moreAboutText += LINK("http://lame.sourceforge.net/"); moreAboutText += LINK("http://lame.sourceforge.net/");
moreAboutText += "<div style=\"font-size:1pt\"><br></div>"; moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
moreAboutText += VSTR("<li><b>OggEnc - Ogg Vorbis Encoder (%1)</b>", "oggenc2_i386.exe", "v?.??"); moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("OggEnc - Ogg Vorbis Encoder")), "oggenc2_i386.exe", "v?.??");
moreAboutText += "<br>Completely open and patent-free audio encoding technology.<br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Completely open and patent-free audio encoding technology."));
moreAboutText += LINK("http://www.vorbis.com/"); moreAboutText += LINK("http://www.vorbis.com/");
moreAboutText += "<div style=\"font-size:1pt\"><br></div>"; moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
moreAboutText += VSTR("<li><b>Nero AAC reference MPEG-4 Encoder (%1)</b><br>", "neroAacEnc.exe", "v?.?.?.?"); moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("Nero AAC reference MPEG-4 Encoder")), "neroAacEnc.exe", "v?.?.?.?");
moreAboutText += "Freeware state-of-the-art HE-AAC encoder with 2-Pass support.<br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Freeware state-of-the-art HE-AAC encoder with 2-Pass support."));
moreAboutText += "<i>Available from vendor web-site as free download:</i><br>"; moreAboutText += QString("<nobr><i>%1</i></nobr><br>").arg(tr("Available from vendor web-site as free download:"));
moreAboutText += LINK(neroAacUrl); moreAboutText += LINK(neroAacUrl);
moreAboutText += "<div style=\"font-size:1pt\"><br></div>"; moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
moreAboutText += VSTR("<li><b>FLAC - Free Lossless Audio Codec (%1)</b><br>", "flac.exe", "v?.?.?"); moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("FLAC - Free Lossless Audio Codec")), "flac.exe", "v?.?.?");
moreAboutText += "Open and patent-free lossless audio compression technology.<br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Open and patent-free lossless audio compression technology."));
moreAboutText += LINK("http://flac.sourceforge.net/"); moreAboutText += LINK("http://flac.sourceforge.net/");
moreAboutText += "<div style=\"font-size:1pt\"><br></div>"; moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
moreAboutText += VSTR("<li><b>AC3Filter Tools - AC3/DTS Decoder (%1)</b><br>", "valdec.exe", "v?.??"); moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("AC3Filter Tools - AC3/DTS Decoder")), "valdec.exe", "v?.??");
moreAboutText += "Released under the terms of the GNU Leser General Public License.<br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Released under the terms of the GNU Leser General Public License."));
moreAboutText += LINK("http://www.ac3filter.net/projects/tools"); moreAboutText += LINK("http://www.ac3filter.net/projects/tools");
moreAboutText += "<div style=\"font-size:1pt\"><br></div>"; moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
moreAboutText += VSTR("<li><b>MediaInfo - Media File Analysis Tool (%1)</b><br>", "mediainfo_i386.exe", "v?.?.?"); moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("MediaInfo - Media File Analysis Tool")), "mediainfo_i386.exe", "v?.?.?");
moreAboutText += "Released under the terms of the GNU Leser General Public License.<br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Released under the terms of the GNU Leser General Public License."));
moreAboutText += LINK("http://mediainfo.sourceforge.net/"); moreAboutText += LINK("http://mediainfo.sourceforge.net/");
moreAboutText += "<div style=\"font-size:1pt\"><br></div>"; moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
moreAboutText += VSTR("<li><b>SoX - Sound eXchange (%1)</b><br>", "sox.exe", "v??.?.?"); moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("SoX - Sound eXchange")), "sox.exe", "v??.?.?");
moreAboutText += "Released under the terms of the GNU Leser General Public License.<br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Released under the terms of the GNU Leser General Public License."));
moreAboutText += LINK("http://sox.sourceforge.net/"); moreAboutText += LINK("http://sox.sourceforge.net/");
moreAboutText += "<div style=\"font-size:1pt\"><br></div>"; moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
moreAboutText += VSTR("<li><b>GnuPG - The GNU Privacy Guard (%1)</b><br>", "gpgv.exe", "v?.?.??"); moreAboutText += VSTR(QString("<li><b>%1 (%2)</b><br>").arg(tr("GnuPG - The GNU Privacy Guard")), "gpgv.exe", "v?.?.??");
moreAboutText += "Released under the terms of the GNU Leser General Public License.<br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("Released under the terms of the GNU Leser General Public License."));
moreAboutText += LINK("http://www.gnupg.org/"); moreAboutText += LINK("http://www.gnupg.org/");
moreAboutText += "<div style=\"font-size:1pt\"><br></div>"; moreAboutText += "<div style=\"font-size:1pt\"><br></div>";
moreAboutText += "<li><b>Silk Icons - Over 700 icons in PNG format (v1.3)</b><br>"; moreAboutText += QString("<li><b>%1 (v1.3)</b><br>").arg(tr("Silk Icons - Over 700 icons in PNG format"));
moreAboutText += "<nobr>By Mark James, released under the Creative Commons 'by' License.</nobr><br>"; moreAboutText += QString("<nobr>%1</nobr><br>").arg(tr("By Mark James, released under the Creative Commons 'by' License."));
moreAboutText += LINK("http://www.famfamfam.com/lab/icons/silk/"); moreAboutText += LINK("http://www.famfamfam.com/lab/icons/silk/");
moreAboutText += "<br></ul></div>"; moreAboutText += "<br></ul></div>";
@ -272,11 +271,11 @@ void AboutDialog::showMoreAbout(void)
moreAboutBox->setText(moreAboutText); moreAboutBox->setText(moreAboutText);
moreAboutBox->setIconPixmap(dynamic_cast<QApplication*>(QApplication::instance())->windowIcon().pixmap(QSize(64,64))); moreAboutBox->setIconPixmap(dynamic_cast<QApplication*>(QApplication::instance())->windowIcon().pixmap(QSize(64,64)));
QPushButton *closeButton = moreAboutBox->addButton("Discard", QMessageBox::AcceptRole); QPushButton *closeButton = moreAboutBox->addButton(tr("Discard"), QMessageBox::AcceptRole);
closeButton->setIcon(QIcon(":/icons/cross.png")); closeButton->setIcon(QIcon(":/icons/cross.png"));
closeButton->setMinimumWidth(90); closeButton->setMinimumWidth(90);
moreAboutBox->setWindowTitle("About Third-party Software"); moreAboutBox->setWindowTitle(tr("About Third-party Software"));
moreAboutBox->setIconPixmap(QIcon(":/images/Logo_Software.png").pixmap(QSize(64,71))); moreAboutBox->setIconPixmap(QIcon(":/images/Logo_Software.png").pixmap(QSize(64,71)));
moreAboutBox->setWindowIcon(QIcon(":/icons/page_white_cplusplus.png")); moreAboutBox->setWindowIcon(QIcon(":/icons/page_white_cplusplus.png"));
moreAboutBox->exec(); moreAboutBox->exec();

View File

@ -64,7 +64,8 @@ DropBox::DropBox(QWidget *parent, QAbstractItemModel *model, SettingsModel *sett
setWindowOpacity(0.8); setWindowOpacity(0.8);
//Translate UI //Translate UI
retranslateUi(this); QEvent languageChangeEvent(QEvent::LanguageChange);
changeEvent(&languageChangeEvent);
} }
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -79,11 +80,6 @@ DropBox::~DropBox(void)
// PUBLIC SLOTS // PUBLIC SLOTS
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
void DropBox::doRetranslate(void)
{
retranslateUi(this);
}
void DropBox::modelChanged(void) void DropBox::modelChanged(void)
{ {
if(m_model) if(m_model)

View File

@ -64,6 +64,5 @@ protected:
public slots: public slots:
void modelChanged(void); void modelChanged(void);
void doRetranslate(void);
void showToolTip(void); void showToolTip(void);
}; };

View File

@ -32,7 +32,9 @@ LogViewDialog::LogViewDialog(QWidget *parent)
//Init the dialog, from the .ui file //Init the dialog, from the .ui file
setupUi(this); setupUi(this);
setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint); setWindowFlags(windowFlags() ^ Qt::WindowContextHelpButtonHint);
//setWindowFlags(windowFlags() & (~Qt::WindowMaximizeButtonHint));
//Translate
headerText->setText(QString("<b>%1</b><br>%2").arg(tr("Log File"), tr("The log file shows detailed information about the selected job.")));
//Clear //Clear
textEdit->clear(); textEdit->clear();

View File

@ -316,6 +316,10 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
} }
} }
//Re-translate (make sure we translate once)
QEvent languageChangeEvent(QEvent::LanguageChange);
changeEvent(&languageChangeEvent);
//Enable Drag & Drop //Enable Drag & Drop
this->setAcceptDrops(true); this->setAcceptDrops(true);
} }
@ -1560,8 +1564,14 @@ void MainWindow::findFileContextActionTriggered(void)
QModelIndex index = sourceFileView->currentIndex(); QModelIndex index = sourceFileView->currentIndex();
if(index.isValid()) if(index.isValid())
{ {
QProcessEnvironment procEnv = QProcessEnvironment::systemEnvironment(); QString systemRootPath;
QString systemRootPath = procEnv.value("SystemRoot", procEnv.value("windir"));
QDir systemRoot(lamexp_known_folder(lamexp_folder_systemfolder));
if(systemRoot.exists() && systemRoot.cdUp())
{
systemRootPath = systemRoot.canonicalPath();
}
if(!systemRootPath.isEmpty()) if(!systemRootPath.isEmpty())
{ {
QFileInfo explorer(QString("%1/explorer.exe").arg(systemRootPath)); QFileInfo explorer(QString("%1/explorer.exe").arg(systemRootPath));
@ -1571,8 +1581,10 @@ void MainWindow::findFileContextActionTriggered(void)
return; return;
} }
} }
else
{
qWarning("SystemRoot directory could not be detected!"); qWarning("SystemRoot directory could not be detected!");
QProcess::execute("explorer.exe", QStringList() << "/select," << QDir::toNativeSeparators(m_fileListModel->getFile(index).filePath())); }
} }
} }

View File

@ -48,6 +48,9 @@ MetaInfoDialog::MetaInfoDialog(QWidget *parent)
connect(upButton, SIGNAL(clicked()), this, SLOT(upButtonClicked())); connect(upButton, SIGNAL(clicked()), this, SLOT(upButtonClicked()));
connect(downButton, SIGNAL(clicked()), this, SLOT(downButtonClicked())); connect(downButton, SIGNAL(clicked()), this, SLOT(downButtonClicked()));
connect(editButton, SIGNAL(clicked()), this, SLOT(editButtonClicked())); connect(editButton, SIGNAL(clicked()), this, SLOT(editButtonClicked()));
//Translate
labelHeaderText->setText(QString("<b>%1</b><br>%2").arg(tr("Meta Information"), tr("The following meta information have been extracted from the original file.")));
} }
MetaInfoDialog::~MetaInfoDialog(void) MetaInfoDialog::~MetaInfoDialog(void)

View File

@ -128,6 +128,9 @@ ProcessingDialog::ProcessingDialog(FileListModel *fileListModel, AudioFileModel
} }
} }
//Translate
label_headerStatus->setText(QString("<b>%1</b><br>%2").arg(tr("Encoding Files"), tr("Your files are being encoded, please be patient...")));
//Enable system tray icon //Enable system tray icon
connect(m_systemTray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systemTrayActivated(QSystemTrayIcon::ActivationReason))); connect(m_systemTray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systemTrayActivated(QSystemTrayIcon::ActivationReason)));

View File

@ -135,8 +135,8 @@ void UpdateDialog::showEvent(QShowEvent *event)
{ {
QDialog::showEvent(event); QDialog::showEvent(event);
labelVersionInstalled->setText(QString("Build %1 (%2)").arg(QString::number(lamexp_version_build()), lamexp_version_date().toString(Qt::ISODate))); labelVersionInstalled->setText(QString("%1 %2 (%3)").arg(tr("Build"), QString::number(lamexp_version_build()), lamexp_version_date().toString(Qt::ISODate)));
labelVersionLatest->setText("(Unknown)"); labelVersionLatest->setText(QString("(%1)").arg(tr("Unknown")));
QTimer::singleShot(0, this, SLOT(updateInit())); QTimer::singleShot(0, this, SLOT(updateInit()));
installButton->setEnabled(false); installButton->setEnabled(false);
@ -201,7 +201,7 @@ void UpdateDialog::checkForUpdates(void)
QApplication::processEvents(); QApplication::processEvents();
QApplication::setOverrideCursor(Qt::WaitCursor); QApplication::setOverrideCursor(Qt::WaitCursor);
statusLabel->setText("Testing your internet connection, please wait..."); statusLabel->setText(tr("Testing your internet connection, please wait..."));
m_logFile->clear(); m_logFile->clear();
m_logFile->append("Checking internet connection..."); m_logFile->append("Checking internet connection...");
@ -228,10 +228,10 @@ void UpdateDialog::checkForUpdates(void)
closeButton->setEnabled(true); closeButton->setEnabled(true);
retryButton->setEnabled(true); retryButton->setEnabled(true);
logButton->setEnabled(true); logButton->setEnabled(true);
statusLabel->setText("Network connectivity test has faild!"); statusLabel->setText(tr("Network connectivity test has faild!"));
progressBar->setValue(progressBar->maximum()); progressBar->setValue(progressBar->maximum());
hintIcon->setPixmap(QIcon(":/icons/error.png").pixmap(16,16)); hintIcon->setPixmap(QIcon(":/icons/error.png").pixmap(16,16));
hintLabel->setText("Please make sure your internet connection is working properly and try again."); hintLabel->setText(tr("Please make sure your internet connection is working properly and try again."));
hintIcon->show(); hintIcon->show();
hintLabel->show(); hintLabel->show();
LAMEXP_DELETE(m_updateInfo); LAMEXP_DELETE(m_updateInfo);
@ -241,7 +241,7 @@ void UpdateDialog::checkForUpdates(void)
return; return;
} }
statusLabel->setText("Checking for new updates online, please wait..."); statusLabel->setText(tr("Checking for new updates online, please wait..."));
m_logFile->append("Checking for updates online..."); m_logFile->append("Checking for updates online...");
for(int i = 0; update_mirrors[i]; i++) for(int i = 0; update_mirrors[i]; i++)
@ -266,10 +266,10 @@ void UpdateDialog::checkForUpdates(void)
closeButton->setEnabled(true); closeButton->setEnabled(true);
retryButton->setEnabled(true); retryButton->setEnabled(true);
logButton->setEnabled(true); logButton->setEnabled(true);
statusLabel->setText("Failed to fetch update information from server!"); statusLabel->setText(tr("Failed to fetch update information from server!"));
progressBar->setValue(progressBar->maximum()); progressBar->setValue(progressBar->maximum());
hintIcon->setPixmap(QIcon(":/icons/server_error.png").pixmap(16,16)); hintIcon->setPixmap(QIcon(":/icons/server_error.png").pixmap(16,16));
hintLabel->setText("Sorry, the update server might be busy at this time. Plase try again later."); hintLabel->setText(tr("Sorry, the update server might be busy at this time. Plase try again later."));
hintIcon->show(); hintIcon->show();
hintLabel->show(); hintLabel->show();
LAMEXP_DELETE(m_updateInfo); LAMEXP_DELETE(m_updateInfo);
@ -277,35 +277,35 @@ void UpdateDialog::checkForUpdates(void)
return; return;
} }
labelVersionLatest->setText(QString("Build %1 (%2)").arg(QString::number(m_updateInfo->m_buildNo), m_updateInfo->m_buildDate.toString(Qt::ISODate))); labelVersionLatest->setText(QString("%1 %2 (%3)").arg(tr("Build"), QString::number(m_updateInfo->m_buildNo), m_updateInfo->m_buildDate.toString(Qt::ISODate)));
infoLabel->show(); infoLabel->show();
infoLabel->setText(QString("More information available at:<br><a href=\"%1\">%1</a>").arg(m_updateInfo->m_downloadSite)); infoLabel->setText(QString("%1<br><a href=\"%2\">%2</a>").arg(tr("More information available at:"), m_updateInfo->m_downloadSite));
QApplication::processEvents(); QApplication::processEvents();
if(m_updateInfo->m_buildNo > lamexp_version_build()) if(m_updateInfo->m_buildNo > lamexp_version_build())
{ {
installButton->setEnabled(true); installButton->setEnabled(true);
statusLabel->setText("A new version of LameXP is available!"); statusLabel->setText(tr("A new version of LameXP is available!"));
hintIcon->setPixmap(QIcon(":/icons/bell.png").pixmap(16,16)); hintIcon->setPixmap(QIcon(":/icons/bell.png").pixmap(16,16));
hintLabel->setText("We highly recommend all users to install this update as soon as possible."); hintLabel->setText(tr("We highly recommend all users to install this update as soon as possible."));
hintIcon->show(); hintIcon->show();
hintLabel->show(); hintLabel->show();
MessageBeep(MB_ICONINFORMATION); MessageBeep(MB_ICONINFORMATION);
} }
else if(m_updateInfo->m_buildNo == lamexp_version_build()) else if(m_updateInfo->m_buildNo == lamexp_version_build())
{ {
statusLabel->setText("No new updates available at this time."); statusLabel->setText(tr("No new updates available at this time."));
hintIcon->setPixmap(QIcon(":/icons/information.png").pixmap(16,16)); hintIcon->setPixmap(QIcon(":/icons/information.png").pixmap(16,16));
hintLabel->setText("Your version of LameXP is still up-to-date. Please check for updates regularly!"); hintLabel->setText(tr("Your version of LameXP is still up-to-date. Please check for updates regularly!"));
hintIcon->show(); hintIcon->show();
hintLabel->show(); hintLabel->show();
MessageBeep(MB_ICONINFORMATION); MessageBeep(MB_ICONINFORMATION);
} }
else else
{ {
statusLabel->setText("Your version appears to be newer than the latest release."); statusLabel->setText(tr("Your version appears to be newer than the latest release."));
hintIcon->setPixmap(QIcon(":/icons/bug.png").pixmap(16,16)); hintIcon->setPixmap(QIcon(":/icons/bug.png").pixmap(16,16));
hintLabel->setText("This usually indicates your are currently using a pre-release version of LameXP."); hintLabel->setText(tr("This usually indicates your are currently using a pre-release version of LameXP."));
hintIcon->show(); hintIcon->show();
hintLabel->show(); hintLabel->show();
MessageBeep(MB_ICONEXCLAMATION); MessageBeep(MB_ICONEXCLAMATION);

View File

@ -721,13 +721,7 @@ QString lamexp_rand_str(void)
*/ */
const QString &lamexp_temp_folder(void) const QString &lamexp_temp_folder(void)
{ {
typedef HRESULT (WINAPI *SHGetKnownFolderPathFun)(__in const GUID &rfid, __in DWORD dwFlags, __in HANDLE hToken, __out PWSTR *ppszPath);
typedef HRESULT (WINAPI *SHGetFolderPathFun)(__in HWND hwndOwner, __in int nFolder, __in HANDLE hToken, __in DWORD dwFlags, __out LPWSTR pszPath);
static const char *TEMP_STR = "Temp"; static const char *TEMP_STR = "Temp";
static const int CSIDL_LOCAL_APPDATA = 0x001c;
static const GUID LocalAppDataID={0xF1B32785,0x6FBA,0x4FCF,{0x9D,0x55,0x7B,0x8E,0x7F,0x15,0x70,0x91}};
static const GUID LocalAppDataLowID={0xA520A1A4,0x1780,0x4FF6,{0xBD,0x18,0x16,0x73,0x43,0xC5,0xAF,0x16}};
if(g_lamexp_temp_folder.isEmpty()) if(g_lamexp_temp_folder.isEmpty())
{ {

View File

@ -75,40 +75,40 @@ QVariant MetaInfoModel::data(const QModelIndex &index, int role) const
switch(index.row() + m_offset) switch(index.row() + m_offset)
{ {
case 0: case 0:
return (!index.column()) ? "Full Path" : CHECK1(m_audioFile->filePath()); return (!index.column()) ? tr("Full Path") : CHECK1(m_audioFile->filePath());
break; break;
case 1: case 1:
return (!index.column()) ? "Format" : CHECK1(m_audioFile->formatAudioBaseInfo()); return (!index.column()) ? tr("Format") : CHECK1(m_audioFile->formatAudioBaseInfo());
break; break;
case 2: case 2:
return (!index.column()) ? "Container" : CHECK1(m_audioFile->formatContainerInfo()); return (!index.column()) ? tr("Container") : CHECK1(m_audioFile->formatContainerInfo());
break; break;
case 3: case 3:
return (!index.column()) ? "Compression" : CHECK1(m_audioFile->formatAudioCompressInfo()); return (!index.column()) ? tr("Compression") : CHECK1(m_audioFile->formatAudioCompressInfo());
break; break;
case 4: case 4:
return (!index.column()) ? "Duration" : CHECK1(m_audioFile->fileDurationInfo()); return (!index.column()) ? tr("Duration") : CHECK1(m_audioFile->fileDurationInfo());
break; break;
case 5: case 5:
return (!index.column()) ? "Title" : CHECK1(m_audioFile->fileName()); return (!index.column()) ? tr("Title") : CHECK1(m_audioFile->fileName());
break; break;
case 6: case 6:
return (!index.column()) ? "Artist" : CHECK1(m_audioFile->fileArtist()); return (!index.column()) ? tr("Artist") : CHECK1(m_audioFile->fileArtist());
break; break;
case 7: case 7:
return (!index.column()) ? "Album" : CHECK1(m_audioFile->fileAlbum()); return (!index.column()) ? tr("Album") : CHECK1(m_audioFile->fileAlbum());
break; break;
case 8: case 8:
return (!index.column()) ? "Genre" : CHECK1(m_audioFile->fileGenre()); return (!index.column()) ? tr("Genre") : CHECK1(m_audioFile->fileGenre());
break; break;
case 9: case 9:
return (!index.column()) ? "Year" : CHECK2(m_audioFile->fileYear()); return (!index.column()) ? tr("Year") : CHECK2(m_audioFile->fileYear());
break; break;
case 10: case 10:
return (!index.column()) ? "Position" : ((m_audioFile->filePosition() == UINT_MAX) ? "Generate from list position" : CHECK2(m_audioFile->filePosition())); return (!index.column()) ? tr("Position") : ((m_audioFile->filePosition() == UINT_MAX) ? tr("Generate from list position") : CHECK2(m_audioFile->filePosition()));
break; break;
case 11: case 11:
return (!index.column()) ? "Comment" : CHECK1(m_audioFile->fileComment()); return (!index.column()) ? tr("Comment") : CHECK1(m_audioFile->fileComment());
break; break;
default: default:
return QVariant(); return QVariant();
@ -220,10 +220,10 @@ QVariant MetaInfoModel::headerData(int section, Qt::Orientation orientation, int
switch(section) switch(section)
{ {
case 0: case 0:
return QVariant("Property"); return QVariant(tr("Property"));
break; break;
case 1: case 1:
return QVariant("Value"); return QVariant(tr("Value"));
break; break;
default: default:
return QVariant(); return QVariant();
@ -245,18 +245,18 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
{ {
bool ok = false; bool ok = false;
int val = -1; int val = -1;
QStringList generes("(Unspecified)"); QStringList generes(QString("(%1)").arg(tr("Unspecified")));
QString temp; QString temp;
switch(index.row() + m_offset) switch(index.row() + m_offset)
{ {
case 5: case 5:
temp = QInputDialog::getText(parent, "Edit Title", EXPAND("Please enter the title for this file:"), QLineEdit::Normal, m_audioFile->fileName(), &ok).simplified(); temp = QInputDialog::getText(parent, tr("Edit Title"), EXPAND(tr("Please enter the title for this file:")), QLineEdit::Normal, m_audioFile->fileName(), &ok).simplified();
if(ok) if(ok)
{ {
if(temp.isEmpty()) if(temp.isEmpty())
{ {
QMessageBox::warning(parent, "Edit Title", "The title must not be empty. Generating title from file name!"); QMessageBox::warning(parent, tr("Edit Title"), tr("The title must not be empty. Generating title from file name!"));
temp = QFileInfo(m_audioFile->filePath()).completeBaseName().replace("_", " ").simplified(); temp = QFileInfo(m_audioFile->filePath()).completeBaseName().replace("_", " ").simplified();
int index = temp.lastIndexOf(" - "); int index = temp.lastIndexOf(" - ");
if(index >= 0) temp = temp.mid(index + 3).trimmed(); if(index >= 0) temp = temp.mid(index + 3).trimmed();
@ -267,7 +267,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
} }
break; break;
case 6: case 6:
temp = QInputDialog::getText(parent, "Edit Artist", EXPAND("Please enter the artist for this file:"), QLineEdit::Normal, m_audioFile->fileArtist(), &ok).simplified(); temp = QInputDialog::getText(parent, tr("Edit Artist"), EXPAND(tr("Please enter the artist for this file:")), QLineEdit::Normal, m_audioFile->fileArtist(), &ok).simplified();
if(ok) if(ok)
{ {
beginResetModel(); beginResetModel();
@ -276,7 +276,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
} }
break; break;
case 7: case 7:
temp = QInputDialog::getText(parent, "Edit Album", EXPAND("Please enter the album for this file:"), QLineEdit::Normal, m_audioFile->fileAlbum(), &ok).simplified(); temp = QInputDialog::getText(parent, tr("Edit Album"), EXPAND(tr("Please enter the album for this file:")), QLineEdit::Normal, m_audioFile->fileAlbum(), &ok).simplified();
if(ok) if(ok)
{ {
beginResetModel(); beginResetModel();
@ -286,7 +286,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
break; break;
case 8: case 8:
for(int i = 0; g_lamexp_generes[i]; i++) generes << g_lamexp_generes[i]; for(int i = 0; g_lamexp_generes[i]; i++) generes << g_lamexp_generes[i];
temp = QInputDialog::getItem(parent, "Edit Genre", EXPAND("Please enter the genre for this file:"), generes, (m_audioFile->fileGenre().isEmpty() ? 1 : generes.indexOf(m_audioFile->fileGenre())), false, &ok); temp = QInputDialog::getItem(parent, tr("Edit Genre"), EXPAND(tr("Please enter the genre for this file:")), generes, (m_audioFile->fileGenre().isEmpty() ? 1 : generes.indexOf(m_audioFile->fileGenre())), false, &ok);
if(ok) if(ok)
{ {
beginResetModel(); beginResetModel();
@ -295,7 +295,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
} }
break; break;
case 9: case 9:
val = QInputDialog::getInt(parent, "Edit Year", EXPAND("Please enter the year for this file:"), (m_audioFile->fileYear() ? m_audioFile->fileYear() : 1900), 0, 2100, 1, &ok); val = QInputDialog::getInt(parent, tr("Edit Year"), EXPAND(tr("Please enter the year for this file:")), (m_audioFile->fileYear() ? m_audioFile->fileYear() : 1900), 0, 2100, 1, &ok);
if(ok) if(ok)
{ {
beginResetModel(); beginResetModel();
@ -306,7 +306,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
case 10: case 10:
if(!m_offset) if(!m_offset)
{ {
val = QInputDialog::getInt(parent, "Edit Position", EXPAND("Please enter the position (track no.) for this file:"), (m_audioFile->filePosition() ? m_audioFile->filePosition() : 1), 0, 99, 1, &ok); val = QInputDialog::getInt(parent, tr("Edit Position"), EXPAND(tr("Please enter the position (track no.) for this file:")), (m_audioFile->filePosition() ? m_audioFile->filePosition() : 1), 0, 99, 1, &ok);
if(ok) if(ok)
{ {
beginResetModel(); beginResetModel();
@ -317,8 +317,8 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
else else
{ {
QStringList options; QStringList options;
options << "Unspecified (copy from source file)" << "Generate from list position"; options << tr("Unspecified (copy from source file)") << tr("Generate from list position");
temp = QInputDialog::getItem(parent, "Edit Position", EXPAND("Please enter the position (track no.) for this file:"), options, ((m_audioFile->filePosition() == UINT_MAX) ? 1 : 0), false, &ok); temp = QInputDialog::getItem(parent, tr("Edit Position"), EXPAND(tr("Please enter the position (track no.) for this file:")), options, ((m_audioFile->filePosition() == UINT_MAX) ? 1 : 0), false, &ok);
if(ok) if(ok)
{ {
beginResetModel(); beginResetModel();
@ -328,7 +328,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
} }
break; break;
case 11: case 11:
temp = QInputDialog::getText(parent, "Edit Comment", EXPAND("Please enter the comment for this file:"), QLineEdit::Normal, (m_audioFile->fileComment().isEmpty() ? "Encoded with LameXP" : m_audioFile->fileComment()), &ok).simplified(); temp = QInputDialog::getText(parent, tr("Edit Comment"), EXPAND(tr("Please enter the comment for this file:")), QLineEdit::Normal, (m_audioFile->fileComment().isEmpty() ? tr("Encoded with LameXP") : m_audioFile->fileComment()), &ok).simplified();
if(ok) if(ok)
{ {
beginResetModel(); beginResetModel();
@ -337,7 +337,7 @@ void MetaInfoModel::editItem(const QModelIndex &index, QWidget *parent)
} }
break; break;
default: default:
QMessageBox::warning(parent, "Not editable", "Sorry, this property of the source file cannot be edited!"); QMessageBox::warning(parent, tr("Not editable"), tr("Sorry, this property of the source file cannot be edited!"));
break; break;
} }
} }
@ -351,7 +351,7 @@ void MetaInfoModel::clearData(void)
m_audioFile->setFileArtist(QString()); m_audioFile->setFileArtist(QString());
m_audioFile->setFileAlbum(QString()); m_audioFile->setFileAlbum(QString());
m_audioFile->setFileGenre(QString()); m_audioFile->setFileGenre(QString());
m_audioFile->setFileComment("Encoded with LameXP"); m_audioFile->setFileComment(tr("Encoded with LameXP"));
m_audioFile->setFileYear(0); m_audioFile->setFileYear(0);
m_audioFile->setFilePosition(UINT_MAX); m_audioFile->setFilePosition(UINT_MAX);
m_audioFile->setFileDuration(0); m_audioFile->setFileDuration(0);