diff --git a/scribus/plugins/gettext/odt2im/importodt.cpp b/scribus/plugins/gettext/odt2im/importodt.cpp
index 9f5dedf6cd..a6d0b4e91d 100644
--- a/scribus/plugins/gettext/odt2im/importodt.cpp
+++ b/scribus/plugins/gettext/odt2im/importodt.cpp
@@ -493,6 +493,7 @@ void ODTIm::parseStyles(const QDomElement &sp, const QString& type)
 					currStyle.textStrikeThrough = AttributeValue(spe.attribute("style:text-line-through-style", ""));
 					currStyle.textShadow = AttributeValue(spe.attribute("fo:text-shadow", ""));
 					currStyle.fontVariant = AttributeValue(spe.attribute("fo:font-variant", ""));
+					currStyle.language = AttributeValue(spe.attribute("fo:language", ""));
 				}
 			}
 			if (spd.attribute("style:family") == "paragraph")
@@ -573,6 +574,7 @@ void ODTIm::parseStyles(const QDomElement &sp, const QString& type)
 					currStyle.textStrikeThrough = AttributeValue(spe.attribute("style:text-line-through-style", ""));
 					currStyle.textShadow = AttributeValue(spe.attribute("fo:text-shadow", ""));
 					currStyle.fontVariant = AttributeValue(spe.attribute("fo:font-variant", ""));
+					currStyle.language = AttributeValue(spe.attribute("fo:language", ""));
 				}
 			}
 			currStyle.displayName = AttributeValue(spd.attribute("style:display-name", ""));
@@ -1014,6 +1016,7 @@ void ODTIm::applyCharacterStyle(CharStyle &tmpCStyle, const ObjStyleODT &oStyle)
 	tmpCStyle.setFillColor(oStyle.CurrColorText);
 	tmpCStyle.setBackColor(oStyle.CurrColorBText);
 	StyleFlag styleEffects = tmpCStyle.effects();
+	tmpCStyle.setLanguage(oStyle.language);
 	if ((oStyle.textPos.startsWith("super")) || (oStyle.textPos.startsWith("sub")))
 	{
 		if (oStyle.textPos.startsWith("super"))
@@ -1170,6 +1173,8 @@ void ODTIm::resolveStyle(ObjStyleODT &tmpOStyle, const QString& styleName)
 			actStyle.breakAfter = AttributeValue(currStyle.breakAfter.value);
 		if (currStyle.breakBefore.valid)
 			actStyle.breakBefore = AttributeValue(currStyle.breakBefore.value);
+		if (currStyle.language.valid)
+            		actStyle.language = AttributeValue(currStyle.language.value);
 	}
 
 	if (actStyle.textBackgroundColor.valid)
@@ -1356,6 +1361,8 @@ void ODTIm::resolveStyle(ObjStyleODT &tmpOStyle, const QString& styleName)
 		tmpOStyle.breakAfter = actStyle.breakAfter.value;
 	if (actStyle.breakBefore.valid)
 		tmpOStyle.breakBefore = actStyle.breakBefore.value;
+	if (actStyle.language.valid)
+        	tmpOStyle.language = actStyle.language.value;
 }
 
 double ODTIm::parseUnit(const QString &unit)
diff --git a/scribus/plugins/gettext/odt2im/importodt.h b/scribus/plugins/gettext/odt2im/importodt.h
index 235b4ca501..eda523b34f 100644
--- a/scribus/plugins/gettext/odt2im/importodt.h
+++ b/scribus/plugins/gettext/odt2im/importodt.h
@@ -63,6 +63,7 @@ class ObjStyleODT
 	QList<ParagraphStyle::TabRecord> tabStops;
 	QString breakBefore {"auto"};
 	QString breakAfter {"auto"};
+	QString language;
 };
 
 class ODTIm
@@ -110,6 +111,7 @@ class ODTIm
 		AttributeValue tabTypes;
 		AttributeValue breakBefore;
 		AttributeValue breakAfter;
+		AttributeValue language;
 	};
 
 	bool parseContent(const QString& fileName, bool textOnly);
