Well, after researching for several months I decided to use Qcodo as a framework for a major financial application I am working on. However, since this will be used worldwide, top of the line I18N support is neccesary.
I noticed some weaknesses in your I18N methodology that I would like to point out here. However, at this point I'm probably going to port my own I18N components to Qcodo.
(1) No support for pluralization
None of the .po files give pluralization directives. Just to give an idea of the importance of this, here's how Polish plurals are determined:
public function pluralize()
{
if ( ( $count == 1 ) )
{
return ( sprintf ( $string, $count, $plurals[0] ) );
} else {
if ( ( $count % 10 ) >= 2 && ( $count % 10 ) <= 4 &&
( ( $count % 100 ) < 10 || ( $count % 100 ) >= 20 ) )
{
return ( sprintf ( $string, $count, $this->_plurals[1] ) );
} else {
return ( sprintf ( $string, $count, $plurals[2] ) );
}
}
}
Polish and Slovenian tend to be the more complicated of these examples, but without proper pluralization support it can often make an application appear unprofessional.
(2) No date, number or currency localization. Again, hugely important but seemingly missing entirely.
(3) Using a single global language file. This is a huge problem. The project I'm working on will likely have 2000+ lines of text. It would be extremely memory intensive to load the whole file into memory, even if it's cached. My system uses the view to determine the proper language file (although the header and footer are automagically loaded within the locale files as well), but the model or controller could be used as a starting point as well.
Just some thoughts, but I'm going to start work today on porting my system over. Initially my system used ini files to store data but I'm debating on whether or not to use the po files as well (I'll be doing some testing with Qcodo's cache system before I do anything).
Great product by the way, after looking at probably 20+ frameworks Qcodo was definately the one for us!