all ui translated to Latvian

This commit is contained in:
jorenchik
2024-11-03 11:16:55 +02:00
parent 8e6b3f7f96
commit 73c37659cb
5 changed files with 93 additions and 96 deletions

View File

@@ -294,7 +294,7 @@ void updateMdemInfo(std::string filename, bool isChanged) {
std::tm* tm = std::localtime(&currentMdemBuffer->trainedAt);
char buffer[100];
std::strftime(buffer, sizeof(buffer), "%d.%m.%Y %H:%M", tm);
ss << "Last practiced: " << std::string(buffer);
ss << "Pēdējā mācīšanās reize: " << std::string(buffer);
}
lastPracticeLabel->setText(QString::fromStdString(ss.str()));
} else {
@@ -330,7 +330,7 @@ Mdem* makeMdem() {
mdem->hFront.addWidget(&mdem->wFrontText);
mdem->hFront.addStretch(1);
mdem->editButton.setText("Edit");
mdem->editButton.setText("Rediģēt");
QObject::connect(
&mdem->editButton,
&QToolButton::clicked,
@@ -349,7 +349,7 @@ Mdem* makeMdem() {
);
mdem->hFront.addWidget(&mdem->editButton);
mdem->deleteButton.setText("Delete");
mdem->deleteButton.setText("Dzēst");
QObject::connect(
&mdem->deleteButton,
&QToolButton::clicked,
@@ -375,7 +375,7 @@ Mdem* makeMdem() {
);
mdem->hFront.addWidget(&mdem->deleteButton);
mdem->toggleVisibility.setText("Show");
mdem->toggleVisibility.setText("Parādīt");
mdem->hFront.addWidget(&mdem->toggleVisibility);
// Back
@@ -403,10 +403,10 @@ Mdem* makeMdem() {
QObject::connect(&mdem->toggleVisibility, &QToolButton::clicked, [mdem]() {
if (mdem->wBack.isVisible()) {
mdem->wBack.hide();
mdem->toggleVisibility.setText("Show");
mdem->toggleVisibility.setText("Parādīt");
} else {
mdem->wBack.show();
mdem->toggleVisibility.setText("Hide");
mdem->toggleVisibility.setText("Slēpt");
}
showBacklabels(mdem);
});
@@ -464,14 +464,14 @@ void switchPage(int pageIdx) {
int l = 0;
char buffer[50];
snprintf(buffer, sizeof(buffer), "Page: %d", pageIdx + 1);
snprintf(buffer, sizeof(buffer), "Lappuse: %d", pageIdx + 1);
pagination->paginationLabel.setText(buffer);
// Adjust mdem amount, hide widgets in mdems
for (auto& mdem : mdems) {
if (mdem->wBack.isVisible()) {
mdem->wBack.hide();
mdem->toggleVisibility.setText("Show");
mdem->toggleVisibility.setText("Parādīt");
}
}
@@ -598,7 +598,7 @@ void reloadMdem(std::string path) {
end = std::chrono::high_resolution_clock::now();
showTimes = settings->value(SETTING_SHOW_TIMES).toBool();
if (showTimes) {
std::cout << showTime("I/O time") << std::endl;
std::cout << showTime("I/O laiks") << std::endl;
}
debug = settings->value(SETTING_DEBUG).toBool();
auto res = transpile(content);
@@ -613,7 +613,7 @@ void reloadMdem(std::string path) {
}
if (settings->value(SETTING_DEBUG).toBool()) {
std::cout << std::format("Last trained at: {}", currentMdemBuffer->trainedAt)
std::cout << std::format("Pēdējās mācīšanās reize: {}", currentMdemBuffer->trainedAt)
<< std::endl;
}
@@ -621,7 +621,7 @@ void reloadMdem(std::string path) {
errorView->box.hide();
} else {
currentMdemBuffer->trainedAt = 0;
std::cout << std::format("Compilation error: {}", res.error) << std::endl;
std::cout << std::format("Transpilācijas kļūda: {}", res.error) << std::endl;
for (auto question: res.value.questions) {
delete question;
@@ -632,7 +632,7 @@ void reloadMdem(std::string path) {
errorView->label.setText(
QString::fromStdString(
std::format(
"Error while transpiling {}: {} ({}:{})",
"Kļūda, transpilējot {}: {} ({}:{})",
filename,
res.error,
res.row,
@@ -649,12 +649,12 @@ void reloadMdem(std::string path) {
switchPage(0);
updateMdemInfo(filename, false);
} else {
std::cout << std::format("Could not open the file: {}", currentPath.toStdString()) << std::endl;
std::cout << std::format("Nevar atvert failu: {}", currentPath.toStdString()) << std::endl;
}
for (auto mdem: mdems) {
mdem->wBack.hide();
mdem->toggleVisibility.setText("Show");
mdem->toggleVisibility.setText("Parādīt");
}
hideQuestionElements();
}
@@ -669,7 +669,7 @@ void pickDirectory(QString directory) {
QMessageBox::information(
nullptr,
"Error",
"The directory that is specified as the default memorybase does not exist."
"Direktorijs, kas ir norādīts kā noklusētais, neeksistē."
);
return;
}
@@ -706,7 +706,7 @@ void setupEditorSave() {
}
QMessageBox::information(
nullptr,
"Editing error",
"Rediģēšanas kļūda",
QString::fromStdString(res.error)
);
} else {
@@ -714,8 +714,8 @@ void setupEditorSave() {
if (res.value.questions.size() <= 0) {
QMessageBox::information(
nullptr,
"Editing error",
"There are no questions in your input."
"Rediģēšanas kļūda",
"Jūsu ievadē nav jautājumu."
);
} else if (res.value.questions.size() == 1) {
auto oldQuestion = editMdem->question;
@@ -735,16 +735,16 @@ void setupEditorSave() {
} else {
QMessageBox::information(
nullptr,
"Editing error",
"There are more than question in your input. Please enter one."
"Rediģēšanas kļūda",
"Jūsu ievadē ir vairāki jautājumi. Lūdzu ievadiet vienu!"
);
}
} else {
if (res.value.questions.size() <= 0) {
QMessageBox::information(
nullptr,
"Editing error",
"There are no questions in your input."
"Rediģēšanas kļūda",
"Jūsu ievadē nav jautājumu."
);
} else {
currentMdemBuffer->questions.insert(
@@ -772,7 +772,7 @@ void saveMdem() {
showTimes = settings->value(SETTING_SHOW_TIMES).toBool();
if (showTimes) {
std::cout << showTime("Saving time") << std::endl;
std::cout << showTime("Saglabāšanas laiks") << std::endl;
}
}
@@ -804,8 +804,8 @@ QMainWindow *initMdemListWindow() {
QMenuBar *menuBar = new QMenuBar;
QFileDialog *fileDialog = new QFileDialog;
QMenu *menu = new QMenu("File");
actionOpen = menu->addAction("Open memorybase");
QMenu *menu = new QMenu("Fails");
actionOpen = menu->addAction("Atvert memorybase");
QObject::connect(
actionOpen,
&QAction::triggered,
@@ -822,7 +822,7 @@ QMainWindow *initMdemListWindow() {
}
);
openSettings = menu->addAction("Settings");
openSettings = menu->addAction("Iestatījumi");
QObject::connect(
openSettings,
&QAction::triggered,
@@ -830,7 +830,7 @@ QMainWindow *initMdemListWindow() {
settingsWindow->show();
});
actionHelp = menu->addAction("Help");
actionHelp = menu->addAction("Palīdzība");
QObject::connect(
actionHelp,
&QAction::triggered,
@@ -846,7 +846,7 @@ QMainWindow *initMdemListWindow() {
{ // Editor.
editorWindow = new QMainWindow;
editorWindow->setWindowTitle("QScintilla Simple Editor");
editorWindow->setWindowTitle("Jautājumu redaktors");
editorWindow->resize(800, 600);
QWidget *wEditor = new QWidget;
QVBoxLayout *vlEditor = new QVBoxLayout;
@@ -864,7 +864,7 @@ QMainWindow *initMdemListWindow() {
auto btnSaveEditor = new QPushButton;
editorButtons->setLayout(buttonLayout);
btnSaveEditor->setText(QString::fromStdString("Save"));
btnSaveEditor->setText(QString::fromStdString("Saglabāt"));
QObject::connect(
btnSaveEditor,
&QToolButton::clicked,
@@ -957,14 +957,14 @@ QMainWindow *initMdemListWindow() {
);
// Button content.
toolbar->btnAdd.setText("Add");
toolbar->btnSave.setText("Save");
toolbar->btnLoad.setText("Load");
toolbar->btnPractice.setText("Practice");
toolbar->btnAdd.setText("Pievienot");
toolbar->btnSave.setText("Saglabāt");
toolbar->btnLoad.setText("Ielādēt");
toolbar->btnPractice.setText("Mācīties");
toolbar->cbAlgorithm.addItem("Spaced", SPACED);
toolbar->cbAlgorithm.addItem("Random", RANDOM);
toolbar->cbAlgorithm.addItem("Primary", PRIMARY);
toolbar->cbAlgorithm.addItem("Intervālu", SPACED);
toolbar->cbAlgorithm.addItem("Nejaušais", RANDOM);
toolbar->cbAlgorithm.addItem("Primārais", PRIMARY);
// Add buttons.
hlButtonsTop->addWidget(&toolbar->btnAdd);
@@ -1014,7 +1014,7 @@ QMainWindow *initMdemListWindow() {
for (int col = 1; col < model->columnCount(); ++col) {
mdemList->hideColumn(col);
}
model->setHeaderData(0, Qt::Horizontal, QObject::tr("Custom Name"));
/*model->setHeaderData(0, Qt::Horizontal, QObject::tr("Custom name"));*/
leftLayout->addWidget(mdemList);
}

View File

@@ -59,7 +59,6 @@
#include <QWidget>
#include "mdemList.h"
#include "api.h"
#include "qscilexer.h"
QSettings *settings;
@@ -71,14 +70,14 @@ QWidget *initSettings () {
settings = new QSettings(settingsFile, QSettings::IniFormat);
auto* settingsWindow = new QWidget;
settingsWindow->setWindowTitle("Settings");
settingsWindow->setWindowTitle("Iestatījumi");
auto top = new QWidget;
auto hlTop = new QVBoxLayout;
top->setLayout(hlTop);
auto settingsLabel = new QLabel;
settingsLabel->setText("Settings");
settingsLabel->setText("Iestatījumi");
settingsLabel->setStyleSheet(
"font-size: 20px;"
);
@@ -87,16 +86,16 @@ QWidget *initSettings () {
auto formLayout = new QFormLayout;
auto* mbaseInput = new QLineEdit;
auto* browseButton = new QPushButton("Browse");
auto* browseButton = new QPushButton("Izvēlēties");
auto* pathLayout = new QHBoxLayout;
pathLayout->addWidget(mbaseInput);
pathLayout->addWidget(browseButton);
formLayout->addRow("Default memorybase:", pathLayout);
formLayout->addRow("Noklusējuma memorybase:", pathLayout);
QObject::connect(browseButton, &QPushButton::clicked, [mbaseInput]() {
QString dir = QFileDialog::getExistingDirectory(
nullptr,
"Select Config Directory",
"Izvēlēties noklusēto direktoriju",
mbaseInput->text()
);
if (!dir.isEmpty()) {
@@ -110,37 +109,37 @@ QWidget *initSettings () {
auto characterWrap = new QSpinBox;
characterWrap->setRange(30, 150);
formLayout->addRow("Character wrap in code gen [30-150]:", characterWrap);
formLayout->addRow("Rindas pārnešanas platums jautājumu teksta ģenerēšanā [30-150]:", characterWrap);
auto* timezone = new QSpinBox;
timezone->setRange(-12, 12);
formLayout->addRow("Timezone as number (e.g. +2 as 2):", timezone);
formLayout->addRow("Laika zona (e.g. +2 as 2):", timezone);
auto* notRemembered = new QDoubleSpinBox;
notRemembered->setRange(0, 100);
formLayout->addRow("Not remembered:", notRemembered);
formLayout->addRow("Neatcerējos:", notRemembered);
auto* hard = new QDoubleSpinBox;
hard->setRange(0, 100);
formLayout->addRow("Hard:", hard);
formLayout->addRow("Grūti:", hard);
auto* medium = new QDoubleSpinBox;
medium->setRange(0, 100);
formLayout->addRow("Medium:", medium);
formLayout->addRow("Vidēji:", medium);
auto* easy = new QDoubleSpinBox;
easy->setRange(0, 100);
formLayout->addRow("Easy:", easy);
formLayout->addRow("Viegli:", easy);
auto* debug = new QCheckBox;
formLayout->addRow("Debug:", debug);
formLayout->addRow("Atkļūdošana:", debug);
auto* showTimes = new QCheckBox;
formLayout->addRow("Show times in the console:", showTimes);
formLayout->addRow("Rādīt laikus komandrindā:", showTimes);
auto btnLayout = new QHBoxLayout;
auto btnSaveSettings = new QPushButton("Save");
auto btnLoad = new QPushButton("Load");
auto btnSaveSettings = new QPushButton("Saglabāt");
auto btnLoad = new QPushButton("Ielādēt");
auto mainLayout = new QVBoxLayout;
btnLayout->addWidget(btnSaveSettings);
btnLayout->addWidget(btnLoad);
@@ -172,9 +171,9 @@ QWidget *initSettings () {
auto updateSettingsLabel = [settingsLabel](bool isChanged) {
if (isChanged) {
settingsLabel->setText("Settings *");
settingsLabel->setText("Iestatījumi *");
} else {
settingsLabel->setText("Settings");
settingsLabel->setText("Iestatījumi");
}
};

View File

@@ -669,7 +669,7 @@ QMainWindow *initTrainWindow() {
auto topLeftSpacer = new QSpacerItem(50, 50, QSizePolicy::Expanding, QSizePolicy::Minimum);
auto btnSaveProgress = new QToolButton();
btnSaveProgress->setText("Save progress");
btnSaveProgress->setText("Saglabāt progresu");
hTopButtons->addItem(topLeftSpacer);
hTopButtons->addWidget(btnSaveProgress);
@@ -696,7 +696,6 @@ QMainWindow *initTrainWindow() {
{ // Make question text.
lQuestionText = new QLabel();
lQuestionText->setText("What is the capital of Latvia?");
lQuestionText->setWordWrap(true);
lQuestionText->setStyleSheet(QString(
"QLabel {"
@@ -720,7 +719,6 @@ QMainWindow *initTrainWindow() {
{ // Make answer text.
answerText = new QLabel();
answerText->setText("- Riga\n- Second line");
answerText->setWordWrap(true);
answerText->setStyleSheet(QString(
"QLabel {"
@@ -799,25 +797,25 @@ QMainWindow *initTrainWindow() {
setCooldownHours(48);
}
});
btnNotRemembered->setText("Not remembered (Z)");
btnNotRemembered->setText("Neatcerējos (Z)");
addShortcut("Z", []() {
if (btnNotRemembered->isVisible()) {
btnNotRemembered->click();
}
});
btnHard->setText("Hard (X)");
btnHard->setText("Grūti (X)");
addShortcut("X", []() {
if (btnHard->isVisible()) {
btnHard->click();
}
});
btnMedium->setText("Medium (C)");
btnMedium->setText("Vidēji (C)");
addShortcut("C", []() {
if (btnMedium->isVisible()) {
btnMedium->click();
}
});
btnEasy->setText("Easy (V)");
btnEasy->setText("Viegli (V)");
addShortcut("V", []() {
if (btnEasy->isVisible()) {
btnEasy->click();
@@ -846,10 +844,10 @@ QMainWindow *initTrainWindow() {
vButtonBox->addWidget(actionButtons);
actionButtons->setLayout(hButtons);
btnTriggerAnswer->setText("Show answer");
btnTriggerAnswer->setText("Parādīt atbildi");
btnTriggerAnswer->hide();
btnNext->setText("Next");
btnNext->setText("Nākamais");
QObject::connect(btnNext, &QToolButton::clicked, []() {
setupNextQuestion();
});

View File

@@ -167,7 +167,7 @@ Result<std::vector<Token>> tokenizeMdem(const std::string& content) {
if (!identifierStarted) {
return {
tokens,
"Cannot end identifier if it is not started",
"Nevar beigt identifikatoru, ja tas nav iesākts",
tokens[i].row,
tokens[i].column
};
@@ -245,12 +245,12 @@ Result<std::vector<Token>> tokenizeMdem(const std::string& content) {
);
if (debug) {
std::cout << "SECTION: Lexer output:\n";
std::cout << std::format("Token count: {}", tokens.size()) << std::endl;
std::cout << "SECTION: LEXER:\n";
std::cout << std::format("Tekstvienību daudzums: {}", tokens.size()) << std::endl;
for (const Token& token : tokens) {
std::cout << token.toString();
}
std::cout << "SECTION END: Lexer output\n";
std::cout << "SECTION END: LEXER\n";
}
return {tokens, ""};
@@ -258,18 +258,18 @@ Result<std::vector<Token>> tokenizeMdem(const std::string& content) {
std::string Token::toString(const TokenType* ttype) {
switch (*ttype) {
case TokenType::TextFragment: return "text fragment";
case TokenType::QuestionEnd: return "question end symbol";
case TokenType::MatchGroupEnd: return "match group end";
case TokenType::ElementDashStart: return "dash element start";
case TokenType::ElementOrderModifier: return "order element modifier";
case TokenType::ElementPlusStart: return "plus element start";
case TokenType::Cooldown: return "cooldown";
case TokenType::CooldownStart: return "start of cooldown";
case TokenType::CooldownEnd: return "end of cooldown";
case TokenType::StartOfFile: return "start of the file";
case TokenType::EndOfFile: return "end of file";
default: return "unrecognized token";
case TokenType::TextFragment: return "teksta fragments";
case TokenType::QuestionEnd: return "jautājuma beigas";
case TokenType::MatchGroupEnd: return "grupas beigas";
case TokenType::ElementDashStart: return "svītras elementa sākums";
case TokenType::ElementOrderModifier: return "secības elementa sākums";
case TokenType::ElementPlusStart: return "plusa elementa sākums";
case TokenType::Cooldown: return "pārtraukums";
case TokenType::CooldownStart: return "pātraukuma sākums";
case TokenType::CooldownEnd: return "pātraukuma beigas";
case TokenType::StartOfFile: return "faila sākums";
case TokenType::EndOfFile: return "faila beigas";
default: return "neatpazīta tekstvienība";
}
}

View File

@@ -90,7 +90,7 @@ Result<NoneType> ValidateGrammar(const std::vector<Token>& tokens) {
};
return {
.error=std::format(
"Invalid token sequence: {} cannot precede {}",
"Nekorekta tekstvienību secība: {} nevar būt pirms {}",
std::string(capitalize(Token::toString(&token.tokenType))),
std::string(capitalize(Token::toString(&nextToken.tokenType)))
),
@@ -133,7 +133,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
size_t i = 0;
if (debug) {
std::cout << "SECTION: Parser output:\n";
std::cout << "SECTION: PARSER:\n";
}
auto isInBounds = [tokens](size_t i) {
@@ -147,7 +147,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
std::istringstream ss(datetime);
ss >> std::get_time(&tm, format.c_str());
if (ss.fail()) {
throw std::runtime_error("Failed to parse datetime string");
throw std::runtime_error("Neizdevās nolasīt datuma un laiku");
}
std::time_t time = timegm(&tm);
return time;
@@ -156,7 +156,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
time = parseToUTCTime(tokens[i].content.c_str(), "%d.%m.%Y %H:%M");
} catch (std::exception e) {
return makeResult(
std::format("cannot parse the time - {}", e.what()),
std::format("Parsēšanas kļūda - {}", e.what()),
tokens[i]
);
}
@@ -175,7 +175,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
// Start element parsing & add to the offset.
if (isInBounds(i + 1) && tokens[i + 1].tokenType == TokenType::ElementOrderModifier) {
return makeResult(
"cannot have order modifier ('^') in the question definition",
"Nevar izmantot secības modifikatoru ('^') jautājuma sākumā",
tokens[i + 1]
);
}
@@ -184,7 +184,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
cooldown = std::stod(tokens[i + 2].content);
} catch (std::exception e) {
return makeResult(
"error parsing cooldown",
"kļūda nolasot pārtraukumu",
tokens[i + 1]
);
}
@@ -214,7 +214,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
if (offset == 5 && tokens[i + 5].tokenType != TokenType::QuestionEnd) {
// Cannot place the identifier on the ordinary element.
return makeResult(
"Invalid identifier placement",
"Nepareiza idenfikatora izvietošana",
tokens[i]
);
}
@@ -235,19 +235,19 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
isOrderQuestion = true;
if (!isDash) {
return makeResult(
"order questions can only be used with dashes ('-')",
"secības jautājumus var izmantot tikai ar svītrām ('-')",
tokens[i]
);
}
if (isGroupQuestion) {
return makeResult(
"question with groups cannot be ordered ('-^' and ':')",
"jautājumos ar grupām nevar būt secības elementu ('-^' and ':')",
tokens[i]
);
}
if (isInBounds(i + 3) && tokens[i + 3].tokenType == TokenType::MatchGroupEnd) {
return makeResult(
"cannot have groups in order question('-^' and ':')",
"secības jautājumā nevar būt grupas ('-^' and ':')",
tokens[i]
);
}
@@ -257,7 +257,7 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
isGroupQuestion = true;
if (!isDash) {
return makeResult(
"group questions can only be used with dashes ('-')",
"grupas jautājumus var definēt tikai ar svītru elementiem ('-')",
tokens[i]
);
}
@@ -338,19 +338,19 @@ Result<ParseInfo> parseQuestions(const std::vector<Token>& tokens) {
}
} else if (tokens[i].tokenType == TokenType::EndOfFile) {
if (debug) {
std::cout << "File terminated: EndOfFile\n";
std::cout << "Fails beidzās: EndOfFile\n";
}
break;
} else {
return makeResult(
"Unexpected token encountered",
"Negaidīta tekstvienība",
tokens[i]
);
}
}
if (debug) {
std::cout << "SECTION END: Parser output:\n";
std::cout << "SECTION END: PARSER:\n";
}
return makeResult(
"",
@@ -372,7 +372,7 @@ std::string MultiElementQuestion::toString() const {
ss << opener << " " << choice.answer << "; ";
}
return std::format(
"<Multiple element>\nsection:{}\nid:{}\n{}\n{}",
"<Vairāku elementu jautājums>\nsekcija:{}\npārtraukums:{}\n{}\n{}",
section,
cooldown,
questionText,
@@ -390,7 +390,7 @@ std::string GroupQuestion::toString() const {
ss << "; ";
}
return std::format(
"<GroupQuestion>\nsection:{}\nid:{}\n{}\n{}",
"<Grupas jautājums>\nsekcija:{}\npārtraukums:{}\n{}\n{}",
section,
cooldown,
questionText,