mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/10345] Allow float as array key and add some tests
Added tests for the fallback when a key is missing and the float-feature. PHPBB3-10345
This commit is contained in:
parent
179662e949
commit
2de7153afd
2 changed files with 22 additions and 2 deletions
|
@ -1869,7 +1869,7 @@ class user extends session
|
||||||
// We now get the first number passed and will select the key based upon this number
|
// We now get the first number passed and will select the key based upon this number
|
||||||
for ($i = 1, $num_args = sizeof($args); $i < $num_args; $i++)
|
for ($i = 1, $num_args = sizeof($args); $i < $num_args; $i++)
|
||||||
{
|
{
|
||||||
if (is_int($args[$i]))
|
if (is_int($args[$i]) || is_float($args[$i]))
|
||||||
{
|
{
|
||||||
$use_plural_form = $this->get_plural_form($args[$i]);
|
$use_plural_form = $this->get_plural_form($args[$i]);
|
||||||
$numbers = array_keys($lang);
|
$numbers = array_keys($lang);
|
||||||
|
@ -1905,12 +1905,14 @@ class user extends session
|
||||||
* Determine which plural form we should use.
|
* Determine which plural form we should use.
|
||||||
* For some languages this is not as simple as for English.
|
* For some languages this is not as simple as for English.
|
||||||
*
|
*
|
||||||
* @param $number int The number we want to get the plural case for
|
* @param $number int|float The number we want to get the plural case for
|
||||||
* @param $force_rule mixed False to use the plural rule of the language package
|
* @param $force_rule mixed False to use the plural rule of the language package
|
||||||
* or an integer to force a certain plural rule
|
* or an integer to force a certain plural rule
|
||||||
*/
|
*/
|
||||||
function get_plural_form($number, $force_rule = false)
|
function get_plural_form($number, $force_rule = false)
|
||||||
{
|
{
|
||||||
|
$number = (int) $number;
|
||||||
|
|
||||||
if ($number == 0)
|
if ($number == 0)
|
||||||
{
|
{
|
||||||
// We use special language strings for 0, so it's "no users" instead of "0 users"
|
// We use special language strings for 0, so it's "no users" instead of "0 users"
|
||||||
|
|
|
@ -26,6 +26,14 @@ class phpbb_user_lang_test extends phpbb_test_case
|
||||||
1 => '1 post', // 1
|
1 => '1 post', // 1
|
||||||
2 => '%d posts', // 2+
|
2 => '%d posts', // 2+
|
||||||
),
|
),
|
||||||
|
'ARRY_NO_ZERO' => array(
|
||||||
|
1 => '1 post', // 1
|
||||||
|
2 => '%d posts', // 0, 2+
|
||||||
|
),
|
||||||
|
'ARRY_FLOAT' => array(
|
||||||
|
1 => '1 post', // 1.x
|
||||||
|
2 => '%1$.1f posts', // 0.x, 2+.x
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
// No param
|
// No param
|
||||||
|
@ -51,6 +59,16 @@ class phpbb_user_lang_test extends phpbb_test_case
|
||||||
$this->assertEquals($user->lang('ARRY', 2), '2 posts');
|
$this->assertEquals($user->lang('ARRY', 2), '2 posts');
|
||||||
$this->assertEquals($user->lang('ARRY', 123), '123 posts');
|
$this->assertEquals($user->lang('ARRY', 123), '123 posts');
|
||||||
|
|
||||||
|
// Array with missing keys
|
||||||
|
$this->assertEquals($user->lang('ARRY_NO_ZERO', 0), '0 posts');
|
||||||
|
$this->assertEquals($user->lang('ARRY_NO_ZERO', 1), '1 post');
|
||||||
|
$this->assertEquals($user->lang('ARRY_NO_ZERO', 2), '2 posts');
|
||||||
|
|
||||||
|
// Floats as array key
|
||||||
|
$this->assertEquals($user->lang('ARRY_FLOAT', 1.3), '1 post');
|
||||||
|
$this->assertEquals($user->lang('ARRY_FLOAT', 2.0), '2.0 posts');
|
||||||
|
$this->assertEquals($user->lang('ARRY_FLOAT', 2.51), '2.5 posts');
|
||||||
|
|
||||||
// ticket PHPBB3-9949
|
// ticket PHPBB3-9949
|
||||||
$this->assertEquals($user->lang('ARRY', 1, 2), '1 post');
|
$this->assertEquals($user->lang('ARRY', 1, 2), '1 post');
|
||||||
$this->assertEquals($user->lang('ARRY', 1, 's', 2), '1 post');
|
$this->assertEquals($user->lang('ARRY', 1, 's', 2), '1 post');
|
||||||
|
|
Loading…
Add table
Reference in a new issue