summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/app/CMakeLists.txt1
-rw-r--r--src/app/analyzer.cpp7
-rw-r--r--src/app/audioView.cpp31
-rw-r--r--src/app/audioView.h24
-rw-r--r--src/app/mainWindow.cpp20
-rw-r--r--src/app/mainWindow.h5
-rw-r--r--src/app/stateChange.cpp16
-rw-r--r--translations/desktop_files/es.po11
-rw-r--r--translations/desktop_files/zh_CN.po19
-rw-r--r--translations/messages/codeine.pot50
-rw-r--r--translations/messages/ka.po61
-rw-r--r--translations/messages/zh_Hans.po494
12 files changed, 663 insertions, 76 deletions
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index 60a21e4..eb10736 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -35,6 +35,7 @@ tde_add_executable( ${PROJECT_NAME} AUTOMOC
playDialog.cpp
listView.cpp
adjustSizeButton.cpp
+ audioView.cpp
fullScreenAction.cpp
insertAspectRatioMenuItems.cpp
playlistFile.cpp
diff --git a/src/app/analyzer.cpp b/src/app/analyzer.cpp
index 7a80872..97b9aa3 100644
--- a/src/app/analyzer.cpp
+++ b/src/app/analyzer.cpp
@@ -585,7 +585,12 @@ void Analyzer::Block::determineStep()
// I calculated the value 30 based on some trial and error
const double fallTime = 30 * m_rows;
- m_step = double(m_rows * 80) / fallTime; // 80 = ~milliseconds between signals with audio data
+
+ // The number of milliseconds between signals with audio data is about 80,
+ // however, basing the step off of that value causes some undersireable
+ // effects in the analyzer (high-end blocks constantly appearing/disappearing).
+ // 44 seems to be a good mid-point.
+ m_step = double(m_rows * 44) / fallTime;
}
void Analyzer::Block::drawBackground()
diff --git a/src/app/audioView.cpp b/src/app/audioView.cpp
new file mode 100644
index 0000000..27a25db
--- /dev/null
+++ b/src/app/audioView.cpp
@@ -0,0 +1,31 @@
+// SPDX-FileCopyrightText: 2025 mio <[email protected]>
+//
+// SPDX-License-Identifier: GPL-2.0-or-later.
+
+#include "audioView.h"
+
+#include <tqlayout.h>
+
+#include "analyzer.h"
+
+namespace Codeine
+{
+
+AudioView::AudioView(TQWidget *parent, const char *name)
+ : TQFrame(parent, name)
+{
+ auto *layout = new TQHBoxLayout(this);
+ m_analyzer = new Analyzer::Block(this);
+
+ // We subtract one from the below to remove excess padding.
+ // 36 blocks for the max/min height is arbitrary, but looks okay.
+ m_analyzer->setMaximumSize((Analyzer::Block::MAX_COLUMNS / 2) * (Analyzer::Block::WIDTH + 1) - 1,
+ 36 * (Analyzer::Block::HEIGHT + 1) - 1);
+
+ m_analyzer->setMinimumSize(Analyzer::Block::WIDTH * Analyzer::Block::MIN_COLUMNS,
+ 36 * (Analyzer::Block::HEIGHT + 1) - 1);
+
+ layout->addWidget(m_analyzer);
+}
+
+}
diff --git a/src/app/audioView.h b/src/app/audioView.h
new file mode 100644
index 0000000..592e38f
--- /dev/null
+++ b/src/app/audioView.h
@@ -0,0 +1,24 @@
+// SPDX-FileCopyrightText: 2025 mio <[email protected]>
+//
+// SPDX-License-Identifier: GPL-2.0-or-later.
+
+#ifndef CODEINE_AUDIOVIEW_H
+#define CODEINE_AUDIOVIEW_H
+
+#include <tqframe.h>
+
+namespace Codeine
+{
+
+class AudioView : public TQFrame
+{
+ public:
+ AudioView(TQWidget *parent, const char *name = nullptr);
+
+ private:
+ TQWidget *m_analyzer;
+};
+
+}
+
+#endif /* CODEINE_AUDIOVIEW_H */
diff --git a/src/app/mainWindow.cpp b/src/app/mainWindow.cpp
index 9409d85..5861427 100644
--- a/src/app/mainWindow.cpp
+++ b/src/app/mainWindow.cpp
@@ -22,11 +22,13 @@
#include <tqlayout.h> //ctor
#include <tqpopupmenu.h> //because XMLGUI is poorly designed
#include <tqobjectlist.h>
+#include <tqwidgetstack.h>
#include "../debug.h"
#include "../mxcl.library.h"
#include "actions.h"
#include "analyzer.h"
+#include "audioView.h"
#include "codeineConfig.h"
#include "extern.h" //dialog creation function definitions
#include "fullScreenAction.h"
@@ -70,8 +72,19 @@ MainWindow::MainWindow()
kapp->setMainWidget( this );
+ m_widgetStack = new TQWidgetStack(this, "m_widgetStack");
+
new VideoWindow( this );
- setCentralWidget( videoWindow() );
+
+ m_audioView = new AudioView(this, "m_audioView");
+
+ // videoWindow() will be the initial widget.
+ // m_audioView is raised when no video track is present.
+ m_widgetStack->addWidget(videoWindow());
+ m_widgetStack->addWidget(m_audioView);
+
+ setCentralWidget(m_widgetStack);
+
setFocusProxy( videoWindow() ); // essential! See VideoWindow::event(), TQEvent::FocusOut
// these have no affect beccause "KDE Knows Best" FFS
@@ -523,7 +536,6 @@ show_toolbar:
//we aren't managed by mainWindow when at FullScreen
videoWindow()->move( 0, 0 );
videoWindow()->resize( ((TQWidget*)o)->size() );
- videoWindow()->lower();
}
if (o == m_toolbar)
@@ -580,14 +592,12 @@ MainWindow::fullScreenToggled( bool isFullScreen )
statusBar()->setHidden( isFullScreen );
setMouseTracking( isFullScreen ); /// @see mouseMoveEvent()
+ m_widgetStack->setMouseTracking(isFullScreen);
if (isFullScreen)
s_handler = new FullScreenToolBarHandler( this );
else
delete s_handler;
-
- // prevent videoWindow() moving around when mouse moves
- setCentralWidget( isFullScreen ? nullptr : videoWindow() );
}
void
diff --git a/src/app/mainWindow.h b/src/app/mainWindow.h
index 634d444..3dae1e8 100644
--- a/src/app/mainWindow.h
+++ b/src/app/mainWindow.h
@@ -11,11 +11,14 @@ class KURL;
class TQLabel;
class TQPopupMenu;
class TQSlider;
+class TQWidgetStack;
class VolumeAction;
namespace Codeine
{
+ class AudioView;
+
class MainWindow : public TDEMainWindow
{
TQ_OBJECT
@@ -66,6 +69,8 @@ namespace Codeine
TQLabel *m_timeLabel;
TQLabel *m_titleLabel;
TQWidget *m_analyzer;
+ AudioView *m_audioView;
+ TQWidgetStack *m_widgetStack;
VolumeAction *m_volumeAction;
//undefined
diff --git a/src/app/stateChange.cpp b/src/app/stateChange.cpp
index 49adc55..73f77d0 100644
--- a/src/app/stateChange.cpp
+++ b/src/app/stateChange.cpp
@@ -13,6 +13,8 @@
#include <tqlabel.h>
#include <tqpopupmenu.h>
#include <tqslider.h>
+#include <tqwidgetstack.h>
+#include "audioView.h"
#include "theStream.h"
#include "videoSettings.h" //FIXME unfortunate
#include "xineEngine.h"
@@ -104,8 +106,18 @@ MainWindow::engineStateChanged( Engine::State state )
/// update statusBar
{
using namespace Engine;
- m_analyzer->setShown( state & (Playing | Paused) && TheStream::hasAudio() );
- m_timeLabel->setShown( state & (Playing | Paused) );
+ m_analyzer->setShown(state & (Playing | Paused) && (TheStream::hasVideo() && TheStream::hasAudio()));
+ m_timeLabel->setShown(state & (Playing | Paused));
+ }
+
+ // Update the current widget shown.
+ if (TheStream::hasVideo() || (state & (Engine::Empty)))
+ {
+ m_widgetStack->raiseWidget(videoWindow());
+ }
+ else if (TheStream::hasAudio())
+ {
+ m_widgetStack->raiseWidget(m_audioView);
}
diff --git a/translations/desktop_files/es.po b/translations/desktop_files/es.po
index 748ef32..7de33a1 100644
--- a/translations/desktop_files/es.po
+++ b/translations/desktop_files/es.po
@@ -1,13 +1,14 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# Eduardo Herrera <[email protected]>, 2023.
+# Juan M Ayala <[email protected]>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-28 16:45+0200\n"
-"PO-Revision-Date: 2023-03-21 23:14+0000\n"
-"Last-Translator: Eduardo Herrera <[email protected]>\n"
+"PO-Revision-Date: 2025-01-20 18:16+0000\n"
+"Last-Translator: Juan M Ayala <[email protected]>\n"
"Language-Team: Spanish <https://mirror.git.trinitydesktop.org/weblate/"
"projects/applications/codeine-desktop-files/es/>\n"
"Language: es\n"
@@ -15,12 +16,12 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.16.1\n"
+"X-Generator: Weblate 4.17\n"
#. Name
#: codeine.desktop:3 codeine_part.desktop:3
msgid "Codeine"
-msgstr ""
+msgstr "Codeine"
#. GenericName
#: codeine.desktop:5
@@ -36,7 +37,7 @@ msgstr ""
#. Comment
#: codeine_part.desktop:5
msgid "Embeddable Video Player"
-msgstr ""
+msgstr "Reproductor de Vídeo Integrable"
#. Name
#: codeine_play_dvd.desktop:8
diff --git a/translations/desktop_files/zh_CN.po b/translations/desktop_files/zh_CN.po
index c47e08f..817e4a4 100644
--- a/translations/desktop_files/zh_CN.po
+++ b/translations/desktop_files/zh_CN.po
@@ -1,25 +1,26 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
+# Toad114514 <[email protected]>, 2025.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-28 16:45+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <[email protected]>\n"
+"PO-Revision-Date: 2025-01-28 07:12+0000\n"
+"Last-Translator: Toad114514 <[email protected]>\n"
+"Language-Team: Chinese (Simplified) <https://mirror.git.trinitydesktop.org/"
+"weblate/projects/applications/codeine-desktop-files/zh_Hans/>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.17\n"
#. Name
#: codeine.desktop:3 codeine_part.desktop:3
msgid "Codeine"
-msgstr ""
+msgstr "Codeine"
#. GenericName
#: codeine.desktop:5
@@ -29,12 +30,12 @@ msgstr "媒体播放器"
#. Comment
#: codeine.desktop:7
msgid "Video player for TDE designed to be as simple as possible"
-msgstr ""
+msgstr "尽可能设计得简单的 TDE 视频播放器"
#. Comment
#: codeine_part.desktop:5
msgid "Embeddable Video Player"
-msgstr ""
+msgstr "内嵌视频播放器"
#. Name
#: codeine_play_dvd.desktop:8
diff --git a/translations/messages/codeine.pot b/translations/messages/codeine.pot
index 8d121a1..684cc25 100644
--- a/translations/messages/codeine.pot
+++ b/translations/messages/codeine.pot
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2024-12-07 20:13+0000\n"
+"POT-Creation-Date: 2025-01-20 20:14+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
@@ -132,83 +132,83 @@ msgstr ""
msgid "Patches, advice and moral support"
msgstr ""
-#: app/mainWindow.cpp:126
+#: app/mainWindow.cpp:139
msgid "Aspect Ratio"
msgstr ""
-#: app/mainWindow.cpp:132
+#: app/mainWindow.cpp:145
msgid "Audio Channels"
msgstr ""
-#: app/mainWindow.cpp:138
+#: app/mainWindow.cpp:151
msgid "Subtitles"
msgstr ""
-#: app/mainWindow.cpp:257
+#: app/mainWindow.cpp:270
msgid "Play &Media..."
msgstr ""
-#: app/mainWindow.cpp:263
+#: app/mainWindow.cpp:276
msgid "Record"
msgstr ""
-#: app/mainWindow.cpp:265
+#: app/mainWindow.cpp:278
msgid "Reset Video Scale"
msgstr ""
-#: app/mainWindow.cpp:266 app/mainWindow.cpp:608
+#: app/mainWindow.cpp:279 app/mainWindow.cpp:618
msgid "Media Information"
msgstr ""
-#: app/mainWindow.cpp:267
+#: app/mainWindow.cpp:280
msgid "Menu Toggle"
msgstr ""
-#: app/mainWindow.cpp:268
+#: app/mainWindow.cpp:281
msgid "&Capture Frame"
msgstr ""
-#: app/mainWindow.cpp:270
+#: app/mainWindow.cpp:283
msgid "Video Settings..."
msgstr ""
-#: app/mainWindow.cpp:271
+#: app/mainWindow.cpp:284
msgid "Configure xine..."
msgstr ""
-#: app/mainWindow.cpp:273
+#: app/mainWindow.cpp:286
msgid "Position Slider"
msgstr ""
-#: app/mainWindow.cpp:275
+#: app/mainWindow.cpp:288
msgid "A&udio Channels"
msgstr ""
-#: app/mainWindow.cpp:278
+#: app/mainWindow.cpp:291
msgid "&Subtitles"
msgstr ""
-#: app/mainWindow.cpp:281
+#: app/mainWindow.cpp:294
msgid "Aspect &Ratio"
msgstr ""
-#: app/mainWindow.cpp:380
+#: app/mainWindow.cpp:393
msgid "Codeine was asked to open an empty URL; it cannot."
msgstr ""
-#: app/mainWindow.cpp:442
+#: app/mainWindow.cpp:455
msgid "Supported Media Formats"
msgstr ""
-#: app/mainWindow.cpp:442
+#: app/mainWindow.cpp:455
msgid "All Files"
msgstr ""
-#: app/mainWindow.cpp:443
+#: app/mainWindow.cpp:456
msgid "Select A File To Play"
msgstr ""
-#: app/mainWindow.cpp:672
+#: app/mainWindow.cpp:682
msgid "Sorry, no media was found in the drop"
msgstr ""
@@ -255,19 +255,19 @@ msgstr ""
msgid "Codeine could not open the file: %1"
msgstr ""
-#: app/stateChange.cpp:89
+#: app/stateChange.cpp:91
msgid "&Pause"
msgstr ""
-#: app/stateChange.cpp:89
+#: app/stateChange.cpp:91
msgid "&Play"
msgstr ""
-#: app/stateChange.cpp:158
+#: app/stateChange.cpp:170
msgid "No media loaded"
msgstr ""
-#: app/stateChange.cpp:161
+#: app/stateChange.cpp:173
msgid "Paused"
msgstr ""
diff --git a/translations/messages/ka.po b/translations/messages/ka.po
index fa27ef6..a65ec9d 100644
--- a/translations/messages/ka.po
+++ b/translations/messages/ka.po
@@ -3,8 +3,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2024-11-07 18:18+0000\n"
-"PO-Revision-Date: 2024-11-11 05:11+0000\n"
+"POT-Creation-Date: 2025-01-20 18:14+0000\n"
+"PO-Revision-Date: 2024-12-24 19:12+0000\n"
"Last-Translator: Temuri Doghonadze <[email protected]>\n"
"Language-Team: Georgian <https://mirror.git.trinitydesktop.org/weblate/"
"projects/applications/codeine/ka/>\n"
@@ -134,83 +134,83 @@ msgstr "Codeine-ის მიმდინარე ხატულა"
msgid "Patches, advice and moral support"
msgstr "პაჩები, რჩევები და მორალური მხარდაჭერა"
-#: app/mainWindow.cpp:126
+#: app/mainWindow.cpp:139
msgid "Aspect Ratio"
msgstr "თანაფარდობა"
-#: app/mainWindow.cpp:132
+#: app/mainWindow.cpp:145
msgid "Audio Channels"
msgstr "აუდიო არხები"
-#: app/mainWindow.cpp:138
+#: app/mainWindow.cpp:151
msgid "Subtitles"
msgstr "სუბტიტრები"
-#: app/mainWindow.cpp:257
+#: app/mainWindow.cpp:270
msgid "Play &Media..."
msgstr "მედიის &დაკვრა..."
-#: app/mainWindow.cpp:263
+#: app/mainWindow.cpp:276
msgid "Record"
msgstr "ჩაწერა"
-#: app/mainWindow.cpp:265
+#: app/mainWindow.cpp:278
msgid "Reset Video Scale"
msgstr "ვიდეოს მასშტაბის ჩამოყრა"
-#: app/mainWindow.cpp:266 app/mainWindow.cpp:608
+#: app/mainWindow.cpp:279 app/mainWindow.cpp:618
msgid "Media Information"
msgstr "მედიის ინფორმაცია"
-#: app/mainWindow.cpp:267
+#: app/mainWindow.cpp:280
msgid "Menu Toggle"
msgstr "მენიუს გადართვა"
-#: app/mainWindow.cpp:268
+#: app/mainWindow.cpp:281
msgid "&Capture Frame"
msgstr "&კადრის ჩაწერა"
-#: app/mainWindow.cpp:270
+#: app/mainWindow.cpp:283
msgid "Video Settings..."
msgstr "ვიდეოს მორგება..."
-#: app/mainWindow.cpp:271
+#: app/mainWindow.cpp:284
msgid "Configure xine..."
msgstr "Xine-ის მორგება..."
-#: app/mainWindow.cpp:273
+#: app/mainWindow.cpp:286
msgid "Position Slider"
msgstr "მდებარეობის ცოცია"
-#: app/mainWindow.cpp:275
+#: app/mainWindow.cpp:288
msgid "A&udio Channels"
msgstr "ა&უდიო არხები"
-#: app/mainWindow.cpp:278
+#: app/mainWindow.cpp:291
msgid "&Subtitles"
msgstr "&სუბტიტრები"
-#: app/mainWindow.cpp:281
+#: app/mainWindow.cpp:294
msgid "Aspect &Ratio"
msgstr "ასპექტის &ფარდობა"
-#: app/mainWindow.cpp:380
+#: app/mainWindow.cpp:393
msgid "Codeine was asked to open an empty URL; it cannot."
msgstr "Codeine-ს სთხოვეს, ცარიელი URL გაეხსნა. მას ეს არ შეუძლია."
-#: app/mainWindow.cpp:442
+#: app/mainWindow.cpp:455
msgid "Supported Media Formats"
msgstr "მხარდაჭერილი მედია ფორმატები"
-#: app/mainWindow.cpp:442
+#: app/mainWindow.cpp:455
msgid "All Files"
msgstr "ყველა ფაილი"
-#: app/mainWindow.cpp:443
+#: app/mainWindow.cpp:456
msgid "Select A File To Play"
msgstr "აირჩიეთ დასაკრავი ფაილი"
-#: app/mainWindow.cpp:672
+#: app/mainWindow.cpp:682
msgid "Sorry, no media was found in the drop"
msgstr "რაც დააგდეთ, მასში მედიაფაილი ვერ ვიპოვე"
@@ -258,19 +258,19 @@ msgstr ""
msgid "Codeine could not open the file: %1"
msgstr "Codeine-მა ვერ გახსნა ფაილი: %1"
-#: app/stateChange.cpp:89
+#: app/stateChange.cpp:91
msgid "&Pause"
msgstr "&შეჩერება"
-#: app/stateChange.cpp:89
+#: app/stateChange.cpp:91
msgid "&Play"
msgstr "&დაკვრა"
-#: app/stateChange.cpp:158
+#: app/stateChange.cpp:170
msgid "No media loaded"
msgstr "მედია ჩატვირთული არაა"
-#: app/stateChange.cpp:161
+#: app/stateChange.cpp:173
msgid "Paused"
msgstr "შეჩერებულია"
@@ -358,10 +358,10 @@ msgstr "შეჩერება"
msgid "Volume"
msgstr "ხმა"
-#: app/volumeAction.cpp:81 app/volumeAction.cpp:95
+#: app/volumeAction.cpp:89
#, c-format
-msgid "Volume: %1"
-msgstr "ხმა: %1"
+msgid "Volume %1"
+msgstr "ხმა %1"
#: app/xineConfig.cpp:46
msgid "Configure xine"
@@ -496,3 +496,6 @@ msgid ""
"installation."
msgstr ""
"ვიდეოდამკვრელმა Codeine შიდა შეცდომა დააბრუნა. შეამოწმეთ xine-ის ფაილები."
+
+#~ msgid "Volume: %1"
+#~ msgstr "ხმა: %1"
diff --git a/translations/messages/zh_Hans.po b/translations/messages/zh_Hans.po
new file mode 100644
index 0000000..9bd4816
--- /dev/null
+++ b/translations/messages/zh_Hans.po
@@ -0,0 +1,494 @@
+# SOME DESCRIPTIVE TITLE.
+# Toad114514 <[email protected]>, 2025.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2025-01-20 18:14+0000\n"
+"PO-Revision-Date: 2025-02-20 14:12+0000\n"
+"Last-Translator: Toad114514 <[email protected]>\n"
+"Language-Team: Chinese (Simplified) <https://mirror.git.trinitydesktop.org/"
+"weblate/projects/applications/codeine/zh_Hans/>\n"
+"Language: zh_Hans\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. Instead of a literal translation, add your name to the end of the list (separated by a comma).
+msgid ""
+"_: NAME OF TRANSLATORS\n"
+"Your names"
+msgstr "Toad114514"
+
+#. Instead of a literal translation, add your email to the end of the list (separated by a comma).
+msgid ""
+"_: EMAIL OF TRANSLATORS\n"
+"Your emails"
+
+#: app/actions.cpp:15 part/part.cpp:38
+msgid "Play"
+msgstr "播放"
+
+#: app/adjustSizeButton.cpp:31
+msgid "Preferred Scale"
+msgstr "首选缩放"
+
+#: app/adjustSizeButton.cpp:35
+#, c-format
+msgid "Scale 100%"
+msgstr "100% 比例"
+
+#: app/adjustSizeButton.cpp:41
+msgid "<b>Adjust video scale?"
+msgstr "<b>调整视频比例?"
+
+#: app/captureFrame.cpp:92
+#, c-format
+msgid "Capture - %1"
+msgstr "截图 - %1"
+
+#: app/captureFrame.cpp:108
+msgid ""
+"*.png|PNG Format\n"
+"*.jpeg|JPEG Format"
+msgstr ""
+"*.png|PNG图像格式\n"
+"*.jpeg|JPEG图像格式"
+
+#: app/captureFrame.cpp:110
+msgid "Save Frame"
+msgstr "保存一帧"
+
+#: app/captureFrame.cpp:121
+msgid "%1 saved successfully"
+msgstr "%1 已保存"
+
+#: app/captureFrame.cpp:123
+#, c-format
+msgid "Sorry, could not save %1"
+msgstr "抱歉,无法保存 %1"
+
+#: app/fullScreenAction.cpp:31
+msgid "Exit F&ull Screen Mode"
+msgstr "退出全屏模式"
+
+#: app/fullScreenAction.cpp:37
+msgid "F&ull Screen Mode"
+msgstr "全屏模式(&F)"
+
+#: app/insertAspectRatioMenuItems.cpp:16
+msgid "Determine &Automatically"
+msgstr "自动确认(&A)"
+
+#: app/insertAspectRatioMenuItems.cpp:17
+msgid "&Square (1:1)"
+msgstr "方形 (1:1) (&S)"
+
+#: app/insertAspectRatioMenuItems.cpp:18
+msgid "&4:3"
+msgstr "4:3(&4)"
+
+#: app/insertAspectRatioMenuItems.cpp:19
+msgid "Ana&morphic (16:9)"
+msgstr "变形 (16:9) (&m)"
+
+#: app/insertAspectRatioMenuItems.cpp:20
+msgid "&DVB (2.11:1)"
+msgstr "DVB (2.11:1) (&D)"
+
+#: app/main.cpp:14
+msgid "A video player that has a usability focus"
+msgstr "注重可用性的视频播放器"
+
+#: app/main.cpp:15
+msgid "Copyright 2006, Max Howell"
+msgstr "版权所有 2006, Max Howell"
+
+#: app/main.cpp:20
+msgid "Play 'URL'"
+msgstr "播放 '链接'"
+
+#: app/main.cpp:21
+msgid "Play DVD Video"
+msgstr "播放 DVD 视频"
+
+#: app/main.cpp:31
+msgid "Handbook"
+msgstr "手册"
+
+#: app/main.cpp:32
+msgid "Great reference code"
+msgstr "很好的参考代码"
+
+#: app/main.cpp:33
+msgid "The video for \"Call on Me\" encouraged plenty of debugging! ;)"
+msgstr "这些视频在“叫我”要大量调试 ;)"
+
+#: app/main.cpp:34
+msgid "The current Codeine icon"
+msgstr "当前的 Codeine 图标"
+
+#: app/main.cpp:35
+msgid "Patches, advice and moral support"
+msgstr "bug 修补, 想法提供和支持"
+
+#: app/mainWindow.cpp:139
+msgid "Aspect Ratio"
+msgstr "纵横比"
+
+#: app/mainWindow.cpp:145
+msgid "Audio Channels"
+msgstr "音频轨道"
+
+#: app/mainWindow.cpp:151
+msgid "Subtitles"
+msgstr "字幕"
+
+#: app/mainWindow.cpp:270
+msgid "Play &Media..."
+msgstr "播放媒体(&M) ..."
+
+#: app/mainWindow.cpp:276
+msgid "Record"
+msgstr "录制"
+
+#: app/mainWindow.cpp:278
+msgid "Reset Video Scale"
+msgstr "重置视频比例"
+
+#: app/mainWindow.cpp:279 app/mainWindow.cpp:618
+msgid "Media Information"
+msgstr "媒体信息"
+
+#: app/mainWindow.cpp:280
+msgid "Menu Toggle"
+msgstr "切换菜单"
+
+#: app/mainWindow.cpp:281
+msgid "&Capture Frame"
+msgstr "截图一帧(&C)"
+
+#: app/mainWindow.cpp:283
+msgid "Video Settings..."
+msgstr "视频设置 ..."
+
+#: app/mainWindow.cpp:284
+msgid "Configure xine..."
+msgstr "xine 引擎配置 ..."
+
+#: app/mainWindow.cpp:286
+msgid "Position Slider"
+msgstr "滑块位置"
+
+#: app/mainWindow.cpp:288
+msgid "A&udio Channels"
+msgstr "音频轨道(&u)"
+
+#: app/mainWindow.cpp:291
+msgid "&Subtitles"
+msgstr "字幕(&S)"
+
+#: app/mainWindow.cpp:294
+msgid "Aspect &Ratio"
+msgstr "宽高比(&R)"
+
+#: app/mainWindow.cpp:393
+msgid "Codeine was asked to open an empty URL; it cannot."
+msgstr "Codeine 被要求打开一个空的 URL,但实际上它做不到。"
+
+#: app/mainWindow.cpp:455
+msgid "Supported Media Formats"
+msgstr "支持的媒体格式"
+
+#: app/mainWindow.cpp:455
+msgid "All Files"
+msgstr "所有文件"
+
+#: app/mainWindow.cpp:456
+msgid "Select A File To Play"
+msgstr "选择一个文件以播放"
+
+#: app/mainWindow.cpp:682
+msgid "Sorry, no media was found in the drop"
+msgstr "抱歉,拖到窗口的媒体疑似不是媒体"
+
+#: app/playDialog.cpp:28
+msgid "Play Media"
+msgstr "播放媒体"
+
+#: app/playDialog.cpp:34
+msgid "What media would you like to play?"
+msgstr "你想要播放什么媒体?"
+
+#: app/playDialog.cpp:39
+msgid "Play File..."
+msgstr "一些文件..."
+
+#: app/playDialog.cpp:43
+msgid "Play VCD"
+msgstr "播放 VCD"
+
+#: app/playDialog.cpp:47
+msgid "Play DVD"
+msgstr "播放 DVD"
+
+#: app/playDialog.cpp:75
+msgid "Recently Played Media"
+msgstr "最近播放媒体"
+
+#: app/playlistFile.cpp:32
+msgid "The file is not a playlist"
+msgstr "该文件不是一个播放列表"
+
+#: app/playlistFile.cpp:39
+#, c-format
+msgid "Codeine could not download the remote playlist: %1"
+msgstr "Codeine 播放器无法下载远程播放列表: %1"
+
+#: app/playlistFile.cpp:54
+msgid ""
+"<qt>The playlist, <i>'%1'</i>, could not be interpreted. Perhaps it is empty?"
+msgstr "<qt>播放列表 <i>'%1'</i> 无法解析。也许它是空的?"
+
+#: app/playlistFile.cpp:58
+#, c-format
+msgid "Codeine could not open the file: %1"
+msgstr "Codeine 无法打开该文件: %1"
+
+#: app/stateChange.cpp:91
+msgid "&Pause"
+msgstr "暂停(&P)"
+
+#: app/stateChange.cpp:91
+msgid "&Play"
+msgstr "播放(&P)"
+
+#: app/stateChange.cpp:170
+msgid "No media loaded"
+msgstr "没有加载媒体文件"
+
+#: app/stateChange.cpp:173
+msgid "Paused"
+msgstr "已暂停"
+
+#: app/theStream.cpp:108
+msgid "Metadata"
+msgstr "元数据"
+
+#: app/theStream.cpp:110
+msgid "Title"
+msgstr "标题"
+
+#: app/theStream.cpp:111
+msgid "Comment"
+msgstr "注释"
+
+#: app/theStream.cpp:112
+msgid "Artist"
+msgstr "艺术家"
+
+#: app/theStream.cpp:113
+msgid "Genre"
+msgstr "分类"
+
+#: app/theStream.cpp:114
+msgid "Album"
+msgstr "专辑"
+
+#: app/theStream.cpp:115
+msgid "Year"
+msgstr "年份"
+
+#: app/theStream.cpp:117
+msgid "Audio Properties"
+msgstr "音频属性"
+
+#: app/theStream.cpp:119
+msgid "Bitrate"
+msgstr "比特率"
+
+#: app/theStream.cpp:119
+msgid "%1 bps"
+msgstr "%1 BPS"
+
+#: app/theStream.cpp:120
+msgid "Sample-rate"
+msgstr "采样率"
+
+#: app/theStream.cpp:120
+msgid "%1 Hz"
+msgstr "%1 Hz"
+
+#: app/theStream.cpp:122
+msgid "Technical Information"
+msgstr "技术信息"
+
+#: app/theStream.cpp:124
+msgid "Video Codec"
+msgstr "视频编解码器"
+
+#: app/theStream.cpp:125
+msgid "Audio Codec"
+msgstr "音频编解码器"
+
+#: app/theStream.cpp:126
+msgid "System Layer"
+msgstr "系统布局"
+
+#: app/theStream.cpp:127
+msgid "Input Plugin"
+msgstr "输入插件"
+
+#: app/theStream.cpp:128
+msgid "CDINDEX_DISCID"
+msgstr "CDINDEX_DISCID"
+
+#: app/videoSettings.cpp:92
+msgid "Video Settings"
+msgstr "视频设置"
+
+#: app/videoWindow.cpp:136
+msgid "Pause"
+msgstr "暂停"
+
+#: app/volumeAction.cpp:51
+msgid "Volume"
+msgstr "音量"
+
+#: app/volumeAction.cpp:89
+#, c-format
+msgid "Volume %1"
+msgstr "音量 %1"
+
+#: app/xineConfig.cpp:46
+msgid "Configure xine"
+msgstr "xine 引擎设置"
+
+#: app/xineConfig.cpp:68
+msgid ""
+"Xine's defaults are usually sensible and should not require modification. "
+"However, full configurability is provided for your pleasure ;-)"
+msgstr "Xine 的默认配置通常是合理的。但我们还是给你提供配置的可能性 ;-)"
+
+#: app/xineEngine.cpp:147 part/xineEngine.cpp:50
+msgid "xine was unable to initialize any video-drivers."
+msgstr "xine 无法初始化任何视频驱动。"
+
+#: app/xineEngine.cpp:149 part/xineEngine.cpp:48
+msgid "xine was unable to initialize any audio-drivers."
+msgstr "xine 无法初始化任何音频驱动。"
+
+#: app/xineEngine.cpp:254
+#, c-format
+msgid "Loading media: %1"
+msgstr "加载媒体: %1"
+
+#: app/xineEngine.cpp:360
+#, c-format
+msgid "Recording to: %1"
+msgstr "重新编码到: %1"
+
+#: app/xineEngine.cpp:393
+msgid "Playback paused"
+msgstr "回放已暂停"
+
+#: app/xineEngine.cpp:398
+msgid "Playback resumed"
+msgstr "回放继续"
+
+#: app/xineEngine.cpp:411
+#, c-format
+msgid "There is no input plugin that can read: %1."
+msgstr "这里没有可读取的输入插件: %1 。"
+
+#: app/xineEngine.cpp:414
+#, c-format
+msgid "There is no demux plugin available for %1."
+msgstr "这里没有可用于 %1 的解复用器插件。"
+
+#: app/xineEngine.cpp:417
+#, c-format
+msgid "Demuxing failed for %1."
+msgstr "解复用失败: %1。"
+
+#: app/xineEngine.cpp:422
+#, c-format
+msgid "Internal error while attempting to play %1."
+msgstr "尝试播放时发生内部错误 %1。"
+
+#: app/xineEngine.cpp:736 app/xineEngine.cpp:744
+#, c-format
+msgid "Channel %1"
+msgstr "轨道 %1"
+
+#: app/xineEngine.cpp:843 part/xineEngine.cpp:289
+msgid "The source is encrypted and can not be decrypted."
+msgstr "播放原已经被加密且无法解密。"
+
+#: app/xineEngine.cpp:845 part/xineEngine.cpp:291
+msgid "The host is unknown for the URL: <i>%1</i>"
+msgstr ""
+"未知的 URL 主机:\n"
+"<i>%1</i>"
+
+#: app/xineEngine.cpp:847 part/xineEngine.cpp:293
+msgid "The device name you specified seems invalid."
+msgstr "您指定的设备名称无效。"
+
+#: app/xineEngine.cpp:849 part/xineEngine.cpp:295
+msgid "The network appears unreachable."
+msgstr "网络似乎无法访问。"
+
+#: app/xineEngine.cpp:851 part/xineEngine.cpp:297
+msgid "Audio output unavailable; the device is busy."
+msgstr "音频输出不可用; 设备正在忙碌中。"
+
+#: app/xineEngine.cpp:853 part/xineEngine.cpp:299
+msgid "The connection was refused for the URL: <i>%1</i>"
+msgstr "URL 连接被重置: <i>%1</i>"
+
+#: app/xineEngine.cpp:855 part/xineEngine.cpp:301
+msgid "xine could not find the URL: <i>%1</i>"
+msgstr "xine 无法找到该 URL: <i>%1</i>"
+
+#: app/xineEngine.cpp:857 part/xineEngine.cpp:303
+msgid "Access was denied for the URL: <i>%1</i>"
+msgstr "URL 访问被拒绝: <i>%1</i>"
+
+#: app/xineEngine.cpp:859 part/xineEngine.cpp:305
+msgid "The source cannot be read for the URL: <i>%1</i>"
+msgstr "URL 对应源无法读取: <i>%1</i>"
+
+#: app/xineEngine.cpp:861 part/xineEngine.cpp:307
+msgid "A problem occurred while loading a library or decoder."
+msgstr "加载库或解码器时出现问题。"
+
+#: app/xineEngine.cpp:888 part/xineEngine.cpp:334
+msgid "Sorry, no additional information is available."
+msgstr "抱歉,没有信息可用。"
+
+#: part/part.cpp:39
+msgid "Mute"
+msgstr "静音"
+
+#: part/xineEngine.cpp:166
+msgid "The Codeine video player could not find an input plugin for '%1'."
+msgstr "Codeine 视频播放器找不到 '%1' 对应的输入插件。"
+
+#: part/xineEngine.cpp:169
+msgid "The Codeine video player could not find a demux plugin for '%1'."
+msgstr "Codeine 视频播放器无法找不到 '%1' 对应的解复用器插件。"
+
+#: part/xineEngine.cpp:172
+msgid ""
+"The Codeine video player failed to demux '%1'; please check your xine "
+"installation."
+msgstr "Codeine 视频播放起无法复用 '%1'; 请检查 xine 安装。"
+
+#: part/xineEngine.cpp:177
+msgid ""
+"The Codeine video player reports an internal error; please check your xine "
+"installation."
+msgstr "Codeine 视频播放器出现了内部错误; 请检查 xine 安装。"