Compare commits

...

29 Commits

Author SHA1 Message Date
Ari Iramanesh
2a3f6eb4de Merge branch 'master' into 'master'
Increase PageUp/Down overlap maximum value

See merge request graphics/okular!573
2024-06-24 23:19:53 +00:00
Pratham Gandhi
e5900f9a4f created global qobject 2024-06-24 10:39:38 +05:30
l10n daemon script
b0ba4a343d GIT_SILENT Sync po/docbooks with svn 2024-06-23 01:24:01 +00:00
l10n daemon script
10e622c356 GIT_SILENT Sync po/docbooks with svn 2024-06-22 01:28:12 +00:00
l10n daemon script
2656152314 GIT_SILENT Sync po/docbooks with svn 2024-06-20 01:26:18 +00:00
Pratham Gandhi
84c5b6b416 Added keystroke tests for AFNumber_Keystroke 2024-06-19 21:55:38 +00:00
Pratham Gandhi
86969aca39 Modified parttest to account for newer keystroke restrictions 2024-06-19 21:55:38 +00:00
Pratham Gandhi
a46678ed2f Added tests for percent keystroke 2024-06-19 21:55:38 +00:00
Pratham Gandhi
160be52119 Implemented AFNumber_Keystroke and AFPercent_Keystroke 2024-06-19 21:55:38 +00:00
Sune Vuorela
71957e02f6 Fix crash on certain pdf actions
The Qt6 port left sometimes a deleted pointer behind to be dereferenced
later.

Fix this by leveraging smartpointers.

Also clean up the related code to be a bit more specific about data
deletion
2024-06-19 18:05:21 +00:00
Pratham Gandhi
a0babd7fa4 Implemented AFSpecial_Keystroke 2024-06-19 17:28:06 +00:00
Sune Vuorela
a9bb5b7c95 Replace unsigned open document with signed
Rather than opening a new window/tab with an extra document when signing
a document, replace current active unsigned document with the signed
version.

At least for some users, including me when testing,
it gives annoyance or confusion.
2024-06-19 12:05:45 +00:00
l10n daemon script
4ab61f47cb GIT_SILENT Sync po/docbooks with svn 2024-06-18 01:27:57 +00:00
l10n daemon script
6e25b64392 GIT_SILENT made messages (after extraction) 2024-06-18 00:38:33 +00:00
Pratham Gandhi
ebc02614de Added tests for validating commit and no commit cases for time keystroke action 2024-06-17 14:54:13 +05:30
Pratham Gandhi
68cb2edb8a Implemented AFTime_Keystroke 2024-06-17 14:54:13 +05:30
Pratham Gandhi
a9efa78941 implemented AFMergeChange 2024-06-17 14:54:08 +05:30
l10n daemon script
1a6bd1cc40 GIT_SILENT Sync po/docbooks with svn 2024-06-16 01:23:57 +00:00
Pratham Gandhi
2fe492891f Fixed cursor position and undo/redo merges
Fixes two things:

1. Cursor positions are being incorrectly calculated in scenarios where keystroke actions reject some input text.
2. Undo/redo operations were buggy and the commands would not merge often leading to single character undo/redo most of the times.
2024-06-15 18:26:51 +00:00
Pratham Gandhi
26005d457e Implemented slot refresh methods for radio button, list edit and combo edit 2024-06-15 18:05:54 +00:00
Sune Vuorela
85e8b47a89 Random DVI cleanups
at least certain documents triggers asserts in qt debug mode if a
filename does not contain a space.

Malformed TFM font files can trigger quite serious out of bounds writes.

Also simplify initializations
2024-06-15 10:51:08 +00:00
Sune Vuorela
0bae96a5c0 Fix minor bits from cppcheck 2024-06-13 16:56:24 +02:00
l10n daemon script
033f7b0fc6 GIT_SILENT Sync po/docbooks with svn 2024-06-12 01:25:04 +00:00
Joe Dight
2a78dba3ca BookmarkManager: name new bookmarks by page labels if available 2024-06-11 22:50:11 +00:00
Joe Dight
5b90fcb34d remove BookmarkManager::setPageBookmark
It is only used by addBookmark(int page), which can be implemented in terms of addBookmark(DocumentViewport)
2024-06-11 22:50:11 +00:00
Pratham Gandhi
1b78471a41 Made event.change evaluate to whole incoming text.
Currently event.change evaluates from first point of difference to end of the string. This MR modifies it to evaluate to whole incoming text. Now we evaluate whatever change is coming in, even if that change contains some common substring with original string (not considering only from the first point of difference).

The current definition makes it difficult to evaluate the final value from event.value and event.change within Javascript. This change is also better from compatibility POV as other readers such as Adobe and PDF.js make similar calculations.
2024-06-11 22:41:59 +00:00
Pratham Gandhi
51980dd07e Implemented DocOpen event and fixed doc() function of JSField 2024-06-11 08:52:35 +00:00
l10n daemon script
d02b6aa6f2 GIT_SILENT Sync po/docbooks with svn 2024-06-11 01:27:19 +00:00
Ari Iramanesh
aa66a9b964 Increase PageUp/Down overlap
The original 50% value seems arbitrary and needless. I would like to use
75%, personally. This commit sets the maximum to 99%.
2022-02-25 11:24:42 -08:00
258 changed files with 20108 additions and 19504 deletions

View File

@ -487,6 +487,7 @@ if (TARGET Qt6::Qml)
core/script/js_util.cpp
core/script/js_event.cpp
core/script/js_ocg.cpp
core/script/js_global.cpp
)
target_link_libraries(okularcore PRIVATE Qt6::Qml)
endif()

View File

@ -69,15 +69,15 @@ void CalculateTextTest::testSimpleCalculate()
// Set some values and do calculation
Okular::FormFieldText *field1 = fields[QStringLiteral("field1")];
QVERIFY(field1);
m_document->editFormText(0, field1, QStringLiteral("10"), 0, 0, 0);
m_document->editFormText(0, field1, QStringLiteral("10"), 0, 0, 0, QString());
Okular::FormFieldText *field2 = fields[QStringLiteral("field2")];
QVERIFY(field2);
m_document->editFormText(0, field2, QStringLiteral("20"), 0, 0, 0);
m_document->editFormText(0, field2, QStringLiteral("20"), 0, 0, 0, QString());
Okular::FormFieldText *field3 = fields[QStringLiteral("field3")];
QVERIFY(field3);
m_document->editFormText(0, field3, QStringLiteral("30"), 0, 0, 0);
m_document->editFormText(0, field3, QStringLiteral("30"), 0, 0, 0, QString());
// Verify the results
QCOMPARE(fields[QStringLiteral("Sum")]->text(), QStringLiteral("60"));
@ -90,7 +90,7 @@ void CalculateTextTest::testSimpleCalculate()
QCOMPARE(fields[QStringLiteral("Sum")]->text(), QStringLiteral("60"));
// Test that multiplication with zero works
m_document->editFormText(0, field2, QStringLiteral("0"), 0, 0, 0);
m_document->editFormText(0, field2, QStringLiteral("0"), 0, 0, 0, QStringLiteral("20"));
QCOMPARE(fields[QStringLiteral("Prod")]->text(), QStringLiteral("0"));
// Test that updating the field also worked with sum

View File

@ -29,8 +29,8 @@ class DocumentTest : public QObject
private Q_SLOTS:
void testCloseDuringRotationJob();
void testDocdataMigration();
void testDiff_data();
void testDiff();
void testEvaluateKeystrokeEventChange_data();
void testEvaluateKeystrokeEventChange();
};
// Test that we don't crash if the document is closed while a RotationJob
@ -128,57 +128,53 @@ void DocumentTest::testDocdataMigration()
delete m_document;
}
void DocumentTest::testDiff_data()
void DocumentTest::testEvaluateKeystrokeEventChange_data()
{
QTest::addColumn<QString>("oldVal");
QTest::addColumn<QString>("newVal");
QTest::addColumn<int>("selStart");
QTest::addColumn<int>("selEnd");
QTest::addColumn<QString>("expectedDiff");
QTest::addRow("empty") << ""
<< ""
<< "";
<< "" << 0 << 0 << "";
QTest::addRow("a") << ""
<< "a"
<< "a";
<< "a" << 0 << 0 << "a";
QTest::addRow("ab") << "a"
<< "b"
<< "b";
<< "b" << 0 << 1 << "b";
QTest::addRow("ab2") << "a"
<< "ab"
<< "b";
<< "ab" << 1 << 1 << "b";
QTest::addRow("kaesekuchen") << "Käse"
<< "Käsekuchen"
<< "kuchen";
<< "Käsekuchen" << 4 << 4 << "kuchen";
QTest::addRow("replace") << "kuchen"
<< "wurst"
<< "wurst";
<< "wurst" << 0 << 6 << "wurst";
QTest::addRow("okular") << "Oku"
<< "Okular"
<< "lar";
<< "Okular" << 3 << 3 << "lar";
QTest::addRow("okular2") << "Oku"
<< "Okular" << 0 << 3 << "Okular";
QTest::addRow("removal1") << "a"
<< ""
<< "";
<< "" << 0 << 1 << "";
QTest::addRow("removal2") << "ab"
<< "a"
<< "";
<< "a" << 1 << 2 << "";
QTest::addRow("overlapping chang") << "abcd"
<< "abclmnopd" << 1 << 3 << "bclmnop";
QTest::addRow("unicode") << "☮🤌"
<< "☮🤌❤️"
<< "❤️";
<< "☮🤌❤️" << 2 << 2 << "❤️";
QTest::addRow("unicode2") << ""
<< "☮🤌❤️"
<< "🤌❤️";
<< "☮🤌❤️" << 1 << 1 << "🤌❤️";
QTest::addRow("unicode3") << "🤍"
<< "🤌"
<< "🤌";
<< "🤌" << 0 << 1 << "🤌";
}
void DocumentTest::testDiff()
void DocumentTest::testEvaluateKeystrokeEventChange()
{
QFETCH(QString, oldVal);
QFETCH(QString, newVal);
QFETCH(int, selStart);
QFETCH(int, selEnd);
QFETCH(QString, expectedDiff);
QCOMPARE(Okular::DocumentPrivate::diff(oldVal, newVal), expectedDiff);
QCOMPARE(Okular::DocumentPrivate::evaluateKeystrokeEventChange(oldVal, newVal, selStart, selEnd), expectedDiff);
}
QTEST_MAIN(DocumentTest)

View File

@ -376,7 +376,7 @@ void EditFormsTest::verifyTextForm(Okular::FormFieldText *form)
QCOMPARE(form->text(), QLatin1String(""));
// Insert the string "Hello" into the form
m_document->editFormText(0, form, QStringLiteral("Hello"), 5, 0, 0);
m_document->editFormText(0, form, QStringLiteral("Hello"), 5, 0, 0, QString());
QCOMPARE(form->text(), QStringLiteral("Hello"));
QVERIFY(m_document->canUndo());
QVERIFY(!m_document->canRedo());
@ -394,12 +394,12 @@ void EditFormsTest::verifyTextForm(Okular::FormFieldText *form)
QVERIFY(!m_document->canRedo());
// Type "_World" after "Hello"
m_document->editFormText(0, form, QStringLiteral("Hello_"), 6, 5, 5);
m_document->editFormText(0, form, QStringLiteral("Hello_W"), 7, 6, 6);
m_document->editFormText(0, form, QStringLiteral("Hello_Wo"), 8, 7, 7);
m_document->editFormText(0, form, QStringLiteral("Hello_Wor"), 9, 8, 8);
m_document->editFormText(0, form, QStringLiteral("Hello_Worl"), 10, 9, 9);
m_document->editFormText(0, form, QStringLiteral("Hello_World"), 11, 10, 10);
m_document->editFormText(0, form, QStringLiteral("Hello_"), 6, 5, 5, QStringLiteral("Hello"));
m_document->editFormText(0, form, QStringLiteral("Hello_W"), 7, 6, 6, QStringLiteral("Hello_"));
m_document->editFormText(0, form, QStringLiteral("Hello_Wo"), 8, 7, 7, QStringLiteral("Hello_W"));
m_document->editFormText(0, form, QStringLiteral("Hello_Wor"), 9, 8, 8, QStringLiteral("Hello_Wo"));
m_document->editFormText(0, form, QStringLiteral("Hello_Worl"), 10, 9, 9, QStringLiteral("Hello_Wor"));
m_document->editFormText(0, form, QStringLiteral("Hello_World"), 11, 10, 10, QStringLiteral("Hello_Worl"));
// Verify that character insertion operations were merged together into a single undo command
m_document->undo();

View File

