Localize all UI strings

This commit is contained in:
Joshua Goins 2023-08-31 13:34:34 +02:00
parent 6920e0c123
commit 1a0b6b8dd0
6 changed files with 136 additions and 120 deletions

View file

@ -4,6 +4,7 @@
#include "ArtConfigWindow.h"
#include <KLocalizedString>
#include <QFile>
#include <QFormLayout>
#include <QGroupBox>
@ -31,20 +32,20 @@ ArtConfigWindow::ArtConfigWindow(const QString& filename, QWidget* parent) : QDi
formLayout->addWidget(galleryScrollArea);
m_newBannerEdit = new QLineEdit();
formLayout->addRow(QStringLiteral("New Banner"), m_newBannerEdit);
formLayout->addRow(i18nc("@label:textbox", "New Banner"), m_newBannerEdit);
m_commissionsOpen = new QCheckBox();
formLayout->addRow(QStringLiteral("Commissions Open"), m_commissionsOpen);
formLayout->addRow(i18nc("@option:check", "Commissions Open"), m_commissionsOpen);
auto bottomButtonLayout = new QHBoxLayout();
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);
bottomButtonLayout->addWidget(cancelButton);
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] {
saveData(filename);
});

View file

@ -5,17 +5,18 @@
#include "ArtDetailWindow.h"
#include "imagelabel.h"
#include <KLocalizedString>
#include <QDateEdit>
#include <QFile>
#include <QFileInfo>
#include <QFormLayout>
#include <QGroupBox>
#include <QHBoxLayout>
#include <QJsonArray>
#include <QJsonDocument>
#include <QLineEdit>
#include <QPushButton>
#include <QTextEdit>
#include <QHBoxLayout>
ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDirectory, QWidget* parent) : QDialog(parent) {
setMinimumWidth(800);
@ -38,7 +39,7 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
QImage image;
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);
auto previewLayout = new QVBoxLayout();
@ -49,7 +50,7 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
previewLayout->addWidget(imageView);
m_titleEdit = new QLineEdit();
formLayout->addRow(QStringLiteral("Title"), m_titleEdit);
formLayout->addRow(i18nc("@label:textbox", "Title"), m_titleEdit);
m_knowExactDateBox = new QCheckBox();
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"));
}
});
formLayout->addRow(QStringLiteral("Know Exact Date?"), m_knowExactDateBox);
formLayout->addRow(i18nc("@option:check", "Know Exact Date?"), m_knowExactDateBox);
m_dateEdit = new QDateEdit();
m_dateEdit->setCalendarPopup(true);
@ -74,22 +75,22 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
formLayout->addRow(QStringLiteral("Description"), m_descriptionEdit);
m_nsfwBox = new QCheckBox();
formLayout->addRow(QStringLiteral("Is NSFW?"), m_nsfwBox);
formLayout->addRow(i18nc("@option:check", "Is NSFW?"), m_nsfwBox);
m_mastodonUrlEdit = new QLineEdit();
formLayout->addRow(QStringLiteral("Mastodon URL"), m_mastodonUrlEdit);
formLayout->addRow(i18nc("@label:textbox", "Mastodon URL"), m_mastodonUrlEdit);
m_pixivUrlEdit = new QLineEdit();
formLayout->addRow(QStringLiteral("Pixiv URL"), m_pixivUrlEdit);
formLayout->addRow(i18nc("@label:textbox", "Pixiv URL"), m_pixivUrlEdit);
m_newgroundsUrlEdit = new QLineEdit();
formLayout->addRow(QStringLiteral("Newgrounds URL"), m_newgroundsUrlEdit);
formLayout->addRow(i18nc("@label:textbox", "Newgrounds URL"), m_newgroundsUrlEdit);
m_programEdit = new QLineEdit();
formLayout->addRow(QStringLiteral("Program"), m_programEdit);
formLayout->addRow(i18nc("@label:textbox", "Program"), m_programEdit);
auto charactersLayout = new QVBoxLayout();
formLayout->addRow(QStringLiteral("Characters"), charactersLayout);
formLayout->addRow(i18nc("@title:group", "Characters"), charactersLayout);
auto characterList = new QListView();
m_characterListModel = new QStringListModel();
@ -99,16 +100,17 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
auto characterButtonLayout = new QHBoxLayout();
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] {
auto tmp = m_characterListModel->stringList();;
auto tmp = m_characterListModel->stringList();
;
tmp.push_back(QStringLiteral("New Character"));
m_characterListModel->setStringList(tmp);
});
characterButtonLayout->addWidget(addCharacterButton);
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] {
if (characterList->selectionModel()->hasSelection()) {
const QString toRemove = characterList->selectionModel()->selectedRows()[0].data().toString();
@ -121,7 +123,7 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
characterButtonLayout->addWidget(removeCharacterButton);
auto tagLayout = new QVBoxLayout();
formLayout->addRow(QStringLiteral("Tags"), tagLayout);
formLayout->addRow(i18nc("@title:group", "Tags"), tagLayout);
auto tagsList = new QListView();
m_tagsListModel = new QStringListModel();
@ -131,16 +133,17 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
auto tagButtonLayout = new QHBoxLayout();
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] {
auto tmp = m_tagsListModel->stringList();;
auto tmp = m_tagsListModel->stringList();
;
tmp.push_back(QStringLiteral("New Tag"));
m_tagsListModel->setStringList(tmp);
});
tagButtonLayout->addWidget(addTagButton);
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] {
if (tagsList->selectionModel()->hasSelection()) {
const QString toRemove = tagsList->selectionModel()->selectedRows()[0].data().toString();
@ -155,12 +158,12 @@ ArtDetailWindow::ArtDetailWindow(const QString& filename, const QString& assetDi
auto bottomButtonLayout = new QHBoxLayout();
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);
bottomButtonLayout->addWidget(cancelButton);
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] {
saveData(filename);
});

