If your XML feed separates entities by language, or your CSV uses a line per language, the same entities will need to be grouped together using an XSLT.
For example, for this XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<items>
<item>
<lang>fr</lang>
<reference>demo-1</reference>
<name>Name FR</name>
<price>13</price>
</item>
<item>
<lang>en</lang>
<reference>demo-1</reference>
<name>Name FR</name>
<price>13</price>
</item>
<item>
<lang>fr</lang>
<reference>demo-2</reference>
<name>Name FR</name>
<price>15</price>
</item>
<item>
<lang>en</lang>
<reference>demo-2</reference>
<name>Name FR</name>
<price>15</price>
</item>
</items>
We proceed as follows:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
<!ENTITY copy "©">
<!ENTITY reg "®">
<!ENTITY trade "™">
<!ENTITY mdash "—">
<!ENTITY ldquo "“">
<!ENTITY rdquo "”">
<!ENTITY pound "£">
<!ENTITY yen "¥">
<!ENTITY euro "€">
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:variable name="cdataStart"><![CDATA[ <![CDATA ]]></xsl:variable>
<xsl:variable name="cdataEnd"><![CDATA[ ]] ]]></xsl:variable>
<xsl:key name="groups" match="item" use="reference"/>
<xsl:template match="/items">
<products>
<xsl:apply-templates/>
</products>
</xsl:template>
<xsl:template match="item[generate-id()=generate-id(key('groups', reference)[1])]">
<product external-reference="{./reference}">
<reference>
<xsl:value-of select="./reference"/>
</reference>
<price>
<xsl:value-of select="./price"/>
</price>
<xsl:for-each select="key('groups', reference)">
<name lang="{./lang}">
<xsl:value-of select="./name"/>
</name>
</xsl:for-each>
</product>
</xsl:template>
<xsl:template match="item[not(generate-id()=generate-id(key('groups', reference)[1]))]"/>
</xsl:stylesheet>
The result is as follows:
<?xml version="1.0" encoding="utf-8"?>
<products>
<product external-reference="demo-1">
<reference>demo-1</reference>
<price>13</price>
<name lang="fr">Name FR</name>
<name lang="en">Name FR</name>
</product>
<product external-reference="demo-2">
<reference>demo-2</reference>
<price>15</price>
<name lang="fr">Name FR</name>
<name lang="en">Name FR</name>
</product>
</products>