You should look for text child nodes (with NodeType = XmlNodeType.Text ) and replace those. These will be of type XText:
if (translate.Count > 0)
{
foreach (XText node in xml.Descendants().Nodes().OfType<XText>())
{
if (translate.ContainsKey(node.Value.ToLower()))
node.Value = translate[node.Value.ToLower()];
}
}