如果我们想在Drupal中翻译复数字符串,可以使用该format_plural()
函数。
如果您正在编写drush命令,则可以使用该dt()
函数来翻译字符串,但是如果要在drush中翻译多个字符串,该函数是否可以完成此操作?
如果我们想在Drupal中翻译复数字符串,可以使用该format_plural()
函数。
如果您正在编写drush命令,则可以使用该dt()
函数来翻译字符串,但是如果要在drush中翻译多个字符串,该函数是否可以完成此操作?
Answers:
在处理文本的Drush函数之间没有这样的函数,但是您可以使用format_plural()中的代码来实现一个函数,用对的调用替换任何对t()
的调用dt()
。
function drush_plural($count, $singular, $plural, array $args = array(), array $options = array()) {
$args['@count'] = $count;
if ($count == 1) {
return dt($singular, $args, $options);
}
// Get the plural index through the gettext formula.
$index = (function_exists('locale_get_plural')) ? locale_get_plural($count, isset($options['langcode']) ? $options['langcode'] : NULL) : -1;
// If the index cannot be computed, use the plural as a fallback (which
// allows for most flexiblity with the replaceable @count value).
if ($index < 0) {
return dt($plural, $args, $options);
}
else {
switch ($index) {
case "0":
return dt($singular, $args, $options);
case "1":
return dt($plural, $args, $options);
default:
unset($args['@count']);
$args['@count[' . $index . ']'] = $count;
return dt(strtr($plural, array('@count' => '@count[' . $index . ']')), $args, $options);
}
}
}