@ -26,78 +26,389 @@ private Q_SLOTS:
void testCommit();
void testKeystroke();
void testTimeKeystrokeNoCommit();
void testTimeKeystrokeNoCommit_data();
void testTimeKeystrokeCommit();
void testTimeKeystrokeCommit_data();
void testSpecialKeystrokeNoCommit();
void testSpecialKeystrokeNoCommit_data();
void testSpecialKeystrokeCommit();
void testSpecialKeystrokeCommit_data();
void testPercentKeystrokeNoCommit();
void testPercentKeystrokeNoCommit_data();
void testPercentKeystrokeCommit();
void testPercentKeystrokeCommit_data();
void testNumberKeystrokeNoCommit();
void testNumberKeystrokeNoCommit_data();
void testNumberKeystrokeCommit();
void testNumberKeystrokeCommit_data();
private:
Okular::Document *m_document;
QMap<QString, Okular::FormField *> m_fields;
Okular::Document *m_genericTestsDocument;
QMap<QString, Okular::FormField *> m_genericTestsFields;
Okular::Document *m_AFMethodsTestsDocument;
QMap<QString, Okular::FormField *> m_AFMethodsTestsFields;
};
void KeystrokeTest::initTestCase()
{
Okular::SettingsCore::instance(QStringLiteral("keystroketest"));
m_document = new Okular::Document(nullptr);
m_genericTestsDocument = new Okular::Document(nullptr);
// Force consistent locale
QLocale locale(QStringLiteral("en_US"));
QLocale::setDefault(locale);
const QString testFile = QStringLiteral(KDESRCDIR "data/keystroketest.pdf");
const QString genericTestFile = QStringLiteral(KDESRCDIR "data/keystroketest.pdf");
QMimeDatabase db;
const QMimeType mime = db.mimeTypeForFile(testFile);
QCOMPARE(m_document->openDocument(testFile, QUrl(), mime), Okular::Document::OpenSuccess);
const QMimeType genericTestMime = db.mimeTypeForFile(genericTestFile);
QCOMPARE(m_genericTestsDocument->openDocument(genericTestFile, QUrl(), genericTestMime), Okular::Document::OpenSuccess);
const Okular::Page *page = m_document->page(0);
const QList<Okular::FormField *> pageFormFields = page->formFields();
for (Okular::FormField *ff : pageFormFields) {
m_fields.insert(ff->name(), ff);
const Okular::Page *genericTestPage = m_genericTestsDocument->page(0);
const QList<Okular::FormField *> genericTestPageFormFields = genericTestPage->formFields();
for (Okular::FormField *ff : genericTestPageFormFields) {
m_genericTestsFields.insert(ff->name(), ff);
}
m_AFMethodsTestsDocument = new Okular::Document(nullptr);
const QString AFMethodsTestFile = QStringLiteral(KDESRCDIR "data/formattest.pdf");
const QMimeType AFMethodsTestMime = db.mimeTypeForFile(AFMethodsTestFile);
QCOMPARE(m_AFMethodsTestsDocument->openDocument(AFMethodsTestFile, QUrl(), AFMethodsTestMime), Okular::Document::OpenSuccess);
const Okular::Page *AFMethodsTestPage = m_AFMethodsTestsDocument->page(0);
const QList<Okular::FormField *> AFMethodsTestPageFormFields = AFMethodsTestPage->formFields();
for (Okular::FormField *ff : AFMethodsTestPageFormFields) {
m_AFMethodsTestsFields.insert(ff->name(), ff);
}
}
void KeystrokeTest::testCommit()
{
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_fields[QStringLiteral("field2")]);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_genericTestsFields[QStringLiteral("field2")]);
// text that will be accepted
fft->setText(QStringLiteral("Lorem ipsum"));
m_document->processKeystrokeCommitAction(fft->additionalAction(Okular::FormField::FieldModified), fft);
m_genericTestsDocument->processKeystrokeCommitAction(fft->additionalAction(Okular::FormField::FieldModified), fft);
QCOMPARE(fft->text(), QStringLiteral("Lorem ipsum"));
// text that will be rejected
fft->setText(QStringLiteral("foo"));
m_document->processKeystrokeCommitAction(fft->additionalAction(Okular::FormField::FieldModified), fft);
m_genericTestsDocument->processKeystrokeCommitAction(fft->additionalAction(Okular::FormField::FieldModified), fft);
QEXPECT_FAIL("", "reset to commited value not implemented", Continue);
QCOMPARE(fft->text(), QStringLiteral("Lorem ipsum"));
}
void KeystrokeTest::testKeystroke()
{
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_fields[QStringLiteral("field3")]);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_genericTestsFields[QStringLiteral("field3")]);
// accept
m_document->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("hello"), 0, 0);
m_genericTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("hello"), 0, 0);
QCOMPARE(fft->text(), QStringLiteral("hello"));
// accept
m_document->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("e"), 0, 5);
m_genericTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("e"), 0, 5);
QCOMPARE(fft->text(), QStringLiteral("e"));
// accept
m_document->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("ee"), 1, 1);
m_genericTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("ee"), 1, 1);
QCOMPARE(fft->text(), QStringLiteral("ee"));
// accept
m_document->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("eee"), 2, 2);
m_genericTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("eee"), 2, 2);
QCOMPARE(fft->text(), QStringLiteral("eee"));
// reject
m_document->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("eeef"), 3, 3);
m_genericTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, QStringLiteral("eeef"), 3, 3);
QCOMPARE(fft->text(), QStringLiteral("eee"));
}
void KeystrokeTest::testTimeKeystrokeNoCommit()
{
QFETCH(QString, fieldName);
QFETCH(QString, text);
QFETCH(int, selStart);
QFETCH(int, selEnd);
QFETCH(QString, result);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_AFMethodsTestsFields[fieldName]);
m_AFMethodsTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, text, selStart, selEnd);
QCOMPARE(fft->text(), result);
}
void KeystrokeTest::testTimeKeystrokeNoCommit_data()
{
QTest::addColumn<QString>("fieldName");
QTest::addColumn<QString>("text");
QTest::addColumn<int>("selStart");
QTest::addColumn<int>("selEnd");
QTest::addColumn<QString>("result");
QTest::newRow("AM") << QStringLiteral("time1") << QStringLiteral("am") << 0 << 0 << QStringLiteral("am");
QTest::newRow("PM") << QStringLiteral("time1") << QStringLiteral("pm") << 0 << 2 << QStringLiteral("pm");
QTest::newRow("hh:mm") << QStringLiteral("time1") << QStringLiteral("20:08") << 0 << 2 << QStringLiteral("20:08");
QTest::newRow("hh:mm:ss") << QStringLiteral("time1") << QStringLiteral("20:08:04") << 0 << 5 << QStringLiteral("20:08:04");
QTest::newRow("hh:mm pm") << QStringLiteral("time1") << QStringLiteral("20:08 pm") << 5 << 8 << QStringLiteral("20:08 pm");
QTest::newRow("other characters") << QStringLiteral("time1") << QStringLiteral("alien") << 0 << 9 << QStringLiteral("20:08 pm");
// TODO add more tests for rejecting strings
}
void KeystrokeTest::testTimeKeystrokeCommit()
{
QFETCH(QString, fieldName);
QFETCH(QString, text);
QFETCH(QString, result);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_AFMethodsTestsFields[fieldName]);
fft->setText(text);
m_AFMethodsTestsDocument->processKeystrokeCommitAction(fft->additionalAction(Okular::FormField::FieldModified), fft);
QCOMPARE(fft->text(), result);
}
void KeystrokeTest::testTimeKeystrokeCommit_data()
{
QTest::addColumn<QString>("fieldName");
QTest::addColumn<QString>("text");
QTest::addColumn<QString>("result");
QTest::newRow("hh:mm") << QStringLiteral("time1") << QStringLiteral("20:08") << QStringLiteral("20:08");
QTest::newRow("hh:mm:ss") << QStringLiteral("time1") << QStringLiteral("20:08:12") << QStringLiteral("20:08:12");
QTest::newRow("hh:m:s") << QStringLiteral("time1") << QStringLiteral("20:0:1") << QStringLiteral("20:0:1");
QTest::newRow("hh:mm:ss am") << QStringLiteral("time1") << QStringLiteral("20:08:12 am") << QStringLiteral("20:08:12 am");
}
void KeystrokeTest::testSpecialKeystrokeNoCommit()
{
QFETCH(QString, fieldName);
QFETCH(QString, text);
QFETCH(int, selStart);
QFETCH(int, selEnd);
QFETCH(QString, result);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_AFMethodsTestsFields[fieldName]);
m_AFMethodsTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, text, selStart, selEnd);
QCOMPARE(fft->text(), result);
}
void KeystrokeTest::testSpecialKeystrokeNoCommit_data()
{
QTest::addColumn<QString>("fieldName");
QTest::addColumn<QString>("text");
QTest::addColumn<int>("selStart");
QTest::addColumn<int>("selEnd");
QTest::addColumn<QString>("result");
// zip code
QTest::newRow("zip accept") << QStringLiteral("CEP") << QStringLiteral("12345") << 0 << 0 << QStringLiteral("12345");
QTest::newRow("zip reject/extra length") << QStringLiteral("CEP") << QStringLiteral("123456") << 5 << 5 << QStringLiteral("12345");
QTest::newRow("zip reject/invalid char") << QStringLiteral("CEP") << QStringLiteral("abcd") << 0 << 5 << QStringLiteral("12345");
// zip+4 code
QTest::newRow("zip+4 accept/all nums") << QStringLiteral("8Digits") << QStringLiteral("123456789") << 0 << 0 << QStringLiteral("123456789");
QTest::newRow("zip+4 accept/. as sep") << QStringLiteral("8Digits") << QStringLiteral("12345.67") << 0 << 9 << QStringLiteral("12345.67");
QTest::newRow("zip+4 accept/- as separator") << QStringLiteral("8Digits") << QStringLiteral("12345-67") << 0 << 8 << QStringLiteral("12345-67");
QTest::newRow("zip+4 accept/' ' as separator partial") << QStringLiteral("8Digits") << QStringLiteral("123 6789") << 0 << 8 << QStringLiteral("123 6789");
QTest::newRow("zip+4 reject/more chars after separator") << QStringLiteral("8Digits") << QStringLiteral("123 67890") << 8 << 8 << QStringLiteral("123 6789");
QTest::newRow("zip+4 reject/invalid char") << QStringLiteral("8Digits") << QStringLiteral("123 6789abcd") << 8 << 8 << QStringLiteral("123 6789");
// phone
QTest::newRow("phone accept/all nums") << QStringLiteral("telefone") << QStringLiteral("1234567890") << 0 << 0 << QStringLiteral("1234567890");
QTest::newRow("phone accept/parenthesis") << QStringLiteral("telefone") << QStringLiteral("(123 45") << 0 << 10 << QStringLiteral("(123 45");
QTest::newRow("phone accept/' ' and hyphen both") << QStringLiteral("telefone") << QStringLiteral("123-456 7890") << 0 << 7 << QStringLiteral("123-456 7890");
QTest::newRow("phone accept/. as sep") << QStringLiteral("telefone") << QStringLiteral("123.456.7890") << 0 << 12 << QStringLiteral("123.456.7890");
QTest::newRow("phone reject/many sep") << QStringLiteral("telefone") << QStringLiteral("1-23-45-67") << 0 << 12 << QStringLiteral("123.456.7890");
QTest::newRow("phone reject/incorrect parenthesis") << QStringLiteral("telefone") << QStringLiteral("(1234)") << 0 << 12 << QStringLiteral("123.456.7890");
QTest::newRow("phone reject/incorrect spaces") << QStringLiteral("telefone") << QStringLiteral("123 56") << 0 << 12 << QStringLiteral("123.456.7890");
QTest::newRow("phone reject/invalid chars") << QStringLiteral("telefone") << QStringLiteral("abcd") << 0 << 12 << QStringLiteral("123.456.7890");
QTest::newRow("phone reject/exceeding length") << QStringLiteral("telefone") << QStringLiteral("123.456.78901") << 12 << 12 << QStringLiteral("123.456.7890");
// ssn
QTest::newRow("ssn accept/all nums") << QStringLiteral("CPF") << QStringLiteral("123456789") << 0 << 0 << QStringLiteral("123456789");
QTest::newRow("ssn accept/' ' and - as sep") << QStringLiteral("CPF") << QStringLiteral("123 45-6789") << 0 << 9 << QStringLiteral("123 45-6789");
QTest::newRow("ssn accept/. as sep") << QStringLiteral("CPF") << QStringLiteral("123.45.6789") << 0 << 11 << QStringLiteral("123.45.6789");
QTest::newRow("ssn reject/too many seps") << QStringLiteral("CPF") << QStringLiteral("123.45..6789") << 0 << 11 << QStringLiteral("123.45.6789");
QTest::newRow("ssn reject/exceeding length") << QStringLiteral("CPF") << QStringLiteral("123.45.67890") << 11 << 11 << QStringLiteral("123.45.6789");
QTest::newRow("ssn reject/invalid chars") << QStringLiteral("CPF") << QStringLiteral("abcd") << 0 << 11 << QStringLiteral("123.45.6789");
}
void KeystrokeTest::testSpecialKeystrokeCommit()
{
QFETCH(QString, fieldName);
QFETCH(QString, text);
QFETCH(QString, result);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_AFMethodsTestsFields[fieldName]);
fft->setText(text);
m_AFMethodsTestsDocument->processKeystrokeCommitAction(fft->additionalAction(Okular::FormField::FieldModified), fft);
QCOMPARE(fft->text(), result);
}
void KeystrokeTest::testSpecialKeystrokeCommit_data()
{
QTest::addColumn<QString>("fieldName");
QTest::addColumn<QString>("text");
QTest::addColumn<QString>("result");
// zip
QTest::newRow("zip accept") << QStringLiteral("CEP") << QStringLiteral("12345") << QStringLiteral("12345");
// zip+4
QTest::newRow("zip+4 accept/all nums") << QStringLiteral("8Digits") << QStringLiteral("123456789") << QStringLiteral("123456789");
QTest::newRow("zip+4 accept/hyphen as sep") << QStringLiteral("8Digits") << QStringLiteral("12345-6789") << QStringLiteral("12345-6789");
QTest::newRow("zip+4 accept/. as sep") << QStringLiteral("8Digits") << QStringLiteral("12345.6789") << QStringLiteral("12345.6789");
QTest::newRow("zip+4 accept/' ' as sep") << QStringLiteral("8Digits") << QStringLiteral("12345 6789") << QStringLiteral("12345 6789");
// phone
QTest::newRow("phone accept/all nums") << QStringLiteral("telefone") << QStringLiteral("1234567890") << QStringLiteral("1234567890");
QTest::newRow("phone accept/with parenthesis") << QStringLiteral("telefone") << QStringLiteral("(123)4567890") << QStringLiteral("(123)4567890");
QTest::newRow("phone accept/hyphen, spaces and parenthesis") << QStringLiteral("telefone") << QStringLiteral("(123) 456-7890") << QStringLiteral("(123) 456-7890");
QTest::newRow("phone accept/only hyphens") << QStringLiteral("telefone") << QStringLiteral("123-456-7890") << QStringLiteral("123-456-7890");
QTest::newRow("phone accept/only dots") << QStringLiteral("telefone") << QStringLiteral("123.456.7890") << QStringLiteral("123.456.7890");
// ssn
QTest::newRow("ssn accept/all nums") << QStringLiteral("CPF") << QStringLiteral("123456789") << QStringLiteral("123456789");
QTest::newRow("ssn accept/hyphens") << QStringLiteral("CPF") << QStringLiteral("123-45-6789") << QStringLiteral("123-45-6789");
QTest::newRow("ssn accept/hyphens and dots") << QStringLiteral("CPF") << QStringLiteral("123-45.6789") << QStringLiteral("123-45.6789");
QTest::newRow("ssn accept/spaces") << QStringLiteral("CPF") << QStringLiteral("123 45 6789") << QStringLiteral("123 45 6789");
// TODO: Add more tests for rejecting strings when feature to restore committed values is implemented.
}
void KeystrokeTest::testPercentKeystrokeNoCommit()
{
QFETCH(QString, fieldName);
QFETCH(QString, text);
QFETCH(int, selStart);
QFETCH(int, selEnd);
QFETCH(QString, result);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_AFMethodsTestsFields[fieldName]);
m_AFMethodsTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, text, selStart, selEnd);
QCOMPARE(fft->text(), result);
}
void KeystrokeTest::testPercentKeystrokeNoCommit_data()
{
QTest::addColumn<QString>("fieldName");
QTest::addColumn<QString>("text");
QTest::addColumn<int>("selStart");
QTest::addColumn<int>("selEnd");
QTest::addColumn<QString>("result");
QTest::newRow("no decimal separator/accept") << QStringLiteral("pct1") << QStringLiteral("123") << 0 << 0 << QStringLiteral("123");
QTest::newRow(". used as decimal separator/accept") << QStringLiteral("pct1") << QStringLiteral("1.21") << 1 << 3 << QStringLiteral("1.21");
QTest::newRow(", used as decimal separator/accept") << QStringLiteral("pct3") << QStringLiteral("1,21") << 0 << 0 << QStringLiteral("1,21");
QTest::newRow("+ sign used as prefix/accept") << QStringLiteral("pct1") << QStringLiteral("+1.21") << 0 << 4 << QStringLiteral("+1.21");
QTest::newRow("- sign used as prefix/accept") << QStringLiteral("pct1") << QStringLiteral("-1.2") << 0 << 5 << QStringLiteral("-1.2");
QTest::newRow("use multiple decimal separator/reject") << QStringLiteral("pct1") << QStringLiteral("-1.2.1") << 4 << 4 << QStringLiteral("-1.2");
QTest::newRow("use alphabets/reject") << QStringLiteral("pct1") << QStringLiteral("-1.2abc") << 4 << 4 << QStringLiteral("-1.2");
QTest::newRow("use multiple - sign/reject") << QStringLiteral("pct1") << QStringLiteral("-1.2-1") << 4 << 4 << QStringLiteral("-1.2");
QTest::newRow("use , in pct1/reject") << QStringLiteral("pct1") << QStringLiteral("-1,2") << 0 << 4 << QStringLiteral("-1.2");
QTest::newRow("use . in pct3/reject") << QStringLiteral("pct3") << QStringLiteral("1.2") << 0 << 4 << QStringLiteral("1,21");
}
void KeystrokeTest::testPercentKeystrokeCommit()
{
QFETCH(QString, fieldName);
QFETCH(QString, text);
QFETCH(QString, result);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_AFMethodsTestsFields[fieldName]);
fft->setText(text);
m_AFMethodsTestsDocument->processKeystrokeCommitAction(fft->additionalAction(Okular::FormField::FieldModified), fft);
QCOMPARE(fft->text(), result);
}
void KeystrokeTest::testPercentKeystrokeCommit_data()
{
QTest::addColumn<QString>("fieldName");
QTest::addColumn<QString>("text");
QTest::addColumn<QString>("result");
QTest::newRow("no decimal separator/accept") << QStringLiteral("pct1") << QStringLiteral("123") << QStringLiteral("123");
QTest::newRow(". used as decimal separator/accept") << QStringLiteral("pct1") << QStringLiteral("1.21") << QStringLiteral("1.21");
QTest::newRow(", used as decimal separator/accept") << QStringLiteral("pct3") << QStringLiteral("1,21") << QStringLiteral("1,21");
QTest::newRow("+ sign used as prefix/accept") << QStringLiteral("pct1") << QStringLiteral("+1.21") << QStringLiteral("+1.21");
QTest::newRow("- sign used as prefix/accept") << QStringLiteral("pct1") << QStringLiteral("-1.2") << QStringLiteral("-1.2");
// TODO add more tests for rejecting strings
}
void KeystrokeTest::testNumberKeystrokeNoCommit()
{
QFETCH(QString, fieldName);
QFETCH(QString, text);
QFETCH(int, selStart);
QFETCH(int, selEnd);
QFETCH(QString, result);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_AFMethodsTestsFields[fieldName]);
m_AFMethodsTestsDocument->processKeystrokeAction(fft->additionalAction(Okular::FormField::FieldModified), fft, text, selStart, selEnd);
QCOMPARE(fft->text(), result);
}
void KeystrokeTest::testNumberKeystrokeNoCommit_data()
{
QTest::addColumn<QString>("fieldName");
QTest::addColumn<QString>("text");
QTest::addColumn<int>("selStart");
QTest::addColumn<int>("selEnd");
QTest::addColumn<QString>("result");
QTest::newRow("no decimal separator/accept") << QStringLiteral("number1") << QStringLiteral("123") << 0 << 0 << QStringLiteral("123");
QTest::newRow(". used as decimal separator/accept") << QStringLiteral("number1") << QStringLiteral("1.21") << 1 << 3 << QStringLiteral("1.21");
QTest::newRow(", used as decimal separator/accept") << QStringLiteral("number3") << QStringLiteral("1,21") << 0 << 0 << QStringLiteral("1,21");
QTest::newRow("+ sign used as prefix/accept") << QStringLiteral("number1") << QStringLiteral("+1.21") << 0 << 4 << QStringLiteral("+1.21");
QTest::newRow("- sign used as prefix/accept") << QStringLiteral("number1") << QStringLiteral("-1.2") << 0 << 5 << QStringLiteral("-1.2");
QTest::newRow("use multiple decimal separator/reject") << QStringLiteral("number1") << QStringLiteral("-1.2.1") << 4 << 4 << QStringLiteral("-1.2");
QTest::newRow("use alphabets/reject") << QStringLiteral("number1") << QStringLiteral("-1.2abc") << 4 << 4 << QStringLiteral("-1.2");
QTest::newRow("use multiple - sign/reject") << QStringLiteral("number1") << QStringLiteral("-1.2-1") << 4 << 4 << QStringLiteral("-1.2");
QTest::newRow("use , in pct1/reject") << QStringLiteral("number1") << QStringLiteral("-1,2") << 0 << 4 << QStringLiteral("-1.2");
QTest::newRow("use . in pct3/reject") << QStringLiteral("number3") << QStringLiteral("1.2") << 0 << 4 << QStringLiteral("1,21");
}
void KeystrokeTest::testNumberKeystrokeCommit()
{
QFETCH(QString, fieldName);
QFETCH(QString, text);
QFETCH(QString, result);
Okular::FormFieldText *fft = reinterpret_cast<Okular::FormFieldText *>(m_AFMethodsTestsFields[fieldName]);
fft->setText(text);
m_AFMethodsTestsDocument->processKeystrokeCommitAction(fft->additionalAction(Okular::FormField::FieldModified), fft);
QCOMPARE(fft->text(), result);
}
void KeystrokeTest::testNumberKeystrokeCommit_data()
{
QTest::addColumn<QString>("fieldName");
QTest::addColumn<QString>("text");
QTest::addColumn<QString>("result");
QTest::newRow("no decimal separator/accept") << QStringLiteral("number1") << QStringLiteral("123") << QStringLiteral("123");
QTest::newRow(". used as decimal separator/accept") << QStringLiteral("number1") << QStringLiteral("1.21") << QStringLiteral("1.21");
QTest::newRow(", used as decimal separator/accept") << QStringLiteral("number3") << QStringLiteral("1,21") << QStringLiteral("1,21");
QTest::newRow("+ sign used as prefix/accept") << QStringLiteral("number1") << QStringLiteral("+1.21") << QStringLiteral("+1.21");
QTest::newRow("- sign used as prefix/accept") << QStringLiteral("number1") << QStringLiteral("-1.2") << QStringLiteral("-1.2");
// TODO add more tests for rejecting strings
}
void KeystrokeTest::cleanupTestCase()
{
m_document->closeDocument();
delete m_document;
m_genericTestsDocument->closeDocument();
delete m_genericTestsDocument;
m_AFMethodsTestsDocument->closeDocument();
delete m_AFMethodsTestsDocument;
}
QTEST_MAIN(KeystrokeTest)

View File

