diff --git a/packages/yoastseo/spec/fullTextTests/testTexts/en/englishPaperForPerformanceTest.js b/packages/yoastseo/spec/fullTextTests/testTexts/en/englishPaperForPerformanceTest.js
index 48bb33fc8ef..cbc8b7b174e 100644
--- a/packages/yoastseo/spec/fullTextTests/testTexts/en/englishPaperForPerformanceTest.js
+++ b/packages/yoastseo/spec/fullTextTests/testTexts/en/englishPaperForPerformanceTest.js
@@ -127,7 +127,7 @@ const expectedResults = {
textTransitionWords: {
isApplicable: true,
score: 3,
- resultText: "Transition words: Only 5.5% of the sentences contain transition words, " +
+ resultText: "Transition words: Only 6.8% of the sentences contain transition words, " +
"which is not enough. Use more of them.",
},
passiveVoice: {
diff --git a/packages/yoastseo/spec/languageProcessing/researches/findTransitionWordsSpec.js b/packages/yoastseo/spec/languageProcessing/researches/findTransitionWordsSpec.js
index 02a74743d29..69234009b9f 100644
--- a/packages/yoastseo/spec/languageProcessing/researches/findTransitionWordsSpec.js
+++ b/packages/yoastseo/spec/languageProcessing/researches/findTransitionWordsSpec.js
@@ -4,6 +4,20 @@ import Paper from "../../../src/values/Paper.js";
import EnglishResearcher from "../../../src/languageProcessing/languages/en/Researcher";
import FrenchResearcher from "../../../src/languageProcessing/languages/fr/Researcher";
import JapaneseResearcher from "../../../src/languageProcessing/languages/ja/Researcher";
+import GermanResearcher from "../../../src/languageProcessing/languages/de/Researcher";
+import DutchResearcher from "../../../src/languageProcessing/languages/nl/Researcher";
+import SpanishResearcher from "../../../src/languageProcessing/languages/es/Researcher";
+import ItalianResearcher from "../../../src/languageProcessing/languages/it/Researcher";
+import PortugueseResearcher from "../../../src/languageProcessing/languages/pt/Researcher";
+import CatalanResearcher from "../../../src/languageProcessing/languages/ca/Researcher";
+import PolishResearcher from "../../../src/languageProcessing/languages/pl/Researcher";
+import HungarianResearcher from "../../../src/languageProcessing/languages/hu/Researcher";
+import SwedishResearcher from "../../../src/languageProcessing/languages/sv/Researcher";
+import IndonesianResearcher from "../../../src/languageProcessing/languages/id/Researcher";
+import TurkishResearcher from "../../../src/languageProcessing/languages/tr/Researcher";
+import RussianResearcher from "../../../src/languageProcessing/languages/ru/Researcher";
+import HebrewResearcher from "../../../src/languageProcessing/languages/he/Researcher";
+import ArabicResearcher from "../../../src/languageProcessing/languages/ar/Researcher";
// eslint-disable-next-line max-statements
describe( "a test for finding transition words from a string", function() {
@@ -41,7 +55,7 @@ describe( "a test for finding transition words from a string", function() {
expect( result.transitionWordSentences ).toBe( 1 );
} );
- it( "returns 1 when a two-part transition word is found in a sentence (English)", function() {
+ it( "returns 1 when a two-part transition word is found in a sentence (English)", function() {
// Transition word: either...or.
mockPaper = new Paper( "I will either tell you a story, or read you a novel.", { locale: "en_US" } );
result = transitionWordsResearch( mockPaper, new EnglishResearcher( mockPaper ) );
@@ -49,7 +63,7 @@ describe( "a test for finding transition words from a string", function() {
expect( result.transitionWordSentences ).toBe( 1 );
} );
- it( "returns 1 when a two-part transition word is found in a sentence, and no transition word in another sentence. (English)", function() {
+ it( "returns 1 when a two-part transition word is found in a sentence, and no transition word in another sentence. (English)", function() {
// Transition word: either...or.
mockPaper = new Paper( "I will either tell you a story, or read you a novel. Okay?", { locale: "en_US" } );
result = transitionWordsResearch( mockPaper, new EnglishResearcher( mockPaper ) );
@@ -57,7 +71,7 @@ describe( "a test for finding transition words from a string", function() {
expect( result.transitionWordSentences ).toBe( 1 );
} );
- it( "returns 2 when a two-part transition word is found in a sentence, and a transition word in another sentence. (English)", function() {
+ it( "returns 2 when a two-part transition word is found in a sentence, and a transition word in another sentence. (English)", function() {
// Transition words: either...or, unless.
mockPaper = new Paper( "I will either tell you a story, or read you a novel. Unless it is about a boy.", { locale: "en_US" } );
result = transitionWordsResearch( mockPaper, new EnglishResearcher( mockPaper ) );
@@ -66,8 +80,8 @@ describe( "a test for finding transition words from a string", function() {
} );
it( "returns 2 when a two-part transition word is found in two sentences. (English)", function() {
- // Transition words: either...or, if...then.
- mockPaper = new Paper( "I will either tell you a story, or read you a novel. If you want, then I will.", { locale: "en_US" } );
+ // Transition words: either...or, both...and.
+ mockPaper = new Paper( "I will either tell you a story, or read you a novel. She was both furious and disappointed.", { locale: "en_US" } );
result = transitionWordsResearch( mockPaper, new EnglishResearcher( mockPaper ) );
expect( result.totalSentences ).toBe( 2 );
expect( result.transitionWordSentences ).toBe( 2 );
@@ -75,9 +89,9 @@ describe( "a test for finding transition words from a string", function() {
it( "returns 2 when a two-part transition word is found in two sentences, " +
"and an additional transition word is found in one of them. (English)", function() {
- // Transition words: either...or, if ...then, as soon as.
+ // Transition words: either...or, both...and, as soon as.
mockPaper = new Paper( "I will either tell you a story about a boy, or read you a novel. " +
- "If you want, then I will start as soon as you're ready.", { locale: "en_US" } );
+ "I can read it to both you and her as soon as you're ready.", { locale: "en_US" } );
result = transitionWordsResearch( mockPaper, new EnglishResearcher( mockPaper ) );
expect( result.totalSentences ).toBe( 2 );
expect( result.transitionWordSentences ).toBe( 2 );
@@ -159,7 +173,7 @@ describe( "a test for finding transition words from a string", function() {
expect( result.transitionWordSentences ).toBe( 0 );
} );
- /*it( "returns 1 when a transition word is found in a sentence (German)", function() {
+ it( "returns 1 when a transition word is found in a sentence (German)", function() {
// Transition word: zuerst.
mockPaper = new Paper( "Zuerst werde ich versuchen zu verstehen, warum er so denkt.", { locale: "de_DE" } );
result = transitionWordsResearch( mockPaper, new GermanResearcher( mockPaper ) );
@@ -190,8 +204,8 @@ describe( "a test for finding transition words from a string", function() {
expect( result.totalSentences ).toBe( 1 );
expect( result.transitionWordSentences ).toBe( 0 );
} );
-*/
- /* it( "returns 1 when a transition word is found in a sentence (French)", function() {
+
+ it( "returns 1 when a transition word is found in a sentence (French)", function() {
// Transition word: deuxièmement.
mockPaper = new Paper( "Deuxièmement, il convient de reconnaître la complexité des tâches à entreprendre.", { locale: "fr_FR" } );
result = transitionWordsResearch( mockPaper, new FrenchResearcher( mockPaper ) );
@@ -205,7 +219,7 @@ describe( "a test for finding transition words from a string", function() {
result = transitionWordsResearch( mockPaper, new FrenchResearcher( mockPaper ) );
expect( result.totalSentences ).toBe( 1 );
expect( result.transitionWordSentences ).toBe( 1 );
- } );*/
+ } );
it( "returns 1 when a transition word with an apostrophe is found in a sentence (French)", function() {
// Transition word: quoi qu’il en soit.
@@ -215,7 +229,7 @@ describe( "a test for finding transition words from a string", function() {
expect( result.transitionWordSentences ).toBe( 1 );
} );
- /*it( "returns 0 when no transition words are present in a sentence (French)", function() {
+ it( "returns 0 when no transition words are present in a sentence (French)", function() {
mockPaper = new Paper( "Une, deux, trois.", { locale: "fr_FR" } );
result = transitionWordsResearch( mockPaper, new FrenchResearcher( mockPaper ) );
expect( result.totalSentences ).toBe( 1 );
@@ -353,8 +367,8 @@ describe( "a test for finding transition words from a string", function() {
expect( result.totalSentences ).toBe( 1 );
expect( result.transitionWordSentences ).toBe( 1 );
} );
-*/
- /*it( "returns 1 when a transition word with a punt volat (·) is found in a sentence (Catalan)", function() {
+
+ it( "returns 1 when a transition word with a punt volat (·) is found in a sentence (Catalan)", function() {
// Transition word: per il·lustrar.
mockPaper = new Paper( "Roma proposa un concurs de curtmetratges per il·lustrar com ha de ser la ciutat ideal", { locale: "ca_ES" } );
result = transitionWordsResearch( mockPaper, new CatalanResearcher( mockPaper ) );
@@ -442,8 +456,9 @@ describe( "a test for finding transition words from a string", function() {
result = transitionWordsResearch( mockPaper, new HungarianResearcher( mockPaper ) );
expect( result.totalSentences ).toBe( 1 );
expect( result.transitionWordSentences ).toBe( 1 );
- } );*/
- /*it( "returns 1 when a three-part transition word is found in a sentence (Hungarian)", function() {
+ } );
+
+ it( "returns 1 when a three-part transition word is found in a sentence (Hungarian)", function() {
// Transition word: nemcsak, hanem, is
mockPaper = new Paper( "Nemcsak a csokoládét szeretem, hanem a süteményt is.", { locale: "hu_HU" } );
result = transitionWordsResearch( mockPaper, new HungarianResearcher( mockPaper ) );
@@ -487,7 +502,7 @@ describe( "a test for finding transition words from a string", function() {
expect( result.transitionWordSentences ).toBe( 0 );
} );
- it( "returns 1 when a transition word is found in a sentence (Turkish)", function() {
+ it( "returns 1 when a single word transition word is found in a sentence (Turkish)", function() {
// Transition word: ama.
mockPaper = new Paper( "Ama durum bu olmayabilir.", { locale: "tr_TR" } );
result = transitionWordsResearch( mockPaper, new TurkishResearcher( mockPaper ) );
@@ -495,9 +510,17 @@ describe( "a test for finding transition words from a string", function() {
expect( result.transitionWordSentences ).toBe( 1 );
} );
+ it( "returns 1 when two multiple word transition words are found in a sentence (Turkish)", function() {
+ // Transition words: bir yandan, diğer yandan.
+ mockPaper = new Paper( "Bir yandan bunu hissediyor, diğer yandan içimden geçenlerin hepsinin boş birer hayal olduğunu düşünüyordum.", { locale: "tr_TR" } );
+ result = transitionWordsResearch( mockPaper, new TurkishResearcher( mockPaper ) );
+ expect( result.totalSentences ).toBe( 1 );
+ expect( result.transitionWordSentences ).toBe( 1 );
+ } );
+
it( "returns 1 when a two-part transition word is found in a sentence (Turkish)", function() {
- // Transition word: hem, hem de.
- mockPaper = new Paper( "Hem şapka hem de ceket dolapta.", { locale: "tr_TR" } );
+ // Transition word: olsun, olmasın.
+ mockPaper = new Paper( "Тaşıt koltuklarına takılmış olsun veya olmasın baş yastıkların onayı.", { locale: "tr_TR" } );
result = transitionWordsResearch( mockPaper, new TurkishResearcher( mockPaper ) );
expect( result.totalSentences ).toBe( 1 );
expect( result.transitionWordSentences ).toBe( 1 );
@@ -571,7 +594,7 @@ describe( "a test for finding transition words from a string", function() {
expect( result.totalSentences ).toBe( 1 );
expect( result.transitionWordSentences ).toBe( 1 );
} );
-*/
+
it( "returns 1 when a (multiple) transition word is found in a language that uses a custom" +
" match transition word helper (Japanese)", function() {
// Transition word: ゆえに (tokenized: [ "ゆえ", "に" ])
diff --git a/packages/yoastseo/spec/scoring/assessors/collectionPages/fullTextTests/testTexts/en/englishPaper1.js b/packages/yoastseo/spec/scoring/assessors/collectionPages/fullTextTests/testTexts/en/englishPaper1.js
index 4a4046106d3..6d2ad1c18ac 100644
--- a/packages/yoastseo/spec/scoring/assessors/collectionPages/fullTextTests/testTexts/en/englishPaper1.js
+++ b/packages/yoastseo/spec/scoring/assessors/collectionPages/fullTextTests/testTexts/en/englishPaper1.js
@@ -99,9 +99,8 @@ const expectedResults = {
},
textTransitionWords: {
isApplicable: true,
- score: 6,
- resultText: "Transition words: Only 25% of the sentences contain " +
- "transition words, which is not enough. Use more of them.",
+ score: 9,
+ resultText: "Transition words: Well done!",
},
passiveVoice: {
isApplicable: true,
diff --git a/packages/yoastseo/src/languageProcessing/languages/en/config/transitionWords.js b/packages/yoastseo/src/languageProcessing/languages/en/config/transitionWords.js
index afbd9bb76a7..7d6b1bbf2ef 100644
--- a/packages/yoastseo/src/languageProcessing/languages/en/config/transitionWords.js
+++ b/packages/yoastseo/src/languageProcessing/languages/en/config/transitionWords.js
@@ -11,7 +11,7 @@ export const singleWords = [ "accordingly", "additionally", "afterward", "afterw
"shortly", "significantly", "similarly", "simultaneously", "since", "so", "soon", "specifically", "still", "straightaway",
"subsequently", "surely", "surprisingly", "than", "then", "thereafter", "therefore", "thereupon", "thirdly", "though",
"thus", "till", "undeniably", "undoubtedly", "unless", "unlike", "unquestionably", "until", "when", "whenever",
- "whereas", "while" ];
+ "whereas", "while", "whether", "if", "actually" ];
export const multipleWords = [ "above all", "after all", "after that", "all in all", "all of a sudden", "all things considered",
"analogous to", "although this may be true", "analogous to", "another key point", "as a matter of fact", "as a result",
"as an illustration", "as can be seen", "as has been noted", "as I have noted", "as I have said", "as I have shown",
@@ -40,7 +40,7 @@ export const multipleWords = [ "above all", "after all", "after that", "all in a
"to summarize", "to that end", "to the end that", "to this end", "together with", "under those circumstances", "until now",
"up against", "up to the present time", "vis a vis", "what's more", "while it may be true", "while this may be true",
"with attention to", "with the result that", "with this in mind", "with this intention", "with this purpose in mind",
- "without a doubt", "without delay", "without doubt", "without reservation" ];
+ "without a doubt", "without delay", "without doubt", "without reservation", "according to", "no sooner" ];
export const allWords = singleWords.concat( multipleWords );
diff --git a/packages/yoastseo/src/languageProcessing/languages/en/config/twoPartTransitionWords.js b/packages/yoastseo/src/languageProcessing/languages/en/config/twoPartTransitionWords.js
index 404d175b06c..99e6235c90f 100644
--- a/packages/yoastseo/src/languageProcessing/languages/en/config/twoPartTransitionWords.js
+++ b/packages/yoastseo/src/languageProcessing/languages/en/config/twoPartTransitionWords.js
@@ -4,5 +4,4 @@
* Returns an array with two-part transition words to be used by the assessments.
* @type {Array} The array filled with two-part transition words.
*/
-export default [ [ "both", "and" ], [ "if", "then" ], [ "not only", "but also" ], [ "neither", "nor" ], [ "either", "or" ], [ "not", "but" ],
- [ "whether", "or" ], [ "no sooner", "than" ] ];
+export default [ [ "both", "and" ], [ "not only", "but also" ], [ "neither", "nor" ], [ "either", "or" ], [ "not", "but" ] ];
diff --git a/packages/yoastseo/src/languageProcessing/languages/tr/config/transitionWords.js b/packages/yoastseo/src/languageProcessing/languages/tr/config/transitionWords.js
index a8cc460d5bd..73551b2f81c 100644
--- a/packages/yoastseo/src/languageProcessing/languages/tr/config/transitionWords.js
+++ b/packages/yoastseo/src/languageProcessing/languages/tr/config/transitionWords.js
@@ -8,7 +8,8 @@ export const singleWords = [ "fakat", "halbuki", "hatta", "üstelik", "ancak", "
"genelde", "dolayısıyla", "gelgelelim", "aslında", "doğrusu", "mamafih", "binaenaleyh", "evvelce", "önceden", "şöylelikle", "örneğin", "mesela",
"nitekim", "mademki", "şimdi", "halihazırda", "i̇laveten", "aynen", "nazaran", "nedeniyle", "yüzünden", "umumiyetle", "ekseriye", "amacıyla",
"gayesiyle", "velhasıl", "ezcümle", "özetlersek", "etraflıca", "tafsilatlı", "genişçe", "bilfiil", "filhakika", "evvela", "i̇lkin", "en önce",
- "birincisi", "i̇kincisi", "üçüncüsü", "sonuncusu", "tıpkı", "topyekun", "hem", "ne", "kah", "ister", "ya", "gerek", "ha" ];
+ "birincisi", "i̇kincisi", "üçüncüsü", "sonuncusu", "tıpkı", "topyekun", "hem", "kah", "ister", "ya", "gerekse", "sayesinde", "sebebiyle",
+ "üzere", "göre", "uyarınca", "halen", "gerçekten", "madem", "yoksa" ];
export const multipleWords = [ "o halde", "bundan böyle", "demek ki", "ne yazık ki", "görüldüğü gibi", "i̇lk olarak", "son olarak", "ne var ki",
"buna rağmen", "yine de", "başka bir deyişle", "açıklamak gerekirse", "özetlemek gerekirse", "kısaca söylemek gerekirse", "görüldüğü gibi",
@@ -34,7 +35,7 @@ export const multipleWords = [ "o halde", "bundan böyle", "demek ki", "ne yazı
"sözün özü", "en nihayetinde", "uzun uzadıya", "her iki durumda da", "özü itibariyle", "amacı ile", "olması için", "başka bir ifadeyle",
"diğer bir deyişle", "i̇lk önce", "bir yandan", "bir taraftan", "hatırlatmak gerekirse", "bu bağlamda", "gel gelelim", "her şey hesaba katılırsa",
"bütüne bakıldığında", "belirtildiği gibi", "bir başka ifadeyle", "lafı toparlamak gerekirse", "bu düşünceyle", "bu maksatla", "bu doğrultuda",
- "bu niyetle", "hem de", "ne de", "ya da", "gerekse de" ];
+ "bu niyetle", "ne de", "ya da", "aksi durumda", "bu durum", "olup olmadığı", "diğer yandan", "öte yandan", "ne olursa olsun" ];
export const allWords = singleWords.concat( multipleWords );
diff --git a/packages/yoastseo/src/languageProcessing/languages/tr/config/twoPartTransitionWords.js b/packages/yoastseo/src/languageProcessing/languages/tr/config/twoPartTransitionWords.js
index 826accc203e..c43a0719f05 100644
--- a/packages/yoastseo/src/languageProcessing/languages/tr/config/twoPartTransitionWords.js
+++ b/packages/yoastseo/src/languageProcessing/languages/tr/config/twoPartTransitionWords.js
@@ -4,4 +4,4 @@
* Returns an array with two-part transition words to be used by the assessments.
* @returns {Array} The array filled with two-part transition words.
*/
-export default [ [ "hem", "hem de" ], [ "ne", "ne de" ], [ "ya", "ya da" ], [ "gerek", "gerekse de" ] ];
+export default [ [ "ne", "ne" ], [ "gerek", "gerek" ], [ "olsun", "olmasın" ] ];