I've always thought that a language like Idris based on Dependent Types would by far be the best language for this.
The problem is a non-trivial one even for 'simple' things like a person's name. Having a rule that takes in languages, special characters, spaces etc is hard.