Software localization is difficult. There are so many differences in natural langauges we use. In this post, I want to write about how not to localize your software. That is, there are so many softwares and libraries trying to deal with the localization, badly. They believe their works helps localization. But in reality, it just make things worse.
First and the most important. Collation is a bad idea. I have no idea what the collation is all about. Because, Japanese doesn't have that kind of concept. So if your software dealing with collation, you're doing thing that isn't generic among most natural langauges in the world.
Just look at the wikipedia entry for the Collation.
See Languages at the left side. If collation is so generic and it matters in all languages, then why there are only 19 languages for corresponding entry in the list. Why there is no Japanese, Chinese, Korean? Because, we don't have such a concept.
Case, accent, character ordering, these things does not exist or simply doesn't work at all in Japanese.
Plural handling. Please, Don't. Just don't do that. If you think plural handling is important for localization, you shall not implement the localization library in the first place.
For ease of localization, software should implement the most generic feature that makes sense in all natural languages. Plural handling is not a generic concept. We should rather change our natural language to make it easier for processing.
English. If localization library requires English knowledge, then it sucks. Really. It's horrible. The fact we need localization is not all people understand the single language. Software developer is no exception.
You may argue that programmer should understand English, localization is for user. That doesn't work at all. Programmers are, in the same time, users. If you can hire enough programmers who knows English well in that country, then you don't need a localization for English software in that country.
If you're living in a country where English is not a official language, but you and all citizens can understand English, then English defeated your language. What language do they use to teach students? English? Then, your language is dead. You don't need a localization at all.
We need a localization because we don't know that language. If your software does one of above in the name of localization, please don't. It's just doesn't work at all.
I bet if you insist English, you also insist plural handling. Consider, how can we completely abandon our language when you can't even abandon one of your silly grammar in your language? Nobody can.
These close minded non-generic implementation almost always has assumption how language should be processed. For other languages, it doesn't make sense and it must be modified. So we need to patch source code or binary. In that case, localization library become just another obstacle for localization. Localization cost is as same as localizing hard-coded software.