* @package Mammut\Locale */ class TranslateIntl extends TranslateBase implements iTranslate { /** * Message resource * @var \ResourceBundle */ private $rb; private $locale; public function __construct($basepath, $locale) { if (!extension_loaded('intl')) throw new \Mammut\Exception\ExtensionException('intl'); $this->rb = new \ResourceBundle($locale, $basepath, true); $this->locale = $locale; } public function tr($key, array $param = [], $nullOnFail = false) { if (empty($this->rb)) return $key; $msg = $this->rb->get($key); $msg = \MessageFormatter::formatMessage($this->locale, $msg, $param); return $msg; } public function trg($key, $gender, array $param = [], $nullOnFail = false) { switch($gender) { case self::MALE: $key .= "_m"; break; case self::FEMALE: $key .= "_f"; break; } if (empty($this->rb)) return $key; return $this->tr($key, $param, $nullOnFail); } public function trn($key, $count, array $param = [], $nullOnFail = false) { // no counting support atm return $this->tr($key, $param, $nullOnFail); } }