diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | AleePlayer.desktop | 4 | ||||
| -rw-r--r-- | AleePlayer.pro | 6 | ||||
| -rw-r--r-- | AleePlayer_en_CA.ts | 3 | ||||
| -rw-r--r-- | about.cpp | 19 | ||||
| -rw-r--r-- | about.h | 17 | ||||
| -rw-r--r-- | about.ui | 38 | ||||
| -rw-r--r-- | library.cpp | 54 | ||||
| -rw-r--r-- | library.h | 39 | ||||
| -rw-r--r-- | main.cpp | 24 | ||||
| -rw-r--r-- | player.cpp | 51 | ||||
| -rw-r--r-- | player.h | 27 | ||||
| -rw-r--r-- | player.ui | 4 | ||||
| -rw-r--r-- | translations/en_CA.ts | 202 | ||||
| -rw-r--r-- | translations/fr_CA.ts | 202 | ||||
| -rw-r--r-- | translations/vi_VN.ts | 202 |
16 files changed, 848 insertions, 46 deletions
@@ -52,3 +52,5 @@ compile_commands.json *creator.user* build + +android diff --git a/AleePlayer.desktop b/AleePlayer.desktop index 8c5b8aa..da6d3a5 100644 --- a/AleePlayer.desktop +++ b/AleePlayer.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Type=Application -Name=AleePlayer -Comment=Music Player by Alee Productions +Name=Alee Music Player +Comment=Music Player Exec=AleePlayer Icon=ALP Categories=Audio; diff --git a/AleePlayer.pro b/AleePlayer.pro index c7ffdff..ecb90de 100644 --- a/AleePlayer.pro +++ b/AleePlayer.pro @@ -17,11 +17,13 @@ DEFINES += QT_DEPRECATED_WARNINGS SOURCES += \ about.cpp \ + library.cpp \ main.cpp \ player.cpp HEADERS += \ about.h \ + library.h \ player.h FORMS += \ @@ -29,7 +31,9 @@ FORMS += \ player.ui TRANSLATIONS += \ - AleePlayer_en_CA.ts + translations/en_CA.ts \ + translations/fr_CA.ts \ + translations/vi_VN.ts unix:!macx:!android { diff --git a/AleePlayer_en_CA.ts b/AleePlayer_en_CA.ts deleted file mode 100644 index 3cee958..0000000 --- a/AleePlayer_en_CA.ts +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="AleePlayer_en_CA"></TS> @@ -1,5 +1,23 @@ +/* + AleePlayer: Music player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #include "about.h" #include "ui_about.h" +#include <QDebug> About::About(QWidget *parent) : QDialog(parent), @@ -16,5 +34,6 @@ About::About(QWidget *parent) : About::~About() { + qDebug() << "Closing about dialog"; delete ui; } @@ -1,3 +1,20 @@ +/* + AleePlayer: Music player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #ifndef ABOUT_H #define ABOUT_H @@ -23,7 +23,7 @@ </size> </property> <property name="windowTitle"> - <string>About</string> + <string>About - Alee Music Player</string> </property> <property name="modal"> <bool>false</bool> @@ -53,7 +53,7 @@ </font> </property> <property name="text"> - <string>AleePlayer 0.2 by Alee Productions</string> + <string>Alee Music Player 0.2 by Alee Productions</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> @@ -111,23 +111,23 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> AleePlayer: Music player in Qt </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> Copyright (C) 2020 Alee Productions</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> This program is free software: you can redistribute it and/or modify</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> it under the terms of the GNU General Public License as published by</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> the Free Software Foundation, either version 3 of the License, or</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> (at your option) any later version.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> This program is distributed in the hope that it will be useful,</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> GNU General Public License for more details.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> You should have received a copy of the GNU General Public License</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Noto Sans';"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans';"><br /></p></body></html></string> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Alee Music Player: An audio player written in Qt</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 2020 Alee Productions</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software: you can redistribute it and/or modify</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation, either version 3 of the License, or</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> </property> </widget> </item> diff --git a/library.cpp b/library.cpp new file mode 100644 index 0000000..aa3e8c1 --- /dev/null +++ b/library.cpp @@ -0,0 +1,54 @@ +/* + AleePlayer: Music player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ +#include "library.h" + +Library::Library(QObject *parent) + : QAbstractListModel(parent) +{ +} + +int Library::rowCount(const QModelIndex &parent) const +{ + // For list models only the root node (an invalid parent) should return the list's size. For all + // other (valid) parents, rowCount() should return 0 so that it does not become a tree model. + if (parent.isValid()) + return 0; + + return 3; + +} + +QVariant Library::data(const QModelIndex &index, int role) const +{ + + if (!index.isValid()) + return QVariant(); + + if (role == Qt::DisplayRole) { + switch (index.row()) { + case 0: + return "Item 1"; + case 1: + return "Item 2"; + case 2: + return "Item 3"; + } + } + + return QVariant(); +} diff --git a/library.h b/library.h new file mode 100644 index 0000000..9858d9f --- /dev/null +++ b/library.h @@ -0,0 +1,39 @@ +/* + AleePlayer: Music player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ +#ifndef LIBRARY_H +#define LIBRARY_H + +#include <QAbstractListModel> +#include <QAbstractTableModel> + +class Library : public QAbstractListModel +{ + Q_OBJECT + +public: + explicit Library(QObject *parent = nullptr); + + // Basic functionality: + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + +private: +}; + +#endif // LIBRARY_H @@ -1,6 +1,24 @@ +/* + AleePlayer: Music player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #include "player.h" #include <QMessageBox> #include <QDebug> +#include <QTranslator> #include <QFile> #include <QDir> @@ -14,12 +32,16 @@ int main(int argc, char *argv[]) //QDir directory(QDir::homePath() + "/.alee-productions/AleePlayer"); - //File file(directory.absoluteFilePath("test.txt")); + //File file(directory.absoluteFilePath("test.txt")); //file.open(QFile::WriteOnly); //file.close(); QApplication a(argc, argv); + QTranslator translator; + translator.load(QLocale(), "/home/andrew/Documents/GitHub/AleePlayer/translations/"); + a.installTranslator(&translator); + Player musicPlayer; musicPlayer.show(); return a.exec(); @@ -1,28 +1,41 @@ -#include <QMediaPlayer> -#include <QDebug> -#include <QFileDialog> -#include <QMessageBox> +/* + AleePlayer: Music player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #include "player.h" #include "ui_player.h" #include "about.h" +#include "library.h" void Player::loadFile() { - QString mFile; QMessageBox msgbox; - mFile = QFileDialog::getOpenFileName(this, "Open any audio file", QDir::homePath(), tr("Audio Files (*.mp3 *.wav *.ogg *.flac)")); + mFile = QFileDialog::getOpenFileName(this, tr("Open any audio file"), QDir::homePath(), tr("Audio Files (*.mp3 *.wav *.ogg *.flac *.mp4)")); if (mFile == NULL) { - qDebug() << "File cannot be found"; - msgbox.setWindowTitle("Uh oh! An error has occured!"); - msgbox.setText("File is invalid. Maybe try loading a valid audio file."); + qDebug() << tr("File cannot be found"); + msgbox.setWindowTitle(tr("Uh oh! An error has occured!")); + msgbox.setText(tr("File is invalid. Maybe try loading a valid audio file.")); msgbox.setIcon(QMessageBox::Critical); msgbox.exec(); return; } else { mPlayer->setMedia(QUrl::fromLocalFile(mFile)); - qDebug() << "Opening" << mFile; - msgbox.setWindowTitle("Success!"); - msgbox.setText("This audio file has been loaded."); + qDebug() << tr("Opening") << mFile; + msgbox.setWindowTitle(tr("Success!")); + msgbox.setText(tr("This audio file has been loaded.")); msgbox.setIcon(QMessageBox::Information); msgbox.exec(); ui->volumeSlider->setValue(100); @@ -39,6 +52,8 @@ Player::Player(QWidget *parent) { ui->setupUi(this); + ui->library->setModel(new Library()); + connect(mPlayer, &QMediaPlayer::positionChanged, this, &Player::on_positionChanged); connect(mPlayer, &QMediaPlayer::durationChanged, this, &Player::on_durationChanged); @@ -46,7 +61,7 @@ Player::Player(QWidget *parent) Player::~Player() { - qInfo() << "Closing AleePlayer..."; + qInfo() << tr("Closing AleePlayer..."); mPlayer->deleteLater(); delete ui; } @@ -62,20 +77,22 @@ void Player::on_playButton_pressed() ui->volumeSlider->setEnabled(true); if (mPlayer->state() == mPlayer->PlayingState) { - qDebug() << "Pausing music..."; + qDebug() << tr("Pausing music..."); mPlayer->pause(); ui->playButton->setText(tr("Play")); } else { - qDebug() << "Playing music..."; + qDebug() << tr("Playing music..."); mPlayer->play(); ui->playButton->setText(tr("Pause")); + amount++; + //qDebug() << "You have pressed play for" << amount << "time(s)."; } } void Player::on_stopButton_pressed() { - qInfo() << "Stopping music..."; + qInfo() << tr("Stopping music..."); mPlayer->stop(); ui->volumeSlider->setEnabled(false); ui->volumeSlider->setValue(100); @@ -85,7 +102,7 @@ void Player::on_stopButton_pressed() void Player::on_actionAbout_triggered() { - qDebug() << "Opening dialog"; + qDebug() << tr("Opening about dialog"); About about; about.exec(); } @@ -1,8 +1,28 @@ +/* + AleePlayer: Music player in Qt + Copyright (C) 2020 Alee Productions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ #ifndef PLAYER_H #define PLAYER_H #include <QMediaPlayer> - +#include <QStringListModel> #include <QMainWindow> +#include <QDebug> +#include <QFileDialog> +#include <QMessageBox> QT_BEGIN_NAMESPACE namespace Ui { class Player; } @@ -17,7 +37,10 @@ public: ~Player(); QMediaPlayer* mPlayer = new QMediaPlayer(); + int amount = 0; + private slots: + void on_actionQuit_triggered(); void on_playButton_pressed(); @@ -42,5 +65,7 @@ private slots: private: Ui::Player *ui; + QString mFile; + QStringListModel *model; }; #endif // PLAYER_H @@ -11,7 +11,7 @@ </rect> </property> <property name="windowTitle"> - <string>AleePlayer</string> + <string>Alee Music Player</string> </property> <widget class="QWidget" name="centralwidget"> <layout class="QGridLayout" name="gridLayout"> @@ -51,7 +51,7 @@ </property> </widget> </item> - <item row="2" column="4"> + <item row="2" column="4" colspan="2"> <widget class="QFrame" name="frame"> <property name="sizePolicy"> <sizepolicy hsizetype="Ignored" vsizetype="Fixed"> diff --git a/translations/en_CA.ts b/translations/en_CA.ts new file mode 100644 index 0000000..090d22b --- /dev/null +++ b/translations/en_CA.ts @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="en_CA"> +<context> + <name>About</name> + <message> + <location filename="../about.ui" line="26"/> + <source>About - Alee Music Player</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="56"/> + <source>Alee Music Player 0.2 by Alee Productions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="74"/> + <source>Licensed with GPL-3.0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="84"/> + <source><html><head/><body><p><a href="https://alee-productions.xyz"><span style=" text-decoration: underline; color:#007af4;">Website</span></a></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="110"/> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Alee Music Player: An audio player written in Qt</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 2020 Alee Productions</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software: you can redistribute it and/or modify</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation, either version 3 of the License, or</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Player</name> + <message> + <location filename="../player.ui" line="14"/> + <source>Alee Music Player</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="28"/> + <source>Library</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="38"/> + <source>Playlist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="75"/> + <source>Stop</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="85"/> + <source>Browse</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="95"/> + <source>Volume</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="107"/> + <source>Title</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="114"/> + <location filename="../player.cpp" line="42"/> + <location filename="../player.cpp" line="82"/> + <source>Play</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="178"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="187"/> + <source>View</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="196"/> + <source>Quit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="199"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="204"/> + <source>About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="209"/> + <source>Open</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.ui" line="212"/> + <source>Ctrl+O</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Open any audio file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Audio Files (*.mp3 *.wav *.ogg *.flac *.mp4)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="28"/> + <source>File cannot be found</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="29"/> + <source>Uh oh! An error has occured!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="30"/> + <source>File is invalid. Maybe try loading a valid audio file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="36"/> + <source>Opening</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="37"/> + <source>Success!</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="38"/> + <source>This audio file has been loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="64"/> + <source>Closing AleePlayer...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="80"/> + <source>Pausing music...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="84"/> + <source>Playing music...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="86"/> + <source>Pause</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="95"/> + <source>Stopping music...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../player.cpp" line="105"/> + <source>Opening about dialog</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/translations/fr_CA.ts b/translations/fr_CA.ts new file mode 100644 index 0000000..ce4ff90 --- /dev/null +++ b/translations/fr_CA.ts @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fr_CA"> +<context> + <name>About</name> + <message> + <location filename="../about.ui" line="26"/> + <source>About - Alee Music Player</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="56"/> + <source>Alee Music Player 0.2 by Alee Productions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="74"/> + <source>Licensed with GPL-3.0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="84"/> + <source><html><head/><body><p><a href="https://alee-productions.xyz"><span style=" text-decoration: underline; color:#007af4;">Website</span></a></p></body></html></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="110"/> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Alee Music Player: An audio player written in Qt</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 2020 Alee Productions</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software: you can redistribute it and/or modify</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation, either version 3 of the License, or</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Player</name> + <message> + <location filename="../player.ui" line="14"/> + <source>Alee Music Player</source> + <translation>Alee Music Player</translation> + </message> + <message> + <location filename="../player.ui" line="28"/> + <source>Library</source> + <translation>Bibliothèque</translation> + </message> + <message> + <location filename="../player.ui" line="38"/> + <source>Playlist</source> + <translation>Liste de chansons</translation> + </message> + <message> + <location filename="../player.ui" line="75"/> + <source>Stop</source> + <translation>Arrêt</translation> + </message> + <message> + <location filename="../player.ui" line="85"/> + <source>Browse</source> + <translation>Feuilleter</translation> + </message> + <message> + <location filename="../player.ui" line="95"/> + <source>Volume</source> + <translation>Le volume</translation> + </message> + <message> + <location filename="../player.ui" line="107"/> + <source>Title</source> + <translation>Titre</translation> + </message> + <message> + <location filename="../player.ui" line="114"/> + <location filename="../player.cpp" line="42"/> + <location filename="../player.cpp" line="82"/> + <source>Play</source> + <translation>Jouer</translation> + </message> + <message> + <location filename="../player.ui" line="178"/> + <source>File</source> + <translation>Fichier</translation> + </message> + <message> + <location filename="../player.ui" line="187"/> + <source>View</source> + <translation>Vue</translation> + </message> + <message> + <location filename="../player.ui" line="196"/> + <source>Quit</source> + <translation>Quitter</translation> + </message> + <message> + <location filename="../player.ui" line="199"/> + <source>Ctrl+Q</source> + <translation>Ctrl + Q</translation> + </message> + <message> + <location filename="../player.ui" line="204"/> + <source>About</source> + <translation>À propos du logiciel</translation> + </message> + <message> + <location filename="../player.ui" line="209"/> + <source>Open</source> + <translation>Ouvrir</translation> + </message> + <message> + <location filename="../player.ui" line="212"/> + <source>Ctrl+O</source> + <translation>Ctrl+O</translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Open any audio file</source> + <translation>Ouvrir n'importe quel fichier audio</translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Audio Files (*.mp3 *.wav *.ogg *.flac *.mp4)</source> + <translation>Fichiers Audio (*.mp3 *.wav *.ogg *.flac *.mp4)</translation> + </message> + <message> + <location filename="../player.cpp" line="28"/> + <source>File cannot be found</source> + <translation>Le fichier est introuvable</translation> + </message> + <message> + <location filename="../player.cpp" line="29"/> + <source>Uh oh! An error has occured!</source> + <translation>Euh oh! Une erreur est survenue!</translation> + </message> + <message> + <location filename="../player.cpp" line="30"/> + <source>File is invalid. Maybe try loading a valid audio file.</source> + <translation>Le fichier n'est pas valide. Essayez peut-être de charger un fichier audio valide.</translation> + </message> + <message> + <location filename="../player.cpp" line="36"/> + <source>Opening</source> + <translation>Overture</translation> + </message> + <message> + <location filename="../player.cpp" line="37"/> + <source>Success!</source> + <translation>Succès!</translation> + </message> + <message> + <location filename="../player.cpp" line="38"/> + <source>This audio file has been loaded.</source> + <translation>Ce fichier audio a été chargé.</translation> + </message> + <message> + <location filename="../player.cpp" line="64"/> + <source>Closing AleePlayer...</source> + <translation>Fermeture AleePlayer...</translation> + </message> + <message> + <location filename="../player.cpp" line="80"/> + <source>Pausing music...</source> + <translation>Pause la musique...</translation> + </message> + <message> + <location filename="../player.cpp" line="84"/> + <source>Playing music...</source> + <translation>Jouer la musique...</translation> + </message> + <message> + <location filename="../player.cpp" line="86"/> + <source>Pause</source> + <translation>Pause</translation> + </message> + <message> + <location filename="../player.cpp" line="95"/> + <source>Stopping music...</source> + <translation>Arrêtez la musique...</translation> + </message> + <message> + <location filename="../player.cpp" line="105"/> + <source>Opening about dialog</source> + <translation>Boîte de dialogue d'ouverture</translation> + </message> +</context> +</TS> diff --git a/translations/vi_VN.ts b/translations/vi_VN.ts new file mode 100644 index 0000000..85ffb90 --- /dev/null +++ b/translations/vi_VN.ts @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="vi_VN" sourcelanguage="en_US"> +<context> + <name>About</name> + <message> + <location filename="../about.ui" line="26"/> + <source>About - Alee Music Player</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="56"/> + <source>Alee Music Player 0.2 by Alee Productions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="74"/> + <source>Licensed with GPL-3.0</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../about.ui" line="84"/> + <source><html><head/><body><p><a href="https://alee-productions.xyz"><span style=" text-decoration: underline; color:#007af4;">Website</span></a></p></body></html></source> + <translation><html><head/><body><p><a href="https://alee-productions.xyz"><span style=" text-decoration: underline; color:#007af4;">Trang Web</span></a></p></body></html></translation> + </message> + <message> + <location filename="../about.ui" line="110"/> + <source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Alee Music Player: An audio player written in Qt</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 2020 Alee Productions</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software: you can redistribute it and/or modify</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation, either version 3 of the License, or</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Player</name> + <message> + <location filename="../player.ui" line="14"/> + <source>Alee Music Player</source> + <translation></translation> + </message> + <message> + <location filename="../player.ui" line="28"/> + <source>Library</source> + <translation>Thư viện</translation> + </message> + <message> + <location filename="../player.ui" line="38"/> + <source>Playlist</source> + <translation>Hàng phát</translation> + </message> + <message> + <location filename="../player.ui" line="75"/> + <source>Stop</source> + <translation>Dừng lại</translation> + </message> + <message> + <location filename="../player.ui" line="85"/> + <source>Browse</source> + <translation>Duyệt</translation> + </message> + <message> + <location filename="../player.ui" line="95"/> + <source>Volume</source> + <translation>Âm lượng</translation> + </message> + <message> + <location filename="../player.ui" line="107"/> + <source>Title</source> + <translation>Tiêu đề</translation> + </message> + <message> + <location filename="../player.ui" line="114"/> + <location filename="../player.cpp" line="42"/> + <location filename="../player.cpp" line="82"/> + <source>Play</source> + <translation>Phát</translation> + </message> + <message> + <location filename="../player.ui" line="178"/> + <source>File</source> + <translation>Tệp</translation> + </message> + <message> + <location filename="../player.ui" line="187"/> + <source>View</source> + <translation>Xem</translation> + </message> + <message> + <location filename="../player.ui" line="196"/> + <source>Quit</source> + <translation>Thoát</translation> + </message> + <message> + <location filename="../player.ui" line="199"/> + <source>Ctrl+Q</source> + <translation>Ctrl+Q</translation> + </message> + <message> + <location filename="../player.ui" line="204"/> + <source>About</source> + <translation>Giới Thiệu</translation> + </message> + <message> + <location filename="../player.ui" line="209"/> + <source>Open</source> + <translation>Mở</translation> + </message> + <message> + <location filename="../player.ui" line="212"/> + <source>Ctrl+O</source> + <translation></translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Open any audio file</source> + <translation>Mở bất kỳ tệp nhạc nào</translation> + </message> + <message> + <location filename="../player.cpp" line="26"/> + <source>Audio Files (*.mp3 *.wav *.ogg *.flac *.mp4)</source> + <translation>Tệp nhạc (*.mp3 *.wav *.ogg *.flac *.mp4)</translation> + </message> + <message> + <location filename="../player.cpp" line="28"/> + <source>File cannot be found</source> + <translation>Không thể tìm tệp</translation> + </message> + <message> + <location filename="../player.cpp" line="29"/> + <source>Uh oh! An error has occured!</source> + <translation>Chà, một lỗi đã xảy ra!</translation> + </message> + <message> + <location filename="../player.cpp" line="30"/> + <source>File is invalid. Maybe try loading a valid audio file.</source> + <translation>Tệp không hợp lệ. Hãy tải một tệp nhạc hợp lệ.</translation> + </message> + <message> + <location filename="../player.cpp" line="36"/> + <source>Opening</source> + <translation>Đang mở</translation> + </message> + <message> + <location filename="../player.cpp" line="37"/> + <source>Success!</source> + <translation>Tốt đẹp!</translation> + </message> + <message> + <location filename="../player.cpp" line="38"/> + <source>This audio file has been loaded.</source> + <translation>Tệp nhạc đã bị tải.</translation> + </message> + <message> + <location filename="../player.cpp" line="64"/> + <source>Closing AleePlayer...</source> + <translation>Đang thoát AleePlayer...</translation> + </message> + <message> + <location filename="../player.cpp" line="80"/> + <source>Pausing music...</source> + <translation>Đang tạm dừng nhạc...</translation> + </message> + <message> + <location filename="../player.cpp" line="84"/> + <source>Playing music...</source> + <translation>Đang phát nhạc...</translation> + </message> + <message> + <location filename="../player.cpp" line="86"/> + <source>Pause</source> + <translation>Tạm dừng</translation> + </message> + <message> + <location filename="../player.cpp" line="95"/> + <source>Stopping music...</source> + <translation>Đang dừng lại nhắc...</translation> + </message> + <message> + <location filename="../player.cpp" line="105"/> + <source>Opening about dialog</source> + <translation>Đang mở cửa sổ giới thiệu</translation> + </message> +</context> +</TS> |
