Hello community, here is the log from the commit of package sonnet for openSUSE:Factory checked in at 2016-03-16 10:32:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sonnet (Old) and /work/SRC/openSUSE:Factory/.sonnet.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sonnet" Changes: -------- --- /work/SRC/openSUSE:Factory/sonnet/sonnet.changes 2016-02-24 18:58:04.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.sonnet.new/sonnet.changes 2016-03-16 10:32:49.000000000 +0100 @@ -1,0 +2,12 @@ +Sun Mar 6 10:05:07 UTC 2016 - hrvoje.sen...@gmail.com + +- Update to 5.20.0 (boo#970856) + * Don't disable language detection just because a language is set + * Disable automatic disabling of automatic spelling by default + * Fix TextBreaks + * Fix Hunspell dictionary search paths missing '/' (kde#359866) + * Add <app dir>/../share/hunspell to dictionary search path + * For more details please see: + https://www.kde.org/announcements/kde-frameworks-5.20.0.php + +------------------------------------------------------------------- Old: ---- sonnet-5.19.0.tar.xz New: ---- sonnet-5.20.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sonnet.spec ++++++ --- /var/tmp/diff_new_pack.9SZBVD/_old 2016-03-16 10:32:50.000000000 +0100 +++ /var/tmp/diff_new_pack.9SZBVD/_new 2016-03-16 10:32:50.000000000 +0100 @@ -18,9 +18,9 @@ %bcond_without lang %define sonum 5 -%define _tar_path 5.19 +%define _tar_path 5.20 Name: sonnet -Version: 5.19.0 +Version: 5.20.0 Release: 0 #BuildRequires: aspell-devel BuildRequires: cmake >= 2.8.12 ++++++ sonnet-5.19.0.tar.xz -> sonnet-5.20.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/CMakeLists.txt new/sonnet-5.20.0/CMakeLists.txt --- old/sonnet-5.19.0/CMakeLists.txt 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/CMakeLists.txt 2016-03-05 20:15:12.000000000 +0100 @@ -4,7 +4,7 @@ project(Sonnet) include(FeatureSummary) -find_package(ECM 5.19.0 NO_MODULE) +find_package(ECM 5.20.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -26,7 +26,7 @@ include(ECMPoQmTools) -set(KF5_VERSION "5.19.0") # handled by release scripts +set(KF5_VERSION "5.20.0") # handled by release scripts ecm_setup_version(${KF5_VERSION} VARIABLE_PREFIX SONNET VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/sonnet_version.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/autotests/CMakeLists.txt new/sonnet-5.20.0/autotests/CMakeLists.txt --- old/sonnet-5.19.0/autotests/CMakeLists.txt 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/autotests/CMakeLists.txt 2016-03-05 20:15:12.000000000 +0100 @@ -14,7 +14,7 @@ endmacro(SONNET_UNIT_TESTS) sonnet_unit_tests( - # test_filter + test_filter test_core test_suggest test_settings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/autotests/test_filter.cpp new/sonnet-5.20.0/autotests/test_filter.cpp --- old/sonnet-5.19.0/autotests/test_filter.cpp 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/autotests/test_filter.cpp 2016-03-05 20:15:12.000000000 +0100 @@ -20,7 +20,7 @@ */ #include "test_filter.h" -#include "filter_p.h" +#include "tokenizer_p.h" #include <qtest.h> #include <QTextBoundaryFinder> @@ -37,72 +37,34 @@ int start; }; -void SonnetFilterTest::testFilter() +void SonnetFilterTest::testLatin() { - QString buffer("This is a sample thing. Please test me . He's don't Le'Clerk."); + QString buffer(" This is a sample thing. Please test me ... He's don't Le'Clerk."); QList<Hit> hits; - hits.append(Hit("This", 0)); - hits.append(Hit("is", 5)); - hits.append(Hit("a", 12)); - hits.append(Hit("sample", 14)); - hits.append(Hit("thing", 21)); - hits.append(Hit("Please", 28)); - hits.append(Hit("test", 35)); - hits.append(Hit("me", 40)); - hits.append(Hit("He's", 49)); - hits.append(Hit("don't", 54)); - hits.append(Hit("Le'Clerk", 60)); + hits.append(Hit("This", 2)); + hits.append(Hit("is", 7)); + hits.append(Hit("a", 14)); + hits.append(Hit("sample", 16)); + hits.append(Hit("thing", 23)); + hits.append(Hit("Please", 30)); + hits.append(Hit("test", 37)); + hits.append(Hit("me", 42)); + hits.append(Hit("He's", 53)); + hits.append(Hit("don't", 58)); + hits.append(Hit("Le'Clerk", 64)); - Filter filter; - filter.setBuffer(buffer); + WordTokenizer tokenizer; + tokenizer.setBuffer(buffer); - Word w; + QStringRef w; int hitNumber = 0; - while (!(w = filter.nextWord()).end) { - //qDebug()<< "Found word \""<< w.word << "\" which starts at position " << w.start; - QCOMPARE(w.word, hits[hitNumber].word); - QCOMPARE(w.start, hits[hitNumber].start); + while (tokenizer.hasNext()) { + w = tokenizer.next(); + QCOMPARE(w.toString(), hits[hitNumber].word); + QCOMPARE(w.position(), hits[hitNumber].start); ++hitNumber; } QCOMPARE(hitNumber, hits.count()); - - // ? filter.setBuffer( buffer ); -} - -void SonnetFilterTest::testWordAt() -{ - QString buffer("This is a sample thing. Please test me . He's don't Le'Clerk."); - QList<Hit> hits; - hits.append(Hit("This", 0)); - hits.append(Hit("is", 5)); - hits.append(Hit("a", 12)); - hits.append(Hit("Please", 28)); - hits.append(Hit("me", 40)); - - Filter filter; - filter.setBuffer(buffer); - Word word; - - word = filter.wordAtPosition(3); - QCOMPARE(word.word, hits[0].word); - QCOMPARE(word.start, hits[0].start); - - word = filter.wordAtPosition(5); - QCOMPARE(word.word, hits[1].word); - QCOMPARE(word.start, hits[1].start); - - word = filter.wordAtPosition(12); - QCOMPARE(word.word, hits[2].word); - QCOMPARE(word.start, hits[2].start); - - word = filter.wordAtPosition(29); - QCOMPARE(word.word, hits[3].word); - QCOMPARE(word.start, hits[3].start); - - word = filter.wordAtPosition(42); - QCOMPARE(word.word, hits[4].word); - QCOMPARE(word.start, hits[4].start); - } static QVector<ushort> @@ -128,7 +90,7 @@ hits.append(Hit(QString::fromUtf8("राजभाषा"), 38)); hits.append(Hit(QString::fromUtf8("असून"), 46)); hits.append(Hit(QString::fromUtf8("सुमारे"), 51)); - //hits.append( Hit( QString::fromUtf8("९"), 58 ) ); // This is the number 9, so we don't spell-check it + hits.append(Hit( QString::fromUtf8("९"), 58 ) ); // This is the number 9, so we don't spell-check it hits.append(Hit(QString::fromUtf8("कोटी"), 60)); hits.append(Hit(QString::fromUtf8("लोकांची"), 65)); hits.append(Hit(QString::fromUtf8("मातृभाषा"), 73)); @@ -137,22 +99,44 @@ hits.append(Hit(QString::fromUtf8("भाषा"), 93)); hits.append(Hit(QString::fromUtf8("कमीत"), 98)); hits.append(Hit(QString::fromUtf8("कमी"), 103)); - //hits.append( Hit( QString::fromUtf8("१०००"), 107 ) ); // just a number + hits.append( Hit( QString::fromUtf8("१०००"), 107 ) ); // just a number hits.append(Hit(QString::fromUtf8("वर्षापासून"), 112)); hits.append(Hit(QString::fromUtf8("अस्तित्वात"), 123)); hits.append(Hit(QString::fromUtf8("आहे"), 134)); buffer = QString::fromUtf8("मराठी भाषा महाराष्ट्र व गोवा राज्याची राजभाषा असून सुमारे ९ कोटी लोकांची मातृभाषा आहे. मराठी भाषा कमीत कमी १००० वर्षापासून अस्तित्वात आहे."); - Filter filter; - filter.setBuffer(buffer); - Word w; + WordTokenizer tokenizer; + tokenizer.setBuffer(buffer); + QStringRef w; + int hitNumber = 0; + while (tokenizer.hasNext()) { + w = tokenizer.next(); + QVector<ushort> unicode = convertToUnicode(w.toString()); + QCOMPARE(w.toString(), hits[hitNumber].word); + QCOMPARE(w.position(), hits[hitNumber].start); + ++hitNumber; + } + QCOMPARE(hitNumber, hits.count()); +} + +void SonnetFilterTest::testSentence() +{ + QString buffer("This is a sample thing. Please test me ... He's don't Le'Clerk."); + QList<Hit> hits; + hits.append(Hit("This is a sample thing. ", 0)); + hits.append(Hit("Please test me ... ", 28)); + hits.append(Hit("He's don't Le'Clerk.", 51)); + + SentenceTokenizer tokenizer; + tokenizer.setBuffer(buffer); + + QStringRef w; int hitNumber = 0; - while (!(w = filter.nextWord()).end) { - QVector<ushort> unicode = convertToUnicode(w.word); - //qDebug()<< "Found word \""<< unicode << "\" which starts at position " << w.start <<", len = "<<w.word.length(); - QCOMPARE(w.word, hits[hitNumber].word); - QCOMPARE(w.start, hits[hitNumber].start); + while (tokenizer.hasNext()) { + w = tokenizer.next(); + QCOMPARE(w.toString(), hits[hitNumber].word); + QCOMPARE(w.position(), hits[hitNumber].start); ++hitNumber; } QCOMPARE(hitNumber, hits.count()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/autotests/test_filter.h new/sonnet-5.20.0/autotests/test_filter.h --- old/sonnet-5.19.0/autotests/test_filter.h 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/autotests/test_filter.h 2016-03-05 20:15:12.000000000 +0100 @@ -26,9 +26,9 @@ { Q_OBJECT private Q_SLOTS: - void testFilter(); - void testWordAt(); + void testLatin(); void testIndic(); + void testSentence(); }; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/po/ast/sonnet5_qt.po new/sonnet-5.20.0/po/ast/sonnet5_qt.po --- old/sonnet-5.19.0/po/ast/sonnet5_qt.po 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/po/ast/sonnet5_qt.po 2016-03-05 20:15:12.000000000 +0100 @@ -1,13 +1,13 @@ # Copyright (C) YEAR This_file_is_part_of_KDE # This file is distributed under the same license as the PACKAGE package. # -# Enol P. <en...@softastur.org>, 2015, 2016. +# enolp. <en...@softastur.org>, 2015, 2016. msgid "" msgstr "" "Project-Id-Version: kdelibs4-1\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2014-03-23 01:50+0000\n" -"PO-Revision-Date: 2016-02-04 13:22+0100\n" +"PO-Revision-Date: 2016-02-06 23:22+0100\n" "Last-Translator: enolp <en...@sofastur.org>\n" "Language-Team: Asturian <>\n" "Language: ast\n" @@ -35,113 +35,71 @@ msgstr "80" #: core/loader.cpp:176 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "-ise suffixes" msgctxt "Sonnet::Loader|dictionary variant" msgid "-ise suffixes" msgstr "sufixos -ise" #: core/loader.cpp:177 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "-ize suffixes" msgctxt "Sonnet::Loader|dictionary variant" msgid "-ize suffixes" msgstr "sufixos -ize" #: core/loader.cpp:178 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "-ise suffixes and with accents" msgctxt "Sonnet::Loader|dictionary variant" msgid "-ise suffixes and with accents" msgstr "sufixos -ise y con acentos" #: core/loader.cpp:179 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "-ise suffixes and without accents" msgctxt "Sonnet::Loader|dictionary variant" msgid "-ise suffixes and without accents" msgstr "sufixos -ise y ensin acentos" #: core/loader.cpp:180 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "-ize suffixes and with accents" msgctxt "Sonnet::Loader|dictionary variant" msgid "-ize suffixes and with accents" msgstr "sufixos -ize y con acentos" #: core/loader.cpp:181 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "-ize suffixes and without accents" msgctxt "Sonnet::Loader|dictionary variant" msgid "-ize suffixes and without accents" msgstr "sufixos -ize y ensin acentos" #: core/loader.cpp:182 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "large" msgctxt "Sonnet::Loader|dictionary variant" msgid "large" msgstr "grande" #: core/loader.cpp:183 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "medium" msgctxt "Sonnet::Loader|dictionary variant" msgid "medium" -msgstr "mediu" +msgstr "media" #: core/loader.cpp:184 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "small" msgctxt "Sonnet::Loader|dictionary variant" msgid "small" -msgstr "pequeñu" +msgstr "pequeña" #: core/loader.cpp:185 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "variant 0" msgctxt "Sonnet::Loader|dictionary variant" msgid "variant 0" msgstr "variante 0" #: core/loader.cpp:186 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "variant 1" msgctxt "Sonnet::Loader|dictionary variant" msgid "variant 1" msgstr "variante 1" #: core/loader.cpp:187 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "variant 2" msgctxt "Sonnet::Loader|dictionary variant" msgid "variant 2" msgstr "variante 2" #: core/loader.cpp:188 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "without accents" msgctxt "Sonnet::Loader|dictionary variant" msgid "without accents" msgstr "ensin acentos" #: core/loader.cpp:189 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "with accents" msgctxt "Sonnet::Loader|dictionary variant" msgid "with accents" msgstr "con acentos" @@ -149,30 +107,25 @@ #: core/loader.cpp:190 msgctxt "Sonnet::Loader|dictionary variant" msgid "with ye, modern russian" -msgstr "" +msgstr "con «ye», rusu modernu" #: core/loader.cpp:191 msgctxt "Sonnet::Loader|dictionary variant" msgid "with yeyo, modern and old russian" -msgstr "" +msgstr "con «yeyo», rusu modernu y antiguu" #: core/loader.cpp:192 msgctxt "Sonnet::Loader|dictionary variant" msgid "with yo, old russian" -msgstr "" +msgstr "con «yo», rusu antiguu" #: core/loader.cpp:193 -#, fuzzy -#| msgctxt "dictionary variant" -#| msgid "extended" msgctxt "Sonnet::Loader|dictionary variant" msgid "extended" -msgstr "espardíu" +msgstr "espardida" #: core/loader.cpp:227 -#, fuzzy, qt-format -#| msgctxt "dictionary name. %1-language, %2-country and %3 variant name" -#| msgid "%1 (%2) [%3]" +#, qt-format msgctxt "" "Sonnet::Loader|dictionary name; %1 = language name, %2 = country name and %3 " "= language variant name" @@ -180,23 +133,17 @@ msgstr "%1 (%2) [%3]" #: core/loader.cpp:230 -#, fuzzy, qt-format -#| msgctxt "name of digit set with digit string, e.g. 'Arabic (0123456789)'" -#| msgid "%1 (%2)" +#, qt-format msgctxt "Sonnet::Loader|dictionary name; %1 = language name, %2 = country name" msgid "%1 (%2)" msgstr "%1 (%2)" #: ui/configdialog.cpp:50 -#, fuzzy -#| msgid "Send Confirmation" msgctxt "Sonnet::ConfigDialog|" msgid "Spell Checking Configuration" -msgstr "Unviar confirmación" +msgstr "Configuración de comprobación ortográfica" #: ui/configui.ui:41 -#, fuzzy -#| msgid "Options" msgctxt "SonnetConfigUI|" msgid "Options" msgstr "Opciones" @@ -207,46 +154,34 @@ msgstr "Habilitar auto-deteición de &llingua" #: ui/configui.ui:54 -#, fuzzy -#| msgid "Enable &background spellchecking" msgctxt "SonnetConfigUI|" msgid "Enable &background spellchecking" -msgstr "Activar la igua ortográfica en segun&du planu" +msgstr "Habilitar la comprobación ortográfica de &fondu" #: ui/configui.ui:61 -#, fuzzy -#| msgid "As-you-type spell checking enabled." msgctxt "SonnetConfigUI|" msgid "&Automatic spell checking enabled by default" -msgstr "Correición ortográfica sobre la marcha activada." +msgstr "Comprobación ortográfica &automática habilitada por defeutu" #: ui/configui.ui:68 -#, fuzzy -#| msgid "Skip all &uppercase words" msgctxt "SonnetConfigUI|" msgid "Skip all &uppercase words" -msgstr "Saltar toles pallabres en mayúsc&ulas" +msgstr "Saltar toles pallabres mayúsc&ules" #: ui/configui.ui:75 -#, fuzzy -#| msgid "S&kip run-together words" msgctxt "SonnetConfigUI|" msgid "S&kip run-together words" msgstr "Saltar toles palla&bres compuestes" #: ui/configui.ui:85 -#, fuzzy -#| msgid "Default language:" msgctxt "SonnetConfigUI|" msgid "Default language:" -msgstr "Llingua predeterminada:" +msgstr "Llingua por defeutu:" #: ui/configui.ui:95 -#, fuzzy -#| msgid "Ignored Words" msgctxt "SonnetConfigUI|" msgid "Ignored Words:" -msgstr "Pallabres inoraes" +msgstr "Pallabres inoraes:" #: ui/configui.ui:109 msgctxt "SonnetConfigUI|" @@ -259,85 +194,53 @@ msgstr "&Desaniciar" #: ui/configui.ui:160 -#, fuzzy -#| msgid "Enable &background spellchecking" msgctxt "SonnetConfigUI|" msgid "No backend found for spell checking" -msgstr "Activar la igua ortográfica en segun&du planu" +msgstr "Nun s'alcontró backend dalu pa la comprobación ortográfica" #: ui/dialog.cpp:100 ui/dialog.cpp:224 ui/dialog.cpp:433 -#, fuzzy -#| msgid "Check Spelling" msgctxt "Sonnet::Dialog|@title:window" msgid "Check Spelling" msgstr "Comprobar ortografía" #: ui/dialog.cpp:223 -#, fuzzy -#| msgctxt "progress label" -#| msgid "Spell checking in progress..." msgctxt "Sonnet::Dialog|progress label" msgid "Spell checking in progress..." -msgstr "Comprobación d'ortografía en cursu..." +msgstr "Comprobación ortografica en cursu..." #: ui/dialog.cpp:244 -#, fuzzy -#| msgid "Spell check stopped." msgctxt "Sonnet::Dialog|" msgid "Spell check stopped." -msgstr "Correición ortográfica parada." +msgstr "Paróse la correición ortográfica" #: ui/dialog.cpp:254 -#, fuzzy -#| msgid "Spell check canceled." msgctxt "Sonnet::Dialog|" msgid "Spell check canceled." -msgstr "Correición ortográfica encaboxada." +msgstr "Encaboxóse la correición ortográfica" #: ui/dialog.cpp:430 ui/dialog.cpp:433 -#, fuzzy -#| msgid "Spell check complete." msgctxt "Sonnet::Dialog|" msgid "Spell check complete." -msgstr "Correición ortográfica completada." +msgstr "Completóse correición ortográfica" #: ui/highlighter.cpp:229 ui/highlighter.cpp:251 -#, fuzzy -#| msgid "As-you-type spell checking enabled." msgctxt "Sonnet::Highlighter|" msgid "As-you-type spell checking enabled." -msgstr "Correición ortográfica sobre la marcha activada." +msgstr "Habilitóse la correición ortográfica sobre la marcha." #: ui/highlighter.cpp:232 -#, fuzzy -#| msgid "Too many misspelled words. As-you-type spell checking disabled." msgctxt "Sonnet::Highlighter|" msgid "Too many misspelled words. As-you-type spell checking disabled." msgstr "" -"Abondes pallabres mal escrites. Igua ortográfica sobre la marcha desactivada." +"Milenta pallabres mal escrites. Deshabilitóse la comprobación ortográfica " +"sobre la marcha." #: ui/highlighter.cpp:253 -#, fuzzy -#| msgid "As-you-type spell checking disabled." msgctxt "Sonnet::Highlighter|" msgid "As-you-type spell checking disabled." -msgstr "Correición ortográfica sobre la marcha desactivada." +msgstr "Deshabilitóse la correición ortográfica sobre la marcha." #: ui/sonnetui.ui:30 ui/sonnetui.ui:46 -#, fuzzy -#| msgid "" -#| "<qt><p>This word was considered to be an \"unknown word\" because it does " -#| "not match any entry in the dictionary currently in use. It may also be a " -#| "word in a foreign language.</p>\n" -#| "<p>If the word is not misspelled, you may add it to the dictionary by " -#| "clicking <b>Add to Dictionary</b>. If you do not want to add the unknown " -#| "word to the dictionary, but you want to leave it unchanged, click " -#| "<b>Ignore</b> or <b>Ignore All</b>.</p>\n" -#| "<p>However, if the word is misspelled, you can try to find the correct " -#| "replacement in the list below. If you cannot find a replacement there, " -#| "you may type it in the text box below, and click <b>Replace</b> or " -#| "<b>Replace All</b>.</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt><p>This word was considered to be an \"unknown word\" because it does " @@ -353,17 +256,17 @@ "All</b>.</p>\n" "</qt>" msgstr "" -"<qt><p>Esta pallabra considérase una «palabra desconocía» porque nun concasa " -"con denguna entrada del diccionariu que ta usando. Puede que se trate d'una " -"pallabra extranxera.</p>\n" -"<p>Si la pallabra escrita correcho, puede amestala al diccionariu calcando " -"<b>Amestar al diccionariu</b>. Si nun deseya amestar la pallabra al " -"diccionariu pero quier dexala como ta, calque <b>Inorar</b> o <b>Inorar " -"toes</b>.</p>\n" -"<p>Sicasí, si la pallabra ye incorreuta puede tentar alcontrar la forma " -"correuta na llista d'abaxo. Si nn alcuentra un reemplazu equí, puede " -"introducilu nel cuadru de testu inferior, y calcar <b>Trocar</b> o <b>Trocar " -"toes</b>.</p>\n" +"<qt><p>Esta pallabra consideróse una «pallabra desconocida» porque nun " +"concasa con entrada dala nel diccionariu anguaño n'usu. Quiciabes tamién sía " +"una pallabría d'una llingua foriata.</p>\n" +"<p>Si la pallabra nun ta mal escrita, podríes amestar la pallabra " +"desconocida al diccionariu primiendo <b>Amestar al diccionariu</b>. Si nun " +"quies amestar la pallabra desconocida pero quies dexala ensin camudar, primi " +"<b>Inorar</b> o <b>Inorar too</b>.</p>\n" +"<p>Por embagu, si la pallabra ta mal escrita, podríes probar a alcontrar el " +"troquéu nel llistáu d'embaxo. Si nun pues alcontrar el troquéu ende, podríes " +"teclexar na caxa de testu d'embaxo y primir <b>Trocar</b> o <b>Trocar too</" +"b>.</p>\n" "</qt>" #: ui/sonnetui.ui:36 @@ -374,21 +277,14 @@ #: ui/sonnetui.ui:43 msgctxt "SonnetUi|" msgid "Unknown word" -msgstr "Pallabra desconocía" +msgstr "Pallabra desconocida" #: ui/sonnetui.ui:52 -#, fuzzy -#| msgid "<b>misspelled</b>" msgctxt "SonnetUi|" msgid "<b>misspelled</b>" -msgstr "<b>fallu ortográficu</b>" +msgstr "<b>mal escrito</b>" #: ui/sonnetui.ui:59 ui/sonnetui.ui:174 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>Select the language of the document you are proofing here.</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -396,7 +292,7 @@ "</qt>" msgstr "" "<qt>\n" -"<p>Esbille la llingua del documentu que ta verificando equí.</p>\n" +"<p>Esbilla la llingua del documentu qu'equí tas corrixendo.</p>\n" "</qt>" #: ui/sonnetui.ui:64 @@ -405,22 +301,11 @@ msgstr "&Llingua:" #: ui/sonnetui.ui:74 -#, fuzzy -#| msgid "Text excerpt showing the unknown word in its context." msgctxt "SonnetUi|" msgid "Text excerpt showing the unknown word in its context." -msgstr "Escoyeta de testu qu'amuesa la pallabra desconocida nel so contestu." +msgstr "Estrautu de testu qu'amuesa la pallabra desconocida nel so contestu." #: ui/sonnetui.ui:77 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>Here you can see a text excerpt showing the unknown word in its " -#| "context. If this information is not sufficient to choose the best " -#| "replacement for the unknown word, you can click on the document you are " -#| "proofing, read a larger part of the text and then return here to continue " -#| "proofing.</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -431,30 +316,18 @@ "</qt>" msgstr "" "<qt>\n" -"<p>Equí pues ver una escoyeta del testu qu'amuesa la pallabra desconocida " -"nel so contestu. Si esta información nun basta pa escoyer el meyor reemplazu " -"pa la pallabra desconocida, pues calcar nel documentu que tas revisando, " -"lleer una parte mayor del testu y tornar equí pa siguir cola revisión.</p>\n" +"<p>Equí pues ver un estrautu de testu qu'amuesa la pallabra desconocida nel " +"so contestu. Si esta información nun ye abonda pa escoyer el so meyor " +"troquéu, pues primir nel documentu que tas corrixendo, lleer una parte más " +"llarga del testu y dempués volver equí pa siguir corrixendo.</p>\n" "</qt>" #: ui/sonnetui.ui:85 -#, fuzzy -#| msgid "... the <b>misspelled</b> word shown in context ..." msgctxt "SonnetUi|" msgid "... the <b>misspelled</b> word shown in context ..." -msgstr "... la pallabra <b>tracamundiada</b> amosada nel contestu ..." +msgstr "... la pallabra <b>mal escrita</b> amosada nel contestu ..." #: ui/sonnetui.ui:95 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>The unknown word was detected and considered unknown because it is not " -#| "included in the dictionary.<br>\n" -#| "Click here if you consider that the unknown word is not misspelled and " -#| "you want to avoid wrongly detecting it again in the future. If you want " -#| "to let it remain as is, but not add it to the dictionary, then click " -#| "<b>Ignore</b> or <b>Ignore All</b> instead.</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -467,17 +340,15 @@ "</qt>" msgstr "" "<qt>\n" -"<p>La pallabra desconocida deteutóse y consideróse desconocida porque nun ta " -"incluyía nel diccionariu.<br>\n" -"Calca equí si consideres que la pallabra desconocida nun ta tracamundiada y " -"quieres torgar que vuelva a deteutase nel futuru. Si quies dexala como ta, " -"pero non amestala al diccionariu, calca <b>Inorar</b> o <b>Inorar toes</b>.</" -"p>\n" +"<p>Deteutóse la pallabra desconocida y consideróse desconocida porque nun ta " +"incluyida nel diccionariu.<br>\n" +"Primi equí si consideres que la pallabra desconocida nun ta mal escrita y " +"quieres evitar la so deteición enquivocada nel futuru. Si quies dexala como " +"ta pero non amestala al diccionariu, entós primi <b>Inorar</b> o <b>Inorar " +"toes</b> nel so llugar.</p>\n" "</qt>" #: ui/sonnetui.ui:101 -#, fuzzy -#| msgid "<< Add to Dictionary" msgctxt "SonnetUi|" msgid "<< Add to Dictionary" msgstr "<< Amestar al diccionariu" @@ -488,17 +359,6 @@ msgstr "Llistáu de suxerencies" #: ui/sonnetui.ui:127 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>If the unknown word is misspelled, you should check if the correction " -#| "for it is available and if it is, click on it. If none of the words in " -#| "this list is a good replacement you may type the correct word in the edit " -#| "box above.</p>\n" -#| "<p>To correct this word click <b>Replace</b> if you want to correct only " -#| "this occurrence or <b>Replace All</b> if you want to correct all " -#| "occurrences.</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -512,12 +372,12 @@ "</qt>" msgstr "" "<qt>\n" -"<p>Si la pallabra desconocida ta tracamundiada, tendríes que comprobar si " -"tien una correición disponible y, si la tien, calcar enriba d'ella. Si nun " -"hai un reemplazu afayadizu na llista, pues escribir la pallabra correuta nel " -"cuadru de testu d'arriba.</p>\n" -"<p>Pa iguar la pallabra calce <b>Trocar</b> si pa iguar sólo esta ocurrencia " -"de la pallabra o <b>Trocar toes</b> si quies iguar toles ocurrencies.</p>\n" +"<p>Si la pallabra desconocida ta mal escrita, deberíes comprobar si ta " +"disponible la so correición y si ta, primir nella. Si denguna de les " +"pallabres nesti llistáu ye un troquéu afayadizu, podríes teclexar la " +"pallabra correuta na caxa d'edición d'enriba.</p>\n" +"<p>Pa correxir esta parllabra primi <b>Trocar</b> si quies correxir namái " +"esta ocurrencia o <b>Trocar too</b> si quies correxiles toes.</p>\n" "</qt>" #: ui/sonnetui.ui:137 @@ -526,15 +386,6 @@ msgstr "Pallabres suxeríes" #: ui/sonnetui.ui:145 ui/sonnetui.ui:161 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>If the unknown word is misspelled, you should type the correction for " -#| "your misspelled word here or select it from the list below.</p>\n" -#| "<p>You can then click <b>Replace</b> if you want to correct only this " -#| "occurrence of the word or <b>Replace All</b> if you want to correct all " -#| "occurrences.</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -546,13 +397,10 @@ "</qt>" msgstr "" "<qt>\n" -"<p>Si la pallabra desconocida ta tracamundiada, tendríes de comprobar si " -"tien una correición disponible y, si la tien, calcar enriba d'ella. Si nun " -"hai un reemplazu afayadizu na llista, pues escribir la pallabra correuta nel " -"cuadru de testu d'arriba.</p>\n" -"<p>Pa iguar la pallabra calque <b>Trocar</b> si pa iguar sólo esta " -"ocurrencia de la pallabra o <b>Trocar toes</b> si quies iguar toles " -"ocurrencies.</p>\n" +"<p>Si la pallabra desconocida ta mal escrita, deberíes teclexar equí la so " +"correición o esbillala dende'l llistáu d'embaxo.</p>\n" +"<p>Dempués pues primir <b>Trocar</b> si quies correxir namái esta ocurrencia " +"o <b>Trocar too</b> si quies correxiles toes.</p>\n" "</qt>" #: ui/sonnetui.ui:151 @@ -571,12 +419,6 @@ msgstr "S&uxerir" #: ui/sonnetui.ui:198 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>Click here to replace this occurrence of the unknown text with the " -#| "text in the edit box above (to the left).</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -585,8 +427,8 @@ "</qt>" msgstr "" "<qt>\n" -"<p>Calca equí pa trocar esti resultáu del testu desconocíu col testu del " -"cuadru d'edición d'arriba (a manzorga).</p>\n" +"<p>Primi equí pa trocar esta ocurrencia del testu desconocíu col testu na " +"caxa d'edición d'enriba (a la esquierda).</p>\n" "</qt>" #: ui/sonnetui.ui:203 @@ -595,12 +437,6 @@ msgstr "&Trocar" #: ui/sonnetui.ui:210 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>Click here to replace all occurrences of the unknown text with the " -#| "text in the edit box above (to the left).</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -609,8 +445,8 @@ "</qt>" msgstr "" "<qt>\n" -"<p>Calca equí pa trocar tolos resultaos del testu desconocíu col testu del " -"cuadru d'edición d'arriba (a manzorga).</p>\n" +"<p>Primi equí pa trocar toles ocurrencies del testu desconocíu col testu na " +"caxa d'edición d'enriba (a la esquierda).</p>\n" "</qt>" #: ui/sonnetui.ui:215 @@ -619,15 +455,6 @@ msgstr "T&rocar too" #: ui/sonnetui.ui:222 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>Click here to let this occurrence of the unknown word remain as is.</" -#| "p>\n" -#| "<p>This action is useful when the word is a name, an acronym, a foreign " -#| "word or any other unknown word that you want to use but not add to the " -#| "dictionary.</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -638,10 +465,10 @@ "</qt>" msgstr "" "<qt>\n" -"<p>Calca equí pa dexar qu'esti resultáu de la pallabra quede como ta.</p>\n" -"<p>Esta aición ye afayadiza cuando la pallabra ye un nome propiu, un " -"acrónimu, una pallabra estranxera o cualesquier otra pallabra que quies usar " -"pero non añader al diccionariu.</p>\n" +"<p>Primi equí pa dexar qu'esta ocurrencia de la pallabra quede como ta.</p>\n" +"<p>Esta aición ye útil cuando la pallabra ye un nome, un acrónimu, una " +"pallabra foriata o cualesquier otra que quieras usar pero nun amiestes al " +"diccionariu.</p>\n" "</qt>" #: ui/sonnetui.ui:228 @@ -650,15 +477,6 @@ msgstr "&Inorar" #: ui/sonnetui.ui:235 ui/sonnetui.ui:248 -#, fuzzy -#| msgid "" -#| "<qt>\n" -#| "<p>Click here to let all occurrences of the unknown word remain as they " -#| "are.</p>\n" -#| "<p>This action is useful when the word is a name, an acronym, a foreign " -#| "word or any other unknown word that you want to use but not add to the " -#| "dictionary.</p>\n" -#| "</qt>" msgctxt "SonnetUi|" msgid "" "<qt>\n" @@ -670,11 +488,11 @@ "</qt>" msgstr "" "<qt>\n" -"<p>Calca equí pa dexar que tolos resultaos de la pallabra desconocida queden " -"como tan.</p>\n" -"<p>Esta aición ye afayadiza cuando la pallabra ye un nome propiu, un " -"acrónimu, una pallabra estranxera o cualquier otra pallabra que quieras " -"utilizar pero non añader al diccionariu.</p>\n" +"<p>Primi equí pa dexar que toles ocurrencies de la pallabra desconocida " +"queden como tán.</p>\n" +"<p>Esta aición ye útil cuando'l nome de la pallabra ye un nome, un acrónimu, " +"una pallabra foriata o cualesquier otra pallabra desconocida que quieras " +"usar pero non amestala al diccionariu.</p>\n" "</qt>" #: ui/sonnetui.ui:241 @@ -683,8 +501,6 @@ msgstr "I&norar too" #: ui/sonnetui.ui:254 -#, fuzzy -#| msgid "Autocorrect" msgctxt "SonnetUi|" msgid "Autocorrect" msgstr "Auto-correxir" @@ -696,15 +512,11 @@ msgstr "Nun hai suxerencies pa %1" #: ui/spellcheckdecorator.cpp:188 -#, fuzzy -#| msgid "Ignore" msgctxt "Sonnet::SpellCheckDecorator|" msgid "Ignore" msgstr "Inorar" #: ui/spellcheckdecorator.cpp:189 -#, fuzzy -#| msgid "Add to Dictionary" msgctxt "Sonnet::SpellCheckDecorator|" msgid "Add to Dictionary" msgstr "Amestar al diccionariu" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/po/ko/sonnet5_qt.po new/sonnet-5.20.0/po/ko/sonnet5_qt.po --- old/sonnet-5.19.0/po/ko/sonnet5_qt.po 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/po/ko/sonnet5_qt.po 2016-03-05 20:15:12.000000000 +0100 @@ -2,14 +2,14 @@ # Copyright (C) Free Software Foundation, Inc. # Cho Sung Jae <cho.sung...@gmail.com>, 2007. # Shinjo Park <k...@peremen.name>, 2007, 2008, 2009, 2010, 2011. -# Shinjo Park <k...@peremen.name>, 2011, 2012, 2013, 2014, 2015. +# Shinjo Park <k...@peremen.name>, 2011, 2012, 2013, 2014, 2015, 2016. # msgid "" msgstr "" "Project-Id-Version: kdelibs4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2014-03-23 01:50+0000\n" -"PO-Revision-Date: 2015-01-18 17:09+0900\n" +"PO-Revision-Date: 2016-02-14 15:17+0100\n" "Last-Translator: Shinjo Park <k...@peremen.name>\n" "Language-Team: Korean <k...@peremen.name>\n" "Language: ko\n" @@ -17,7 +17,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Lokalize 2.0\n" "X-Qt-Contexts: true\n" #: core/loader.cpp:173 @@ -195,12 +195,9 @@ msgstr "삭제(&R)" #: ui/configui.ui:160 -#, fuzzy -#| msgctxt "SonnetConfigUI|" -#| msgid "Enable &background spellchecking" msgctxt "SonnetConfigUI|" msgid "No backend found for spell checking" -msgstr "맞춤법 검사 사용하기(&B)" +msgstr "맞춤법 검사 백엔드를 찾을 수 없음" #: ui/dialog.cpp:100 ui/dialog.cpp:224 ui/dialog.cpp:433 msgctxt "Sonnet::Dialog|@title:window" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/po/ru/sonnet5_qt.po new/sonnet-5.20.0/po/ru/sonnet5_qt.po --- old/sonnet-5.19.0/po/ru/sonnet5_qt.po 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/po/ru/sonnet5_qt.po 2016-03-05 20:15:12.000000000 +0100 @@ -8,7 +8,7 @@ # Andrey Cherepanov <sk...@kde.ru>, 2005-2007, 2008, 2009, 2011. # Nick Shaforostoff <shaforost...@kde.ru>, 2004, 2006, 2007, 2008, 2009. # Nick Shaforostoff <sha...@ukr.net>, 2009. -# Alexander Potashev <aspotas...@gmail.com>, 2009, 2010, 2011, 2014. +# Alexander Potashev <aspotas...@gmail.com>, 2009, 2010, 2011, 2014, 2016. # Yury G. Kudryashov <urkud.ur...@gmail.com>, 2011. # Yuri Efremov <yur....@gmail.com>, 2012. # Inga Barinova <ingabarin...@gmail.com>, 2012. @@ -19,14 +19,14 @@ "Project-Id-Version: kdelibs4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2014-03-23 01:50+0000\n" -"PO-Revision-Date: 2014-06-21 19:46+0400\n" +"PO-Revision-Date: 2016-02-22 01:01+0300\n" "Last-Translator: Alexander Potashev <aspotas...@gmail.com>\n" "Language-Team: Russian <kde-russ...@lists.kde.ru>\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Lokalize 2.0\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Environment: kde\n" @@ -210,12 +210,9 @@ msgstr "&Удалить" #: ui/configui.ui:160 -#, fuzzy -#| msgctxt "SonnetConfigUI|" -#| msgid "Enable &background spellchecking" msgctxt "SonnetConfigUI|" msgid "No backend found for spell checking" -msgstr "Включить &фоновую проверку орфографии" +msgstr "Не найдено модулей, реализующих проверку орфографии." #: ui/dialog.cpp:100 ui/dialog.cpp:224 ui/dialog.cpp:433 msgctxt "Sonnet::Dialog|@title:window" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/src/core/guesslanguage.cpp new/sonnet-5.20.0/src/core/guesslanguage.cpp --- old/sonnet-5.19.0/src/core/guesslanguage.cpp 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/src/core/guesslanguage.cpp 2016-03-05 20:15:12.000000000 +0100 @@ -278,6 +278,10 @@ { QString triMapFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kf5/sonnet/trigrams.map")); + if (triMapFile.isEmpty()) { + triMapFile = QStringLiteral("%1/../share/kf5/sonnet/trigrams.map").arg(QCoreApplication::applicationDirPath()); + } + QFile sin(triMapFile); if (!sin.open(QIODevice::ReadOnly)) { qWarning() << "Sonnet: Unable to load trigram models from file" << triMapFile; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/src/core/textbreaks.cpp new/sonnet-5.20.0/src/core/textbreaks.cpp --- old/sonnet-5.19.0/src/core/textbreaks.cpp 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/src/core/textbreaks.cpp 2016-03-05 20:15:12.000000000 +0100 @@ -21,6 +21,7 @@ #include <QtCore/QHash> #include <QtCore/QString> #include <QtCore/QDebug> +#include <QTextBoundaryFinder> #include "textbreaks_p.h" @@ -57,11 +58,6 @@ d->text = text; } -static inline bool isWordSeparator(const QChar character) -{ - return character.isSpace() || character.isMark() || character.isPunct() || character.isSymbol(); -} - TextBreaks::Positions TextBreaks::wordBreaks(const QString &text) { Positions breaks; @@ -70,68 +66,58 @@ return breaks; } - int i=0; - do { - if (i == 0 || isWordSeparator(text[i])) { - Position pos; - - // Seek past leading separators - while (i < text.length() && isWordSeparator(text[i])) { - i++; - } + QTextBoundaryFinder boundaryFinder(QTextBoundaryFinder::Word, text); - pos.start = i; - while (i < text.length() && !isWordSeparator(text[i])) { - i++; + while (boundaryFinder.position() < text.length()) { + if (!(boundaryFinder.boundaryReasons().testFlag(QTextBoundaryFinder::StartOfItem))) { + if (boundaryFinder.toNextBoundary() == -1) { + break; } - pos.length = i - pos.start; + continue; + } - if (pos.length > 0) { - breaks.append(pos); - } - } else { - i++; + Position pos; + pos.start = boundaryFinder.position(); + int end = boundaryFinder.toNextBoundary(); + if (end == -1) { + break; + } + pos.length = end - pos.start; + if (pos.length < 1) { + continue; } - } while (i < text.length()); + breaks.append(pos); + if (boundaryFinder.toNextBoundary() == -1) { + break; + } + } return breaks; } -static inline bool isSentenceSeparator(const QChar &character) -{ - return character.isMark() || character.isPunct() || character.category() == QChar::Separator_Paragraph; -} - TextBreaks::Positions TextBreaks::sentenceBreaks(const QString & text) { Positions breaks; - if (text.isEmpty()) + if (text.isEmpty()) { return breaks; + } - int i=0; - do { - if (i == 0 || isSentenceSeparator(text[i])) { - Position pos; + QTextBoundaryFinder boundaryFinder(QTextBoundaryFinder::Sentence, text); - while (i < text.length() && !text[i].isLetter()) { - i++; - } - - pos.start = i; - do { - i++; - } while (i < text.length() && !isSentenceSeparator(text[i])); - pos.length = i - pos.start; - - // null-terminated, hence more than 1 - if (pos.length > 1) - breaks.append(pos); - } else { - i++; + while (boundaryFinder.position() < text.length()) { + Position pos; + pos.start = boundaryFinder.position(); + int end = boundaryFinder.toNextBoundary(); + if (end == -1) { + break; } - } while (i < text.length()); - + pos.length = end - pos.start; + if (pos.length < 1) { + continue; + } + breaks.append(pos); + } return breaks; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/src/plugins/hunspell/CMakeLists.txt new/sonnet-5.20.0/src/plugins/hunspell/CMakeLists.txt --- old/sonnet-5.19.0/src/plugins/hunspell/CMakeLists.txt 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/src/plugins/hunspell/CMakeLists.txt 2016-03-05 20:15:12.000000000 +0100 @@ -2,9 +2,9 @@ ########### next target ############### if (EXISTS "/usr/share/hunspell/") -add_definitions(-DHUNSPELL_MAIN_DICT_PATH="/usr/share/hunspell/") +add_definitions(-DHUNSPELL_MAIN_DICT_PATH="/usr/share/hunspell") elseif (EXISTS "/usr/share/myspell/") -add_definitions(-DHUNSPELL_MAIN_DICT_PATH="/usr/share/myspell/") +add_definitions(-DHUNSPELL_MAIN_DICT_PATH="/usr/share/myspell") endif (EXISTS "/usr/share/hunspell/") include_directories( ${HUNSPELL_INCLUDE_DIR} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/src/plugins/hunspell/hunspellclient.cpp new/sonnet-5.20.0/src/plugins/hunspell/hunspellclient.cpp --- old/sonnet-5.19.0/src/plugins/hunspell/hunspellclient.cpp 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/src/plugins/hunspell/hunspellclient.cpp 2016-03-05 20:15:12.000000000 +0100 @@ -23,6 +23,8 @@ #include "hunspelldebug.h" #include <QDir> +#include <QString> +#include <QCoreApplication> #include <QDebug> using namespace Sonnet; @@ -68,6 +70,9 @@ #endif QDir dir(QStringLiteral(HUNSPELL_MAIN_DICT_PATH)); + if (!dir.exists()) { + dir.setPath(QStringLiteral("%1/../share/hunspell").arg(QCoreApplication::applicationDirPath())); + } if (dir.exists()) { foreach (const QString &dict, dir.entryList(QStringList(AFF_MASK), QDir::Files)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/src/plugins/hunspell/hunspelldict.cpp new/sonnet-5.20.0/src/plugins/hunspell/hunspelldict.cpp --- old/sonnet-5.19.0/src/plugins/hunspell/hunspelldict.cpp 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/src/plugins/hunspell/hunspelldict.cpp 2016-03-05 20:15:12.000000000 +0100 @@ -25,9 +25,15 @@ #include <QDebug> #include <QTextCodec> #include <QStringBuilder> +#include <QCoreApplication> using namespace Sonnet; +static const QString composeDictName(const QByteArray &dirPath, const QString &lang) +{ + return QFile::decodeName(dirPath+'/') + lang + QStringLiteral(".dic"); +} + HunspellDict::HunspellDict(const QString &lang) : SpellerPlugin(lang) , m_speller(0) @@ -36,27 +42,31 @@ qCDebug(SONNET_HUNSPELL) << " HunspellDict::HunspellDict( const QString& lang ):" << lang; QByteArray dirPath = QByteArrayLiteral(HUNSPELL_MAIN_DICT_PATH); - QString dic = QLatin1String(dirPath) % lang % QLatin1String(".dic"); + QString dic = composeDictName(dirPath, lang); + + if (!QFileInfo::exists(dic)) { + dirPath = QFile::encodeName(QCoreApplication::applicationDirPath()) + QByteArrayLiteral("/../share/hunspell"); + dic = composeDictName(dirPath, lang); + } #if defined(Q_OS_MAC) || defined(Q_OS_WIN) - if (!QFileInfo(dic).exists()) { + if (!QFileInfo::exists(dic)) { #ifdef Q_OS_MAC dirPath = QByteArrayLiteral("/Applications/LibreOffice.app/Contents/Resources/extensions/dict-") + lang.leftRef(2).toLatin1(); #endif #ifdef Q_OS_WIN dirPath = QByteArrayLiteral("C:/Program Files (x86)/LibreOffice 5/share/extensions/dict-") + lang.leftRef(2).toLatin1(); #endif - dic = QLatin1String(dirPath) % QLatin1Char('/') % lang % QLatin1String(".dic"); - if (lang.length()==5 && !QFileInfo(dic).exists()) { + dic = composeDictName(dirPath, lang); + if (lang.length()==5 && !QFileInfo::exists(dic)) { dirPath += '-' + lang.midRef(3,2).toLatin1(); - dic = QLatin1String(dirPath) % QLatin1Char('/') % lang % QLatin1String(".dic"); + dic = composeDictName(dirPath, lang); } - dirPath += '/'; } #endif - if (QFileInfo(dic).exists()) { - m_speller = new Hunspell(QByteArray(dirPath + lang.toLatin1() + ".aff").constData(), dic.toLatin1().constData()); + if (QFileInfo::exists(dic)) { + m_speller = new Hunspell(QByteArray(dirPath + "/" + lang.toLatin1() + ".aff").constData(), dic.toLatin1().constData()); m_codec = QTextCodec::codecForName(m_speller->get_dic_encoding()); if (!m_codec) { qWarning() << "Failed to find a text codec for name" << m_speller->get_dic_encoding() << "defaulting to locale text codec"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/src/plugins/hunspell/hunspelldict.h new/sonnet-5.20.0/src/plugins/hunspell/hunspelldict.h --- old/sonnet-5.19.0/src/plugins/hunspell/hunspelldict.h 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/src/plugins/hunspell/hunspelldict.h 2016-03-05 20:15:12.000000000 +0100 @@ -28,7 +28,7 @@ #ifdef Q_OS_MAC #define HUNSPELL_MAIN_DICT_PATH "/System/Library/Spelling" #else -#define HUNSPELL_MAIN_DICT_PATH "/usr/share/hunspell/" +#define HUNSPELL_MAIN_DICT_PATH "/usr/share/hunspell" #endif #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/src/ui/highlighter.cpp new/sonnet-5.20.0/src/ui/highlighter.cpp --- old/sonnet-5.19.0/src/ui/highlighter.cpp 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/src/ui/highlighter.cpp 2016-03-05 20:15:12.000000000 +0100 @@ -71,7 +71,7 @@ { tokenizer = new WordTokenizer(); active = true; - automatic = true; + automatic = false; connected = false; wordCount = 0; errorCount = 0; @@ -357,7 +357,6 @@ d->spellchecker->setLanguage(prevLang); return; } - d->spellchecker->setAttribute(Speller::AutoDetectLanguage, false); d->wordCount = 0; d->errorCount = 0; if (d->automatic) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sonnet-5.19.0/src/ui/highlighter.h new/sonnet-5.20.0/src/ui/highlighter.h --- old/sonnet-5.19.0/src/ui/highlighter.h 2016-02-06 15:03:16.000000000 +0100 +++ new/sonnet-5.20.0/src/ui/highlighter.h 2016-03-05 20:15:12.000000000 +0100 @@ -188,7 +188,6 @@ public Q_SLOTS: /** * Set language to use for spell checking. - * Warning: this disables automatic language detection * * @param language the language code for the new language to use. */