View file

@ -4,6 +4,7 @@
#include "ArtModel.h"
#include <KLocalizedString>
#include <QDirIterator>
#include <QFile>
#include <QFileInfo>
@ -53,10 +54,12 @@ ArtModel::ArtModel(const QString& definitionDirectory, const QString& assetDirec
}
int ArtModel::rowCount(const QModelIndex &parent) const {
Q_UNUSED(parent);
return m_artPieces.size();
}
int ArtModel::columnCount(const QModelIndex &parent) const {
Q_UNUSED(parent);
return 4;
}
@ -95,13 +98,13 @@ QVariant ArtModel::headerData(int section, Qt::Orientation orientation, int role
if (orientation == Qt::Orientation::Horizontal && role == Qt::DisplayRole) {
switch(section) {
case 0:
return QStringLiteral("Filename");
return i18nc("@title:column", "Filename");
case 1:
return QStringLiteral("Image");
return i18nc("@title:column", "Image");
case 2:
return QStringLiteral("Title");
return i18nc("@title:column", "Title");
case 3:
return QStringLiteral("Has Alt Text");
return i18nc("@title:column", "Has Alt Text");
default:
Q_UNREACHABLE();
}

View file

@ -4,24 +4,25 @@
#include "MainWindow.h"
#include <QTableView>
#include <KLocalizedString>
#include <QHeaderView>
#include <QMenuBar>
#include <QTableView>
#include "ArtConfigWindow.h"
#include "ArtDetailWindow.h"
#include "ArtModel.h"
MainWindow::MainWindow(const QString& definitionDirectory, const QString& assetDirectory, const QString& dataDirectory) {
setWindowTitle(QStringLiteral("Redai"));
setWindowTitle(i18nc("@title:window", "Redai"));
setMinimumSize(1280, 720);
auto menuBar = new QMenuBar();
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] {
auto window = new ArtConfigWindow(QStringLiteral("%1/art-config.json").arg(dataDirectory), this);
window->show();

View file

@ -28,6 +28,8 @@ QPixmap ImageLabel::scaledPixmap() const {
}
void ImageLabel::resizeEvent(QResizeEvent *e) {
if (!pix.isNull())
Q_UNUSED(e);
if (!pix.isNull()) {
QLabel::setPixmap(scaledPixmap());
}
}

View file

@ -2,6 +2,7 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
#include <KLocalizedString>
#include <QApplication>
#include <QCommandLineParser>
#include <QDir>
@ -9,10 +10,15 @@
#include "MainWindow.h"
int main(int argc, char *argv[]) {
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
QApplication app(argc, argv);
KLocalizedString::setApplicationDomain("redai");
QCommandLineParser parser;
parser.addPositionalArgument(QStringLiteral("site-path"), QCoreApplication::translate("main", "Site directory."));
parser.addPositionalArgument(QStringLiteral("site-path"), i18nc("@info", "Site directory."));
parser.process(app);