diff --git a/scribus/scribus.cpp b/scribus/scribus.cpp
index 792763a73..730632c47 100644
--- a/scribus/scribus.cpp
+++ b/scribus/scribus.cpp
@@ -8551,7 +8551,7 @@ void ScribusMainWindow::insertSampleText()
 	}
 
 	if (loremMgr.exec())
-		loremMgr.insertLoremIpsum(loremMgr.getName(), loremMgr.paragraphCount(), loremMgr.randomize());
+		loremMgr.insertLoremIpsum();
 }
 
 void ScribusMainWindow::iconSetChange()
diff --git a/scribus/ui/loremipsum.cpp b/scribus/ui/loremipsum.cpp
index d9fbfb2bd..f0a2ffa03 100644
--- a/scribus/ui/loremipsum.cpp
+++ b/scribus/ui/loremipsum.cpp
@@ -14,22 +14,21 @@ for which a new license (GPL+exception) is in place.
  ***************************************************************************/
 #include "loremipsum.h"
 
+#include <QCheckBox>
 #include <QDir>
 #include <QDomDocument>
 #include <QEvent>
 #include <QFile>
-#include <QGridLayout>
+#include <QFileInfo>
 #include <QHBoxLayout>
-#include <QHeaderView>
+#include <QGroupBox>
 #include <QLabel>
 #include <QPushButton>
 #include <QSpacerItem>
 #include <QSpinBox>
-#include <QCheckBox>
+#include <QRadioButton>
 #include <QString>
 #include <QStringList>
-#include <QTreeWidget>
-#include <QTreeWidgetItem>
 #include <QVBoxLayout>
 
 #include "appmodes.h"
@@ -137,117 +136,87 @@ LoremManager::LoremManager(ScribusDoc* doc, QWidget* parent) : QDialog( parent )
 	setModal(true);
 	setWindowTitle( tr( "Lorem Ipsum" ) );
 	setWindowIcon(IconManager::instance().loadIcon("AppIcon.png"));
-	LoremManagerLayout = new QGridLayout(this) ;
-	LoremManagerLayout->setMargin(10);
-	LoremManagerLayout->setSpacing(5);
-
-	layout3 = new QVBoxLayout;
-	layout3->setMargin(0);
-	layout3->setSpacing(5);
-
-	loremList = new QTreeWidget( this );
-	loremList->setRootIsDecorated(true);
-	loremList->setColumnCount(1);
-	loremList->setHeaderLabel( tr("Select Lorem Ipsum"));
-	loremList->header()->setSectionsClickable( false );
-	loremList->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
-	loremList->setSelectionMode(QAbstractItemView::SingleSelection);
-	layout3->addWidget( loremList );
-
-	layout2 = new QHBoxLayout;
-	layout2->setMargin(0);
-	layout2->setSpacing(5);
-
-	paraLabel = new QLabel( this );
-	layout2->addWidget( paraLabel );
-
-	paraBox = new QSpinBox( this );
-	paraBox->setMinimum( 1 );
-	paraBox->setValue(PrefsManager::instance().appPrefs.miscPrefs.paragraphsLI);
-	layout2->addWidget( paraBox );
-
-	paraSpacer = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
-	layout2->addItem( paraSpacer );
-	layout3->addLayout( layout2 );
+
+	auto loremManagerLayout = new QVBoxLayout(this);
+	loremManagerLayout->setMargin(10);
+	loremManagerLayout->setSpacing(5);
+
+	standardRadioButton = new QRadioButton(this);
+	standardRadioButton->setChecked(true);
+	loremManagerLayout->addWidget(standardRadioButton);
+	localizedRadioButton = new QRadioButton(this);
+	loremManagerLayout->addWidget(localizedRadioButton);
+
+	auto groupBoxLayout = new QVBoxLayout;
+	groupBoxLayout->addStretch(1);
+
+	{
+		auto layout = new QHBoxLayout;
+		layout->setMargin(0);
+		layout->setSpacing(5);
+
+		paraLabel = new QLabel(this);
+		layout->addWidget(paraLabel);
+
+		paraBox = new QSpinBox(this);
+		paraBox->setMinimum(1);
+		paraBox->setValue(PrefsManager::instance().appPrefs.miscPrefs.paragraphsLI);
+		layout->addWidget(paraBox);
+
+		layout->addItem(new QSpacerItem(2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum));
+		groupBoxLayout->addLayout(layout);
+	}
 
 	randomCheckBox = new QCheckBox(this);
 	randomCheckBox->setChecked(true);
