I don't think it's as simple as painting the husband and kid as villains. It's realistic. I'd like to share personal experiences. My dad sometimes would make these kinds of comments about my mom in their earlier years when I was younger. Hell, my little brother would also chime in when my mom mispronounced an english word and they'd laugh. In hindsight, they both realize that was really effed up and that my mom did get hurt but she'd just put on a smile.
People are not black or white. Good people who are otherwise loving and supportive can say and do hurtful things without meaning to hurt someone. A lot of what Shashi's husband and kid did and said they didn't realize was hurtful. They thought that Shashi would take it as a joke but it was mean.
And in the end, it wasn't the fact that she spoke English, but the fact that in front of everyone she finally explained how she felt when people made fun of her that her husband and kid felt like shit. They didn't apologize coz of her english, they apologized coz they realized that they had been mean.
And for that reason alone, that in the end they realized their mistake and felt terrible, I don't think it's terrible that Shashi forgave them. I mean, it's her husband and child. You don't just break a marriage and leave your child for something like this. Especially when the family apologizes and realize their mistake.