Which normalization rule violates the column-per-language approach?
I would classify it as breaking NF2.  The language dependent columns are dependent on the Primary key and the Language.  I normally model these in a child table keyed on the Primary key of the parent table, and a language code (integer or ISO language code). 

The disadvantage of having a child table is that it is difficult to ensure all the languages are provided.  This can be an advantage as you can save the record before you have all translations available.  In some cases, I have used language preferences to retrieve the best (by preference) alternate language for the description.  (HTTP has a header that allows language preferences to be specified.)