Skip to content

Commit

Permalink
Allowing arrays to be passed as formatting arguments in translation f…
Browse files Browse the repository at this point in the history
…uncitons
  • Loading branch information
lorenzo committed Jul 25, 2014
1 parent 545f244 commit 7b8ffb9
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
16 changes: 8 additions & 8 deletions src/basics.php
Expand Up @@ -572,8 +572,8 @@ function __($singular, $args = null) {
return;
}

$arguments = func_get_args();
return I18n::translator()->translate($singular, array_slice($arguments, 1));
$arguments = func_num_args() === 2 ? (array)$args : array_slice(func_get_args(), 1);
return I18n::translator()->translate($singular, $arguments);
}

}
Expand All @@ -596,10 +596,10 @@ function __n($singular, $plural, $count, $args = null) {
return;
}

$arguments = func_get_args();
$arguments = func_num_args() === 4 ? (array)$args : array_slice(func_get_args(), 3);
return I18n::translator()->translate(
$plural,
['_count' => $count] + array_slice($arguments, 1)
['_count' => $count] + $arguments
);
}

Expand All @@ -620,8 +620,8 @@ function __d($domain, $msg, $args = null) {
if (!$msg) {
return;
}
$arguments = func_get_args();
return I18n::translator($domain)->translate($msg, array_slice($arguments, 2));
$arguments = func_num_args() === 3 ? (array)$args : array_slice(func_get_args(), 2);
return I18n::translator($domain)->translate($msg, $arguments);
}

}
Expand All @@ -646,10 +646,10 @@ function __dn($domain, $singular, $plural, $count, $args = null) {
return;
}

$arguments = func_get_args();
$arguments = func_num_args() === 5 ? (array)$args : array_slice(func_get_args(), 4);
return I18n::translator($domain)->translate(
$plural,
['_count' => $count] + array_slice($arguments, 4)
['_count' => $count] + $arguments
);
}

Expand Down
5 changes: 3 additions & 2 deletions tests/TestCase/I18n/I18nTest.php
Expand Up @@ -194,11 +194,12 @@ public function testBasicDomainFunction() {
$package = new Package();
$package->setMessages([
'Cow' => 'Le moo',
'The {0} is tasty' => 'The {0} is delicious'
'The {thing} is tasty' => 'The {thing} is delicious'
]);
return $package;
});
$this->assertEquals('The fruit is delicious', __d('custom', 'The {0} is tasty', 'fruit'));
$result = __d('custom', 'The {thing} is tasty', ['thing' => 'fruit']);
$this->assertEquals('The fruit is delicious', $result);
}

/**
Expand Down

0 comments on commit 7b8ffb9

Please sign in to comment.