Great points, another idea would be that $msgSet->some_message_name returns a very simple object which has a toString method defined, as well as other things like parse() and such. Then $msgSet->test or $msgSet->test->parse( 3 ) could both return strings and work just fine. To Roan's point, using $msgSet->{test-message} isn't too bad - but switching to _ from - might start being popular anyways so a switch over might be something we could consider.
On 3/30/10 12:58 AM, Daniel Kinzler wrote:
I like it, especially the "messages in sets" thing. Though there should be a smart way to avoid loading the same set more than once. Perhaps a static factory class which manages one instance per set name.
The magic properties also arn't bad, though I kind of like the chaining thing... $msgSet->parse( 'test-number', 4 ) isn't so nice, it would be much nicer to have $msgSet->test_number->parameters( 4 )->escape() etc. That would however mean that the magic properties wouldn't be strings, but objects themselves. not sure if that's good for performance...
just some thoughts
-- daniel
Trevor Parscal schrieb:
I have been experimenting with a very different approach to this problem which essentially goes like this...
// Provide a source for a message set at start-up time, this opens up other message sources in the future MessageCache::bind( 'myMessages', new MessageFile( 'i18n/myMessages.php' ) );
// Get a message set object for that set $msgSet = new MessageSet( 'myMessages' );
// Use messages as *magic* properties of the object echo "$msgSet->name says $msgSet->test";
// Use a message, passing in parameters echo $msgSet->parse( 'test-number', 4 );
I have some basic code for this, but I'm mostly just suggesting it as an alternative to using a static class like this. I think the other thing this implies is something that would be beneficial to MediaWiki - putting messages is sets (similar to gettext's domains). Anyways, just my 2 cents.
- Trevor
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l