-	layout3->addWidget( randomCheckBox );
+	groupBoxLayout->addWidget(randomCheckBox);
 	appendCheckBox = new QCheckBox(this);
 	appendCheckBox->setChecked(false);
-	layout3->addWidget( appendCheckBox );
-
-//	layout3->addLayout( layout4 );
+	groupBoxLayout->addWidget(appendCheckBox);
 
-	layout1 = new QHBoxLayout;
-	layout1->setMargin(0);
-	layout1->setSpacing(5);
-	buttonSpacer = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
-	layout1->addItem( buttonSpacer );
+	{
+		auto layout = new QHBoxLayout;
+		layout->setMargin(0);
+		layout->setSpacing(5);
+		layout->addItem(new QSpacerItem(2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum));
+
+		okButton = new QPushButton(this);
+		layout->addWidget(okButton);
+		cancelButton = new QPushButton(this);
+		layout->addWidget(cancelButton);
+		groupBoxLayout->addLayout(layout);
+	}
 
-	okButton = new QPushButton( this );
-	layout1->addWidget( okButton );
+	auto groupBox = new QGroupBox(tr("Settings"), this);
+	groupBox->setLayout(groupBoxLayout);
 
-	cancelButton = new QPushButton( this );
-	layout1->addWidget( cancelButton );
-	layout3->addLayout( layout1 );
+	loremManagerLayout->addWidget(groupBox);
 
-	LoremManagerLayout->addLayout( layout3, 0, 0 );
 	languageChange();
 
-	// reading lorems
-	QDir d(getLoremLocation(QString()), "*.xml");
-
-	QFileInfoList list = d.entryInfoList();
-	QListIterator<QFileInfo> it(list);
-	QFileInfo fi;
-	LanguageManager * langmgr( LanguageManager::instance() );
-// 	langmgr->init(false);
+	// signals and slots connections
+	connect( okButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+	connect( cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
+}
 
-	while (it.hasNext())
+const QString LoremManager::getSampleFileName(const QString& langCode) const {
+	auto xmlPath = getLoremLocation(langCode+".xml");
+	QFileInfo fileInfo(xmlPath);
+	if (!fileInfo.exists())
 	{
-		fi = it.next();
-		if (langmgr->getLangFromAbbrev(fi.baseName(), false).isEmpty())
-			continue;
-		LoremParser *parser = new LoremParser(fi.fileName());
-		if (!parser->correct)
+		if (langCode.contains('_')) {
+			auto code = langCode.split('_')[0];
+			qDebug() << "code" << code;
+			xmlPath = getLoremLocation(code+".xml");
+			fileInfo = QFileInfo(xmlPath);
+		}
+		if (!fileInfo.exists())
 		{
-			delete parser;
-			continue;
+			xmlPath = getLoremLocation("la.xml");
+			fileInfo = QFileInfo(xmlPath);
 		}
-		availableLorems[parser->name] = fi.fileName();
-		QTreeWidgetItem *item = new QTreeWidgetItem(loremList);
-		if (parser->name=="la")
-			item->setText(0, standardloremtext);
-		else
-			item->setText(0, langmgr->getLangFromAbbrev(parser->name, true));
-		QTreeWidgetItem *subItem;
-		subItem = new QTreeWidgetItem(item);
-		subItem->setText(0, tr("Author:") + " " + parser->author);
-		subItem = new QTreeWidgetItem(item);
-		subItem->setText(0, tr("Get More:") + " " + parser->url);
-		subItem = new QTreeWidgetItem(item);
-		subItem->setText(0, tr("XML File:") + " " + fi.fileName());
-		delete parser;
 	}
-	loremList->sortItems(0, Qt::AscendingOrder);
-	loremList->setSortingEnabled(false);
-	resize( QSize(320, 340).expandedTo(minimumSizeHint()) );
-	QList<QTreeWidgetItem *> defItem;
-	defItem.clear();
-	defItem = loremList->findItems(langmgr->getLangFromAbbrev(m_Doc->language(), true), Qt::MatchExactly);
-	if (defItem.count() == 0)
-		defItem = loremList->findItems(standardloremtext, Qt::MatchExactly);
-	if (defItem.count() != 0)
-	{
-		loremList->setCurrentItem(defItem[0]);
-		defItem[0]->setSelected(true);
-	}
-	// signals and slots connections
-	connect( okButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
-	connect( cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
-	connect( loremList, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(accept()));
-	
+	return fileInfo.fileName();
 }
 
 void LoremManager::changeEvent(QEvent *e)
@@ -263,6 +232,8 @@ void LoremManager::changeEvent(QEvent *e)
 void LoremManager::languageChange()
 {
 	setWindowTitle( tr( "Lorem Ipsum" ) );
+	standardRadioButton->setText(tr("Standard Lorem Ipsum"));
+	localizedRadioButton->setText(tr("Localized sample text"));
 	paraLabel->setText( tr( "Paragraphs:" ) );
 	randomCheckBox->setText( tr("Random Paragraphs"));
 	appendCheckBox->setText( tr("Append to existing text"));
@@ -270,28 +241,28 @@ void LoremManager::languageChange()
 	okButton->setShortcut( QKeySequence( tr( "Alt+O" ) ) );
 	cancelButton->setText( CommonStrings::tr_Cancel );
 	cancelButton->setShortcut( QKeySequence( tr( "Alt+C" ) ) );
-	standardloremtext = tr("Standard Lorem Ipsum");
 	paraBox->setToolTip( tr( "Number of paragraphs of selected sample text to insert" ) );
-	loremList->setToolTip( tr( "List of languages available to insert sample text in" ) );
+}
+
+void LoremManager::insertLoremIpsum()
+{
+	const auto lang = localizedRadioButton->isChecked() ? getName() : "la.xml";
+	insertLoremIpsum(lang, paraBox->value(), randomCheckBox->isChecked());
 }
 
 void LoremManager::insertLoremIpsum(const QString& name, int paraCount, bool random)
 {
 	//CB: Avox please make insertText for text frame to nuke all this
 	// is it really applied?
-// 	bool done = false;
 
 	for (int i = 0; i < m_Doc->m_Selection->count(); ++i)
 	{
 		PageItem* currItem = m_Doc->m_Selection->itemAt(i);
 		if (currItem == nullptr)
 			continue;
-		//do not insert lorem ipsum text into notes frames
+		// do not insert lorem ipsum text into notes frames
 		if (currItem->isNoteFrame())
 			continue;
-		//removing marks and notes from current text
-//		if (currItem->isTextFrame() && !currItem->asTextFrame()->removeMarksFromText(!m_Doc->hasGUI()))
-//			continue;
 		PageItem *i2 = currItem;
 		if (m_Doc->appMode == modeEditTable)
 			i2 = currItem->asTable()->activeCell().textFrame();
@@ -304,10 +275,6 @@ void LoremManager::insertLoremIpsum(const QString& name, int paraCount, bool ran
 				activeTransaction = undoManager->beginTransaction(Um::Selection, Um::IGroup, Um::AddLoremIpsum, "", Um::ICreate);
 			i2->itemText.selectAll();
 			i2->asTextFrame()->deleteSelectedTextFromFrame();
-			//We don't need to open a dialog box as the user can undo this action.
-			//Selection tempSelection(this, false);
-			//tempSelection.addItem(i2, true);
-			//m_Doc->itemSelection_ClearItem(&tempSelection);
 			/* ClearItem() doesn't return true or false so
 			the following test has to be done */
 			if (i2->itemText.length() != 0)
@@ -327,7 +294,7 @@ void LoremManager::insertLoremIpsum(const QString& name, int paraCount, bool ran
 			SimpleState *ss = new SimpleState(Um::AddLoremIpsum,"",Um::ICreate);
 			ss->set("LOREM_FRAMETEXT");
 			ss->set("ETEA", QString("insert_frametext"));
-			ss->set("TEXT_STR",sampleText);
+			ss->set("TEXT_STR", sampleText);
 			ss->set("START", i2->itemText.length());
 			undoManager->action(i2, ss);
 		}
@@ -347,33 +314,16 @@ void LoremManager::insertLoremIpsum(const QString& name, int paraCount, bool ran
 
 QString LoremManager::loremIpsum()
 {
-	LoremParser lp(getName());
+	const auto lang = localizedRadioButton->isChecked() ? getName() : "la.xml";
+	LoremParser lp(lang);
 	return lp.createLorem(paraBox->value(), randomCheckBox->isChecked());
 }
 
-int LoremManager::paragraphCount()
-{
-	return paraBox->value();
-}
-
-bool LoremManager::randomize()
-{
-	return randomCheckBox->isChecked();
-}
-
 QString LoremManager::getName()
 {
-	QTreeWidgetItem *li;
-	if (loremList->currentItem()->parent() == nullptr)
-		li = loremList->currentItem();
-	else
-		li = loremList->currentItem()->parent();
-
-	QString name;
-	if (li->text(0)==standardloremtext)
-		name="la";
-	else
-		name=LanguageManager::instance()->getAbbrevFromLang(li->text(0), false);
-
-	return availableLorems[name];
+	const auto currItem = m_Doc->m_Selection->itemAt(0)->asTextFrame();
+	const auto lang = currItem->itemText.length() > 0 ?
+		currItem->currentCharStyle().language() :
+		currItem->itemText.defaultStyle().charStyle().language();
+	return getSampleFileName(lang);
 }
diff --git a/scribus/ui/loremipsum.h b/scribus/ui/loremipsum.h
index 09aaf312a..f4e09d80f 100644
--- a/scribus/ui/loremipsum.h
+++ b/scribus/ui/loremipsum.h
@@ -22,16 +22,13 @@ for which a new license (GPL+exception) is in place.
 #include "scribusapi.h"
 
 class QEvent;
-class QGridLayout;
-class QHBoxLayout;
 class QLabel;
 class QPushButton;
-class QSpacerItem;
 class QSpinBox;
 class QCheckBox;
+class QRadioButton;
 class QString;
 class QStringList;
-class QTreeWidget;
 class QVBoxLayout;
 
 class ScribusDoc;
@@ -89,47 +86,36 @@ public:
 	/*! Reads all XML files in cfg directory. */
 	LoremManager(ScribusDoc* doc, QWidget* parent = nullptr);
 
-	/*! Apply created LI into a frame
+	//! Insert the sample text as defined in the dialog
+	void insertLoremIpsum();
+	/*! Insert the sample text according to the parameters
 	\param name filename of the selected LI
 	\param paraCount count of the paragraphs
 	*/
 	void insertLoremIpsum(const QString& name, int paraCount, bool random = true);
 
-	//! Lorem Ipsum as QString
+	//! Lorem Ipsum as QString (for the Story Editor)
 	QString loremIpsum();
 
-	//! Count of the paragraphs selected in GUI
-	int paragraphCount();
-
-	//! Name of the Lorem Ipsum file including extension.
-	QString getName();
-
-	//! Flag if use "random" paragraphs, taken from GUI.
-	bool randomize();
-
 protected:
 	void changeEvent(QEvent *e) override;
 
 private:
+	QRadioButton* standardRadioButton {nullptr};
+	QRadioButton* localizedRadioButton {nullptr};
 	QCheckBox* appendCheckBox {nullptr};
 	QCheckBox* randomCheckBox {nullptr};
-	QGridLayout* LoremManagerLayout {nullptr};
-	QHBoxLayout* layout1 {nullptr};
-	QHBoxLayout* layout2 {nullptr};
 	QLabel* paraLabel {nullptr};
 	QPushButton* cancelButton {nullptr};
 	QPushButton* okButton {nullptr};
-	QSpacerItem* buttonSpacer {nullptr};
-	QSpacerItem* paraSpacer {nullptr};
 	QSpinBox* paraBox {nullptr};
-	QString standardloremtext;
-	QTreeWidget* loremList {nullptr};
-	QVBoxLayout* layout3 {nullptr};
 	ScribusDoc* m_Doc {nullptr};
 	UndoManager* undoManager {nullptr};
 
-	//! all lorems with Public Name -> filename structure
-	QMap<QString,QString> availableLorems;
+	//! Name of the Lorem Ipsum file including extension.
+	QString getName();
+	//! Name of the Lorem Ipsum file including extension.
+	const QString getSampleFileName(const QString& langCode) const;
 
 protected slots:
 	void languageChange();
