Use xsl:key. Because is not clear the output you need I've provided just an example for you showing how to get the title from titles for each page according to the page language.
XSLT 1.0 tested under Saxon 6.5.5
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="titles" match="titles/*" use="local-name()"/>
<xsl:template match="/root">
<xsl:for-each select="page">
<xsl:value-of select="concat('title-',@title,key('titles',@title),'
')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Applied on this input
<?xml version="1.0" encoding="UTF-8"?>
<root>
<titles>
<en>A title</en>
<de>Ein Titel</de>
</titles>
<page title="de">
....
</page>
<page title="en">
....
</page>
</root>
produces:
title-de:Ein Titel
title-en:A title
Tested on Mozilla Firefox 3.6.17 as follows:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test_trans.xsl"?>
<root>
<titles>
<en>A title</en>
<de>Ein Titel</de>
</titles>
<page title="de">
....
</page>
<page title="en">
....
</page>
</root>
Produces
title-deEin Titeltitle-enA title
Obviously without new lines, because we are displaying it in a browser and the transform should be changed to produce HTML.