Localize all UI strings
This commit is contained in:
parent
6920e0c123
commit
1a0b6b8dd0
6 changed files with 136 additions and 120 deletions
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "ArtConfigWindow.h"
|
#include "ArtConfigWindow.h"
|
||||||
|
|
||||||
|
#include <KLocalizedString>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
|
@ -31,20 +32,20 @@ ArtConfigWindow::ArtConfigWindow(const QString& filename, QWidget* parent) : QDi
|
||||||
formLayout->addWidget(galleryScrollArea);
|
formLayout->addWidget(galleryScrollArea);
|
||||||
|
|
||||||
m_newBannerEdit = new QLineEdit();
|
m_newBannerEdit = new QLineEdit();
|
||||||
formLayout->addRow(QStringLiteral("New Banner"), m_newBannerEdit);
|
formLayout->addRow(i18nc("@label:textbox", "New Banner"), m_newBannerEdit);
|
||||||
|
|
||||||
m_commissionsOpen = new QCheckBox();
|
m_commissionsOpen = new QCheckBox();
|
||||||
formLayout->addRow(QStringLiteral("Commissions Open"), m_commissionsOpen);
|
formLayout->addRow(i18nc("@option:check", "Commissions Open"), m_commissionsOpen);
|
||||||
|
|
||||||
auto bottomButtonLayout = new QHBoxLayout();
|
auto bottomButtonLayout = new QHBoxLayout();
|
||||||
formLayout->addRow(bottomButtonLayout);
|
formLayout->addRow(bottomButtonLayout);
|
||||||
|
|
||||||
auto cancelButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-close")), QStringLiteral("Cancel"));
|
auto cancelButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-close")), i18nc("@action:button", "Cancel"));
|
||||||
connect(cancelButton, &QPushButton::clicked, this, &ArtConfigWindow::close);
|
connect(cancelButton, &QPushButton::clicked, this, &ArtConfigWindow::close);
|
||||||
bottomButtonLayout->addWidget(cancelButton);
|
bottomButtonLayout->addWidget(cancelButton);
|
||||||
bottomButtonLayout->addStretch(1);
|
bottomButtonLayout->addStretch(1);
|
||||||
|
|
||||||
auto saveButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-ok")), QStringLiteral("Save"));
|
auto saveButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-ok")), i18nc("@action:button", "Save"));
|
||||||
connect(saveButton, &QPushButton::clicked, this, [this, filename] {
|
connect(saveButton, &QPushButton::clicked, this, [this, filename] {
|
||||||
saveData(filename);
|
saveData(filename);
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,17 +5,18 @@
|
||||||
#include "ArtDetailWindow.h"
|
#include "ArtDetailWindow.h"
|
||||||
#include "imagelabel.h"
|
#include "imagelabel.h"
|
||||||
|
|
||||||
|
#include <KLocalizedString>
|
||||||
#include <QDateEdit>
|
#include <QDateEdit>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
#include <QHBoxLayout>
|
|
||||||
|
|
||||||
ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDirectory, QWidget* parent) : QDialog(parent) {
|
ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDirectory, QWidget* parent) : QDialog(parent) {
|
||||||
setMinimumWidth(800);
|
setMinimumWidth(800);
|
||||||
|
@ -38,7 +39,7 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
|
||||||
QImage image;
|
QImage image;
|
||||||
image.load(QStringLiteral("%1/%2.webp").arg(assetDirectory, withoutExtension));
|
image.load(QStringLiteral("%1/%2.webp").arg(assetDirectory, withoutExtension));
|
||||||
|
|
||||||
auto previewBox = new QGroupBox(QStringLiteral("Preview"));
|
auto previewBox = new QGroupBox(i18nc("@title:group", "Preview"));
|
||||||
mainLayout->addWidget(previewBox);
|
mainLayout->addWidget(previewBox);
|
||||||
|
|
||||||
auto previewLayout = new QVBoxLayout();
|
auto previewLayout = new QVBoxLayout();
|
||||||
|
@ -49,7 +50,7 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
|
||||||
previewLayout->addWidget(imageView);
|
previewLayout->addWidget(imageView);
|
||||||
|
|
||||||
m_titleEdit = new QLineEdit();
|
m_titleEdit = new QLineEdit();
|
||||||
formLayout->addRow(QStringLiteral("Title"), m_titleEdit);
|
formLayout->addRow(i18nc("@label:textbox", "Title"), m_titleEdit);
|
||||||
|
|
||||||
m_knowExactDateBox = new QCheckBox();
|
m_knowExactDateBox = new QCheckBox();
|
||||||
connect(m_knowExactDateBox, &QCheckBox::toggled, this, [this](bool checked) {
|
connect(m_knowExactDateBox, &QCheckBox::toggled, this, [this](bool checked) {
|
||||||
|
@ -59,7 +60,7 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
|
||||||
m_dateEdit->setDisplayFormat(QStringLiteral("yyyy"));
|
m_dateEdit->setDisplayFormat(QStringLiteral("yyyy"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
formLayout->addRow(QStringLiteral("Know Exact Date?"), m_knowExactDateBox);
|
formLayout->addRow(i18nc("@option:check", "Know Exact Date?"), m_knowExactDateBox);
|
||||||
|
|
||||||
m_dateEdit = new QDateEdit();
|
m_dateEdit = new QDateEdit();
|
||||||
m_dateEdit->setCalendarPopup(true);
|
m_dateEdit->setCalendarPopup(true);
|
||||||
|
@ -74,22 +75,22 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
|
||||||
formLayout->addRow(QStringLiteral("Description"), m_descriptionEdit);
|
formLayout->addRow(QStringLiteral("Description"), m_descriptionEdit);
|
||||||
|
|
||||||
m_nsfwBox = new QCheckBox();
|
m_nsfwBox = new QCheckBox();
|
||||||
formLayout->addRow(QStringLiteral("Is NSFW?"), m_nsfwBox);
|
formLayout->addRow(i18nc("@option:check", "Is NSFW?"), m_nsfwBox);
|
||||||
|
|
||||||
m_mastodonUrlEdit = new QLineEdit();
|
m_mastodonUrlEdit = new QLineEdit();
|
||||||
formLayout->addRow(QStringLiteral("Mastodon URL"), m_mastodonUrlEdit);
|
formLayout->addRow(i18nc("@label:textbox", "Mastodon URL"), m_mastodonUrlEdit);
|
||||||
|
|
||||||
m_pixivUrlEdit = new QLineEdit();
|
m_pixivUrlEdit = new QLineEdit();
|
||||||
formLayout->addRow(QStringLiteral("Pixiv URL"), m_pixivUrlEdit);
|
formLayout->addRow(i18nc("@label:textbox", "Pixiv URL"), m_pixivUrlEdit);
|
||||||
|
|
||||||
m_newgroundsUrlEdit = new QLineEdit();
|
m_newgroundsUrlEdit = new QLineEdit();
|
||||||
formLayout->addRow(QStringLiteral("Newgrounds URL"), m_newgroundsUrlEdit);
|
formLayout->addRow(i18nc("@label:textbox", "Newgrounds URL"), m_newgroundsUrlEdit);
|
||||||
|
|
||||||
m_programEdit = new QLineEdit();
|
m_programEdit = new QLineEdit();
|
||||||
formLayout->addRow(QStringLiteral("Program"), m_programEdit);
|
formLayout->addRow(i18nc("@label:textbox", "Program"), m_programEdit);
|
||||||
|
|
||||||
auto charactersLayout = new QVBoxLayout();
|
auto charactersLayout = new QVBoxLayout();
|
||||||
formLayout->addRow(QStringLiteral("Characters"), charactersLayout);
|
formLayout->addRow(i18nc("@title:group", "Characters"), charactersLayout);
|
||||||
|
|
||||||
auto characterList = new QListView();
|
auto characterList = new QListView();
|
||||||
m_characterListModel = new QStringListModel();
|
m_characterListModel = new QStringListModel();
|
||||||
|
@ -99,18 +100,19 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
|
||||||
auto characterButtonLayout = new QHBoxLayout();
|
auto characterButtonLayout = new QHBoxLayout();
|
||||||
charactersLayout->addLayout(characterButtonLayout);
|
charactersLayout->addLayout(characterButtonLayout);
|
||||||
|
|
||||||
auto addCharacterButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-add")), QStringLiteral("Add"));
|
auto addCharacterButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-add")), i18nc("@action:button", "Add"));
|
||||||
connect(addCharacterButton, &QPushButton::clicked, this, [this] {
|
connect(addCharacterButton, &QPushButton::clicked, this, [this] {
|
||||||
auto tmp = m_characterListModel->stringList();;
|
auto tmp = m_characterListModel->stringList();
|
||||||
|
;
|
||||||
tmp.push_back(QStringLiteral("New Character"));
|
tmp.push_back(QStringLiteral("New Character"));
|
||||||
m_characterListModel->setStringList(tmp);
|
m_characterListModel->setStringList(tmp);
|
||||||
});
|
});
|
||||||
characterButtonLayout->addWidget(addCharacterButton);
|
characterButtonLayout->addWidget(addCharacterButton);
|
||||||
characterButtonLayout->addStretch(1);
|
characterButtonLayout->addStretch(1);
|
||||||
|
|
||||||
auto removeCharacterButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-remove")), QStringLiteral("Remove"));
|
auto removeCharacterButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-remove")), i18nc("@action:button", "Remove"));
|
||||||
connect(removeCharacterButton, &QPushButton::clicked, this, [this, characterList] {
|
connect(removeCharacterButton, &QPushButton::clicked, this, [this, characterList] {
|
||||||
if(characterList->selectionModel()->hasSelection()) {
|
if (characterList->selectionModel()->hasSelection()) {
|
||||||
const QString toRemove = characterList->selectionModel()->selectedRows()[0].data().toString();
|
const QString toRemove = characterList->selectionModel()->selectedRows()[0].data().toString();
|
||||||
|
|
||||||
auto tmp = m_characterListModel->stringList();
|
auto tmp = m_characterListModel->stringList();
|
||||||
|
@ -121,7 +123,7 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
|
||||||
characterButtonLayout->addWidget(removeCharacterButton);
|
characterButtonLayout->addWidget(removeCharacterButton);
|
||||||
|
|
||||||
auto tagLayout = new QVBoxLayout();
|
auto tagLayout = new QVBoxLayout();
|
||||||
formLayout->addRow(QStringLiteral("Tags"), tagLayout);
|
formLayout->addRow(i18nc("@title:group", "Tags"), tagLayout);
|
||||||
|
|
||||||
auto tagsList = new QListView();
|
auto tagsList = new QListView();
|
||||||
m_tagsListModel = new QStringListModel();
|
m_tagsListModel = new QStringListModel();
|
||||||
|
@ -131,18 +133,19 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
|
||||||
auto tagButtonLayout = new QHBoxLayout();
|
auto tagButtonLayout = new QHBoxLayout();
|
||||||
tagLayout->addLayout(tagButtonLayout);
|
tagLayout->addLayout(tagButtonLayout);
|
||||||
|
|
||||||
auto addTagButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-add")), QStringLiteral("Add"));
|
auto addTagButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-add")), i18nc("@action:button", "Add"));
|
||||||
connect(addTagButton, &QPushButton::clicked, this, [this] {
|
connect(addTagButton, &QPushButton::clicked, this, [this] {
|
||||||
auto tmp = m_tagsListModel->stringList();;
|
auto tmp = m_tagsListModel->stringList();
|
||||||
|
;
|
||||||
tmp.push_back(QStringLiteral("New Tag"));
|
tmp.push_back(QStringLiteral("New Tag"));
|
||||||
m_tagsListModel->setStringList(tmp);
|
m_tagsListModel->setStringList(tmp);
|
||||||
});
|
});
|
||||||
tagButtonLayout->addWidget(addTagButton);
|
tagButtonLayout->addWidget(addTagButton);
|
||||||
tagButtonLayout->addStretch(1);
|
tagButtonLayout->addStretch(1);
|
||||||
|
|
||||||
auto removeTagButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-remove")), QStringLiteral("Remove"));
|
auto removeTagButton = new QPushButton(QIcon::fromTheme(QStringLiteral("list-remove")), i18nc("@action:button", "Remove"));
|
||||||
connect(removeTagButton, &QPushButton::clicked, this, [this, tagsList] {
|
connect(removeTagButton, &QPushButton::clicked, this, [this, tagsList] {
|
||||||
if(tagsList->selectionModel()->hasSelection()) {
|
if (tagsList->selectionModel()->hasSelection()) {
|
||||||
const QString toRemove = tagsList->selectionModel()->selectedRows()[0].data().toString();
|
const QString toRemove = tagsList->selectionModel()->selectedRows()[0].data().toString();
|
||||||
|
|
||||||
auto tmp = m_tagsListModel->stringList();
|
auto tmp = m_tagsListModel->stringList();
|
||||||
|
@ -155,12 +158,12 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
|
||||||
auto bottomButtonLayout = new QHBoxLayout();
|
auto bottomButtonLayout = new QHBoxLayout();
|
||||||
formLayout->addRow(bottomButtonLayout);
|
formLayout->addRow(bottomButtonLayout);
|
||||||
|
|
||||||
auto cancelButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-close")), QStringLiteral("Cancel"));
|
auto cancelButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-close")), i18nc("@action:button", "Cancel"));
|
||||||
connect(cancelButton, &QPushButton::clicked, this, &ArtDetailWindow::close);
|
connect(cancelButton, &QPushButton::clicked, this, &ArtDetailWindow::close);
|
||||||
bottomButtonLayout->addWidget(cancelButton);
|
bottomButtonLayout->addWidget(cancelButton);
|
||||||
bottomButtonLayout->addStretch(1);
|
bottomButtonLayout->addStretch(1);
|
||||||
|
|
||||||
auto saveButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-ok")), QStringLiteral("Save"));
|
auto saveButton = new QPushButton(QIcon::fromTheme(QStringLiteral("dialog-ok")), i18nc("@action:button", "Save"));
|
||||||
connect(saveButton, &QPushButton::clicked, this, [this, filename] {
|
connect(saveButton, &QPushButton::clicked, this, [this, filename] {
|
||||||
saveData(filename);
|
saveData(filename);
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "ArtModel.h"
|
#include "ArtModel.h"
|
||||||
|
|
||||||
|
#include <KLocalizedString>
|
||||||
#include <QDirIterator>
|
#include <QDirIterator>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
@ -53,10 +54,12 @@ ArtModel::ArtModel(const QString& definitionDirectory, const QString& assetDirec
|
||||||
}
|
}
|
||||||
|
|
||||||
int ArtModel::rowCount(const QModelIndex &parent) const {
|
int ArtModel::rowCount(const QModelIndex &parent) const {
|
||||||
|
Q_UNUSED(parent);
|
||||||
return m_artPieces.size();
|
return m_artPieces.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
int ArtModel::columnCount(const QModelIndex &parent) const {
|
int ArtModel::columnCount(const QModelIndex &parent) const {
|
||||||
|
Q_UNUSED(parent);
|
||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,13 +98,13 @@ QVariant ArtModel::headerData(int section, Qt::Orientation orientation, int role
|
||||||
if (orientation == Qt::Orientation::Horizontal && role == Qt::DisplayRole) {
|
if (orientation == Qt::Orientation::Horizontal && role == Qt::DisplayRole) {
|
||||||
switch(section) {
|
switch(section) {
|
||||||
case 0:
|
case 0:
|
||||||
return QStringLiteral("Filename");
|
return i18nc("@title:column", "Filename");
|
||||||
case 1:
|
case 1:
|
||||||
return QStringLiteral("Image");
|
return i18nc("@title:column", "Image");
|
||||||
case 2:
|
case 2:
|
||||||
return QStringLiteral("Title");
|
return i18nc("@title:column", "Title");
|
||||||
case 3:
|
case 3:
|
||||||
return QStringLiteral("Has Alt Text");
|
return i18nc("@title:column", "Has Alt Text");
|
||||||
default:
|
default:
|
||||||
Q_UNREACHABLE();
|
Q_UNREACHABLE();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,24 +4,25 @@
|
||||||
|
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
|
|
||||||
#include <QTableView>
|
#include <KLocalizedString>
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QMenuBar>
|
#include <QMenuBar>
|
||||||
|
#include <QTableView>
|
||||||
|
|
||||||
#include "ArtConfigWindow.h"
|
#include "ArtConfigWindow.h"
|
||||||
#include "ArtDetailWindow.h"
|
#include "ArtDetailWindow.h"
|
||||||
#include "ArtModel.h"
|
#include "ArtModel.h"
|
||||||
|
|
||||||
MainWindow::MainWindow(const QString& definitionDirectory, const QString& assetDirectory, const QString& dataDirectory) {
|
MainWindow::MainWindow(const QString& definitionDirectory, const QString& assetDirectory, const QString& dataDirectory) {
|
||||||
setWindowTitle(QStringLiteral("Redai"));
|
setWindowTitle(i18nc("@title:window", "Redai"));
|
||||||
setMinimumSize(1280, 720);
|
setMinimumSize(1280, 720);
|
||||||
|
|
||||||
auto menuBar = new QMenuBar();
|
auto menuBar = new QMenuBar();
|
||||||
setMenuBar(menuBar);
|
setMenuBar(menuBar);
|
||||||
|
|
||||||
auto manageMenu = menuBar->addMenu(QStringLiteral("Manage"));
|
auto manageMenu = menuBar->addMenu(i18nc("@title:menu Manage site", "Manage"));
|
||||||
|
|
||||||
auto editConfigAction = manageMenu->addAction(QStringLiteral("Edit Config..."));
|
auto editConfigAction = manageMenu->addAction(i18nc("@action:inmenu", "Edit Config..."));
|
||||||
connect(editConfigAction, &QAction::triggered, this, [this, dataDirectory] {
|
connect(editConfigAction, &QAction::triggered, this, [this, dataDirectory] {
|
||||||
auto window = new ArtConfigWindow(QStringLiteral("%1/art-config.json").arg(dataDirectory), this);
|
auto window = new ArtConfigWindow(QStringLiteral("%1/art-config.json").arg(dataDirectory), this);
|
||||||
window->show();
|
window->show();
|
||||||
|
|
|
@ -28,6 +28,8 @@ QPixmap ImageLabel::scaledPixmap() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageLabel::resizeEvent(QResizeEvent *e) {
|
void ImageLabel::resizeEvent(QResizeEvent *e) {
|
||||||
if (!pix.isNull())
|
Q_UNUSED(e);
|
||||||
|
if (!pix.isNull()) {
|
||||||
QLabel::setPixmap(scaledPixmap());
|
QLabel::setPixmap(scaledPixmap());
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
#include <KLocalizedString>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QCommandLineParser>
|
#include <QCommandLineParser>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
@ -9,10 +10,15 @@
|
||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||||
|
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
||||||
|
KLocalizedString::setApplicationDomain("redai");
|
||||||
|
|
||||||
QCommandLineParser parser;
|
QCommandLineParser parser;
|
||||||
parser.addPositionalArgument(QStringLiteral("site-path"), QCoreApplication::translate("main", "Site directory."));
|
parser.addPositionalArgument(QStringLiteral("site-path"), i18nc("@info", "Site directory."));
|
||||||
|
|
||||||
parser.process(app);
|
parser.process(app);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue