[pLog-svn] r5768 - in plog/trunk/class: locale test/tests/locale
Oscar Renalias
oscar at renalias.net
Thu Aug 2 07:07:37 EDT 2007
I was looking for examples in the locale files and we do use %1$s,
%2$s, etc, in some places. But good that you spotted thatthat using
%1$s for only one replacement will not work, I will have a look at it.
Oscar
On 8/2/07, Jon Daley <plogworld at jon.limedaley.com> wrote:
> Do we have to use %1$s instead of just %s? I haven't seen that
> notation before, did you make it up or is that standard?
> The reason I ask, is that I thought the first check-in was fine,
> but this second one looks like it could lead to problems - If someone
> happens to make a locale string with only one replacement, but uses %1$s,
> it won't work (if I read the code correctly).
> I think if we didn't have any numbers but just used %s instead,
> that would be better. The str_replace can't do it, but we could use
> strtok or strpos to do it a custom way, or use vsprintf.
>
> On Wed, 1 Aug 2007, oscar at devel.lifetype.net wrote:
>
> > Author: oscar
> > Date: 2007-08-01 16:39:07 -0400 (Wed, 01 Aug 2007)
> > New Revision: 5768
> >
> > Modified:
> > plog/trunk/class/locale/locale.class.php
> > plog/trunk/class/test/tests/locale/locale_test.class.php
> > Log:
> > We should also support %s, in additon to %1$s, %2$s, etc as many of our strings use %s instead of %1$s to specify positional parameters.
> >
> >
> > Modified: plog/trunk/class/locale/locale.class.php
> > ===================================================================
> > --- plog/trunk/class/locale/locale.class.php 2007-08-01 20:07:00 UTC (rev 5767)
> > +++ plog/trunk/class/locale/locale.class.php 2007-08-01 20:39:07 UTC (rev 5768)
> > @@ -284,11 +284,17 @@
> > // the first parameter contains the id of the string
> > $str = $this->tr( $id );
> >
> > - for( $i = 1; $i < func_num_args(); $i++ ) {
> > - $strId = "%{$i}\$s";
> > - $param = func_get_arg( $i ) ;
> > - $str = str_replace( $strId, $param, $str );
> > + if( func_num_args() == 2 ) {
> > + $param = func_get_arg( 1 ) ;
> > + $str = str_replace( "%s", $param, $str );
> > }
> > + else {
> > + for( $i = 1; $i < func_num_args(); $i++ ) {
> > + $strId = "%{$i}\$s";
> > + $param = func_get_arg( $i ) ;
> > + $str = str_replace( $strId, $param, $str );
> > + }
> > + }
> >
> > return $str;
> > }
> >
> > Modified: plog/trunk/class/test/tests/locale/locale_test.class.php
> > ===================================================================
> > --- plog/trunk/class/test/tests/locale/locale_test.class.php 2007-08-01 20:07:00 UTC (rev 5767)
> > +++ plog/trunk/class/test/tests/locale/locale_test.class.php 2007-08-01 20:39:07 UTC (rev 5768)
> > @@ -29,9 +29,11 @@
> > $this->l->_loadLocaleFile();
> > $this->l->_messages["pr_test_1"] = "%1\$s, %2\$s!";
> > $this->l->_messages["pr_test_2"] = "%1\$s, how %2\$s %3\$s today, %4\$s?";
> > + $this->l->_messages["pr_test_3"] = "Hello, %s!";
> >
> > $this->assertEquals( "Hello, world!", $this->l->pr( "pr_test_1", "Hello", "world" ));
> > $this->assertEquals( "Hello, how are you today, sir?", $this->l->pr( "pr_test_2", "Hello", "are", "you", "sir" ));
> > + $this->assertEquals( "Hello, world!", $this->l->pr( "pr_test_3", "world" ));
> > }
> >
> > /**
> >
> > _______________________________________________
> > pLog-svn mailing list
> > pLog-svn at devel.lifetype.net
> > http://limedaley.com/mailman/listinfo/plog-svn
> >
>
> --
> Jon Daley
> http://jon.limedaley.com/
>
> Inanimate objects are classified scientifically into
> three major categories: those that don't work, those
> that break down, and those that get lost.
> -- Russell Baker
> _______________________________________________
> pLog-svn mailing list
> pLog-svn at devel.lifetype.net
> http://limedaley.com/mailman/listinfo/plog-svn
>
More information about the pLog-svn
mailing list