Perils of language-sensitively transliterated names, or, Better living through hack value

Wednesday, 26 Dec 2007

James Clark:

I’m sure that just as personal names in Thai culture have some features that are surprising from a Western perspective, there must be many other cultures where personal names have equally surprising features. I would love to learn more about these. If anybody can blog or comment with additional information, that would be great.

(That entire post, as well as the comment thread, is well worth reading.) Funnily enough, surprising features in personal names can be exhibited even by quintessentially Western names. If you are subscribed to this weblog, you probably know that my name is Αριστοτέλης Παγκαλτζής. In English, that is “Aristotle Pagaltzis,” but the transliteration of many Greek first names to Latin differs depending on language, and mine is one of them: in German, it’s “Aristoteles.”

As a result, I have a problem with what to use on the From: line of my emails. So far, I avoided the problem by using “A. Pagaltzis” as my realname. But that is ugly. It also frequently leads strangers who read my emails (e.g. on mailing lists) to address me as “Pagaltzis.” Unfortunately, correcting the From: line in every mail I send is busywork and easy to forget.

In contrast, I have several signatures that are all appended every time I compose a mail. And I never forget to delete the inappropriate/-applicable sigs. (Well, all but twice in 4 years.) Several of them are different-language variants of the same signature. All of them include my first name written in full as appropriate for the language in question. That alone doesn’t suffice, though: people will sometimes not notice the signature or not bother to read that far.

The obvious next step: write script that changes the abbreviated name in the From: line to agree with the signature. I had been meaning to do this for years, but mutt 1.4 did not offer hooks at the processing steps that would enable this. So I deferred the matter. Then a while ago, I finally quit waiting for mutt 1.6 and upgraded to the current developer version, 1.5, to get the header caching feature. I did not think of that issue, though, until the other day, someone replied to me the on the sqlite-users list saying “Thanks, Pagaltzis” and reminding me that I wanted to fix this.

Well, it turns out mutt 1.5 offers hooks at the right stages, but it’s not possible to match on information from the body of the mail. So I accepted that I’d be forced to do this at the wrong layer and turned to Vim. As of today, my .vimrc sports the following line:

autocmd FileType mail autocmd BufWritePre <buffer> 1,/^\n/s!^From:.*\zsA\.\ze Pagaltzis!\= matchstr( matchstr( join( getline(1,'$'), "\r" ), '\v\r-- \r\zs([^\r]+(\r|$))*' ), '\vAristot(le|eles)' ) !e

Pretty, isn’t it?

Well no, not really. But as of today, my email is finally going out with my name written in full! (There are some tweaks left to make it more robust.) You can’t appreciate how much a small matter like this can mean if it has always just worked for you.