WordPress Version: 6.1
/**
* Localizes list items before the rest of the content.
*
* The '%l' must be at the first characters can then contain the rest of the
* content. The list items will have ', ', ', and', and ' and ' added depending
* on the amount of list items in the $args parameter.
*
* @since 2.5.0
*
* @param string $pattern Content containing '%l' at the beginning.
* @param array $args List items to prepend to the content and replace '%l'.
* @return string Localized list items and rest of the content.
*/
function wp_sprintf_l($pattern, $args)
{
// Not a match.
if ('%l' !== substr($pattern, 0, 2)) {
return $pattern;
}
// Nothing to work with.
if (empty($args)) {
return '';
}
/**
* Filters the translated delimiters used by wp_sprintf_l().
* Placeholders (%s) are included to assist translators and then
* removed before the array of strings reaches the filter.
*
* Please note: Ampersands and entities should be avoided here.
*
* @since 2.5.0
*
* @param array $delimiters An array of translated delimiters.
*/
$l = apply_filters('wp_sprintf_l', array(
/* translators: Used to join items in a list with more than 2 items. */
'between' => sprintf(__('%1$s, %2$s'), '', ''),
/* translators: Used to join last two items in a list with more than 2 times. */
'between_last_two' => sprintf(__('%1$s, and %2$s'), '', ''),
/* translators: Used to join items in a list with only 2 items. */
'between_only_two' => sprintf(__('%1$s and %2$s'), '', ''),
));
$args = (array) $args;
$result = array_shift($args);
if (count($args) == 1) {
$result .= $l['between_only_two'] . array_shift($args);
}
// Loop when more than two args.
$i = count($args);
while ($i) {
$arg = array_shift($args);
$i--;
if (0 == $i) {
$result .= $l['between_last_two'] . $arg;
} else {
$result .= $l['between'] . $arg;
}
}
return $result . substr($pattern, 2);
}