Tim Starling wrote:
Will this library be free?
Of course! (maybe a little too free, being licensed under LGPL). A link, perhaps, would speak better: http://hp.jpsband.org/
I've made a number of posts to wikitech-l on this subject, but I don't use the term "i18n". As I once quipped on IRC, MediaWiki isn't internationalised, it's international. It's always been international, we never had to go through the process of internationalisation to get there. Or more precisely, it's multilingual. But also I don't like substituting digits for letters.
For your benefit, I reran the search under "international", "language" and "Tim Starling". Some interesting threads were brought up:
http://mail.wikipedia.org/mailman/htdig/wikitech-l/2002-March/012496.html - extremely old thread on switching to UTF-8
http://mail.wikipedia.org/mailman/htdig/wikitech-l/2006-July/037090.html - your proposal for rewriting the language files
There are a number of aspects to our interface translation system:
- Message input
- Architecture, caching
- Parameter substitution: agglutination and escaping
Which of these are you interested in? Presumably our message input model (i.e. via a wiki) wouldn't be universally applicable.
Comments on message input would be very valuable, not necessarily from the wiki side, but from the PHP file for translators side. Specifically, now that your switch has been made, are you happy with the new implementation of the translator? Also, what you think of the method that extensions add localizable strings to the MessageCache? Would decentralizing the messages be a better policy for even the core parts of MediaWiki? How about just decentralizing English messages, so they're never out of-sync with the code?
Policy on how you reuse messages would be interesting too: how much would a message have to change before you just say, "Okay, we need to give it a new name so old customizations don't clobber it."? As well as naming conventions for the messages: what would you imagine a good policy would be?
Architecture is hard to figure out from just looking at code, so a real-quick, high level lowdown would be appreciated (doesn't have to be very long). Caching, I understand, is just lots of unserialize and filemtime calls.
Parameter substitution (from what I see) seems at first to be a very easy thing to do, but quickly gets very complicated. I'd like to know the major pitfalls with substitution in obscure languages are (so I can determine whether or not, for my needs, I have to work around them, or I can blithely ignore them).
I suppose this is just a big jumble of questions that I'd like answered. I hope none of them are too time-consuming. Thanks for your help!