diff --git a/src/Translator.php b/src/Translator.php index 9e0879a..9285c6f 100644 --- a/src/Translator.php +++ b/src/Translator.php @@ -76,6 +76,11 @@ class Translator */ public const ERROR_READING = 3; + /** + * Error on translating because key not found. + */ + public const ERROR_KEY_DOES_NOT_EXIST = 4; + /** * Big endian mo file magic bytes. */ @@ -127,6 +132,12 @@ public function __construct(CacheInterface|string|null $cache) */ public function gettext(string $msgid): string { + // reset error + $this->error = self::ERROR_NONE; + + if (! $this->exists($msgid)) { + $this->error = self::ERROR_KEY_DOES_NOT_EXIST; + } return $this->cache->get($msgid); } @@ -274,9 +285,13 @@ private function selectString(int $n): int */ public function ngettext(string $msgid, string $msgidPlural, int $number): string { + // reset error + $this->error = self::ERROR_NONE; + // this should contains all strings separated by NULLs $key = $msgid . "\u{0}" . $msgidPlural; - if (! $this->cache->has($key)) { + if (! $this->exists($key)) { + $this->error = self::ERROR_KEY_DOES_NOT_EXIST; return $number !== 1 ? $msgidPlural : $msgid; }