Opened 16 years ago
Closed 16 years ago
#9673 closed enhancement (wontfix)
sprintf() shortcuts
Reported by: |
|
Owned by: |
|
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 2.8 |
Component: | I18N | Keywords: | 2nd-opinion |
Focuses: | Cc: |
Description
After seeing #9650, I figured it would equally make sense to add shortcut methods for the very often used case of formatted, localized strings:
sprintf( __('Author is %s'), $author )
I propose two new l10n functions: _f()
and _ef()
which accept a formatted string and a variable number of arguments, which are passed through __()
and sprintf()
as in the example above.
I've not yet attached a patch for this, because I'm not sure what to do about the domain. One possibility is to require that the domain be passed in, so the above example would be called as:
_f( 'Author is %s', 'default', $author)
I'm certainly not crazy about that approach, since it makes all the calls in WP core unnecessarily verbose. Alternately, you could take the variable arguments as an array, changing the function signature to be:
function _f( $string, $args, $domain = 'default')
This would result in the above example being called as:
_f( 'Author is %s', array($author) )
or if you want to specify the domain:
_f( 'Author is %s', array($author), 'my-domain' )
Would love to hear others thoughts on this. Perhaps this has even been discussed before?
Change History (6)
#2
@
16 years ago
Why not make all these l10n functions into comparable object methods, and then set the domain as an object property? Then you could do something like the following:
$my_l10n = new WP_L10n('my-domain'); $my_l10n->_f('Author is %s', array($author))
#3
@
16 years ago
- Keywords 2nd-opinion added; i18n removed
- Milestone changed from Unassigned to Future Release
if any _f() creeps in, it should probably be like this:
_('foo %s', $bar, 'domain');
#4
@
16 years ago
but i'm really itching to close as wontfix, due to the fact that it'll introduce unneeded overhead.
just thinking out loud a bit... perhaps allow the first argument to be a string or an array of two strings (the string itself, and the domain). Then the simple use case would be:
and the slightly more complex would be
Hmm, but then the second example here is inconsistent with the other
_*()
functions, and is almost identical to simply calling