I hope I'm not missing anything, but it looks to me like you're just looking for table:
table(df[c("date", "classes")])
# classes
# date english french spanish
# 9/1/11 1 2 1
# 9/2/11 1 1 0
# 9/3/11 0 0 2
# 9/5/11 2 1 1
The result is a table (which is also a matrix) so you can use your barchart command as you wish.
Here's what I get--looks like you need to work on your legend :-)

The code used was:
language <- table(df[c("date", "classes")])
barchart(prop.table(language),
horizontal = FALSE,
auto.key = list(space = 'right',
cex = .5, border = T, points = F,
lines = F, lwd = 5,
text = c('french','spanish','enligsh'),
cex = .6),
main = list(label = "Distribution of classes 10", cex = 2.5),
ylab = list("", cex = 1.7),
xlab.top = list("testing", cex = 1.2))