@ -1366,7 +1366,7 @@ void PartTest::testSaveAsUndoStackForms()
if (ff->id() == 65537) {
QCOMPARE(ff->type(), FormField::FormText);
FormFieldText *fft = static_cast<FormFieldText *>(ff);
part.m_document->editFormText(0, fft, QStringLiteral("BlaBla"), 6, 0, 0);
part.m_document->editFormText(0, fft, QStringLiteral("BlaBla"), 6, 0, 0, QString());
} else if (ff->id() == 65538) {
QCOMPARE(ff->type(), FormField::FormButton);
FormFieldButton *ffb = static_cast<FormFieldButton *>(ff);
@ -2313,11 +2313,11 @@ void PartTest::testFieldFormatting()
QTest::mousePress(usCurrencyWidget, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
QTRY_VERIFY(usCurrencyWidget->hasFocus());
usCurrencyWidget->setText(QStringLiteral("131.234,567"));
usCurrencyWidget->setText(QStringLiteral("131234.567"));
QTest::mousePress(deCurrencyWidget, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
QTRY_VERIFY(deCurrencyWidget->hasFocus());
// Check that the internal text still contains it.
QCOMPARE(ff_us->text(), QStringLiteral("131.234,567"));
QCOMPARE(ff_us->text(), QStringLiteral("131234.567"));
// Just check that the text does not match the internal text.
// We don't check for a concrete value to keep NaN handling flexible
@ -2327,7 +2327,7 @@ void PartTest::testFieldFormatting()
QTest::mousePress(usCurrencyWidget, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
QTRY_VERIFY(usCurrencyWidget->hasFocus());
usCurrencyWidget->setText(QStringLiteral("1,234.567"));
usCurrencyWidget->setText(QStringLiteral("1234.567"));
QTest::mousePress(deCurrencyWidget, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
QTRY_VERIFY(deCurrencyWidget->hasFocus());
@ -2337,12 +2337,12 @@ void PartTest::testFieldFormatting()
QCOMPARE(sumCurrencyWidget->text(), QStringLiteral("1.234,57€"));
// Set a text in the de field
deCurrencyWidget->setText(QStringLiteral("1,123,234.567"));
deCurrencyWidget->setText(QStringLiteral("1123234,567"));
QTest::mousePress(usCurrencyWidget, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
QTRY_VERIFY(usCurrencyWidget->hasFocus());
QCOMPARE(deCurrencyWidget->text(), QStringLiteral("1.123.234,57 €"));
QCOMPARE(ff_de->text(), QStringLiteral("1,123,234.567"));
QCOMPARE(ff_de->text(), QStringLiteral("1123234,567"));
QCOMPARE(sumCurrencyWidget->text(), QStringLiteral("1.124.469,13€"));
QCOMPARE(ff_sum->text(), QStringLiteral("1,124,469.1340000000782310962677002"));
}

View File

@ -33,6 +33,7 @@ public:
ActionPrivate &operator=(const ActionPrivate &) = delete;
QVariant m_nativeId;
std::shared_ptr<const void> m_nativeHandle;
QVector<Action *> m_nextActions;
};
@ -69,6 +70,17 @@ QVector<Action *> Action::nextActions() const
return d->m_nextActions;
}
void Action::setNativeHandle(std::shared_ptr<const void> ptr)
{
Q_D(Action);
d->m_nativeHandle = ptr;
}
const void *Action::nativeHandle() const
{
Q_D(const Action);
return d->m_nativeHandle.get();
}
void Action::setNextActions(const QVector<Action *> &actions)
{
Q_D(Action);

View File

@ -82,17 +82,40 @@ public:
* object, if any.
*
* @note Okular makes no use of this
*
* @deprecated use @ref setNativeHandle
* @since 0.15 (KDE 4.9)
*/
void setNativeId(const QVariant &id);
OKULARCORE_DEPRECATED void setNativeId(const QVariant &id);
/**
* Returns the "native" id of the action.
*
* @since 0.15 (KDE 4.9)
*
*/
QVariant nativeId() const;
OKULARCORE_DEPRECATED QVariant nativeId() const;
/**
* Sets "native" handle for the action
*
* This is a opaque datapointer used for the action by the
* Generator. The generator is responsible for setting it
* to something sensible and also for interpreting it.
*
* The handle is deleted according to rules of the
* shared pointer.
*
* @note Okular (core/part/shell/...) itself makes no use of this
* @since 24.05.2
*/
void setNativeHandle(std::shared_ptr<const void> handle);
/**
* @returns the native handle pointer
*
* @since 24.05.2
*/
const void *nativeHandle() const;
/**
* Returns the next actions to be executed after.

View File

@ -22,6 +22,7 @@
// local includes
#include "document_p.h"
#include "observer.h"
#include "page.h"
using namespace Okular;
@ -398,10 +399,13 @@ QHash<QUrl, QString>::iterator BookmarkManager::Private::bookmarkFind(const QUrl
void BookmarkManager::addBookmark(int page)
{
if (page >= 0 && page < (int)d->document->m_pagesVector.count()) {
if (setPageBookmark(page))
foreachObserver(notifyPageChanged(page, DocumentObserver::Bookmark));
if (isBookmarked(page)) {
return;
}
DocumentViewport vp;
vp.pageNumber = page;
addBookmark(vp);
}
void BookmarkManager::addBookmark(const DocumentViewport &vp)
@ -453,10 +457,15 @@ bool BookmarkManager::addBookmark(const QUrl &documentUrl, const Okular::Documen
// name '#p' where p is the page number where the bookmark is located.
// if there's more than one bookmark per page, give the name '#p-n'
// where n is the index of this bookmark among the ones of its page.
if (count > 0) {
newtitle = QStringLiteral("#%1-%2").arg(vp.pageNumber + 1).arg(count);
const QString pageLabel = d->document->m_parent->page(vp.pageNumber)->label();
newtitle = QStringLiteral("#");
if (pageLabel.isNull()) {
newtitle += QString::number(vp.pageNumber + 1);
} else {
newtitle = QStringLiteral("#%1").arg(vp.pageNumber + 1);
newtitle += pageLabel;
}
if (count > 0) {
newtitle += QStringLiteral("-") + QString::number(count);
}
} else {
newtitle = title;
@ -651,37 +660,6 @@ void BookmarkManager::setUrl(const QUrl &url)
}
}
bool BookmarkManager::setPageBookmark(int page)
{
KBookmarkGroup thebg;
QHash<QUrl, QString>::iterator it = d->bookmarkFind(d->url, true, &thebg);
Q_ASSERT(it != d->knownFiles.end());
bool found = false;
bool added = false;
for (KBookmark bm = thebg.first(); !found && !bm.isNull(); bm = thebg.next(bm)) {
if (bm.isSeparator() || bm.isGroup()) {
continue;
}
DocumentViewport vp(bm.url().fragment(QUrl::FullyDecoded));
if (vp.isValid() && vp.pageNumber == page) {
found = true;
}
}
if (!found) {
d->urlBookmarks[page]++;
DocumentViewport vp;
vp.pageNumber = page;
QUrl newurl = d->url;
newurl.setFragment(vp.toString(), QUrl::DecodedMode);
thebg.addBookmark(QLatin1String("#") + QString::number(vp.pageNumber + 1), newurl, QString());
added = true;
d->manager.emitChanged(thebg);
}
return added;
}
bool BookmarkManager::removePageBookmark(int page)
{
KBookmarkGroup thebg;

View File

@ -197,7 +197,6 @@ private:
explicit BookmarkManager(DocumentPrivate *document);
void setUrl(const QUrl &url);
bool setPageBookmark(int page);
bool removePageBookmark(int page);
Q_DISABLE_COPY(BookmarkManager)

View File

@ -2562,7 +2562,9 @@ Document::OpenResult Document::openDocument(const QString &docFile, const QUrl &
if (!docScripts.isEmpty()) {
d->m_scripter = new Scripter(d);
for (const QString &docscript : docScripts) {
d->m_scripter->execute(JavaScript, docscript);
const Okular::ScriptAction *linkScript = new Okular::ScriptAction(Okular::JavaScript, docscript);
std::shared_ptr<Event> event = Event::createDocEvent(Event::DocOpen);
d->executeScriptEvent(event, linkScript);
}
}
@ -3965,6 +3967,12 @@ void Document::editFormText(int pageNumber, Okular::FormFieldText *form, const Q
d->m_undoStack->push(uc);
}
void Document::editFormText(int pageNumber, Okular::FormFieldText *form, const QString &newContents, int newCursorPos, int prevCursorPos, int prevAnchorPos, const QString &oldContents)
{
QUndoCommand *uc = new EditFormTextCommand(this->d, form, pageNumber, newContents, newCursorPos, oldContents, prevCursorPos, prevAnchorPos);
d->m_undoStack->push(uc);
}
void Document::editFormList(int pageNumber, FormFieldChoice *form, const QList<int> &newChoices)
{
const QList<int> prevChoices = form->currentChoices();
@ -4356,27 +4364,28 @@ void Document::processFormatAction(const Action *action, Okular::FormFieldText *
}
}
QString DocumentPrivate::diff(const QString &oldVal, const QString &newVal)
QString DocumentPrivate::evaluateKeystrokeEventChange(const QString &oldVal, const QString &newVal, int selStart, int selEnd)
{
// We need to consider unicode surrogate pairs and others so working
// with QString directly, even with the private QStringIterator is
// not that simple to get right
// so let's just convert to ucs4
// also, given that toUcs4 is either a QList or a QVector depending on
// qt version, let's try keep it very auto-typed to ease Qt6 porting
/*
The change needs to be evaluated here in accordance with code points.
selStart and selEnd parameters passed to this method should be been adjusted accordingly.
auto oldUcs4 = oldVal.toStdU32String();
auto newUcs4 = newVal.toStdU32String();
for (size_t i = 0; i < std::min(oldUcs4.size(), newUcs4.size()); i++) {
if (oldUcs4.at(i) != newUcs4.at(i)) {
return QString::fromUcs4(std::u32string_view {newUcs4}.substr(i).data(), newUcs4.size() - i);
}
Since QString methods work in terms of code units, we convert the strings to UTF-32.
*/
std::u32string oldUcs4 = oldVal.toStdU32String();
std::u32string newUcs4 = newVal.toStdU32String();
if (selStart < 0 || selEnd < 0 || (selEnd - selStart) + (static_cast<int>(newUcs4.size()) - static_cast<int>(oldUcs4.size())) < 0) {
// Prevent Okular from crashing if incorrect parameters are passed or some bug causes incorrect calculation
return {};
}
if (oldUcs4.size() < newUcs4.size()) {
return QString::fromUcs4(std::u32string_view {newUcs4}.substr(oldUcs4.size()).data(), newUcs4.size() - oldUcs4.size());
const size_t changeLength = (selEnd - selStart) + (newUcs4.size() - oldUcs4.size());
auto subview = std::u32string_view {newUcs4}.substr(selStart, changeLength);
if (subview.empty()) {
// If subview is empty (in scenarios when selStart is at end and changeLength is non-zero) fromUcs4 returns \u0000.
// This should not happen, but just a guard.
return {};
}
return {};
return QString::fromUcs4(subview.data(), changeLength);
}
void Document::processKeystrokeAction(const Action *action, Okular::FormFieldText *fft, const QVariant &newValue, int prevCursorPos, int prevAnchorPos)
@ -4394,18 +4403,51 @@ void Document::processKeystrokeAction(const Action *action, Okular::FormFieldTex
}
std::shared_ptr<Event> event = Event::createKeystrokeEvent(fft, d->m_pagesVector[foundPage]);
event->setChange(DocumentPrivate::diff(fft->text(), newValue.toString()));
int selStart;
if (fft->text().size() - newValue.toString().size() == 1 && prevCursorPos == prevAnchorPos) {
// consider a one character removal as selection of that character and then its removal.
selStart = prevCursorPos - 1;
} else {
selStart = std::min(prevCursorPos, prevAnchorPos);
}
/* Set the selStart and selEnd event properties
QString using UTF-16 counts a code point as made up of 1 or 2 16-bit code units.
When encoded using 2 code units, the units are referred to as surrogate pairs.
selectionStart() and selectionEnd() methods evaluate prevCursorPos and prevAnchorPos based on code units during selection.
While this unit-based evaulation is suitable for detecting changes, for providing consistency with Adobe Reader for values of selStart and selEnd,
it would be best to evaluate in terms of code points rather than the code units.
To correct the values of selStart and selEnd accordingly, we iterate over the code units. If a surrogate pair is encountered, then selStart and
selEnd are accordingly decremented.
*/
int selStart = std::min(prevCursorPos, prevAnchorPos);
int selEnd = std::max(prevCursorPos, prevAnchorPos);
int codeUnit;
int initialSelStart = selStart;
int initialSelEnd = selEnd;
for (codeUnit = 0; codeUnit < initialSelStart && codeUnit < fft->text().size(); codeUnit++) {
if (fft->text().at(codeUnit).isHighSurrogate()) {
// skip the low surrogate and decrement selStart and selEnd
codeUnit++;
selStart--;
selEnd--;
}
}
for (; codeUnit < initialSelEnd && codeUnit < fft->text().size(); codeUnit++) {
if (fft->text().at(codeUnit).isHighSurrogate()) {
// skip the low surrogate and decrement selEnd
codeUnit++;
selEnd--;
}
}
std::u32string oldUcs4 = fft->text().toStdU32String();
std::u32string newUcs4 = newValue.toString().toStdU32String();
// It is necessary to count size in terms of code points rather than code units for deletion.
if (oldUcs4.size() - newUcs4.size() == 1 && selStart == selEnd) {
// consider a one character removal as selection of that character and then its removal.
selStart--;
}
event->setSelStart(selStart);
event->setSelEnd(selEnd);
// Use the corrected selStart and selEnd for evaluating the change.
event->setChange(DocumentPrivate::evaluateKeystrokeEventChange(fft->text(), newValue.toString(), selStart, selEnd));
const ScriptAction *linkscript = static_cast<const ScriptAction *>(action);
d->executeScriptEvent(event, linkscript);

View File

@ -678,9 +678,9 @@ public:
* Processes the given keystroke @p action on @p fft.
*
* @since 1.9
* @deprecated
* @deprecated use processKeystrokeAction(const Action *, Okular::FormFieldText *, const QVariant &, int, int)
*/
void processKeystrokeAction(const Action *action, Okular::FormFieldText *fft, const QVariant &newValue);
OKULARCORE_DEPRECATED void processKeystrokeAction(const Action *action, Okular::FormFieldText *fft, const QVariant &newValue);
/**
* Processes the given keystroke @p action on @p fft between the two positions @p prevCursorPos and @p prevAnchorPos
@ -1083,8 +1083,19 @@ public Q_SLOTS:
* The new text cursor position (@p newCursorPos), previous text cursor position (@p prevCursorPos),
* and previous cursor anchor position will be restored by the undo / redo commands.
* @since 0.17 (KDE 4.11)
*
* @deprecated use editFormText(int pageNumber, Okular::FormFieldText *form, const QString &newContents,
* int newCursorPos, int prevCursorPos, int prevAnchorPos, const QString &oldContents)
*/
void editFormText(int pageNumber, Okular::FormFieldText *form, const QString &newContents, int newCursorPos, int prevCursorPos, int prevAnchorPos);
OKULARCORE_DEPRECATED void editFormText(int pageNumber, Okular::FormFieldText *form, const QString &newContents, int newCursorPos, int prevCursorPos, int prevAnchorPos);
/**
* Edit the text contents of the specified @p form on page @p page to be @p newContents where
* previous contents are @p oldContents for undo/redo commands. The new text cursor position (@p newCursorPos),
* previous text cursor position (@p prevCursorPos), and previous cursor anchor position will be restored by the undo / redo commands.
* @since 24.08
*/
void editFormText(int pageNumber, Okular::FormFieldText *form, const QString &newContents, int newCursorPos, int prevCursorPos, int prevAnchorPos, const QString &oldContents);
/**
* Edit the selected list entries in @p form on page @p page to be @p newChoices.

View File

@ -232,7 +232,7 @@ public:
void clearAndWaitForRequests();
OKULARCORE_EXPORT static QString diff(const QString &oldVal, const QString &newVal);
OKULARCORE_EXPORT static QString evaluateKeystrokeEventChange(const QString &oldVal, const QString &newVal, int selStart, int selEnd);
/*
* Executes a ScriptAction with the event passed as parameter.

View File

@ -19,6 +19,19 @@
/* Builtin functions for Okular's PDF JavaScript interpretation. */
/**
* Merge the last change (of a text field) with the uncommitted change
*/
function AFMergeChange( event )
{
var start, end;
if ( event.willCommit ) return event.value;
start = (event.selStart >= 0) ? event.value.substring(0, event.selStart) : "";
end = (event.selEnd >= 0 && event.selEnd <= event.value.length) ? event.value.substring(event.selEnd, event.value.length) : "";
return start + event.change + end;
}
/** AFSimple_Calculate
*
* cFunction is a string that identifies the operation.
@ -149,8 +162,33 @@ function AFNumber_Format( nDec, sepStyle, negStyle, currStyle, strCurrency, bCur
function AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend)
{
// TODO
return;
const completeValue = AFMergeChange(event);
if (!completeValue)
{
return;
}
var decSep = "\\.";
if (2 <= sepStyle && sepStyle <= 4)
{
decSep = ",";
}
if (event.willCommit)
{
const COMMIT_NUMBER_KEYSTROKE_RE_STR = "(\\+|\\-)?\\d*" + decSep + "?\\d+$";
// Check if it is a valid number with a correct decimal separator
const COMMIT_NUMBER_KEYSTROKE_RE = new RegExp(COMMIT_NUMBER_KEYSTROKE_RE_STR);
event.rc = COMMIT_NUMBER_KEYSTROKE_RE.test(completeValue);
}
else
{
const NOCOMMIT_NUMBER_KEYSTROKE_RE_STR = "^((\\+|\\-)?\\d*" + decSep + "?\\d*)$";
// Allow some flexibility while typing to allow only the decimal separator
const NOCOMMIT_NUMBER_KEYSTROKE_RE = new RegExp(NOCOMMIT_NUMBER_KEYSTROKE_RE_STR);
event.rc = NOCOMMIT_NUMBER_KEYSTROKE_RE.test(completeValue);
}
}
function AFMakeNumber(string)
@ -254,11 +292,32 @@ function AFTime_Format( ptf )
/** AFTime_Keystroke
*
* Checks if the string in event.value is valid. Not used.
* Checks if the string in event.value is valid.
*/
function AFTime_Keystroke( ptf )
{
return;
var completeValue = AFMergeChange(event);
if ( !completeValue )
{
return;
}
if ( event.willCommit )
{
const COMMIT_TIME_RE = /^(0?[0-9]|1[0-9]|2[0-3]):(0?[0-9]|[1-5][0-9])(:(0?[0-9]|[1-5][0-9]))?(\s*(pm|am))?$/i;
// HH:MM is required at minimum
// the seconds are optional to have HH:MM:SS
// the AM/PM are optional as well
// Any number of spaces are allowed between the time and AM/PM to allow for compatibility with other pdf viewers.
event.rc = COMMIT_TIME_RE.test(completeValue);
}
else
{
// during value entry, check if entry contains only allowed characters.
const ALLOWED_CHARS = "0-9:ampAMP\\s";
const ALLOWED_CHARS_TIME_RE = new RegExp(`[^${ALLOWED_CHARS}]`); // match any character not in the character set
event.rc = !ALLOWED_CHARS_TIME_RE.test(completeValue);
}
}
/** AFSpecial_Format
@ -278,7 +337,7 @@ function AFSpecial_Format( psf )
}
var ret = event.value;
ret = ret.replace(/\D/g, '');
if( psf === 1 )
ret = ret.substr( 0, 5 ) + '-' + ret.substr( 5, 4 );
@ -307,47 +366,49 @@ function AFSpecial_Format( psf )
*/
function AFSpecial_Keystroke( psf )
{
if ( !event.value )
var completeValue = AFMergeChange( event );
if ( !completeValue )
{
return;
}
var str = event.value;
if( psf === 0 )
{
if( str.length > 5 )
{
event.rc = false;
return;
}
}
const ZIP_NOCOMMIT_RE = /^\d{0,5}$/;
const ZIP4_NOCOMMIT_RE = /^\d{0,5}?( |\.|-)?\d{0,4}$/;
const PHONE_NOCOMMIT_RE = /^\(?\d{0,3}\)?( |\.|-)?\d{0,3}( |\.|-)?\d{0,4}$/; // optional "()", ".", "-" and " " are allowed during keystroke for ease of data entry
const SSN_NOCOMMIT_RE = /^\d{0,3}( |\.|-)?\d{0,2}( |\.|-)?\d{0,4}$/; // optional separators allowed during keystroke
const ZIP_COMMIT_RE = /^\d{5}$/; // 12345
const ZIP4_COMMIT_RE = /^\d{5}( |\.|-)?\d{4}$/; // 12345-6789, 12345 6789, 12345.6789
const PHONE_COMMIT_RE = /^(\d{3}|\(\d{3}\))( |\.|-)?\d{3}( |\.|-)?\d{4}$/; // 123 456 7890, (123) 456-7890, 1234567890, 123-456-7890, 123.456-7890, etc
const SSN_COMMIT_RE = /^\d{3}( |\.|-)?\d{2}( |\.|-)?\d{4}$/; // 123-45.6789, 123 45 6789, 123456789, 123-45-6789, etc
else if( psf === 1 || psf === 3 )
var verifyingRe;
switch( psf )
{
if( str.length > 9 )
// zip code
case 0:
{
event.rc = false;
return;
}
}
else if( psf === 2 )
{
if( str.length > 10 )
{
event.rc = false;
return;
}
}
for( i = 0 ; i < str.length ; ++i )
{
if( !( str[i] <= '9' && str[i] >= '0' ) )
{
event.rc = false;
return;
verifyingRe = event.willCommit ? ZIP_COMMIT_RE : ZIP_NOCOMMIT_RE;
break;
}
// zip + 4
case 1:
{
verifyingRe = event.willCommit ? ZIP4_COMMIT_RE : ZIP4_NOCOMMIT_RE;
break;
}
// phone
case 2:
{
verifyingRe = event.willCommit ? PHONE_COMMIT_RE : PHONE_NOCOMMIT_RE;
break;
}
// SSN
case 3:
{
verifyingRe = event.willCommit ? SSN_COMMIT_RE : SSN_NOCOMMIT_RE;
}
}
event.rc = verifyingRe.test(completeValue);
}
/** AFPercent_Format
@ -406,14 +467,7 @@ function AFPercent_Format( nDec, sepStyle )
function AFPercent_Keystroke( nDec, sepStyle )
{
if (event.willCommit) {
event.rc = true
} else {
// Allow only numbers plus possible separators
// TODO disallow too many separators
// TODO Make separator locale-dependen/use sepStyle properly
event.rc = !isNaN(event.change) || event.change == "." || event.change == ","
}
AFNumber_Keystroke(nDec, sepStyle);
}
app.popUpMenuEx = function() {

View File

@ -73,6 +73,8 @@ QString Event::name() const
return QStringLiteral("Validate");
case FieldMouseUp:
return QStringLiteral("MouseUp");
case DocOpen:
return QStringLiteral("Open");
case UnknownEvent:
default:
return QStringLiteral("Unknown");
@ -89,6 +91,8 @@ QString Event::type() const
case FieldValidate:
case FieldMouseUp:
return QStringLiteral("Field");
case DocOpen:
return QStringLiteral("Doc");
case UnknownEvent:
default:
return QStringLiteral("Unknown");
@ -305,3 +309,10 @@ std::shared_ptr<Event> Event::createFieldMouseUpEvent(FormField *target, Page *t
ret->setShiftModifier(QApplication::keyboardModifiers() & Qt::ShiftModifier);
return ret;
}
std::shared_ptr<Event> Event::createDocEvent(Event::EventType type)
{
std::shared_ptr<Event> ret = std::make_shared<Event>(type);
// TODO set target name.
return ret;
}

View File

@ -46,7 +46,7 @@ public:
ConsoleExec, /// < Not implemented.
DocDidPrint, /// < Not implemented.
DocDidSave, /// < Not implemented.
DocOpen, /// < Not implemented.
DocOpen, /// < This event is triggered when a document is opened. The document level script functions are scanned and any exposed scripts are executed
DocWillClose, /// < Not implemented.
DocWillPrint, /// < Not implemented.
DocWillSave, /// < Not implemented.
@ -123,6 +123,7 @@ public:
static std::shared_ptr<Event> createFormFocusEvent(FormField *target, Page *targetPage, const QString &targetName = QString());
static std::shared_ptr<Event> createFormValidateEvent(FormField *target, Page *targetPage, const QString &targetName = QString());
static std::shared_ptr<Event> createFieldMouseUpEvent(FormField *target, Page *targetPage);
static std::shared_ptr<Event> createDocEvent(Event::EventType type);
private:
class Private;

View File

@ -20,6 +20,7 @@
#include "js_event_p.h"
#include "js_field_p.h"
#include "js_fullscreen_p.h"
#include "js_global_p.h"
#include "js_ocg_p.h"
#include "js_spell_p.h"
#include "js_util_p.h"
@ -71,6 +72,7 @@ void ExecutorJSPrivate::initTypes()
m_interpreter.globalObject().setProperty(QStringLiteral("display"), m_interpreter.newQObject(new JSDisplay));
m_interpreter.globalObject().setProperty(QStringLiteral("spell"), m_interpreter.newQObject(new JSSpell));
m_interpreter.globalObject().setProperty(QStringLiteral("util"), m_interpreter.newQObject(new JSUtil));
m_interpreter.globalObject().setProperty(QStringLiteral("global"), m_interpreter.newQObject(new JSGlobal));
}
ExecutorJS::ExecutorJS(DocumentPrivate *doc)

View File

@ -71,6 +71,10 @@ QJSValue JSEvent::target() const
}
break;
}
case Event::DocOpen: {
return qjsEngine(this)->globalObject().property(QStringLiteral("Doc"));
break;
}
default: {
}
}

View File

@ -45,7 +45,7 @@ static void updateField(FormField *field)
// Field.doc
QJSValue JSField::doc() const
{
return qjsEngine(this)->globalObject();
return qjsEngine(this)->globalObject().property(QStringLiteral("Doc"));
}
// Field.name

16
core/script/js_global.cpp Normal file
View File

@ -0,0 +1,16 @@
/*
SPDX-FileCopyrightText: 2024 Pratham Gandhi <ppg.1382@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "js_global_p.h"
using namespace Okular;
JSGlobal::JSGlobal(QObject *parent)
: QObject(parent)
{
}
JSGlobal::~JSGlobal() = default;

25
core/script/js_global_p.h Normal file
View File

@ -0,0 +1,25 @@
/*
SPDX-FileCopyrightText: 2024 Pratham Gandhi <ppg.1382@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef OKULAR_SCRIPT_JS_GLOBAL_P_H
#define OKULAR_SCRIPT_JS_GLOBAL_P_H
#include <QObject>
namespace Okular
{
class JSGlobal : public QObject
{
Q_OBJECT
public:
explicit JSGlobal(QObject *parent = nullptr);
~JSGlobal() override;
};
}
#endif

View File

@ -14,6 +14,7 @@
#include <QDataStream>
#include <QFile>
#include <QLoggingCategory>
#include <array>
//#define DEBUG_TFM
@ -38,7 +39,7 @@ TeXFont_TFM::TeXFont_TFM(TeXFontDefinition *parent)
#ifdef DEBUG_TFM
qCDebug(OkularDviDebug) << "lf= " << lf << "lh= " << lh << "\nbc= " << bc << "\nec= " << ec << "\nnw= " << nw << "\nnh= " << nh << "\nnd= " << nd;
#endif
if ((bc > ec) || (ec >= TeXFontDefinition::max_num_of_chars_in_font)) {
if ((bc > ec) || (ec >= TeXFontDefinition::max_num_of_chars_in_font) || (nw >= TeXFontDefinition::max_num_of_chars_in_font) || (nh >= 16)) {
qCCritical(OkularDviDebug) << "TeXFont_TFM::TeXFont_TFM( filename=" << parent->filename << " ): The font has an invalid bc and ec entries.";
file.close();
return;
@ -53,10 +54,7 @@ TeXFont_TFM::TeXFont_TFM(TeXFontDefinition *parent)
#endif
// Width table
fix_word widthTable_in_units_of_design_size[TeXFontDefinition::max_num_of_chars_in_font];
for (fix_word &fw : widthTable_in_units_of_design_size) {
fw.value = 0;
}
std::array<fix_word, TeXFontDefinition::max_num_of_chars_in_font> widthTable_in_units_of_design_size = {};
file.seek(24 + 4 * lh + 4 * (ec - bc));
for (unsigned int i = 0; i < nw; i++) {
@ -72,10 +70,7 @@ TeXFont_TFM::TeXFont_TFM(TeXFontDefinition *parent)
}
// Height table
fix_word heightTable_in_units_of_design_size[16];
for (fix_word &fw : heightTable_in_units_of_design_size) {
fw.value = 0;
}
std::array<fix_word, 16> heightTable_in_units_of_design_size = {};
for (unsigned int i = 0; i < nh; i++) {
stream >> heightTable_in_units_of_design_size[i].value;
}

View File

@ -27,7 +27,7 @@ public:
return (double(value)) / (double(1 << 20));
}
qint32 value;
qint32 value = 0;
};
class TeXFont_TFM : public TeXFont

View File

@ -49,15 +49,11 @@ void dviRenderer::prescan_embedPS(char *cp, quint8 *beginningOfSpecialCommand)
QString command = QString::fromLocal8Bit(cp + 7);
QString include_command = command.simplified();
QString include_command = command.trimmed();
// The line is supposed to start with "..ile=", and then comes the
// filename. Figure out what the filename is and stow it away. Of
// course, this does not work if the filename contains spaces
// (already the simplified() above is wrong). If you have
// files like this, go away.
QString EPSfilename = include_command;
EPSfilename.truncate(EPSfilename.indexOf(QLatin1Char(' ')));
// Strip enclosing quotation marks which are included by some LaTeX
// macro packages (but not by others). This probably means that
@ -420,15 +416,11 @@ void dviRenderer::prescan_ParsePSFileSpecial(const QString &cp)
qCDebug(OkularDviDebug) << "epsf-special: psfile=" << cp;
#endif
QString include_command = cp.simplified();
QString include_command = cp.trimmed();
// The line is supposed to start with "..ile=", and then comes the
// filename. Figure out what the filename is and stow it away. Of
// course, this does not work if the filename contains spaces
// (already the simplified() above is wrong). If you have
// files like this, go away.
// filename. Figure out what the filename is and stow it away.
QString EPSfilename = include_command;
EPSfilename.truncate(EPSfilename.indexOf(QLatin1Char(' ')));
// Strip enclosing quotation marks which are included by some LaTeX
// macro packages (but not by others). This probably means that

View File

@ -329,15 +329,11 @@ void dviRenderer::epsf_special(const QString &cp)
qCDebug(OkularDviDebug) << "epsf-special: psfile=" << cp;
#endif
QString include_command = cp.simplified();
QString include_command = cp.trimmed();
// The line is supposed to start with "..ile=", and then comes the
// filename. Figure out what the filename is and stow it away. Of
// course, this does not work if the filename contains spaces
// (already the simplified() above is wrong). If you have
// files like this, go away.
// filename. Figure out what the filename is and stow it away.
QString EPSfilename_orig = include_command;
EPSfilename_orig.truncate(EPSfilename_orig.indexOf(QLatin1Char(' ')));
// Strip enclosing quotation marks which are included by some LaTeX
// macro packages (but not by others). This probably means that

View File

@ -16,21 +16,21 @@
#include <poppler-qt6.h>
extern Okular::Action *createLinkFromPopplerLink(const Poppler::Link *popplerLink, bool deletePopplerLink);
extern Okular::Action *createLinkFromPopplerLink(std::variant<const Poppler::Link *, std::unique_ptr<Poppler::Link>> popplerLink);
#define SET_ANNOT_ACTIONS \
setAdditionalAction(Okular::Annotation::CursorEntering, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::CursorEnteringAction).get(), false)); \
setAdditionalAction(Okular::Annotation::CursorLeaving, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::CursorLeavingAction).get(), false)); \
setAdditionalAction(Okular::Annotation::MousePressed, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::MousePressedAction).get(), false)); \
setAdditionalAction(Okular::Annotation::MouseReleased, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::MouseReleasedAction).get(), false)); \
setAdditionalAction(Okular::Annotation::FocusIn, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::FocusInAction).get(), false)); \
setAdditionalAction(Okular::Annotation::FocusOut, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::FocusOutAction).get(), false));
setAdditionalAction(Okular::Annotation::CursorEntering, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::CursorEnteringAction))); \
setAdditionalAction(Okular::Annotation::CursorLeaving, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::CursorLeavingAction))); \
setAdditionalAction(Okular::Annotation::MousePressed, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::MousePressedAction))); \
setAdditionalAction(Okular::Annotation::MouseReleased, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::MouseReleasedAction))); \
setAdditionalAction(Okular::Annotation::FocusIn, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::FocusInAction))); \
setAdditionalAction(Okular::Annotation::FocusOut, createLinkFromPopplerLink(m_field->additionalAction(Poppler::Annotation::FocusOutAction)));
#define SET_ACTIONS \
setActivationAction(createLinkFromPopplerLink(m_field->activationAction().get(), false)); \
setAdditionalAction(Okular::FormField::FieldModified, createLinkFromPopplerLink(m_field->additionalAction(Poppler::FormField::FieldModified).get(), false)); \
setAdditionalAction(Okular::FormField::FormatField, createLinkFromPopplerLink(m_field->additionalAction(Poppler::FormField::FormatField).get(), false)); \
setAdditionalAction(Okular::FormField::ValidateField, createLinkFromPopplerLink(m_field->additionalAction(Poppler::FormField::ValidateField).get(), false)); \
setAdditionalAction(Okular::FormField::CalculateField, createLinkFromPopplerLink(m_field->additionalAction(Poppler::FormField::CalculateField).get(), false)); \
setActivationAction(createLinkFromPopplerLink(m_field->activationAction())); \
setAdditionalAction(Okular::FormField::FieldModified, createLinkFromPopplerLink(m_field->additionalAction(Poppler::FormField::FieldModified))); \
setAdditionalAction(Okular::FormField::FormatField, createLinkFromPopplerLink(m_field->additionalAction(Poppler::FormField::FormatField))); \
setAdditionalAction(Okular::FormField::ValidateField, createLinkFromPopplerLink(m_field->additionalAction(Poppler::FormField::ValidateField))); \
setAdditionalAction(Okular::FormField::CalculateField, createLinkFromPopplerLink(m_field->additionalAction(Poppler::FormField::CalculateField))); \
SET_ANNOT_ACTIONS
PopplerFormFieldButton::PopplerFormFieldButton(std::unique_ptr<Poppler::FormFieldButton> field)

View File

@ -66,9 +66,6 @@
Q_DECLARE_METATYPE(Poppler::Annotation *)
Q_DECLARE_METATYPE(Poppler::FontInfo)
Q_DECLARE_METATYPE(const Poppler::LinkMovie *)
Q_DECLARE_METATYPE(const Poppler::LinkRendition *)
Q_DECLARE_METATYPE(const Poppler::LinkOCGState *)
#define POPPLER_VERSION_MACRO ((POPPLER_VERSION_MAJOR << 16) | (POPPLER_VERSION_MINOR << 8) | (POPPLER_VERSION_MICRO))
@ -407,32 +404,51 @@ static Okular::DocumentAction::DocumentActionType popplerToOkular(Poppler::LinkA
return Okular::DocumentAction::PageFirst;
}
/**
* Note: the function will take ownership of the popplerLink object.
*/
Okular::Action *createLinkFromPopplerLink(const Poppler::Link *popplerLink, bool deletePopplerLink)
// helper for using std::visit to get a dependent false for static_asserts
// to help get compile errors if one ever extends variants
template<class> inline constexpr bool always_false_v = false;
const Poppler::Link *rawPtr(std::variant<const Poppler::Link *, std::unique_ptr<Poppler::Link>> &link)
{
if (!popplerLink) {
return std::visit(
[](auto &&item) {
using T = std::decay_t<decltype(item)>;
if constexpr (std::is_same_v<T, const Poppler::Link *>) {
return item;
} else if constexpr (std::is_same_v<T, std::unique_ptr<Poppler::Link>>) {
return const_cast<const Poppler::Link *>(item.get());
} else {
static_assert(always_false_v<T>, "non-exhaustive visitor");
}
},
link);
}
template<typename T> auto toSharedPointer(std::unique_ptr<Poppler::Link> link)
{
std::shared_ptr<Poppler::Link> sharedLink = std::move(link);
return std::static_pointer_cast<T>(sharedLink);
}
/**
* Note: the function will take ownership of the popplerLink if the popplerlink object is in a unique ptr
*/
Okular::Action *createLinkFromPopplerLink(std::variant<const Poppler::Link *, std::unique_ptr<Poppler::Link>> popplerLink)
{
auto rawPopplerLink = rawPtr(popplerLink);
if (!rawPopplerLink) {
return nullptr;
}
Okular::Action *link = nullptr;
const Poppler::LinkGoto *popplerLinkGoto;
const Poppler::LinkExecute *popplerLinkExecute;
const Poppler::LinkBrowse *popplerLinkBrowse;
const Poppler::LinkAction *popplerLinkAction;
const Poppler::LinkSound *popplerLinkSound;
const Poppler::LinkJavaScript *popplerLinkJS;
const Poppler::LinkMovie *popplerLinkMovie;
const Poppler::LinkRendition *popplerLinkRendition;
Okular::DocumentViewport viewport;
switch (popplerLink->linkType()) {
switch (rawPopplerLink->linkType()) {
case Poppler::Link::None:
break;
case Poppler::Link::Goto: {
popplerLinkGoto = static_cast<const Poppler::LinkGoto *>(popplerLink);
auto popplerLinkGoto = static_cast<const Poppler::LinkGoto *>(rawPopplerLink);
const Poppler::LinkDestination dest = popplerLinkGoto->destination();
const QString destName = dest.destinationName();
if (destName.isEmpty()) {
@ -443,47 +459,55 @@ Okular::Action *createLinkFromPopplerLink(const Poppler::Link *popplerLink, bool
}
} break;
case Poppler::Link::Execute:
popplerLinkExecute = static_cast<const Poppler::LinkExecute *>(popplerLink);
case Poppler::Link::Execute: {
auto popplerLinkExecute = static_cast<const Poppler::LinkExecute *>(rawPopplerLink);
link = new Okular::ExecuteAction(popplerLinkExecute->fileName(), popplerLinkExecute->parameters());
break;
}
case Poppler::Link::Browse:
popplerLinkBrowse = static_cast<const Poppler::LinkBrowse *>(popplerLink);
case Poppler::Link::Browse: {
auto popplerLinkBrowse = static_cast<const Poppler::LinkBrowse *>(rawPopplerLink);
link = new Okular::BrowseAction(QUrl(popplerLinkBrowse->url()));
break;
}
case Poppler::Link::Action:
popplerLinkAction = static_cast<const Poppler::LinkAction *>(popplerLink);
case Poppler::Link::Action: {
auto popplerLinkAction = static_cast<const Poppler::LinkAction *>(rawPopplerLink);
link = new Okular::DocumentAction(popplerToOkular(popplerLinkAction->actionType()));
break;
}
case Poppler::Link::Sound: {
popplerLinkSound = static_cast<const Poppler::LinkSound *>(popplerLink);
auto popplerLinkSound = static_cast<const Poppler::LinkSound *>(rawPopplerLink);
Poppler::SoundObject *popplerSound = popplerLinkSound->sound();
Okular::Sound *sound = createSoundFromPopplerSound(popplerSound);
link = new Okular::SoundAction(popplerLinkSound->volume(), popplerLinkSound->synchronous(), popplerLinkSound->repeat(), popplerLinkSound->mix(), sound);
} break;
case Poppler::Link::JavaScript: {
popplerLinkJS = static_cast<const Poppler::LinkJavaScript *>(popplerLink);
auto popplerLinkJS = static_cast<const Poppler::LinkJavaScript *>(rawPopplerLink);
link = new Okular::ScriptAction(Okular::JavaScript, popplerLinkJS->script());
} break;
case Poppler::Link::Rendition: {
if (!deletePopplerLink) {
// If links should not be deleted it probably means that they
// are part of a nextActions chain. There is no support
// to resolveMediaLinkReferences on nextActions. It would also
// be necessary to ensure that resolveMediaLinkReferences does
// not delete the Links which are part of a nextActions list
// to avoid a double deletion.
qCDebug(OkularPdfDebug) << "parsing rendition link without deletion is not supported. Action chain might be broken.";
break;
/* This gets weird. Depending on which parts of Poppler gives us a
* rendition link, it might be owned by us; it might be owned by poppler
* Luckily we can count on the return types being correct from poppler.
* If it is owned by poppler, we get a raw pointer
* if ownership is transferred, we get a unique ptr.
*
* So for that reason, put the owned one in a normal shared_ptr for later usage
* and cleanup
*
* and put the non-owned in a special shared_ptr with a nondeleter as deleter
*/
std::shared_ptr<const Poppler::LinkRendition> popplerLinkRendition;
if (std::holds_alternative<std::unique_ptr<Poppler::Link>>(popplerLink)) {
auto uniquePopplerLink = std::get<std::unique_ptr<Poppler::Link>>(std::move(popplerLink));
popplerLinkRendition = toSharedPointer<const Poppler::LinkRendition>(std::move(uniquePopplerLink));
} else {
popplerLinkRendition = std::shared_ptr<const Poppler::LinkRendition>(static_cast<const Poppler::LinkRendition *>(rawPopplerLink), [](auto *) { /*don't delete this*/ });
}
deletePopplerLink = false; // we'll delete it inside resolveMediaLinkReferences() after we have resolved all references
popplerLinkRendition = static_cast<const Poppler::LinkRendition *>(popplerLink);
Okular::RenditionAction::OperationType operation = Okular::RenditionAction::None;
switch (popplerLinkRendition->action()) {
@ -506,23 +530,23 @@ Okular::Action *createLinkFromPopplerLink(const Poppler::Link *popplerLink, bool
Okular::Movie *movie = nullptr;
if (popplerLinkRendition->rendition()) {
movie = createMovieFromPopplerScreen(popplerLinkRendition);
movie = createMovieFromPopplerScreen(popplerLinkRendition.get());
}
Okular::RenditionAction *renditionAction = new Okular::RenditionAction(operation, movie, Okular::JavaScript, popplerLinkRendition->script());
renditionAction->setNativeId(QVariant::fromValue(popplerLinkRendition));
renditionAction->setNativeHandle(popplerLinkRendition);
link = renditionAction;
} break;
case Poppler::Link::Movie: {
if (!deletePopplerLink) {
if (!std::holds_alternative<std::unique_ptr<Poppler::Link>>(popplerLink)) {
// See comment above in Link::Rendition
qCDebug(OkularPdfDebug) << "parsing movie link without deletion is not supported. Action chain might be broken.";
qCDebug(OkularPdfDebug) << "parsing movie link without taking ownership is not supported. Action chain might be broken.";
break;
}
deletePopplerLink = false; // we'll delete it inside resolveMediaLinkReferences() after we have resolved all references
popplerLinkMovie = static_cast<const Poppler::LinkMovie *>(popplerLink);
auto uniquePopplerLink = std::get<std::unique_ptr<Poppler::Link>>(std::move(popplerLink));
auto popplerLinkMovie = toSharedPointer<const Poppler::LinkMovie>(std::move(uniquePopplerLink));
Okular::MovieAction::OperationType operation = Okular::MovieAction::Play;
switch (popplerLinkMovie->operation()) {
@ -541,12 +565,12 @@ Okular::Action *createLinkFromPopplerLink(const Poppler::Link *popplerLink, bool
};
Okular::MovieAction *movieAction = new Okular::MovieAction(operation);
movieAction->setNativeId(QVariant::fromValue(popplerLinkMovie));
movieAction->setNativeHandle(popplerLinkMovie);
link = movieAction;
} break;
case Poppler::Link::Hide: {
const Poppler::LinkHide *l = static_cast<const Poppler::LinkHide *>(popplerLink);
const Poppler::LinkHide *l = static_cast<const Poppler::LinkHide *>(rawPopplerLink);
QStringList scripts;
const QVector<QString> targets = l->targets();
for (const QString &target : targets) {
@ -555,26 +579,29 @@ Okular::Action *createLinkFromPopplerLink(const Poppler::Link *popplerLink, bool
link = new Okular::ScriptAction(Okular::JavaScript, scripts.join(QLatin1Char('\n')));
} break;
case Poppler::Link::OCGState:
case Poppler::Link::OCGState: {
if (!std::holds_alternative<std::unique_ptr<Poppler::Link>>(popplerLink)) {
// See comment above in Link::Rendition
qCDebug(OkularPdfDebug) << "ocg link without taking ownership is not supported. Action chain might be broken.";
break;
}
link = new Okular::BackendOpaqueAction();
link->setNativeId(QVariant::fromValue(static_cast<const Poppler::LinkOCGState *>(popplerLink)));
deletePopplerLink = false;
auto uniquePopplerLink = std::get<std::unique_ptr<Poppler::Link>>(std::move(popplerLink));
auto popplerLinkOCG = toSharedPointer<const Poppler::LinkOCGState>(std::move(uniquePopplerLink));
link->setNativeHandle(popplerLinkOCG);
break;
}
}
if (link) {
QVector<Okular::Action *> nextActions;
const QVector<Poppler::Link *> nextLinks = popplerLink->nextLinks();
const QVector<Poppler::Link *> nextLinks = rawPopplerLink->nextLinks();
for (const Poppler::Link *nl : nextLinks) {
nextActions << createLinkFromPopplerLink(nl, false);
nextActions << createLinkFromPopplerLink(nl);
}
link->setNextActions(nextActions);
}
if (deletePopplerLink) {
delete popplerLink;
}
return link;
}
@ -584,11 +611,11 @@ Okular::Action *createLinkFromPopplerLink(const Poppler::Link *popplerLink, bool
static QList<Okular::ObjectRect *> generateLinks(std::vector<std::unique_ptr<Poppler::Link>> &&popplerLinks)
{
QList<Okular::ObjectRect *> links;
for (const auto &popplerLink : popplerLinks) {
for (auto &popplerLink : popplerLinks) {
QRectF linkArea = popplerLink->linkArea();
double nl = linkArea.left(), nt = linkArea.top(), nr = linkArea.right(), nb = linkArea.bottom();
// create the rect using normalized coords and attach the Okular::Link to it
Okular::ObjectRect *rect = new Okular::ObjectRect(nl, nt, nr, nb, false, Okular::ObjectRect::Action, createLinkFromPopplerLink(popplerLink.get(), false));
Okular::ObjectRect *rect = new Okular::ObjectRect(nl, nt, nr, nb, false, Okular::ObjectRect::Action, createLinkFromPopplerLink(std::move(popplerLink)));
// add the ObjectRect to the container
links.push_front(rect);
}
@ -832,11 +859,11 @@ void PDFGenerator::loadPages(QVector<Okular::Page *> &pagesVector, int rotation,
}
std::unique_ptr<Poppler::Link> tmplink = p->action(Poppler::Page::Opening);
if (tmplink) {
page->setPageAction(Okular::Page::Opening, createLinkFromPopplerLink(tmplink.get(), false));
page->setPageAction(Okular::Page::Opening, createLinkFromPopplerLink(std::move(tmplink)));
}
tmplink = p->action(Poppler::Page::Closing);
if (tmplink) {
page->setPageAction(Okular::Page::Closing, createLinkFromPopplerLink(tmplink.get(), false));
page->setPageAction(Okular::Page::Closing, createLinkFromPopplerLink(std::move(tmplink.get())));
}
page->setDuration(p->duration());
page->setLabel(p->label());
@ -1092,15 +1119,10 @@ QAbstractItemModel *PDFGenerator::layersModel() const
void PDFGenerator::opaqueAction(const Okular::BackendOpaqueAction *action)
{
const Poppler::LinkOCGState *popplerLink = action->nativeId().value<const Poppler::LinkOCGState *>();
const Poppler::LinkOCGState *popplerLink = static_cast<const Poppler::LinkOCGState *>(action->nativeHandle());
pdfdoc->optionalContentModel()->applyLink(const_cast<Poppler::LinkOCGState *>(popplerLink));
}
void PDFGenerator::freeOpaqueActionContents(const Okular::BackendOpaqueAction &action)
{
delete action.nativeId().value<const Poppler::LinkOCGState *>();
}
bool PDFGenerator::isAllowed(Okular::Permission permission) const
{
bool b = true;
@ -1250,7 +1272,7 @@ void resolveMediaLinks(Okular::Action *action, enum Okular::Annotation::SubType
{
OkularLinkType *okularAction = static_cast<OkularLinkType *>(action);
const PopplerLinkType *popplerLink = action->nativeId().value<const PopplerLinkType *>();
const PopplerLinkType *popplerLink = static_cast<const PopplerLinkType *>(action->nativeHandle());
QHashIterator<Okular::Annotation *, Poppler::Annotation *> it(annotationsHash);
while (it.hasNext()) {
@ -1261,8 +1283,7 @@ void resolveMediaLinks(Okular::Action *action, enum Okular::Annotation::SubType
if (popplerLink->isReferencedAnnotation(popplerAnnotation)) {
okularAction->setAnnotation(static_cast<OkularAnnotationType *>(it.key()));
okularAction->setNativeId(QVariant());
delete popplerLink; // delete the associated Poppler::LinkMovie object, it's not needed anymore
okularAction->setNativeHandle({});
break;
}
}
@ -1807,21 +1828,18 @@ void PDFGenerator::addAnnotations(Poppler::Page *popplerPage, Okular::Page *page
// The activation action
Poppler::Link *actionLink = annotScreen->action();
if (actionLink) {
screenAnnotation->setAction(createLinkFromPopplerLink(actionLink, true /*The function doesn't delete this kind*/));
/* The actionLink is still owned by the poppler annotation, but createLinkFromPopplerLink specialcases this and
* insists on on being passed 'true' to tell them we know what we are doing
* At some point in the future, there is probably stuff to be cleaned up here */
screenAnnotation->setAction(createLinkFromPopplerLink(actionLink));
}
// The additional actions
std::unique_ptr<Poppler::Link> pageOpeningLink = annotScreen->additionalAction(Poppler::Annotation::PageOpeningAction);
if (pageOpeningLink) {
screenAnnotation->setAdditionalAction(Okular::Annotation::PageOpening, createLinkFromPopplerLink(pageOpeningLink.get(), false));
screenAnnotation->setAdditionalAction(Okular::Annotation::PageOpening, createLinkFromPopplerLink(std::move(pageOpeningLink)));
}
std::unique_ptr<Poppler::Link> pageClosingLink = annotScreen->additionalAction(Poppler::Annotation::PageClosingAction);
if (pageClosingLink) {
screenAnnotation->setAdditionalAction(Okular::Annotation::PageClosing, createLinkFromPopplerLink(pageClosingLink.get(), false));
screenAnnotation->setAdditionalAction(Okular::Annotation::PageClosing, createLinkFromPopplerLink(std::move(pageClosingLink)));
}
}
@ -1832,12 +1850,12 @@ void PDFGenerator::addAnnotations(Poppler::Page *popplerPage, Okular::Page *page
// The additional actions
std::unique_ptr<Poppler::Link> pageOpeningLink = annotWidget->additionalAction(Poppler::Annotation::PageOpeningAction);
if (pageOpeningLink) {
widgetAnnotation->setAdditionalAction(Okular::Annotation::PageOpening, createLinkFromPopplerLink(pageOpeningLink.get(), false));
widgetAnnotation->setAdditionalAction(Okular::Annotation::PageOpening, createLinkFromPopplerLink(std::move(pageOpeningLink)));
}
std::unique_ptr<Poppler::Link> pageClosingLink = annotWidget->additionalAction(Poppler::Annotation::PageClosingAction);
if (pageClosingLink) {
widgetAnnotation->setAdditionalAction(Okular::Annotation::PageClosing, createLinkFromPopplerLink(pageClosingLink.get(), false));
widgetAnnotation->setAdditionalAction(Okular::Annotation::PageClosing, createLinkFromPopplerLink(std::move(pageClosingLink)));
}
}

View File

@ -73,7 +73,6 @@ public:
}
QAbstractItemModel *layersModel() const override;
void opaqueAction(const Okular::BackendOpaqueAction *action) override;
void freeOpaqueActionContents(const Okular::BackendOpaqueAction &action) override;
// [INHERITED] document information
bool isAllowed(Okular::Permission permission) const override;

View File

@ -205,7 +205,7 @@ protected:
private:
Okular::HighlightAnnotation *m_hlAnn;
QComboBox *m_typeCombo;
QComboBox *m_typeCombo = nullptr;
};
class GeomAnnotationWidget : public AnnotationWidget
@ -222,10 +222,10 @@ protected:
private:
Okular::GeomAnnotation *m_geomAnn;
QComboBox *m_typeCombo;
QCheckBox *m_useColor;
KColorButton *m_innerColor;
QDoubleSpinBox *m_spinSize;
QComboBox *m_typeCombo = nullptr;
QCheckBox *m_useColor = nullptr;
KColorButton *m_innerColor = nullptr;
QDoubleSpinBox *m_spinSize = nullptr;
};
class FileAttachmentAnnotationWidget : public AnnotationWidget
@ -277,7 +277,7 @@ protected:
private:
Okular::InkAnnotation *m_inkAnn;
QDoubleSpinBox *m_spinSize;
QDoubleSpinBox *m_spinSize = nullptr;
};
#endif

View File

@ -192,7 +192,7 @@ DlgGeneral::DlgGeneral(QWidget *parent, Okular::EmbedMode embedMode)
// Spinbox: page up/down overlap
QSpinBox *pageUpDownOverlap = new QSpinBox(this);
pageUpDownOverlap->setMinimum(0);
pageUpDownOverlap->setMaximum(50);
pageUpDownOverlap->setMaximum(99);
pageUpDownOverlap->setSingleStep(5);
pageUpDownOverlap->setSuffix(i18nc("Page Up/Down overlap, spinbox suffix", "%"));
pageUpDownOverlap->setToolTip(i18nc("@info:tooltip Config dialog, general page", "Defines how much of the current viewing area will still be visible when pressing the Page Up/Down keys."));

View File

@ -42,7 +42,9 @@ FormWidgetsController::FormWidgetsController(Okular::Document *doc)
connect(this, &FormWidgetsController::formComboChangedByUndoRedo, this, &FormWidgetsController::changed);
// connect form modification signals to and from document
connect(this, &FormWidgetsController::formTextChangedByWidget, doc, &Okular::Document::editFormText);
// connect to the newer editFormText method and not the deprecated one
using EditFormTextType = void (Okular::Document::*)(int, Okular::FormFieldText *, const QString &, int, int, int, const QString &);
connect(this, &FormWidgetsController::formTextChangedByWidget, doc, static_cast<EditFormTextType>(&Okular::Document::editFormText));
connect(doc, &Okular::Document::formTextChangedByUndoRedo, this, &FormWidgetsController::formTextChangedByUndoRedo);
connect(this, &FormWidgetsController::formListChangedByWidget, doc, &Okular::Document::editFormList);
@ -466,6 +468,24 @@ void RadioButtonEdit::setFormWidgetsController(FormWidgetsController *controller
setChecked(form->state());
}
void RadioButtonEdit::slotRefresh(Okular::FormField *form)
{
if (form != m_ff) {
return;
}
FormWidgetIface::slotRefresh(form);
Okular::FormFieldButton *button = static_cast<Okular::FormFieldButton *>(m_ff);
bool oldState = isChecked();
bool newState = button->state();
if (oldState != newState) {
setChecked(button->state());
if (form->activationAction()) {
m_controller->signalAction(form->activationAction());
}
}
}
FormLineEdit::FormLineEdit(Okular::FormFieldText *text, PageView *pageView)
: QLineEdit(pageView->viewport())
, FormWidgetIface(this, text)
@ -581,14 +601,23 @@ void FormLineEdit::contextMenuEvent(QContextMenuEvent *event)
void FormLineEdit::slotChanged()
{
Okular::FormFieldText *form = static_cast<Okular::FormFieldText *>(m_ff);
int cursorPos = cursorPosition();
QString newWidgetValueBeforeKeystroke = text();
QString oldContents = form->text();
int cursorPos;
if (text() != form->text()) {
if (newWidgetValueBeforeKeystroke != oldContents) {
if (form->additionalAction(Okular::FormField::FieldModified) && m_editing && !form->isReadOnly()) {
m_controller->document()->processKeystrokeAction(form->additionalAction(Okular::FormField::FieldModified), form, text(), m_prevCursorPos, m_prevAnchorPos);
}
Q_EMIT m_controller->formTextChangedByWidget(pageItem()->pageNumber(), form, text(), cursorPos, m_prevCursorPos, m_prevAnchorPos);
// calculate cursor position after keystroke action since it is possible that the change was not accepted and widget was refreshed.
cursorPos = cursorPosition();
if (newWidgetValueBeforeKeystroke == text()) {
// if widget was not refreshed then emit this signal.
Q_EMIT m_controller->formTextChangedByWidget(pageItem()->pageNumber(), form, text(), cursorPos, m_prevCursorPos, m_prevAnchorPos, oldContents);
}
} else {
// we still evaluate the cursor position if no change occurs in widget contents.
cursorPos = cursorPosition();
}
m_prevCursorPos = cursorPos;
@ -615,7 +644,11 @@ void FormLineEdit::slotHandleTextChangedByUndoRedo(int pageNumber, Okular::FormF
connect(this, &QLineEdit::cursorPositionChanged, this, &FormLineEdit::slotChanged);
m_prevCursorPos = cursorPos;
m_prevAnchorPos = anchorPos;
setFocus();
// If the contents of the box have already lost focus, we need to run all the keystroke, validation, formatting scripts again.
if (!hasFocus()) { // if lineEdit already had focus, undoing/redoing was still retain the focus and these scripts would execute when focus is lost.
// TODO handle the keystroke, validate, calculate, format events here.
}
}
void FormLineEdit::slotRefresh(Okular::FormField *form)
@ -733,20 +766,33 @@ void TextAreaEdit::slotHandleTextChangedByUndoRedo(int pageNumber, Okular::FormF
m_prevCursorPos = cursorPos;
m_prevAnchorPos = anchorPos;
setTextCursor(c);
setFocus();
// If the contents of the box have already lost focus, we need to run all the keystroke, validation, formatting scripts again.
if (!hasFocus()) { // if lineEdit already had focus, undoing/redoing was still retain the focus and these scripts would execute when focus is lost.
// TODO handle the keystroke, validate, calculate, format events here.
}
}
void TextAreaEdit::slotChanged()
{
Okular::FormFieldText *form = static_cast<Okular::FormFieldText *>(m_ff);
int cursorPos = textCursor().position();
QString newWidgetValueBeforeKeystroke = toPlainText();
QString oldContents = form->text();
int cursorPos;
if (toPlainText() != form->text()) {
if (newWidgetValueBeforeKeystroke != oldContents) {
if (form->additionalAction(Okular::FormField::FieldModified) && m_editing && !form->isReadOnly()) {
m_controller->document()->processKeystrokeAction(form->additionalAction(Okular::FormField::FieldModified), form, toPlainText(), m_prevCursorPos, m_prevAnchorPos);
}
Q_EMIT m_controller->formTextChangedByWidget(pageItem()->pageNumber(), form, toPlainText(), cursorPos, m_prevCursorPos, m_prevAnchorPos);
// calculate cursor position after keystroke action since it is possible that the change was not accepted and widget was refreshed.
cursorPos = textCursor().position();
if (newWidgetValueBeforeKeystroke == toPlainText()) {
// if widget was not refreshed then emit this signal.
Q_EMIT m_controller->formTextChangedByWidget(pageItem()->pageNumber(), form, toPlainText(), cursorPos, m_prevCursorPos, m_prevAnchorPos, oldContents);
}
} else {
// we still evaluate the cursor position if no change occurs in widget contents.
cursorPos = textCursor().position();
}
m_prevCursorPos = cursorPos;
m_prevAnchorPos = textCursor().anchor();
@ -841,9 +887,10 @@ void FileEdit::slotChanged()
Okular::FormFieldText *form = static_cast<Okular::FormFieldText *>(m_ff);
QString contents = text();
QString oldContents = form->text();
int cursorPos = lineEdit()->cursorPosition();
if (contents != form->text()) {
Q_EMIT m_controller->formTextChangedByWidget(pageItem()->pageNumber(), form, contents, cursorPos, m_prevCursorPos, m_prevAnchorPos);
if (contents != oldContents) {
Q_EMIT m_controller->formTextChangedByWidget(pageItem()->pageNumber(), form, contents, cursorPos, m_prevCursorPos, m_prevAnchorPos, oldContents);
}
m_prevCursorPos = cursorPos;
@ -936,6 +983,31 @@ void ListEdit::slotHandleFormListChangedByUndoRedo(int pageNumber, Okular::FormF
setFocus();
}
void ListEdit::slotRefresh(Okular::FormField *form)
{
if (m_ff != form) {
return;
}
FormWidgetIface::slotRefresh(form);
Okular::FormFieldChoice *ffc = static_cast<Okular::FormFieldChoice *>(m_ff);
const QList<int> selectedItems = ffc->currentChoices();
disconnect(this, &QListWidget::itemSelectionChanged, this, &ListEdit::slotSelectionChanged);
if (ffc->multiSelect()) {
for (const int index : selectedItems) {
if (index >= 0 && index < count()) {
item(index)->setSelected(true);
}
}
} else {
if (selectedItems.count() == 1 && selectedItems.at(0) >= 0 && selectedItems.at(0) < count()) {
setCurrentRow(selectedItems.at(0));
scrollToItem(item(selectedItems.at(0)));
}
}
connect(this, &QListWidget::itemSelectionChanged, this, &ListEdit::slotSelectionChanged);
}
ComboEdit::ComboEdit(Okular::FormFieldChoice *choice, PageView *pageView)
: QComboBox(pageView->viewport())
, FormWidgetIface(this, choice)
@ -1073,6 +1145,28 @@ bool ComboEdit::event(QEvent *e)
return QComboBox::event(e);
}
void ComboEdit::slotRefresh(Okular::FormField *form)
{
if (form != m_ff) {
return;
}
FormWidgetIface::slotRefresh(form);
disconnect(this, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &ComboEdit::slotValueChanged);
disconnect(this, &QComboBox::editTextChanged, this, &ComboEdit::slotValueChanged);
Okular::FormFieldChoice *ffc = static_cast<Okular::FormFieldChoice *>(m_ff);
const QList<int> selectedItems = ffc->currentChoices();
if (selectedItems.count() == 1 && selectedItems.at(0) >= 0 && selectedItems.at(0) < count()) {
setCurrentIndex(selectedItems.at(0));
}
if (ffc->isEditable() && !ffc->editChoice().isEmpty()) {
lineEdit()->setText(ffc->editChoice());
}
connect(this, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &ComboEdit::slotValueChanged);
connect(this, &QComboBox::editTextChanged, this, &ComboEdit::slotValueChanged);
}
SignatureEdit::SignatureEdit(Okular::FormFieldSignature *signature, PageView *pageView)
: QAbstractButton(pageView->viewport())
, FormWidgetIface(this, signature)

View File

@ -79,7 +79,7 @@ Q_SIGNALS:
void requestRedo();
void canUndoChanged(bool undoAvailable);
void canRedoChanged(bool redoAvailable);
void formTextChangedByWidget(int pageNumber, Okular::FormFieldText *form, const QString &newContents, int newCursorPos, int prevCursorPos, int prevAnchorPos);
void formTextChangedByWidget(int pageNumber, Okular::FormFieldText *form, const QString &newContents, int newCursorPos, int prevCursorPos, int prevAnchorPos, const QString &oldContents);
void formTextChangedByUndoRedo(int pageNumber, Okular::FormFieldText *form, const QString &contents, int cursorPos, int anchorPos);
@ -200,6 +200,9 @@ public:
// reimplemented from FormWidgetIface
void setFormWidgetsController(FormWidgetsController *controller) override;
protected:
void slotRefresh(Okular::FormField *form) override;
DECLARE_ADDITIONAL_ACTIONS
};
@ -287,6 +290,9 @@ public:
private Q_SLOTS:
void slotSelectionChanged();
void slotHandleFormListChangedByUndoRedo(int pageNumber, Okular::FormFieldChoice *listForm, const QList<int> &choices);
protected:
void slotRefresh(Okular::FormField *form) override;
DECLARE_ADDITIONAL_ACTIONS
};
@ -308,6 +314,9 @@ private:
int m_prevCursorPos;
int m_prevAnchorPos;
DECLARE_ADDITIONAL_ACTIONS
protected:
void slotRefresh(Okular::FormField *form) override;
};
class SignatureEdit : public QAbstractButton, public FormWidgetIface

View File

@ -158,7 +158,7 @@ public:
QPointF mousePressPos;
QPointF mouseSelectPos;
QPointF previousMouseMovePos;
qreal mouseMidLastY;
qreal mouseMidLastY = 0.0;
bool mouseSelecting = false;
QRect mouseSelectionRect;
QColor mouseSelectionColor;
@ -783,7 +783,7 @@ void PageView::setupActions(KActionCollection *ac)
}
});
connect(d->annotator, &PageViewAnnotator::toolActive, d->mouseAnnotation, &MouseAnnotation::reset);
connect(d->annotator, &PageViewAnnotator::requestOpenFile, this, &PageView::requestOpenFile);
connect(d->annotator, &PageViewAnnotator::requestOpenNewlySignedFile, this, &PageView::requestOpenNewlySignedFile);
d->annotator->setupActions(ac);
}

View File

@ -143,7 +143,12 @@ Q_SIGNALS:
void escPressed();
void fitWindowToPage(const QSize pageViewPortSize, const QSize pageSize);
void triggerSearch(const QString &text);
void requestOpenFile(const QString &filePath, int pageNumber);
/**
* Requests opening of a newly signed file
* \param filePath path to signed file
* \param pageNumber page to show (1-indexed)
*/
void requestOpenNewlySignedFile(const QString &filePath, int pageNumber);
protected:
bool event(QEvent *event) override;

View File

@ -1043,7 +1043,7 @@ QRect PageViewAnnotator::performRouteMouseOrTabletEvent(const AnnotatorEngine::E
if (!newFilePath.isEmpty()) {
const bool success = static_cast<PickPointEngineSignature *>(m_engine)->sign(newFilePath);
if (success) {
Q_EMIT requestOpenFile(newFilePath, m_lockedItem->pageNumber() + 1);
Q_EMIT requestOpenNewlySignedFile(newFilePath, m_lockedItem->pageNumber() + 1);
} else {
KMessageBox::error(m_pageView, i18nc("%1 is a file path", "Could not sign. Invalid certificate password or could not write to '%1'", newFilePath));
}

View File

@ -140,7 +140,12 @@ Q_SIGNALS:
* This signal is emitted whenever an annotation tool is activated or all the tools get deactivated
*/
void toolActive(bool active);
void requestOpenFile(const QString &filePath, int pageNumber);
/**
* Requests opening of a newly signed file
* \param filePath path to signed file
* \param pageNumber page to show (1-indexed)
*/
void requestOpenNewlySignedFile(const QString &filePath, int pageNumber);
private:
void reparseBuiltinToolsConfig();

View File

@ -504,13 +504,7 @@ Part::Part(QObject *parent, const QVariantList &args)
connect(m_miniBar, &MiniBar::forwardKeyPressEvent, m_pageView, &PageView::externalKeyPressEvent);
connect(m_pageView.data(), &PageView::escPressed, m_findBar, &FindBar::resetSearch);
connect(m_pageNumberTool, &MiniBar::forwardKeyPressEvent, m_pageView, &PageView::externalKeyPressEvent);
connect(m_pageView.data(), &PageView::requestOpenFile, this, [this](const QString &filePath, int pageNumber) {
// We cheat a bit here reusing the urlsDropped signal, but at the end the output is the same, we want to open some files
// urlsDropped should have just had a different name
QUrl u = QUrl::fromLocalFile(filePath);
u.setFragment(QStringLiteral("page=%1").arg(pageNumber));
Q_EMIT urlsDropped({u});
});
connect(m_pageView.data(), &PageView::requestOpenNewlySignedFile, this, &Part::requestOpenNewlySignedFile);
connect(m_reviewsWidget.data(), &Reviews::openAnnotationWindow, m_pageView.data(), &PageView::openAnnotationWindow);

View File

@ -193,6 +193,12 @@ Q_SIGNALS:
void mimeTypeChanged(const QMimeType &mimeType);
void urlsDropped(const QList<QUrl> &urls);
void fitWindowToPage(const QSize pageViewPortSize, const QSize pageSize);
/**
* Request to open a newly signed file
* \param path file to open
* \param pageNumber page to show (1-indexed)
*/
void requestOpenNewlySignedFile(const QString &path, int pageNumber);
protected:
// reimplemented from KParts::ReadWritePart

View File

@ -469,7 +469,7 @@ void signUnsignedSignature(const Okular::FormFieldSignature *form, PageView *pag
if (!newFilePath.isEmpty()) {
const bool success = form->sign(data, newFilePath);
if (success) {
Q_EMIT pageView->requestOpenFile(newFilePath, form->page()->number() + 1);
Q_EMIT pageView->requestOpenNewlySignedFile(newFilePath, form->page()->number() + 1);
} else {
KMessageBox::error(pageView, i18nc("%1 is a file path", "Could not sign. Invalid certificate password or could not write to '%1'", newFilePath));
}

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2021-07-06 00:10+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
@ -219,7 +219,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr " رمز الـ DVI ضبط حرف غير معروف "
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "شفرة الـ DVI تُشير إلى الخط #%1، والذي هو غير معرّف سابقا."
@ -249,12 +249,12 @@ msgstr "تم مواجهة أمر غير شرعي"
msgid "The unknown op-code %1 was encountered."
msgstr "تم مواجهة %1 op-code المجهول."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "تضمين %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -263,14 +263,14 @@ msgstr ""
"صفحة %1: ملف ال PDF <strong>%2</strong> لم يكن من الممكن تحويله إلى "
"PostScript <br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr ""
"صفحة %1: ملف ال PostScript <strong>%2</strong> لم يتم العثور عليه. <br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "معلومات حجم الورق'%1' لا يمكن تحليلها."
@ -370,7 +370,7 @@ msgstr ""
"معامل مشوّه في الأمر الخاص epsf . \n"
"كان متوقع من الطائف أن يتبع %1 في %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -379,7 +379,7 @@ msgstr ""
"لم يتم العثور على ملف\n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -388,7 +388,7 @@ msgstr ""
"خطأ فى ملف ال DVI '%1' صفحة %2. لم يتمكن من ترجمة الزاوية فى دوران النص "
"الخاص."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "الأمر الخاص '%1' لم يطبق بعد."

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-07-06 10:11+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
@ -44,7 +44,7 @@ msgid "Enhance thin lines:"
msgstr "حَسِّن الخطوط الرفيعة"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "لا"
@ -68,19 +68,19 @@ msgid "Default scaling mode when printing:"
msgstr "وضع التحجيم المبدئي عند الطباعة:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "لائم المنطقة المطبوعة"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "لائم إلى كامل الصفحة"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "بلا، اطبع الحجم الأصلي"
@ -140,22 +140,22 @@ msgstr "الشّهادات المتوفرة"
msgid "&Load Signatures"
msgstr "&حمّل التوقيعات"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "خيارات بي دي اف"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "اطبع الحواشي"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "ضَمِّن الحواشي في المستند المطبوع"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -164,17 +164,17 @@ msgstr ""
"ضمِّن الحواشي في المستند المطبوع. عطِّل هذا الخيار إذا كنت تريد طباعة المستند "
"الأصلي غير ذي الحواشي."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "أجبر التحويل"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "حول إلى صورة قبل الطباعة"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -184,53 +184,53 @@ msgstr ""
"أجبر تحويل كل صفحة إلى صورة قبل الطباعة. هذا عادة يعطى نتائج أسوا ولكنه مفيد "
"فى طباعة الملفات التى تطبع بشكل خاطئ."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "وضع التحجيم للصفحات المطبوعة"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "وضع الحجم:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "التنسيق"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "مشفّرة"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "غير مشفّرة"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "الأمن"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "نعم"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "محسّن"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -241,12 +241,12 @@ msgstr ""
"\n"
"التاريخ: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "يستخدم Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -257,17 +257,17 @@ msgstr ""
"\n"
"بني على Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "بي دي اف"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "ضبط خلفية بي دي اف"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2024-03-27 23:40+0100\n"
"Last-Translator: Enol P. <enolp@softastur.org>\n"
"Language-Team: Asturian <alministradores@softastur.org>\n"
@ -177,7 +177,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr ""
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -207,25 +207,25 @@ msgstr ""
msgid "The unknown op-code %1 was encountered."
msgstr ""
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr ""
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
"PostScript.<br>"
msgstr ""
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr ""
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr ""
@ -308,21 +308,21 @@ msgid ""
"Expected a float to follow %1 in %2"
msgstr ""
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
" %1"
msgstr ""
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
"special."
msgstr ""
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr ""

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2024-03-27 23:53+0100\n"
"Last-Translator: Enol P. <enolp@softastur.org>\n"
"Language-Team: Asturian <alministradores@softastur.org>\n"
@ -40,7 +40,7 @@ msgid "Enhance thin lines:"
msgstr ""
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr ""
@ -64,19 +64,19 @@ msgid "Default scaling mode when printing:"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr ""
@ -133,39 +133,39 @@ msgstr ""
msgid "&Load Signatures"
msgstr ""
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr ""
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr ""
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr ""
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
"want to print the original unannotated document."
msgstr ""
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr ""
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr ""
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -173,53 +173,53 @@ msgid ""
"that appear to print incorrectly."
msgstr ""
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr ""
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr ""
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr ""
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr ""
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr ""
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr ""
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr ""
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr ""
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr ""
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -227,12 +227,12 @@ msgid ""
"Date: %2"
msgstr ""
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr ""
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -240,17 +240,17 @@ msgid ""
"Built against Poppler %2"
msgstr ""
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr ""
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2020-10-28 12:57+0400\n"
"Last-Translator: Kheyyam Gojayev <xxmn77@gmail.com>\n"
"Language-Team: Azerbaijani <kde-i18n-doc@kde.org>\n"
@ -223,7 +223,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "DVİ kodunda naməlum şrift simvolu var."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "DVİ kodu əvvəl təyin edilməyən #%1 şriftinə istinad edir."
@ -253,12 +253,12 @@ msgstr "Naməlum əmr aşkar edildi."
msgid "The unknown op-code %1 was encountered."
msgstr "Naməlum %1 əməliyyat kodu aşkar edildi."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "%1 daxil edilməsi"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -267,13 +267,13 @@ msgstr ""
"Səhifə %1: <strong>%2</strong> PDF faylı PostScript faylına çevrilə bilmədi."
"<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Səhifə %1: <strong>%2</strong> PostScript faylı tapəla bilmədi.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "%1 kağız formatı məlumatı təhlil edilə bilmədi."
@ -373,7 +373,7 @@ msgstr ""
"Xüsusi epsf əmrində səhv parametr.\n"
"%2 daxilində %1 üçün həqiqi rəqəm göstərilməsi tələb olunur"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -382,7 +382,7 @@ msgstr ""
"Fayl tapılmadı: \n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -391,7 +391,7 @@ msgstr ""
"%2 səhifəsində '%1' DVİ faylında xəta. Mətnin döndərmə bucağını təyin etmək "
"mümkün olmur."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "'%1' xüsusi əmri dəstəklənmir."

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-06-30 11:51+0400\n"
"Last-Translator: Kheyyam <xxmn77@gmail.com>\n"
"Language-Team: Azerbaijani <kde-i18n-doc@kde.org>\n"
@ -40,7 +40,7 @@ msgid "Enhance thin lines:"
msgstr "İncə xətləri artırın:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Xeyr"
@ -64,19 +64,19 @@ msgid "Default scaling mode when printing:"
msgstr "Çap zamanı standart miqyas rejimi:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Çap sahəsinə sığışdırmaq"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Bütün səhifəyə sığışdırmaq"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Heç biri; orijinal ölçüsünü çap edin"
@ -138,22 +138,22 @@ msgstr "Mövcud sertifikatlar"
msgid "&Load Signatures"
msgstr "İmzaları Yük&ləmək"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF seçimləri"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Çap məlumatları"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Çap edilən sənədə şərhləri əlavə etmək"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -162,17 +162,17 @@ msgstr ""
"Şəhləri çap edilən sənədə əlavə edir. Əgər şərh olmadan orijinal sənəd çap "
"etmək istəsəniz bunu söndürə bilərsiniz."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Məcburi rasterizasiya"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Çapdan əvvəl şəkilə rasterizasiya etmək"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -183,53 +183,53 @@ msgstr ""
"bir qədər pis nəticə göstərir, lakin düzgün çap olunan sənədlər üçün "
"yararlıdır."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Çap olunmuş səhifələr üçün miqyaslandırma rejimi"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Miqyas rejimi:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Format"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Şifrələnmiş"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Şifrələnməmiş"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Təhlükəsizlik"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Bəli"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimallaşdırılmış"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -240,12 +240,12 @@ msgstr ""
"\n"
"Tarix: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Poppler %1 istifadə edilməsi"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -256,17 +256,17 @@ msgstr ""
"\n"
"Poppler %2 qarşı yaradılıb"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "PDF Modulu Tənzimləmələri"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: fc57ad16a28d02dea100ceb1c60de14e\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2024-06-03 19:40\n"
"Last-Translator: Darafei Praliaskouski <komzpa@licei2.com>\n"
"Language-Team: Belarusian\n"
@ -229,7 +229,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "Код DVI вызначыў знак невядомага шрыфту."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "Код DVI спасылаецца на шрыфт #%1, які раней не быў вызначаны."
@ -259,12 +259,12 @@ msgstr "Была атрымана забароненая каманда."
msgid "The unknown op-code %1 was encountered."
msgstr "Быў атрыманы невядомы op-код %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Убудоўванне %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -273,13 +273,13 @@ msgstr ""
"Старонка %1: файл PDF <strong>%2</strong> немагчыма пераўтварыць у "
"PostScript.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Старонка %1: Файл PostScript <strong>%2</strong> не знойдзены.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Не ўдалося разабраць даныя памеру паперы \"%1\"."
@ -381,7 +381,7 @@ msgstr ""
"Няправільны параметр у адмысловай камандзе epsf.\n"
"Чакаецца, што лік будзе пасля %1 у %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -390,7 +390,7 @@ msgstr ""
"Файл не знойдзены: \n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -399,7 +399,7 @@ msgstr ""
"Памылка ў файле DVI \"%1\", старонка %2. Не ўдалося інтэрпрэтаваць вугал "
"паварочвання тэксту."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Адмысловая каманда \"%1\" не выканана."

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: fc57ad16a28d02dea100ceb1c60de14e\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2024-02-22 13:35\n"
"Last-Translator: Darafei Praliaskouski <komzpa@licei2.com>\n"
"Language-Team: Belarusian\n"
@ -45,7 +45,7 @@ msgid "Enhance thin lines:"
msgstr "Паляпшэнне тонкіх ліній:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Не"
@ -69,19 +69,19 @@ msgid "Default scaling mode when printing:"
msgstr "Прадвызначаны рэжым маштабавання пры друкаванні:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Падладжванне да вобласці друкавання"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Падладжванне да памераў старонкі"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Няма"
@ -142,22 +142,22 @@ msgstr "Даступныя сертыфікаты"
msgid "&Load Signatures"
msgstr "&Загрузіць подпісы"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "Параметры PDF"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Друкаваць анатацыі"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Уключэнне анатацый у вобласць друкавання дакумента"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -166,17 +166,17 @@ msgstr ""
"Уключэнне анатацый у вобласць друкавання дакумента. Калі вы хочаце "
"надрукаваць арыгінальны дакумент, то можаце адключыць гэты параметр."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Прымусовая растэрызацыя"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Перад друкаваннем выконваць растэрызацыю дакумента"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -187,53 +187,53 @@ msgstr ""
"Звычайна гэта пагаршае якасць, але карысна пры друкаванні дакументаў, якія "
"друкуюцца няправільна."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Рэжым маштабавання старонак, якія друкуюцца"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Рэжым маштабавання:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF в. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Фармат"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Зашыфраваны"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Незашыфраваны"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Бяспека"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Так"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Аптымізавана"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -244,12 +244,12 @@ msgstr ""
"\n"
"Дата: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Выкарыстоўваецца Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -260,17 +260,17 @@ msgstr ""
"\n"
"Убудавана над Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Канфігурацыя рухавіка PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2024-05-30 20:46+0200\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
@ -231,7 +231,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "DVI кодът зададе знак от непознат шрифт."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "DVI кодът отпраща към шрифт #%1, който предварително не е дефиниран."
@ -261,12 +261,12 @@ msgstr "Получена е неправилна команда."
msgid "The unknown op-code %1 was encountered."
msgstr "Възникна непозната грешка op-code %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Вграждане на %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -275,13 +275,13 @@ msgstr ""
"Страница %1: PDF файлът <strong>%2</strong> не може да бъде конвертиран в "
"PostScript.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Страница %1: PostScript файлът <strong>%2</strong> не е открит.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Данните за размера '%1' не могат да бъдат обработени."
@ -384,7 +384,7 @@ msgstr ""
"Грешен параметър в epsf командата.\n"
"Очаква се число с плаваща запетая да следва %1 в %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -393,7 +393,7 @@ msgstr ""
"Файлът не е открит: \n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -402,7 +402,7 @@ msgstr ""
"Грешка в DVI файла '%1', страница %2. Грешка при интерпретиране ъгъла при "
"въртене на текст."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Специалната команда '%1' не е имплементирана."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-06-29 15:00+0200\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
@ -42,7 +42,7 @@ msgid "Enhance thin lines:"
msgstr "Засилване на тънките линии:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Не"
@ -66,19 +66,19 @@ msgid "Default scaling mode when printing:"
msgstr "Стандартен режим на мащабиране за отпечатаните страници:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Побира се в областта за печат"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Побиране на пълна страница"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Няма; отпечатване в оригинален размер"
@ -138,22 +138,22 @@ msgstr "Налични сертификати"
msgid "&Load Signatures"
msgstr "&Зареждане на подписи"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "Настройки на PDF"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Отпечатване на бележките"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Включване на бележките в отпечатвания документ"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -162,17 +162,17 @@ msgstr ""
"Включва на бележките в отпечатвания документ. Ако искате да отпечатате "
"оригиналния документ без бележките, изключете това."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Принудителна растеризация"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Растеризация в изображение преди печат"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -183,53 +183,53 @@ msgstr ""
"отпечатването и. Това обикновено дава по-лоши резултати, но е полезно при "
"отпечатване на документи, които излизат неправилно."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Режим на мащабиране за отпечатаните страници"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Мащабен режим:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Формат"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Шифрован"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Нешифрован"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Сигурност"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Да"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Оптимизиран"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -240,12 +240,12 @@ msgstr ""
"\n"
"Дата: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Използване на Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -256,17 +256,17 @@ msgstr ""
"\n"
"Изграден на базата на Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Настройки на ядро PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdegraphics\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2015-02-09 10:55+0100\n"
"Last-Translator: Samir Ribic <samir.ribic@etf.unsa.ba>\n"
"Language-Team: Bosnian <bs@li.org>\n"
@ -229,7 +229,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "DVI izvorni kod koristi znak iz nepoznatog fonta."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "DVI izvorni kôd koristi font #%1 koji nije prethodno definisan."
@ -259,12 +259,12 @@ msgstr "Pozvana je nedozvoljena naredba."
msgid "The unknown op-code %1 was encountered."
msgstr "Pronađen je nepoznat op-kod %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Ugrađujem %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -273,13 +273,13 @@ msgstr ""
"Stranica %1: Ne mogu da pretvorim PDF datoteku <filename>%2</filename> u "
"PostScript.<br/>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Stranica %1: Ne mogu da nađem PostScript datoteku %2.<br/>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Ne mogu da raščlanim podatke o veličini papira „%1“."
@ -382,7 +382,7 @@ msgstr ""
"Neispravan parametar u epsf posebnoj naredbi.\n"
"Očekivani float za pratiti %1 u %2."
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -391,7 +391,7 @@ msgstr ""
"Datoteka nije pronađena:\n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -400,7 +400,7 @@ msgstr ""
"Greška u DVI datoteci '%1', stranica %2.Ne može se protumačiti ugao rotacije "
"u posebnom tekstu."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Posebna naredba '%1' nije realizovana."

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdegraphics\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2013-10-18 20:29+0000\n"
"Last-Translator: Samir Ribić <Unknown>\n"
"Language-Team: Bosnian <bs@li.org>\n"
@ -43,7 +43,7 @@ msgid "Enhance thin lines:"
msgstr "Pojačaj tanke linije:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Ne"
@ -67,19 +67,19 @@ msgid "Default scaling mode when printing:"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr ""
@ -136,22 +136,22 @@ msgstr ""
msgid "&Load Signatures"
msgstr ""
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF opcije"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Prikaži anotacije"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Uključi anotacije u štampani dokument"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -160,17 +160,17 @@ msgstr ""
"Uključuje anotacije u štampani dokument. Ovo možete onemogućiti ako želite "
"prikazati izvorni neoznačeni dokument."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Forsiraj rasterizaciju"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Rasterizuje u sliku prije štampanja"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -181,53 +181,53 @@ msgstr ""
"obično daje nešto lošije rezultate, ali je korisno za štampanje dokumenata "
"koji inače izgledaju neispravno odštampani."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr ""
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr ""
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Format"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Šifrovano"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Nešifrovano"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Sigurnost"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Da"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimizovano"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -235,12 +235,12 @@ msgid ""
"Date: %2"
msgstr ""
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr ""
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -248,17 +248,17 @@ msgid ""
"Built against Poppler %2"
msgstr ""
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Konfiguracija PDF pozadine"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2023-12-19 13:30+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
@ -233,7 +233,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "El codi DVI ha configurat un caràcter d'una lletra desconeguda."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -265,12 +265,12 @@ msgstr "S'ha trobat una ordre no permesa."
msgid "The unknown op-code %1 was encountered."
msgstr "S'ha trobat el codi %1 desconegut."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "S'està incrustant %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -279,14 +279,14 @@ msgstr ""
"Pàgina %1: el fitxer PDF <strong>%2</strong> no s'ha pogut convertir a "
"PostScript.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr ""
"Pàgina %1: no s'ha trobat el fitxer PostScript <strong>%2</strong>.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "La dada «%1» de la mida de paper no s'ha pogut analitzar."
@ -388,7 +388,7 @@ msgstr ""
"Paràmetre incorrecte a l'ordre especial «epsf».\n"
"S'esperava un flotant després de %1 a %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -397,7 +397,7 @@ msgstr ""
"No s'ha trobat el fitxer:\n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -406,7 +406,7 @@ msgstr ""
"Error en el fitxer DVI «%1», pàgina %2. No s'ha pogut interpretar l'angle en "
"un gir especial de text."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "L'ordre especial «%1» no està implementada."

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-06-29 09:26+0200\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
@ -44,7 +44,7 @@ msgid "Enhance thin lines:"
msgstr "Millora les línies fines:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "No"
@ -68,19 +68,19 @@ msgid "Default scaling mode when printing:"
msgstr "Mode d'escalat predeterminat en imprimir:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Ajusta a l'àrea imprimible"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Ajusta a la pàgina completa"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Res; imprimeix la mida original"
@ -142,22 +142,22 @@ msgstr "Certificats disponibles"
msgid "&Load Signatures"
msgstr "&Carrega signatures"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "Opcions del PDF"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Imprimeix les anotacions"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Inclou les anotacions en el document imprès"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -166,17 +166,17 @@ msgstr ""
"Inclou les anotacions en el document imprès. Podeu desactivar això si voleu "
"imprimir el document original sense anotacions."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Força la rasterització"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Rasteritza en una imatge abans d'imprimir"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -187,53 +187,53 @@ msgstr ""
"Normalment, això dona pitjors resultats, però és útil quan s'imprimeixen "
"documents que semblen imprimir-se incorrectament."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Mode d'escalat per a les pàgines impreses"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Mode d'escala:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Format"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Encriptat"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Sense encriptar"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Seguretat"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Sí"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimitzat"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -244,12 +244,12 @@ msgstr ""
"\n"
"Data: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "S'està usant el Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -260,17 +260,17 @@ msgstr ""
"\n"
"Construït contra el Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Configuració del dorsal de PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2023-12-19 13:30+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
@ -233,7 +233,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "El codi DVI ha configurat un caràcter d'una lletra desconeguda."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -265,12 +265,12 @@ msgstr "S'ha trobat una ordre no permesa."
msgid "The unknown op-code %1 was encountered."
msgstr "S'ha trobat el codi %1 desconegut."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "S'està incrustant %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -279,14 +279,14 @@ msgstr ""
"Pàgina %1: el fitxer PDF <strong>%2</strong> no s'ha pogut convertir a "
"PostScript.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr ""
"Pàgina %1: no s'ha trobat el fitxer PostScript <strong>%2</strong>.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "La dada «%1» de la mida de paper no s'ha pogut analitzar."
@ -388,7 +388,7 @@ msgstr ""
"Paràmetre incorrecte en l'ordre especial «epsf».\n"
"S'esperava un flotant després de %1 a %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -397,7 +397,7 @@ msgstr ""
"No s'ha trobat el fitxer:\n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -406,7 +406,7 @@ msgstr ""
"S'ha produït un error en el fitxer DVI «%1», pàgina %2. No s'ha pogut "
"interpretar l'angle en un gir especial de text."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "L'ordre especial «%1» no està implementada."

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-06-29 09:26+0200\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
@ -44,7 +44,7 @@ msgid "Enhance thin lines:"
msgstr "Millora les línies fines:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "No"
@ -68,19 +68,19 @@ msgid "Default scaling mode when printing:"
msgstr "Mode d'escalat predeterminat en imprimir:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Ajusta a l'àrea imprimible"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Ajusta a la pàgina completa"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Res; imprimix la mida original"
@ -142,22 +142,22 @@ msgstr "Certificats disponibles"
msgid "&Load Signatures"
msgstr "&Carrega signatures"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "Opcions de PDF"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Imprimix les anotacions"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Inclou les anotacions en el document imprés"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -166,17 +166,17 @@ msgstr ""
"Inclou les anotacions en el document imprés. Podeu desactivar açò si voleu "
"imprimir el document original sense anotacions."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Força la rasterització"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Rasteritza en una imatge abans d'imprimir"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -187,53 +187,53 @@ msgstr ""
"Normalment, açò dona pitjors resultats, però és útil quan s'imprimixen "
"documents que pareixen imprimir-se incorrectament."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Mode d'escalat per a les pàgines impreses"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Mode d'escala:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Format"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Encriptat"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Sense encriptar"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Seguretat"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Sí"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimitzat"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -244,12 +244,12 @@ msgstr ""
"\n"
"Data: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "S'està utilitzant Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -260,17 +260,17 @@ msgstr ""
"\n"
"Construït contra Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Configureu el dorsal de PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2021-08-19 17:07+0200\n"
"Last-Translator: Vit Pelcak <vpelcak@suse.cz>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
@ -220,7 +220,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "DVI kód použil znak z neznámého písma."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "DVI kód odkazuje na písmo #%1, které nebylo definováno."
@ -250,12 +250,12 @@ msgstr "Byla provedena neplatná instrukce."
msgid "The unknown op-code %1 was encountered."
msgstr "Byl nalezen neznámý kód %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Vkládám %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -264,13 +264,13 @@ msgstr ""
"Stránka %1: Soubor PDF <strong>%2</strong> nemůže být zkonvertován do "
"PostScriptu.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Strana %1: hledaný řetězec <strong>%2</strong> nebyl nalezen.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Údaje o velikosti papíru '%1' nelze zpracovat."
@ -371,7 +371,7 @@ msgstr ""
"Chybný parametr ve speciálním příkazu epsf.\n"
"Očekáváno racionální číslo %1 za %2."
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -380,7 +380,7 @@ msgstr ""
"Soubor nenalezen:\n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -389,7 +389,7 @@ msgstr ""
"Chyba v DVI souboru '%1' na stránce %2. Nelze interpretovat úhel otočení "
"textu."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Speciální příkaz '%1' není implementován."

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-06-23 12:39+0200\n"
"Last-Translator: Vit Pelcak <vit@pelcak.org>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
@ -43,7 +43,7 @@ msgid "Enhance thin lines:"
msgstr "Zvýraznit tenké čáry:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Ne"
@ -67,19 +67,19 @@ msgid "Default scaling mode when printing:"
msgstr "Výchozí režim škálování při tisku:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Vyplnit tisknutelnou oblast"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Přizpůsobit plné stránce"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Žádné. Vytisknout v původní velikosti."
@ -140,22 +140,22 @@ msgstr "Dostupné certifikáty"
msgid "&Load Signatures"
msgstr "Načíst podp&isy"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF možnosti"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Tisknout poznámky"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Zahrnout poznámky do vytištěného dokumentu"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -164,17 +164,17 @@ msgstr ""
"Zahrne poznámky ve vytištěném dokumentu. Pokud si přejete vytisknout původní "
"neanotovaný dokument, můžete tuto funkci vypnout."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Vynutit rasterizaci"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Před tiskem rasterizovat do obrázku"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -185,53 +185,53 @@ msgstr ""
"k o něco horším výsledkům, ale dá se to použít při tisku dokumentů, které se "
"netisknou v pořádku."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Režim škálování pro vytištěné stránky"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Režim škálování:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Formát"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Zašifrováno"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Nezašifrováno"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Bezpečnost"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Ano"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimalizováno"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -242,12 +242,12 @@ msgstr ""
"\n"
"Datum: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Používám Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -258,17 +258,17 @@ msgstr ""
"\n"
"Sestaveno s Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Nastavení podpůrné vrstvy PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2014-03-09 16:17+0100\n"
"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
"Language-Team: Danish <kde-i18n-doc@kde.org>\n"
@ -261,7 +261,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "DVI-koden satte et tegn fr en ukendt skrifttype."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -295,12 +295,12 @@ msgstr "En ugyldig kommando blev mødt."
msgid "The unknown op-code %1 was encountered."
msgstr "Okular stødte på den ukendte op-kode %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Indlejrer %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -309,13 +309,13 @@ msgstr ""
"Side %1: PDF-filen <strong>%2</strong> kunne ikke konverteres til PostScript."
"<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Side %1: PostScript-filen <strong>%2</strong> kunne ikke findes.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Papirstørrelsesdata '%1' kunne ikke fortolkes."
@ -435,7 +435,7 @@ msgstr ""
"Misdannet parameter i epsf specialkommando.\n"
"Forventede at et flydende kommatal ville følge %1 i %2."
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -444,7 +444,7 @@ msgstr ""
"Fil ikke fundet:\n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -452,7 +452,7 @@ msgid ""
msgstr ""
"Fejl i DVI-fil '%1', side '%2. Kunne ikke fortolke vinkel i tekstrotering."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Kommandoen '%1' er ikke implementeret."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2013-07-10 20:18+0200\n"
"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
"Language-Team: Danish <kde-i18n-doc@kde.org>\n"
@ -42,7 +42,7 @@ msgid "Enhance thin lines:"
msgstr "Forbedr tynde linjer:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Nej"
@ -66,19 +66,19 @@ msgid "Default scaling mode when printing:"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr ""
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr ""
@ -135,22 +135,22 @@ msgstr ""
msgid "&Load Signatures"
msgstr ""
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF-indstillinger"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Udskriv kommentarer"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Medtag kommentarer i det udskrevne dokument"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -159,17 +159,17 @@ msgstr ""
"Medtager kommentarer i det udskrevne dokument. Du kan deaktivere dette hvis "
"du vil udskrive det oprindelige ukommenterede dokument."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Påtving raster"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Konvertér til rasterbillede før udskrivning"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -181,53 +181,53 @@ msgstr ""
"udskriver dokumenter der ser ud til at udskrives fejlagtigt i forhold til "
"originaldokumentet."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr ""
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr ""
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Format"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Krypteret"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Ukrypteret"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Sikkerhed"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Ja"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimeret"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -235,12 +235,12 @@ msgid ""
"Date: %2"
msgstr ""
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr ""
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -248,17 +248,17 @@ msgid ""
"Built against Poppler %2"
msgstr ""
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Konfiguration af PDF-motor"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2019-08-22 08:11+0200\n"
"Last-Translator: Burkhard Lück <lueck@hube-lueck.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
@ -227,7 +227,7 @@ msgid "The DVI code set a character of an unknown font."
msgstr ""
"In der DVI-Datei wird ein Zeichen einer unbekannten Schriftart gesetzt."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -262,12 +262,12 @@ msgstr "Ein ungültiger Befehl ist entdeckt worden."
msgid "The unknown op-code %1 was encountered."
msgstr "Der unbekannte Befehlscode %1 ist entdeckt worden."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Einbetten von %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -276,7 +276,7 @@ msgstr ""
"Seite %1: Die PDF-Datei <strong>%2</strong> kann nicht in PostScript "
"umgewandelt werden.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
@ -284,7 +284,7 @@ msgstr ""
"Seite %1: Die PostScript-Datei <strong>%2</strong> kann nicht gefunden "
"werden.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Die Daten zur Papiergröße „%1“ können nicht einlesen werden."
@ -388,7 +388,7 @@ msgstr ""
"Fehlerhafter Parameter in EPSF Spezial-Befehl.\n"
"Es wird in %2 ein float nach %1 erwartet."
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -397,7 +397,7 @@ msgstr ""
"Datei nicht gefunden:\n"
"%1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -406,7 +406,7 @@ msgstr ""
"Fehler in der DVI-Datei „%1“, Seite %2. Die Winkelangabe der Textdrehung "
"kann nicht ausgewertet werden."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Die spezielle Anweisung „%1“ ist noch nicht implementiert."

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2024-04-23 23:26+0200\n"
"Last-Translator: Johannes Obermayr <johannesobermayr@gmx.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
@ -41,7 +41,7 @@ msgid "Enhance thin lines:"
msgstr "Anzeige dünner Linien verbessern:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Nein"
@ -65,19 +65,19 @@ msgid "Default scaling mode when printing:"
msgstr "Standard-Skalierungsmodus beim Drucken:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Auf druckbaren Bereich anpassen"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Auf ganze Seite anpassen"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "In Originalgröße drucken"
@ -139,22 +139,22 @@ msgstr "Verfügbare Zertifikate"
msgid "&Load Signatures"
msgstr "Signaturen &laden"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF-Optionen"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Anmerkungen drucken"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Anmerkungen in das gedruckte Dokument einfügen"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -163,17 +163,17 @@ msgstr ""
"Fügt Anmerkungen in das gedruckte Dokument ein. Sie können dies "
"deaktivieren, wenn Sie das Originaldokument ohne Anmerkungen drucken möchten."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Rasterung erzwingen"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Vor dem Druck in ein Rasterbild umwandeln"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -185,53 +185,53 @@ msgstr ""
"Dokument jedoch nicht fehlerfrei gedruckt wird, könnte diese Einstellung "
"hilfreich sein."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Skalierungsmodus für Druckseiten"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Skalierungsmodus:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Format"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Verschlüsselt"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Unverschlüsselt"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Sicherheit"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Ja"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimiert"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -242,12 +242,12 @@ msgstr ""
"\n"
"Datum: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Verwendet Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -258,17 +258,17 @@ msgstr ""
"\n"
"Gebaut mit Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Einstellungen zum Anzeigemodul PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2016-06-04 06:49+0200\n"
"Last-Translator: Dimitrios Glentadakis <dglent@free.fr>\n"
"Language-Team: Greek <kde-i18n-el@kde.org>\n"
@ -238,7 +238,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "Ο κώδικας DVI καθόρισε ένα χαρακτήρα μίας άγνωστης γραμματοσειράς."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -272,12 +272,12 @@ msgstr "Βρέθηκε μια άγνωστη εντολή."
msgid "The unknown op-code %1 was encountered."
msgstr "Βρέθηκε ένας άγνωστος κωδικός %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Ενσωμάτωση του %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -286,7 +286,7 @@ msgstr ""
"Σελίδα %1: Το αρχείο PDF <strong>%2</strong> δεν μπόρεσε να μετατραπεί σε "
"PostScript.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
@ -294,7 +294,7 @@ msgstr ""
"Σελίδα %1: Το αρχείο PostScript <strong>%2</strong> ήταν αδύνατο να βρεθεί."
"<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Τα δεδομένα μεγέθους χαρτιού '%1' δεν ήταν δυνατό να αναλυθούν."
@ -401,7 +401,7 @@ msgstr ""
"Κακοδιατυπωμένη παράμετρος στην εντολή epsf.\n"
"Αναμένονταν ένας αριθμός κινητής υποδιαστολής να ακολουθεί το %1 στο %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -410,7 +410,7 @@ msgstr ""
"Το αρχείο δε βρέθηκε: \n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -419,7 +419,7 @@ msgstr ""
"Σφάλμα στο αρχείο DVI '%1', σελίδα %2. Δεν είναι δυνατός ο προσδιορισμός της "
"γωνίας στην εντολή περιστροφής."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Η ειδική εντολή '%1' δεν έχει υλοποιηθεί ακόμη."

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2021-10-04 10:59+0300\n"
"Last-Translator: Stelios <sstavra@gmail.com>\n"
"Language-Team: Greek <kde-i18n-el@kde.org>\n"
@ -44,7 +44,7 @@ msgid "Enhance thin lines:"
msgstr "Εμπλουτισμός λεπτών γραμμών:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Όχι"
@ -69,19 +69,19 @@ msgid "Default scaling mode when printing:"
msgstr "Λειτουργία κλιμάκωσης για τις εκτυπωμένες σελίδες"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Εφαρμογή σε εκτυπώσιμη περιοχή"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Εφαρμογή σε πλήρη σελίδα"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Καμία: εκτύπωση αρχικού μεγέθους"
@ -143,22 +143,22 @@ msgstr "Διαθέσιμες πιστοποιήσεις"
msgid "&Load Signatures"
msgstr "&Φόρτωση υπογραφών"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "Επιλογές PDF"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Εκτύπωση σημειώσεων"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Να περιλαμβάνονται οι σημειώσεις στο εκτυπωμένο έγγραφο"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -168,17 +168,17 @@ msgstr ""
"απενεργοποιήσετε αυτό αν θέλετε να εκτυπώσετε το αρχικό χωρίς σχολιασμό "
"έγγραφο."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Εξαναγκασμός χρωματικής περίπλεξης"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Χρωματική περίπλεξη εικόνας πριν την εκτύπωση"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -189,53 +189,53 @@ msgstr ""
"εκτύπωσή της. Αυτό συνήθως αποδίδει χειρότερο αποτέλεσμα, αλλά είναι χρήσιμο "
"όταν κατά την εκτύπωση τα έγγραφα εμφανίζονται εσφαλμένα."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Λειτουργία κλιμάκωσης για τις εκτυπωμένες σελίδες"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Λειτουργία κλιμάκωσης:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF εκδ. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Τύπος αρχειοθέτησης"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Κρυπτογραφημένο"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Μη κρυπτογραφημένο"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Ασφάλεια"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Ναι"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Βελτιστοποιημένο"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -246,12 +246,12 @@ msgstr ""
"\n"
"Ημερομηνία: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Χρήση Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -262,17 +262,17 @@ msgstr ""
"\n"
"Κατασκευή κατά Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Διαμόρφωση συστήματος υποστήριξης PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2014-06-29 13:08+0100\n"
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
"Language-Team: British English <kde-l10n-en_gb@kde.org>\n"
@ -229,7 +229,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "The DVI code set a character of an unknown font."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -260,12 +260,12 @@ msgstr "An illegal command was encountered."
msgid "The unknown op-code %1 was encountered."
msgstr "The unknown op-code %1 was encountered."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Embedding %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -274,14 +274,14 @@ msgstr ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
"PostScript.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "The papersize data '%1' could not be parsed."
@ -382,7 +382,7 @@ msgstr ""
"Malformed parameter in the epsf special command.\n"
"Expected a float to follow %1 in %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -391,7 +391,7 @@ msgstr ""
"File not found: \n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -400,7 +400,7 @@ msgstr ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
"special."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "The special command '%1' is not implemented."

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2024-05-21 19:34+0100\n"
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
"Language-Team: British English\n"
@ -43,7 +43,7 @@ msgid "Enhance thin lines:"
msgstr "Enhance thin lines:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "No"
@ -67,19 +67,19 @@ msgid "Default scaling mode when printing:"
msgstr "Default scaling mode when printing:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Fit to printable area"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Fit to full page"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "None; print original size"
@ -140,22 +140,22 @@ msgstr "Available Certificates"
msgid "&Load Signatures"
msgstr "&Load Signatures"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF Options"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Print annotations"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Include annotations in the printed document"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -164,17 +164,17 @@ msgstr ""
"Includes annotations in the printed document. You can disable this if you "
"want to print the original unannotated document."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Force rasterisation"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Rasterise into an image before printing"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -185,53 +185,53 @@ msgstr ""
"usually gives somewhat worse results, but is useful when printing documents "
"that appear to print incorrectly."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Scaling mode for the printed pages"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Scale mode:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Format"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Encrypted"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Unencrypted"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Security"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Yes"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimised"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -242,12 +242,12 @@ msgstr ""
"\n"
"Date: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Using Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -258,17 +258,17 @@ msgstr ""
"\n"
"Built against Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "PDF Backend Configuration"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2023-04-07 10:09+0100\n"
"Last-Translator: Oliver Kellogg <olivermkellogg@gmail.com>\n"
"Language-Team: Esperanto <kde-i18n-doc@kde.org>\n"
@ -229,7 +229,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "La DVI kodoprezento havas signon el nekonata tiparo."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "La DVI kodo referis al la tiparo #%1, kiu ne estis difinita antaŭe."
@ -259,12 +259,12 @@ msgstr "Malpermesita komando troviĝis."
msgid "The unknown op-code %1 was encountered."
msgstr "La nekonata opkodo %1 okazis."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Enkorpigante %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -273,13 +273,13 @@ msgstr ""
"Paĝo %1: La PDF dosiero <strong>%2</strong> ne konverteblis al postskripto."
"<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Paĝo %1: La PDF dosiero <strong>%2</strong> ne troveblis.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "La papergranda datumo '%1' ne analizeblis."
@ -381,7 +381,7 @@ msgstr ""
"Misformita parametro en la speciala komando epsf.\n"
"Atendis reelon sekvintan %1 en %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -390,7 +390,7 @@ msgstr ""
"Dosiero ne troviĝis:\n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -399,7 +399,7 @@ msgstr ""
"Eraro en la DVI dosiero '%1', paĝo %2. Ne eblis interpreti la angulon en la "
"teksta rotacio."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "La speciala komando '%1' ne realiĝis."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-06-29 07:50+0100\n"
"Last-Translator: Oliver Kellogg <olivermkellogg@gmail.com>\n"
"Language-Team: esperanto <kde-i18n-eo@kde.org>\n"
@ -42,7 +42,7 @@ msgid "Enhance thin lines:"
msgstr "Plibonigi maldikajn liniojn:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Ne"
@ -66,19 +66,19 @@ msgid "Default scaling mode when printing:"
msgstr "Defaŭlta skaladoreĝimo por la presitaj paĝoj"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Kongruas al printebla areo"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Ĝisrandigi al plena paĝo"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Neniu; presi originalan grandecon"
@ -139,22 +139,22 @@ msgstr "Disponeblaj Atestiloj"
msgid "&Load Signatures"
msgstr "Ŝargi &Subskribojn"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF opcioj"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Presi prinotojn"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Enmeti komentadojn en la presita dokumento"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -163,17 +163,17 @@ msgstr ""
"Inkluzivas komentadojn en la presita dokumento. Vi povas malŝalti ĉi tion se "
"vi volas presi la originalan nekotitan dokumenton."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Devigi la rastrumigon"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Rastrumigi kiel bildon antaŭ ol printi"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -184,53 +184,53 @@ msgstr ""
"ĝenerale donas iel pli malbonaj rezultojn, sed estas utila por printi "
"dokumentojn kiuj ŝajne ne printiĝas taŭge."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Skala reĝimo por la presitaj paĝoj"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Skala reĝimo:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Formato"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Ĉifrita"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Malĉifrita"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Sekureco"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Jes"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimumigita"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -241,12 +241,12 @@ msgstr ""
"\n"
"Dato: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Uzante Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -257,17 +257,17 @@ msgstr ""
"\n"
"Konstruite kontraŭ Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "PDF Backend Agordo"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2014-05-16 12:17+0200\n"
"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
@ -233,7 +233,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "El código DVI establece un carácter de un tipo de letra desconocido."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -267,12 +267,12 @@ msgstr "Se ha encontrado una orden ilegal."
msgid "The unknown op-code %1 was encountered."
msgstr "Se ha encontrado el código de operación desconocido %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Empotrando %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -281,7 +281,7 @@ msgstr ""
"Página %1: el archivo PDF <strong>%2</strong> no puede ser convertido a "
"PostScript.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
@ -289,7 +289,7 @@ msgstr ""
"Página %1: no se puede encontrar el archivo PostScript <strong>%2</strong>."
"<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "No se puede analizar el dato «%1» del tamaño del papel."
@ -393,7 +393,7 @@ msgstr ""
"Parámetro mal formado en la orden especial «epsf».\n"
"Se esperaba un número en coma flotante tras %1 en %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -402,7 +402,7 @@ msgstr ""
"Archivo no encontrado: \n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -411,7 +411,7 @@ msgstr ""
"Error en el archivo DVI «%1», página %2. No se puede interpretar el ángulo "
"en la orden especial de rotación de texto."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "La orden especial «%1» no está implementada."

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-06-30 00:51+0200\n"
"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
@ -41,7 +41,7 @@ msgid "Enhance thin lines:"
msgstr "Mejorar las líneas finas:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "No"
@ -65,19 +65,19 @@ msgid "Default scaling mode when printing:"
msgstr "Modo de escalado predeterminado para imprimir:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Ajustar al área imprimible"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Ajustar a la página completa"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Ninguno; imprimir con el tamaño original"
@ -139,22 +139,22 @@ msgstr "Certificados disponibles"
msgid "&Load Signatures"
msgstr "Cargar &firmas"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "Opciones PDF"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Imprimir comentarios"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Incluir comentarios en el documento impreso"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -163,17 +163,17 @@ msgstr ""
"Incluye las notas en el documento impreso. Puede desactivar esto si desea "
"imprimir el documento original sin comentar."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Forzar conversión a imagen"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Convertir en una imagen antes de imprimir"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -184,53 +184,53 @@ msgstr ""
"Normalmente suele producir peor resultado, pero puede ser de utilidad cuando "
"algunos documentos se imprimen incorrectamente."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Modo de escalado para las páginas impresas"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Modo de escalado:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Formato"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Cifrado"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "No cifrado"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Seguridad"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Sí"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimizado"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -241,12 +241,12 @@ msgstr ""
"\n"
"Fecha: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Usando Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -257,17 +257,17 @@ msgstr ""
"\n"
"Compilado con Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Configuración del motor PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2014-07-18 05:17+0300\n"
"Last-Translator: Marek Laane <bald@smail.ee>\n"
"Language-Team: Estonian <kde-et@linux.ee>\n"
@ -222,7 +222,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "DVI kood määras tundmatu fondi sümboli."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "DVI koodis on viide fondile #%1, mis on eelnevalt määratlemata."
@ -252,12 +252,12 @@ msgstr "Tuvastati lubamatu käsk."
msgid "The unknown op-code %1 was encountered."
msgstr "Tuvastati tundmatu opkood %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "%1 põimimine"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -266,13 +266,13 @@ msgstr ""
"Lehekülg %1: PDF-faili <strong>%2</strong> ei saa teisendada PostScript-"
"failiks.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Lehekülg %1: PostScript-faili <strong>%2</strong> ei leitud.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Paberisuuruse andmete '%1' parsimine nurjus."
@ -373,7 +373,7 @@ msgstr ""
"Vigane parameeter epsf erikäsus.\n"
"Oodati ujukomaarvu järgnemist %1-le %2-s"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -382,7 +382,7 @@ msgstr ""
"Faili ei leitud: \n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -391,7 +391,7 @@ msgstr ""
"Viga DVI-failis \"%1\" leheküljel %2. Teksti pöördenurga interpreteerimine "
"nurjus."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Erikäsk '%1' ei ole rakendatud."

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2019-11-09 21:13+0200\n"
"Last-Translator: Marek Laane <qiilaq69@gmail.com>\n"
"Language-Team: Estonian <kde-et@lists.linux.ee>\n"
@ -42,7 +42,7 @@ msgid "Enhance thin lines:"
msgstr "Peente joonte täiendamine:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Ei"
@ -67,19 +67,19 @@ msgid "Default scaling mode when printing:"
msgstr "Trükitavate lehtede skaleerimisrežiim"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Sobitamine trükitava alaga"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Sobitamine kogu lehele"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Puudub: trükitakse algsuuruses"
@ -136,22 +136,22 @@ msgstr ""
msgid "&Load Signatures"
msgstr ""
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF-i valikud"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Annotatsioonide trükkimine"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Annotatsioonide kaasamine trükitud dokumenti"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -160,17 +160,17 @@ msgstr ""
"Annotatsioonide kaasamine trükitud dokumenti. Selle võib jätta märkimata, "
"kui soovid trükkida algupärast annoteerimata dokumenti."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Rasterdamine jõuga"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Rasterdamine pildiks enne trükkimist"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -181,53 +181,53 @@ msgstr ""
"See annab tavaliselt mõnevõrra kehvema tulemuse, aga on abiks dokumentide "
"trükkimisel, mida muidu ei õnnestu korrektselt trükkida."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Trükitavate lehtede skaleerimisrežiim"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Skaleerimisrežiim:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Vorming"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Krüptitud"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Krüptimata"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Turvalisus"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Jah"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimeeritud"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -235,12 +235,12 @@ msgid ""
"Date: %2"
msgstr ""
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Kasutusel on Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -251,17 +251,17 @@ msgstr ""
"\n"
"Ehitatud Poppler %2 peale"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "PDF-i taustaprogrammi seadistamine"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2018-08-03 14:49+0100\n"
"Last-Translator: Iñigo Salvador Azurmendi <xalba@euskalnet.net>\n"
"Language-Team: Basque <kde-i18n-doc@kde.org>\n"
@ -234,7 +234,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "DVI kodeak letra-tipo ezezagun bateko karakterea ezarri du."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -266,12 +266,12 @@ msgstr "Legez kontrako komando bat aurkitu da."
msgid "The unknown op-code %1 was encountered."
msgstr "%1 eragiketa-kode ezezaguna aurkitu da."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "%1 kapsulatzea"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -280,14 +280,14 @@ msgstr ""
"%1 orria: <strong>%2</strong> PDF fitxategia ezin izan da PostScript-era "
"bihurtu.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr ""
"%1 orria: <strong>%2</strong> PostScript fitxategia ezin izan da aurkitu.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr ""
@ -391,7 +391,7 @@ msgstr ""
"Gaizki osatutako parametroa «epsf» komando berezian.\n"
"Higikor bat espero zen %1-(e)(r)i %2-an jarraitzeko"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -400,7 +400,7 @@ msgstr ""
"Fitxategi ez da aurkitu: \n"
"%1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -409,7 +409,7 @@ msgstr ""
"Errorea '%1' DVI-fitxategian, %2 orria. Ezin izan da angelua interpretatu "
"testu biraketa berezian."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "'%1' komando berezia ez dago inplementatuta."

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-07-14 20:32+0200\n"
"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
@ -45,7 +45,7 @@ msgid "Enhance thin lines:"
msgstr "Areagotu lerro meheak:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Ez"
@ -69,19 +69,19 @@ msgid "Default scaling mode when printing:"
msgstr "Inprimatzeko eskalatze modu lehenetsia:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Egokitu azalera inprimagarrira"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Egokitu orri osora"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Bat ere ez; inprimatu jatorrizko neurrian"
@ -143,22 +143,22 @@ msgstr "Eskura dauden ziurtagiriak"
msgid "&Load Signatures"
msgstr "&Zamatu sinadurak"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF aukerak"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Inprimatu idatzoharrak"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Sartu idatzoharrak inprimatutako dokumentuan"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -167,17 +167,17 @@ msgstr ""
"Idatzoharrak sartzen ditu inprimatutako dokumentuan. Hau desgaitu dezakezu "
"jatorrizko idatzoharrik gabeko dokumentua inprimatu nahi baduzu."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Derrigortu bilbatzea"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Bilbatu irudi batean inprimatu aurretik"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -188,53 +188,53 @@ msgstr ""
"aurretik. Honek emaitza okerragoak eman ohi ditu, baina beste eratan oker "
"inprimatzen diren dokumentuak inprimatzeko baliagarria izaten da."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Inprimatutako orrientzako eskalatzeko modua"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Eskalatze modua:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF %1.%2 bertsioa"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Formatua"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Zifratuta"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Zifratu gabe"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Segurtasuna"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Bai"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimizatuta"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -245,12 +245,12 @@ msgstr ""
"\n"
"Data: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "«Poppler» %1 erabiltzen"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -261,17 +261,17 @@ msgstr ""
"\n"
"«Poppler» %2 erabiliz eraikia"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "PDF bizkarraldekoaren konfigurazioa"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2014-05-15 21:14+0300\n"
"Last-Translator: Lasse Liehu <lasse.liehu@gmail.com>\n"
"Language-Team: Finnish <lokalisointi@lists.coss.fi>\n"
@ -224,7 +224,7 @@ msgstr ""
msgid "The DVI code set a character of an unknown font."
msgstr "DVI-koodi latoi merkin, joka kuuluu tuntemattomaan fonttiin."
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr "DVI-koodi viittaa fonttiin #%1, jota ei ole vielä määritelty."
@ -254,12 +254,12 @@ msgstr "Kohdattiin virheellinen komento."
msgid "The unknown op-code %1 was encountered."
msgstr "Kohdattiin tuntematon koodi %1."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Sulautetaan %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -268,13 +268,13 @@ msgstr ""
"Sivu %1: PDF-tiedostoa <strong>%2</strong> ei voitu muuntaa PostScript-"
"muotoon.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
msgstr "Sivu %1: PostScript-tiedostoa <strong>%2</strong> ei löytynyt.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Paperin kokotietoa %1 ei kyetty tulkitsemaan."
@ -375,7 +375,7 @@ msgstr ""
"Väärin muodostettu parametri epsf special -komennossa.\n"
"Odotettiin liukulukua seuraamaan arvoa %1 kohdassa %2."
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -384,7 +384,7 @@ msgstr ""
"Tiedostoa ei löydy:\n"
"%1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -393,7 +393,7 @@ msgstr ""
"Virhe DVI-tiedostossa %1 sivulla %2. Ei voitu tulkita kulmaa tekstin "
"kiertokomennossa."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "Komentoa %1 ei ole vielä rakennettu ohjelmaan."

View File

@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-07-27 15:57+0300\n"
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
@ -50,7 +50,7 @@ msgid "Enhance thin lines:"
msgstr "Paranna kapeita viivoja:"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Ei"
@ -74,19 +74,19 @@ msgid "Default scaling mode when printing:"
msgstr "Tulostettujen sivujen oletusskaalaustapa:"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Sovita tulostusalueeseen"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Sovita koko sivulle"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Ei mitään: tulosta alkuperäinen sivu"
@ -148,22 +148,22 @@ msgstr "Saatavilla olevat varmenteet"
msgid "&Load Signatures"
msgstr "&Lataa allekirjoitukset"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "PDF-asetukset"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Tulosta merkinnät"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Sisällytä merkinnät tulostettavaan tiedostoon"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -172,17 +172,17 @@ msgstr ""
"Sisällytä merkinnät tulostettavaan tiedostoon. Voit poistaa tämän käytöstä, "
"jos haluat tulostaa alkuperäisen tiedoston merkinnöittä."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Pakota hahmonnus"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Hahmonna kuvaksi ennen tulostusta"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -193,53 +193,53 @@ msgstr ""
"laatua hiukan, mutta auttaa muutoin virheellisesti tulostuvien tiedostojen "
"tulostamisessa."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Tulostettujen sivujen skaalaustapa"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Skaalaustapa:"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF v. %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Muoto"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Salattu"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Salaamaton"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Turvallisuus"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Kyllä"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimoitu"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -250,12 +250,12 @@ msgstr ""
"\n"
"Päiväys: %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Käytössä Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -266,17 +266,17 @@ msgstr ""
"\n"
"Koostettu Poppler-versiolle %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "PDF-taustaosan asetukset"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_dvi\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-02-08 00:37+0000\n"
"POT-Creation-Date: 2024-06-16 00:37+0000\n"
"PO-Revision-Date: 2021-01-13 17:30+0100\n"
"Last-Translator: Xavier Besnard <xavier.besnard@neuf.fr>\n"
"Language-Team: French <kde-francophone@kde.org>\n"
@ -247,7 +247,7 @@ msgid "The DVI code set a character of an unknown font."
msgstr "Le code « DVI » définit un caractère d'une police inconnue."
# unreviewed-context
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:668
#: dviRenderer_draw.cpp:270 dviRenderer_prescan.cpp:660
#, kde-format
msgid "The DVI code referred to font #%1, which was not previously defined."
msgstr ""
@ -284,12 +284,12 @@ msgstr "Une commande illégale a été rencontrée."
msgid "The unknown op-code %1 was encountered."
msgstr "Le code de commande %1 qui a été rencontré est inconnu."
#: dviRenderer_prescan.cpp:87
#: dviRenderer_prescan.cpp:83
#, kde-format
msgid "Embedding %1"
msgstr "Intégration de %1"
#: dviRenderer_prescan.cpp:105
#: dviRenderer_prescan.cpp:101
#, kde-format
msgid ""
"Page %1: The PDF file <strong>%2</strong> could not be converted to "
@ -298,7 +298,7 @@ msgstr ""
"Page %1 : impossible de convertir en « PostScript » le fichier « PDF » "
"<strong>%2</strong>.<br>"
#: dviRenderer_prescan.cpp:107
#: dviRenderer_prescan.cpp:103
#, kde-format
msgid ""
"Page %1: The PostScript file <strong>%2</strong> could not be found.<br>"
@ -306,7 +306,7 @@ msgstr ""
"Page %1 : impossible de trouver le fichier « PostScript » <strong>%2</"
"strong>.<br>"
#: dviRenderer_prescan.cpp:261
#: dviRenderer_prescan.cpp:257
#, kde-format
msgid "The papersize data '%1' could not be parsed."
msgstr "Impossible d'analyser la donnée de taille de papier « %1 »."
@ -409,7 +409,7 @@ msgstr ""
"Paramètre mal formé dans la commande spéciale « epsf ».\n"
"Un paramètre de type flottant était attendu à la suite de %1 dans %2"
#: special.cpp:446
#: special.cpp:442
#, kde-format
msgid ""
"File not found: \n"
@ -418,7 +418,7 @@ msgstr ""
"Impossible de trouver le fichier : \n"
" %1"
#: special.cpp:695
#: special.cpp:691
#, kde-format
msgid ""
"Error in DVIfile '%1', page %2. Could not interpret angle in text rotation "
@ -427,7 +427,7 @@ msgstr ""
"Erreur dans le fichier « DVI » « %1 », page %2. Impossible d'interpréter "
"l'angle dans la rotation spéciale de texte."
#: special.cpp:714
#: special.cpp:710
#, kde-format
msgid "The special command '%1' is not implemented."
msgstr "La commande spéciale « %1 » n'est pas implémentée."

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: okular_poppler\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-04-21 00:37+0000\n"
"POT-Creation-Date: 2024-06-20 00:38+0000\n"
"PO-Revision-Date: 2023-07-17 21:54+0200\n"
"Last-Translator: Xavier Besnard <xavier.besnard@kde.org>\n"
"Language-Team: French <kde-francophone@kde.org>\n"
@ -50,7 +50,7 @@ msgid "Enhance thin lines:"
msgstr "Épaissir les lignes fines :"
#. i18n: ectx: property (text), item, widget (KComboBox, kcfg_EnhanceThinLines)
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:943
#: conf/pdfsettingswidget.ui:37 generator_pdf.cpp:970
#, kde-format
msgid "No"
msgstr "Non"
@ -74,19 +74,19 @@ msgid "Default scaling mode when printing:"
msgstr "Mode de mise à l'échelle par défaut pour l'impression :"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:103
#: conf/pdfsettingswidget.ui:80 generator_pdf.cpp:100
#, kde-format
msgid "Fit to printable area"
msgstr "Ajuster à la zone imprimable"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:104
#: conf/pdfsettingswidget.ui:85 generator_pdf.cpp:101
#, kde-format
msgid "Fit to full page"
msgstr "Ajuster à la page entière"
#. i18n: ectx: property (text), item, widget (QComboBox, kcfg_PrintScaleMode)
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:105
#: conf/pdfsettingswidget.ui:90 generator_pdf.cpp:102
#, kde-format
msgid "None; print original size"
msgstr "Aucun ; imprimer en taille originale"
@ -148,22 +148,22 @@ msgstr "Certificats disponibles"
msgid "&Load Signatures"
msgstr "Charger &les signatures"
#: generator_pdf.cpp:88
#: generator_pdf.cpp:85
#, kde-format
msgid "PDF Options"
msgstr "Options « PDF »"
#: generator_pdf.cpp:90
#: generator_pdf.cpp:87
#, kde-format
msgid "Print annotations"
msgstr "Imprimer les annotations"
#: generator_pdf.cpp:91
#: generator_pdf.cpp:88
#, kde-format
msgid "Include annotations in the printed document"
msgstr "Insérer les annotations dans le document imprimé"
#: generator_pdf.cpp:92
#: generator_pdf.cpp:89
#, kde-format
msgid ""
"Includes annotations in the printed document. You can disable this if you "
@ -172,17 +172,17 @@ msgstr ""
"Insère les annotations dans le document imprimé. Vous pouvez désactiver ceci "
"si vous souhaitez imprimer le document original sans annotation."
#: generator_pdf.cpp:94
#: generator_pdf.cpp:91
#, kde-format
msgid "Force rasterization"
msgstr "Forcer la rastérisation (conversion en image)"
#: generator_pdf.cpp:95
#: generator_pdf.cpp:92
#, kde-format
msgid "Rasterize into an image before printing"
msgstr "Rastériser (convertir en image) avant l'impression"
#: generator_pdf.cpp:96
#: generator_pdf.cpp:93
#, kde-format
msgid ""
"Forces the rasterization of each page into an image before printing it. This "
@ -194,53 +194,53 @@ msgstr ""
"utile pour imprimer des documents dont l'impression directe semble "
"incorrecte."
#: generator_pdf.cpp:106
#: generator_pdf.cpp:103
#, kde-format
msgid "Scaling mode for the printed pages"
msgstr "Mode de mise à l'échelle pour les pages imprimées"
#: generator_pdf.cpp:107
#: generator_pdf.cpp:104
#, kde-format
msgid "Scale mode:"
msgstr "Mode de mise à l'échelle :"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgctxt "PDF v. <version>"
msgid "PDF v. %1.%2"
msgstr "PDF version %1.%2"
#: generator_pdf.cpp:941
#: generator_pdf.cpp:968
#, kde-format
msgid "Format"
msgstr "Format"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Encrypted"
msgstr "Chiffré"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Unencrypted"
msgstr "Non chiffré"
#: generator_pdf.cpp:942
#: generator_pdf.cpp:969
#, kde-format
msgid "Security"
msgstr "Sécurité"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Yes"
msgstr "Oui"
#: generator_pdf.cpp:943
#: generator_pdf.cpp:970
#, kde-format
msgid "Optimized"
msgstr "Optimisé"
#: generator_pdf.cpp:1375
#: generator_pdf.cpp:1396
#, kde-format
msgid ""
"Signed by: %1\n"
@ -251,12 +251,12 @@ msgstr ""
"\n"
"Date : %2"
#: generator_pdf.cpp:1582
#: generator_pdf.cpp:1603
#, kde-format
msgid "Using Poppler %1"
msgstr "Utilisation de Poppler %1"
#: generator_pdf.cpp:1584
#: generator_pdf.cpp:1605
#, kde-format
msgid ""
"Using Poppler %1\n"
@ -267,17 +267,17 @@ msgstr ""
"\n"
"Construit sur Poppler %2"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF"
msgstr "PDF"
#: generator_pdf.cpp:1619
#: generator_pdf.cpp:1640
#, kde-format
msgid "PDF Backend Configuration"
msgstr "Configuration du moteur PDF"
#: generator_pdf.cpp:2107
#: generator_pdf.cpp:2125
#, kde-format
msgid ""
"Some errors were found in the document, Okular might not be able to show the "

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More