Skip to content

Commit

Permalink
Implement plural translation (testing)
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Fuhr committed Sep 15, 2014
1 parent f48094f commit e2b5e05
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 12 deletions.
26 changes: 24 additions & 2 deletions library/Icinga/Application/functions.php
Expand Up @@ -14,9 +14,15 @@ function mt($domain, $messageId)
{
return Translator::translate($messageId, $domain);
}
function mtp($domain, $messageId, $messageId2, $n)

function tp($messageId, $messageId2, $number)
{
return Translator::translatePlural($messageId, $messageId2, $number, Translator::DEFAULT_DOMAIN);
}

function mtp($domain, $messageId, $messageId2, $number)
{
return Translator::translatePlural($messageId, $messageId2, $n, $domain);
return Translator::translatePlural($messageId, $messageId2, $number, $domain);
}
} else {
function t($messageId)
Expand All @@ -28,4 +34,20 @@ function mt($domain, $messageId)
{
return $messageId;
}

function tp($messageId, $messageId2, $number)
{
if ($number === 0 || $number > 1 || $number < 0) {
return $messageId2;
}
return $messageId;
}

function mt($domain, $messageId, $messageId2, $number)
{
if ($number === 0 || $number > 1 || $number < 0) {
return $messageId2;
}
return $messageId;
}
}
14 changes: 12 additions & 2 deletions library/Icinga/Util/Translator.php
Expand Up @@ -48,9 +48,19 @@ public static function translate($text, $domain)
return $res;
}

public static function translatePlural($msgid1, $msgid2, $n, $domain)
/**
* Translate a plural string
*
* @param string $textSingular The string in singular form to translate
* @param string $textPlural The string in plural form to translate
* @param integer $number The number to get the plural or singular string
* @param string $domain The primary domain to use
*
* @return string The translated string
*/
public static function translatePlural($textSingular, $textPlural, $number, $domain)
{
$res = dngettext($domain, $msgid1, $msgid2, $n);
$res = dngettext($domain, $textSingular, $textPlural, $number);
return $res;
}

Expand Down
12 changes: 6 additions & 6 deletions library/Icinga/Web/Controller/ActionController.php
Expand Up @@ -228,15 +228,15 @@ public function translate($text)
/**
* Translate a plural string
*
* @param $msgid1
* @param $msgid2
* @param $n
* @param string $textSingular The string in singular form to translate
* @param string $textPlural The string in plural form to translate
* @param string $number The number to get the plural or singular string
*
* @return string
* @return string The translated string
*/
public function translatePlural($msgid1, $msgid2, $n)
public function translatePlural($textSingular, $textPlural, $number)
{
return Translator::translatePlural($msgid1, $msgid2, $n, $this->view->translationDomain);
return Translator::translatePlural($textSingular, $textPlural, $number, $this->view->translationDomain);
}

protected function ignoreXhrBody()
Expand Down
9 changes: 7 additions & 2 deletions library/Icinga/Web/View.php
Expand Up @@ -132,9 +132,14 @@ public function translate($text)
return Translator::translate($text, $this->translationDomain);
}

public function translatePlural($text, $text2, $n)
/**
* Translate a plural string
*
* @see Translator::translatePlural()
*/
public function translatePlural($textSingular, $textPlural, $number)
{
return Translator::translatePlural($text, $text2, $n, $this->translationDomain);
return Translator::translatePlural($textSingular, $textPlural, $number, $this->translationDomain);
}

/**
Expand Down
Expand Up @@ -333,6 +333,7 @@ private function updateHeader($path)
'"MIME-Version: 1.0\n"',
'"Content-Type: text/plain; charset=' . $headerInfo['charset'] . '\n"',
'"Content-Transfer-Encoding: 8bit\n"',
'"Plural-Forms: nplurals=2; plural=(n != 1);\n"',
''
)
) . PHP_EOL . substr($content, strpos($content, '#: '))
Expand Down

0 comments on commit e2b5e05

Please sign in to comment.