Standard::transform()   A
last analyzed

Complexity

Conditions 6
Paths 8

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 10
rs 9.2222
cc 6
nc 8
nop 5
1
<?php
2
3
/**
4
 * @license LGPLv3, https://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2015-2025
6
 * @package Base
7
 * @subpackage View
8
 */
9
10
11
namespace Aimeos\Base\View\Helper\Translate;
12
13
14
/**
15
 * View helper class for translating strings.
16
 *
17
 * @package Base
18
 * @subpackage View
19
 */
20
class Standard
21
	extends \Aimeos\Base\View\Helper\Base
22
	implements \Aimeos\Base\View\Helper\Translate\Iface
23
{
24
	private \Aimeos\Base\Translation\Iface $translator;
25
26
27
	/**
28
	 * Initializes the translator view helper.
29
	 *
30
	 * @param \Aimeos\Base\View\Iface $view View instance with registered view helpers
31
	 * @param \Aimeos\Base\Translation\Iface $translator Translation object
32
	 */
33
	public function __construct( \Aimeos\Base\View\Iface $view, \Aimeos\Base\Translation\Iface $translator )
34
	{
35
		parent::__construct( $view );
36
37
		$this->translator = $translator;
38
	}
39
40
41
	/**
42
	 * Returns the translated string or the original one if no translation is available.
43
	 *
44
	 * @param string $domain Translation domain from core or an extension
45
	 * @param string|null $singular Singular form of the text to translate
46
	 * @param string|null $plural Plural form of the text, used if $number is greater than one
47
	 * @param int $number Amount of things relevant for the plural form
48
	 * @param bool $force Return string untranslated if no translation is available
49
	 * @return string|null Translated string or NULL if no translation is available and force parameter is FALSE
50
	 */
51
	public function transform( string $domain, ?string $singular, ?string $plural = null, int $number = 1, bool $force = true ) : ?string
52
	{
53
		if( $plural )
54
		{
55
			$trans = $this->translator->dn( $domain, (string) $singular, $plural, $number );
56
			return $trans !== $plural || $force ? $trans : null;
57
		}
58
59
		$trans = $this->translator->dt( $domain, (string) $singular );
60
		return $trans !== $singular || $force ? $trans : null;
61
	}
62
}
63