Michael,
I finally had some time to take a closer look at the m17n implementation. Do we really need classes for some of the language stuff? My impression is that most of the conversion etc could be table driven?
Hmm. Let's keep those. Various language specific methods can be there.
We can use them as a Factory of translation dictionaries. #primaryLanguage: and #setNaturalLanguageTo: may do some double dispatch kind of thing based with the language argument, etc.
If you say that they should be used more than now, yes.
Now, I wonder if you meant the "EncodedCharSet" subclasses, rather than the "LanguageEnvironment" ones. The former is even less used, and I have to say that I don't fully know we'll need a class for each Unicode block. (Probably not.) But still some of them, for example UnicodeJapanese, has some methods and will have more, so it would make sense to keep them, I think.
-- Yoshiki